[med-svn] [bandage] 01/01: New upstream version 0.8.1

Cédric Lood milt0n-guest at moszumanska.debian.org
Thu Aug 10 20:06:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

milt0n-guest pushed a commit to branch master
in repository bandage.

commit 47aee7b0853af33f198f13d0b3b3f71611ac69f0
Author: sid <sid at sid-debian-vm>
Date:   Wed Aug 9 18:20:08 2017 +0200

    New upstream version 0.8.1
---
 Bandage.pro                                       |   276 +
 BandageTests.pro                                  |   276 +
 COPYING                                           |   674 +
 README.md                                         |   147 +
 blast/blasthit.cpp                                |   138 +
 blast/blasthit.h                                  |    73 +
 blast/blasthitpart.h                              |    36 +
 blast/blastqueries.cpp                            |   249 +
 blast/blastqueries.h                              |    74 +
 blast/blastquery.cpp                              |   287 +
 blast/blastquery.h                                |    83 +
 blast/blastquerypath.cpp                          |   320 +
 blast/blastquerypath.h                            |    61 +
 blast/blastsearch.cpp                             |   374 +
 blast/blastsearch.h                               |    63 +
 blast/buildblastdatabaseworker.cpp                |   102 +
 blast/buildblastdatabaseworker.h                  |    48 +
 blast/runblastsearchworker.cpp                    |   113 +
 blast/runblastsearchworker.h                      |    53 +
 build_scripts/bandage_build_linux.sh              |    98 +
 build_scripts/bandage_build_mac.sh                |    36 +
 build_scripts/bandage_build_windows.bat           |    43 +
 build_scripts/bandage_build_windows_32bit.bat     |    43 +
 build_scripts/installation.txt                    |     1 +
 build_scripts/qt_static_build_centos.sh           |   131 +
 build_scripts/qt_static_build_ubuntu.sh           |   129 +
 build_scripts/sample_LastGraph                    |   266 +
 command_line/commoncommandlinefunctions.cpp       |  1307 ++
 command_line/commoncommandlinefunctions.h         |   108 +
 command_line/image.cpp                            |   253 +
 command_line/image.h                              |    32 +
 command_line/info.cpp                             |   210 +
 command_line/info.h                               |    31 +
 command_line/load.cpp                             |   113 +
 command_line/load.h                               |    31 +
 command_line/querypaths.cpp                       |   319 +
 command_line/querypaths.h                         |    34 +
 command_line/reduce.cpp                           |   168 +
 command_line/reduce.h                             |    33 +
 graph/assemblygraph.cpp                           |  3771 ++++
 graph/assemblygraph.h                             |   215 +
 graph/debruijnedge.cpp                            |   445 +
 graph/debruijnedge.h                              |    86 +
 graph/debruijnnode.cpp                            |   840 +
 graph/debruijnnode.h                              |   163 +
 graph/graphicsitemedge.cpp                        |   196 +
 graph/graphicsitemedge.h                          |    56 +
 graph/graphicsitemnode.cpp                        |  1148 ++
 graph/graphicsitemnode.h                          |   105 +
 graph/graphlocation.cpp                           |   205 +
 graph/graphlocation.h                             |    57 +
 graph/ogdfnode.h                                  |    42 +
 graph/path.cpp                                    |   929 +
 graph/path.h                                      |    97 +
 graph/querydistance.h                             |    39 +
 images/BLAST.png                                  |   Bin 0 -> 2087 bytes
 images/application.icns                           |   Bin 0 -> 486353 bytes
 images/application.ico                            |   Bin 0 -> 370070 bytes
 images/bring-to-front.png                         |   Bin 0 -> 1145 bytes
 images/contiguity-contiguous.png                  |   Bin 0 -> 6321 bytes
 images/contiguity-maybe_contiguous.png            |   Bin 0 -> 5497 bytes
 images/contiguity-not_contiguous.png              |   Bin 0 -> 3976 bytes
 images/contiguity.png                             |   Bin 0 -> 5943 bytes
 images/copy.png                                   |   Bin 0 -> 2617 bytes
 images/cross-128.png                              |   Bin 0 -> 2124 bytes
 images/exit-256.png                               |   Bin 0 -> 30189 bytes
 images/icon.png                                   |   Bin 0 -> 176976 bytes
 images/images.qrc                                 |    26 +
 images/information-256-inactive.png               |   Bin 0 -> 15856 bytes
 images/information-256.png                        |   Bin 0 -> 35146 bytes
 images/invert-selection.png                       |   Bin 0 -> 2822 bytes
 images/load-256.png                               |   Bin 0 -> 13566 bytes
 images/myapp.rc                                   |     1 +
 images/ncbi-256.png                               |   Bin 0 -> 18310 bytes
 images/save-256.png                               |   Bin 0 -> 19531 bytes
 images/select-all.png                             |   Bin 0 -> 1601 bytes
 images/select-none.png                            |   Bin 0 -> 1050 bytes
 images/settings-256.png                           |   Bin 0 -> 32957 bytes
 images/specify-path.png                           |   Bin 0 -> 2927 bytes
 images/tick-128.png                               |   Bin 0 -> 1638 bytes
 images/zoom.png                                   |   Bin 0 -> 5483 bytes
 ogdf/LICENSE.txt                                  |    50 +
 ogdf/basic/AdjEntryArray.h                        |   225 +
 ogdf/basic/Array.h                                |   589 +
 ogdf/basic/Array2D.h                              |   327 +
 ogdf/basic/BoundedStack.h                         |   211 +
 ogdf/basic/CombinatorialEmbedding.cpp             |   630 +
 ogdf/basic/CombinatorialEmbedding.h               |   486 +
 ogdf/basic/Constraint.cpp                         |    83 +
 ogdf/basic/Constraints.h                          |   212 +
 ogdf/basic/CriticalSection.h                      |   164 +
 ogdf/basic/EdgeArray.h                            |   259 +
 ogdf/basic/FaceArray.h                            |   224 +
 ogdf/basic/FaceSet.h                              |   274 +
 ogdf/basic/Graph.cpp                              |  1481 ++
 ogdf/basic/Graph.h                                |    75 +
 ogdf/basic/GraphAttributes.cpp                    |  1256 ++
 ogdf/basic/GraphAttributes.h                      |   863 +
 ogdf/basic/GraphCopy.cpp                          |   678 +
 ogdf/basic/GraphCopy.h                            |   645 +
 ogdf/basic/GraphObserver.h                        |   147 +
 ogdf/basic/Graph_d.h                              |  1560 ++
 ogdf/basic/HashArray.h                            |   179 +
 ogdf/basic/Hashing.cpp                            |   207 +
 ogdf/basic/Hashing.h                              |   520 +
 ogdf/basic/List.h                                 |  1634 ++
 ogdf/basic/Math.cpp                               |   112 +
 ogdf/basic/Math.h                                 |   150 +
 ogdf/basic/NodeArray.h                            |   227 +
 ogdf/basic/SList.h                                |  1047 +
 ogdf/basic/Stack.h                                |   252 +
 ogdf/basic/String.cpp                             |   219 +
 ogdf/basic/String.h                               |   232 +
 ogdf/basic/System.cpp                             |   444 +
 ogdf/basic/System.h                               |   328 +
 ogdf/basic/basic.cpp                              |   357 +
 ogdf/basic/basic.h                                |   639 +
 ogdf/basic/comparer.h                             |   287 +
 ogdf/basic/exceptions.h                           |   307 +
 ogdf/basic/geometry.cpp                           |   804 +
 ogdf/basic/geometry.h                             |   794 +
 ogdf/basic/memory.h                               |   126 +
 ogdf/basic/simple_graph_alg.cpp                   |  1056 ++
 ogdf/basic/simple_graph_alg.h                     |   803 +
 ogdf/basic/tuples.h                               |   274 +
 ogdf/cluster/ClusterArray.h                       |   245 +
 ogdf/cluster/ClusterGraph.cpp                     |  1775 ++
 ogdf/cluster/ClusterGraph.h                       |   825 +
 ogdf/cluster/ClusterGraphAttributes.cpp           |   740 +
 ogdf/cluster/ClusterGraphAttributes.h             |   439 +
 ogdf/cluster/ClusterGraphObserver.h               |   113 +
 ogdf/energybased/Edge.h                           |   159 +
 ogdf/energybased/FMMMLayout.cpp                   |  1749 ++
 ogdf/energybased/FMMMLayout.h                     |  1382 ++
 ogdf/energybased/MAARPacking.cpp                  |   473 +
 ogdf/energybased/MAARPacking.h                    |   162 +
 ogdf/energybased/Multilevel.cpp                   |   885 +
 ogdf/energybased/Multilevel.h                     |   247 +
 ogdf/energybased/Node.h                           |    99 +
 ogdf/energybased/PQueue.h                         |   176 +
 ogdf/energybased/PackingRowInfo.h                 |   105 +
 ogdf/energybased/Rectangle.h                      |   240 +
 ogdf/energybased/Set.cpp                          |   241 +
 ogdf/energybased/Set.h                            |   131 +
 ogdf/energybased/numexcept.cpp                    |   214 +
 ogdf/energybased/numexcept.h                      |   104 +
 ogdf/fileformats/DinoLineBuffer.cpp               |   424 +
 ogdf/fileformats/DinoLineBuffer.h                 |   247 +
 ogdf/fileformats/DinoTools.cpp                    |   114 +
 ogdf/fileformats/DinoTools.h                      |    87 +
 ogdf/fileformats/DinoXmlParser.cpp                |   913 +
 ogdf/fileformats/DinoXmlParser.h                  |   464 +
 ogdf/fileformats/DinoXmlScanner.cpp               |   448 +
 ogdf/fileformats/DinoXmlScanner.h                 |   166 +
 ogdf/fileformats/GmlParser.cpp                    |  1315 ++
 ogdf/fileformats/GmlParser.h                      |   233 +
 ogdf/fileformats/Ogml.cpp                         |   303 +
 ogdf/fileformats/Ogml.h                           |   368 +
 ogdf/fileformats/OgmlParser.cpp                   |  3939 ++++
 ogdf/fileformats/OgmlParser.h                     |   290 +
 ogdf/fileformats/XmlObject.h                      |   132 +
 ogdf/fileformats/XmlParser.cpp                    |  1204 ++
 ogdf/fileformats/XmlParser.h                      |   175 +
 ogdf/internal/basic/MallocMemoryAllocator.h       |   118 +
 ogdf/internal/basic/PoolMemoryAllocator.cpp       |   448 +
 ogdf/internal/basic/PoolMemoryAllocator.h         |   191 +
 ogdf/internal/basic/list_templates.h              |   101 +
 ogdf/internal/energybased/EdgeAttributes.cpp      |    87 +
 ogdf/internal/energybased/EdgeAttributes.h        |   121 +
 ogdf/internal/energybased/FruchtermanReingold.cpp |   269 +
 ogdf/internal/energybased/FruchtermanReingold.h   |   108 +
 ogdf/internal/energybased/MultilevelGraph.cpp     |   834 +
 ogdf/internal/energybased/MultilevelGraph.h       |   180 +
 ogdf/internal/energybased/NMM.cpp                 |  2867 +++
 ogdf/internal/energybased/NMM.h                   |   516 +
 ogdf/internal/energybased/NodeAttributes.cpp      |   143 +
 ogdf/internal/energybased/NodeAttributes.h        |   184 +
 ogdf/internal/energybased/ParticleInfo.h          |   155 +
 ogdf/internal/energybased/QuadTreeNM.cpp          |   288 +
 ogdf/internal/energybased/QuadTreeNM.h            |   162 +
 ogdf/internal/energybased/QuadTreeNodeNM.cpp      |   193 +
 ogdf/internal/energybased/QuadTreeNodeNM.h        |   191 +
 ogdf/module/LayoutModule.h                        |   104 +
 program/globals.cpp                               |   453 +
 program/globals.h                                 |    82 +
 program/graphlayoutworker.cpp                     |    83 +
 program/graphlayoutworker.h                       |    51 +
 program/main.cpp                                  |   198 +
 program/memory.cpp                                |    60 +
 program/memory.h                                  |    61 +
 program/scinot.cpp                                |   185 +
 program/scinot.h                                  |    65 +
 program/settings.cpp                              |   144 +
 program/settings.h                                |   207 +
 tests/bandage_command_line_tests.sh               |   212 +
 tests/bandagetests.cpp                            |  1589 ++
 tests/big_test.LastGraph                          | 19930 ++++++++++++++++++++
 tests/test.LastGraph                              |    68 +
 tests/test.Trinity.csv                            |     8 +
 tests/test.Trinity.fasta                          |  2650 +++
 tests/test.csv                                    |    12 +
 tests/test.fastg                                  |  7282 +++++++
 tests/test_plasmids.gfa                           |    21 +
 tests/test_plasmids_separate_sequences.fasta      |    18 +
 tests/test_plasmids_separate_sequences.gfa        |    21 +
 tests/test_queries1.fasta                         |     8 +
 tests/test_queries2.fasta                         |   267 +
 tests/test_query_paths.fasta                      |    14 +
 tests/test_query_paths.gfa                        |    15 +
 ui/aboutdialog.cpp                                |    48 +
 ui/aboutdialog.h                                  |    42 +
 ui/aboutdialog.ui                                 |   215 +
 ui/blasthitfiltersdialog.cpp                      |   151 +
 ui/blasthitfiltersdialog.h                        |    32 +
 ui/blasthitfiltersdialog.ui                       |   357 +
 ui/blastsearchdialog.cpp                          |  1052 ++
 ui/blastsearchdialog.h                            |    92 +
 ui/blastsearchdialog.ui                           |   807 +
 ui/changenodedepthdialog.cpp                      |    61 +
 ui/changenodedepthdialog.h                        |    28 +
 ui/changenodedepthdialog.ui                       |   151 +
 ui/changenodenamedialog.cpp                       |   101 +
 ui/changenodenamedialog.h                         |    28 +
 ui/changenodenamedialog.ui                        |   134 +
 ui/colourbutton.cpp                               |    47 +
 ui/colourbutton.h                                 |    45 +
 ui/enteroneblastquerydialog.cpp                   |    57 +
 ui/enteroneblastquerydialog.h                     |    47 +
 ui/enteroneblastquerydialog.ui                    |    98 +
 ui/graphicsviewzoom.cpp                           |   117 +
 ui/graphicsviewzoom.h                             |    82 +
 ui/graphinfodialog.cpp                            |   182 +
 ui/graphinfodialog.h                              |    25 +
 ui/graphinfodialog.ui                             |  1002 +
 ui/infotextwidget.cpp                             |    76 +
 ui/infotextwidget.h                               |    42 +
 ui/mainwindow.cpp                                 |  2502 +++
 ui/mainwindow.h                                   |   171 +
 ui/mainwindow.ui                                  |  2282 +++
 ui/mygraphicsscene.cpp                            |   253 +
 ui/mygraphicsscene.h                              |    47 +
 ui/mygraphicsview.cpp                             |   325 +
 ui/mygraphicsview.h                               |    76 +
 ui/myprogressdialog.cpp                           |    73 +
 ui/myprogressdialog.h                             |    58 +
 ui/myprogressdialog.ui                            |   119 +
 ui/mytablewidget.cpp                              |   128 +
 ui/mytablewidget.h                                |    41 +
 ui/nodewidthvisualaid.cpp                         |    82 +
 ui/nodewidthvisualaid.h                           |    44 +
 ui/pathspecifydialog.cpp                          |   178 +
 ui/pathspecifydialog.h                            |    51 +
 ui/pathspecifydialog.ui                           |   212 +
 ui/querypathsdialog.cpp                           |   232 +
 ui/querypathsdialog.h                             |    49 +
 ui/querypathsdialog.ui                            |   162 +
 ui/querypathsequencecopybutton.cpp                |    18 +
 ui/querypathsequencecopybutton.h                  |    39 +
 ui/querypathspushbutton.cpp                       |    40 +
 ui/querypathspushbutton.h                         |    46 +
 ui/settingsdialog.cpp                             |   486 +
 ui/settingsdialog.h                               |    62 +
 ui/settingsdialog.ui                              |  4169 ++++
 ui/tablewidgetitemdouble.cpp                      |    35 +
 ui/tablewidgetitemdouble.h                        |    34 +
 ui/tablewidgetitemint.cpp                         |    35 +
 ui/tablewidgetitemint.h                           |    34 +
 ui/tablewidgetitemname.cpp                        |    25 +
 ui/tablewidgetitemname.h                          |    36 +
 ui/tablewidgetitemshown.cpp                       |    35 +
 ui/tablewidgetitemshown.h                         |    34 +
 ui/verticallabel.cpp                              |    39 +
 ui/verticallabel.h                                |    22 +
 ui/verticalscrollarea.cpp                         |    26 +
 ui/verticalscrollarea.h                           |    21 +
 275 files changed, 116421 insertions(+)

diff --git a/Bandage.pro b/Bandage.pro
new file mode 100644
index 0000000..fbdecf2
--- /dev/null
+++ b/Bandage.pro
@@ -0,0 +1,276 @@
+# Copyright 2016 Ryan Wick
+
+# This file is part of Bandage
+
+# Bandage 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 3 of the License, or
+# (at your option) any later version.
+
+# Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+QT       += core gui svg
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = Bandage
+TEMPLATE = app
+
+CONFIG += c++11
+
+target.path += /usr/local/bin
+INSTALLS += target
+
+INCLUDEPATH += ui
+
+SOURCES += \
+    program/main.cpp\
+    program/settings.cpp \
+    program/globals.cpp \
+    program/graphlayoutworker.cpp \
+    graph/debruijnnode.cpp \
+    graph/debruijnedge.cpp \
+    graph/graphicsitemnode.cpp \
+    graph/graphicsitemedge.cpp \
+    ui/mainwindow.cpp \
+    ui/graphicsviewzoom.cpp \
+    ui/settingsdialog.cpp \
+    ui/mygraphicsview.cpp \
+    ui/mygraphicsscene.cpp \
+    ui/aboutdialog.cpp \
+    ui/enteroneblastquerydialog.cpp \
+    blast/blasthit.cpp \
+    blast/blastqueries.cpp \
+    ui/blastsearchdialog.cpp \
+    ui/infotextwidget.cpp \
+    graph/assemblygraph.cpp \
+    ui/verticalscrollarea.cpp \
+    ui/myprogressdialog.cpp \
+    ui/nodewidthvisualaid.cpp \
+    ui/verticallabel.cpp \
+    command_line/load.cpp \
+    command_line/image.cpp \
+    command_line/commoncommandlinefunctions.cpp \
+    ui/mytablewidget.cpp \
+    blast/buildblastdatabaseworker.cpp \
+    ui/colourbutton.cpp \
+    blast/blastquery.cpp \
+    blast/runblastsearchworker.cpp \
+    blast/blastsearch.cpp \
+    graph/path.cpp \
+    ui/pathspecifydialog.cpp \
+    graph/graphlocation.cpp \
+    ui/tablewidgetitemint.cpp \
+    ui/tablewidgetitemdouble.cpp \
+    ui/tablewidgetitemshown.cpp \
+    program/memory.cpp \
+    ui/querypathspushbutton.cpp \
+    ui/querypathsdialog.cpp \
+    blast/blastquerypath.cpp \
+    ui/blasthitfiltersdialog.cpp \
+    program/scinot.cpp \
+    ui/changenodenamedialog.cpp \
+    ui/querypathsequencecopybutton.cpp \
+    command_line/querypaths.cpp \
+    command_line/info.cpp \
+    command_line/reduce.cpp \
+    ogdf/basic/Graph.cpp \
+    ogdf/basic/GraphAttributes.cpp \
+    ogdf/energybased/FMMMLayout.cpp \
+    ogdf/basic/geometry.cpp \
+    ogdf/cluster/ClusterGraphAttributes.cpp \
+    ogdf/internal/energybased/FruchtermanReingold.cpp \
+    ogdf/internal/energybased/NMM.cpp \
+    ogdf/fileformats/GmlParser.cpp \
+    ogdf/basic/simple_graph_alg.cpp \
+    ogdf/basic/basic.cpp \
+    ogdf/fileformats/XmlParser.cpp \
+    ogdf/basic/String.cpp \
+    ogdf/basic/Hashing.cpp \
+    ogdf/internal/basic/PoolMemoryAllocator.cpp \
+    ogdf/basic/GraphCopy.cpp \
+    ogdf/basic/CombinatorialEmbedding.cpp \
+    ogdf/fileformats/OgmlParser.cpp \
+    ogdf/cluster/ClusterGraph.cpp \
+    ogdf/basic/Math.cpp \
+    ogdf/internal/energybased/EdgeAttributes.cpp \
+    ogdf/internal/energybased/NodeAttributes.cpp \
+    ogdf/energybased/MAARPacking.cpp \
+    ogdf/energybased/Multilevel.cpp \
+    ogdf/energybased/numexcept.cpp \
+    ogdf/energybased/Set.cpp \
+    ogdf/fileformats/Ogml.cpp \
+    ogdf/fileformats/DinoXmlParser.cpp \
+    ogdf/fileformats/DinoXmlScanner.cpp \
+    ogdf/fileformats/DinoTools.cpp \
+    ogdf/fileformats/DinoLineBuffer.cpp \
+    ogdf/basic/System.cpp \
+    ogdf/internal/energybased/QuadTreeNM.cpp \
+    ogdf/internal/energybased/QuadTreeNodeNM.cpp \
+    ogdf/basic/Constraint.cpp \
+    ogdf/internal/energybased/MultilevelGraph.cpp \
+    ui/graphinfodialog.cpp \
+    ui/tablewidgetitemname.cpp \
+    ui/changenodedepthdialog.cpp
+
+HEADERS  += \
+    program/settings.h \
+    program/globals.h \
+    program/graphlayoutworker.h \
+    graph/debruijnnode.h \
+    graph/debruijnedge.h \
+    graph/graphicsitemnode.h \
+    graph/graphicsitemedge.h \
+    graph/ogdfnode.h \
+    ui/mainwindow.h \
+    ui/graphicsviewzoom.h \
+    ui/settingsdialog.h \
+    ui/mygraphicsview.h \
+    ui/mygraphicsscene.h \
+    ui/aboutdialog.h \
+    ui/enteroneblastquerydialog.h \
+    blast/blasthitpart.h \
+    blast/blasthit.h \
+    blast/blastquery.h \
+    blast/blastqueries.h \
+    blast/blastsearch.h \
+    ui/blastsearchdialog.h \
+    ui/infotextwidget.h \
+    graph/assemblygraph.h \
+    ui/verticalscrollarea.h \
+    ui/myprogressdialog.h \
+    ui/nodewidthvisualaid.h \
+    ui/verticallabel.h \
+    command_line/load.h \
+    command_line/image.h \
+    command_line/commoncommandlinefunctions.h \
+    ui/mytablewidget.h \
+    blast/buildblastdatabaseworker.h \
+    ui/colourbutton.h \
+    blast/runblastsearchworker.h \
+    graph/path.h \
+    ui/pathspecifydialog.h \
+    graph/graphlocation.h \
+    ui/tablewidgetitemint.h \
+    ui/tablewidgetitemdouble.h \
+    ui/tablewidgetitemshown.h \
+    program/memory.h \
+    graph/querydistance.h \
+    ui/querypathspushbutton.h \
+    ui/querypathsdialog.h \
+    blast/blastquerypath.h \
+    ui/blasthitfiltersdialog.h \
+    program/scinot.h \
+    ui/changenodenamedialog.h \
+    ui/querypathsequencecopybutton.h \
+    command_line/querypaths.h \
+    command_line/info.h \
+    command_line/reduce.h \
+    ogdf/basic/Graph.h \
+    ogdf/basic/GraphAttributes.h \
+    ogdf/energybased/FMMMLayout.h \
+    ogdf/basic/geometry.h \
+    ogdf/cluster/ClusterGraphAttributes.h \
+    ogdf/module/LayoutModule.h \
+    ogdf/internal/energybased/FruchtermanReingold.h \
+    ogdf/internal/energybased/NMM.h \
+    ogdf/basic/AdjEntryArray.h \
+    ogdf/basic/Array.h \
+    ogdf/fileformats/GmlParser.h \
+    ogdf/basic/GraphObserver.h \
+    ogdf/basic/simple_graph_alg.h \
+    ogdf/basic/basic.h \
+    ogdf/basic/EdgeArray.h \
+    ogdf/basic/List.h \
+    ogdf/basic/NodeArray.h \
+    ogdf/basic/Graph_d.h \
+    ogdf/fileformats/XmlParser.h \
+    ogdf/basic/String.h \
+    ogdf/internal/basic/list_templates.h \
+    ogdf/basic/Hashing.h \
+    ogdf/basic/comparer.h \
+    ogdf/basic/exceptions.h \
+    ogdf/basic/memory.h \
+    ogdf/internal/basic/MallocMemoryAllocator.h \
+    ogdf/internal/basic/PoolMemoryAllocator.h \
+    ogdf/basic/BoundedStack.h \
+    ogdf/basic/GraphCopy.h \
+    ogdf/basic/SList.h \
+    ogdf/basic/Stack.h \
+    ogdf/basic/tuples.h \
+    ogdf/basic/FaceSet.h \
+    ogdf/basic/FaceArray.h \
+    ogdf/basic/CombinatorialEmbedding.h \
+    ogdf/cluster/ClusterArray.h \
+    ogdf/fileformats/OgmlParser.h \
+    ogdf/cluster/ClusterGraph.h \
+    ogdf/cluster/ClusterGraphObserver.h \
+    ogdf/basic/HashArray.h \
+    ogdf/basic/Math.h \
+    ogdf/internal/energybased/EdgeAttributes.h \
+    ogdf/internal/energybased/NodeAttributes.h \
+    ogdf/energybased/Edge.h \
+    ogdf/energybased/MAARPacking.h \
+    ogdf/energybased/Multilevel.h \
+    ogdf/energybased/numexcept.h \
+    ogdf/energybased/Rectangle.h \
+    ogdf/energybased/PackingRowInfo.h \
+    ogdf/energybased/PQueue.h \
+    ogdf/energybased/Set.h \
+    ogdf/energybased/Node.h \
+    ogdf/fileformats/Ogml.h \
+    ogdf/fileformats/DinoXmlParser.h \
+    ogdf/fileformats/DinoXmlScanner.h \
+    ogdf/fileformats/DinoTools.h \
+    ogdf/fileformats/DinoLineBuffer.h \
+    ogdf/fileformats/XmlObject.h \
+    ogdf/basic/CriticalSection.h \
+    ogdf/basic/System.h \
+    ogdf/basic/Array2D.h \
+    ogdf/internal/energybased/ParticleInfo.h \
+    ogdf/internal/energybased/QuadTreeNM.h \
+    ogdf/internal/energybased/QuadTreeNodeNM.h \
+    ogdf/basic/Constraints.h \
+    ogdf/internal/energybased/MultilevelGraph.h \
+    ui/graphinfodialog.h \
+    ui/tablewidgetitemname.h \
+    ui/changenodedepthdialog.h
+
+FORMS    += \
+    ui/mainwindow.ui \
+    ui/settingsdialog.ui \
+    ui/aboutdialog.ui \
+    ui/enteroneblastquerydialog.ui \
+    ui/blastsearchdialog.ui \
+    ui/myprogressdialog.ui \
+    ui/pathspecifydialog.ui \
+    ui/querypathsdialog.ui \
+    ui/blasthitfiltersdialog.ui \
+    ui/changenodenamedialog.ui \
+    ui/graphinfodialog.ui \
+    ui/changenodedepthdialog.ui
+
+RESOURCES += \
+    images/images.qrc
+
+
+unix:INCLUDEPATH += /usr/include/
+unix:LIBS += -L/usr/lib
+
+# The following settings are compatible with OGDF being built in 64 bit release mode using Visual Studio 2013
+win32:LIBS += -lpsapi
+win32:RC_FILE = images/myapp.rc
+
+macx:ICON = images/application.icns
+macx:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
+
+# Each target platform needs the native platform as well as Qt's minimal platform.
+win32: QTPLUGIN.platforms += qwindows qminimal
+unix:!macx: QTPLUGIN.platforms += qxcb qminimal
+macx: QTPLUGIN.platforms += qcocoa qminimal
diff --git a/BandageTests.pro b/BandageTests.pro
new file mode 100644
index 0000000..dcfb5d9
--- /dev/null
+++ b/BandageTests.pro
@@ -0,0 +1,276 @@
+# Copyright 2015 Ryan Wick
+
+# This file is part of Bandage
+
+# Bandage 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 3 of the License, or
+# (at your option) any later version.
+
+# Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+QT       += core gui svg testlib
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = BandageTests
+TEMPLATE = app
+
+CONFIG += c++11
+
+target.path += /usr/local/bin
+INSTALLS += target
+
+INCLUDEPATH += ui
+
+SOURCES += \
+    program/settings.cpp \
+    program/globals.cpp \
+    program/graphlayoutworker.cpp \
+    graph/debruijnnode.cpp \
+    graph/debruijnedge.cpp \
+    graph/graphicsitemnode.cpp \
+    graph/graphicsitemedge.cpp \
+    ui/mainwindow.cpp \
+    ui/graphicsviewzoom.cpp \
+    ui/settingsdialog.cpp \
+    ui/mygraphicsview.cpp \
+    ui/mygraphicsscene.cpp \
+    ui/aboutdialog.cpp \
+    ui/enteroneblastquerydialog.cpp \
+    blast/blasthit.cpp \
+    blast/blastqueries.cpp \
+    ui/blastsearchdialog.cpp \
+    ui/infotextwidget.cpp \
+    graph/assemblygraph.cpp \
+    ui/verticalscrollarea.cpp \
+    ui/myprogressdialog.cpp \
+    ui/nodewidthvisualaid.cpp \
+    ui/verticallabel.cpp \
+    command_line/load.cpp \
+    command_line/image.cpp \
+    command_line/commoncommandlinefunctions.cpp \
+    ui/mytablewidget.cpp \
+    blast/buildblastdatabaseworker.cpp \
+    ui/colourbutton.cpp \
+    blast/blastquery.cpp \
+    blast/runblastsearchworker.cpp \
+    blast/blastsearch.cpp \
+    graph/path.cpp \
+    ui/pathspecifydialog.cpp \
+    graph/graphlocation.cpp \
+    ui/tablewidgetitemint.cpp \
+    ui/tablewidgetitemdouble.cpp \
+    ui/tablewidgetitemshown.cpp \
+    program/memory.cpp \
+    ui/querypathspushbutton.cpp \
+    ui/querypathsdialog.cpp \
+    blast/blastquerypath.cpp \
+    tests/bandagetests.cpp \
+    ui/blasthitfiltersdialog.cpp \
+    program/scinot.cpp \
+    ui/changenodenamedialog.cpp \
+    ui/changenodedepthdialog.cpp \
+    ui/querypathsequencecopybutton.cpp \
+    command_line/querypaths.cpp \
+    command_line/info.cpp \
+    command_line/reduce.cpp \
+    ogdf/basic/Graph.cpp \
+    ogdf/basic/GraphAttributes.cpp \
+    ogdf/energybased/FMMMLayout.cpp \
+    ogdf/basic/geometry.cpp \
+    ogdf/cluster/ClusterGraphAttributes.cpp \
+    ogdf/internal/energybased/FruchtermanReingold.cpp \
+    ogdf/internal/energybased/NMM.cpp \
+    ogdf/fileformats/GmlParser.cpp \
+    ogdf/basic/simple_graph_alg.cpp \
+    ogdf/basic/basic.cpp \
+    ogdf/fileformats/XmlParser.cpp \
+    ogdf/basic/String.cpp \
+    ogdf/basic/Hashing.cpp \
+    ogdf/internal/basic/PoolMemoryAllocator.cpp \
+    ogdf/basic/GraphCopy.cpp \
+    ogdf/basic/CombinatorialEmbedding.cpp \
+    ogdf/fileformats/OgmlParser.cpp \
+    ogdf/cluster/ClusterGraph.cpp \
+    ogdf/basic/Math.cpp \
+    ogdf/internal/energybased/EdgeAttributes.cpp \
+    ogdf/internal/energybased/NodeAttributes.cpp \
+    ogdf/energybased/MAARPacking.cpp \
+    ogdf/energybased/Multilevel.cpp \
+    ogdf/energybased/numexcept.cpp \
+    ogdf/energybased/Set.cpp \
+    ogdf/fileformats/Ogml.cpp \
+    ogdf/fileformats/DinoXmlParser.cpp \
+    ogdf/fileformats/DinoXmlScanner.cpp \
+    ogdf/fileformats/DinoTools.cpp \
+    ogdf/fileformats/DinoLineBuffer.cpp \
+    ogdf/basic/System.cpp \
+    ogdf/internal/energybased/QuadTreeNM.cpp \
+    ogdf/internal/energybased/QuadTreeNodeNM.cpp \
+    ogdf/basic/Constraint.cpp \
+    ogdf/internal/energybased/MultilevelGraph.cpp \
+    ui/graphinfodialog.cpp \
+    ui/tablewidgetitemname.cpp
+
+HEADERS  += \
+    program/settings.h \
+    program/globals.h \
+    program/graphlayoutworker.h \
+    graph/debruijnnode.h \
+    graph/debruijnedge.h \
+    graph/graphicsitemnode.h \
+    graph/graphicsitemedge.h \
+    graph/ogdfnode.h \
+    ui/mainwindow.h \
+    ui/graphicsviewzoom.h \
+    ui/settingsdialog.h \
+    ui/mygraphicsview.h \
+    ui/mygraphicsscene.h \
+    ui/aboutdialog.h \
+    ui/enteroneblastquerydialog.h \
+    blast/blasthitpart.h \
+    blast/blasthit.h \
+    blast/blastquery.h \
+    blast/blastqueries.h \
+    blast/blastsearch.h \
+    ui/blastsearchdialog.h \
+    ui/infotextwidget.h \
+    graph/assemblygraph.h \
+    ui/verticalscrollarea.h \
+    ui/myprogressdialog.h \
+    ui/nodewidthvisualaid.h \
+    ui/verticallabel.h \
+    command_line/load.h \
+    command_line/image.h \
+    command_line/commoncommandlinefunctions.h \
+    ui/mytablewidget.h \
+    blast/buildblastdatabaseworker.h \
+    ui/colourbutton.h \
+    blast/runblastsearchworker.h \
+    graph/path.h \
+    ui/pathspecifydialog.h \
+    graph/graphlocation.h \
+    ui/tablewidgetitemint.h \
+    ui/tablewidgetitemdouble.h \
+    ui/tablewidgetitemshown.h \
+    program/memory.h \
+    graph/querydistance.h \
+    ui/querypathspushbutton.h \
+    ui/querypathsdialog.h \
+    blast/blastquerypath.h \
+    ui/blasthitfiltersdialog.h \
+    program/scinot.h \
+    ui/changenodenamedialog.h \
+    ui/changenodedepthdialog.h \
+    ui/querypathsequencecopybutton.h \
+    command_line/querypaths.h \
+    command_line/info.h \
+    command_line/reduce.h \
+    ogdf/basic/Graph.h \
+    ogdf/basic/GraphAttributes.h \
+    ogdf/energybased/FMMMLayout.h \
+    ogdf/basic/geometry.h \
+    ogdf/cluster/ClusterGraphAttributes.h \
+    ogdf/module/LayoutModule.h \
+    ogdf/internal/energybased/FruchtermanReingold.h \
+    ogdf/internal/energybased/NMM.h \
+    ogdf/basic/AdjEntryArray.h \
+    ogdf/basic/Array.h \
+    ogdf/fileformats/GmlParser.h \
+    ogdf/basic/GraphObserver.h \
+    ogdf/basic/simple_graph_alg.h \
+    ogdf/basic/basic.h \
+    ogdf/basic/EdgeArray.h \
+    ogdf/basic/List.h \
+    ogdf/basic/NodeArray.h \
+    ogdf/basic/Graph_d.h \
+    ogdf/fileformats/XmlParser.h \
+    ogdf/basic/String.h \
+    ogdf/internal/basic/list_templates.h \
+    ogdf/basic/Hashing.h \
+    ogdf/basic/comparer.h \
+    ogdf/basic/exceptions.h \
+    ogdf/basic/memory.h \
+    ogdf/internal/basic/MallocMemoryAllocator.h \
+    ogdf/internal/basic/PoolMemoryAllocator.h \
+    ogdf/basic/BoundedStack.h \
+    ogdf/basic/GraphCopy.h \
+    ogdf/basic/SList.h \
+    ogdf/basic/Stack.h \
+    ogdf/basic/tuples.h \
+    ogdf/basic/FaceSet.h \
+    ogdf/basic/FaceArray.h \
+    ogdf/basic/CombinatorialEmbedding.h \
+    ogdf/cluster/ClusterArray.h \
+    ogdf/fileformats/OgmlParser.h \
+    ogdf/cluster/ClusterGraph.h \
+    ogdf/cluster/ClusterGraphObserver.h \
+    ogdf/basic/HashArray.h \
+    ogdf/basic/Math.h \
+    ogdf/internal/energybased/EdgeAttributes.h \
+    ogdf/internal/energybased/NodeAttributes.h \
+    ogdf/energybased/Edge.h \
+    ogdf/energybased/MAARPacking.h \
+    ogdf/energybased/Multilevel.h \
+    ogdf/energybased/numexcept.h \
+    ogdf/energybased/Rectangle.h \
+    ogdf/energybased/PackingRowInfo.h \
+    ogdf/energybased/PQueue.h \
+    ogdf/energybased/Set.h \
+    ogdf/energybased/Node.h \
+    ogdf/fileformats/Ogml.h \
+    ogdf/fileformats/DinoXmlParser.h \
+    ogdf/fileformats/DinoXmlScanner.h \
+    ogdf/fileformats/DinoTools.h \
+    ogdf/fileformats/DinoLineBuffer.h \
+    ogdf/fileformats/XmlObject.h \
+    ogdf/basic/CriticalSection.h \
+    ogdf/basic/System.h \
+    ogdf/basic/Array2D.h \
+    ogdf/internal/energybased/ParticleInfo.h \
+    ogdf/internal/energybased/QuadTreeNM.h \
+    ogdf/internal/energybased/QuadTreeNodeNM.h \
+    ogdf/basic/Constraints.h \
+    ogdf/internal/energybased/MultilevelGraph.h \
+    ui/graphinfodialog.h \
+    ui/tablewidgetitemname.h
+
+FORMS    += \
+    ui/mainwindow.ui \
+    ui/settingsdialog.ui \
+    ui/aboutdialog.ui \
+    ui/enteroneblastquerydialog.ui \
+    ui/blastsearchdialog.ui \
+    ui/myprogressdialog.ui \
+    ui/pathspecifydialog.ui \
+    ui/querypathsdialog.ui \
+    ui/blasthitfiltersdialog.ui \
+    ui/changenodenamedialog.ui \
+    ui/changenodedepthdialog.ui \
+    ui/graphinfodialog.ui
+
+RESOURCES += \
+    images/images.qrc
+
+
+unix:INCLUDEPATH += /usr/include/
+unix:LIBS += -L/usr/lib
+
+# The following settings are compatible with OGDF being built in 64 bit release mode using Visual Studio 2013
+win32:LIBS += -lpsapi
+win32:RC_FILE = images/myapp.rc
+
+macx:ICON = images/application.icns
+macx:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
+
+# Each target platform needs the native platform as well as Qt's minimal platform.
+win32: QTPLUGIN.platforms += qwindows qminimal
+unix:!macx: QTPLUGIN.platforms += qxcb qminimal
+macx: QTPLUGIN.platforms += qcocoa qminimal
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     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
+state 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU 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 Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5037bb3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,147 @@
+# <img src="http://rrwick.github.io/Bandage/images/logo.png" alt="Bandage" width="115" height="115" align="middle">Bandage
+
+## Table of Contents
+
+* [Intro](https://github.com/rrwick/Bandage#intro)
+* [Help](https://github.com/rrwick/Bandage#help)
+* [Pre-built binaries](https://github.com/rrwick/Bandage#pre-built-binaries)
+* [Building from source](https://github.com/rrwick/Bandage#building-from-source)
+* [History](https://github.com/rrwick/Bandage#history)
+* [Contributing](https://github.com/rrwick/Bandage#contributing)
+* [Citation](https://github.com/rrwick/Bandage#citation)
+* [Credits](https://github.com/rrwick/Bandage#credits)
+* [License](https://github.com/rrwick/Bandage#license)
+
+## Intro
+
+Bandage is a GUI program that allows users to interact with the assembly graphs made by *de novo* assemblers such as <a href="https://www.ebi.ac.uk/~zerbino/velvet/" target="_blank">Velvet</a>, <a href="http://bioinf.spbau.ru/spades" target="_blank">SPAdes</a>, <a href="https://github.com/voutcn/megahit" target="_blank">MEGAHIT</a> and others.
+
+*De novo* assembly graphs contain not only assembled contigs but also the connections between those contigs, which were previously not easily accessible. Bandage visualises assembly graphs, with connections, using graph layout algorithms. Nodes in the drawn graph, which represent contigs, can be automatically labelled with their ID, length or depth. Users can interact with the graph by moving, labelling and colouring nodes. Sequence information can also be extracted directly from the gra [...]
+
+More information and download links are on the Bandage website: <a href="http://rrwick.github.io/Bandage/" target="_blank">rrwick.github.io/Bandage</a>
+
+## Help
+
+Bandage documentation is available on the <a href="https://github.com/rrwick/Bandage/wiki" target="_blank">Bandage GitHub wiki</a>.
+
+Bandage help tips are also built into the program. Throughout the UI, you will find these icons next to controls and settings: <img src="http://rrwick.github.io/Bandage/images/helptext.png" alt="help text icon" width="16" height="16">. Click them to see a description of that element of Bandage.
+
+## Pre-built binaries
+
+Compiled 64-bit binaries for Ubuntu Linux, CentOS, OS X and Windows are available in the GitHub <a href="https://github.com/rrwick/Bandage/releases/" target="_blank">'Releases' section</a> and from the <a href="http://rrwick.github.io/Bandage/" target="_blank">Bandage website</a>.
+
+If you download and run the Mac binary, you may receive a warning stating that Bandage 'can't be opened because it is from an unidentified developer.' Right click on the file and select 'Open' to override this warning.
+
+The Linux binaries comes in two varieties: dynamically-linked and statically-linked. The dynamically-linked binary is preferable, but it has more dependencies (like Qt 5). If you experience problems with the dynamically-linked binary, please try the statically-linked version instead.
+
+## Building from source
+
+If the compiled binaries do not work for you, the instructions below should help you build Bandage on most common OSs. If you are having difficulties building Bandage for your OS, feel free to contact me (Ryan) at rrwick at gmail.com and I'll do my best to help you out!
+
+### <img src="http://rrwick.github.io/Bandage/images/OS/ubuntu.png" alt="" width="34" height="40" align="middle"> Ubuntu
+
+The following instructions successfully build Bandage on a fresh installation of Ubuntu 14.04:
+
+1. Ensure the package lists are up-to-date: `sudo apt-get update`
+2. Install prerequisite packages: `sudo apt-get install build-essential git qtbase5-dev`
+3. Download the Bandage code from GitHub: `git clone https://github.com/rrwick/Bandage.git`
+4. Open a terminal in the Bandage directory.
+5. Set the environment variable to specify that you will be using Qt 5, not Qt 4: `export QT_SELECT=5`
+6. Run qmake to generate a Makefile: `qmake`
+7. Build the program: `make`
+8. `Bandage` should now be an executable file.
+9. Optionally, copy the program into /usr/local/bin: `sudo make install`. The Bandage build directory can then be deleted.
+
+### <img src="http://rrwick.github.io/Bandage/images/OS/linux.png" alt="" width="34" height="40" align="middle"> Other Linux distributions
+
+If your Linux distribution is sufficiently similar to Ubuntu (e.g. Linux Mint), I recommend trying the Ubuntu build instructions above. Otherwise, try the 'Using Qt Creator' instructions below.
+
+### <img src="http://rrwick.github.io/Bandage/images/OS/apple.png" alt="" width="34" height="40" align="middle"> Mac
+
+The following instructions successfully build Bandage on OS X 10.8 and later:
+
+1. Install Xcode, along with the Xcode Command Line Tools. If you can run the `clang` command from the terminal, you should be good to continue.
+2. Install Qt 5. This is most easily done using Homebrew: <a href="http://brew.sh/" target="_blank">brew.sh</a>. Install the Qt 5 package with this command: `brew install qt5`.
+3. Download the Bandage code from GitHub: `git clone https://github.com/rrwick/Bandage.git`
+4. Open a terminal in the Bandage directory.
+5. Run qmake to generate a Makefile. The location of the `qmake` command may vary, depending on how Qt was installed. If you used Homebrew, it should be here: `/usr/local/opt/qt5/bin/qmake`.
+6. Build the program: `make`
+7. `Bandage` should now be an application bundle.
+8. Optionally, copy the Bandage application bundle into the 'Applications' folder and delete the Bandage build directory.
+
+### <img src="http://rrwick.github.io/Bandage/images/OS/qt.png" alt="" width="34" height="40" align="middle"> Using Qt Creator
+
+For Windows and some Linux distributions, the easiest way to build Bandage from source is by using Qt Creator, the Qt IDE. I successfully used this procedure has been used on Windows and on CentOS 6.7. It should also work for Ubuntu Linux and OS X.
+
+1. Set up a compiler.
+  * For Windows, you can use the Microsoft Visual C++ compiler by installing <a href=" https://www.visualstudio.com/" target="_blank">Visual Studio</a>. Alternatively, you can skip this step and the Qt installation will provide the MinGW compiler.
+  * For CentOS, this can be done quickly using the yum package manager: `yum install gcc-c++`
+  * <a href="http://doc.qt.io/qt-5/supported-platforms.html" target="_blank">Look here</a> for more information on Qt supported compilers.
+2. Install the Qt SDK: <a href="http://www.qt.io/download-open-source/" target="_blank">www.qt.io/download-open-source</a>. The disk space required can be reduced by unticking the iOS and Android options in the Qt installer.
+3. Download the Bandage code from GitHub:
+  * Either clone using: `git clone https://github.com/rrwick/Bandage.git`
+  * or download from here: <a href="https://github.com/rrwick/Bandage/archive/master.zip" target="_blank">https://github.com/rrwick/Bandage/archive/master.zip</a>
+4. Open the Qt Creator program and load the `Bandage.pro` file which is in the Bandage directory. Since this is the first time the project has been loaded, it will ask you to configure the project. The defaults should be okay, so click 'Configure Project'.
+5. Change to the release build configuration by clicking where it says 'Debug' in the bottom left area of Qt Creator and select 'Release'.
+6. Build and run Bandage by clicking the green arrow in the bottom left area of Qt Creator. Bandage should open when the build has finished.
+7. You will find the executable file in a new folder that begins with 'build-Bandage-Desktop'.
+
+## History
+
+v0.8.0 - 30 April 2016
+
+v0.7.1 - 6 December 2015
+
+v0.7.0 - 16 October 2015
+
+v0.6.4 - 17 September 2015
+
+v0.6.3 - 31 August 2015
+
+v0.6.2 - 29 July 2015
+
+v0.6.1 - 15 July 2015
+
+v0.6.0 - 8 July 2015
+
+v0.5.6 - 26 May 2015
+
+v0.5.5 - 14 May 2015
+
+v0.5.4 - 5 May 2015
+
+v0.5.3 - 30 April 2015
+
+v0.5.2 - 25 April 2015
+
+v0.5.1 - 20 April 2015
+
+v0.5.0 - 9 April 2015
+
+v0.4.2 - 20 March 2015
+
+v0.4.1 - 12 March 2015
+
+v0.4.0 - 10 March 2015
+
+v0.3.0 – 19 February 2015
+
+## Contributing
+
+New contributors are welcome! If you're interested or have ideas, please contact me (Ryan) at rrwick at gmail.com.
+
+## Citation
+
+If you use Bandage in your research, please cite the following publication:
+
+[Wick R.R., Schultz M.B., Zobel J. & Holt K.E. (2015). Bandage: interactive visualisation of de novo genome assemblies. Bioinformatics, 31(20), 3350-3352.](http://bioinformatics.oxfordjournals.org/content/31/20/3350)
+
+## Credits
+
+Bandage makes use of the <a href="http://www.ogdf.net/" target="_blank">OGDF</a> library for performing graph layout algorithms. My thanks goes out to the OGDF developers for their excellent work!
+
+I also thank <a href="https://github.com/rchikhi" target="_blank">Rayan Chikhi</a> and <a href="https://github.com/epruesse" target="_blank">Elmar Pruesse</a> for their contributions to the code.
+
+## License
+
+GNU General Public License, version 3
diff --git a/blast/blasthit.cpp b/blast/blasthit.cpp
new file mode 100644
index 0000000..3c0aea7
--- /dev/null
+++ b/blast/blasthit.cpp
@@ -0,0 +1,138 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "blasthit.h"
+
+#include "../graph/debruijnnode.h"
+#include "blastquery.h"
+#include "../program/settings.h"
+#include "../program/globals.h"
+#include <math.h>
+
+BlastHit::BlastHit(BlastQuery * query, DeBruijnNode * node,
+                   double percentIdentity, int alignmentLength,
+                   int numberMismatches, int numberGapOpens,
+                   int queryStart, int queryEnd,
+                   int nodeStart, int nodeEnd,
+                   SciNot eValue, double bitScore) :
+    m_query(query), m_node(node),
+    m_percentIdentity(percentIdentity), m_alignmentLength(alignmentLength),
+    m_numberMismatches(numberMismatches), m_numberGapOpens(numberGapOpens),
+    m_queryStart(queryStart), m_queryEnd(queryEnd),
+    m_nodeStart(nodeStart), m_nodeEnd(nodeEnd),
+    m_eValue(eValue), m_bitScore(bitScore)
+{
+    int nodeLength = m_node->getLength();
+    int queryLength = m_query->getLength();
+
+    m_nodeStartFraction = double(nodeStart - 1) / nodeLength;
+    m_nodeEndFraction = double(nodeEnd) / nodeLength;
+    m_queryStartFraction = double(queryStart - 1) / queryLength;
+    m_queryEndFraction = double(queryEnd) / queryLength;
+}
+
+std::vector<BlastHitPart> BlastHit::getBlastHitParts(bool reverse, double scaledNodeLength)
+{
+    std::vector<BlastHitPart> returnVector;
+
+    //If the colour scheme is Blast rainbow, then this function generates lots
+    //of BlastHitParts - each small and with a different colour of the rainbow.
+    if (g_settings->nodeColourScheme == BLAST_HITS_RAINBOW_COLOUR)
+    {
+        double scaledHitLength = (m_nodeEndFraction - m_nodeStartFraction) * scaledNodeLength;
+
+        int partCount = ceil(g_settings->blastRainbowPartsPerQuery * fabs(m_queryStartFraction - m_queryEndFraction));
+
+        //If there are way more parts than the scaled hit length, that means
+        //that a single part will be much less than a pixel in length.  This
+        //isn't desirable, so reduce the partCount in these cases.
+        if (partCount > scaledHitLength * 2.0)
+            partCount = int(scaledHitLength * 2.0);
+
+        double nodeSpacing = (m_nodeEndFraction - m_nodeStartFraction) / partCount;
+        double querySpacing = (m_queryEndFraction - m_queryStartFraction) / partCount;
+
+        double nodeFraction = m_nodeStartFraction;
+        double queryFraction = m_queryStartFraction;
+
+        for (int i = 0; i < partCount; ++i)
+        {
+            QColor dotColour;
+            dotColour.setHsvF(queryFraction * 0.9, 1.0, 1.0);  //times 0.9 to keep the colour from getting too close to red, as that could confuse the end with the start
+
+            double nextFraction = nodeFraction + nodeSpacing;
+
+            if (reverse)
+                returnVector.push_back(BlastHitPart(dotColour, 1.0 - nodeFraction, 1.0 - nextFraction));
+            else
+                returnVector.push_back(BlastHitPart(dotColour, nodeFraction, nextFraction));
+
+            nodeFraction = nextFraction;
+            queryFraction += querySpacing;
+        }
+    }
+
+    //If the colour scheme is Blast solid, then this function generates only one
+    //BlastHitPart with a colour dependent on the Blast query.
+    else
+    {
+        if (reverse)
+            returnVector.push_back(BlastHitPart(m_query->getColour(), 1.0 - m_nodeStartFraction, 1.0 - m_nodeEndFraction));
+        else
+            returnVector.push_back(BlastHitPart(m_query->getColour(), m_nodeStartFraction, m_nodeEndFraction));
+    }
+
+    return returnVector;
+}
+
+
+bool BlastHit::compareTwoBlastHitPointers(BlastHit * a, BlastHit * b)
+{
+    return a->m_queryStart < b->m_queryStart;
+}
+
+
+double BlastHit::getQueryCoverageFraction()
+{
+    int queryRegionSize = m_queryEnd - m_queryStart + 1;
+    int queryLength = m_query->getLength();
+
+    if (queryLength == 0)
+        return 0.0;
+    else
+        return double(queryRegionSize) / queryLength;
+}
+
+
+GraphLocation BlastHit::getHitStart() const
+{
+    return GraphLocation(m_node, m_nodeStart);
+}
+
+GraphLocation BlastHit::getHitEnd() const
+{
+    return GraphLocation(m_node, m_nodeEnd);
+}
+
+
+//This function returns the node sequence for this hit.
+QByteArray BlastHit::getNodeSequence() const
+{
+    int nodeSequenceLength = m_nodeEnd - m_nodeStart + 1;
+    return m_node->getSequence().mid(m_nodeStart-1, nodeSequenceLength);
+}
diff --git a/blast/blasthit.h b/blast/blasthit.h
new file mode 100644
index 0000000..fdd94a9
--- /dev/null
+++ b/blast/blasthit.h
@@ -0,0 +1,73 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTHIT_H
+#define BLASTHIT_H
+
+class DeBruijnNode;
+class BlastQuery;
+
+#include <QString>
+#include "blasthitpart.h"
+#include <vector>
+#include "../graph/path.h"
+#include "../graph/graphlocation.h"
+#include "../program/scinot.h"
+
+class BlastHit
+{
+public:
+    BlastHit(BlastQuery * query, DeBruijnNode * node,
+             double percentIdentity, int alignmentLength,
+             int numberMismatches, int numberGapOpens,
+             int queryStart, int queryEnd,
+             int nodeStart, int nodeEnd, SciNot eValue, double bitScore);
+    BlastHit();
+
+    BlastQuery * m_query;
+    DeBruijnNode * m_node;
+    double m_percentIdentity;
+    int m_alignmentLength;
+    int m_numberMismatches;
+    int m_numberGapOpens;
+    int m_queryStart;
+    int m_queryEnd;
+    int m_nodeStart;
+    int m_nodeEnd;
+    SciNot m_eValue;
+    double m_bitScore;
+
+    double m_nodeStartFraction;
+    double m_nodeEndFraction;
+    double m_queryStartFraction;
+    double m_queryEndFraction;
+
+    Path m_queryPath;
+
+    std::vector<BlastHitPart> getBlastHitParts(bool reverse, double scaledNodeLength);
+    bool onForwardStrand() {return m_queryStart < m_queryEnd;}
+    double getNodeCentreFraction() {return (m_nodeStartFraction + m_nodeEndFraction) / 2.0;}
+    static bool compareTwoBlastHitPointers(BlastHit * a, BlastHit * b);
+    double getQueryCoverageFraction();
+    GraphLocation getHitStart() const;
+    GraphLocation getHitEnd() const;
+    QByteArray getNodeSequence() const;
+    int getNodeLength() const {return m_nodeEnd - m_nodeStart + 1;}
+};
+
+#endif // BLASTHIT_H
diff --git a/blast/blasthitpart.h b/blast/blasthitpart.h
new file mode 100644
index 0000000..8fea329
--- /dev/null
+++ b/blast/blasthitpart.h
@@ -0,0 +1,36 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTHITPART_H
+#define BLASTHITPART_H
+
+#include <QColor>
+
+class BlastHitPart
+{
+public:
+    BlastHitPart() {}
+    BlastHitPart(QColor colour, double nodeFractionStart, double nodeFractionEnd) :
+        m_colour(colour), m_nodeFractionStart(nodeFractionStart), m_nodeFractionEnd(nodeFractionEnd) {}
+
+    QColor m_colour;
+    double m_nodeFractionStart;
+    double m_nodeFractionEnd;
+};
+
+#endif // BLASTHITPART_H
diff --git a/blast/blastqueries.cpp b/blast/blastqueries.cpp
new file mode 100644
index 0000000..f8c2342
--- /dev/null
+++ b/blast/blastqueries.cpp
@@ -0,0 +1,249 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "blastqueries.h"
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include <QTextStream>
+#include "blastsearch.h"
+#include "../program/memory.h"
+
+BlastQueries::BlastQueries() :
+    m_tempNuclFile(0), m_tempProtFile(0)
+{
+    m_presetColours = getPresetColours();
+}
+
+
+BlastQueries::~BlastQueries()
+{
+    clearAllQueries();
+}
+
+
+void BlastQueries::createTempQueryFiles()
+{
+    m_tempNuclFile.reset(new QFile(g_blastSearch->m_tempDirectory + "nucl_queries.fasta"));
+    m_tempProtFile.reset(new QFile(g_blastSearch->m_tempDirectory + "prot_queries.fasta"));
+}
+
+BlastQuery * BlastQueries::getQueryFromName(QString queryName)
+{
+    for (size_t i = 0; i < m_queries.size(); ++i)
+    {
+        if (m_queries[i]->getName() == queryName)
+            return m_queries[i];
+    }
+    return 0;
+}
+
+
+void BlastQueries::addQuery(BlastQuery * newQuery)
+{
+    newQuery->setName(getUniqueName(newQuery->getName()));
+
+    //Give the new query a colour
+    int colourIndex = int(m_queries.size());
+    colourIndex %= m_presetColours.size();
+    newQuery->setColour(m_presetColours[colourIndex]);
+
+    m_queries.push_back(newQuery);
+    updateTempFiles();
+}
+
+
+//This function renames the query.  It returns the name given, because that
+//might not be exactly the same as the name passed to the function if it
+//wasn't unique.
+QString BlastQueries::renameQuery(BlastQuery * newQuery, QString newName)
+{
+    newQuery->setName(getUniqueName(newName));
+    updateTempFiles();
+    return newQuery->getName();
+}
+
+
+//This function looks at the name, and if it is not unique, it adds a suffix
+//to make it unique.  Also make sure it's not "all" or "none", as those will
+//conflict with viewing all queries at once or no queries.
+QString BlastQueries::getUniqueName(QString name)
+{
+    //If the query name ends in a semicolon, remove it.  Ending semicolons
+    //mess with BLAST.
+    if (name.endsWith(';'))
+        name.chop(1);
+
+    //The name can't be empty.
+    if (name == "")
+        name = g_settings->unnamedQueryDefaultName;
+
+    int queryNumber = 2;
+    QString finalName = name;
+    while (getQueryFromName(finalName) != 0 ||
+           finalName == "all" || finalName == "none")
+        finalName = name + "_" + QString::number(queryNumber++);
+    return finalName;
+}
+
+void BlastQueries::clearAllQueries()
+{
+    for (size_t i = 0; i < m_queries.size(); ++i)
+        delete m_queries[i];
+    m_queries.clear();
+    deleteTempFiles();
+}
+
+void BlastQueries::clearSomeQueries(std::vector<BlastQuery *> queriesToRemove)
+{
+    for (size_t i = 0; i < queriesToRemove.size(); ++i)
+    {
+        m_queries.erase(std::remove(m_queries.begin(), m_queries.end(), queriesToRemove[i]), m_queries.end());
+        delete queriesToRemove[i];
+    }
+
+    updateTempFiles();
+}
+
+void BlastQueries::deleteTempFiles()
+{
+    if (tempNuclFileExists())
+        m_tempNuclFile->remove();
+    if (tempProtFileExists())
+        m_tempProtFile->remove();
+}
+
+void BlastQueries::updateTempFiles()
+{
+    deleteTempFiles();
+
+    if (getQueryCount(NUCLEOTIDE) > 0)
+        writeTempFile(m_tempNuclFile, NUCLEOTIDE);
+
+    if (getQueryCount(PROTEIN) > 0)
+        writeTempFile(m_tempProtFile, PROTEIN);
+}
+
+
+void BlastQueries::writeTempFile(QSharedPointer<QFile> file, SequenceType sequenceType)
+{
+    file->open(QIODevice::Append | QIODevice::Text);
+    QTextStream out(file.data());
+    for (size_t i = 0; i < m_queries.size(); ++i)
+    {
+        if (m_queries[i]->getSequenceType() == sequenceType)
+        {
+            out << ">" << m_queries[i]->getName() << "\n";
+            out << m_queries[i]->getSequence();
+            out << "\n";
+        }
+    }
+    file->close();
+}
+
+
+void BlastQueries::searchOccurred()
+{
+    for (size_t i = 0; i < m_queries.size(); ++i)
+        m_queries[i]->setAsSearchedFor();
+}
+
+
+void BlastQueries::clearSearchResults()
+{
+    for (size_t i = 0; i < m_queries.size(); ++i)
+        m_queries[i]->clearSearchResults();
+}
+
+
+int BlastQueries::getQueryCount()
+{
+    return int(m_queries.size());
+}
+
+int BlastQueries::getQueryCountWithAtLeastOnePath()
+{
+    int count = 0;
+
+    for (size_t i = 0; i < m_queries.size(); ++i)
+    {
+        if (m_queries[i]->getPathCount() > 0)
+            ++count;
+    }
+
+    return count;
+}
+
+int BlastQueries::getQueryPathCount()
+{
+    int count = 0;
+
+    for (size_t i = 0; i < m_queries.size(); ++i)
+        count += m_queries[i]->getPathCount();
+    return count;
+}
+
+int BlastQueries::getQueryCount(SequenceType sequenceType)
+{
+    int count = 0;
+    for (size_t i = 0; i < m_queries.size(); ++i)
+    {
+        if (m_queries[i]->getSequenceType() == sequenceType)
+            ++count;
+    }
+    return count;
+}
+
+
+bool BlastQueries::tempNuclFileExists()
+{
+    if (m_tempNuclFile.isNull())
+        return false;
+    return m_tempNuclFile->exists();
+}
+bool BlastQueries::tempProtFileExists()
+{
+    if (m_tempProtFile.isNull())
+        return false;
+    return m_tempProtFile->exists();
+}
+
+
+//This function looks to see if a query pointer is in the list
+//of queries.  The query pointer given may or may not still
+//actually exist, so it can't be dereferenced.
+bool BlastQueries::isQueryPresent(BlastQuery * query)
+{
+    for (size_t i = 0; i < m_queries.size(); ++i)
+    {
+        if (query == m_queries[i])
+            return true;
+    }
+
+    return false;
+}
+
+
+//This function looks at each BLAST query and tries to find a path through
+//the graph which covers the maximal amount of the query.
+void BlastQueries::findQueryPaths()
+{
+    for (size_t i = 0; i < m_queries.size(); ++i)
+        m_queries[i]->findQueryPaths();
+}
+
+
diff --git a/blast/blastqueries.h b/blast/blastqueries.h
new file mode 100644
index 0000000..cf8e015
--- /dev/null
+++ b/blast/blastqueries.h
@@ -0,0 +1,74 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTQUERIES_H
+#define BLASTQUERIES_H
+
+#include <vector>
+#include "blastquery.h"
+#include <QFile>
+#include "../program/globals.h"
+#include <QSharedPointer>
+
+//This class manages all BLAST queries. It holds BlastQuery
+//objects itself, and it creates/modifies/deletes the temp
+//files which hold the queries for use in BLAST.
+//There are two separate temp files, one for nucleotide
+//queries (for blastn) and one for protein queries (for
+//tblasn).
+
+class BlastQueries
+{
+public:
+    BlastQueries();
+    ~BlastQueries();
+
+    std::vector<BlastQuery *> m_queries;
+
+    BlastQuery * getQueryFromName(QString queryName);
+
+    void createTempQueryFiles();
+    void addQuery(BlastQuery * newQuery);
+    QString renameQuery(BlastQuery * newQuery, QString newName);
+    void clearAllQueries();
+    void clearSomeQueries(std::vector<BlastQuery *> queriesToRemove);
+    void searchOccurred();
+    void clearSearchResults();
+    int getQueryCount();
+    int getQueryCountWithAtLeastOnePath();
+    int getQueryPathCount();
+    int getQueryCount(SequenceType sequenceType);
+    bool isQueryPresent(BlastQuery * query);
+    void findQueryPaths();
+
+    std::vector<QColor> m_presetColours;
+
+private:
+    QSharedPointer<QFile> m_tempNuclFile;
+    QSharedPointer<QFile> m_tempProtFile;
+
+    void deleteTempFiles();
+    void updateTempFiles();
+    bool tempNuclFileExists();
+    bool tempProtFileExists();
+    void writeTempFile(QSharedPointer<QFile> file, SequenceType sequenceType);
+    QString getUniqueName(QString name);
+
+};
+
+#endif // BLASTQUERIES_H
diff --git a/blast/blastquery.cpp b/blast/blastquery.cpp
new file mode 100644
index 0000000..d4c2962
--- /dev/null
+++ b/blast/blastquery.cpp
@@ -0,0 +1,287 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "blastquery.h"
+#include "../program/settings.h"
+#include "../graph/path.h"
+#include "../graph/debruijnnode.h"
+#include <limits>
+#include <vector>
+#include <utility>
+
+BlastQuery::BlastQuery(QString name, QString sequence) :
+    m_name(name), m_sequence(sequence), m_searchedFor(false), m_shown(true)
+{
+    autoSetSequenceType();
+}
+
+
+//This function looks at the query sequence to decide if it is
+//a nucleotide or protein sequence.
+void BlastQuery::autoSetSequenceType()
+{
+    //If the sequence contains a letter that's in the protein
+    //alphabet but not in the extended DNA alphabet, then it's
+    //a protein
+    if (m_sequence.contains('e') || m_sequence.contains('E') ||
+            m_sequence.contains('f') || m_sequence.contains('F') ||
+            m_sequence.contains('i') || m_sequence.contains('I') ||
+            m_sequence.contains('l') || m_sequence.contains('L') ||
+            m_sequence.contains('p') || m_sequence.contains('P') ||
+            m_sequence.contains('q') || m_sequence.contains('Q'))
+    {
+        m_sequenceType = PROTEIN;
+        return;
+    }
+
+    //If the code got here, then it's a bit trickier.  It could
+    //possibly be an extended alphabet DNA sequence or a protein
+    //sequence without particular amino acids.
+
+    //Look to see if A, C, G, T and N make up 75% or more of
+    //the sequence.  If so, it's DNA.  If not, it's
+    //protein.
+    int length = m_sequence.length();
+    int nuclLetters = m_sequence.count('a') + m_sequence.count('A') +
+            m_sequence.count('c') + m_sequence.count('C') +
+            m_sequence.count('g') + m_sequence.count('G') +
+            m_sequence.count('t') + m_sequence.count('T') +
+            m_sequence.count('n') + m_sequence.count('N');
+
+    if (double(nuclLetters) / length >= 0.75)
+        m_sequenceType = NUCLEOTIDE;
+    else
+        m_sequenceType = PROTEIN;
+}
+
+
+QString BlastQuery::getTypeString() const
+{
+    if (m_sequenceType == NUCLEOTIDE)
+        return "nucl";
+    else
+        return "prot";
+}
+
+
+void BlastQuery::clearSearchResults()
+{
+    m_searchedFor = false;
+    m_hits.clear();
+}
+
+
+
+
+
+//This function tries to find the paths through the graph which cover the query.
+void BlastQuery::findQueryPaths()
+{
+    m_paths = QList<BlastQueryPath>();
+    if (m_hits.size() > g_settings->maxHitsForQueryPath)
+        return;
+
+    int queryLength = m_sequence.length();
+    if (m_sequenceType == PROTEIN)
+        queryLength *= 3;
+
+    //Find all possible path starts within an acceptable distance from the query
+    //start.
+    QList<BlastHit *> possibleStarts;
+    double acceptableStartFraction = 1.0 - g_settings->minQueryCoveredByPath;
+    for (int i = 0; i < m_hits.size(); ++i)
+    {
+        BlastHit * hit = m_hits[i].data();
+        if (hit->m_queryStartFraction <= acceptableStartFraction)
+            possibleStarts.push_back(hit);
+    }
+
+    //Find all possible path ends.
+    QList<BlastHit *> possibleEnds;
+    double acceptableEndFraction = g_settings->minQueryCoveredByPath;
+    for (int i = 0; i < m_hits.size(); ++i)
+    {
+        BlastHit * hit = m_hits[i].data();
+        if (hit->m_queryEndFraction >= acceptableEndFraction)
+            possibleEnds.push_back(hit);
+    }
+
+    //For each possible start, find paths to each possible end.
+    QList<Path> possiblePaths;
+    for (int i = 0; i < possibleStarts.size(); ++i)
+    {
+        BlastHit * start = possibleStarts[i];
+        GraphLocation startLocation = start->getHitStart();
+
+        for (int j = 0; j < possibleEnds.size(); ++j)
+        {
+            BlastHit * end = possibleEnds[j];
+            GraphLocation endLocation = end->getHitEnd();
+
+            //Assuming there is a path from the start hit to the end hit,
+            //determine the ideal length.  This is the query length minus the
+            //parts of the query not covered by the start and end.
+            int partialQueryLength = queryLength;
+            int pathStart = start->m_queryStart - 1;
+            int pathEnd = end->m_queryEnd;
+            if (m_sequenceType == PROTEIN)
+            {
+                pathStart *= 3;
+                pathEnd *= 3;
+            }
+            partialQueryLength -= pathStart;
+            partialQueryLength -= queryLength - pathEnd;
+
+            //Determine the minimum and maximum lengths allowed for the path.
+            int minLength;
+            if (g_settings->minLengthPercentage.on && g_settings->minLengthBaseDiscrepancy.on) //both on
+                minLength = std::max(int(partialQueryLength * g_settings->minLengthPercentage + 0.5), partialQueryLength + g_settings->minLengthBaseDiscrepancy);
+            else if (g_settings->minLengthPercentage.on && !g_settings->minLengthBaseDiscrepancy.on) //just relative
+                minLength = int(partialQueryLength * g_settings->minLengthPercentage + 0.5);
+            else if (!g_settings->minLengthPercentage.on && g_settings->minLengthBaseDiscrepancy.on) //just absolute
+                minLength = partialQueryLength + g_settings->minLengthBaseDiscrepancy;
+            else //neither are on
+                minLength = 1;
+
+            int maxLength;
+            if (g_settings->maxLengthPercentage.on && g_settings->maxLengthBaseDiscrepancy.on) //both on
+                maxLength = std::min(int(partialQueryLength * g_settings->maxLengthPercentage + 0.5), partialQueryLength + g_settings->maxLengthBaseDiscrepancy);
+            else if (g_settings->maxLengthPercentage.on && !g_settings->maxLengthBaseDiscrepancy.on) //just relative
+                maxLength = int(partialQueryLength * g_settings->maxLengthPercentage + 0.5);
+            else if (!g_settings->maxLengthPercentage.on && g_settings->maxLengthBaseDiscrepancy.on) //just absolute
+                maxLength = partialQueryLength + g_settings->maxLengthBaseDiscrepancy;
+            else //neither are on
+                maxLength = std::numeric_limits<int>::max();
+
+            possiblePaths.append(Path::getAllPossiblePaths(startLocation,
+                                                           endLocation,
+                                                           g_settings->maxQueryPathNodes - 1,
+                                                           minLength,
+                                                           maxLength));
+        }
+    }
+
+
+    //Now we use the Path objects to make BlastQueryPath objects.  These contain
+    //BLAST-specific information that the Path class doesn't.
+    QList<BlastQueryPath> blastQueryPaths;
+    for (int i = 0; i < possiblePaths.size(); ++i)
+        blastQueryPaths.push_back(BlastQueryPath(possiblePaths[i], this));
+
+    //We now want to throw out any paths for which the hits fail to meet the
+    //thresholds in settings.
+    QList<BlastQueryPath> sufficientCoveragePaths;
+    for (int i = 0; i < blastQueryPaths.size(); ++i)
+    {
+        if (blastQueryPaths[i].getPathQueryCoverage() < g_settings->minQueryCoveredByPath)
+            continue;
+        if (g_settings->minQueryCoveredByHits.on && blastQueryPaths[i].getHitsQueryCoverage() < g_settings->minQueryCoveredByHits)
+            continue;
+        if (g_settings->maxEValueProduct.on && blastQueryPaths[i].getEvalueProduct() > g_settings->maxEValueProduct)
+            continue;
+        if (g_settings->minMeanHitIdentity.on && blastQueryPaths[i].getMeanHitPercIdentity() < 100.0 * g_settings->minMeanHitIdentity)
+            continue;
+        if (g_settings->minLengthPercentage.on && blastQueryPaths[i].getRelativePathLength() < g_settings->minLengthPercentage)
+            continue;
+        if (g_settings->maxLengthPercentage.on && blastQueryPaths[i].getRelativePathLength() > g_settings->maxLengthPercentage)
+            continue;
+        if (g_settings->minLengthBaseDiscrepancy.on && blastQueryPaths[i].getAbsolutePathLengthDifference() < g_settings->minLengthBaseDiscrepancy)
+            continue;
+        if (g_settings->maxLengthBaseDiscrepancy.on && blastQueryPaths[i].getAbsolutePathLengthDifference() > g_settings->maxLengthBaseDiscrepancy)
+            continue;
+
+        sufficientCoveragePaths.push_back(blastQueryPaths[i]);
+    }
+
+    //We now want to throw out any paths which are sub-paths of other, larger
+    //paths.
+    for (int i = 0; i < sufficientCoveragePaths.size(); ++i)
+    {
+        bool throwOut = false;
+        for (int j = 0; j < sufficientCoveragePaths.size(); ++j)
+        {
+            //No need to compare a path with itself.
+            if (i == j)
+                continue;
+
+            if (sufficientCoveragePaths[i].getPath().hasNodeSubset(sufficientCoveragePaths[j].getPath()))
+            {
+                throwOut = true;
+                break;
+            }
+        }
+        if (!throwOut)
+            m_paths.push_back(sufficientCoveragePaths[i]);
+    }
+
+    //Now we sort the paths from best to worst.
+    std::sort(m_paths.begin(), m_paths.end());
+}
+
+
+
+//This function returns the fraction of the query that is covered by BLAST hits.
+//If a list of BLAST hits is passed to the function, it only looks in those
+//hits.  If no such list is passed, it looks in all hits for this query.
+// http://stackoverflow.com/questions/5276686/merging-ranges-in-c
+double BlastQuery::fractionCoveredByHits(const QList<BlastHit *> * hitsToCheck) const
+{
+    int hitBases = 0;
+    int queryLength = getLength();
+    if (queryLength == 0)
+        return 0.0;
+
+    std::vector<std::pair<int, int> > ranges;
+    if (hitsToCheck == 0) {
+        for (int i = 0; i < m_hits.size(); ++i) {
+            BlastHit * hit = m_hits[i].data();
+            ranges.push_back(std::pair<int,int>(hit->m_queryStart - 1, hit->m_queryEnd));
+        }
+    }
+    else {
+        for (int i = 0; i < hitsToCheck->size(); ++i) {
+            BlastHit * hit = (*hitsToCheck)[i];
+            ranges.push_back(std::pair<int,int>(hit->m_queryStart - 1, hit->m_queryEnd));
+        }
+    }
+
+    if (ranges.size() == 0)
+        return 0.0;
+
+    std::sort(ranges.begin(), ranges.end());
+
+    std::vector<std::pair<int, int> > mergedRanges;
+    std::vector<std::pair<int, int> >::iterator it = ranges.begin();
+    std::pair<int,int> current = *(it)++;
+    while (it != ranges.end())
+    {
+        if (current.second >= it->first) {
+            current.second = std::max(current.second, it->second);
+        } else {
+            mergedRanges.push_back(current);
+            current = *(it);
+        }
+        it++;
+    }
+    mergedRanges.push_back(current);
+
+    for (size_t i = 0; i < mergedRanges.size(); ++i)
+        hitBases += mergedRanges[i].second - mergedRanges[i].first;
+
+    return double(hitBases) / queryLength;
+}
diff --git a/blast/blastquery.h b/blast/blastquery.h
new file mode 100644
index 0000000..3c6ad52
--- /dev/null
+++ b/blast/blastquery.h
@@ -0,0 +1,83 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTQUERY_H
+#define BLASTQUERY_H
+
+#include <QObject>
+#include <QString>
+#include <QColor>
+#include "../program/globals.h"
+#include "blasthit.h"
+#include <QList>
+#include <QSharedPointer>
+#include "blastquerypath.h"
+
+class BlastQuery : public QObject
+{
+    Q_OBJECT
+
+public:
+    //CREATORS
+    BlastQuery() {}
+    BlastQuery(QString name, QString sequence);
+
+    //ACCESSORS
+    QString getName() const {return m_name;}
+    QString getSequence() const {return m_sequence;}
+    int getLength() const {return m_sequence.length();}
+    bool hasHits() const {return m_hits.size() > 0;}
+    int hitCount() const {return m_hits.size();}
+    QList< QSharedPointer<BlastHit> > getHits() const {return m_hits;}
+    bool wasSearchedFor() const {return m_searchedFor;}
+    QColor getColour() const {return m_colour;}
+    SequenceType getSequenceType() const {return m_sequenceType;}
+    QList<BlastQueryPath> getPaths() const {return m_paths;}
+    int getPathCount() const {return m_paths.size();}
+    QString getTypeString() const;
+    double fractionCoveredByHits(const QList<BlastHit *> * hitsToCheck = 0) const;
+    bool isShown() const {return m_shown;}
+    bool isHidden() const {return !m_shown;}
+
+    //MODIFIERS
+    void setName(QString newName) {m_name = newName;}
+    void addHit(QSharedPointer<BlastHit> newHit) {m_hits.push_back(newHit);}
+    void clearSearchResults();
+    void setAsSearchedFor() {m_searchedFor = true;}
+    void findQueryPaths();
+
+public slots:
+    void setColour(QColor newColour) {m_colour = newColour;}
+    void setShown(bool newShown) {m_shown = newShown;}
+
+private:
+    QString m_name;
+    QString m_sequence;
+    QList< QSharedPointer<BlastHit> > m_hits;
+    bool m_searchedFor;
+    QColor m_colour;
+    SequenceType m_sequenceType;
+    QList<BlastQueryPath> m_paths;
+    bool m_shown;
+
+    void autoSetSequenceType();
+    bool positionInAnyHit(int position) const;
+    bool positionInHitList(int position, const QList<BlastHit *> * hitsToCheck) const;
+};
+
+#endif // BLASTQUERY_H
diff --git a/blast/blastquerypath.cpp b/blast/blastquerypath.cpp
new file mode 100644
index 0000000..4794903
--- /dev/null
+++ b/blast/blastquerypath.cpp
@@ -0,0 +1,320 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "blastquerypath.h"
+
+#include "blastquery.h"
+#include "../graph/debruijnnode.h"
+#include "../program/globals.h"
+#include "../graph/assemblygraph.h"
+#include "../graph/debruijnedge.h"
+#include <limits>
+
+BlastQueryPath::BlastQueryPath(Path path, BlastQuery * query) :
+    m_path(path), m_query(query)
+{
+
+    //This function follows the path, returning the BLAST hits it finds for the
+    //query.  It requires that the hits occur in order, i.e. that each hit in
+    //the path begins later in the query than the previous hit.
+
+    BlastHit * previousHit = 0;
+    QList<DeBruijnNode *> pathNodes = m_path.getNodes();
+    for (int i = 0; i < pathNodes.size(); ++i)
+    {
+        DeBruijnNode * node = pathNodes[i];
+
+        QList<BlastHit *> hitsThisNode;
+        QList< QSharedPointer<BlastHit> > queryHits = query->getHits();
+        for (int j = 0; j < queryHits.size(); ++j)
+        {
+            BlastHit * hit = queryHits[j].data();
+            if (hit->m_node->getName() == node->getName())
+                hitsThisNode.push_back(hit);
+        }
+
+        std::sort(hitsThisNode.begin(), hitsThisNode.end(),
+                  BlastHit::compareTwoBlastHitPointers);
+
+        for (int j = 0; j < hitsThisNode.size(); ++j)
+        {
+            BlastHit * hit = hitsThisNode[j];
+
+            //First check to make sure the hits are within the path.  This means
+            //if we are in the first or last nodes of the path, we need to make
+            //sure that our hit is contained within the start/end positions.
+            if ( (i != 0 || hit->m_nodeStart >= m_path.getStartLocation().getPosition()) &&
+                    (i != pathNodes.size()-1 || hit->m_nodeEnd <= m_path.getEndLocation().getPosition()))
+            {
+                //Now make sure that the hit follows the previous hit in the
+                //query.
+                if (previousHit == 0 ||
+                        hit->m_queryStart > previousHit->m_queryStart)
+                {
+                    m_hits.push_back(hit);
+                    previousHit = hit;
+                }
+            }
+        }
+    }
+}
+
+
+
+
+
+double BlastQueryPath::getMeanHitPercIdentity() const
+{
+    int totalHitLength = 0;
+    double sum = 0.0;
+
+    for (int i = 0; i < m_hits.size(); ++i)
+    {
+        int hitLength = m_hits[i]->m_alignmentLength;
+        totalHitLength += hitLength;
+
+        double hitIdentity = m_hits[i]->m_percentIdentity;
+        sum += hitIdentity * hitLength;
+    }
+
+    if (totalHitLength == 0)
+        return 0.0;
+    else
+        return sum / totalHitLength;
+}
+
+
+
+
+//This function looks at all of the hits in the path for this query and
+//multiplies the e-values together. If the hits overlap each other, then
+//this function reduces the e-values accoringly (effectively to prevent
+//the overlapping region from being counted twice).
+SciNot BlastQueryPath::getEvalueProduct() const
+{
+    double coefficientProduct = 1.0;
+    int exponentSum = 0;
+
+    for (int i = 0; i < m_hits.size(); ++i)
+    {
+        BlastHit * thisHit = m_hits[i];
+        SciNot thisHitEValue = thisHit->m_eValue;
+        double eValueLenToRemove = 0.0;
+        if (i > 0) {
+            BlastHit * previousHit = m_hits[i-1];
+            int overlap = getHitOverlap(previousHit, thisHit);
+            if (overlap > 0)
+                eValueLenToRemove += overlap / 2.0;
+        }
+        if (i < m_hits.size() - 1) {
+            BlastHit * nextHit = m_hits[i+1];
+            int overlap = getHitOverlap(thisHit, nextHit);
+            if (overlap > 0)
+                eValueLenToRemove += overlap / 2.0;
+        }
+        if (eValueLenToRemove > 0.0) {
+            int thisHitLength = thisHit->getNodeLength();
+            double reduction = (thisHitLength - eValueLenToRemove) / thisHitLength;
+            thisHitEValue.power(reduction);
+        }
+
+        coefficientProduct *= thisHitEValue.getCoefficient();
+        exponentSum += thisHitEValue.getExponent();
+    }
+
+    return SciNot(coefficientProduct, exponentSum);
+}
+
+
+int BlastQueryPath::getHitOverlap(BlastHit * hit1, BlastHit * hit2) const
+{
+    int hit1Start, hit1End, hit2Start, hit2End;
+    QPair<DeBruijnNode *, DeBruijnNode *> possibleEdge(hit1->m_node, hit2->m_node);
+
+    // Overlap in the same node is simple.
+    if (hit1->m_node == hit2->m_node) {
+        hit1Start = hit1->m_nodeStart - 1;
+        hit1End = hit1->m_nodeEnd;
+        hit2Start = hit2->m_nodeStart - 1;
+        hit2End = hit2->m_nodeEnd;
+    }
+
+    // Overlap in connected nodes is a bit more complex - we need to express
+    // the second hit's coordinates in terms of the first hit's node.
+    else if (g_assemblyGraph->m_deBruijnGraphEdges.contains(possibleEdge)) {
+        DeBruijnEdge * edge = g_assemblyGraph->m_deBruijnGraphEdges[possibleEdge];
+        int overlap = edge->getOverlap();
+        hit1Start = hit1->m_nodeStart;
+        hit1End = hit1->m_nodeEnd;
+        int hit1NodeLen = hit1->m_node->getLength();
+        hit2Start = hit2->m_nodeStart + hit1NodeLen - overlap;
+        hit2End = hit2->m_nodeEnd + hit1NodeLen - overlap;
+    }
+    else
+        return 0;
+
+    int overlap = std::min(hit1End, hit2End) - std::max(hit1Start, hit2Start);
+    if (overlap > 0)
+        return overlap;
+    else
+        return 0;
+}
+
+
+//This function looks at the length of the given path and compares it to how
+//long the path should be for the hits it contains (i.e. if the path perfectly
+//matched up the query).
+double BlastQueryPath::getRelativeLengthDiscrepancy() const
+{
+    if (m_hits.empty())
+        return std::numeric_limits<double>::max();
+
+    int hitQueryLength = getHitQueryLength();
+
+    int discrepancy = m_path.getLength() - hitQueryLength;
+    return double(discrepancy) / hitQueryLength;
+}
+
+
+//This function gets the length of the path relative to the how long it should
+//be.  A value of 1 means a perfect match; less than 1 means it is too short;
+//more than 1 means it is too long.
+double BlastQueryPath::getRelativePathLength() const
+{
+    return double(m_path.getLength()) / getHitQueryLength();
+}
+
+
+//This function gets the difference between how long the path is vs how long it
+//should be.  A value of 0 means a perfect match; less than 0 means it is too
+//short; more than 0 means it is too long.
+int BlastQueryPath::getAbsolutePathLengthDifference() const
+{
+    return m_path.getLength() - getHitQueryLength();
+}
+
+
+QString BlastQueryPath::getAbsolutePathLengthDifferenceString(bool commas) const
+{
+    int lengthDisc = getAbsolutePathLengthDifference();
+    QString lengthDiscSign = "";
+    if (lengthDisc > 0)
+        lengthDiscSign = "+";
+    if (commas)
+        return lengthDiscSign + formatIntForDisplay(lengthDisc);
+    else
+        return lengthDiscSign + QString::number(lengthDisc);
+}
+
+
+//This function returns the fraction of the query that is covered by the entire
+//path.
+double BlastQueryPath::getPathQueryCoverage() const
+{
+    if (m_hits.empty())
+        return 0.0;
+
+    int queryStart = m_hits.front()->m_queryStart;
+    int queryEnd = m_hits.back()->m_queryEnd;
+    int queryLength = m_query->getLength();
+
+    int notIncluded = queryStart - 1;
+    notIncluded += queryLength - queryEnd;
+
+    return 1.0 - notIncluded / double(queryLength);
+}
+
+
+//This function returns the fraction of the query that is covered by hits in the
+//path.
+double BlastQueryPath::getHitsQueryCoverage() const
+{
+    return m_query->fractionCoveredByHits(&m_hits);
+}
+
+
+//This function returns the length of the query which is covered by the path.
+//It is returned in bp, whether or not the query is a protein or nucleotide
+//sequence.
+int BlastQueryPath::getHitQueryLength() const
+{
+    int queryStart = m_hits.front()->m_queryStart;
+    int queryEnd = m_hits.back()->m_queryEnd;
+    int hitQueryLength = queryEnd - queryStart + 1;
+
+    if (m_query->getSequenceType() == PROTEIN)
+        hitQueryLength *= 3;
+
+    return hitQueryLength;
+}
+
+
+
+int BlastQueryPath::getTotalHitMismatches() const
+{
+    int total = 0;
+    for (int i = 0; i < m_hits.size(); ++i)
+        total += m_hits[i]->m_numberMismatches;
+    return total;
+}
+
+int BlastQueryPath::getTotalHitGapOpens() const
+{
+    int total = 0;
+    for (int i = 0; i < m_hits.size(); ++i)
+        total += m_hits[i]->m_numberGapOpens;
+    return total;
+}
+
+
+//This function is used for sorting the paths for a query from best to worst.
+//it uses < to mean 'better than'.
+bool BlastQueryPath::operator<(BlastQueryPath const &other) const
+{
+    //First we compare using the E-value product.  This seems to value stronger
+    //hits as well as paths with fewer, longer hits.
+    SciNot aEValueProduct = getEvalueProduct();
+    SciNot bEValueProduct = other.getEvalueProduct();
+    if (aEValueProduct != bEValueProduct)
+        return aEValueProduct < bEValueProduct;
+
+    //If the code got here, then the two paths have the same e-value product,
+    //possibly because they contain the same hits, or possibly because they both
+    //contain hits so strong as to have an e-value of zero.
+
+    //Now we compare using mean percent identity.
+    double aMeanPercIdentity = getMeanHitPercIdentity();
+    double bMeanPercIdentity = other.getMeanHitPercIdentity();
+    if (aMeanPercIdentity != bMeanPercIdentity)
+        return aMeanPercIdentity > bMeanPercIdentity;
+
+    //Now we use the absolute value of the length discrepancy.
+    double aLengthDiscrepancy = fabs(getRelativeLengthDiscrepancy());
+    double bLengthDiscrepancy = fabs(other.getRelativeLengthDiscrepancy());
+    if (aLengthDiscrepancy != bLengthDiscrepancy)
+        return aLengthDiscrepancy < bLengthDiscrepancy;
+
+    //Now we use fraction of query covered by hits.
+    double aHitsQueryCoverage = getHitsQueryCoverage();
+    double bHitsQueryCoverage = other.getHitsQueryCoverage();
+    if (aHitsQueryCoverage != bHitsQueryCoverage)
+        return aHitsQueryCoverage > bHitsQueryCoverage;
+
+    return false;
+}
+
diff --git a/blast/blastquerypath.h b/blast/blastquerypath.h
new file mode 100644
index 0000000..d2da38c
--- /dev/null
+++ b/blast/blastquerypath.h
@@ -0,0 +1,61 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTQUERYPATH_H
+#define BLASTQUERYPATH_H
+
+#include "../graph/path.h"
+#include <QList>
+#include "blasthit.h"
+#include "../program/scinot.h"
+
+class BlastQuery;
+
+class BlastQueryPath
+{
+public:
+
+    //CREATORS
+    BlastQueryPath(Path path, BlastQuery * query);
+
+    //ACCESSORS
+    Path getPath() const {return m_path;}
+    QList<BlastHit *> getHits() const {return m_hits;}
+    SciNot getEvalueProduct() const;
+    double getMeanHitPercIdentity() const;
+    double getRelativeLengthDiscrepancy() const;
+    double getRelativePathLength() const;
+    int getAbsolutePathLengthDifference() const;
+    QString getAbsolutePathLengthDifferenceString(bool commas) const;
+    double getPathQueryCoverage() const;
+    double getHitsQueryCoverage() const;
+    int getTotalHitMismatches() const;
+    int getTotalHitGapOpens() const;
+
+    bool operator<(BlastQueryPath const &other) const;
+
+private:
+    Path m_path;
+    BlastQuery * m_query;
+    QList<BlastHit *> m_hits;
+
+    int getHitQueryLength() const;
+    int getHitOverlap(BlastHit * hit1, BlastHit * hit2) const;
+};
+
+#endif // BLASTQUERYPATH_H
diff --git a/blast/blastsearch.cpp b/blast/blastsearch.cpp
new file mode 100644
index 0000000..0531cb0
--- /dev/null
+++ b/blast/blastsearch.cpp
@@ -0,0 +1,374 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "blastsearch.h"
+#include "../graph/assemblygraph.h"
+#include <QDir>
+#include <QRegularExpression>
+#include "buildblastdatabaseworker.h"
+#include "runblastsearchworker.h"
+#include "../program/settings.h"
+#include <QApplication>
+#include "../graph/debruijnnode.h"
+#include "../program/memory.h"
+#include <math.h>
+
+BlastSearch::BlastSearch() :
+    m_blastQueries(), m_tempDirectory("bandage_temp/")
+{
+}
+
+BlastSearch::~BlastSearch()
+{
+    cleanUp();
+}
+
+void BlastSearch::clearBlastHits()
+{
+    m_allHits.clear();
+    m_blastQueries.clearSearchResults();
+    m_blastOutput = "";
+}
+
+void BlastSearch::cleanUp()
+{
+    clearBlastHits();
+    m_blastQueries.clearAllQueries();
+    emptyTempDirectory();
+}
+
+//This function uses the contents of m_blastOutput (the raw output from the
+//BLAST search) to construct the BlastHit objects.
+//It looks at the filters to possibly exclude hits which fail to meet user-
+//defined thresholds.
+void BlastSearch::buildHitsFromBlastOutput()
+{
+    QStringList blastHitList = m_blastOutput.split("\n", QString::SkipEmptyParts);
+
+    for (int i = 0; i < blastHitList.size(); ++i)
+    {
+        QString hitString = blastHitList[i];
+        QStringList alignmentParts = hitString.split('\t');
+
+        if (alignmentParts.size() < 12)
+            continue;
+
+        QString queryName = alignmentParts[0];
+        QString nodeLabel = alignmentParts[1];
+        double percentIdentity = alignmentParts[2].toDouble();
+        int alignmentLength = alignmentParts[3].toInt();
+        int numberMismatches = alignmentParts[4].toInt();
+        int numberGapOpens = alignmentParts[5].toInt();
+        int queryStart = alignmentParts[6].toInt();
+        int queryEnd = alignmentParts[7].toInt();
+        int nodeStart = alignmentParts[8].toInt();
+        int nodeEnd = alignmentParts[9].toInt();
+        SciNot eValue(alignmentParts[10]);
+        double bitScore = alignmentParts[11].toDouble();
+
+        //Only save BLAST hits that are on forward strands.
+        if (nodeStart > nodeEnd)
+            continue;
+
+        QString nodeName = getNodeNameFromString(nodeLabel);
+        DeBruijnNode * node;
+        if (g_assemblyGraph->m_deBruijnGraphNodes.contains(nodeName))
+            node = g_assemblyGraph->m_deBruijnGraphNodes[nodeName];
+        else
+            continue;
+
+        BlastQuery * query = g_blastSearch->m_blastQueries.getQueryFromName(queryName);
+        if (query == 0)
+            continue;
+
+        QSharedPointer<BlastHit> hit(new BlastHit(query, node, percentIdentity, alignmentLength,
+                                                  numberMismatches, numberGapOpens, queryStart, queryEnd,
+                                                  nodeStart, nodeEnd, eValue, bitScore));
+
+        //Check the user-defined filters.
+        if (g_settings->blastAlignmentLengthFilter.on &&
+                alignmentLength < g_settings->blastAlignmentLengthFilter)
+            continue;
+        if (g_settings->blastQueryCoverageFilter.on)
+        {
+            double hitCoveragePercentage = 100.0 * hit->getQueryCoverageFraction();
+            if (hitCoveragePercentage < g_settings->blastQueryCoverageFilter)
+                continue;
+        }
+        if (g_settings->blastIdentityFilter.on &&
+                percentIdentity < g_settings->blastIdentityFilter)
+            continue;
+        if (g_settings->blastEValueFilter.on &&
+                eValue > g_settings->blastEValueFilter)
+                continue;
+        if (g_settings->blastBitScoreFilter.on &&
+                bitScore < g_settings->blastBitScoreFilter)
+            continue;
+
+        m_allHits.push_back(hit);
+        query->addHit(hit);
+    }
+}
+
+
+//This function looks at each BLAST query and tries to find a path through
+//the graph which covers the maximal amount of the query.
+void BlastSearch::findQueryPaths()
+{
+    m_blastQueries.findQueryPaths();
+}
+
+
+
+QString BlastSearch::getNodeNameFromString(QString nodeString)
+{
+    QStringList nodeStringParts = nodeString.split("_");
+
+    //The node string format should look like this:
+    //NODE_nodename_length_123_cov_1.23
+
+    if (nodeStringParts.size() < 6)
+        return "";
+
+    if (nodeStringParts.size() == 6)
+        return nodeStringParts[1];
+
+    //If the code got here, there are more than 6 parts.  This means there are
+    //underscores in the node name (happens a lot with Trinity graphs).  So we
+    //need to pull out the parts which consitute the name.
+    int underscoreCount = nodeStringParts.size() - 6;
+    QString nodeName = "";
+    for (int i = 0; i <= underscoreCount; ++i)
+    {
+        nodeName += nodeStringParts[1+i];
+        if (i < underscoreCount)
+            nodeName += "_";
+    }
+    return nodeName;
+}
+
+
+#ifdef Q_OS_WIN32
+//On Windows, we use the WHERE command to find a program.
+bool BlastSearch::findProgram(QString programName, QString * command)
+{
+    QString findCommand = "WHERE " + programName;
+    QProcess find;
+    find.start(findCommand);
+    find.waitForFinished();
+    *command = programName;
+    return (find.exitCode() == 0);
+}
+
+#else
+//On Mac/Linux we use the which command to find a program.
+bool BlastSearch::findProgram(QString programName, QString * command)
+{
+    QString findCommand = "which " + programName;
+    QProcess find;
+
+    //On Mac, it's necessary to adjust the PATH variable in order
+    //for which to work.
+#ifdef Q_OS_MAC
+    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+    QStringList envlist = env.toStringList();
+
+    //Add some paths to the process environment
+    envlist.replaceInStrings(QRegularExpression("^(?i)PATH=(.*)"), "PATH="
+                                                                   "/usr/bin:"
+                                                                   "/bin:"
+                                                                   "/usr/sbin:"
+                                                                   "/sbin:"
+                                                                   "/opt/local/bin:"
+                                                                   "/usr/local/bin:"
+                                                                   "$HOME/bin:"
+                                                                   "/usr/local/ncbi/blast/bin:"
+                                                                   "\\1");
+    find.setEnvironment(envlist);
+#endif
+
+    find.start(findCommand);
+    find.waitForFinished();
+
+    //On a Mac, we need to use the full path to the program.
+#ifdef Q_OS_MAC
+    *command = QString(find.readAll()).simplified();
+#else
+    *command = programName;
+#endif
+
+    return (find.exitCode() == 0);
+}
+#endif
+
+
+
+void BlastSearch::clearSomeQueries(std::vector<BlastQuery *> queriesToRemove)
+{
+    //Remove any hits that are for queries that will be deleted.
+    QList< QSharedPointer<BlastHit> >::iterator i = m_allHits.begin();
+    while (i != m_allHits.end())
+    {
+        BlastQuery * hitQuery = (*i)->m_query;
+        bool hitIsForDeletedQuery = (std::find(queriesToRemove.begin(), queriesToRemove.end(), hitQuery) != queriesToRemove.end());
+        if (hitIsForDeletedQuery)
+            i = m_allHits.erase(i);
+        else
+            ++i;
+    }
+
+    //Now actually delete the queries.
+    m_blastQueries.clearSomeQueries(queriesToRemove);
+}
+
+
+
+void BlastSearch::emptyTempDirectory()
+{
+    //Safety checks
+    if (g_blastSearch->m_tempDirectory == "")
+        return;
+    if (!g_blastSearch->m_tempDirectory.contains("bandage_temp"))
+        return;
+
+    QDir tempDirectory(m_tempDirectory);
+    tempDirectory.setNameFilters(QStringList() << "*.*");
+    tempDirectory.setFilter(QDir::Files);
+    foreach(QString dirFile, tempDirectory.entryList())
+        tempDirectory.remove(dirFile);
+}
+
+
+//This function carries out the entire BLAST search procedure automatically, without user input.
+//It returns an error string which is empty if all goes well.
+QString BlastSearch::doAutoBlastSearch()
+{
+    cleanUp();
+
+    QString makeblastdbCommand;
+    if (!findProgram("makeblastdb", &makeblastdbCommand))
+        return "Error: The program makeblastdb was not found.  Please install NCBI BLAST to use this feature.";
+
+    BuildBlastDatabaseWorker buildBlastDatabaseWorker(makeblastdbCommand);
+    buildBlastDatabaseWorker.buildBlastDatabase();
+    if (buildBlastDatabaseWorker.m_error != "")
+        return buildBlastDatabaseWorker.m_error;
+
+    loadBlastQueriesFromFastaFile(g_settings->blastQueryFilename);
+
+    QString blastnCommand;
+    if (!findProgram("blastn", &blastnCommand))
+        return "Error: The program blastn was not found.  Please install NCBI BLAST to use this feature.";
+    QString tblastnCommand;
+    if (!findProgram("tblastn", &tblastnCommand))
+        return "Error: The program tblastn was not found.  Please install NCBI BLAST to use this feature.";
+
+    RunBlastSearchWorker runBlastSearchWorker(blastnCommand, tblastnCommand, g_settings->blastSearchParameters);
+    runBlastSearchWorker.runBlastSearch();
+    if (runBlastSearchWorker.m_error != "")
+        return runBlastSearchWorker.m_error;
+
+    blastQueryChanged("all");
+
+    return "";
+}
+
+
+//This function returns the number of queries loaded from the FASTA file.
+int BlastSearch::loadBlastQueriesFromFastaFile(QString fullFileName)
+{
+    int queriesBefore = int(g_blastSearch->m_blastQueries.m_queries.size());
+
+    std::vector<QString> queryNames;
+    std::vector<QByteArray> querySequences;
+    AssemblyGraph::readFastaFile(fullFileName, &queryNames, &querySequences);
+
+    for (size_t i = 0; i < queryNames.size(); ++i)
+    {
+        QApplication::processEvents();
+
+        //We only use the part of the query name up to the first space.
+        QStringList queryNameParts = queryNames[i].split(" ");
+        QString queryName;
+        if (queryNameParts.size() > 0)
+            queryName = cleanQueryName(queryNameParts[0]);
+
+        g_blastSearch->m_blastQueries.addQuery(new BlastQuery(queryName,
+                                                              querySequences[i]));
+    }
+
+    int queriesAfter = int(g_blastSearch->m_blastQueries.m_queries.size());
+    return queriesAfter - queriesBefore;
+}
+
+
+QString BlastSearch::cleanQueryName(QString queryName)
+{
+    //Replace whitespace with underscores
+    queryName = queryName.replace(QRegExp("\\s"), "_");
+
+    //Remove any dots from the end of the query name.  BLAST doesn't
+    //include them in its results, so if we don't remove them, then
+    //we won't be able to find a match between the query name and
+    //the BLAST hit.
+    while (queryName.length() > 0 && queryName[queryName.size() - 1] == '.')
+        queryName = queryName.left(queryName.size() - 1);
+
+    return queryName;
+}
+
+void BlastSearch::blastQueryChanged(QString queryName)
+{
+    g_assemblyGraph->clearAllBlastHitPointers();
+
+    std::vector<BlastQuery *> queries;
+
+    //If "all" is selected, then we'll display each of the BLAST queries
+    if (queryName == "all")
+        queries = g_blastSearch->m_blastQueries.m_queries;
+
+    //If only one query is selected, then just display that one.
+    else
+    {
+        BlastQuery * query = g_blastSearch->m_blastQueries.getQueryFromName(queryName);
+        if (query != 0)
+            queries.push_back(query);
+    }
+
+    //We now filter out any queries that have been hidden by the user.
+    std::vector<BlastQuery *> shownQueries;
+    for (size_t i = 0; i < queries.size(); ++i)
+    {
+        BlastQuery * query = queries[i];
+        if (query->isShown())
+            shownQueries.push_back(query);
+    }
+
+    //Add the blast hit pointers to nodes that have a hit for
+    //the selected target(s).
+    for (size_t i = 0; i < shownQueries.size(); ++i)
+    {
+        BlastQuery * query = shownQueries[i];
+        for (int j = 0; j < g_blastSearch->m_allHits.size(); ++j)
+        {
+            BlastHit * hit = g_blastSearch->m_allHits[j].data();
+            if (hit->m_query == query)
+                hit->m_node->addBlastHit(hit);
+        }
+    }
+}
diff --git a/blast/blastsearch.h b/blast/blastsearch.h
new file mode 100644
index 0000000..9137df9
--- /dev/null
+++ b/blast/blastsearch.h
@@ -0,0 +1,63 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTSEARCH_H
+#define BLASTSEARCH_H
+
+#include "blasthit.h"
+#include "blastqueries.h"
+#include <vector>
+#include <QString>
+#include <QList>
+#include <QSharedPointer>
+#include "../program/scinot.h"
+
+//This is a class to hold all BLAST search related stuff.
+//An instance of it is made available to the whole program
+//as a global.
+
+class BlastSearch
+{
+public:
+    BlastSearch();
+    ~BlastSearch();
+
+    BlastQueries m_blastQueries;
+    QString m_blastOutput;
+    bool m_cancelBuildBlastDatabase;
+    bool m_cancelRunBlastSearch;
+    QProcess * m_makeblastdb;
+    QProcess * m_blast;
+    QString m_tempDirectory;
+    QList< QSharedPointer<BlastHit> > m_allHits;
+
+    void clearBlastHits();
+    void cleanUp();
+    void buildHitsFromBlastOutput();
+    void findQueryPaths();
+    static QString getNodeNameFromString(QString nodeString);
+    bool findProgram(QString programName, QString * command);
+    void clearSomeQueries(std::vector<BlastQuery *> queriesToRemove);
+    void emptyTempDirectory();
+    QString doAutoBlastSearch();
+    int loadBlastQueriesFromFastaFile(QString fullFileName);
+    QString cleanQueryName(QString queryName);
+    void blastQueryChanged(QString queryName);
+};
+
+#endif // BLASTSEARCH_H
diff --git a/blast/buildblastdatabaseworker.cpp b/blast/buildblastdatabaseworker.cpp
new file mode 100644
index 0000000..d5fcf2d
--- /dev/null
+++ b/blast/buildblastdatabaseworker.cpp
@@ -0,0 +1,102 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "buildblastdatabaseworker.h"
+#include <QProcess>
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include <QFile>
+#include <QTextStream>
+#include <QMapIterator>
+#include "../graph/debruijnnode.h"
+#include "../graph/assemblygraph.h"
+#include "blastsearch.h"
+
+BuildBlastDatabaseWorker::BuildBlastDatabaseWorker(QString makeblastdbCommand) :
+    m_makeblastdbCommand(makeblastdbCommand)
+{
+}
+
+void BuildBlastDatabaseWorker::buildBlastDatabase()
+{
+    g_blastSearch->m_cancelBuildBlastDatabase = false;
+
+    QFile file(g_blastSearch->m_tempDirectory + "all_nodes.fasta");
+    file.open(QIODevice::WriteOnly | QIODevice::Text);
+    QTextStream out(&file);
+
+    QMapIterator<QString, DeBruijnNode*> i(g_assemblyGraph->m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        if (g_blastSearch->m_cancelBuildBlastDatabase)
+        {
+            emit finishedBuild("Build cancelled.");
+            return;
+        }
+
+        i.next();
+        DeBruijnNode * node = i.value();
+        out << node->getFasta(true, false, false);
+    }
+    file.close();
+
+    // Make sure the graph has sequences to BLAST.
+    bool atLeastOneSequence = false;
+    QMapIterator<QString, DeBruijnNode*> j(g_assemblyGraph->m_deBruijnGraphNodes);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnNode * node = j.value();
+        if (!node->sequenceIsMissing())
+        {
+            atLeastOneSequence = true;
+            break;
+        }
+    }
+    if (!atLeastOneSequence)
+    {
+        m_error = "Cannot build the BLAST database as this graph contains no sequences";
+        emit finishedBuild(m_error);
+        return;
+    }
+
+    QString fullMakeblastdbCommand = m_makeblastdbCommand + " -in " + g_blastSearch->m_tempDirectory + "all_nodes.fasta " + "-dbtype nucl";
+    g_blastSearch->m_makeblastdb = new QProcess();
+    g_blastSearch->m_makeblastdb->start(fullMakeblastdbCommand);
+
+    bool finished = g_blastSearch->m_makeblastdb->waitForFinished(-1);
+
+    if (g_blastSearch->m_makeblastdb->exitCode() != 0 || !finished)
+    {
+        m_error = "There was a problem building the BLAST database";
+        QString stdErr = g_blastSearch->m_makeblastdb->readAllStandardError();
+        if (stdErr.length() > 0)
+            m_error += ":\n\n" + stdErr;
+        else
+            m_error += ".";
+    }
+    else if (g_blastSearch->m_cancelBuildBlastDatabase)
+        m_error = "Build cancelled.";
+    else
+        m_error = "";
+
+    emit finishedBuild(m_error);
+
+    g_blastSearch->m_makeblastdb->deleteLater();
+    g_blastSearch->m_makeblastdb = 0;
+}
diff --git a/blast/buildblastdatabaseworker.h b/blast/buildblastdatabaseworker.h
new file mode 100644
index 0000000..7971ed7
--- /dev/null
+++ b/blast/buildblastdatabaseworker.h
@@ -0,0 +1,48 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BUILDBLASTDATABASEWORKER_H
+#define BUILDBLASTDATABASEWORKER_H
+
+#include <QObject>
+#include <QProcess>
+
+//This class carries out the task of running makeblastdb on
+//the graph's nodes.
+//It is a separate class because when run from the GUI, this
+//process takes place in a separate thread.
+
+class BuildBlastDatabaseWorker : public QObject
+{
+    Q_OBJECT
+
+public:
+    BuildBlastDatabaseWorker(QString makeblastdbCommand);
+    QString m_error;
+
+private:
+    QString m_makeblastdbCommand;
+
+public slots:
+    void buildBlastDatabase();
+
+signals:
+    void finishedBuild(QString error);
+};
+
+#endif // BUILDBLASTDATABASEWORKER_H
diff --git a/blast/runblastsearchworker.cpp b/blast/runblastsearchworker.cpp
new file mode 100644
index 0000000..851cd4e
--- /dev/null
+++ b/blast/runblastsearchworker.cpp
@@ -0,0 +1,113 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "runblastsearchworker.h"
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include "blastsearch.h"
+#include "../program/memory.h"
+
+
+RunBlastSearchWorker::RunBlastSearchWorker(QString blastnCommand, QString tblastnCommand, QString parameters) :
+    m_blastnCommand(blastnCommand), m_tblastnCommand(tblastnCommand), m_parameters(parameters)
+{
+
+}
+
+
+void RunBlastSearchWorker::runBlastSearch()
+{
+    g_blastSearch->m_cancelRunBlastSearch = false;
+
+    bool success;
+
+    if (g_blastSearch->m_blastQueries.getQueryCount(NUCLEOTIDE) > 0)
+    {
+        g_blastSearch->m_blastOutput += runOneBlastSearch(NUCLEOTIDE, &success);
+        if (!success)
+            return;
+    }
+
+    if (g_blastSearch->m_blastQueries.getQueryCount(PROTEIN) > 0 && !g_blastSearch->m_cancelRunBlastSearch)
+    {
+        g_blastSearch->m_blastOutput += runOneBlastSearch(PROTEIN, &success);
+        if (!success)
+            return;
+    }
+
+    if (g_blastSearch->m_cancelRunBlastSearch)
+    {
+        m_error = "BLAST search cancelled.";
+        emit finishedSearch(m_error);
+        return;
+    }
+
+    //If the code got here, then the search completed successfully.
+    g_blastSearch->buildHitsFromBlastOutput();
+    g_blastSearch->findQueryPaths();
+    g_blastSearch->m_blastQueries.searchOccurred();
+    m_error = "";
+    emit finishedSearch(m_error);
+}
+
+
+QString RunBlastSearchWorker::runOneBlastSearch(SequenceType sequenceType, bool * success)
+{
+    QString fullBlastCommand;
+    if (sequenceType == NUCLEOTIDE)
+        fullBlastCommand = m_blastnCommand + " -query " +g_blastSearch-> m_tempDirectory + "nucl_queries.fasta ";
+    else
+        fullBlastCommand = m_tblastnCommand + " -query " + g_blastSearch->m_tempDirectory + "prot_queries.fasta ";
+    fullBlastCommand += "-db " + g_blastSearch->m_tempDirectory + "all_nodes.fasta -outfmt 6";
+
+    QString extraCommandLineOptions = m_parameters;
+    fullBlastCommand += " " + extraCommandLineOptions;
+
+    g_blastSearch->m_blast = new QProcess();
+    g_blastSearch->m_blast->start(fullBlastCommand);
+
+    bool finished = g_blastSearch->m_blast->waitForFinished(-1);
+
+    if (g_blastSearch->m_blast->exitCode() != 0 || !finished)
+    {
+        if (g_blastSearch->m_cancelRunBlastSearch)
+        {
+            m_error = "BLAST search cancelled.";
+            emit finishedSearch(m_error);
+        }
+        else
+        {
+            m_error = "There was a problem running the BLAST search";
+            QString stdErr = g_blastSearch->m_blast->readAllStandardError();
+            if (stdErr.length() > 0)
+                m_error += ":\n\n" + stdErr;
+            else
+                m_error += ".";
+            emit finishedSearch(m_error);
+        }
+        *success = false;
+        return "";
+    }
+
+    QString blastOutput = g_blastSearch->m_blast->readAllStandardOutput();
+    g_blastSearch->m_blast->deleteLater();
+    g_blastSearch->m_blast = 0;
+
+    *success = true;
+    return blastOutput;
+}
diff --git a/blast/runblastsearchworker.h b/blast/runblastsearchworker.h
new file mode 100644
index 0000000..d4a3e53
--- /dev/null
+++ b/blast/runblastsearchworker.h
@@ -0,0 +1,53 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef RUNBLASTSEARCHWORKER_H
+#define RUNBLASTSEARCHWORKER_H
+
+#include <QObject>
+#include <QProcess>
+#include <QString>
+#include "../program/globals.h"
+
+//This class carries out the task of running blastn and/or
+//tblastn.
+//It is a separate class because when run from the GUI, this
+//process takes place in a separate thread.
+
+class RunBlastSearchWorker : public QObject
+{
+    Q_OBJECT
+
+public:
+    RunBlastSearchWorker(QString blastnCommand, QString tblastnCommand, QString parameters);
+    QString m_error;
+
+private:
+    QString m_blastnCommand;
+    QString m_tblastnCommand;
+    QString m_parameters;
+    QString runOneBlastSearch(SequenceType sequenceType, bool * success);
+
+public slots:
+    void runBlastSearch();
+
+signals:
+    void finishedSearch(QString error);
+};
+
+#endif // RUNBLASTSEARCHWORKER_H
diff --git a/build_scripts/bandage_build_linux.sh b/build_scripts/bandage_build_linux.sh
new file mode 100755
index 0000000..a59470a
--- /dev/null
+++ b/build_scripts/bandage_build_linux.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+# This is the script I use on my Ubuntu and CentOS virtual machines to build the public release of
+# Bandage. It produces an app bundle ready for deployment. It requires that the 'sample_LastGraph'
+# and 'dependencies' files are in the current directory.
+
+# This script will by default build Bandage twice: once as a statically-linked executable and once
+# as a dynamically-linked executable. If the user passes -s or -d, then it will build only the
+# static or dynamic variety, respectively. The two different varieties use two separate versions of
+# Qt. The dynamic version uses an older Qt version, as this will be compatible with more Linux
+# systems. The static version uses a current version of Qt.
+
+DYNAMIC_QMAKE="$HOME/Qt/5.2.1/gcc_64/bin/qmake"
+STATIC_QMAKE="$HOME/Desktop/qt/build/5.6.0/qtbase/bin/qmake"
+
+# Parse the arguments. If there are none, build both static and dynamic.
+DYNAMIC_BUILD=false
+STATIC_BUILD=false
+while getopts "ds" opt; do
+  case $opt in
+    d)
+      DYNAMIC_BUILD=true
+      ;;
+    s)
+      STATIC_BUILD=true
+      ;;
+  esac
+done
+if ! $DYNAMIC_BUILD && ! $STATIC_BUILD; then
+  STATIC_BUILD=true
+  DYNAMIC_BUILD=true
+fi
+
+# If a 'Bandage' directory already exists, then this script will assume it is the Bandage source
+# code and use it. If not, it will clone the master branch from GitHub.
+if [ ! -d "Bandage" ]; then
+  git clone https://github.com/rrwick/Bandage
+fi
+
+# Get the Bandage version number from the main.cpp file and replace its dots with underscores.
+VERSION_LINE=$(grep "setApplicationVersion" Bandage/program/main.cpp)
+IFS='"' read -ra ADDR <<< "$VERSION_LINE"
+VERSION="${ADDR[1]}"
+VERSION=${VERSION//\./_}
+
+# Determine the Linux distro (just used for naming the final zip files)
+. /etc/lsb-release
+DISTRO=$DISTRIB_ID
+if [ -z "$DISTRO" ] &&  [ -f /etc/debian_version ]; then
+  DISTRO="Debian"
+elif [ -z "$DISTRO" ] &&  [ -f /etc/fedora-release ]; then
+  DISTRO="Fedora"
+elif [ -z "$DISTRO" ] &&  [ -f /etc/centos-release ]; then
+  DISTRO="CentOS"
+elif [ -z "$DISTRO" ] &&  [ -f /etc/gentoo-release ]; then
+  DISTRO="Gentoo"
+fi
+if [ -z "$DISTRO" ]; then
+  DISTRO="Linux"
+fi
+BASE_ZIP_NAME="Bandage_$DISTRO"
+
+if $STATIC_BUILD; then
+  # Build the statically-linked version of Bandage.
+  cp -r Bandage/ Bandage-static/
+  cd Bandage-static/
+  $STATIC_QMAKE Bandage.pro
+  make
+  chmod +x Bandage
+  cd ..
+
+  # Zip static Bandage
+  STATIC_ZIP=$BASE_ZIP_NAME
+  STATIC_ZIP+="_static_v$VERSION.zip"
+  zip -j $STATIC_ZIP Bandage-static/Bandage
+  zip $STATIC_ZIP sample_LastGraph
+  rm -rf Bandage-static/
+fi
+
+if $DYNAMIC_BUILD; then
+  # Build the dynamically-linked version of Bandage.
+  cp -r Bandage/ Bandage-dynamic/
+  cd Bandage-dynamic/
+  $DYNAMIC_QMAKE Bandage.pro
+  make
+  chmod +x Bandage
+  cd ..
+
+  # Zip dynamic Bandage
+  DYNAMIC_ZIP=$BASE_ZIP_NAME
+  DYNAMIC_ZIP+="_dynamic_v$VERSION.zip"
+  zip -j $DYNAMIC_ZIP Bandage-dynamic/Bandage
+  zip $DYNAMIC_ZIP sample_LastGraph
+  zip $DYNAMIC_ZIP dependencies
+  rm -rf Bandage-dynamic/
+fi
+
+rm -rf Bandage/
diff --git a/build_scripts/bandage_build_mac.sh b/build_scripts/bandage_build_mac.sh
new file mode 100755
index 0000000..7c3a6dd
--- /dev/null
+++ b/build_scripts/bandage_build_mac.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# This is the script I use on my OS X 10.8 virtual machine to build the public release of Bandage.
+# It produces an app bundle ready for deployment. It requires that sample_LastGraph is in the
+# current directory.
+
+# Find the Qt path automatically. This assumes it is installed in ~/Qt/ and is a 5.* version.
+QT_PATH=$(find $HOME/Qt -maxdepth 1 -name "5*" | sort | tail -n 1)
+
+# If a 'Bandage' directory already exists, then this script will use assume it is the Bandage
+# source code and use it. If not, it will clone the master branch from GitHub.
+if [ ! -d "Bandage" ]; then
+  git clone https://github.com/rrwick/Bandage
+fi
+
+# Build Bandage.
+cd Bandage/
+$QT_PATH/clang_64/bin/qmake
+make
+
+# Add the necessary libraries so Bandage can be deployed.
+$QT_PATH/clang_64/bin/macdeployqt Bandage.app
+cp $QT_PATH/clang_64/plugins/platforms/libqminimal.dylib Bandage.app/Contents/PlugIns/platforms/libqminimal.dylib
+
+# Get the Bandage version number from the main.cpp file and replace its dots with underscores.
+cd ..
+VERSION_LINE=$(grep "setApplicationVersion" Bandage/program/main.cpp)
+IFS='"' read -ra ADDR <<< "$VERSION_LINE"
+VERSION="${ADDR[1]}"
+VERSION=${VERSION//\./_}
+
+# Zip Bandage, add the sample graph and clean up.
+ZIP="Bandage_Mac_v$VERSION.zip"
+ditto -c -k --sequesterRsrc --keepParent Bandage/Bandage.app $ZIP
+zip $ZIP sample_LastGraph 
+rm -rf Bandage/
diff --git a/build_scripts/bandage_build_windows.bat b/build_scripts/bandage_build_windows.bat
new file mode 100644
index 0000000..631b2bc
--- /dev/null
+++ b/build_scripts/bandage_build_windows.bat
@@ -0,0 +1,43 @@
+echo off
+
+rem This is the script I use on my Windows 7 virtual machine to build the public release of Bandage.
+rem Bandage. It produces a directory ready for deployment. It requires that sample_LastGraph is in
+rem the current directory.
+
+rem These variables must be set to the correct paths and values for your system.
+set QT_PATH=C:\Qt\5.6
+set MSVC_PATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0
+set MSVC_VERSION=msvc2015_64
+set MSVC_VERSION_NUM=140
+set GIT_PATH=C:\Program Files\Git\bin\git
+set ZIP_PATH=C:\Program Files\7-Zip\7z.exe
+
+rem Set up the MSVC compiler.
+call "%MSVC_PATH%\VC\vcvarsall.bat" x86_amd64
+
+rem If a 'Bandage' directory already exists, then this script will use assume it is the Bandage
+rem source code and use it. If not, it will clone the master branch from GitHub.
+if not exist Bandage\ call "%GIT_PATH%" clone https://github.com/rrwick/Bandage.git
+call cd Bandage\
+call "%QT_PATH%\%MSVC_VERSION%\bin\qmake.exe"
+call "%QT_PATH%\..\Tools\QtCreator\bin\jom.exe"
+call cd ..
+
+rem Get the Bandage version number from the main.cpp file and replace its dots with underscores.
+for /f %%i in ('findstr setApplicationVersion Bandage\program\main.cpp') do set VERSION_LINE=%%i
+set VERSION_LINE=%VERSION_LINE:.=_%
+set VERSION_LINE=%VERSION_LINE:"=;%
+for /f "tokens=2 delims=;" %%G IN ("%VERSION_LINE%") DO set VERSION=%%G
+
+rem Delete all of the source and build files
+call move Bandage\release\Bandage.exe Bandage.exe
+call rmdir Bandage\ /S /Q
+call mkdir Bandage\
+call move Bandage.exe Bandage\Bandage.exe
+
+rem Add the necessary libraries so Bandage can be deployed.
+call "%QT_PATH%\%MSVC_VERSION%\bin\windeployqt.exe" Bandage\Bandage.exe
+
+rem Zip Bandage with the sample graph and clean up.
+call "%ZIP_PATH%" a -tzip Bandage_Windows_v%VERSION%.zip Bandage\ sample_LastGraph installation.txt
+call rmdir Bandage\ /S /Q
diff --git a/build_scripts/bandage_build_windows_32bit.bat b/build_scripts/bandage_build_windows_32bit.bat
new file mode 100644
index 0000000..6939c8c
--- /dev/null
+++ b/build_scripts/bandage_build_windows_32bit.bat
@@ -0,0 +1,43 @@
+echo off
+
+rem This is the script I use on my Windows 7 virtual machine to build the public release of Bandage.
+rem Bandage. It produces a directory ready for deployment. It requires that sample_LastGraph is in
+rem the current directory.
+
+rem These variables must be set to the correct paths and values for your system.
+set QT_PATH=C:\Qt\5.6
+set MSVC_PATH=C:\Program Files\Microsoft Visual Studio 14.0
+set MSVC_VERSION=msvc2015
+set MSVC_VERSION_NUM=140
+set GIT_PATH=C:\Program Files\Git\bin\git
+set ZIP_PATH=C:\Program Files\7-Zip\7z.exe
+
+rem Set up the MSVC compiler.
+call "%MSVC_PATH%\VC\vcvarsall.bat" x86
+
+rem If a 'Bandage' directory already exists, then this script will use assume it is the Bandage
+rem source code and use it. If not, it will clone the master branch from GitHub.
+if not exist Bandage\ call "%GIT_PATH%" clone https://github.com/rrwick/Bandage.git
+call cd Bandage\
+call "%QT_PATH%\%MSVC_VERSION%\bin\qmake.exe"
+call "%QT_PATH%\..\Tools\QtCreator\bin\jom.exe"
+call cd ..
+
+rem Get the Bandage version number from the main.cpp file and replace its dots with underscores.
+for /f %%i in ('findstr setApplicationVersion Bandage\program\main.cpp') do set VERSION_LINE=%%i
+set VERSION_LINE=%VERSION_LINE:.=_%
+set VERSION_LINE=%VERSION_LINE:"=;%
+for /f "tokens=2 delims=;" %%G IN ("%VERSION_LINE%") DO set VERSION=%%G
+
+rem Delete all of the source and build files
+call move Bandage\release\Bandage.exe Bandage.exe
+call rmdir Bandage\ /S /Q
+call mkdir Bandage\
+call move Bandage.exe Bandage\Bandage.exe
+
+rem Add the necessary libraries so Bandage can be deployed.
+call "%QT_PATH%\%MSVC_VERSION%\bin\windeployqt.exe" Bandage\Bandage.exe
+
+rem Zip Bandage with the sample graph and clean up.
+call "%ZIP_PATH%" a -tzip Bandage_Windows_32bit_v%VERSION%.zip Bandage\ sample_LastGraph installation.txt
+call rmdir Bandage\ /S /Q
diff --git a/build_scripts/installation.txt b/build_scripts/installation.txt
new file mode 100755
index 0000000..eded3b4
--- /dev/null
+++ b/build_scripts/installation.txt
@@ -0,0 +1 @@
+Bandage requires the Visual C++ Redistributable for Visual Studio 2015. If you do not have this already installed, you will get an error message when attempting to run Bandage.exe. In this case, you must first run vcredist_x64.exe to install the required libraries.
\ No newline at end of file
diff --git a/build_scripts/qt_static_build_centos.sh b/build_scripts/qt_static_build_centos.sh
new file mode 100755
index 0000000..e17c9e2
--- /dev/null
+++ b/build_scripts/qt_static_build_centos.sh
@@ -0,0 +1,131 @@
+#!/bin/bash
+
+# Run this script as root (using su)
+
+# This script builds a static version of Qt. It was originally writen by Lennart Rolland and taken
+# from here: https://stackoverflow.com/questions/24275551/
+# I modified it to work with CentOS and Qt 5.6 and move around some QtSvg stuff for Bandage.
+
+# Change this to the desired version.
+VER="5.6.0"
+
+# Dependencies:
+yum install libxcb libxcb-devel libXrender libXrender-devel xcb-util-wm xcb-util-wm-devel xcb-util xcb-util-devel xcb-util-image xcb-util-image-devel xcb-util-keysyms xcb-util-keysyms-devel fontconfig-devel freetype-devel libX11-devel libXext-devel libXfixes-devel libXi-devel mesa-libGLw gtkglext-devel
+
+VER2="${VER%.*}"
+WSRC="http://download.qt.io/official_releases/qt/$VER2/$VER/single/qt-everywhere-opensource-src-$VER.tar.xz"
+B=$(pwd) # Current dir (allows this script to be called from another dir)
+Q="$B/qt" # Base folder for the whole operation
+SRC="$Q/src/$VER" # The uncompressed source
+O="$Q/build/$VER" # The actual shadow dir
+XZ="$Q/xz/qt-$VER.tar.xz" # The tar.xz archive
+J=$(grep -c ^processor /proc/cpuinfo) # Parallel make, number of cores
+LOG="$O/log.txt" # Build log file
+
+# My configuration options for qt change to your hearts content, but make sure to clean out your current build before using it.
+OPTS=""
+OPTS+=" -release"
+OPTS+=" -optimized-tools" 
+OPTS+=" -opensource"
+OPTS+=" -confirm-license"
+OPTS+=" -c++std c++11"
+OPTS+=" -static"
+OPTS+=" -largefile"
+OPTS+=" -no-sql-db2"
+OPTS+=" -no-sql-ibase"
+OPTS+=" -no-sql-mysql"
+OPTS+=" -no-sql-oci"
+OPTS+=" -no-sql-odbc"
+OPTS+=" -no-sql-psql"
+OPTS+=" -no-sql-sqlite"
+OPTS+=" -no-sql-sqlite2"
+OPTS+=" -no-sql-tds"
+OPTS+=" -platform linux-g++"
+OPTS+=" -qt-zlib"
+OPTS+=" -no-gif"
+OPTS+=" -qt-libpng"
+OPTS+=" -qt-libjpeg"
+OPTS+=" -qt-freetype"
+OPTS+=" -qt-harfbuzz"
+OPTS+=" -qt-pcre"
+OPTS+=" -qt-xcb"
+OPTS+=" -qt-xkbcommon-x11" 
+OPTS+=" -no-glib"
+OPTS+=" -no-gtkstyle"
+OPTS+=" -nomake examples"
+OPTS+=" -nomake tests"
+OPTS+=" -no-compile-examples"
+OPTS+=" -silent"
+OPTS+=" -no-nis"
+OPTS+=" -no-cups"
+OPTS+=" -no-iconv"
+OPTS+=" -no-icu"
+OPTS+=" -no-dbus"
+OPTS+=" -no-eglfs"
+OPTS+=" -no-kms"
+OPTS+=" -no-directfb"
+OPTS+=" -no-linuxfb"
+OPTS+=" -qpa xcb"
+OPTS+=" -opengl desktop"
+
+# The modules that are relevant for me. Please observe that THE ORDER MATTERS! I would add one module at the time and see how it complains when you try to build it.
+MODS="qtx11extras qtimageformats qtsvg qtmultimedia"
+
+# Just echo out the current state before starting the configuration and make
+echo "B: $B"
+echo "MODS: $MODS"
+echo "OPTS: $OPTS"
+echo "Q: $Q"
+echo "O: $O"
+echo "XZ: $XZ"
+echo "SRC: $SRC"
+echo "J: $J"
+echo "LOG: $LOG"
+
+# Create dirs
+mkdir -p "$Q"
+mkdir -p "$Q/xz"
+mkdir -p "$SRC"
+mkdir -p "$O"
+
+# Start log
+date > $LOG
+
+# Download source archive
+[ ! -f $XZ ] && wget "$WSRC" -c -O "$XZ"
+
+# Unpack source archive
+[ ! -x $SRC/configure ] && tar pxf "$XZ" --strip=1 -C "$SRC" "qt-everywhere-opensource-src-$VER" 
+
+# Set some variables
+export QMAKESPEC=linux-g++
+export QTDIR=$O/qtbase
+export PATH=$O/qtbase/bin:$PATH
+
+# Configure qt build
+cd "$O"
+MAKEFLAGS=-j$J "$SRC/configure" $OPTS
+
+# Build qtbase with new config (results in the basic qt libs plus a new qmake that you can use for building the rest of the modules and your own projects).
+# TIP: Don't put make all here
+make -j$J >> $LOG
+
+#build your modules with the new qmake, keeping the resulting static libs in each module's shadow build folder where they will be located by qmke during compilation of your projects
+for M in $MODS
+do
+    echo "----------------------------------------- MODULE: $M"
+    echo "----------------------------------------- MODULE: $M" >> $LOG
+    # Make module dir
+    D=$O/$M
+    mkdir -p $D
+    cd $D
+    # Use new qmake to create module makefile
+    $O/qtbase/bin/qmake $SRC/$M/
+    # Build module
+    make -j$J >> $LOG
+done
+
+# Copy qtsvg stuff into qtbase folder. This is specifically for building Bandage.
+cp -r -n $O/qtsvg/* $O/qtbase/
+
+echo "DONE"
diff --git a/build_scripts/qt_static_build_ubuntu.sh b/build_scripts/qt_static_build_ubuntu.sh
new file mode 100755
index 0000000..4cc0b97
--- /dev/null
+++ b/build_scripts/qt_static_build_ubuntu.sh
@@ -0,0 +1,129 @@
+#!/bin/bash
+
+# This script builds a static version of Qt. It was originally writen by Lennart Rolland and taken
+# from here: https://stackoverflow.com/questions/24275551/
+# I modified it to work with Qt 5.6 and move around some QtSvg stuff for Bandage.
+
+# Change this to the desired version.
+VER="5.6.0"
+
+# Dependencies:
+sudo apt-get install build-essential perl python git "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libfontconfig1-dev
+
+VER2="${VER%.*}"
+WSRC="http://download.qt.io/official_releases/qt/$VER2/$VER/single/qt-everywhere-opensource-src-$VER.tar.xz"
+B=$(pwd) # Current dir (allows this script to be called from another dir)
+Q="$B/qt" # Base folder for the whole operation
+SRC="$Q/src/$VER" # The uncompressed source
+O="$Q/build/$VER" # The actual shadow dir
+XZ="$Q/xz/qt-$VER.tar.xz" # The tar.xz archive
+J=$(grep -c ^processor /proc/cpuinfo) # Parallel make, number of cores
+LOG="$O/log.txt" # Build log file
+
+# My configuration options for qt change to your hearts content, but make sure to clean out your current build before using it.
+OPTS=""
+OPTS+=" -release"
+OPTS+=" -optimized-tools" 
+OPTS+=" -opensource"
+OPTS+=" -confirm-license"
+OPTS+=" -c++std c++11"
+OPTS+=" -static"
+OPTS+=" -largefile"
+OPTS+=" -no-sql-db2"
+OPTS+=" -no-sql-ibase"
+OPTS+=" -no-sql-mysql"
+OPTS+=" -no-sql-oci"
+OPTS+=" -no-sql-odbc"
+OPTS+=" -no-sql-psql"
+OPTS+=" -no-sql-sqlite"
+OPTS+=" -no-sql-sqlite2"
+OPTS+=" -no-sql-tds"
+OPTS+=" -platform linux-g++"
+OPTS+=" -qt-zlib"
+OPTS+=" -no-gif"
+OPTS+=" -qt-libpng"
+OPTS+=" -qt-libjpeg"
+OPTS+=" -qt-freetype"
+OPTS+=" -qt-harfbuzz"
+OPTS+=" -qt-pcre"
+OPTS+=" -qt-xcb"
+OPTS+=" -qt-xkbcommon-x11" 
+OPTS+=" -no-glib"
+OPTS+=" -no-gtkstyle"
+OPTS+=" -nomake examples"
+OPTS+=" -nomake tests"
+OPTS+=" -no-compile-examples"
+OPTS+=" -silent"
+OPTS+=" -no-nis"
+OPTS+=" -no-cups"
+OPTS+=" -no-iconv"
+OPTS+=" -no-icu"
+OPTS+=" -no-dbus"
+OPTS+=" -no-eglfs"
+OPTS+=" -no-kms"
+OPTS+=" -no-directfb"
+OPTS+=" -no-linuxfb"
+OPTS+=" -qpa xcb"
+OPTS+=" -opengl desktop"
+
+# The modules that are relevant for me. Please observe that THE ORDER MATTERS! I would add one module at the time and see how it complains when you try to build it.
+MODS="qtx11extras qtimageformats qtsvg qtmultimedia"
+
+# Just echo out the current state before starting the configuration and make
+echo "B: $B"
+echo "MODS: $MODS"
+echo "OPTS: $OPTS"
+echo "Q: $Q"
+echo "O: $O"
+echo "XZ: $XZ"
+echo "SRC: $SRC"
+echo "J: $J"
+echo "LOG: $LOG"
+
+# Create dirs
+mkdir -p "$Q"
+mkdir -p "$Q/xz"
+mkdir -p "$SRC"
+mkdir -p "$O"
+
+# Start log
+date > $LOG
+
+# Download source archive
+[ ! -f $XZ ] && wget "$WSRC" -c -O "$XZ"
+
+# Unpack source archive
+[ ! -x $SRC/configure ] && tar pxf "$XZ" --strip=1 -C "$SRC" "qt-everywhere-opensource-src-$VER" 
+
+# Set some variables
+export QMAKESPEC=linux-g++
+export QTDIR=$O/qtbase
+export PATH=$O/qtbase/bin:$PATH
+
+# Configure qt build
+cd "$O"
+MAKEFLAGS=-j$J "$SRC/configure" $OPTS
+
+# Build qtbase with new config (results in the basic qt libs plus a new qmake that you can use for building the rest of the modules and your own projects).
+# TIP: Don't put make all here
+make -j$J >> $LOG
+
+#build your modules with the new qmake, keeping the resulting static libs in each module's shadow build folder where they will be located by qmke during compilation of your projects
+for M in $MODS
+do
+    echo "----------------------------------------- MODULE: $M"
+    echo "----------------------------------------- MODULE: $M" >> $LOG
+    # Make module dir
+    D=$O/$M
+    mkdir -p $D
+    cd $D
+    # Use new qmake to create module makefile
+    $O/qtbase/bin/qmake $SRC/$M/
+    # Build module
+    make -j$J >> $LOG
+done
+
+# Copy qtsvg stuff into qtbase folder. This is specifically for building Bandage.
+cp -r -n $O/qtsvg/* $O/qtbase/
+
+echo "DONE"
diff --git a/build_scripts/sample_LastGraph b/build_scripts/sample_LastGraph
new file mode 100644
index 0000000..4d0d18a
--- /dev/null
+++ b/build_scripts/sample_LastGraph
@@ -0,0 +1,266 @@
+61	400000	61	1
+NODE	1	52098	3811014	3811014	0	0
+GAAAATAAAATAGAGAGAGTTTTCAATCCGCATGACTTTAAAAAAGACAATTTTTAGAAATAAGCCGGATAAAAAAATAGCTTTATCCGGCACTCATATTACAACCAGTTCTTCCGCTTAAAGTACAGATACGGTGCCAGGCCCGCGAGGATCATAAAGATAATCGCGGCAGGGTAGCCGAACCTCCACTTCAGTTCTGGCATAAACTCAAAGTTCATGCCATAGCTGGAAGCAACGAGCGTCGGCGGCAGGAATACCACGGATACCACCGAGAAGATTTTGATGATGCGGTTCTGCTCGATGTTGATAAAACCCATTGCCGCCTGCATCAGGAAGTTCACCTTCTGGAACAGGGATTCGTTATGCGGCAGCAGGGATTCGATATCTCGCAGGATTTCACGCGCCTGCTCCAGTTGCCCACCCGGTAAACGCGCTTTACGCACCAGGAAGTTGAGCGCGCGCTGGGTATCCATCAGACACAGGCGAACTTTC [...]
+CCCTCCATGGTCTGGCGATTAAGGGGGCTCAATGCCACGGTACCCTACCAACTTTCTACCATGGTCAGTCGATTCAAGTGGTTAAATTTCGTTATTGAATAAGCTTAAAATGGTTTCTTATTCCAACCAGAAAGTTAGATGGTTAAGTTATTATGGAGATAAGACCTGATCTTACTTGTTTTTTGGTTGTTTTAACAAACCATTCACCTTAATAATATCTACGCATCGCATAACAGTTGCATTCTCAAATCTAATTAACGTATAGTTTATACAACCATCATCTAGATATTAGATCCAATTATTTCAAGGACTTAAAAGAAAAAACGACAAATTCATCTATATAATGGTTATTTATTATAACCGTAAAAATGATGTTTGTATCTGCCATACAAAAACCACACCCCCTTGGTTGGTTCTTGTACCCAAAACATAATACCTGCTCTGATTAACTTCACAGCAAAAGCCTGGTAGGGAGAATAATTCTGGAGTAAA [...]
+NODE	2	2531	185323	185323	0	0
+TGCAGAGGCCGTAGCGGCCTGAACTTCCCCGCGCCGATCTTGGCGCTGCTGCGCCATAGGTAATCACCGGTCAGGTTGATGTGCTCCCAGCCGAGTGGCGACAGGTACTGCAATAGCGAGTCATCGACGGCATGACCATTGCCGCGCAACGCATGCGCCGCACGCTCCAGGTAGACCGTGTTCCACAGCACGATGGCCGCCGTCACCAGGTTGAGGCCGCTGGCCCGGTAGCGCTGCTGCTCGAAACTGCGGTCACGGATTTCACCAAGGCGGTTGAAGAACACGGCACGGGCCAGCGCATTGCGCGCCTCGCCCTTGTTCAGCCCGGCATGCACGCGGCGGCGTAGCTCGACGCTTTGCAGCCAGTCGAGGATGAACAGCGTGCGCTCGATGCGGCCCAACTCGCGCAGCGCGACGGCCAAGCCGTTCTGGCGCGGGTAGCTGCCGAGTTTCCTGAGCATCAGCGAGGCCGTCACCGTGCCCTGCTTGATC [...]
+GAGCGGGCGAGTGCCGAGGCGATCACCCGTGCTAACCGGCGCATCTACGACGCCTTGGCCGAACCACTGGCGGACGCGCATCGCCGCCGCCTCGACGATCTGCTCAAGCGCCGGGACAACGGCAAGACGACCTGGTTGGCTTGGTTGCGCCAGTCTCCGGCCAAGCCAAATTCGCGGCATATGCTGGAACACATCGAACGCCTCAAGGCATGGCAGGCACTCGATCTGCCTACCGGCATCGAGCGGCTGGTTCACCAGAACCGCCTGCTCAAGATTGCCCGCGAGGGCGGCCAGATGACACCCGCCGACCTGGCCAAATTCGAGCCGCAACGGCGCTACGCCACTCTCGTGGCGCTGGCCACCGAGGGCATGGCCACCGTCACCGACGAAATCATCGACCTGCACGACCGCATCCTGGGTAAGCTGTTTAACGCTGCCAAGAATAAGCATCAGCAGCAGTTCCAGGCGTCAGGCAAGGCCATCAACGCCAAG [...]
+NODE	3	35534	2594035	2594035	0	0
+CACTGAACTGGCATTTAGATATGTCATCTGAAGAGGATCTTGTTCGTGTAACAAATGCTTCTATTGTATCTTCTGATTGTTTAGATAGTTTATCACCTGGTTGTTTGTGAAGAATCATTAGTAATGTTTCAGTAGCTTTCTTTCTCATCTCCACTGGATCAGTTAAACCACCAGCATCTATGCACATGTTTGAAGTAACTGCGTCGTACCCTAAATAAGGTATTGGGTCCCTTTTTATATTCTGCTTATCGCTGGCATGAACAGAAAATACCAATGAAATTATTCCTGCCAATACAATGTTTTTAATTTTCATATGTTTCTCCATTACTATCATCAAGTTCAAAACATAATTTTTATATCACAAATCTTTCTAAGCAATAAACAGCTAATTCCTGTTGTGAAGCATCATTTTTCATCCCGGCGTACAAATGACACCGGGAACAAAATCCGTCAGGAATTTTCAAGGCATAGATAAATTGTTATCACACCAAT [...]
+AAATTTAATTCCGCCGCCAGCCATGTTCGGCAAGCTTAAAATAAATTCATTCTATTTTCCGGGTGCCATTTTTAGTTATTAGAGTAATTTCCAAAATATTTCGAGTCGGGTTGTTTGGGGCAAAGTCCGTATTGATATAATAAGCTCACATACCTGGAAGGAGTTTTTTATGAATAAGCCTCTGGTTAGCTTCGCGGAGTTATCCGGCAATGCTATTAATGTTGCGCGTCAGTCTGTTATCGATATGGAAATGGACGCAACCCGGGAAAAGATTGGAAAGGCTCGTTCGTTATTCCACTCAGGTATTCATCGTGCCGTGAATGGCTATCCGCTGATTCAGTCTGCGGCTAACCAGCTGGCTGTCATTAAGCGACTCCTTGGCGACACGAAGTACCTCGATGCCTGTATTACCGAGAATCTTTGTATGTTCTCGCCAGAGGGTTATCTGTACCTGTTTATGCAACGCCGCTTCATTAATGAACCCGTGGCCTG [...]
+NODE	4	1883	134056	134056	0	0
+GGGGCAAATGGTGGTCACCATCCTGTCGGCTGTGGCACAGGCTGAACGCCGGAGGATCCTAGAACGCACGAATGAGGGCCGACAGGAAGCAAAGCTGAAAGGAATCAAATTTGGCCGCAGGCGTACCGTGGACAGGAACGTCGTGCTGACGCTTCATCAGAAGGGCACTGGTGCAACGGAAATTGCTCATCAGCTCAGTATTGCCCGCTCCACGGTTTATAAAATTCTTGAAGACGAAAGGGCCTCGTGATACGCCTATTTTTATAGGTTAATGTCATGATAATAATGGTTTCTTAGACGTCAGGTGGCACTTTTCGGGGAAATGTGCGCGGAACCCCTATTTGTTTATTTTTCTAAATACATTCAAATATGTATCCGCTCATGAGACAATAACCCTGGTAAATGCTTCAATAATATTGAAAAAGGAAGAGTATGAGTATTCAACATTTTCGTGTCGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCT [...]
+CAAGCGACTTCTCCTATCCCCTGGGAACACATCAATCTCACCGGAGAATATCGCTGGCCAAAGCCTTAGCGTAGGATTCCGCCCCTTCCCGCAAACGACCCCAAACAGGAAACGCAGCTGAAACGGGAAGCTCAACACCCACTGACGCATGGGTTGTTCAGGCAGTACTTCATCAACCAGCAAGGCGGCACTTTCGGCCATCCGCCGCGCCCCACAGCTCGGGCAGAAACCGCGACGCTTACAGCTGAAAGCGACCAGGTGCTCGGCGTGGCAAGACTCGCAGCGAACCCGTAGAAAGCCATGCTCCAGCCGCCCGCATTGGAGAAATTCTTCAAATTCCCGTTGCACATAGCCCGGCAATTCCTTTCCCTGCTCTGCCATAAGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAA [...]
+NODE	5	5976	449249	449249	0	0
+ATCGTGCCACCGGCTCCAGGTCTTATCGAACAGCTCAGACACATGGTCCAAATGCTGGTCGATCCGTTCGGCCAGTTTTTCGATGGCCTCTTGCTTGAGCTTGTCACTTTCCCTGAACTCGATGTTCAAGGCCCTGGCCACCTGGTTGAGGTTCCGGCCGATAGCTCCAAGCTGCCGGCACGATTCCCGTACGGTGTTCACTTCTTCATCAGTGAGGACCGGCATCCGGTTCAACGACCGCAGTCATTTCTGTACCTAAACAGTCCTGCGAATATGTGAGTTTTGACCTAATGAGCCACAAAAACTCATTTTCGCCCACGATAATTTTTCTACTTCCTTTCTTTGGAATGCTCATTTCAATATTCACATAACGTCGCTATCAATCGCGGAAAAGGCGTAGTGCGCGAAGCGAACGAAGCTTTTTGCCGTCGATTGCATAGCTTTGTTAACCCTTTTTCCAAATTTGATAGCAATAGTTAATGTTTGAAGTAA [...]
+GGCAGCGGTCGCAATGGCCTAAACTTCCCCGCACCGACCTTGGCGCTGCTGCGCCATAGGTAATCGCCGGTCAGGTTGATGTGCTCCCACCCCAGCGGCGACAGATATTGCAACAATGTGTCGTCCAGCGCCGTGCCGTTGCCACGCAAAGCACTGGTGGCACGCTCCAGATATACCGTGTTCCACAACACGATGGCCGCCGTCACCAGATTGAGGCCGCTGGCCCGGTAGCGCTGCTGCTCAAAACTGCGGTCGCGGATTTCACCCAATCGGTAGAAGAAGACCGCCCTGGCCAGCGCGTTGCGCGCCTCGCCCTTATTCAGCCCCGCATGGACGCGGCGGCGCAGCTCCACGCTTTGCAGCCAATCCAAAATGAACAGCGTGCGCTCGATGCGCCCCAGCTCGCGCAACGCCACGGCCAAGCCGTTCTGGCGCGGGTAGCTGCCGAGTTTGCGCAGCATCAGCGAAGCCGTTACCGTGCCTTGCTTGATG [...]
+NODE	6	9698	703603	703603	0	0
+TTACGTCGGTGCTAAATCACGCCAGCTCTGGTTGTTTTACGCGTATGACAGGATACGGAGGACGGTTGTGGCGCACGTATTCGGTGAACGCACGTTGGCCACGCTGGAGCGTCTTCCGGGCCTGCTGTCGGCCTTTGAGGTCGTGGTATGGATGACGGATGACTGGCCGCTTTATGAATCACGCCTGAAGGGAAAGCTGCACGTTATCAGCAAGCGTTACACTCAGCGCATTGAGCGGCATAACCTGAATCTGAGACAGCATCTGGCAAGGCTGGGCAGGAAGTCACTGTCGTTCTCAAAATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGACCATAAAACACTATCAGTAAGTTGGAGTCATTACCCAGTAATGCGACAAATGCAATGAAAGAAGTAGCGAAAGTCCTTTTTTCAGCCCGAAGTGACCCGGAGCTCATGAAATTTATAATGGATTATATTAATAACCACAAACTGCATTGAA [...]
+CATGGCATCTGACATCAAGTTAGGGTATGCCTCAATCTGACGGCTGCGAACCGCCAGGGACAGGCGCAATGTCAGATTCTGTCGCGGCCTTGGCGCGTGCCTGGAAGCGTTCATAGCAATCCAGCCCGCAGAAATGTTCGACGTATTCCGCGCCTTCCGGGGTGAAGGCGGCATCGAGCGGAATTTCTTTGCAGCATACGCAGCAGGTGGTGCAACTGGCAGTGTTCGGGGCGTTTGCGTTCATGGTGGTACTCCTCCAGATTGGTAGCGAAGCTCAAAGCTGCCCACTCTCGGCTGGCTGGGAAGCGGTCATGATCTTCCCTTGAAGGCCCGCAGCAGCCGCGTCACAGACAGGACAAACAAGCCGGTCAGCGTGAGGGCTGCAATACCCCAGTGCTCCCCGATGAACGCGCCGGCCGTCGTGCCGGCTAGCACAATGGCGAGAATCGGCAAATAGCAGGGACAGGTGAGCACGGCCAGCGCGCCCCACAA [...]
+NODE	7	50227	3694305	3694305	0	0
+TCCTTTAATCGCCAGGCTATGGGGAAGCTGGTCTCGTAGCGTGGCATTTAACCCCCTTAATCGCCAGACTATGGGGAAGCAGGTCGCGTAGTGTGGCATTTAACCCCCTTAATCGCCAGGCCATGGAGAAGCAGGTCGCGTAGCGTGGCATTTAACCTCCTTAATCGCCAGGCCATGGAGGAATGCTGGTCTCGTACCATGGCATTTAACCCCCTTAATCGCCAGGCTATGGGGTAATGCTGGTCGGGTACCGTGGGATTTACCCCCCTTATTGCCACATCTATGGAGTGATCCTGCTATGTCGGAAGATTGGTATTGTTGATACTTAAGAGGCTTTTGGAAGACTTCAATGAACTGCCAATTGAAATTCAATAATGCAGATATTCCAAAATCTAAGAAAAGAATACAGAACGTTAGCGTAATAATAGAATTAAGGTTACTATTAAACGCATAACGCTAAAGTATACGCATTATGCGTAAAGTTTACGTATA [...]
+ATTTCGTCCAAGCTCGCCGCGTTTAAATAAAAGGAAATGAAGGGAACAGGTAAAAATATTAGATGTTTAATTCTCATACGAGTTACCACCATGGAGCGGAAACAGGATTTTGAATGACGTGATGACTTTACTAATTAAGCTTATTTAGAGGTATTAATAGAATATTAAAAAATTTTAATTTTACTGCTGACGTTTTCATAAATCTCCTTTCCTGAAAAGTCGGCGATAAATTGGTTACCAATATCTTCATATTACTGACGGACCAGTGTCCATACGCTTGCGGGTACTTTATCGTAGAGTTTCTTCATTGTCAGTTCAGCTTTTCGATGGTCATATGCCCCGGAAATTTCCAGTGATGCTATACCTGCATTTTTTTCACAGAGTCGTTCGAATACTTTTTCCAGTGTGTCGAAAGAAGAGCACTTACGAAATTTCATTAAATACGCCTGCTTAGTTTCGGACATGGTCAACCTTAATTTATTTCCCGCGAAA [...]
+NODE	8	15844	1169426	1169426	0	0
+TATTGGCAGTACCGTCAGTTCGGATATCTCCCGCGACAACCCAGAAAAAACCGGCAGACTCATCGCTCACGCGTTACTGACGGGGGCCTCGATTGAGGATGCCTGTCGCTTTGCCTCAGAGGCTCAGCAGTTCGATACCGCTCTATCGGGACTGGCTTACCAGGTAGCCGTGGCCATGAAATTTGTTGCCGGTGATTCTGCGGCCGTAAGGAATGAAGGCCATCCGGTCATTACACTTTCCGACTCCTTCCGTCTTATGAGAAAAGCAAATATTAACACCCTGACGGCCACACAGAACAACCGGAAATGATGAGCACAAATCGATATGGATGCCGATATTAAGAACGATGATTATGTTGACTGTCTCATTGAGCAGGTAACCGTATAGCGGACTGGAACACGAATGCTGATGCTCTACACCAGGCCTGCGGCGCCTTCGTAGATGCACCGCATTCAAAACAAACGACAGGTGATAATTTATGAAGTTGACAA [...]
+TGTTCTGCTTCAGTTTCAAAATGCTATGAAAGAAAAAACATTAGATTCAGTGAGTTTGCTAATAAGCAAAATAAGGAGGCTTGATTGGCAAAGGTTAAAAGAGTTTTTTGGTCCTTTGGCATTTAACCACCCAGATTGCATTGATGCCATCATGACTGATGGAATTAGCACTGATGCCTCATTTACTATTTTAAATGCATTAATTTCTCGCACGGAAATGATGTCCTCTGGAGAGTATGCAATTGAGCATGATCGTTCTAAAAATCTGCTAACTTACAATGAACGCCTTAACTTTTTGATCAATTGTGATAAGGAAGGAGAGTTTAAACATTCCGAGATAGCAACTATCTCATTCCCTCTAAACCTTAAAAAAGTCTATCAAATTGATTCGAAAGAAAGCCCAAGCGTGCAATTGTGTGATGTTCTTATAGGTGCATGTATTGAATCAGTTTATCAATTAATGGACTCTAAGGTGCTCAATCAAAATTCCGT [...]
+NODE	9	1269	189170	189170	0	0
+TCATATGATCAAATGGTTTCGCCAAAAATCAATAATCAGACAACAAAATGTGCGAACTCGATATTTTACACGACTCTCTTTACCAATTCTGCCCCGAATTACACTTAAAACGACTCAACAGCTTAACGTTGGCTTGCCACGCCTTACTTGACTGTAAAACTCTCACTCTTACCGAACTTGGCCGTAACCTGCCAACCAAAGCGAGAACAAAACATAACATCAAACGAATCGACCGATTGTTAGGTAATCGTCACCTCCACAAAGAGCGACTCGCTGTATACCGTTGGCATGCTAGCTTTATCTGTTCGGGCAATACGATGCCCATTGTACTTGTTGACTGGTCTGATATCCGTGAGCAAAAACGGCTTATGGTATTGCGAGCTTCAGTCGCACTACACGGTCGTTCTGTTACTCTTTATGAGAAAGCGTTCCCGCTTTCAGAGCAATGTTCAAAGAAAGCTCATGACCAATTTCTAGCCGACCTTGCGAGCA [...]
+GCAGGGTTGCAGCCACGAGTGAGTCTTCCCTTGTTATTGTGTAGCCAGAATGCCGCAAAACTTCCATGCCTAAGCGAACTGTTGAGAGTACGTTTCGATTTCTGACTGTGTTAGCCTGGAAGTGCTTGTCCCAACCTTGTTTCTGAGCATGAACGCCCGCAAGCCAACATGTTAGTTGAAGCATCAGGGCGATTAGCAGCATGATATCAAAACGCTCTGAGCTGCTCGTTCGGCTATGGCGTAGGCCTAGTCCGTAGGCAGGACTTTTCAAGTCTCGGAAGGTTTCTTCAATCTGCATTCGCTTCGAATAGATATTAACAAGTTGTTTGGGTGTTCGAATTTCAACAGGTAAGTTAGTTGCTAGAATCCATGGCTCCTTTGCCGACGCTGAGTAGATTTTAGGTGACGGGTGGTGACAATGAGTCCGTGTCGAGCGCTGATTTTTTCGGCCTTTAGAGCGAGATTTATACAATAGAATTTGGCATGAGATTG [...]
+NODE	10	9288	687372	687372	0	0
+AGTTCAGTGTTTATGAAAGATACTGGGAAATAGTTCAGCCAAATAAATAACATAGATTTGCGTGAGATTTATAATACAAAACGCTCATTAGGTCTATGTCTTTAAAGGCGCGTGGCTTAATGGGCAATTAAATCCATACTCCTGCAATACATGCTTCAATCCTCAACTCGTTTGATAATGGCTGTATTTAATTTGCTGGATTCCACCATTTAAAATGGACAGGCTCTGTTTTAAATGAATCACCTGTTTCCGCATGCCAGGTTATTTGGGTGAACAGCCAATATGGTATGATGTTTATAACAAACAAATTCGGAAGGTATAGTTTATGGGGGACCTGGTCAGTAAAAATAATATCGATCGCCTTGAACGATTTCATTCTCTGCTGGCAGGGCAGTATTGGTCTGCGCTCGTCGATATTCCGGCTGAGGCGATTGTGGCCGGGGACACTCTCCTCATTAACTCGTTGCGGTACGTGGATAACAATCTGCATAC [...]
+ATTTTTTTTACTACTCTCAAATTATTTTAATTCGAGGGAGAGCATAATCCATTGTTTTGACGGTTCCATTTTCTTTAATTATATAGTGATGCCAACTATCTGATTTTGCGATTGCATCATCATATATACTTTGTGTAATTGCTAAAAAATCTATGTTCATCCATGAAAATATCCCTTCATCAACAAATTCTTTTGATATTAATTCATAGTGACTATTTTTTTTCACTCCAACATATAACTTATATTTTTTCTCTATATTTTCAGCCAAACTATCAAATGAAATTATTGAGAAGTCACTTCGCTGTTGCCCTCTGATTAGTGCAGTTTTCTGTGTATTATTTTCATATTCTGATCTACGACCATGAACAAGGACATACTTGAAATTAAATGGATTTCTCCCCATATGTGCCGGTTCTATAAATCCCTGCAATATATTGTTTTTAAAGTGATTTCTGTTTGATTCATCATCAAACCAAGCCCTCCATGTGTTCA [...]
+NODE	11	1380	97401	97401	0	0
+TCAATACGTTGTAGCTTTTTCCTGAGCTCACGGATTTCAATTTGTTCCGGGGTAATGGGGGAGGCTTTTGGTGTTTTTCCCTGCCGCTCATCACGTAATTAATAGGCTGTATGTCTAACTTCTGGCCACAGATATAATCGAGCCAGCAGTGCTCGCCGCAGCCGAGCGACAGGGCGAAGCCCCGAGTGAGCGAGGAAGCACCATGGAACAGTACTCATAAATTCTGCATACGCTCAATGCCTGCAAAATCACCTCCCCTAGGGGTTATCCACTTATCCACGGGGATATTTTTATAAGATCTTTTTAAATAGTTGTTAGATCTTTATTTTTAGAATGCCCACAGGCCTTTATCCATGCGGGTTCCAGAGAGGGATCTGTGACAAAACGCCCTTTCAGTGTGACAAATCACCCTCAAATAGCCGCCCTTTCTGTGACAAGTTGCCCTTAACCCTGTGACAAATTGCCCTCAGGAAGCGTTGCTTTTCACAAAGT [...]
+TATTCAATCGTCATGGAGGTTATATCACGGAAGGAAAATACGATATGCGTCGTCTGGCGGCCTTTCTTTTTCTCGATGTAAGAAAGGCGCATTGGTGTCCGGCTGTTGATCTCGTCAACACTTGCCTTCAGGAAACGGCGGCGAAAGTCCGGCATACGCTGGTAACTTTGAGGTAGCTGGTAGCGTTCCATGATCCAGTCGATTTTCAGGGACACGACACCTGAGCCATCAGGTTTACGGTACTGGCACAGAGATTCGTATAAACGCATGGCGTACGGATTGGTAATCTCTTTTGTTTCACTGAGCCGGAACTGCGTAAACCGGTTCTGTAACCCGATGAAGAAGGGAATCAGATATGGGTTGATATGTACGCTGTAAAGCCCTCTTGATGGGCTGTGCGCACGTTTAATAAACCAGGGAAAGGATTCATACCCTTTTTCATCGCCGGCATCCTCTTCAGGGCGATAGAAAACCACTTCCTTACCCGCAAAA [...]
+NODE	12	52	3736	3736	0	0
+AATCACCCTCAACCTTCCAGATCAAATGTGACGAACCACCCTTAAATCTGTG
+ATTTAAGGGTGGTTCGTCACATTTGATCTGGAAGGTTGAGGGTGATTTGTCA
+NODE	13	3	414	414	0	0
+ACA
+CAG
+NODE	14	9	630	630	0	0
+GATAACCCT
+GATTTGTCA
+NODE	15	760	220234	212478	0	0
+CAAAAACTCTGCTTACCAGGCGCATTTCGCCCAGGGGATCACCATAATAAAATGCTGAGGCCTGGCCTTTGCGTAGTGCACGCATCACCTCAATACCTTTGATGGTGGCGTAAGCCGTCTTCATGGATTTAAATCCCAGCGTGGCGCCGATTATCCGTTTCAGTTTGCCATGATCGCATTCAATCACGTTGTTCCGGTACTTAATCTGTCGGTGTTCAACGTCAGACGGGCACCGGCCTTCGCGTTTGAGCAGAGCAAGCGCGCGACCATAGGCGGGCGCTTTATCCGTGTTGATGAATCGCGGGATCTGCCACTTCTTCACGTTGTTGAGGATTTTACCCAGAAACCGGTATGCAGCTTTGCTGTTACGACGGGAGGAGAGATAAAAATCGACAGTGCGGCCCCGGCTGTCAACGGCCCGGTACAGATACGCCCAGCGGCCATTGACCTTCACGTAGGTTTCATCCATGTGCCACGGGCAAAGATCGGAAG [...]
+CACATGAACCCATTCAAAGGCCGGCATTTTCAGCGTGACATCATTCTGTGGGCCGTACGCTGGTACTGCAAATACGGCATCAGTTACCGTGAGCTGCAGGAGATGCTGGCTGAACGCGGAGTGAATGTCGATCACTCCACGATTTACCGCTGGGTTCAGCGTTATGCGCCTGAAATGGAAAAACGGCTGCGCTGGTACTGGCGTAACCCTTCCGATCTTTGCCCGTGGCACATGGATGAAACCTACGTGAAGGTCAATGGCCGCTGGGCGTATCTGTACCGGGCCGTTGACAGCCGGGGCCGCACTGTCGATTTTTATCTCTCCTCCCGTCGTAACAGCAAAGCTGCATACCGGTTTCTGGGTAAAATCCTCAACAACGTGAAGAAGTGGCAGATCCCGCGATTCATCAACACGGATAAAGCGCCCGCCTATGGTCGCGCGCTTGCTCTGCTCAAACGCGAAGGCCGGTGCCCGTCTGACGTTGAACACCGA [...]
+NODE	16	5407	403478	403478	0	0
+TCCATGCCCAGCCCGTGCGCGAGCTGGATCACCGCCCGCACGATAGTTTGGTCACGGGCATCATCCGGGAGCCTGGCGACAAAGGATTGGTCGATTTTCAATGTGGTGATGGGGCAGCATTTCAGATGTTGCAGGCAGGAATAGCCGGTGCCGAAGTCGTCGGCGGCGAAGCGCACGCCGATGGCGCGCAAGGCGTCGAAACTGGCGAACAGGGCTGGATTGCCGAATGCGACCGATTCGGTCAGTTCGATCTCCAGAAGCTCGGCGGGCAGGGCCATATCGGCCAGCACCCGCTTTACCTCGTCGTCGAACGTTGGCCCAACCTGGCTGGCGGACACATTGATGGCAAGACGGAACGGTTGCCATGCCGGTCCTTGCCACTTGTGCATCTGGCGACAGGCCTCGCCCAGCACCCACGCGCCTATTTCCGGCATCAGGCCGAACGACTCGGCCAGCGGCAGGAACTGGCCGGGCGGCAACAGGCCAAGCCTC [...]
+GGCAGTCAGCGTTCCAACGCAGGGAATACTCAGCAAGCGCTGTCCAACCTCATCTTCGTCCAACTTTCGTTTCAACTGAGATTCCAGATCTTTAATCTGCTCAACAAGATAGTGATAATGCTGTTGTAATTTCAGCAGTAACTGGCTGAGATAAAGAGGCAAACTACTGTCCTCAAGAAGGGTACTCAGTCGACTAATAACGGCAGCACCTCGCGGAACGCTGATACCAAATTCCAGCAGAAAAGCATGCATCTGATTAGTTGTTTTCACCTTATCCTGAACCAGGGATTCACGGACACGATGCAGAGCTCGCATTGCCTGCTGAGATTCGGTTCTGGGCTGCACGAAACGCATAGATGGACGTGATGCTGCTTCACAGATAGCTTCAGCATCAACGAAGTCATTTTTGTTGCTTTTAACGAATGGGCGGACAAATTGCGGTGATATCAGCTTTGGAAAATGCCCTAACTCTGCCAGCTTGCGTGCCATAAA [...]
+NODE	17	70	15448	10880	0	0
+CCCGACGTATCCCCACTGTTCGTCCATTTCCGCGCAGACGATGACGTCACTGCCCGGCTGTATGCGCGAG
+ATACGTCGGGGCTAAATCGCGCCAGCGCTGGCTGTTTTACGCGTATGACAGGCTCCGGAAGACGGTTGTT
+NODE	18	5765	421450	421450	0	0
+TGCTCAGCATGTTTGAGTGCTTTACTCGCCGCGGGTTGAGAAATATGTAAAACTTCAGCCGCACGCGTTAAGGAACCACAAGTCATTACAGCATAAAAGATATCGAGATGTCTTAATTTCATTCCATGTAGCCTACTGATTATTTATTTCTACGGACTATTCTAACGAATAAAGTATAAATAATCAGATATACTCGTCATAATTCAAATTTTGGTTTAGTTGTCACGAGAATTAATTCGTAAACGTGCAAGCTAAATAGATTGACTAGGGGAATATACGGGGTAAGAAAGCGGCTCGGCATACTGCCCTATAATAAATTGTTAGGAGAAGTACGCCGAGTAGTGTGTAGCTATTAGGTAAAGTATGTACCAATTTCAATAAATATTTTAATTAAGATACTGTTTGAAATATCAACAATAAAGGCACCGACCATAGGAACGACAAGGAAAGCTTTATGTGATGGTCCAAATGCTTTTGTGACTGTTTGCATAT [...]
+ATTATCTTGATTATATTATTGATAATAATAAAAACCTTATCCCTATCCAAGAAGTGATGCCTATCATTGGTTGGAATGAACTTGAAAAAATTAGCCTTGAATACATTACTGGTAAGGTAAACGCCATTGTCAGCAAATTGATCCAAGAGAACCAACTTAAAGCTTATGATGATGATGTGCTTAAAAACTTACTCAATGGCTGGTTTATGCATATCGCAATACATGCGAAAAACCTAAAAGAGCTTGCCGATAAAAAAGGCCAATTTATTGCTATTTACCGCGGCTTTTTATTGAGCTTGAAAGATAAATAAAATAGATAGGTTTTATTTGAAGCTAAATCTTCTTTATCGTAAAAAATGCCCTCTTGGGTTATCAAGAGGGTCATTATATTTCGCGGAATAACATCATTTGGTGACGAAATAACTAAGCACTTGTCTCCTGTTTACTCCCCTGAGCTTGAGGGGTTAACATGAAGGTCATCGATAGCAGGAT [...]
+NODE	19	1026	75036	75036	0	0
+TCGTGTCCCGTGGTATTTAACCCCCTTAATCGCCAGACCATGGGGGGAAGCTGGTCGGGTACTGTGGCATTTAACCCCTTAATCGGCAGACCATGGAGGGATTATTGCCGGGTACCAGGCCATTTAACCACTTACTCGTCTGTACACGATGGGATGCTGGTTGCGTAGCGCGGAATTGCTCCCCTATTCACCAGTTCTTTGCTAAAGGAAAGCCAGTCTAAAAGGTTTTCCGGCCAAAACTTTTTTTGTTTCACTACAGTTATTCGCCCTTCCGTTCAGCGTGATAAAATATACAAAAACGTAGAGGTAACCCATAAAAGTAAAAGAGCTTATAGACCAGCTTAAAAGGCTCGACCCGGATGCGTATGTAGTAGTTGCTGGATTTGAAAACCAGTGTACTGGACACGTGGCTGAAGCAGATACCATTAAAGAATGCATGACAATTCCTGTACGAGCGGACAGCATGTCAGGTGACCGTACGCTTGCAAAAGA [...]
+TACCCGACCAGCTTGCCTCCATGGTCTGGCGATTATGGGGGTTAAATCCCACGGTACCCGACCAGCAGGCACCGTGGTCATTGGCTAAAGGGGAAATTGCCTCGGCTTGCAGACAGGACAACGTGACGCCCTAGCGGTTAAGTGGGTTTAATACGACGGTACACAATAAGTATCCCACCAGAATCTGTCTATTGAGTGGATTAGATTAAAAGATATTCGGCCTGGATCTCGACTTAGAATGACGAAATATTTGGCAAAAAAATAGGGTATTCGGCAAATCCTGTTGTTAAGACATCCCGAATACCCAAAAAATATTTGGCAATCAATATGAATTGCCCATACCCACAATTGACAATAAGAGAGTTTTTTGGCAATTCGTATAATTAGGCCAATTCATCCGTGTCGTCTATTGCACTAACGAAGTATTCCGTGCGGTAGTCATCTCCCCCCCTCAACTAGACTGAAGGTGATCCATCTTTTGCAAGCGTACGG [...]
+NODE	20	63	13687	13687	0	0
+GAGCTGGCTGCACAACAGCCATTACGCCCAATCAACTGGTGCAGTCGTCTTCTGAAAATGACA
+CTCCTGACAGTTCAATATCAGAAGTGATCTGCACCAATCTCGACTATGCTCAATACTCGTGTG
+NODE	21	1552	113256	113256	0	0
+GACGCACTTTGCGCCGAATAAATACCTGTGACGGAAGATCACTTCGCAGAATAAATAAATCCTGGTGTCCCTGTTGATACCGGGAAGCCCTGGGCCAACTTTTGGCGAAAATGAGACGTTGATCGGCACGTAAGAGGTTCCAACTTTCACCATAATGAAATAAGATCACTACCGGGCGTATTTTTTGAGTTATCGAGATTTTCAGGAGCTAAGGAAGCTAAAATGGAGAAAAAAATCACTGGATATACCACCGTTGATATATCCCAATGGCATCGTAAAGAACATTTTGAGGCATTTCAGTCAGTTGCTCAATGTACCTATAACCAGACCGTTCAGCTGGATATTACGGCCTTTTTAAAGACCGTAAAGAAAAATAAGCACAAGTTTTATCCGGCCTTTATTCACATTCTTGCCCGCCTGATGAATGCTCATCCGGAATTCCGTATGGCAATGAAAGACGGTGAGCTGGTGATATGGGATAGTGTTCACCCT [...]
+ATTATGGCGAAGGTATCATTCAGGAAGCGTTGATGAAGGATTATCTCTGTAAAAAGTTATTCAACCGGCTTTCCGGTACCCTGGTGATCAGAGCGCGCTGCGGCAATAACATTACTGGCCTGGCATGTTGCAATATTCTTTATCCCTCGCCCCGATACAGCGGTCAGCTGCATATTAAAGAGCTGTATGTTTCTCAGTGCGATCGAAATAAGGGCACGGGTAAAGCGATAATGCGCTTTATAGCCCGGCTTGCGCTTGAACAGGAATGCCTTAGCCTTAGCTGGAACGCTGAAAAATCCAACCCCGGCGCTAACCGTTTTTATCAGGCTCTGGGAGGCAGAATAAATGATCATATCGTCAATTATTACCTCCACGGGGAGAGCCTGAGCAAACTGGCCTCAGGCATTTGAGAAGCACACGGTCACACTGCTTCCGGTAGTCAATAAACCGGTAAACCAGCAATAGACATAAGCGGCTATTTAACGACCCTGC [...]
+NODE	22	9	1343	1343	0	0
+CGACAAGTT
+ACGACCCCT
+NODE	23	306	45829	45829	0	0
+GCTTTTCTGCTGGAATTTGGCATTAGCGTTCCCCGAGGAGCTGCCGTTATTAGCCGACTGAGTACCATTCTTGAGGATAATAGTTTGCCTCTTTACCTCAGCCAGTTATTGCTGAAATTACAACAGCATTATCACTATCTTGTTGAGCAGATTAAAGATTTGGAATCCCAGTTGAAACGAAAGTTGGACGAAGATGAGGTTGGACAGCGCTTGCTGAGCATTCCCTGCGTCGGAACACTGACAGCGAGTACTATTTCAACTGAGATTGGCGACGGGAAGCAGTACGCCAGCAGCCGTGACTTTGCG
+CGCTGTCAGTGTTCCGACGCAGGGAATGCTCAGCAAGCGCTGTCCAACCTCATCTTCGTCCAACTTTCGTTTCAACTGGGATTCCAAATCTTTAATCTGCTCAACAAGATAGTGATAATGCTGTTGTAATTTCAGCAATAACTGGCTGAGGTAAAGAGGCAAACTATTATCCTCAAGAATGGTACTCAGTCGGCTAATAACGGCAGCTCCTCGGGGAACGCTAATGCCAAATTCCAGCAGAAAAGCATGCATTTGATTGGTTGTTTTTACCTTATCCTGAACCAGGGATTCACGGACACGATGCAG
+NODE	24	14	2989	2989	0	0
+GCGGCAACAGGGCT
+GTTGAAATAGTACT
+NODE	25	1300	95957	95957	0	0
+ATCGGCGTAGTAGTGGATGTGGTCGATGACAAAGCCGGTGCGGGTCAGCGTGCGCCGGAGGATCGGCAGAAAATCGACCAGGAACGAAGTAGCGCGTGTGACGACGGCCGGTACGCCGACACGCGCCACGGCCTCGGCCCAGCGCGCGGCCGGCGGTTGGAGCAGGCCGTTGTGCACCGAACCGTGGTAGGTGCCGACCGCCAATGTGAGCCAGCGCTCTAGCTCGCGCAGCGTCAGGGCGGCCTTGTTTTCGGAATCGTAGTCGCCGCGCTGGTCAGGGTTGGAGAAGGTCGTTCCCGGCAGTTCGTCGTGAATCATCTGCATCGCCGTGCCGATGATCCGTTCCACGATGCCGCCATAGTGCGGCTGTCCCAGCGGGCGATAGTCCAGCCGGATGCCATGCTGCTCGCAACCCCGGCGCAGGGCCTCGCTCTTGAACTCGGCCGCGTTGTCTAGGTAGAGCAGCAAGGGCTTGCCGCTCATCTGCCAATC [...]
+CACCCCACGGATTCCAGAACAAGGCGTGGCCACTCTGCCTGATGAGGCTTGGGAGCGTGCGCGCCGTCGTGCGGAGATCATCAGTCCGTTGGCGCAGTCGGAGACGGTCGGGCACGAAGCGGCCGATATGGCGGCTCAGGCGCTGGGCTTGTCTCGGCGCCAGGTATACGTTCTGATCCGGCGTGCCCGGCAAGGCAGCGGCCTCGTGACGGATCTGGTGCCCGGCCAGTCCGGTGGAGGTAAAGGTAAGGGGCGCTTGCCGGAACCGGTCGAGCGCGTCATCCACGAGCTACTGCAAAAGCGGTTCCTGACCAAGCAGAAGCGCAGCCTAGCGGCCTTTCACCGCGAAGTCACTCAGGTGTGCAAGGCTCAAAAACTGCGAGTGCCGGCGCGCAATACCGTGGCCTTACGGATCGCTAGCCTTGACCCGCGCAAGGTCATCCGCCGGCGGGAAGGCCAGGATGCCGCTCGTGACCTACAAGGTGTGGGCGG [...]
+NODE	26	117	9291	9291	0	0
+AGCCCGCATTGCCTGCTGAGATTCCGTTCTGGGCTGCACAAAACGCATAGACGGACGCGATGCAGCTTCACAAATAGCTTCGGCGTCGACAAAGTCGTTTTTATTGCTTTTAACGAA
+CGTCCGTCTATGCGTTTTGTGCAGCCCAGAACGGAATCTCAGCAGGCAATGCGGGCTCTGCATCGTGTCCGTGAATCCCTGGTTCAGGATAAGGTAAAAACAACCAATCAAATGCAT
+NODE	27	4443	316893	316893	0	0
+TAAATCCATGCTGGCCCTGCAACTGGCCGCACAGATTGCAGGCGGGCCGGATCTGCTGGAGGTGGGCGAACTGCCCACCGGCCCGGTGATCTACCTGCCCGCCGAAGACCCGCCCACCGCCATTCATCACCGCCTGCACGCCCTTGGGGCGCACCTCAGCGCCGAGGAACGGCAAGCCGTGGCTGACGGCCTGCTGATCCAGCCGCTGATCGGCAGCCTGCCCAACATCATGGCCCCGGAGTGGTTCGACGGCCTCAAGCGCGCCGCCGAGGGCCGCCGCCTGATGGTGCTGGACACGCTGCGCCGGTTCCACATCGAGGAAGAAAACGCCAGCGGCCCCATGGCCCAGGTCATCGGTCGCATGGAGGCCATCGCCGCCGATACCGGGTGCTCTATCGTGTTCCTGCACCATGCCAGCAAGGGCGCGGCCATGATGGGCGCAGGCGACCAGCAGCAGGCCAGCCGGGGCAGCTCGGTACTGGTCGATAACAT [...]
+TTGATATCTAGTATGACGTCTGTCGCACCTGCTTGATCGCGGCCGCGATAGCTAGATCGCGTTGCTCCTCTTCTCCATCCGCGTTCCAAGCTGCGGAAAGGCACCCATAAGCGTACGCCTGGTCGAGCAGGCGACGCGGATCGACGTCCAGCGCACGAGAGAATGCGTCCGCCATCTGTGCAATGCGTCTAGGATCGAGACAAAGGTCGTCTCTGTCAGCCGGATCGTAGAACATATTGGCGGCGCCAAAGCCCACTTCACCGACCAGACCGACGGGATCTATCACCAGCCAGCCGCGACTGGAGAACATGATGTTTTCATGATGCAGATCGCCATGTAGCCCACGCAGTTCCGAGGCATTGCTCATCATTTGATCGGCTATAATCGCCGCGTGGACGTAGTCAGTTTGACAACCTGCGTTTTGATCATCGCGCGCCCGCTGAAACAAAGCTGCAAAGCGATCCCGGATCGGGAGAAGGGCAGAAGGCAGGG [...]
+NODE	28	7	2806	2806	0	0
+TCTGCGC
+TTTTTAA
+NODE	29	21	6456	6456	0	0
+GGAAATGGACGAACAGTGGGG
+GTTACCGACTGCGGCCTGAGT
+NODE	30	334	51057	51057	0	0
+CGGGCGGACAAATTGTGGTGATATCAGCTTTGGGGAATGCCCCAACTCTTCCAACTTGCGTGCCATAAAGTGAGAACCGCCACAGGCTTCCATTGCGATGGTTGTAGCGGGGCATGTCGCCAAAAATTCGATCAACTTTGGCCGGGTAAATTTTTTACGGTAAACAGCCTTCCCGCGACGATCCTGGCAATGAATATGGAAAGAGTTTTTACCCAGATCGATACCAATGAGCGCAATGTTTTCCATGATAGTTCTCCGAATGAAAGCCTGTCCTCAGCATAGTACCGGGAAGGAGGGAGTGACCATCTCATTAAATAAAGCACGCTAAGCCGGT
+AGGACAGGCTTTCATTCGGAGAACTATCATGGAAAACATTGCGCTCATTGGTATCGATCTGGGTAAAAACTCTTTCCATATTCATTGCCAGGATCGTCGCGGGAAGGCTGTTTACCGTAAAAAATTTACCCGGCCAAAGTTGATCGAATTTTTGGCGACATGCCCCGCTACAACCATCGCAATGGAAGCCTGTGGCGGTTCTCACTTTATGGCACGCAAGTTGGAAGAGTTGGGGCATTCCCCAAAGCTGATATCACCACAATTTGTCCGCCCGTTCGTTAAAAGCAATAAAAACGACTTTGTCGACGCCGAAGCTATTTGTGAAGCTGCATCG
+NODE	31	127	10075	10075	0	0
+GTGACGTAAAATCGTGTTGAGGCCAACGCCCATAATGCGGGCAGTTGCCCGGCATCCAACGCCATTAATGGCCATATCAATGATTTTCTGGTGCGTACCGGGTTGAGAAGCGGTGTAAGTGAACTGC
+TAATGGCGTTGGATGCCGGGCAACTGCCCGCATTATGGGCGTTGGCCTCAACACGATTTTACGTCACTTAAAAAACTCAGGCCGCAGTCGGTAACCTCGCGCATACAGCCGGGCAGTGACGTCATCG
+NODE	32	354	52515	52515	0	0
+TGTACCTCGGCAGTACAGCACGGGAGGTAGGACGACATTGCTGGGAATTAGTAAGCGAGGTAATAAAAAGATCCGAACTTTGTTGGTTCAATGTGCCAGGGTATTCATACAAAAACTGGAACACCAGTCTGGCAAATTGGCCGATTGGGTCAGGGATTTACTGTGCCGGAAAAGCAACTTTGTCGTCACTTGTGCTCTGGCAAACAAGCTGGCCAGAATAGCCTGGGCCCTAACGGCACGACAGCAAACTTATGTAGCATAACGGCAGAAATACACCGGTTTAAAGAATTACTGATCTGGTTTTGCGAATACTGATATTGATGATACTAACGGCCCACCGGCCTGTTGAGGAAC
+CAGTAATTCTTTAAACCGGTGTATTTCTGCCGTTATGCTACATAAGTTTGCTGTCGTGCCGTTAGGGCCCAGGCTATTCTGGCCAGCTTGTTTGCCAGAGCACAAGTGACGACAAAGTTGCTTTTCCGGCACAGTAAATCCCTGACCCAATCGGCCAATTTGCCAGACTGGTGTTCCAGTTTTTGTATGAATACCCTGGCACATTGAACCAACAAAGTTCGGATCTTTTTATTACCTCGCTTACTAATTCCCAGCAATGTCGTCCTACCTCCCGTGCTGTACTGCCGAGGTACAAGCCCTGTTGCCGCCGCAAAGTCACGGCTGCTGGCGTACTGCTTCCCGTCGCCAATCTCA
+NODE	33	252	18197	18197	0	0
+CGCGAGCACCTGAGCGAGCTGCAAACCGTGTTCGGTTTCCGGCCCTTCACCATGAGCCATTACCGGCAGGCCGTCCAGATGCTGACCGAGCTGGCGATGCAAACCGACAAAGGCATCGTGCTGGCCAGCGCCTTGATCGGGCACCTGCGGCGGCAGTCGGTCATTCTGCCCGCCCTCAACGCCGTCGAGCGGGGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAGGCCTTACATT
+CCGCTCGACGGCGTTGAGGGCGGGCAGAATGACCGACTGCCGCCGCAGGTGCCCGATCAAGGCGCTGGCCAGCACGATGCCTTTGTCGGTTTGCATCGCCAGCTCGGTCAGCATCTGGACGGCCTGCCGGTAATGGCTCATGGTGAAGGGCCGGAAACCGAACACGGTTTGCAGCTCGCTCAGGTGCTCGCGCCGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAGGCCTTACAT
+NODE	34	177	40491	36335	0	0
+CTGTAAAACGGAAAGGCTCATTGAAGCCGTATATTTTCTGGAGGTTCATCAGGCGCGGAACTCATCAAGGCGCGGGAATAAAATCCCATTCAGACGCCGGATAGATTCAAGCAAGCCAACTTGTCGTCAAAATCGGTGTTGCAAAAACGGGAGTGACCATAGATTCCGTTTTCTGAG
+GGCTTGCTTGAATCTATCCGGCGTCTGAATGGGATTTTATTCCCGCGCCTTGATGAGTTCCGCGCCTGATGAACCTCCAGAAAATATACGGCTTCAATGAGCCTTTCCGTTTTACAGGTTCCTCAACAGGCCGGTGGGCCGTTAGTATCATCAATATCAGTATTCGCAAAACCAGAT
+NODE	35	940	69876	69876	0	0
+GGCTCTGTTGCAAAGATTGGCGGCAGTCAGAGGTAGGCTGTCGCTCTGCGCCGATCAGGCGGCTGCTGCGAAATGGTGGTTGAGCATGCCCATGGCCTCCGTCAGCGCCGAGGGCCCAATGCCAAAAGCTCTCTCCACAAGGCGCACCTCGCCCCTGATGCCGGGCTGCAGGCACCAGGGGCGAGCCTGTCCTTTGCGCAGGGCTCGCATGACTTCGAATCCCTTGATCGTGGCATAGGCCGTGGGGATCGATTTGAAACCGCGCACCGGCTTGATCAGTATCTTGAGCTTTCCGTGATCGGCCTCGATCACGTTATTGAGATACTTCACCTGCCGGTGGGCCGTCTCCCGGTCCAGCTTTCCTTCGCGCTTCAATTCGGTGATCGCTGCACCATAGCTCGGCGCTTTGTCGGTATTGAGCGTGGCAGGCTTTTCCCAGTGCTTCAGGCCTCGCAGGGCCTTGCCCAGGAACCGCTTCGCTGCCTTGGCGCT [...]
+GGCTCTGTTGCAAAAATCGTGAAGCTTGAGCATGCTTGGCGGAGATTGGACGGACGGAACGATGACGGATTTCAAGTGGCGCCATTTCCAGGGTGATGTGATCCTGTGGGCGGTGCGCTGGTATTGTCGCTATCCGATCAGCTATCGCGACCTTGAGGAAATGCTGGCGGAACGCGGCATTTCGGTCGACCATACGACGATCTATCGCTGGGTCCAGTGCTACGCCCCGGAGATGGAGAAGCGGCTGCGCTGGTTCTGGCGGCGTGGCTTTGATCCGAGCTGGCGCCTGGATGAAACCTACGTCAAGGTGCGGGGCAAGTGGACCTACCTGTACCGGGCAGTCGACAAGCGGGGCGACACGATCGATTTCTACCTGTCGCCGACCCGCAGCGCCAAGGCAGCGAAGCGGTTCCTGGGCAAGGCCCTGCGAGGCCTGAAGCACTGGGAAAAGCCTGCCACGCTCAATACCGACAAAGCGCCGAGCTATGGTGC [...]
+NODE	36	127	34874	29975	0	0
+ATGGCGGAAAATCGTGTTGAGGCCAACGCCCATAATGCGGGCGGTTGCCCGGCATCCAACGCCATTCATGGCCATATCAATGATTTTCTGGTGCGTACCGGGTTGAGAAGCGGTGTAAGTGAACTGC
+GAATGGCGTTGGATGCCGGGCAACCGCCCGCATTATGGGCGTTGGCCTCAACACGATTTTCCGCCATTTAAAAAACTCAGGCCGCAGTCGGTAACCTCGCGCATACAGCCGGGCAGTGACGTCATCG
+NODE	37	52	3605	3605	0	0
+TGTCCGTGAATCCCTGGTTCAGGATAAGGTAAAAACAACCAATCAAATGCAT
+CTTCACAAATAGCTTCGGCGTCGACAAAGTCGTTTTTATTGCTTTTAACGAA
+NODE	38	205	14188	14188	0	0
+CCATTACCCGGGAAGAGGGGGAAAATCTAGTGTGACAAACTACCCTCAGGATAGGATGACAAATTGCCCTCAATTCTGGCTCCACTACCGGTTACAGCCAAAAAACCATGAGTAAGCGCAGGATGCCAGGGAGGGAACAGCAAAACTGTGACAAATCACCCTCAACCTTCCAGATCAAATGTGACGAACCACCCTTAAATCTGTG
+TTTTGCTGTTCCCTCCCTGGCATCCTGCGCTTACTCATGGTTTTTTGGCTGTAACCGGTAGTGGAGCCAGAATTGAGGGCAATTTGTCATCCTATCCTGAGGGTAGTTTGTCACACTAGATTTTCCCCCTCTTCCCGGGTAATGGTGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGGCTTCTGTTT
+NODE	39	58	5180	5180	0	0
+TAAATCGCGCCAGCGCTGGCTGTTTTACGCGTATGACAGGCTCCGGAAGACGGTTGTT
+GCAGACGATGACGTCACTGCCCGGCTGTATGCGCGAGGTTACCGACTGCGGCCTGAGT
+NODE	40	306	90197	85404	0	0
+GCGCACGTATTCGGTGAACGCACTATGGCGACGCTGGGGCGTCTTATGAGCCTGCTGTCACCCTTTGACGTGGTGATATGGATGACGGATGGCTGGCCGCTGTATGAATCCCGCCTGAAGGGAAAGCTGCACGTAATCAGCAAGCGATATACGCAGCGAATTGAGCGGCATAACCTGAATCTGAGGCAGCACCTGGCACGGCTGGGACGGAAGTCGCTGTCGTTCTCAAAATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAATAAGTTGGAGTCATTACC
+ATGCAGCTCCACCGATTTTGAGAACGACAGCGACTTCCGTCCCAGCCGTGCCAGGTGCTGCCTCAGATTCAGGTTATGCCGCTCAATTCGCTGCGTATATCGCTTGCTGATTACGTGCAGCTTTCCCTTCAGGCGGGATTCATACAGCGGCCAGCCATCCGTCATCCATATCACCACGTCAAAGGGTGACAGCAGGCTCATAAGACGCCCCAGCGTCGCCATAGTGCGTTCACCGAATACGTGCGCAACAACCGTCTTCCGGAGCCTGTCATACGCGTAAAACAGCCAGCGCTGGCGCGATTTAGC
+NODE	41	214	15240	15240	0	0
+CCCACGGTACCCGGCCAGCTTCCCGCCATGCTCTGGCGATTAAGGGGGTTAAATGCCAGGATACGCGACCAGCATTCCCCATGGTCTGGCGAATAAGGGAGTTAAATACCACGGTACCTGACCAGAATGACCCCATGTCCTGGCGATTAAAGGGTTAAATGCCACGCTACGCGACCAGCCTCCCCATGGCCTGGCGATTAAGGGGGTTAAATGC
+CCCTTTAATCGCCAGGACATGGGGTCATTCTGGTCAGGTACCGTGGTATTTAACTCCCTTATTCGCCAGACCATGGGGAATGCTGGTCGCGTATCCTGGCATTTAACCCCCTTAATCGCCAGAGCATGGCGGGAAGCTGGCCGGGTACCGTGGGATTTAACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGGCGTGTCCCATGGAATTTAA
+NODE	42	125	9064	9064	0	0
+GTGCCCCCTAATAGTGTTCTTCCATTTCGGTAAAAATCCCTACCATGGATTCCCACTCGTCCGGGGGGTAATGACTCCAACTTATTGATAGTGTTTTATGTTCAGATAATGCCCGATGACTTTGT
+CCCGGACGAGTGGGAATCCATGGTAGGGATTTTTACCGAAATGGAAGAACACTATTAGGGGGCACCTCAGAAAACGGAATCTATGGTCACTCCCGTTTTTGCAACACCGATTTTGACGACAAGTT
+NODE	43	29	4823	4823	0	0
+GCAGATCACTTCTGATATTGAACTGTCAG
+CACCAAAGCGAGGTGAGCATGGCGACGGA
+NODE	44	70	10135	10135	0	0
+ATTAAGGGGGTTAAATTCCATGGGACACGCCCAGCTTTCCTCCATGGTCTGGCGATTAAGGGGGTTAAAT
+CCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGTCGTGTCCCGTGGCATTTAACCCCCTTAATCGCCAG
+NODE	45	1	141	141	0	0
+G
+C
+NODE	46	5	816	816	0	0
+CACGG
+TTTAA
+NODE	47	31	2320	2320	0	0
+GACACGACCAGCTTTCCTCCATGGTCTGGCG
+GCCATGGGGAGGCTGGTCGCGTAGCGTGGCA
+NODE	48	1	167	167	0	0
+C
+C
+NODE	49	51	3430	3430	0	0
+TATCTGTCACAGATTTAAGGGTGGTTCGTCACATTTGATCTGGAAGGTTGA
+CTTCCAGATCAAATGTGACGAACCACCCTTAAATCTGTGACAGATAACCCT
+NODE	50	4	600	600	0	0
+GGGT
+CAAC
+NODE	51	354	25881	25881	0	0
+GAATGATTGTTTAAACTGGTGTATTTCTGCCTTTATGCTTCGTAAGTTTGCTGTCGCGCCGTCAGTGCCCAGGCTATTCTGGCCAGCTTGTTTGCCAGAGCACAGGTGACGACAAAGTTGCTTTTCCGACACAACAACTCCCTGACCCAGTCGGCCAACTTGCCAGACTGGTGTTCCAGTTTTTGTATGAATACCCTGGCACACTGAACCAACAAAGTTCGGATCTTTTTGTTGCCCCGCTTGCTAATCCCTAACAATGTCGTCCGACCTCCCGTGCTGTACTGTCGGGGTACCAGCCCTGTTGCCGCCGCAAAGTCACGGCTGCTGGCGTACTGCTTCCCGTCGCCAATCTCA
+GGTACCCCGACAGTACAGCACGGGAGGTCGGACGACATTGTTAGGGATTAGCAAGCGGGGCAACAAAAAGATCCGAACTTTGTTGGTTCAGTGTGCCAGGGTATTCATACAAAAACTGGAACACCAGTCTGGCAAGTTGGCCGACTGGGTCAGGGAGTTGTTGTGTCGGAAAAGCAACTTTGTCGTCACCTGTGCTCTGGCAAACAAGCTGGCCAGAATAGCCTGGGCACTGACGGCGCGACAGCAAACTTACGAAGCATAAAGGCAGAAATACACCAGTTTAAACAATCATTCATCTGGTTTTGCGAATACTGATATTGATGATACTAACGGCCCACCGGCCTGTTGAGGAAC
+NODE	52	71	5984	5984	0	0
+TCCTCCATGGTCTGGCGATTAAGGGGGTTAAATGCCACGGGACACGACCAGCTTTCCTCCATGGTCTGGCG
+ACCATGGAGGAAAGCTGGTTGCGTACCGTGGCATTTAACCCCCTTAATCGCCAGACCATGGAGGAAAGCTG
+NODE	53	169	62531	54018	0	0
+AGTTGCCATGTTTTACGGCAGTGAGAGCAGAGATAGCGCTGATGTCCGGCGGTGCTTTTGCCGTTACGCACCACCCCGTCAGTAGCTGAACAGGAGGGACAGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACTAAATCAGTAAGTTGGCA
+CTATCAGCTGTCCCTCCTGTTCAGCTACTGACGGGGTGGTGCGTAACGGCAAAAGCACCGCCGGACATCAGCGCTATCTCTGCTCTCACTGCCGTAAAACATGGCAACTGCAGTTCACTTACACCGCTTCTCAACCCGGTACGCACCAGAAAATCATTGATATGGCCAT
+NODE	54	8	2392	2392	0	0
+GCATCACC
+TTCTGTTT
+NODE	55	1	163	163	0	0
+C
+C
+NODE	56	1	148	148	0	0
+T
+C
+NODE	57	4	584	584	0	0
+ATAT
+GCTG
+NODE	58	2	302	302	0	0
+GG
+TT
+NODE	59	20	1406	1406	0	0
+GCCACGGTACGCAACCAGCT
+GCGTGTCCCATGGAATTTAA
+NODE	60	1	154	154	0	0
+T
+G
+NODE	61	1	155	155	0	0
+T
+C
+ARC	1	-60	78
+ARC	-1	-54	73
+ARC	2	45	66
+ARC	-2	-30	71
+ARC	3	48	86
+ARC	-3	9	78
+ARC	4	-57	69
+ARC	-4	-57	74
+ARC	5	-30	70
+ARC	-5	-20	73
+ARC	6	-20	73
+ARC	-6	-29	63
+ARC	7	-54	57
+ARC	-7	46	90
+ARC	8	9	58
+ARC	-8	22	65
+ARC	9	10	64
+ARC	9	18	84
+ARC	10	-61	79
+ARC	11	50	78
+ARC	-11	-61	72
+ARC	12	13	67
+ARC	-12	-13	68
+ARC	13	14	67
+ARC	-13	-38	69
+ARC	14	-50	68
+ARC	15	-45	138
+ARC	15	57	143
+ARC	-15	-56	147
+ARC	-15	58	146
+ARC	16	24	72
+ARC	-16	-20	70
+ARC	17	-29	223
+ARC	-17	40	203
+ARC	18	-55	82
+ARC	19	-46	69
+ARC	-19	60	70
+ARC	-20	-43	160
+ARC	-20	-35	71
+ARC	21	22	86
+ARC	-21	-55	77
+ARC	22	-34	137
+ARC	23	24	141
+ARC	-23	-37	62
+ARC	-23	26	76
+ARC	24	-51	73
+ARC	24	32	136
+ARC	25	43	85
+ARC	-25	45	66
+ARC	26	30	79
+ARC	27	56	70
+ARC	-27	-58	86
+ARC	28	29	304
+ARC	28	39	96
+ARC	-28	31	89
+ARC	-28	36	292
+ARC	-30	37	70
+ARC	31	53	74
+ARC	32	34	134
+ARC	33	56	68
+ARC	-33	-58	63
+ARC	34	42	80
+ARC	-34	51	78
+ARC	-35	43	77
+ARC	36	53	292
+ARC	-38	-53	76
+ARC	39	40	57
+ARC	40	-48	163
+ARC	40	61	151
+ARC	41	46	73
+ARC	-41	-44	76
+ARC	42	48	79
+ARC	44	59	62
+ARC	-44	-52	76
+ARC	-44	-47	69
+ARC	46	47	87
+ARC	49	50	66
+ARC	-49	-50	76
+ARC	-52	-60	74
+ARC	53	54	292
+ARC	54	55	161
+ARC	59	60	75
diff --git a/command_line/commoncommandlinefunctions.cpp b/command_line/commoncommandlinefunctions.cpp
new file mode 100644
index 0000000..9e74c6a
--- /dev/null
+++ b/command_line/commoncommandlinefunctions.cpp
@@ -0,0 +1,1307 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "commoncommandlinefunctions.h"
+#include "../graph/assemblygraph.h"
+#include <QDir>
+#include "../blast/blastsearch.h"
+#include <QApplication>
+#include "../program/memory.h"
+#include <limits>
+
+
+QStringList getArgumentList(int argc, char *argv[])
+{
+    QStringList arguments;
+    for (int i = 1; i < argc; ++i)
+    {
+        QString argument = argv[i];
+        arguments.push_back(argument);
+    }
+    return arguments;
+}
+
+
+
+void getSettingsUsage(QStringList * text)
+{
+    QString dashes = "";
+    for (int i = 0; i < g_memory->terminalWidth - 10; ++i)
+        dashes += '-';
+
+    *text << "Settings: The following options configure the Bandage settings that are available in the Bandage GUI.";
+    *text << "";
+    *text << "Colours can be specified using hex values, with or without an alpha channel, (e.g. #FFB6C1 or #7FD2B48C) or using standard colour names (e.g. red, yellowgreen or skyblue).  Note that hex colours will either need to be enclosed in quotes (e.g. \"#FFB6C1\") or have the hash symbol escaped (e.g. \\#FFB6C1).";
+    *text << "";
+    *text << "Graph scope";
+    *text << dashes;
+    *text << "These settings control the graph scope.  If the aroundnodes scope is used, then the --nodes option must also be used.  If the aroundblast scope is used, a BLAST query must be given with the --query option.";
+    getGraphScopeOptions(text);
+    *text << "--double            Draw graph in double mode (default: off)";
+    *text << "";
+    *text << "Graph size";
+    *text << dashes;
+    *text << "--nodelen <float>   Node length per megabase " + getRangeAndDefault(g_settings->manualNodeLengthPerMegabase, "auto");
+    *text << "--minnodlen <float> Minimum node length " + getRangeAndDefault(g_settings->minimumNodeLength);
+    *text << "--edgelen <float>   Edge length " + getRangeAndDefault(g_settings->edgeLength);
+    *text << "--edgewidth <float> Edge width " + getRangeAndDefault(g_settings->edgeWidth);
+    *text << "--doubsep <float>   Double mode separation " + getRangeAndDefault(g_settings->doubleModeNodeSeparation);
+    *text << "";
+    *text << "Graph layout";
+    *text << dashes;
+    *text << "--nodseglen <float> Node segment length " + getRangeAndDefault(g_settings->nodeSegmentLength);
+    *text << "--iter <int>        Graph layout iterations " + getRangeAndDefault(g_settings->graphLayoutQuality);
+    *text << "--linear            Linear graph layout (default: off)" ;
+    *text << "";
+    *text << "Graph appearance";
+    *text << dashes;
+    *text << "--edgecol <col>     Colour for edges " + getDefaultColour(g_settings->edgeColour);
+    *text << "--outcol <col>      Colour for node outlines " + getDefaultColour(g_settings->outlineColour);
+    *text << "--outline <float>   Node outline thickness " + getRangeAndDefault(g_settings->outlineThickness);
+    *text << "--selcol <col>      Colour for selections " + getDefaultColour(g_settings->selectionColour);
+    *text << "--noaa              Disable antialiasing (default: antialiasing on)";
+    *text << "--singlearr         Show node arrowheads in single mode (default: nodes are only displayed with arrowheads in double mode)";
+    *text << "";
+    *text << "Text appearance";
+    *text << dashes;
+    *text << "--textcol <col>     Colour for label text " + getDefaultColour(g_settings->textColour);
+    *text << "--toutcol <col>     Colour for text outline " + getDefaultColour(g_settings->textOutlineColour);
+    *text << "--toutline <float>  Surround text with an outline with this thickness " + getRangeAndDefault(g_settings->textOutlineThickness);
+    *text << "--centre            Node labels appear at the centre of the node (default: off, node labels appear over visible parts of nodes)";
+    *text << "";
+    *text << "Node width";
+    *text << dashes;
+    *text << "Node widths are determined using the following formula:";
+    *text << "a*b*((c/d)^e-1)+1";
+    *text << "  a = average node width";
+    *text << "  b = depth effect on width";
+    *text << "  c = node depth";
+    *text << "  d = mean depth";
+    *text << "  e = power of depth effect on width";
+    *text << "--nodewidth <float> Average node width " + getRangeAndDefault(g_settings->averageNodeWidth);
+    *text << "--depwidth <float>  Depth effect on width " + getRangeAndDefault(g_settings->depthEffectOnWidth);
+    *text << "--deppower <float>  Power of depth effect on width " + getRangeAndDefault(g_settings->depthPower);
+    *text << "";
+    *text << "Node labels";
+    *text << dashes;
+    *text << "--names             Label nodes with name (default: off)";
+    *text << "--lengths           Label nodes with length (default: off)";
+    *text << "--depth         Label nodes with depth (default: off)";
+    *text << "--blasthits         Label BLAST hits (default: off)";
+    *text << "--fontsize <int>    Font size for node labels " + getRangeAndDefault(1, 100, g_settings->labelFont.pointSize());
+    *text << "";
+    *text << "Node colours";
+    *text << dashes;
+    *text << "--colour <scheme>   Node colouring scheme, from one of the following options: random, uniform, depth, blastsolid, blastrainbow (default: random if --query option not used, blastsolid if --query option used)";
+    *text << "";
+    *text << "Random colour scheme";
+    *text << dashes;
+    *text << "These settings only apply when the random colour scheme is used.";
+    *text << "--ransatpos <int>   Positive node saturation " + getRangeAndDefault(g_settings->randomColourPositiveSaturation);
+    *text << "--ransatneg <int>   Negative node saturation " + getRangeAndDefault(g_settings->randomColourNegativeSaturation);
+    *text << "--ranligpos <int>   Positive node lightness " + getRangeAndDefault(g_settings->randomColourPositiveLightness);
+    *text << "--ranligneg <int>   Negative node lightness " + getRangeAndDefault(g_settings->randomColourNegativeLightness);
+    *text << "--ranopapos <int>   Positive node opacity " + getRangeAndDefault(g_settings->randomColourPositiveOpacity);
+    *text << "--ranopaneg <int>   Negative node opacity " + getRangeAndDefault(g_settings->randomColourNegativeOpacity);
+    *text << "";
+    *text << "Uniform colour scheme";
+    *text << dashes;
+    *text << "These settings only apply when the uniform colour scheme is used.";
+    *text << "--unicolpos <col>   Positive node colour " + getDefaultColour(g_settings->uniformPositiveNodeColour);
+    *text << "--unicolneg <col>   Negative node colour " + getDefaultColour(g_settings->uniformNegativeNodeColour);
+    *text << "--unicolspe <col>   Special node colour " + getDefaultColour(g_settings->uniformNodeSpecialColour);
+    *text << "";
+    *text << "Depth colour scheme";
+    *text << dashes;
+    *text << "These settings only apply when the depth colour scheme is used.";
+    *text << "--depcollow <col>   Colour for nodes with depth below the low depth value " + getDefaultColour(g_settings->lowDepthColour);
+    *text << "--depcolhi <col>    Colour for nodes with depth above the high depth value " + getDefaultColour(g_settings->highDepthColour);
+    *text << "--depvallow <float> Low depth value " + getRangeAndDefault(g_settings->lowDepthValue, "auto");
+    *text << "--depvalhi <float>  High depth value " + getRangeAndDefault(g_settings->highDepthValue, "auto");
+    *text << "";
+    *text << "BLAST search";
+    *text << dashes;
+    *text << "--query <fastafile> A FASTA file of either nucleotide or protein sequences to be used as BLAST queries (default: none)";
+    *text << "--blastp <param>    Parameters to be used by blastn and tblastn when conducting a BLAST search in Bandage (default: none). Format BLAST parameters exactly as they would be used for blastn/tblastn on the command line, and enclose them in quotes.";
+    *text << "--alfilter <int>    Alignment length filter for BLAST hits. Hits with shorter alignments will be excluded " + getRangeAndDefault(g_settings->blastAlignmentLengthFilter);
+    *text << "--qcfilter <float>  Query coverage filter for BLAST hits. Hits with less coverage will be excluded " + getRangeAndDefault(g_settings->blastQueryCoverageFilter);
+    *text << "--ifilter <float>   Identity filter for BLAST hits. Hits with less identity will be excluded " + getRangeAndDefault(g_settings->blastIdentityFilter);
+    *text << "--evfilter <sci>    E-value filter for BLAST hits. Hits with larger e-values will be excluded " + getRangeAndDefault(g_settings->blastEValueFilter);
+    *text << "--bsfilter <float>  Bit score filter for BLAST hits. Hits with lower bit scores will be excluded " + getRangeAndDefault(g_settings->blastBitScoreFilter);
+    *text << "";
+    *text << "BLAST query paths";
+    *text << dashes;
+    *text << "These settings control how Bandage searches for query paths after conducting a BLAST search.";
+    *text << "--pathnodes <int>   The number of allowed nodes in a BLAST query path " + getRangeAndDefault(g_settings->maxQueryPathNodes);
+    *text << "--minpatcov <float> Minimum fraction of a BLAST query which must be covered by a query path " + getRangeAndDefault(g_settings->minQueryCoveredByPath);
+    *text << "--minhitcov <float> Minimum fraction of a BLAST query which must be covered by BLAST hits in a query path " + getRangeAndDefault(g_settings->minQueryCoveredByHits);
+    *text << "--minmeanid <float> Minimum mean identity of BLAST hits in a query path " + getRangeAndDefault(g_settings->minMeanHitIdentity);
+    *text << "--maxevprod <sci>   Maximum e-value product for all BLAST hits in a query path " + getRangeAndDefault(g_settings->maxEValueProduct);
+    *text << "--minpatlen <float> Minimum allowed relative path length as compared to the query " + getRangeAndDefault(g_settings->minLengthPercentage);
+    *text << "--maxpatlen <float> Maximum allowed relative path length as compared to the query " + getRangeAndDefault(g_settings->maxLengthPercentage);
+    *text << "--minlendis <int>   Minimum allowed length discrepancy (in bases) between a BLAST query and its path in the graph " + getRangeAndDefault(g_settings->minLengthBaseDiscrepancy);
+    *text << "--maxlendis <int>   Maximum allowed length discrepancy (in bases) between a BLAST query and its path in the graph " + getRangeAndDefault(g_settings->maxLengthBaseDiscrepancy);
+    *text << "";
+}
+
+
+
+void outputText(QString text, QTextStream * out)
+{
+    QStringList list;
+    list << text;
+    outputText(list, out);
+}
+
+void outputText(QStringList text, QTextStream * out)
+{
+    QStringList wrapped;
+
+    bool seenHeaderOrList = false;
+    for (int i = 0; i < text.size(); ++i)
+    {
+        QString line = text[i];
+
+        if (isSectionHeader(line) || isListItem(line))
+            seenHeaderOrList = true;
+
+        if (isError(line))
+            wrapped << wrapText(line, g_memory->terminalWidth, 0, 0);
+        else if (!seenHeaderOrList)
+            wrapped << wrapText(line, g_memory->terminalWidth, 0, 0);
+        else if (isSectionHeader(line) && line.contains("--"))
+            wrapped << wrapText(line, g_memory->terminalWidth, 0, 30);
+        else if (isSectionHeader(line))
+            wrapped << wrapText(line, g_memory->terminalWidth, 0, 10);
+        else if (isListItem(line))
+            wrapped << wrapText(line, g_memory->terminalWidth, 2, 4);
+        else if (isCommand(line))
+            wrapped << wrapText(line, g_memory->terminalWidth, 10, 23);
+        else if (isOption(line))
+            wrapped << wrapText(line, g_memory->terminalWidth, 10, 30);
+        else
+            wrapped << wrapText(line, g_memory->terminalWidth, 10, 10);
+    }
+
+    *out << endl;
+    for (int i = 0; i < wrapped.size(); ++i)
+    {
+        *out << wrapped[i];
+        *out << endl;
+    }
+}
+
+
+//This is in a separate function because the command line tool Bandage reduce
+//also displays these.
+void getGraphScopeOptions(QStringList * text)
+{
+    *text << "--scope <scope>     Graph scope, from one of the following options: entire, aroundnodes, aroundblast, depthrange (default: entire)";
+    *text << "--nodes <list>      A comma-separated list of starting nodes for the aroundnodes scope (default: none)";
+    *text << "--partial           Use partial node name matching (default: exact node name matching)";
+    *text << "--distance <int>    The number of node steps away to draw for the aroundnodes and aroundblast scopes " + getRangeAndDefault(g_settings->nodeDistance);
+    *text << "--mindepth <float>  The minimum allowed depth for the depthrange scope " + getRangeAndDefault(g_settings->minDepthRange);
+    *text << "--maxdepth <float>  The maximum allowed depth for the depthrange scope "  + getRangeAndDefault(g_settings->maxDepthRange);
+}
+
+
+//This function checks the values of the Bandage settings.
+//If everything is fine, it removes the good arguments/values and returns
+//a null string.  If there's a problem, it returns an error message.
+QString checkForInvalidOrExcessSettings(QStringList * arguments)
+{
+    QStringList argumentsCopy = *arguments;
+
+    QStringList validScopeOptions;
+    validScopeOptions << "entire" << "aroundnodes" << "aroundblast" << "depthrange";
+    QString error;
+
+    error = checkOptionForString("--scope", arguments, validScopeOptions); if (error.length() > 0) return error;
+    error = checkOptionForString("--nodes", arguments, QStringList(), "a list of node names"); if (error.length() > 0) return error;
+    checkOptionWithoutValue("--partial", arguments);
+    error = checkOptionForInt("--distance", arguments, g_settings->nodeDistance, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--mindepth", arguments, g_settings->minDepthRange, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--maxdepth", arguments, g_settings->maxDepthRange, false); if (error.length() > 0) return error;
+    if (isOptionPresent("--query", arguments) && g_memory->commandLineCommand == NO_COMMAND) return "A graph must be given (e.g. via Bandage load) to use the --query option";
+    error = checkOptionForFile("--query", arguments); if (error.length() > 0) return error;
+    error = checkOptionForString("--blastp", arguments, QStringList(), "blastn/tblastn parameters"); if (error.length() > 0) return error;
+    checkOptionWithoutValue("--double", arguments);
+    error = checkOptionForFloat("--nodelen", arguments, g_settings->manualNodeLengthPerMegabase, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--minnodlen", arguments, g_settings->minimumNodeLength, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--edgelen", arguments, g_settings->edgeLength, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--doubsep", arguments, g_settings->doubleModeNodeSeparation, false); if (error.length() > 0) return error;
+    error = checkOptionForInt("--iter", arguments, g_settings->graphLayoutQuality, false); if (error.length() > 0) return error;
+    checkOptionWithoutValue("--linear", arguments);
+    error = checkOptionForFloat("--nodseglen", arguments, g_settings->nodeSegmentLength, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--nodewidth", arguments, g_settings->averageNodeWidth, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--depwidth", arguments, g_settings->depthEffectOnWidth, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--deppower", arguments, g_settings->depthPower, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--edgewidth", arguments, g_settings->edgeWidth, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--outline", arguments, g_settings->outlineThickness, false); if (error.length() > 0) return error;
+    checkOptionWithoutValue("--names", arguments);
+    checkOptionWithoutValue("--lengths", arguments);
+    checkOptionWithoutValue("--depth", arguments);
+    checkOptionWithoutValue("--blasthits", arguments);
+    error = checkOptionForInt("--fontsize", arguments, IntSetting(0, 1, 100), false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--toutline", arguments, g_settings->textOutlineThickness, false); if (error.length() > 0) return error;
+    checkOptionWithoutValue("--centre", arguments);
+    error = checkOptionForColour("--edgecol", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--outcol", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--selcol", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--textcol", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--toutcol", arguments); if (error.length() > 0) return error;
+    checkOptionWithoutValue("--noaa", arguments);
+    checkOptionWithoutValue("--singlearr", arguments);
+    QStringList validColourOptions;
+    validColourOptions << "random" << "uniform" << "depth" << "blastsolid" << "blastrainbow";
+    error = checkOptionForString("--colour", arguments, validColourOptions); if (error.length() > 0) return error;
+    error = checkOptionForInt("--ransatpos", arguments, g_settings->randomColourPositiveSaturation, false); if (error.length() > 0) return error;
+    error = checkOptionForInt("--ransatneg", arguments, g_settings->randomColourNegativeSaturation, false); if (error.length() > 0) return error;
+    error = checkOptionForInt("--ranligpos", arguments, g_settings->randomColourPositiveLightness, false); if (error.length() > 0) return error;
+    error = checkOptionForInt("--ranligneg", arguments, g_settings->randomColourNegativeLightness, false); if (error.length() > 0) return error;
+    error = checkOptionForInt("--ranopapos", arguments, g_settings->randomColourPositiveOpacity, false); if (error.length() > 0) return error;
+    error = checkOptionForInt("--ranopaneg", arguments, g_settings->randomColourNegativeOpacity, false); if (error.length() > 0) return error;
+    error = checkOptionForColour("--unicolpos", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--unicolneg", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--unicolspe", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--depcollow", arguments); if (error.length() > 0) return error;
+    error = checkOptionForColour("--depcolhi", arguments); if (error.length() > 0) return error;
+    error = checkTwoOptionsForFloats("--depvallow", "--depvalhi", arguments, g_settings->lowDepthValue, g_settings->highDepthValue, true); if (error.length() > 0) return error;
+    error = checkOptionForInt("--pathnodes", arguments, g_settings->maxQueryPathNodes, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--minpatcov", arguments, g_settings->minQueryCoveredByPath, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--minhitcov", arguments, g_settings->minQueryCoveredByHits, true); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--minmeanid", arguments, g_settings->minMeanHitIdentity, true); if (error.length() > 0) return error;
+    error = checkOptionForSciNot("--maxevprod", arguments, g_settings->maxEValueProduct, true); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--minpatlen", arguments, g_settings->minLengthPercentage, true); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--maxpatlen", arguments, g_settings->maxLengthPercentage, true); if (error.length() > 0) return error;
+    error = checkOptionForInt("--minlendis", arguments, g_settings->minLengthBaseDiscrepancy, true); if (error.length() > 0) return error;
+    error = checkOptionForInt("--maxlendis", arguments, g_settings->maxLengthBaseDiscrepancy, true); if (error.length() > 0) return error;
+    error = checkOptionForInt("--alfilter", arguments, g_settings->blastAlignmentLengthFilter, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--qcfilter", arguments, g_settings->blastQueryCoverageFilter, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--ifilter", arguments, g_settings->blastIdentityFilter, false); if (error.length() > 0) return error;
+    error = checkOptionForSciNot("--evfilter", arguments, g_settings->blastEValueFilter, false); if (error.length() > 0) return error;
+    error = checkOptionForFloat("--bsfilter", arguments, g_settings->blastBitScoreFilter, false); if (error.length() > 0) return error;
+
+    //Make sure that the min depth is less than or equal to the max read
+    //depth.
+    double minDepth = g_settings->minDepthRange;
+    double maxDepth = g_settings->maxDepthRange;
+    if (isOptionPresent("--mindepth", &argumentsCopy))
+        minDepth = getFloatOption("--mindepth", &argumentsCopy);
+    if (isOptionPresent("--maxdepth", &argumentsCopy))
+        maxDepth = getFloatOption("--maxdepth", &argumentsCopy);
+    if (minDepth > maxDepth)
+        return "the maximum depth must be greater than or equal to the minimum depth.";
+
+    //Make sure that the min path length is less than or equal to the max path
+    //length.
+    bool minLengthPercentageOn = g_settings->minLengthPercentage.on;
+    bool maxLengthPercentageOn = g_settings->maxLengthPercentage.on;
+    double minLengthPercentage = g_settings->minLengthPercentage;
+    double maxLengthPercentage = g_settings->maxLengthPercentage;
+    if (isOptionPresent("--minpatlen", &argumentsCopy))
+    {
+        QString optionString = getStringOption("--minpatlen", &argumentsCopy);
+        if (optionString.toLower() == "off")
+            minLengthPercentageOn = false;
+        else
+        {
+            minLengthPercentageOn = true;
+            minLengthPercentage = getFloatOption("--minpatlen", &argumentsCopy);
+        }
+    }
+    if (isOptionPresent("--maxpatlen", &argumentsCopy))
+    {
+        QString optionString = getStringOption("--maxpatlen", &argumentsCopy);
+        if (optionString.toLower() == "off")
+            maxLengthPercentageOn = false;
+        else
+        {
+            maxLengthPercentageOn = true;
+            maxLengthPercentage = getFloatOption("--maxpatlen", &argumentsCopy);
+        }
+    }
+    if (minLengthPercentageOn && maxLengthPercentageOn &&
+            minLengthPercentage > maxLengthPercentage)
+        return "the maximum BLAST query path length discrepancy must be greater than or equal to the minimum length discrepancy.";
+
+    //Make sure that the min length discrepancy is less than or equal to the max
+    //length discrepancy.
+    bool minLengthBaseDiscrepancyOn = g_settings->minLengthBaseDiscrepancy.on;
+    bool maxLengthBaseDiscrepancyOn = g_settings->maxLengthBaseDiscrepancy.on;
+    int minLengthBaseDiscrepancy = g_settings->minLengthBaseDiscrepancy;
+    int maxLengthBaseDiscrepancy = g_settings->maxLengthBaseDiscrepancy;
+    if (isOptionPresent("--minlendis", &argumentsCopy))
+    {
+        QString optionString = getStringOption("--minlendis", &argumentsCopy);
+        if (optionString.toLower() == "off")
+            minLengthBaseDiscrepancyOn = false;
+        else
+        {
+            minLengthBaseDiscrepancyOn = true;
+            minLengthBaseDiscrepancy = getIntOption("--minlendis", &argumentsCopy);
+        }
+    }
+    if (isOptionPresent("--maxlendis", &argumentsCopy))
+    {
+        QString optionString = getStringOption("--maxlendis", &argumentsCopy);
+        if (optionString.toLower() == "off")
+            g_settings->maxLengthBaseDiscrepancy.on = false;
+        else
+        {
+            maxLengthBaseDiscrepancyOn = true;
+            maxLengthBaseDiscrepancy = getIntOption("--maxlendis", &argumentsCopy);
+        }
+    }
+    if (minLengthBaseDiscrepancyOn && maxLengthBaseDiscrepancyOn &&
+            minLengthBaseDiscrepancy > maxLengthBaseDiscrepancy)
+        return "the maximum BLAST query path length discrepancy must be greater than or equal to the minimum length discrepancy.";
+
+    bool blastScope = isOptionAndValuePresent("--scope", "aroundblast", &argumentsCopy);
+    bool queryFile = isOptionPresent("--query", &argumentsCopy);
+    if (blastScope && !queryFile)
+        return "A BLAST query must be given with the --query option when the\naroundblast scope is used.";
+
+    bool nodesScope = isOptionAndValuePresent("--scope", "aroundnodes", &argumentsCopy);
+    bool nodesList = isOptionPresent("--nodes", &argumentsCopy);
+    if (nodesScope && !nodesList)
+        return "A list of starting nodes must be given with the --nodes option\nwhen the aroundnodes scope is used.";
+
+    bool depthScope = isOptionAndValuePresent("--scope", "depthrange", &argumentsCopy);
+    bool minDepthPresent = isOptionPresent("--mindepth", &argumentsCopy);
+    bool maxDepthPresent = isOptionPresent("--maxdepth", &argumentsCopy);
+    if (depthScope && !(minDepthPresent && maxDepthPresent))
+        return "A depth range must be given with the --mindepth and\n--maxdepth options when the aroundnodes scope is used.";
+
+    return checkForExcessArguments(*arguments);
+}
+
+
+
+void parseSettings(QStringList arguments)
+{
+    if (isOptionPresent("--scope", &arguments))
+        g_settings->graphScope = getGraphScopeOption("--scope", &arguments);
+
+    if (isOptionPresent("--distance", &arguments))
+        g_settings->nodeDistance = getIntOption("--distance", &arguments);
+
+    if (isOptionPresent("--mindepth", &arguments))
+        g_settings->minDepthRange = getFloatOption("--mindepth", &arguments);
+    if (isOptionPresent("--maxdepth", &arguments))
+        g_settings->maxDepthRange = getFloatOption("--maxdepth", &arguments);
+
+    if (isOptionPresent("--nodes", &arguments))
+        g_settings->startingNodes = getStringOption("--nodes", &arguments);
+    g_settings->startingNodesExactMatch = !isOptionPresent("--partial", &arguments);
+
+    if (isOptionPresent("--query", &arguments))
+        g_settings->blastQueryFilename = getStringOption("--query", &arguments);
+    if (isOptionPresent("--blastp", &arguments))
+        g_settings->blastSearchParameters = getStringOption("--blastp", &arguments);
+
+    g_settings->doubleMode = isOptionPresent("--double", &arguments);
+
+    if (isOptionPresent("--nodelen", &arguments))
+    {
+        g_settings->manualNodeLengthPerMegabase = getIntOption("--nodelen", &arguments);
+        g_settings->nodeLengthMode = MANUAL_NODE_LENGTH;
+    }
+    if (isOptionPresent("--edgelen", &arguments))
+        g_settings->edgeLength = getFloatOption("--edgelen", &arguments);
+
+    if (isOptionPresent("--iter", &arguments))
+    {
+        int quality = getIntOption("--iter", &arguments);
+        if (quality < 0)
+            quality = 0;
+        if (quality > 4)
+            quality = 4;
+        g_settings->graphLayoutQuality = quality;
+    }
+    g_settings->linearLayout = isOptionPresent("--linear", &arguments);
+
+    if (isOptionPresent("--nodseglen", &arguments))
+        g_settings->nodeSegmentLength = getFloatOption("--nodseglen", &arguments);
+    if (isOptionPresent("--nodewidth", &arguments))
+        g_settings->averageNodeWidth = getFloatOption("--nodewidth", &arguments);
+    if (isOptionPresent("--depwidth", &arguments))
+        g_settings->depthEffectOnWidth = getFloatOption("--depwidth", &arguments);
+    if (isOptionPresent("--deppower", &arguments))
+        g_settings->depthPower = getFloatOption("--deppower", &arguments);
+
+    if (isOptionPresent("--edgewidth", &arguments))
+        g_settings->edgeWidth = getFloatOption("--edgewidth", &arguments);
+    if (isOptionPresent("--outline", &arguments))
+        g_settings->outlineThickness = getFloatOption("--outline", &arguments);
+    g_settings->antialiasing = !isOptionPresent("--noaa", &arguments);
+    g_settings->arrowheadsInSingleMode = isOptionPresent("--singlearr", &arguments);
+
+
+    if (isOptionPresent("--edgecol", &arguments))
+        g_settings->edgeColour = getColourOption("--edgecol", &arguments);
+    if (isOptionPresent("--outcol", &arguments))
+        g_settings->outlineColour = getColourOption("--outcol", &arguments);
+    if (isOptionPresent("--selcol", &arguments))
+        g_settings->selectionColour = getColourOption("--selcol", &arguments);
+    if (isOptionPresent("--textcol", &arguments))
+        g_settings->textColour = getColourOption("--textcol", &arguments);
+    if (isOptionPresent("--toutcol", &arguments))
+        g_settings->textOutlineColour = getColourOption("--toutcol", &arguments);
+    g_settings->positionTextNodeCentre = isOptionPresent("--centre", &arguments);
+
+    g_settings->displayNodeNames = isOptionPresent("--names", &arguments);
+    g_settings->displayNodeLengths = isOptionPresent("--lengths", &arguments);
+    g_settings->displayNodeDepth = isOptionPresent("--depth", &arguments);
+    g_settings->displayBlastHits = isOptionPresent("--blasthits", &arguments);
+
+    if (isOptionPresent("--fontsize", &arguments))
+    {
+        int fontsize = getIntOption("--fontsize", &arguments);
+        QFont font = g_settings->labelFont;
+        font.setPointSize(fontsize);
+        g_settings->labelFont = font;
+    }
+
+    if (isOptionPresent("--toutline", &arguments))
+    {
+        double textOutlineThickness = getFloatOption("--toutline", &arguments);
+        if (textOutlineThickness == 0.0)
+            g_settings->textOutline = false;
+        else
+        {
+            g_settings->textOutline = true;
+            g_settings->textOutlineThickness = textOutlineThickness;
+        }
+    }
+
+    g_settings->nodeColourScheme = getColourSchemeOption("--colour", &arguments);
+
+    if (isOptionPresent("--ransatpos", &arguments))
+        g_settings->randomColourPositiveSaturation = getIntOption("--ransatpos", &arguments);
+    if (isOptionPresent("--ransatneg", &arguments))
+        g_settings->randomColourNegativeSaturation = getIntOption("--ransatneg", &arguments);
+    if (isOptionPresent("--ranligpos", &arguments))
+        g_settings->randomColourPositiveLightness = getIntOption("--ranligpos", &arguments);
+    if (isOptionPresent("--ranligneg", &arguments))
+        g_settings->randomColourNegativeLightness = getIntOption("--ranligneg", &arguments);
+    if (isOptionPresent("--ranopapos", &arguments))
+        g_settings->randomColourPositiveOpacity = getIntOption("--ranopapos", &arguments);
+    if (isOptionPresent("--ranopaneg", &arguments))
+        g_settings->randomColourNegativeOpacity = getIntOption("--ranopaneg", &arguments);
+
+    if (isOptionPresent("--unicolpos", &arguments))
+        g_settings->uniformPositiveNodeColour = getColourOption("--unicolpos", &arguments);
+    if (isOptionPresent("--unicolneg", &arguments))
+        g_settings->uniformNegativeNodeColour = getColourOption("--unicolneg", &arguments);
+    if (isOptionPresent("--unicolspe", &arguments))
+        g_settings->uniformNodeSpecialColour = getColourOption("--unicolspe", &arguments);
+
+    if (isOptionPresent("--depcollow", &arguments))
+        g_settings->lowDepthColour = getColourOption("--depcollow", &arguments);
+    if (isOptionPresent("--depcolhi", &arguments))
+        g_settings->highDepthColour = getColourOption("--depcolhi", &arguments);
+    if (isOptionPresent("--depvallow", &arguments))
+    {
+        g_settings->lowDepthValue = getFloatOption("--depvallow", &arguments);
+        g_settings->autoDepthValue = false;
+    }
+    if (isOptionPresent("--depvalhi", &arguments))
+    {
+        g_settings->highDepthValue = getFloatOption("--depvalhi", &arguments);
+        g_settings->autoDepthValue = false;
+    }
+
+    if (isOptionPresent("--pathnodes", &arguments))
+        g_settings->maxQueryPathNodes = getIntOption("--pathnodes", &arguments);
+    if (isOptionPresent("--minpatcov", &arguments))
+        g_settings->minQueryCoveredByPath = getFloatOption("--minpatcov", &arguments);
+    if (isOptionPresent("--minhitcov", &arguments))
+    {
+        QString optionString = getStringOption("--minhitcov", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->minQueryCoveredByHits.on = false;
+        else
+        {
+            g_settings->minQueryCoveredByHits.on = true;
+            g_settings->minQueryCoveredByHits = getFloatOption("--minhitcov", &arguments);
+        }
+    }
+    if (isOptionPresent("--minmeanid", &arguments))
+    {
+        QString optionString = getStringOption("--minmeanid", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->minMeanHitIdentity.on = false;
+        else
+        {
+            g_settings->minMeanHitIdentity.on = true;
+            g_settings->minMeanHitIdentity = getFloatOption("--minmeanid", &arguments);
+        }
+    }
+    if (isOptionPresent("--maxevprod", &arguments))
+    {
+        QString optionString = getStringOption("--maxevprod", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->maxEValueProduct.on = false;
+        else
+        {
+            g_settings->maxEValueProduct.on = true;
+            g_settings->maxEValueProduct = getSciNotOption("--maxevprod", &arguments);
+        }
+    }
+    if (isOptionPresent("--minpatlen", &arguments))
+    {
+        QString optionString = getStringOption("--minpatlen", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->minLengthPercentage.on = false;
+        else
+        {
+            g_settings->minLengthPercentage.on = true;
+            g_settings->minLengthPercentage = getFloatOption("--minpatlen", &arguments);
+        }
+    }
+    if (isOptionPresent("--maxpatlen", &arguments))
+    {
+        QString optionString = getStringOption("--maxpatlen", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->maxLengthPercentage.on = false;
+        else
+        {
+            g_settings->maxLengthPercentage.on = true;
+            g_settings->maxLengthPercentage = getFloatOption("--maxpatlen", &arguments);
+        }
+    }
+    if (isOptionPresent("--minlendis", &arguments))
+    {
+        QString optionString = getStringOption("--minlendis", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->minLengthBaseDiscrepancy.on = false;
+        else
+        {
+            g_settings->minLengthBaseDiscrepancy.on = true;
+            g_settings->minLengthBaseDiscrepancy = getIntOption("--minlendis", &arguments);
+        }
+    }
+    if (isOptionPresent("--maxlendis", &arguments))
+    {
+        QString optionString = getStringOption("--maxlendis", &arguments);
+        if (optionString.toLower() == "off")
+            g_settings->maxLengthBaseDiscrepancy.on = false;
+        else
+        {
+            g_settings->maxLengthBaseDiscrepancy.on = true;
+            g_settings->maxLengthBaseDiscrepancy = getIntOption("--maxlendis", &arguments);
+        }
+    }
+
+    if (isOptionPresent("--alfilter", &arguments))
+    {
+        g_settings->blastAlignmentLengthFilter.on = true;
+        g_settings->blastAlignmentLengthFilter = getIntOption("--alfilter", &arguments);
+    }
+    if (isOptionPresent("--qcfilter", &arguments))
+    {
+        g_settings->blastQueryCoverageFilter.on = true;
+        g_settings->blastQueryCoverageFilter = getFloatOption("--qcfilter", &arguments);
+    }
+    if (isOptionPresent("--ifilter", &arguments))
+    {
+        g_settings->blastIdentityFilter.on = true;
+        g_settings->blastIdentityFilter = getFloatOption("--ifilter", &arguments);
+    }
+    if (isOptionPresent("--evfilter", &arguments))
+    {
+        g_settings->blastEValueFilter.on = true;
+        g_settings->blastEValueFilter = getSciNotOption("--evfilter", &arguments);
+    }
+    if (isOptionPresent("--bsfilter", &arguments))
+    {
+        g_settings->blastBitScoreFilter.on = true;
+        g_settings->blastBitScoreFilter = getFloatOption("--bsfilter", &arguments);
+    }
+}
+
+
+
+bool checkForHelp(QStringList arguments)
+{
+    int h1 = arguments.indexOf("-h");
+    int h2 = arguments.indexOf("-help");
+    int h3 = arguments.indexOf("--help");
+
+    return (h1 != -1 || h2 != -1 || h3 != -1);
+}
+
+bool checkForHelpAll(QStringList arguments)
+{
+    return (arguments.indexOf("--helpall") != -1);
+}
+
+bool checkForVersion(QStringList arguments)
+{
+    int v1 = arguments.indexOf("-v");
+    int v2 = arguments.indexOf("-version");
+    int v3 = arguments.indexOf("--version");
+
+    return (v1 != -1 || v2 != -1 || v3 != -1);
+}
+
+
+
+//This function checks the value for an integer-accepting command line option.
+//If offOkay is true, then it will also accept "off" as a valid argument.
+//Returns empty string if everything is okay and an error message if there's a
+//problem.  If everything is okay, it also removes the option and its value from
+//arguments.
+QString checkOptionForInt(QString option, QStringList * arguments, IntSetting setting, bool offOkay)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return "";
+
+    int integerIndex = optionIndex + 1;
+
+    //If nothing follows the option, that's a problem.
+    if (integerIndex >= arguments->size())
+        return option + " must be followed by an integer";
+
+    //If the thing following the option isn't an integer, that's a problem.
+    bool optionIsInt;
+    int optionInt = arguments->at(integerIndex).toInt(&optionIsInt);
+    bool optionIsOff = arguments->at(integerIndex).toLower() == "off";
+    if (offOkay && !(optionIsInt || optionIsOff))
+        return option + " must be followed by an integer or \"off\"";
+    if (!offOkay && !optionIsInt)
+        return option + " must be followed by an integer";
+
+    //Check the range of the option.
+    if (optionIsInt)
+    {
+        if (optionInt < setting.min || optionInt > setting.max)
+            return "Value of " + option + " must be between "
+                    + QString::number(setting.min) + " and " + QString::number(setting.max) +
+                    " (inclusive)";
+    }
+
+    //If the code got here, the option and its integer are okay.
+    //Remove them from the arguments.
+    arguments->removeAt(integerIndex);
+    arguments->removeAt(optionIndex);
+
+    return "";
+}
+
+
+//This function checks the value for a float-accepting command line option.
+//If offOkay is true, then it will also accept "off" as a valid argument.
+//Returns empty string if everything is okay and an error message if there's a
+//problem.  If everything is okay, it also removes the option and its value from
+//arguments.
+QString checkOptionForFloat(QString option, QStringList * arguments, FloatSetting setting, bool offOkay)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return "";
+
+    int floatIndex = optionIndex + 1;
+
+    //If nothing follows the option, that's a problem.
+    if (floatIndex >= arguments->size())
+        return option + " must be followed by a number";
+
+    //If the thing following the option isn't a number, that's a problem.
+    bool optionIsFloat;
+    double optionFloat = arguments->at(floatIndex).toDouble(&optionIsFloat);
+    bool optionIsOff = arguments->at(floatIndex).toLower() == "off";
+    if (offOkay && !(optionIsFloat || optionIsOff))
+        return option + " must be followed by a number or \"off\"";
+    if (!offOkay && !optionIsFloat)
+        return option + " must be followed by a number";
+
+    //Check the range of the option.
+    if (optionIsFloat)
+    {
+        if (optionFloat < setting.min || optionFloat > setting.max)
+            return "Value of " + option + " must be between "
+                    + QString::number(setting.min) + " and " + QString::number(setting.max) +
+                    " (inclusive)";
+    }
+
+    //If the code got here, the option and its number are okay.
+    //Remove them from the arguments.
+    arguments->removeAt(floatIndex);
+    arguments->removeAt(optionIndex);
+
+    return "";
+}
+
+
+//This function checks the value for a scientific notation-accepting command
+//line option.  If offOkay is true, then it will also accept "off" as a valid
+//argument.
+//Returns empty string if everything is okay and an error message if there's a
+//problem.  If everything is okay, it also removes the option and its value from
+//arguments.
+QString checkOptionForSciNot(QString option, QStringList * arguments,
+                             SciNotSetting setting, bool offOkay)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return "";
+
+    int sciNotIndex = optionIndex + 1;
+
+    //If nothing follows the option, that's a problem.
+    if (sciNotIndex >= arguments->size())
+        return option + " must be followed by a number in scientific notation";
+
+    //If the thing following the option isn't a number in scientific notation or
+    //"off", that's a problem.
+    bool optionIsSciNot = SciNot::isValidSciNotString(arguments->at(sciNotIndex));
+    bool optionIsOff = arguments->at(sciNotIndex).toLower() == "off";
+    if (offOkay && !(optionIsSciNot || optionIsOff))
+        return option + " must be followed by a number in scientific notation or \"off\"";
+    if (!offOkay && !optionIsSciNot)
+        return option + " must be followed by a number in scientific notation";
+
+    SciNot optionSciNot = SciNot(arguments->at(sciNotIndex));
+
+    //Check the range of the option.
+    if (optionIsSciNot)
+    {
+        if (optionSciNot < setting.min || optionSciNot > setting.max)
+            return "Value of " + option + " must be between "
+                    + setting.min.asString(true) + " and " + setting.max.asString(true) +
+                    " (inclusive)";
+    }
+
+    //If the code got here, the option and its number are okay.
+    //Remove them from the arguments.
+    arguments->removeAt(sciNotIndex);
+    arguments->removeAt(optionIndex);
+
+    return "";
+}
+
+
+//Returns empty string if everything is okay and an error
+//message if there's a problem.  If everything is okay, it
+//also removes the option and its value from arguments.
+QString checkOptionForString(QString option, QStringList * arguments, QStringList validOptionsList, QString validDescription)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return "";
+
+    int stringIndex = optionIndex + 1;
+
+    QString validOptions;
+    for (int i = 0; i < validOptionsList.size(); ++i)
+    {
+        validOptions += validOptionsList.at(i);
+        if (i == validOptionsList.size() - 2)
+            validOptions += " or ";
+        else if (i < validOptionsList.size() - 2)
+            validOptions += ", ";
+    }
+    if (validOptions == "")
+        validOptions = validDescription;
+
+    //If nothing follows the option, that's a problem.
+    if (stringIndex >= arguments->size())
+        return option + " must be followed by " + validOptions;
+
+    //If the thing following the option isn't a valid choice, that's a problem.
+    if (validOptionsList.size() > 0)
+    {
+        QString value = arguments->at(stringIndex);
+        if (!validOptionsList.contains(value, Qt::CaseInsensitive))
+            return option + " must be followed by " + validOptions;
+    }
+
+    //If the code got here, the option and its string are okay.
+    //Remove them from the arguments.
+    arguments->removeAt(stringIndex);
+    arguments->removeAt(optionIndex);
+
+    return "";
+}
+
+
+QString checkOptionForColour(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return "";
+
+    int colIndex = optionIndex + 1;
+
+    //If nothing follows the option, that's a problem.
+    if (colIndex >= arguments->size())
+        return option + " must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)";
+
+    //If the thing following the option isn't a colour, that's a problem.
+    QColor colour(arguments->at(colIndex));
+    if (!colour.isValid())
+        return option + " must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)";
+
+    //If the code got here, the option and its colour are okay.
+    //Remove them from the arguments.
+    arguments->removeAt(colIndex);
+    arguments->removeAt(optionIndex);
+
+    return "";
+}
+
+
+QString checkOptionForFile(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return "";
+
+    int fileIndex = optionIndex + 1;
+
+    //If nothing follows the option, that's a problem.
+    if (fileIndex >= arguments->size())
+        return option + " must be followed by a filename";
+
+    //If the thing that follows the option isn't a file that's a problem
+    if (!checkIfFileExists(arguments->at(fileIndex)))
+        return option + " must be followed by a valid filename";
+
+    //If the code got here, the option and its file are okay.
+    //Remove them from the arguments.
+    arguments->removeAt(fileIndex);
+    arguments->removeAt(optionIndex);
+
+    return "";
+}
+
+
+bool checkIfFileExists(QString filename)
+{
+    QFileInfo checkFile(filename);
+    return (checkFile.exists() && checkFile.isFile());
+}
+
+
+//This function simply removes an option from arguments if it is found.
+void checkOptionWithoutValue(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+
+    //If the option isn't found, that's fine.
+    if (optionIndex == -1)
+        return ;
+
+    //If the code got here, the option is okay.
+    //Remove it from the arguments.
+    arguments->removeAt(optionIndex);
+}
+
+
+//This function checks to make sure either both or neither of the options
+//are used.  It can also optionally check to make sure the second is larger
+//than the first.
+QString checkTwoOptionsForFloats(QString option1, QString option2, QStringList * arguments,
+                                 FloatSetting setting1, FloatSetting setting2,
+                                 bool secondMustBeEqualOrLarger)
+{
+    //First check each option independently
+    QStringList argumentsCopy = *arguments;
+    QString option1Error = checkOptionForFloat(option1, &argumentsCopy, setting1, false);
+    if (option1Error != "")
+        return option1Error;
+    QString option2Error = checkOptionForFloat(option2, &argumentsCopy, setting2, false);
+    if (option2Error != "")
+        return option2Error;
+
+    //Now make sure either both or neither are present.
+    if (isOptionPresent(option1, arguments) != isOptionPresent(option2, arguments))
+        return option1 + " and " + option2 + " must be used together";
+
+    if (secondMustBeEqualOrLarger)
+    {
+        if (getFloatOption(option2, arguments) < getFloatOption(option1, arguments))
+            return option2 + " must be greater than or equal to " + option1;
+    }
+
+    //Now remove the options from the arguments before finishing.
+    checkOptionForFloat(option1, arguments, setting1, false);
+    checkOptionForFloat(option2, arguments, setting2, false);
+    return "";
+}
+
+
+
+bool isOptionPresent(QString option, QStringList * arguments)
+{
+    return (arguments->indexOf(option) > -1);
+}
+
+bool isOptionAndValuePresent(QString option, QString value, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+    if (optionIndex == -1)
+        return false;
+
+    int valueIndex = optionIndex + 1;
+    if (valueIndex >= arguments->size())
+        return false;
+
+    QString optionValue = arguments->at(valueIndex);
+    return (optionValue == value);
+}
+
+
+
+int getIntOption(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+    if (optionIndex == -1)
+        return 0;
+
+    int integerIndex = optionIndex + 1;
+    if (integerIndex >= arguments->size())
+        return 0;
+
+    return arguments->at(integerIndex).toInt();
+}
+
+double getFloatOption(QString option, QStringList * arguments)
+{
+     int optionIndex = arguments->indexOf(option);
+     if (optionIndex == -1)
+         return 0;
+
+     int floatIndex = optionIndex + 1;
+     if (floatIndex >= arguments->size())
+         return 0;
+
+     return arguments->at(floatIndex).toDouble();
+}
+
+
+SciNot getSciNotOption(QString option, QStringList * arguments)
+{
+     int optionIndex = arguments->indexOf(option);
+     if (optionIndex == -1)
+         return 0;
+
+     int sciNotIndex = optionIndex + 1;
+     if (sciNotIndex >= arguments->size())
+         return SciNot();
+
+     return SciNot(arguments->at(sciNotIndex));
+}
+
+NodeColourScheme getColourSchemeOption(QString option, QStringList * arguments)
+{
+    NodeColourScheme defaultScheme = RANDOM_COLOURS;
+    if (isOptionPresent("--query", arguments))
+        defaultScheme = BLAST_HITS_SOLID_COLOUR;
+
+    int optionIndex = arguments->indexOf(option);
+    if (optionIndex == -1)
+        return defaultScheme;
+
+    int colourIndex = optionIndex + 1;
+    if (colourIndex >= arguments->size())
+        return defaultScheme;
+
+    QString colourString = arguments->at(colourIndex).toLower();
+    if (colourString == "random")
+        return RANDOM_COLOURS;
+    else if (colourString == "uniform")
+        return UNIFORM_COLOURS;
+    else if (colourString == "depth")
+        return DEPTH_COLOUR;
+    else if (colourString == "blastsolid")
+        return BLAST_HITS_SOLID_COLOUR;
+    else if (colourString == "blastrainbow")
+        return BLAST_HITS_RAINBOW_COLOUR;
+
+    //Random colours is the default
+    return defaultScheme;
+}
+
+
+GraphScope getGraphScopeOption(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+    if (optionIndex == -1)
+        return WHOLE_GRAPH;
+
+    int scopeIndex = optionIndex + 1;
+    if (scopeIndex >= arguments->size())
+        return WHOLE_GRAPH;
+
+    QString scopeString = arguments->at(scopeIndex).toLower();
+    if (scopeString == "entire")
+        return WHOLE_GRAPH;
+    else if (scopeString == "aroundnodes")
+        return AROUND_NODE;
+    else if (scopeString == "aroundblast")
+        return AROUND_BLAST_HITS;
+    else if (scopeString == "depthrange")
+        return DEPTH_RANGE;
+
+    //Entire graph scope is the default.
+    return WHOLE_GRAPH;
+}
+
+
+QColor getColourOption(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+    if (optionIndex == -1)
+        return QColor();
+
+    int colIndex = optionIndex + 1;
+    if (colIndex >= arguments->size())
+        return QColor();
+
+    return QColor(arguments->at(colIndex));
+}
+
+
+QString getStringOption(QString option, QStringList * arguments)
+{
+    int optionIndex = arguments->indexOf(option);
+    if (optionIndex == -1)
+        return "";
+
+    int stringIndex = optionIndex + 1;
+    if (stringIndex >= arguments->size())
+        return "";
+
+    return arguments->at(stringIndex);
+}
+
+
+
+
+
+
+//This function generates an error if excess arguments are left after
+//parsing.
+QString checkForExcessArguments(QStringList arguments)
+{
+    if (arguments.size() == 0)
+        return "";
+
+    QString invalidOptionText = "Invalid option";
+    if (arguments.size() > 1)
+        invalidOptionText += "s";
+    invalidOptionText += ": ";
+    for (int i = 0; i < arguments.size(); ++i)
+    {
+        invalidOptionText += arguments.at(i);
+        if (i < arguments.size() - 1)
+            invalidOptionText += ", ";
+    }
+
+    return invalidOptionText;
+}
+
+
+void getCommonHelp(QStringList * text)
+{
+    *text << "--help              View this help message";
+    *text << "--helpall           View all command line settings";
+    *text << "--version           View Bandage version number";
+    *text << "";
+}
+
+
+
+bool createBlastTempDirectory()
+{
+    //Running from the command line, it makes more sense to put the temp
+    //directory in the current directory.
+    g_blastSearch->m_tempDirectory = "bandage_temp-" + QString::number(QApplication::applicationPid()) + "/";
+
+    if (!QDir().mkdir(g_blastSearch->m_tempDirectory))
+        return false;
+
+    g_blastSearch->m_blastQueries.createTempQueryFiles();
+    return true;
+}
+
+void deleteBlastTempDirectory()
+{
+    if (g_blastSearch->m_tempDirectory != "" &&
+            QDir(g_blastSearch->m_tempDirectory).exists() &&
+            QDir(g_blastSearch->m_tempDirectory).dirName().contains("bandage_temp"))
+        QDir(g_blastSearch->m_tempDirectory).removeRecursively();
+}
+
+
+
+QString getElapsedTime(QDateTime start, QDateTime end)
+{
+    int msecElapsed = start.msecsTo(end);
+    int secElapsed = msecElapsed / 1000;
+    msecElapsed = msecElapsed % 1000;
+    int minElapsed = secElapsed / 60;
+    secElapsed = secElapsed % 60;
+    int hoursElapsed = minElapsed / 60;
+    minElapsed = minElapsed % 60;
+
+    QString msecString = QString("%1").arg(msecElapsed, 2, 10, QChar('0'));
+    QString secString = QString("%1").arg(secElapsed, 2, 10, QChar('0'));
+    QString minString = QString("%1").arg(minElapsed, 2, 10, QChar('0'));
+    QString hourString = QString("%1").arg(hoursElapsed, 2, 10, QChar('0'));
+
+    return hourString + ":" + minString + ":" + secString + "." + msecString;
+}
+
+
+QStringList wrapText(QString text, int width, int firstLineIndent, int laterLineIndent)
+{
+    QStringList returnList;
+
+    QString firstLineSpaces = "";
+    for (int i = 0; i < firstLineIndent; ++i)
+        firstLineSpaces += ' ';
+    QString laterLineSpaces = "";
+    for (int i = 0; i < laterLineIndent; ++i)
+        laterLineSpaces += ' ';
+
+    text = firstLineSpaces + text;
+
+    //If the terminal width is at the minimum, don't bother wrapping.
+    if (g_memory->terminalWidth <= 50)
+    {
+        returnList << text;
+        return returnList;
+    }
+
+    while (text.length() > width)
+    {
+        QString leftString = text.left(width);
+        int spaceIndex = leftString.lastIndexOf(' ');
+        if (spaceIndex < width / 2)
+            spaceIndex = width;
+
+        leftString = text.left(spaceIndex);
+        returnList << rstrip(leftString);
+        text = laterLineSpaces + text.mid(spaceIndex).trimmed();
+    }
+
+    returnList << text;
+    return returnList;
+}
+
+//http://stackoverflow.com/questions/8215303/how-do-i-remove-trailing-whitespace-from-a-qstring
+QString rstrip(const QString& str)
+{
+    int n = str.size() - 1;
+    for (; n >= 0; --n)
+    {
+        if (!str.at(n).isSpace())
+            return str.left(n + 1);
+    }
+    return "";
+}
+
+QString getRangeAndDefault(IntSetting setting) {return (setting.on) ? getRangeAndDefault(setting.min, setting.max, setting.val) : getRangeAndDefault(setting.min, setting.max, "off");}
+QString getRangeAndDefault(IntSetting setting, QString defaultVal) {return getRangeAndDefault(setting.min, setting.max, defaultVal);}
+QString getRangeAndDefault(FloatSetting setting) {return (setting.on) ? getRangeAndDefault(setting.min, setting.max, setting.val) : getRangeAndDefault(setting.min, setting.max, "off");}
+QString getRangeAndDefault(FloatSetting setting, QString defaultVal) {return getRangeAndDefault(setting.min, setting.max, defaultVal);}
+QString getRangeAndDefault(SciNotSetting setting) {return (setting.on) ? getRangeAndDefault(setting.min.asString(true), setting.max.asString(true), setting.val.asString(true)) : getRangeAndDefault(setting.min.asString(true), setting.max.asString(true), "off");}
+QString getRangeAndDefault(int min, int max, int defaultVal) { return getRangeAndDefault(double(min), double(max), QString::number(defaultVal));}
+QString getRangeAndDefault(int min, int max, QString defaultVal) {return getRangeAndDefault(double(min), double(max), defaultVal);}
+QString getRangeAndDefault(double min, double max, double defaultVal) {return getRangeAndDefault(min, max, QString::number(defaultVal));}
+QString getRangeAndDefault(double min, double max, QString defaultVal) {return getRangeAndDefault(QString::number(min), QString::number(max), defaultVal);}
+
+QString getRangeAndDefault(QString min, QString max, QString defaultVal)
+{
+    return "(" + min + " to " + max + ", default: " + defaultVal + ")";
+}
+
+QString getDefaultColour(QColor colour)
+{
+    return "(default: " + getColourName(colour.name()) + ")";
+}
+
+QString getBandageTitleAsciiArt()
+{
+    return "  ____                  _                  \n |  _ \\                | |                 \n | |_) | __ _ _ __   __| | __ _  __ _  ___ \n |  _ < / _` | '_ \\ / _` |/ _` |/ _` |/ _ \\\n | |_) | (_| | | | | (_| | (_| | (_| |  __/\n |____/ \\__,_|_| |_|\\__,_|\\__,_|\\__, |\\___|\n                                 __/ |     \n                                |___/      ";
+}
+
+bool isOption(QString text)
+{
+    bool option = (text.length() > 2 && text[0] == '-' && text[1] == '-' && text[2] != '-');
+
+    QRegExp rx("^<[\\w_]+>");
+    bool positional = (rx.indexIn(text) != -1);
+
+    return option || positional;
+}
+
+bool isSectionHeader(QString text)
+{
+    //Make an exception:
+    if (text.startsWith("Node widths are determined"))
+        return false;
+
+    QRegExp rx("^[\\w ]+:");
+    return (rx.indexIn(text) != -1);
+}
+
+
+bool isListItem(QString text)
+{
+    return (text.length() > 1 && text[0] == '*' && text[1] == ' ');
+}
+
+bool isCommand(QString text)
+{
+    return text.startsWith("load   ") ||
+            text.startsWith("info   ") ||
+            text.startsWith("image   ") ||
+            text.startsWith("querypaths   ") ||
+            text.startsWith("reduce   ");
+}
+
+
+bool isError(QString text)
+{
+    return text.startsWith("Bandage error");
+}
+
+void getOnlineHelpMessage(QStringList * text)
+{
+    *text << "Online Bandage help: https://github.com/rrwick/Bandage/wiki";
+    *text << "";
+}
+
diff --git a/command_line/commoncommandlinefunctions.h b/command_line/commoncommandlinefunctions.h
new file mode 100644
index 0000000..6394214
--- /dev/null
+++ b/command_line/commoncommandlinefunctions.h
@@ -0,0 +1,108 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef COMMANDCOMMANDLINEFUNCTIONS_H
+#define COMMANDCOMMANDLINEFUNCTIONS_H
+
+#include "../program/globals.h"
+#include <QString>
+#include <QStringList>
+#include <QColor>
+#include <QTextStream>
+#include "../program/scinot.h"
+#include <QDateTime>
+#include <QStringList>
+#include "../program/settings.h"
+
+QStringList getArgumentList(int argc, char *argv[]);
+
+bool checkForHelp(QStringList arguments);
+bool checkForHelpAll(QStringList arguments);
+bool checkForVersion(QStringList arguments);
+
+QString checkOptionForInt(QString option, QStringList * arguments, IntSetting setting, bool offOkay);
+QString checkOptionForFloat(QString option, QStringList * arguments, FloatSetting setting, bool offOkay);
+QString checkOptionForSciNot(QString option, QStringList * arguments, SciNotSetting setting, bool offOkay);
+QString checkOptionForString(QString option, QStringList * arguments,
+                             QStringList validOptionsList,
+                             QString validDescription = "");
+QString checkOptionForColour(QString option, QStringList * arguments);
+QString checkOptionForFile(QString option, QStringList * arguments);
+bool checkIfFileExists(QString filename);
+void checkOptionWithoutValue(QString option, QStringList * arguments);
+QString checkTwoOptionsForFloats(QString option1, QString option2,
+                                 QStringList * arguments,
+                                 FloatSetting setting1,
+                                 FloatSetting setting2,
+                                 bool secondMustBeEqualOrLarger = false);
+
+bool isOptionPresent(QString option, QStringList * arguments);
+bool isOptionAndValuePresent(QString option, QString value,
+                             QStringList * arguments);
+
+int getIntOption(QString option, QStringList * arguments);
+double getFloatOption(QString option, QStringList * arguments);
+SciNot getSciNotOption(QString option, QStringList * arguments);
+QColor getColourOption(QString option, QStringList * arguments);
+NodeColourScheme getColourSchemeOption(QString option, QStringList * arguments);
+GraphScope getGraphScopeOption(QString option, QStringList * arguments);
+QString getStringOption(QString option, QStringList * arguments);
+
+QString checkForInvalidOrExcessSettings(QStringList * arguments);
+QString checkForExcessArguments(QStringList arguments);
+
+void parseSettings(QStringList arguments);
+
+void getCommonHelp(QStringList * text);
+void getSettingsUsage(QStringList *text);
+
+bool createBlastTempDirectory();
+void deleteBlastTempDirectory();
+
+QString getElapsedTime(QDateTime start, QDateTime end);
+
+void getGraphScopeOptions(QStringList * text);
+
+QStringList wrapText(QString text, int width, int firstLineIndent, int laterLineIndent);
+QString rstrip(const QString& str);
+
+
+QString getRangeAndDefault(IntSetting setting);
+QString getRangeAndDefault(IntSetting setting, QString defaultVal);
+QString getRangeAndDefault(FloatSetting setting);
+QString getRangeAndDefault(FloatSetting setting, QString defaultVal);
+QString getRangeAndDefault(SciNotSetting setting);
+QString getRangeAndDefault(int min, int max, int defaultVal);
+QString getRangeAndDefault(int min, int max, int defaultVal);
+QString getRangeAndDefault(int min, int max, QString defaultVal);
+QString getRangeAndDefault(double min, double max, double defaultVal);
+QString getRangeAndDefault(double min, double max, QString defaultVal);
+QString getRangeAndDefault(QString min, QString max, QString defaultVal);
+QString getDefaultColour(QColor colour);
+
+QString getBandageTitleAsciiArt();
+bool isOption(QString text);
+bool isSectionHeader(QString text);
+bool isListItem(QString text);
+bool isCommand(QString text);
+bool isError(QString text);
+void outputText(QString text, QTextStream * out);
+void outputText(QStringList text, QTextStream * out);
+void getOnlineHelpMessage(QStringList * text);
+
+#endif // COMMANDCOMMANDLINEFUNCTIONS_H
diff --git a/command_line/image.cpp b/command_line/image.cpp
new file mode 100644
index 0000000..0ded558
--- /dev/null
+++ b/command_line/image.cpp
@@ -0,0 +1,253 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "image.h"
+#include "commoncommandlinefunctions.h"
+#include "../program/globals.h"
+#include "../ui/mygraphicsscene.h"
+#include "../ui/mygraphicsview.h"
+#include "../graph/assemblygraph.h"
+#include <vector>
+#include "../program/settings.h"
+#include <QPainter>
+#include <QSvgGenerator>
+#include <QDir>
+#include "../blast/blastsearch.h"
+
+int bandageImage(QStringList arguments)
+{
+    QTextStream out(stdout);
+    QTextStream err(stderr);
+
+    if (checkForHelp(arguments))
+    {
+        printImageUsage(&out, false);
+        return 0;
+    }
+
+    if (checkForHelpAll(arguments))
+    {
+        printImageUsage(&out, true);
+        return 0;
+    }
+
+    if (arguments.size() < 2)
+    {
+        printImageUsage(&err, false);
+        return 1;
+    }
+
+    QString graphFilename = arguments.at(0);
+    arguments.pop_front();
+
+    if (!checkIfFileExists(graphFilename))
+    {
+        outputText("Bandage error: " + graphFilename + " does not exist", &err);
+        return 1;
+    }
+
+    QString imageSaveFilename = arguments.at(0);
+    arguments.pop_front();
+
+    QString imageFileExtension = imageSaveFilename.right(4);
+    bool pixelImage;
+    if (imageFileExtension == ".png" || imageFileExtension == ".jpg")
+        pixelImage = true;
+    else if (imageFileExtension == ".svg")
+        pixelImage = false;
+    else
+    {
+        outputText("Bandage error: the output filename must end in .png, .jpg or .svg", &err);
+        return 1;
+    }
+
+    QString error = checkForInvalidImageOptions(arguments);
+    if (error.length() > 0)
+    {
+        outputText("Bandage error: " + error, &err);
+        return 1;
+    }
+
+    bool loadSuccess = g_assemblyGraph->loadGraphFromFile(graphFilename);
+    if (!loadSuccess)
+    {
+        outputText("Bandage error: could not load " + graphFilename, &err);
+        return 1;
+    }
+
+    int width = 0;
+    int height = 0;
+
+    //Since frame rate performance doesn't matter for a fixed image, set the
+    //default node outline to a nonzero value.
+    g_settings->outlineThickness = 0.3;
+
+    parseImageOptions(arguments, &width, &height);
+
+    //For Bandage image, it is necessary to position node labels at the
+    //centre of the node, not the visible centre(s).  This is because there
+    //is no viewport.
+    g_settings->positionTextNodeCentre = true;
+
+    bool blastUsed = isOptionPresent("--query", &arguments);
+
+    if (blastUsed)
+    {
+        if (!createBlastTempDirectory())
+        {
+            err << "Error creating temporary directory for BLAST files" << endl;
+            return 1;
+        }
+
+        QString blastError = g_blastSearch->doAutoBlastSearch();
+
+        if (blastError != "")
+        {
+            err << blastError << endl;
+            return 1;
+        }
+    }
+
+    QString errorTitle;
+    QString errorMessage;
+    std::vector<DeBruijnNode *> startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage,
+                                                                                  g_settings->doubleMode,
+                                                                                  g_settings->startingNodes,
+                                                                                  "all");
+
+    if (errorMessage != "")
+    {
+        err << errorMessage << endl;
+        return 1;
+    }
+
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+
+    MyGraphicsScene scene;
+    g_assemblyGraph->addGraphicsItemsToScene(&scene);
+    scene.setSceneRectangle();
+    double sceneRectAspectRatio = scene.sceneRect().width() / scene.sceneRect().height();
+
+    //Determine image size
+    //If neither height nor width set, use a default of height = 1000.
+    if (height == 0 && width == 0)
+        height = 1000;
+
+    //If only height or width is set, scale the other to fit.
+    if (height > 0 && width == 0)
+        width = height * sceneRectAspectRatio;
+    else if (height == 0 && width > 0)
+        height = width / sceneRectAspectRatio;
+
+    bool success = true;
+    QPainter painter;
+    if (pixelImage)
+    {
+        QImage image(width, height, QImage::Format_ARGB32);
+        image.fill(Qt::white);
+        painter.begin(&image);
+        painter.setRenderHint(QPainter::Antialiasing);
+        painter.setRenderHint(QPainter::TextAntialiasing);
+        scene.render(&painter);
+        success = image.save(imageSaveFilename);
+        painter.end();
+    }
+    else //SVG
+    {
+        QSvgGenerator generator;
+        generator.setFileName(imageSaveFilename);
+        generator.setSize(QSize(width, height));
+        generator.setViewBox(QRect(0, 0, width, height));
+        painter.begin(&generator);
+        painter.fillRect(0, 0, width, height, Qt::white);
+        painter.setRenderHint(QPainter::Antialiasing);
+        painter.setRenderHint(QPainter::TextAntialiasing);
+        scene.render(&painter);
+        painter.end();
+    }
+
+    int returnCode;
+    if (!success)
+    {
+        out << "There was an error writing the image to file." << endl;
+        returnCode = 1;
+    }
+    else
+        returnCode = 0;
+
+    if (blastUsed)
+        deleteBlastTempDirectory();
+
+    return returnCode;
+}
+
+
+void printImageUsage(QTextStream * out, bool all)
+{
+    QStringList text;
+
+    text << "Bandage image will generate an image file of the graph visualisation without opening the GUI.";
+    text << "";
+    text << "Usage:    Bandage image <graph> <outputfile> [options]";
+    text << "";
+    text << "Positional parameters:";
+    text << "<graph>             A graph file of any type supported by Bandage";
+    text << "<outputfile>        The image file to be created (must end in '.jpg', '.png' or '.svg')";
+    text << "";
+    text << "Options:  --height <int>      Image height (default: 1000)";
+    text << "--width <int>       Image width (default: not set)";
+    text << "";
+    text << "If only height or width is set, the other will be determined automatically. If both are set, the image will be exactly that size.";
+    text << "";
+
+    getCommonHelp(&text);
+    if (all)
+        getSettingsUsage(&text);
+    getOnlineHelpMessage(&text);
+
+    outputText(text, out);
+}
+
+QString checkForInvalidImageOptions(QStringList arguments)
+{
+    QString error = checkOptionForInt("--height", &arguments, IntSetting(0, 1, 32767), false);
+    if (error.length() > 0) return error;
+
+    error = checkOptionForInt("--width", &arguments, IntSetting(0, 1, 32767), false);
+    if (error.length() > 0) return error;
+
+    return checkForInvalidOrExcessSettings(&arguments);
+}
+
+
+
+
+//This function parses the command line options.  It assumes that the options
+//have already been checked for correctness.
+void parseImageOptions(QStringList arguments, int * width, int * height)
+{
+    if (isOptionPresent("--height", &arguments))
+        *height = getIntOption("--height", &arguments);
+
+    if (isOptionPresent("--width", &arguments))
+        *width = getIntOption("--width", &arguments);
+
+    parseSettings(arguments);
+}
+
diff --git a/command_line/image.h b/command_line/image.h
new file mode 100644
index 0000000..dc990b4
--- /dev/null
+++ b/command_line/image.h
@@ -0,0 +1,32 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef IMAGE_H
+#define IMAGE_H
+
+#include <QStringList>
+#include "../ui/mainwindow.h"
+#include <QTextStream>
+#include <QApplication>
+
+int bandageImage(QStringList arguments);
+void printImageUsage(QTextStream * out, bool all);
+QString checkForInvalidImageOptions(QStringList arguments);
+void parseImageOptions(QStringList arguments, int * width, int * height);
+
+#endif // IMAGE_H
diff --git a/command_line/info.cpp b/command_line/info.cpp
new file mode 100644
index 0000000..b585f64
--- /dev/null
+++ b/command_line/info.cpp
@@ -0,0 +1,210 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "info.h"
+#include "commoncommandlinefunctions.h"
+#include "../graph/assemblygraph.h"
+#include <QPair>
+
+
+
+int bandageInfo(QStringList arguments)
+{
+    QTextStream out(stdout);
+    QTextStream err(stderr);
+
+    if (checkForHelp(arguments))
+    {
+        printInfoUsage(&out, false);
+        return 0;
+    }
+
+    if (checkForHelpAll(arguments))
+    {
+        printInfoUsage(&out, true);
+        return 0;
+    }
+
+    if (arguments.size() < 1)
+    {
+        printInfoUsage(&err, false);
+        return 1;
+    }
+
+    QString graphFilename = arguments.at(0);
+    arguments.pop_front();
+
+    if (!checkIfFileExists(graphFilename))
+    {
+        outputText("Bandage error: " + graphFilename + " does not exist.", &err);
+        return 1;
+    }
+
+    QString error = checkForInvalidInfoOptions(arguments);
+    if (error.length() > 0)
+    {
+        outputText("Bandage error: " + error, &err);
+        return 1;
+    }
+
+    bool tsv;
+    parseInfoOptions(arguments, &tsv);
+
+    bool loadSuccess = g_assemblyGraph->loadGraphFromFile(graphFilename);
+    if (!loadSuccess)
+    {
+        err << "Bandage error: could not load " << graphFilename << endl;
+        return 1;
+    }
+
+    int nodeCount = g_assemblyGraph->m_nodeCount;
+    int edgeCount = g_assemblyGraph->m_edgeCount;
+    QPair<int, int> overlapRange = g_assemblyGraph->getOverlapRange();
+    int smallestOverlap = overlapRange.first;
+    int largestOverlap = overlapRange.second;
+    int totalLength = g_assemblyGraph->m_totalLength;
+    int totalLengthNoOverlaps = g_assemblyGraph->getTotalLengthMinusEdgeOverlaps();
+    int deadEnds = g_assemblyGraph->getDeadEndCount();
+    double percentageDeadEnds = 100.0 * double(deadEnds) / (2 * nodeCount);
+
+    int n50 = 0;
+    int shortestNode = 0;
+    int firstQuartile = 0;
+    int median = 0;
+    int thirdQuartile = 0;
+    int longestNode = 0;
+    g_assemblyGraph->getNodeStats(&n50, &shortestNode, &firstQuartile, &median, &thirdQuartile, &longestNode);
+
+    int componentCount = 0;
+    int largestComponentLength = 0;
+    g_assemblyGraph->getGraphComponentCountAndLargestComponentSize(&componentCount, &largestComponentLength);
+    long long totalLengthOrphanedNodes = g_assemblyGraph->getTotalLengthOrphanedNodes();
+
+    double medianDepthByBase = g_assemblyGraph->getMedianDepthByBase();
+    long long estimatedSequenceLength = g_assemblyGraph->getEstimatedSequenceLength(medianDepthByBase);
+
+    if (tsv)
+    {
+        out << graphFilename << "\t";
+        out << nodeCount << "\t";
+        out << edgeCount << "\t";
+        out << smallestOverlap << "\t";
+        out << largestOverlap << "\t";
+        out << totalLength << "\t";
+        out << totalLengthNoOverlaps << "\t";
+        out << deadEnds << "\t";
+        out << percentageDeadEnds << "%\t";
+        out << componentCount << "\t";
+        out << largestComponentLength << "\t";
+        out << totalLengthOrphanedNodes << "\t";
+        out << n50 << "\t";
+        out << shortestNode << "\t";
+        out << firstQuartile << "\t";
+        out << median << "\t";
+        out << thirdQuartile << "\t";
+        out << longestNode << "\t";
+        out << medianDepthByBase << "\n";
+        out << estimatedSequenceLength << "\n";
+    }
+    else
+    {
+        out << "Node count:                       " << nodeCount << "\n";
+        out << "Edge count:                       " << edgeCount << "\n";
+        out << "Smallest edge overlap (bp):       " << smallestOverlap << "\n";
+        out << "Largest edge overlap (bp):        " << largestOverlap << "\n";
+        out << "Total length (bp):                " << totalLength << "\n";
+        out << "Total length no overlaps (bp):    " << totalLengthNoOverlaps << "\n";
+        out << "Dead ends:                        " << deadEnds << "\n";
+        out << "Percentage dead ends:             " << percentageDeadEnds << "%\n";
+        out << "Connected components:             " << componentCount << "\n";
+        out << "Largest component (bp):           " << largestComponentLength << "\n";
+        out << "Total length orphaned nodes (bp): " << largestComponentLength << "\n";
+        out << "N50 (bp):                         " << n50 << "\n";
+        out << "Shortest node (bp):               " << shortestNode << "\n";
+        out << "Lower quartile node (bp):         " << firstQuartile << "\n";
+        out << "Median node (bp):                 " << median << "\n";
+        out << "Upper quartile node (bp):         " << thirdQuartile << "\n";
+        out << "Longest node (bp):                " << longestNode << "\n";
+        out << "Median depth:                     " << medianDepthByBase << "\n";
+        out << "Estimated sequence length (bp):   " << estimatedSequenceLength << "\n";
+    }
+
+    return 0;
+}
+
+
+
+void printInfoUsage(QTextStream * out, bool all)
+{
+    QStringList text;
+
+    text << "Bandage info takes a graph file as input and outputs (to stdout) the following statistics about the graph:";
+    text << "* Node count: The number of nodes in the graph. Only positive nodes are counted (i.e. each complementary pair counts as one).";
+    text << "* Edge count: The number of edges in the graph. Only one edge in each complementary pair is counted.";
+    text << "* Smallest edge overlap: The smallest overlap size (in bp) for the edges in the graph.";
+    text << "* Largest edge overlap: The smallest overlap size (in bp) for the edges in the graph. For most graphs this will be the same as the smallest edge overlap (i.e. all edges have the same overlap).";
+    text << "* Total length: The total number of base pairs in the graph.";
+    text << "* Total length no overlaps: The total number of base pairs in the graph, subtracting bases that are duplicated in edge overlaps.";
+    text << "* Dead ends: The number of instances where an end of a node does not connect to any other nodes.";
+    text << "* Percentage dead ends: The proportion of possible dead ends. The maximum number of dead ends is twice the number of nodes (occurs when there are no edges), so this value is the number of dead ends divided by twice the node count.";
+    text << "* Connected components: The number of regions of the graph which are disconnected from each other.";
+    text << "* Largest component: The total number of base pairs in the largest connected component.";
+    text << "* N50: Nodes that are this length or greater will collectively add up to at least half of the total length.";
+    text << "* Shortest node: The length of the shortest node in the graph.";
+    text << "* Lower quartile node: The median node length for the shorter half of the nodes.";
+    text << "* Median node: The median node length for the graph.";
+    text << "* Upper quartile node: The median node length for the longer half of the nodes.";
+    text << "* Longest node: The length of the longest node in the graph.";
+    text << "* Median depth: The median depth of the graph, by base.";
+    text << "* Estimated sequence length: An estimate of the total number of bases in the original sequence, calculated by multiplying each node's length (minus overlaps) by its depth relative to the median.";
+    text << "";
+    text << "Usage:    Bandage info <graph> [options]";
+    text << "";
+    text << "Positional parameters:";
+    text << "<graph>             A graph file of any type supported by Bandage";
+    text << "";
+    text << "Options:  --tsv               Output the information in a single tab-delimited line starting with the graph file";
+    text << "";
+
+    getCommonHelp(&text);
+    if (all)
+        getSettingsUsage(&text);
+    getOnlineHelpMessage(&text);
+
+    outputText(text, out);
+}
+
+
+
+QString checkForInvalidInfoOptions(QStringList arguments)
+{
+    checkOptionWithoutValue("--tsv", &arguments);
+
+    QString error = checkForInvalidOrExcessSettings(&arguments);
+    if (error.length() > 0) return error;
+
+    return checkForInvalidOrExcessSettings(&arguments);
+}
+
+
+
+void parseInfoOptions(QStringList arguments, bool * tsv)
+{
+    int tsvIndex = arguments.indexOf("--tsv");
+    *tsv = (tsvIndex > -1);
+}
diff --git a/command_line/info.h b/command_line/info.h
new file mode 100644
index 0000000..afa3634
--- /dev/null
+++ b/command_line/info.h
@@ -0,0 +1,31 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef INFO_H
+#define INFO_H
+
+#include <QStringList>
+#include <QTextStream>
+
+
+int bandageInfo(QStringList arguments);
+void printInfoUsage(QTextStream * out, bool all);
+QString checkForInvalidInfoOptions(QStringList arguments);
+void parseInfoOptions(QStringList arguments, bool * tsv);
+
+#endif // INFO_H
diff --git a/command_line/load.cpp b/command_line/load.cpp
new file mode 100644
index 0000000..2d711f6
--- /dev/null
+++ b/command_line/load.cpp
@@ -0,0 +1,113 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "load.h"
+#include "commoncommandlinefunctions.h"
+#include <QApplication>
+
+int bandageLoad(QStringList arguments)
+{
+    QTextStream out(stdout);
+    QTextStream err(stderr);
+
+    if (checkForHelp(arguments))
+    {
+        printLoadUsage(&out, false);
+        return 0;
+    }
+
+    if (checkForHelpAll(arguments))
+    {
+        printLoadUsage(&out, true);
+        return 0;
+    }
+
+    if (arguments.size() == 0)
+    {
+        printLoadUsage(&err, false);
+        return 1;
+    }
+
+    QString filename = arguments.at(0);
+    arguments.pop_front();
+
+    if (!checkIfFileExists(filename))
+    {
+        outputText("Bandage error: " + filename + " does not exist", &err);
+        return 1;
+    }
+
+    QString error = checkForInvalidLoadOptions(arguments);
+    if (error.length() > 0)
+    {
+        outputText("Bandage error: " + error, &err);
+        return 1;
+    }
+
+    bool drawGraph;
+    parseLoadOptions(arguments, &drawGraph);
+
+    MainWindow w(filename, drawGraph);
+    w.show();
+    return QApplication::exec();
+}
+
+
+void printLoadUsage(QTextStream * out, bool all)
+{
+    QStringList text;
+
+    text << "Bandage load will open the Bandage GUI and immediately load the specified graph file.";
+    text << "";
+    text << "Usage:    Bandage load <graph> [options]";
+    text << "";
+    text << "Positional parameters:";
+    text << "<graph>             A graph file of any type supported by Bandage";
+    text << "";
+    text << "Options:  --draw              Draw graph after loading";
+    text << "";
+
+    getCommonHelp(&text);
+    if (all)
+        getSettingsUsage(&text);
+    getOnlineHelpMessage(&text);
+
+    outputText(text, out);
+}
+
+
+
+QString checkForInvalidLoadOptions(QStringList arguments)
+{
+    checkOptionWithoutValue("--draw", &arguments);
+
+    QString error = checkForInvalidOrExcessSettings(&arguments);
+    if (error.length() > 0) return error;
+
+    return checkForInvalidOrExcessSettings(&arguments);
+}
+
+
+
+void parseLoadOptions(QStringList arguments, bool * drawGraph)
+{
+    int drawIndex = arguments.indexOf("--draw");
+    *drawGraph = (drawIndex > -1);
+
+    parseSettings(arguments);
+}
diff --git a/command_line/load.h b/command_line/load.h
new file mode 100644
index 0000000..0215c57
--- /dev/null
+++ b/command_line/load.h
@@ -0,0 +1,31 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef LOAD_H
+#define LOAD_H
+
+#include <QStringList>
+#include "../ui/mainwindow.h"
+#include <QTextStream>
+
+int bandageLoad(QStringList arguments);
+void printLoadUsage(QTextStream * out, bool all);
+QString checkForInvalidLoadOptions(QStringList arguments);
+void parseLoadOptions(QStringList arguments, bool *drawGraph);
+
+#endif // LOAD_H
diff --git a/command_line/querypaths.cpp b/command_line/querypaths.cpp
new file mode 100644
index 0000000..b9517d0
--- /dev/null
+++ b/command_line/querypaths.cpp
@@ -0,0 +1,319 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "querypaths.h"
+#include "commoncommandlinefunctions.h"
+#include "../program/settings.h"
+#include "../graph/assemblygraph.h"
+#include "../blast/blastsearch.h"
+#include <QDateTime>
+
+int bandageQueryPaths(QStringList arguments)
+{
+    QTextStream out(stdout);
+    QTextStream err(stderr);
+
+    if (checkForHelp(arguments))
+    {
+        printQueryPathsUsage(&out, false);
+        return 0;
+    }
+
+    if (checkForHelpAll(arguments))
+    {
+        printQueryPathsUsage(&out, true);
+        return 0;
+    }
+
+    if (arguments.size() < 3)
+    {
+        printQueryPathsUsage(&err, false);
+        return 1;
+    }
+
+    QString graphFilename = arguments.at(0);
+    arguments.pop_front();
+    if (!checkIfFileExists(graphFilename))
+    {
+        outputText("Bandage error: " + graphFilename, &err);
+        return 1;
+    }
+
+    QString queriesFilename = arguments.at(0);
+    arguments.pop_front();
+    if (!checkIfFileExists(queriesFilename))
+    {
+        outputText("Bandage error: " + queriesFilename, &err);
+        return 1;
+    }
+    g_settings->blastQueryFilename = queriesFilename;
+
+    //Ensure that the --query option isn't used, as that would overwrite the
+    //queries file that is a positional argument.
+    if (isOptionPresent("--query", &arguments))
+    {
+        err << "Bandage error: the --query option cannot be used with Bandage querypaths." << endl;
+        return 1;
+    }
+
+    QString outputPrefix = arguments.at(0);
+    QString tableFilename = outputPrefix + ".tsv";
+    QString pathFastaFilename = outputPrefix + "_paths.fasta";
+    QString hitsFastaFilename = outputPrefix + "_hits.fasta";
+    arguments.pop_front();
+
+    QString error = checkForInvalidQueryPathsOptions(arguments);
+    if (error.length() > 0)
+    {
+        outputText("Bandage error: " + error, &err);
+        return 1;
+    }
+
+    bool pathFasta = false;
+    bool hitsFasta = false;
+    parseQueryPathsOptions(arguments, &pathFasta, &hitsFasta);
+
+    //Check to make sure the output files don't already exist.
+    QFile tableFile(tableFilename);
+    QFile pathsFile(pathFastaFilename);
+    QFile hitsFile(hitsFastaFilename);
+    if (tableFile.exists())
+    {
+        outputText("Bandage error: " + tableFilename + " already exists.", &err);
+        return 1;
+    }
+    if (pathFasta && pathsFile.exists())
+    {
+        outputText("Bandage error: " + pathFastaFilename + " already exists.", &err);
+        return 1;
+    }
+    if (hitsFasta && hitsFile.exists())
+    {
+        outputText("Bandage error: " + hitsFastaFilename + " already exists.", &err);
+        return 1;
+    }
+
+    QDateTime startTime = QDateTime::currentDateTime();
+
+    out << endl << "(" << QDateTime::currentDateTime().toString("dd MMM yyyy hh:mm:ss") << ") Loading graph...        " << flush;
+
+    bool loadSuccess = g_assemblyGraph->loadGraphFromFile(graphFilename);
+    if (!loadSuccess)
+        return 1;
+    out << "done" << endl;
+
+    if (!createBlastTempDirectory())
+    {
+        err << "Error creating temporary directory for BLAST files" << endl;
+        return 1;
+    }
+
+    out << "(" << QDateTime::currentDateTime().toString("dd MMM yyyy hh:mm:ss") << ") Running BLAST search... " << flush;
+    QString blastError = g_blastSearch->doAutoBlastSearch();
+    if (blastError != "")
+    {
+        err << endl << blastError << endl;
+        return 1;
+    }
+    out << "done" << endl;
+    out << "(" << QDateTime::currentDateTime().toString("dd MMM yyyy hh:mm:ss") << ") Saving results...       " << flush;
+
+    //Create the table file.
+    tableFile.open(QIODevice::WriteOnly | QIODevice::Text);
+    QTextStream tableOut(&tableFile);
+
+    //Write the TSV header line.
+    tableOut << "Query\t"
+                "Path\t"
+                "Length\t"
+                "Query covered by path\t"
+                "Query covered by hits\t"
+                "Mean hit identity\t"
+                "Total hit mismatches\t"
+                "Total hit gap opens\t"
+                "Relative length\t"
+                "Length discrepancy\t"
+                "E-value product\t";
+
+    //If the user asked for a separate path sequence file, then the last column
+    //will be a reference to that sequence ID.  If not, the sequence will go in
+    //the table.
+    if (pathFasta)
+        tableOut << "Sequence ID\n";
+    else
+        tableOut << "Sequence\n";
+
+    //If a path sequence FASTA file is used, these will store the sequences
+    //that will go there.
+    QList<QString> pathSequenceIDs;
+    QList<QByteArray> pathSequences;
+
+    //If a hits sequence FASTA file is used, these will store the sequences
+    //that will go there.
+    QList<QString> hitSequenceIDs;
+    QList<QByteArray> hitSequences;
+
+    for (size_t i = 0; i < g_blastSearch->m_blastQueries.m_queries.size(); ++i)
+    {
+        BlastQuery * query = g_blastSearch->m_blastQueries.m_queries[i];
+        QList<BlastQueryPath> queryPaths = query->getPaths();
+
+        for (int j = 0; j < queryPaths.size(); ++j)
+        {
+            BlastQueryPath queryPath = queryPaths[j];
+            Path path = queryPath.getPath();
+
+            tableOut << query->getName() << "\t";
+            tableOut << path.getString(true) << "\t";
+            tableOut << QString::number(path.getLength()) << "\t";
+            tableOut << QString::number(100.0 * queryPath.getPathQueryCoverage()) << "%\t";
+            tableOut << QString::number(100.0 * queryPath.getHitsQueryCoverage()) << "%\t";
+            tableOut << QString::number(queryPath.getMeanHitPercIdentity()) << "%\t";
+            tableOut << QString::number(queryPath.getTotalHitMismatches()) << "\t";
+            tableOut << QString::number(queryPath.getTotalHitGapOpens()) << "\t";
+            tableOut << QString::number(100.0 * queryPath.getRelativePathLength()) << "%\t";
+            tableOut << queryPath.getAbsolutePathLengthDifferenceString(false) << "\t";
+            tableOut << queryPath.getEvalueProduct().asString(false) << "\t";
+
+            //If we are using a separate file for the path sequences, save the
+            //sequence along with its ID to save later, and store the ID here.
+            //Otherwise, just include the sequence in this table.
+            QByteArray sequence = path.getPathSequence();
+            QString pathSequenceID = query->getName() + "_" + QString::number(j+1);
+            if (pathFasta)
+            {
+                pathSequenceIDs.push_back(pathSequenceID);
+                pathSequences.push_back(sequence);
+                tableOut << pathSequenceID << "\n";
+            }
+            else
+                tableOut << sequence << "\n";
+
+            //If we are also saving the hit sequences, save the hit sequence
+            //along with its ID to save later.
+            if (hitsFasta)
+            {
+                QList<BlastHit *> hits = queryPath.getHits();
+                for (int k = 0; k < hits.size(); ++k)
+                {
+                    BlastHit * hit = hits[k];
+                    QString hitSequenceID = pathSequenceID + "_" + QString::number(k+1);
+                    QByteArray hitSequence = hit->getNodeSequence();
+                    hitSequenceIDs.push_back(hitSequenceID);
+                    hitSequences.push_back(hitSequence);
+                }
+            }
+        }
+    }
+
+    //Write the path sequence FASTA file, if appropriate.
+    if (pathFasta)
+    {
+        pathsFile.open(QIODevice::WriteOnly | QIODevice::Text);
+        QTextStream pathsOut(&pathsFile);
+
+        for (int i = 0; i < pathSequenceIDs.size(); ++i)
+        {
+            pathsOut << ">" + pathSequenceIDs[i] + "\n";
+            pathsOut << AssemblyGraph::addNewlinesToSequence(pathSequences[i]);
+        }
+    }
+
+    //Write the hits sequence FASTA file, if appropriate.
+    if (hitsFasta)
+    {
+        hitsFile.open(QIODevice::WriteOnly | QIODevice::Text);
+        QTextStream hitsOut(&hitsFile);
+
+        for (int i = 0; i < hitSequenceIDs.size(); ++i)
+        {
+            hitsOut << ">" << hitSequenceIDs[i] << "\n";
+            hitsOut << AssemblyGraph::addNewlinesToSequence(hitSequences[i]);
+        }
+    }
+
+    out << "done" << endl;
+
+    out << endl << "Results:      " + tableFilename << endl;
+    if (pathFasta)
+        out << "              " + pathFastaFilename << endl;
+    if (hitsFasta)
+        out << "              " + hitsFastaFilename << endl;
+
+    out << endl << "Summary: Total BLAST queries:           " << g_blastSearch->m_blastQueries.getQueryCount() << endl;
+    out << "         Queries with found paths:      " << g_blastSearch->m_blastQueries.getQueryCountWithAtLeastOnePath() << endl;
+    out << "         Total query paths:             " << g_blastSearch->m_blastQueries.getQueryPathCount() << endl;
+
+    out << endl << "Elapsed time: " << getElapsedTime(startTime, QDateTime::currentDateTime()) << endl;
+
+    deleteBlastTempDirectory();
+    return 0;
+}
+
+
+void printQueryPathsUsage(QTextStream * out, bool all)
+{
+    QStringList text;
+
+    text << "Bandage querypaths searches for queries in the graph using BLAST and outputs the results to a tab-delimited file.";
+    text << "";
+    text << "Usage:    Bandage querypaths <graph> <queries> <output_prefix> [options]";
+    text << "";
+    text << "Positional parameters:";
+    text << "<graph>             A graph file of any type supported by Bandage";
+    text << "<queries>           A FASTA file of one or more BLAST queries";
+    text << "<output_prefix>     The output file prefix (used to create the '.tsv' output file, and possibly FASTA files as well, depending on options)";
+    text << "";
+    text << "Options:  --pathfasta         Put all query path sequences in a multi-FASTA file, not in the TSV file";
+    text << "--hitsfasta         Produce a multi-FASTA file of all BLAST hits in the query paths";
+    text << "";
+
+    getCommonHelp(&text);
+    if (all)
+        getSettingsUsage(&text);
+    getOnlineHelpMessage(&text);
+
+    outputText(text, out);
+}
+
+
+
+QString checkForInvalidQueryPathsOptions(QStringList arguments)
+{
+    checkOptionWithoutValue("--pathfasta", &arguments);
+    checkOptionWithoutValue("--hitsfasta", &arguments);
+
+    QString error = checkForInvalidOrExcessSettings(&arguments);
+    if (error.length() > 0) return error;
+
+    return checkForInvalidOrExcessSettings(&arguments);
+}
+
+
+
+void parseQueryPathsOptions(QStringList arguments, bool * pathFasta,
+                            bool * hitsFasta)
+{
+    int pathFastaIndex = arguments.indexOf("--pathfasta");
+    *pathFasta = (pathFastaIndex > -1);
+
+    int hitsFastaIndex = arguments.indexOf("--hitsfasta");
+    *hitsFasta = (hitsFastaIndex > -1);
+
+    parseSettings(arguments);
+}
diff --git a/command_line/querypaths.h b/command_line/querypaths.h
new file mode 100644
index 0000000..fc51c30
--- /dev/null
+++ b/command_line/querypaths.h
@@ -0,0 +1,34 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef QUERYPATHS_H
+#define QUERYPATHS_H
+
+
+#include <QStringList>
+#include "../ui/mainwindow.h"
+#include <QTextStream>
+#include <QApplication>
+
+int bandageQueryPaths(QStringList arguments);
+void printQueryPathsUsage(QTextStream * out, bool all);
+QString checkForInvalidQueryPathsOptions(QStringList arguments);
+void parseQueryPathsOptions(QStringList arguments, bool *pathFasta,
+                            bool * hitsFasta);
+
+#endif // QUERYPATHS_H
diff --git a/command_line/reduce.cpp b/command_line/reduce.cpp
new file mode 100644
index 0000000..acf7527
--- /dev/null
+++ b/command_line/reduce.cpp
@@ -0,0 +1,168 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "reduce.h"
+#include "commoncommandlinefunctions.h"
+#include "../program/globals.h"
+#include "../ui/mygraphicsscene.h"
+#include "../ui/mygraphicsview.h"
+#include "../graph/assemblygraph.h"
+#include <vector>
+#include "../program/settings.h"
+#include <QPainter>
+#include <QSvgGenerator>
+#include <QDir>
+#include "../blast/blastsearch.h"
+
+int bandageReduce(QStringList arguments)
+{
+    QTextStream out(stdout);
+    QTextStream err(stderr);
+
+    if (checkForHelp(arguments))
+    {
+        printReduceUsage(&out, false);
+        return 0;
+    }
+
+    if (checkForHelpAll(arguments))
+    {
+        printReduceUsage(&out, true);
+        return 0;
+    }
+
+    if (arguments.size() < 2)
+    {
+        printReduceUsage(&err, false);
+        return 1;
+    }
+
+    QString inputFilename = arguments.at(0);
+    arguments.pop_front();
+
+    if (!checkIfFileExists(inputFilename))
+    {
+        outputText("Bandage error: " + inputFilename + " does not exist", &err);
+        return 1;
+    }
+
+    QString outputFilename = arguments.at(0);
+    arguments.pop_front();
+    if (!outputFilename.endsWith(".gfa"))
+        outputFilename += ".gfa";
+
+    QString error = checkForInvalidReduceOptions(arguments);
+    if (error.length() > 0)
+    {
+        outputText("Bandage error: " + error, &err);
+        return 1;
+    }
+
+    bool loadSuccess = g_assemblyGraph->loadGraphFromFile(inputFilename);
+    if (!loadSuccess)
+    {
+        outputText("Bandage error: could not load " + inputFilename, &err);
+        return 1;
+    }
+
+    parseSettings(arguments);
+
+    bool blastUsed = isOptionPresent("--query", &arguments);
+    if (blastUsed)
+    {
+        if (!createBlastTempDirectory())
+        {
+            err << "Error creating temporary directory for BLAST files" << endl;
+            return 1;
+        }
+
+        QString blastError = g_blastSearch->doAutoBlastSearch();
+
+        if (blastError != "")
+        {
+            err << blastError << endl;
+            return 1;
+        }
+    }
+
+    QString errorTitle;
+    QString errorMessage;
+    std::vector<DeBruijnNode *> startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage,
+                                                                                  g_settings->doubleMode,
+                                                                                  g_settings->startingNodes,
+                                                                                  "all");
+
+    if (errorMessage != "")
+    {
+        err << errorMessage << endl;
+        return 1;
+    }
+
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+
+    bool success = g_assemblyGraph->saveVisibleGraphToGfa(outputFilename);
+    if (!success)
+    {
+        err << "Bandage was unable to save the graph file." << endl;
+        return 1;
+    }
+
+    return 0;
+}
+
+
+void printReduceUsage(QTextStream * out, bool all)
+{
+    QStringList text;
+
+    text << "Bandage reduce takes an input graph and saves a reduced subgraph using the graph scope settings. The saved graph will be in GFA format.";
+    text << "";
+    text << "If a graph scope is not specified, then the 'entire' scope will be used, in which case this will simply convert the input graph to GFA format.";
+    text << "";
+    text << "Usage:    Bandage reduce <inputgraph> <outputgraph> [options]";
+    text << "";
+    text << "Positional parameters:";
+    text << "<inputgraph>        A graph file of any type supported by Bandage";
+    text << "<outputgraph>       The filename for the GFA graph to be made (if it does not end in '.gfa', that extension will be added)";
+    text << "";
+
+    int nextLineIndex = text.size();
+    getCommonHelp(&text);
+    text[nextLineIndex] = "Options:  " + text[nextLineIndex];
+
+    if (all)
+        getSettingsUsage(&text);
+    else
+    {
+        nextLineIndex = text.size();
+        getGraphScopeOptions(&text);
+        text[nextLineIndex] = "Settings: " + text[nextLineIndex];
+    }
+    text << "";
+    getOnlineHelpMessage(&text);
+
+    outputText(text, out);
+}
+
+
+
+QString checkForInvalidReduceOptions(QStringList arguments)
+{
+    return checkForInvalidOrExcessSettings(&arguments);
+}
+
diff --git a/command_line/reduce.h b/command_line/reduce.h
new file mode 100644
index 0000000..236e748
--- /dev/null
+++ b/command_line/reduce.h
@@ -0,0 +1,33 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef REDUCE_H
+#define REDUCE_H
+
+#include <QStringList>
+#include "../ui/mainwindow.h"
+#include <QTextStream>
+#include <QApplication>
+
+int bandageReduce(QStringList arguments);
+void printReduceUsage(QTextStream * out, bool all);
+QString checkForInvalidReduceOptions(QStringList arguments);
+void parseReduceOptions(QStringList arguments, int * width, int * height);
+
+#endif // REDUCE_H
+
diff --git a/graph/assemblygraph.cpp b/graph/assemblygraph.cpp
new file mode 100644
index 0000000..a27b793
--- /dev/null
+++ b/graph/assemblygraph.cpp
@@ -0,0 +1,3771 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "assemblygraph.h"
+#include <QMapIterator>
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include <limits>
+#include <algorithm>
+#include "../graph/debruijnnode.h"
+#include "../graph/debruijnedge.h"
+#include "../graph/graphicsitemnode.h"
+#include <QFile>
+#include <QTextStream>
+#include <QApplication>
+#include "../graph/graphicsitemedge.h"
+#include "../blast/blastsearch.h"
+#include "../ogdf/energybased/FMMMLayout.h"
+#include "../program/graphlayoutworker.h"
+#include "../program/memory.h"
+#include "path.h"
+#include "../ui/myprogressdialog.h"
+#include <limits>
+#include <QSet>
+#include <QQueue>
+#include <QList>
+#include <math.h>
+#include <QFileInfo>
+#include <QDir>
+#include "ogdfnode.h"
+#include "../command_line/commoncommandlinefunctions.h"
+
+AssemblyGraph::AssemblyGraph() :
+    m_kmer(0), m_contiguitySearchDone(false),
+    m_sequencesLoadedFromFasta(NOT_READY)
+{
+    m_ogdfGraph = new ogdf::Graph();
+    m_edgeArray = new ogdf::EdgeArray<double>(*m_ogdfGraph);
+    m_graphAttributes = new ogdf::GraphAttributes(*m_ogdfGraph, ogdf::GraphAttributes::nodeGraphics |
+                                                  ogdf::GraphAttributes::edgeGraphics);
+    clearGraphInfo();
+}
+
+AssemblyGraph::~AssemblyGraph()
+{
+    delete m_graphAttributes;
+    delete m_edgeArray;
+    delete m_ogdfGraph;
+}
+
+
+void AssemblyGraph::cleanUp()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        delete i.value();
+    }
+    m_deBruijnGraphNodes.clear();
+
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        delete j.value();
+    }
+    m_deBruijnGraphEdges.clear();
+
+    m_contiguitySearchDone = false;
+
+    clearGraphInfo();
+}
+
+
+
+
+
+//This function makes a double edge: in one direction for the given nodes
+//and the opposite direction for their reverse complements.  It adds the
+//new edges to the vector here and to the nodes themselves.
+void AssemblyGraph::createDeBruijnEdge(QString node1Name, QString node2Name,
+                                       int overlap, EdgeOverlapType overlapType)
+{
+    QString node1Opposite = getOppositeNodeName(node1Name);
+    QString node2Opposite = getOppositeNodeName(node2Name);
+
+    //Quit if any of the nodes don't exist.
+    if (!m_deBruijnGraphNodes.contains(node1Name) ||
+            !m_deBruijnGraphNodes.contains(node2Name) ||
+            !m_deBruijnGraphNodes.contains(node1Opposite) ||
+            !m_deBruijnGraphNodes.contains(node2Opposite))
+        return;
+
+    DeBruijnNode * node1 = m_deBruijnGraphNodes[node1Name];
+    DeBruijnNode * node2 = m_deBruijnGraphNodes[node2Name];
+    DeBruijnNode * negNode1 = m_deBruijnGraphNodes[node1Opposite];
+    DeBruijnNode * negNode2 = m_deBruijnGraphNodes[node2Opposite];
+
+    //Quit if the edge already exists
+    const std::vector<DeBruijnEdge *> * edges = node1->getEdgesPointer();
+    for (size_t i = 0; i < edges->size(); ++i)
+    {
+        if ((*edges)[i]->getStartingNode() == node1 &&
+                (*edges)[i]->getEndingNode() == node2)
+            return;
+    }
+
+    //Usually, an edge has a different pair, but it is possible
+    //for an edge to be its own pair.
+    bool isOwnPair = (node1 == negNode2 && node2 == negNode1);
+
+    DeBruijnEdge * forwardEdge = new DeBruijnEdge(node1, node2);
+    DeBruijnEdge * backwardEdge;
+
+    if (isOwnPair)
+        backwardEdge = forwardEdge;
+    else
+        backwardEdge = new DeBruijnEdge(negNode2, negNode1);
+
+    forwardEdge->setReverseComplement(backwardEdge);
+    backwardEdge->setReverseComplement(forwardEdge);
+
+    forwardEdge->setOverlap(overlap);
+    backwardEdge->setOverlap(overlap);
+    forwardEdge->setOverlapType(overlapType);
+    backwardEdge->setOverlapType(overlapType);
+
+    m_deBruijnGraphEdges.insert(QPair<DeBruijnNode*, DeBruijnNode*>(forwardEdge->getStartingNode(), forwardEdge->getEndingNode()), forwardEdge);
+    if (!isOwnPair)
+        m_deBruijnGraphEdges.insert(QPair<DeBruijnNode*, DeBruijnNode*>(backwardEdge->getStartingNode(), backwardEdge->getEndingNode()), backwardEdge);
+
+    node1->addEdge(forwardEdge);
+    node2->addEdge(forwardEdge);
+    negNode1->addEdge(backwardEdge);
+    negNode2->addEdge(backwardEdge);
+}
+
+
+
+
+void AssemblyGraph::clearOgdfGraphAndResetNodes()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->resetNode();
+    }
+
+    m_ogdfGraph->clear();
+    m_edgeArray->init(*m_ogdfGraph);
+}
+
+
+
+
+
+
+//http://www.code10.info/index.php?option=com_content&view=article&id=62:articledna-reverse-complement&catid=49:cat_coding_algorithms_bioinformatics&Itemid=74
+QByteArray AssemblyGraph::getReverseComplement(QByteArray forwardSequence)
+{
+    QByteArray reverseComplement;
+
+    for (int i = forwardSequence.length() - 1; i >= 0; --i)
+    {
+        char letter = forwardSequence.at(i);
+
+        switch (letter)
+        {
+        case 'A': reverseComplement.append('T'); break;
+        case 'T': reverseComplement.append('A'); break;
+        case 'G': reverseComplement.append('C'); break;
+        case 'C': reverseComplement.append('G'); break;
+        case 'a': reverseComplement.append('t'); break;
+        case 't': reverseComplement.append('a'); break;
+        case 'g': reverseComplement.append('c'); break;
+        case 'c': reverseComplement.append('g'); break;
+        case 'R': reverseComplement.append('Y'); break;
+        case 'Y': reverseComplement.append('R'); break;
+        case 'S': reverseComplement.append('S'); break;
+        case 'W': reverseComplement.append('W'); break;
+        case 'K': reverseComplement.append('M'); break;
+        case 'M': reverseComplement.append('K'); break;
+        case 'r': reverseComplement.append('y'); break;
+        case 'y': reverseComplement.append('r'); break;
+        case 's': reverseComplement.append('s'); break;
+        case 'w': reverseComplement.append('w'); break;
+        case 'k': reverseComplement.append('m'); break;
+        case 'm': reverseComplement.append('k'); break;
+        case 'B': reverseComplement.append('V'); break;
+        case 'D': reverseComplement.append('H'); break;
+        case 'H': reverseComplement.append('D'); break;
+        case 'V': reverseComplement.append('B'); break;
+        case 'b': reverseComplement.append('v'); break;
+        case 'd': reverseComplement.append('h'); break;
+        case 'h': reverseComplement.append('d'); break;
+        case 'v': reverseComplement.append('b'); break;
+        case 'N': reverseComplement.append('N'); break;
+        case 'n': reverseComplement.append('n'); break;
+        case '.': reverseComplement.append('.'); break;
+        case '-': reverseComplement.append('-'); break;
+        case '?': reverseComplement.append('?'); break;
+        case '*': reverseComplement.append('*'); break;
+        }
+    }
+
+    return reverseComplement;
+}
+
+
+
+
+void AssemblyGraph::resetEdges()
+{
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> i(m_deBruijnGraphEdges);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->reset();
+    }
+}
+
+
+double AssemblyGraph::getMeanDepth(bool drawnNodesOnly)
+{
+    long double depthSum = 0.0;
+    long long totalLength = 0;
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+
+        if (drawnNodesOnly && node->isNotDrawn())
+            continue;
+
+        totalLength += node->getLength();
+        depthSum += node->getLength() * node->getDepth();
+    }
+
+    if (totalLength == 0)
+        return 0.0;
+    else
+        return depthSum / totalLength;
+}
+
+
+double AssemblyGraph::getMeanDepth(std::vector<DeBruijnNode *> nodes)
+{
+    if (nodes.size() == 0)
+        return 0.0;
+
+    if (nodes.size() == 1)
+        return nodes[0]->getDepth();
+
+    int nodeCount = 0;
+    long double depthSum = 0.0;
+    long long totalLength = 0;
+
+    for (size_t i = 0; i < nodes.size(); ++i)
+    {
+        DeBruijnNode * node = nodes[i];
+        ++nodeCount;
+        totalLength += node->getLength();
+        depthSum += node->getLength() * node->getDepth();
+    }
+
+    //If the total length is zero, that means all nodes have a length of zero.
+    //In this case, just return the average node depth.
+    if (totalLength == 0)
+    {
+        long double depthSum = 0.0;
+        for (size_t i = 0; i < nodes.size(); ++i)
+            depthSum += nodes[i]->getDepth();
+        return depthSum / nodes.size();
+    }
+
+    return depthSum / totalLength;
+}
+
+
+double AssemblyGraph::getMeanDepth(QList<DeBruijnNode *> nodes)
+{
+    int nodeCount = 0;
+    long double depthSum = 0.0;
+    long long totalLength = 0;
+
+    for (int i = 0; i < nodes.size(); ++i)
+    {
+        DeBruijnNode * node = nodes[i];
+        ++nodeCount;
+        totalLength += node->getLength();
+        depthSum += node->getLength() * node->getDepth();
+    }
+
+    if (totalLength == 0)
+        return 0.0;
+    else
+        return depthSum / totalLength;
+}
+
+
+void AssemblyGraph::resetNodeContiguityStatus()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->resetContiguityStatus();
+    }
+    m_contiguitySearchDone = false;
+
+    resetAllNodeColours();
+}
+
+void AssemblyGraph::resetAllNodeColours()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        if (i.value()->getGraphicsItemNode() != 0)
+            i.value()->getGraphicsItemNode()->setNodeColour();
+    }
+}
+
+void AssemblyGraph::clearAllBlastHitPointers()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->clearBlastHits();
+    }
+}
+
+void AssemblyGraph::determineGraphInfo()
+{
+    m_shortestContig = std::numeric_limits<long long>::max();
+    m_longestContig = 0;
+    int nodeCount = 0;
+    long long totalLength = 0;
+    std::vector<double> nodeDepths;
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        long long nodeLength = i.value()->getLength();
+
+        if (nodeLength < m_shortestContig)
+            m_shortestContig = nodeLength;
+        if (nodeLength > m_longestContig)
+            m_longestContig = nodeLength;
+
+        //Only add up the length for positive nodes
+        if (i.value()->isPositiveNode())
+        {
+            totalLength += nodeLength;
+            ++nodeCount;
+        }
+
+        nodeDepths.push_back(i.value()->getDepth());
+    }
+
+    //Count up the edges that will be shown in single mode (i.e. positive
+    //edges).
+    int edgeCount = 0;
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnEdge * edge = j.value();
+        if (edge->isPositiveEdge())
+            ++edgeCount;
+    }
+
+    m_nodeCount = nodeCount;
+    m_edgeCount = edgeCount;
+    m_totalLength = totalLength;
+    m_meanDepth = getMeanDepth();
+
+    std::sort(nodeDepths.begin(), nodeDepths.end());
+
+    double firstQuartileIndex = (nodeDepths.size() - 1) / 4.0;
+    double medianIndex = (nodeDepths.size() - 1) / 2.0;
+    double thirdQuartileIndex = (nodeDepths.size() - 1) * 3.0 / 4.0;
+
+    m_firstQuartileDepth = getValueUsingFractionalIndex(&nodeDepths, firstQuartileIndex);
+    m_medianDepth = getValueUsingFractionalIndex(&nodeDepths, medianIndex);
+    m_thirdQuartileDepth = getValueUsingFractionalIndex(&nodeDepths, thirdQuartileIndex);
+
+    //Set the auto node length setting. This is determined by aiming for a
+    //target average node length. But if the graph is small, the value will be
+    //increased (to avoid having an overly small and simple graph layout).
+    double targetDrawnGraphLength = std::max(m_nodeCount * g_settings->meanNodeLength,
+                                             g_settings->minTotalGraphLength);
+    double megabases = totalLength / 1000000.0;
+    if (megabases > 0.0)
+        g_settings->autoNodeLengthPerMegabase = targetDrawnGraphLength / megabases;
+    else
+        g_settings->autoNodeLengthPerMegabase = 10000.0;
+}
+
+template<typename T> double AssemblyGraph::getValueUsingFractionalIndex(std::vector<T> * v, double index) const
+{
+    if (v->size() == 0)
+        return 0.0;
+    if (v->size() == 1)
+        return double((*v)[0]);
+
+    int wholePart = floor(index);
+
+    if (wholePart < 0)
+        return double((*v)[0]);
+    if (wholePart >= int(v->size()) - 1)
+        return double((*v)[v->size() - 1]);
+
+    double fractionalPart = index - wholePart;
+
+    double piece1 = double((*v)[wholePart]);
+    double piece2 = double((*v)[wholePart+1]);
+
+    return piece1 * (1.0 - fractionalPart) + piece2 * fractionalPart;
+}
+
+
+
+void AssemblyGraph::clearGraphInfo()
+{
+    m_totalLength = 0;
+    m_shortestContig = 0;
+    m_longestContig = 0;
+
+    m_meanDepth = 0.0;
+    m_firstQuartileDepth = 0.0;
+    m_medianDepth = 0.0;
+    m_thirdQuartileDepth = 0.0;
+}
+
+
+
+
+
+
+void AssemblyGraph::buildDeBruijnGraphFromLastGraph(QString fullFileName)
+{
+    m_graphFileType = LAST_GRAPH;
+    m_filename = fullFileName;
+    m_depthTag = "KC";
+
+    bool firstLine = true;
+    QFile inputFile(fullFileName);
+    if (inputFile.open(QIODevice::ReadOnly))
+    {
+        QTextStream in(&inputFile);
+        while (!in.atEnd())
+        {
+            QApplication::processEvents();
+            QString line = in.readLine();
+
+            if (firstLine)
+            {
+                QStringList firstLineParts = line.split(QRegExp("\\s+"));
+                if (firstLineParts.size() > 2)
+                m_kmer = firstLineParts[2].toInt();
+                firstLine = false;
+            }
+
+            if (line.startsWith("NODE"))
+            {
+                QStringList nodeDetails = line.split(QRegExp("\\s+"));
+
+                if (nodeDetails.size() < 4)
+                    throw "load error";
+
+                QString nodeName = nodeDetails.at(1);
+                QString posNodeName = nodeName + "+";
+                QString negNodeName = nodeName + "-";
+
+                int nodeLength = nodeDetails.at(2).toInt();
+
+                double nodeDepth;
+                if (nodeLength > 0)
+                    nodeDepth = double(nodeDetails.at(3).toInt()) / nodeLength; //IS THIS COLUMN ($COV_SHORT1) THE BEST ONE TO USE?
+                else
+                    nodeDepth = double(nodeDetails.at(3).toInt());
+
+                QByteArray sequence = in.readLine().toLocal8Bit();
+                QByteArray revCompSequence = in.readLine().toLocal8Bit();
+
+                DeBruijnNode * node = new DeBruijnNode(posNodeName, nodeDepth, sequence);
+                DeBruijnNode * reverseComplementNode = new DeBruijnNode(negNodeName, nodeDepth, revCompSequence);
+                node->setReverseComplement(reverseComplementNode);
+                reverseComplementNode->setReverseComplement(node);
+                m_deBruijnGraphNodes.insert(posNodeName, node);
+                m_deBruijnGraphNodes.insert(negNodeName, reverseComplementNode);
+            }
+
+            //ARC lines contain edges.
+            else if (line.startsWith("ARC"))
+            {
+                QStringList arcDetails = line.split(QRegExp("\\s+"));
+
+                if (arcDetails.size() < 3)
+                    throw "load error";
+
+                QString node1Name = convertNormalNumberStringToBandageNodeName(arcDetails.at(1));
+                QString node2Name = convertNormalNumberStringToBandageNodeName(arcDetails.at(2));
+
+                createDeBruijnEdge(node1Name, node2Name);
+            }
+
+            //NR lines occur after ARC lines, so we can quit looking when we see one.
+            else if (line.startsWith("NR"))
+                break;
+        }
+        inputFile.close();
+
+        setAllEdgesExactOverlap(0);
+    }
+
+    if (m_deBruijnGraphNodes.size() == 0)
+        throw "load error";
+}
+
+
+//This function takes a normal number string like "5" or "-6" and changes
+//it to "5+" or "6-" - the format of Bandage node names.
+QString AssemblyGraph::convertNormalNumberStringToBandageNodeName(QString number)
+{
+    if (number.at(0) == '-')
+    {
+        number.remove(0, 1);
+        return number + "-";
+    }
+    else
+        return number + "+";
+}
+
+
+
+//This function loads a graph from a GFA file.  It reports whether or not it
+//encountered an unsupported CIGAR string, whether the GFA has custom labels
+//and whether it has custom colours.
+void AssemblyGraph::buildDeBruijnGraphFromGfa(QString fullFileName, bool *unsupportedCigar,
+                                              bool *customLabels, bool *customColours, QString *bandageOptionsError)
+{
+    m_graphFileType = GFA;
+    m_filename = fullFileName;
+
+    *unsupportedCigar = false;
+    *customLabels = false;
+    *customColours = false;
+    *bandageOptionsError = "";
+
+    QFile inputFile(fullFileName);
+    if (inputFile.open(QIODevice::ReadOnly)) {
+        std::vector<QString> edgeStartingNodeNames;
+        std::vector<QString> edgeEndingNodeNames;
+        std::vector<int> edgeOverlaps;
+
+        QMap<QString, QColor> colours;
+        QMap<QString, QString> labels;
+
+        QTextStream in(&inputFile);
+        while (!in.atEnd()) {
+            QApplication::processEvents();
+            QString line = in.readLine();
+
+            QStringList lineParts = line.split(QRegExp("\t"));
+
+            if (lineParts.size() < 1)
+                continue;
+
+            //Lines beginning with "H" are header lines.
+            if (lineParts.at(0) == "H") {
+
+                // Check for a tag containing Bandage options.
+                for (int i = 1; i < lineParts.size(); ++i) {
+                    QString part = lineParts.at(i);
+                    if (part.size() < 6)
+                        continue;
+                    if (part.left(5) != "bn:Z:")
+                        continue;
+                    QString bandageOptionsString = part.right(part.length() - 5);
+                    QStringList bandageOptions = bandageOptionsString.split(' ', QString::SkipEmptyParts);
+                    QStringList bandageOptionsCopy = bandageOptions;
+                    *bandageOptionsError = checkForInvalidOrExcessSettings(&bandageOptionsCopy);
+                    if (bandageOptionsError->length() == 0)
+                        parseSettings(bandageOptions);
+                }
+            }
+
+            //Lines beginning with "S" are sequence (node) lines.
+            if (lineParts.at(0) == "S") {
+                if (lineParts.size() < 3)
+                    throw "load error";
+
+                QString nodeName = lineParts.at(1);
+                if (nodeName.isEmpty())
+                    nodeName = "node";
+
+                QByteArray sequence = lineParts.at(2).toLocal8Bit();
+
+                //Get the tags.
+                bool kcFound = false, rcFound = false, fcFound = false, dpFound = false;
+                double kc = 0.0, rc = 0.0, fc = 0.0, dp = 0.0;
+                int ln = 0;
+                QString lb, l2;
+                QColor cl, c2;
+                for (int i = 3; i < lineParts.size(); ++i) {
+                    QString part = lineParts.at(i);
+                    if (part.size() < 6)
+                        continue;
+                    if (part.at(2) != ':')
+                        continue;
+                    QString tag = part.left(2).toUpper();
+                    QString valString = part.right(part.length() - 5);
+                    if (tag == "KC") {
+                        kcFound = true;
+                        kc = valString.toDouble();
+                    }
+                    if (tag == "RC") {
+                        rcFound = true;
+                        rc = valString.toDouble();
+                    }
+                    if (tag == "FC") {
+                        fcFound = true;
+                        fc = valString.toDouble();
+                    }
+                    if (tag == "DP") {
+                        dpFound = true;
+                        dp = valString.toDouble();
+                    }
+                    if (tag == "LN")
+                        ln = valString.toInt();
+                    if (tag == "LB")
+                        lb = valString;
+                    if (tag == "CL")
+                        cl = QColor(valString);
+                    if (tag == "L2")
+                        l2 = valString;
+                    if (tag == "C2")
+                        c2 = QColor(valString);
+                }
+
+                //GFA can use * to indicate that the sequence is not in the
+                //file.  In this case, try to use the LN tag for length.  If
+                //that's not available, use a length of 0.
+                //If there is a sequence, then the LN tag will be ignored.
+                int length;
+                if (sequence == "*" || sequence == "") {
+                    length = ln;
+                    sequence = "";
+                }
+                else
+                    length = sequence.length();
+
+                //If there is an attribute holding the depth, we'll use that.
+                //If there isn't, then we'll use 1.0.
+                //We try to load 'DP' (depth), 'KC' (k-mer count), 'RC'
+                //(read count) or 'FC'(fragment count) in that order of
+                //preference.
+                //If we use KC, RC or FC for the depth, then that is really a
+                //count, so we need to divide by the sequence length to get the
+                //depth.
+                //We also remember which tag was used so if the graph is saved
+                //we can use the same tag in the output.
+                double nodeDepth = 1.0;
+                if (dpFound) {
+                    m_depthTag = "DP";
+                    nodeDepth = dp;
+                }
+                else if (kcFound) {
+                    m_depthTag = "KC";
+                    if (length > 0)
+                        nodeDepth = kc / length;
+                }
+                else if (rcFound) {
+                    m_depthTag = "RC";
+                    if (length > 0)
+                        nodeDepth = rc / length;
+                }
+                else if (fcFound) {
+                    m_depthTag = "FC";
+                    if (length > 0)
+                        nodeDepth = fc / length;
+                }
+
+                //We check to see if the node ended in a "+" or "-".
+                //If so, we assume that is giving the orientation and leave it.
+                //And if it doesn't end in a "+" or "-", we assume "+" and add
+                //that to the node name.
+                QString lastChar = nodeName.right(1);
+                if (lastChar != "+" && lastChar != "-")
+                    nodeName += "+";
+
+                // Canu nodes start with "tig" which we can remove for simplicity.
+                nodeName = simplifyCanuNodeName(nodeName);
+
+                //Save custom colours and labels to be applied later, after
+                //reverse complement nodes are built.
+                if (cl.isValid()) {
+                    *customColours = true;
+                    colours.insert(nodeName, cl);
+                }
+                if (c2.isValid()) {
+                    *customColours = true;
+                    colours.insert(getOppositeNodeName(nodeName), c2);
+                }
+                if (!lb.isEmpty()) {
+                    *customLabels = true;
+                    labels.insert(nodeName, lb);
+                }
+                if (!l2.isEmpty()) {
+                    *customLabels = true;
+                    labels.insert(getOppositeNodeName(nodeName), l2);
+                }
+
+                DeBruijnNode * node = new DeBruijnNode(nodeName, nodeDepth, sequence, length);
+                m_deBruijnGraphNodes.insert(nodeName, node);
+            }
+
+            //Lines beginning with "L" are link (edge) lines
+            else if (lineParts.at(0) == "L") {
+                //Edges aren't made now, in case their sequence hasn't yet been specified.
+                //Instead, we save the starting and ending nodes and make the edges after
+                //we're done looking at the file.
+
+                if (lineParts.size() < 6)
+                    throw "load error";
+
+                //Parts 1 and 3 hold the node names and parts 2 and 4 hold the corresponding +/-.
+                QString startingNode = lineParts.at(1) + lineParts.at(2);
+                QString endingNode = lineParts.at(3) + lineParts.at(4);
+                startingNode = simplifyCanuNodeName(startingNode);
+                endingNode = simplifyCanuNodeName(endingNode);
+                edgeStartingNodeNames.push_back(startingNode);
+                edgeEndingNodeNames.push_back(endingNode);
+
+                //Part 5 holds the node overlap cigar string.  A "*" means unspecified, so
+                //we 0 for that.
+                QString cigar = lineParts.at(5);
+                if (cigar == "*")
+                    edgeOverlaps.push_back(0);
+                if (cigarContainsOnlyM(cigar))
+                    edgeOverlaps.push_back(getLengthFromSimpleCigar(cigar));
+                else {
+                    edgeOverlaps.push_back(getLengthFromCigar(cigar));
+                    *unsupportedCigar = true;
+                }
+            }
+        }
+
+        //Pair up reverse complements, creating them if necessary.
+        QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+        while (i.hasNext()) {
+            i.next();
+            DeBruijnNode * node = i.value();
+            makeReverseComplementNodeIfNecessary(node);
+        }
+        pointEachNodeToItsReverseComplement();
+
+        //Add any custom colours or labels that were loaded.
+        QMapIterator<QString, QColor> j(colours);
+        while (j.hasNext()) {
+            j.next();
+            QString nodeName = j.key();
+            if (m_deBruijnGraphNodes.contains(nodeName))
+                m_deBruijnGraphNodes[nodeName]->setCustomColour(j.value());
+        }
+        QMapIterator<QString, QString> k(labels);
+        while (k.hasNext()) {
+            k.next();
+            QString nodeName = k.key();
+            if (m_deBruijnGraphNodes.contains(nodeName))
+                m_deBruijnGraphNodes[nodeName]->setCustomLabel(k.value());
+        }
+
+        //Create all of the edges.
+        for (size_t i = 0; i < edgeStartingNodeNames.size(); ++i) {
+            QString node1Name = edgeStartingNodeNames[i];
+            QString node2Name = edgeEndingNodeNames[i];
+            int overlap = edgeOverlaps[i];
+            createDeBruijnEdge(node1Name, node2Name, overlap, EXACT_OVERLAP);
+        }
+    }
+
+    if (m_deBruijnGraphNodes.size() == 0)
+        throw "load error";
+
+    // For Canu graphs, if there is a file called *.layout.readToTig, then we
+    // can use that to get better read depth values.
+    QFileInfo gfaFileInfo(m_filename);
+    QString baseName = gfaFileInfo.completeBaseName();
+    QString readToTigFilename = gfaFileInfo.dir().filePath(baseName + ".layout.readToTig");
+    QFileInfo readToTigFileInfo(readToTigFilename);
+    if (readToTigFileInfo.exists()) {
+        QFile readToTigFile(readToTigFilename);
+        if (readToTigFile.open(QIODevice::ReadOnly)) {
+            // Keep track of how many bases are put into each node.
+            QMap<QString, long long> baseCounts;
+            QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+            while (i.hasNext()) {
+                i.next();
+                DeBruijnNode * node = i.value();
+                if (node->isPositiveNode())
+                    baseCounts[node->getNameWithoutSign()] = 0;
+            }
+
+            QTextStream in(&readToTigFile);
+            while (!in.atEnd()) {
+                QApplication::processEvents();
+                QString line = in.readLine();
+                QStringList lineParts = line.split(QRegExp("\t"));
+                if (lineParts.length() >= 5) {
+                    bool conversionOkay;
+                    long long readStart = lineParts[3].toLongLong(&conversionOkay);
+                    if (!conversionOkay)
+                        continue;
+                    long long readEnd = lineParts[4].toLongLong(&conversionOkay);
+                    if (!conversionOkay)
+                        continue;
+                    long long readLength = (readEnd < readStart) ? (readStart - readEnd) : (readEnd - readStart);
+                    QString nodeName = lineParts[1];
+                    if (baseCounts.contains(nodeName))
+                        baseCounts[nodeName] += readLength;
+                }
+            }
+
+            // A node's depth is its total bases divided by its length.
+            QMapIterator<QString, DeBruijnNode*> j(m_deBruijnGraphNodes);
+            while (j.hasNext()) {
+                j.next();
+                DeBruijnNode * node = j.value();
+                if (node->isPositiveNode()) {
+                    QString nodeName = node->getNameWithoutSign();
+                    double depth;
+                    if (node->getLength() > 0)
+                        depth = double(baseCounts[nodeName]) / double(node->getLength());
+                    else
+                        depth = 1.0;
+                    node->setDepth(depth);
+                    node->getReverseComplement()->setDepth(depth);
+                }
+            }
+        }
+    }
+
+    m_sequencesLoadedFromFasta = NOT_TRIED;
+}
+
+
+
+bool AssemblyGraph::cigarContainsOnlyM(QString cigar)
+{
+    QRegExp rx("\\d+M");
+    return (rx.indexIn(cigar) != -1);
+}
+
+
+//This function assumes that the cigar string is simple: just digits followed
+//by "M".
+int AssemblyGraph::getLengthFromSimpleCigar(QString cigar)
+{
+    cigar.chop(1);
+    return cigar.toInt();
+}
+
+//This function returns the length defined by a cigar string, relative to the
+//second sequence in the edge (the CIGAR reference).
+//Bandage does not fully support non-M CIGAR strings, so this is fairly crude
+//at the moment.
+int AssemblyGraph::getLengthFromCigar(QString cigar)
+{
+    int length = 0;
+
+    length = getCigarCount("M", cigar);
+    length += getCigarCount("=", cigar);
+    length += getCigarCount("X", cigar);
+    length += getCigarCount("I", cigar);
+    length -= getCigarCount("D", cigar);
+    length -= getCigarCount("N", cigar);
+    length += getCigarCount("S", cigar);
+    length += getCigarCount("H", cigar);
+    length += getCigarCount("P", cigar);
+
+    return length;
+}
+
+
+//This function totals up the numbers for any given CIGAR code.
+int AssemblyGraph::getCigarCount(QString cigarCode, QString cigar)
+{
+    QRegExp rx("(\\d+)" + cigarCode);
+    QStringList list;
+    int pos = 0;
+    while ((pos = rx.indexIn(cigar, pos)) != -1)
+    {
+        list << rx.cap(1);
+        pos += rx.matchedLength();
+    }
+
+    int sum = 0;
+    for (int i = 0; i < list.size(); ++i)
+        sum += list.at(i).toInt();
+
+    return sum;
+}
+
+
+void AssemblyGraph::buildDeBruijnGraphFromFastg(QString fullFileName)
+{
+    m_graphFileType = FASTG;
+    m_filename = fullFileName;
+    m_depthTag = "KC";
+
+    QFile inputFile(fullFileName);
+    if (inputFile.open(QIODevice::ReadOnly))
+    {
+        std::vector<QString> edgeStartingNodeNames;
+        std::vector<QString> edgeEndingNodeNames;
+        DeBruijnNode * node = 0;
+
+        QTextStream in(&inputFile);
+        while (!in.atEnd())
+        {
+            QApplication::processEvents();
+
+            QString nodeName;
+            double nodeDepth;
+
+            QString line = in.readLine();
+
+            //If the line starts with a '>', then we are beginning a new node.
+            if (line.startsWith(">"))
+            {
+                line.remove(0, 1); //Remove '>' from start
+                line.chop(1); //Remove ';' from end
+                QStringList nodeDetails = line.split(":");
+
+                QString thisNode = nodeDetails.at(0);
+
+                //A single quote as the last character indicates a negative node.
+                bool negativeNode = thisNode.at(thisNode.size() - 1) == '\'';
+
+                QStringList thisNodeDetails = thisNode.split("_");
+
+                if (thisNodeDetails.size() < 6)
+                    throw "load error";
+
+                nodeName = thisNodeDetails.at(1);
+                if (negativeNode)
+                    nodeName += "-";
+                else
+                    nodeName += "+";
+
+                QString nodeDepthString = thisNodeDetails.at(5);
+                if (negativeNode)
+                {
+                    //It may be necessary to remove a single quote from the end of the depth
+                    if (nodeDepthString.at(nodeDepthString.size() - 1) == '\'')
+                        nodeDepthString.chop(1);
+                }
+                nodeDepth = nodeDepthString.toDouble();
+
+                //Make the node
+                node = new DeBruijnNode(nodeName, nodeDepth, ""); //Sequence string is currently empty - will be added to on subsequent lines of the fastg file
+                m_deBruijnGraphNodes.insert(nodeName, node);
+
+                //The second part of nodeDetails is a comma-delimited list of edge nodes.
+                //Edges aren't made right now (because the other node might not yet exist),
+                //so they are saved into vectors and made after all the nodes have been made.
+                if (nodeDetails.size() == 1 || nodeDetails.at(1).isEmpty())
+                    continue;
+                QStringList edgeNodes = nodeDetails.at(1).split(",");
+                for (int i = 0; i < edgeNodes.size(); ++i)
+                {
+                    QString edgeNode = edgeNodes.at(i);
+
+                    QChar lastChar = edgeNode.at(edgeNode.size() - 1);
+                    bool negativeNode = false;
+                    if (lastChar == '\'')
+                    {
+                        negativeNode = true;
+                        edgeNode.chop(1);
+                    }
+                    QStringList edgeNodeDetails = edgeNode.split("_");
+
+                    if (edgeNodeDetails.size() < 2)
+                        throw "load error";
+
+                    QString edgeNodeName = edgeNodeDetails.at(1);
+                    if (negativeNode)
+                        edgeNodeName += "-";
+                    else
+                        edgeNodeName += "+";
+
+                    edgeStartingNodeNames.push_back(nodeName);
+                    edgeEndingNodeNames.push_back(edgeNodeName);
+                }
+            }
+
+            //If the line does not start with a '>', then this line is part of the
+            //sequence for the last node.
+            else
+            {
+                QByteArray sequenceLine = line.simplified().toLocal8Bit();
+                if (node != 0)
+                    node->appendToSequence(sequenceLine);
+            }
+        }
+
+        inputFile.close();
+
+        //If all went well, each node will have a reverse complement and the code
+        //will never get here.  However, I have noticed that some SPAdes fastg files
+        //have, for some reason, negative nodes with no positive counterpart.  For
+        //that reason, we will now make any reverse complement nodes for nodes that
+        //lack them.
+        QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+        while (i.hasNext())
+        {
+            i.next();
+            DeBruijnNode * node = i.value();
+            makeReverseComplementNodeIfNecessary(node);
+        }
+        pointEachNodeToItsReverseComplement();
+
+
+        //Create all of the edges.
+        for (size_t i = 0; i < edgeStartingNodeNames.size(); ++i)
+        {
+            QString node1Name = edgeStartingNodeNames[i];
+            QString node2Name = edgeEndingNodeNames[i];
+            createDeBruijnEdge(node1Name, node2Name);
+        }
+    }
+
+    autoDetermineAllEdgesExactOverlap();
+
+    if (m_deBruijnGraphNodes.size() == 0)
+        throw "load error";
+}
+
+
+void AssemblyGraph::makeReverseComplementNodeIfNecessary(DeBruijnNode * node)
+{
+    QString reverseComplementName = getOppositeNodeName(node->getName());
+
+    DeBruijnNode * reverseComplementNode = m_deBruijnGraphNodes[reverseComplementName];
+    if (reverseComplementNode == 0)
+    {
+        QByteArray nodeSequence;
+        if (node->sequenceIsMissing())
+            nodeSequence = "*";
+        else
+            nodeSequence = node->getSequence();
+        DeBruijnNode * newNode = new DeBruijnNode(reverseComplementName, node->getDepth(),
+                                                  getReverseComplement(nodeSequence),
+                                                  node->getLength());
+        m_deBruijnGraphNodes.insert(reverseComplementName, newNode);
+    }
+}
+
+
+void AssemblyGraph::pointEachNodeToItsReverseComplement()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * positiveNode = i.value();
+
+        if (positiveNode->isPositiveNode())
+        {
+            DeBruijnNode * negativeNode = m_deBruijnGraphNodes[getOppositeNodeName(positiveNode->getName())];
+            if (negativeNode != 0)
+            {
+                positiveNode->setReverseComplement(negativeNode);
+                negativeNode->setReverseComplement(positiveNode);
+            }
+        }
+    }
+}
+
+
+
+
+void AssemblyGraph::buildDeBruijnGraphFromTrinityFasta(QString fullFileName)
+{
+    m_graphFileType = TRINITY;
+    m_filename = fullFileName;
+    m_depthTag = "";
+
+    std::vector<QString> names;
+    std::vector<QByteArray> sequences;
+    readFastaFile(fullFileName, &names, &sequences);
+
+    std::vector<QString> edgeStartingNodeNames;
+    std::vector<QString> edgeEndingNodeNames;
+
+    for (size_t i = 0; i < names.size(); ++i)
+    {
+        QApplication::processEvents();
+
+        QString name = names[i];
+        QByteArray sequence = sequences[i];
+
+        //The header can come in a few different formats:
+        // TR1|c0_g1_i1 len=280 path=[274:0-228 275:229-279] [-1, 274, 275, -2]
+        // TRINITY_DN31_c1_g1_i1 len=301 path=[279:0-300] [-1, 279, -2]
+        // GG1|c0_g1_i1 len=302 path=[1:0-301]
+        // comp0_c0_seq1 len=286 path=[6:0-285]
+        // c0_g1_i1 len=363 path=[119:0-185 43:186-244 43:245-303 43:304-362]
+
+        //The node names will begin with a string that contains everything
+        //up to the component number (e.g. "c0"), in the same format as it is
+        //in the Trinity.fasta file.  If the node name begins with "TRINITY_DN"
+        //or "TRINITY_GG", "TR" or "GG", then that will be trimmed off.
+
+        if (name.length() < 4)
+            throw "load error";
+
+        int componentStartIndex = name.indexOf(QRegExp("c\\d+_"));
+        int componentEndIndex = name.indexOf("_", componentStartIndex);
+
+        if (componentStartIndex < 0 || componentEndIndex < 0)
+            throw "load error";
+
+        QString component = name.left(componentEndIndex);
+        if (component.startsWith("TRINITY_DN") || component.startsWith("TRINITY_GG"))
+            component = component.remove(0, 10);
+        else if (component.startsWith("TR") || component.startsWith("GG"))
+            component = component.remove(0, 2);
+
+        if (component.length() < 2)
+            throw "load error";
+
+        int pathStartIndex = name.indexOf("path=[") + 6;
+        int pathEndIndex = name.indexOf("]", pathStartIndex);
+        if (pathStartIndex < 0 || pathEndIndex < 0)
+            throw "load error";
+        int pathLength = pathEndIndex - pathStartIndex;
+        QString path = name.mid(pathStartIndex, pathLength);
+        if (path.size() == 0)
+            throw "load error";
+
+        QStringList pathParts = path.split(" ");
+
+        //Each path part is a node
+        QString previousNodeName;
+        for (int i = 0; i < pathParts.length(); ++i)
+        {
+            QString pathPart = pathParts.at(i);
+            QStringList nodeParts = pathPart.split(":");
+            if (nodeParts.size() < 2)
+                throw "load error";
+
+            //Most node numbers will be formatted simply as the number, but some
+            //(I don't know why) have '@' and the start and '@!' at the end.  In
+            //these cases, we must strip those extra characters off.
+            QString nodeNumberString = nodeParts.at(0);
+            if (nodeNumberString.at(0) == '@')
+                nodeNumberString = nodeNumberString.mid(1, nodeNumberString.length() - 3);
+
+            QString nodeName = component + "_" + nodeNumberString + "+";
+
+            //If the node doesn't yet exist, make it now.
+            if (!m_deBruijnGraphNodes.contains(nodeName))
+            {
+                QString nodeRange = nodeParts.at(1);
+                QStringList nodeRangeParts = nodeRange.split("-");
+
+                if (nodeRangeParts.size() < 2)
+                    throw "load error";
+
+                int nodeRangeStart = nodeRangeParts.at(0).toInt();
+                int nodeRangeEnd = nodeRangeParts.at(1).toInt();
+                int nodeLength = nodeRangeEnd - nodeRangeStart + 1;
+
+                QByteArray nodeSequence = sequence.mid(nodeRangeStart, nodeLength);
+                DeBruijnNode * node = new DeBruijnNode(nodeName, 1.0, nodeSequence);
+                m_deBruijnGraphNodes.insert(nodeName, node);
+            }
+
+            //Remember to make an edge for the previous node to this one.
+            if (i > 0)
+            {
+                edgeStartingNodeNames.push_back(previousNodeName);
+                edgeEndingNodeNames.push_back(nodeName);
+            }
+            previousNodeName = nodeName;
+        }
+    }
+
+    //Even though the Trinity.fasta file only contains positive nodes, Bandage
+    //expects negative reverse complements nodes, so make them now.
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        makeReverseComplementNodeIfNecessary(node);
+    }
+    pointEachNodeToItsReverseComplement();
+
+    //Create all of the edges.  The createDeBruijnEdge function checks for
+    //duplicates, so it's okay if we try to add the same edge multiple times.
+    for (size_t i = 0; i < edgeStartingNodeNames.size(); ++i)
+    {
+        QString node1Name = edgeStartingNodeNames[i];
+        QString node2Name = edgeEndingNodeNames[i];
+        createDeBruijnEdge(node1Name, node2Name);
+    }
+
+    setAllEdgesExactOverlap(0);
+
+    if (m_deBruijnGraphNodes.size() == 0)
+        throw "load error";
+}
+
+
+
+//This function builds a graph from an ASQG file.  Bandage expects edges to
+//conform to its expectation: overlaps are only at the ends of sequences and
+//always have the same length in each of the two sequences.  It will not load
+//edges which fail to meet this expectation.  The function's return value is
+//the number of edges which could not be loaded.
+int AssemblyGraph::buildDeBruijnGraphFromAsqg(QString fullFileName)
+{
+    m_graphFileType = ASQG;
+    m_filename = fullFileName;
+    m_depthTag = "";
+
+    int badEdgeCount = 0;
+
+    QFile inputFile(fullFileName);
+    if (inputFile.open(QIODevice::ReadOnly))
+    {
+        std::vector<QString> edgeStartingNodeNames;
+        std::vector<QString> edgeEndingNodeNames;
+        std::vector<int> edgeOverlaps;
+
+        QTextStream in(&inputFile);
+        while (!in.atEnd())
+        {
+            QApplication::processEvents();
+            QString line = in.readLine();
+
+            QStringList lineParts = line.split(QRegExp("\t"));
+
+            if (lineParts.size() < 1)
+                continue;
+
+            //Lines beginning with "VT" are sequence (node) lines
+            if (lineParts.at(0) == "VT")
+            {
+                if (lineParts.size() < 3)
+                    throw "load error";
+
+                //We treat all nodes in this file as positive nodes and add "+" to the end of their names.
+                QString nodeName = lineParts.at(1);
+                if (nodeName.isEmpty())
+                    nodeName = "node";
+                nodeName += "+";
+
+                QByteArray sequence = lineParts.at(2).toLocal8Bit();
+                int length = sequence.length();
+
+                //ASQG files don't seem to include depth, so just set this to one for every node.
+                double nodeDepth = 1.0;
+
+                DeBruijnNode * node = new DeBruijnNode(nodeName, nodeDepth, sequence, length);
+                m_deBruijnGraphNodes.insert(nodeName, node);
+            }
+
+            //Lines beginning with "ED" are edge lines
+            else if (lineParts.at(0) == "ED")
+            {
+                //Edges aren't made now, in case their sequence hasn't yet been specified.
+                //Instead, we save the starting and ending nodes and make the edges after
+                //we're done looking at the file.
+
+                if (lineParts.size() < 2)
+                    throw "load error";
+
+                QStringList edgeParts = lineParts[1].split(" ");
+                if (edgeParts.size() < 8)
+                    throw "load error";
+
+                QString s1Name = edgeParts.at(0);
+                QString s2Name = edgeParts.at(1);
+                int s1OverlapStart = edgeParts.at(2).toInt();
+                int s1OverlapEnd = edgeParts.at(3).toInt();
+                int s1Length = edgeParts.at(4).toInt();
+                int s2OverlapStart = edgeParts.at(5).toInt();
+                int s2OverlapEnd = edgeParts.at(6).toInt();
+                int s2Length = edgeParts.at(7).toInt();
+
+                //We want the overlap region of s1 to be at the end of the node sequence.  If it isn't, we use the
+                //negative node and flip the overlap coordinates.
+                if (s1OverlapEnd == s1Length - 1)
+                    s1Name += "+";
+                else
+                {
+                    s1Name += "-";
+                    int newOverlapStart = s1Length - s1OverlapEnd - 1;
+                    int newOverlapEnd = s1Length - s1OverlapStart - 1;
+                    s1OverlapStart = newOverlapStart;
+                    s1OverlapEnd = newOverlapEnd;
+                }
+
+                //We want the overlap region of s2 to be at the start of the node sequence.  If it isn't, we use the
+                //negative node and flip the overlap coordinates.
+                if (s2OverlapStart == 0)
+                    s2Name += "+";
+                else
+                {
+                    s2Name += "-";
+                    int newOverlapStart = s2Length - s2OverlapEnd - 1;
+                    int newOverlapEnd = s2Length - s2OverlapStart - 1;
+                    s2OverlapStart = newOverlapStart;
+                    s2OverlapEnd = newOverlapEnd;
+                }
+
+                int s1OverlapLength = s1OverlapEnd - s1OverlapStart + 1;
+                int s2OverlapLength = s2OverlapEnd - s2OverlapStart + 1;
+
+                //If the overlap between the two nodes is in agreement and the overlap regions extend to the ends of the
+                //nodes, then we will make the edge.
+                if (s1OverlapLength == s2OverlapLength && s1OverlapEnd == s1Length - 1 && s2OverlapStart == 0)
+                {
+                    edgeStartingNodeNames.push_back(s1Name);
+                    edgeEndingNodeNames.push_back(s2Name);
+                    edgeOverlaps.push_back(s1OverlapLength);
+                }
+                else
+                    ++badEdgeCount;
+            }
+        }
+
+        //Pair up reverse complements, creating them if necessary.
+        QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+        while (i.hasNext())
+        {
+            i.next();
+            DeBruijnNode * node = i.value();
+            makeReverseComplementNodeIfNecessary(node);
+        }
+        pointEachNodeToItsReverseComplement();
+
+        //Create all of the edges.
+        for (size_t i = 0; i < edgeStartingNodeNames.size(); ++i)
+        {
+            QString node1Name = edgeStartingNodeNames[i];
+            QString node2Name = edgeEndingNodeNames[i];
+            int overlap = edgeOverlaps[i];
+            createDeBruijnEdge(node1Name, node2Name, overlap, EXACT_OVERLAP);
+        }
+    }
+
+    if (m_deBruijnGraphNodes.size() == 0)
+        throw "load error";
+
+    return badEdgeCount;
+}
+
+
+void AssemblyGraph::buildDeBruijnGraphFromPlainFasta(QString fullFileName)
+{
+    m_graphFileType = PLAIN_FASTA;
+    m_filename = fullFileName;
+    m_depthTag = "";
+
+    std::vector<QString> names;
+    std::vector<QByteArray> sequences;
+    readFastaFile(fullFileName, &names, &sequences);
+
+    for (size_t i = 0; i < names.size(); ++i)
+    {
+        QApplication::processEvents();
+
+        QString name = names[i];
+        double depth = 1.0;
+        QByteArray sequence = sequences[i];
+
+        // Check to see if the node name matches the Velvet/SPAdes contig format.  If so, we can get the depth and node
+        // number.
+        QStringList thisNodeDetails = name.split("_");
+        if (thisNodeDetails.size() >= 6 && thisNodeDetails[2] == "length" && thisNodeDetails[4] == "cov") {
+            name = thisNodeDetails[1];
+            depth = thisNodeDetails[5].toDouble();
+            m_depthTag = "KC";
+        }
+
+        // If it doesn't match, then we will use the sequence name up to the first space. We'll then look for "depth="
+        // in the rest of the header and use it if possible.
+        else {
+            if (name.contains("depth=")) {
+                QString depthString = name.split("depth=")[1].toLower();
+                if (depthString.contains("x"))
+                    depthString = depthString.split("x")[0];
+                else
+                    depthString = depthString.split(" ")[0];
+                bool ok;
+                double depthFromString = depthString.toFloat(&ok);
+                if (ok)
+                    depth = depthFromString;
+            }
+            QStringList nameParts = name.split(" ");
+            if (nameParts.size() > 0)
+                name = nameParts[0];
+        }
+
+        name = cleanNodeName(name);
+        name = getUniqueNodeName(name) + "+";
+
+        if (name.length() < 1)
+            throw "load error";
+
+        DeBruijnNode * node = new DeBruijnNode(name, depth, sequence);
+        m_deBruijnGraphNodes.insert(name, node);
+        makeReverseComplementNodeIfNecessary(node);
+    }
+    pointEachNodeToItsReverseComplement();
+}
+
+
+
+//This function adjusts a node name to make sure it is valid for use in Bandage.
+QString AssemblyGraph::cleanNodeName(QString name)
+{
+    //Replace whitespace with underscores
+    name = name.replace(QRegExp("\\s"), "_");
+
+    //Remove any commas.
+    name = name.replace(",", "");
+
+    //Remove any trailing + or -.
+    if (name.endsWith('+') || name.endsWith('-'))
+        name.chop(1);
+
+    return name;
+}
+
+
+GraphFileType AssemblyGraph::getGraphFileTypeFromFile(QString fullFileName)
+{
+    if (checkFileIsLastGraph(fullFileName))
+        return LAST_GRAPH;
+    if (checkFileIsFastG(fullFileName))
+        return FASTG;
+    if (checkFileIsGfa(fullFileName))
+        return GFA;
+    if (checkFileIsTrinityFasta(fullFileName))
+        return TRINITY;
+    if (checkFileIsAsqg(fullFileName))
+        return ASQG;
+    if (checkFileIsFasta(fullFileName))
+        return PLAIN_FASTA;
+    return UNKNOWN_FILE_TYPE;
+}
+
+
+//Cursory look to see if file appears to be a LastGraph file.
+bool AssemblyGraph::checkFileIsLastGraph(QString fullFileName)
+{
+    return checkFirstLineOfFile(fullFileName, "^\\d+\\s+\\d+\\s+\\d+\\s+\\d+");
+}
+
+//Cursory look to see if file appears to be a FASTG file.
+bool AssemblyGraph::checkFileIsFastG(QString fullFileName)
+{
+    return checkFirstLineOfFile(fullFileName, "^>(NODE|EDGE).*;");
+}
+
+//Cursory look to see if file appears to be a FASTA file.
+bool AssemblyGraph::checkFileIsFasta(QString fullFileName)
+{
+    return checkFirstLineOfFile(fullFileName, "^>");
+}
+
+//Cursory look to see if file appears to be a GFA file.
+bool AssemblyGraph::checkFileIsGfa(QString fullFileName)
+{
+    return checkFirstLineOfFile(fullFileName, "^[SLH]\t");
+}
+
+//Cursory look to see if file appears to be a Trinity.fasta file.
+bool AssemblyGraph::checkFileIsTrinityFasta(QString fullFileName)
+{
+    return checkFirstLineOfFile(fullFileName, "path=\\[");
+}
+
+//Cursory look to see if file appears to be an ASQG file.
+bool AssemblyGraph::checkFileIsAsqg(QString fullFileName)
+{
+    return checkFirstLineOfFile(fullFileName, "^HT\t");
+}
+
+
+bool AssemblyGraph::checkFirstLineOfFile(QString fullFileName, QString regExp)
+{
+    QFile inputFile(fullFileName);
+    if (inputFile.open(QIODevice::ReadOnly))
+    {
+        QTextStream in(&inputFile);
+        if (in.atEnd())
+            return false;
+        QRegExp rx(regExp);
+        QString line = in.readLine();
+        if (rx.indexIn(line) != -1)
+            return true;
+    }
+    return false;
+}
+
+/* Split a QString according to CSV rules
+ *
+ * @param line  line of a csv
+ * @param sep   field separator to use
+ * @result      list of fields with escaping removed
+ *
+ * Known Bugs: CSV (as per RFC4180) allows multi-line fields (\r\n between "..."), which
+ *             can't be parsed line-by line an hence isn't supported.
+ */
+QStringList AssemblyGraph::splitCsv(QString line, QString sep)
+{
+    QStringList list;
+    QRegExp rx("(\"(?:[^\"]|\"\")*\"|[^"+sep+"]*)");
+    int pos = 0;
+
+    while (rx.indexIn(line, pos) != -1)
+    {
+        QString field = rx.cap().replace("\"\"","\"");
+        if (field[0] == '"' && field[field.length()-1] == '"')
+            field=field.mid(1,field.length()-2);
+        list << field;
+        pos += rx.matchedLength() +1;
+    }
+    return list;
+}
+
+/* Load data from CSV and add to deBruijnGraphNodes
+ *
+ * @param filename  the full path of the file to be loaded
+ * @param *columns  will contain the names of each column after loading data
+ *                  (to add these to the GUI)
+ * @param *errormsg if not empty, message to be displayed to user containing warning
+ *                  or other information
+ * @returns         true/false if loading data worked
+ */
+bool AssemblyGraph::loadCSV(QString filename, QStringList * columns, QString * errormsg, bool * coloursLoaded)
+{
+    clearAllCsvData();
+
+    QFile inputFile(filename);
+    if (!inputFile.open(QIODevice::ReadOnly))
+    {
+        *errormsg = "Unable to read from specified file.";
+        return false;
+    }
+    QTextStream in(&inputFile);
+    QString line = in.readLine();
+
+    // guess at separator; this assumes that any tab in the first line means
+    // we have a tab separated file
+    QString sep = "\t";
+    if (line.split(sep).length() == 1)
+    {
+        sep = ",";
+        if (line.split(sep).length() == 1)
+        {
+            *errormsg = "Neither tab nor comma in first line. Please check file format.";
+            return false;
+        }
+    }
+
+    int unmatched_nodes = 0; // keep a counter for lines in file that can't be matched to nodes
+
+    QStringList headers = splitCsv(line, sep);
+    if (headers.size() < 2)
+    {
+        *errormsg = "Not enough CSV headers: at least two required.";
+        return false;
+    }
+    headers.pop_front();
+
+    //Check to see if any of the columns holds colour data.
+    int colourCol = -1;
+    for (int i = 0; i < headers.size(); ++i)
+    {
+        QString header = headers[i].toLower();
+        if (header == "colour" || header == "color")
+        {
+            colourCol = i;
+            *coloursLoaded = true;
+            break;
+        }
+    }
+
+    *columns = headers;
+    int columnCount = headers.size();
+    QMap<QString, QColor> colourCategories;
+    std::vector<QColor> presetColours = getPresetColours();
+
+    while (!in.atEnd())
+    {
+        QApplication::processEvents();
+
+        QStringList cols = splitCsv(in.readLine(), sep);
+        QString nodeName = getNodeNameFromString(cols[0]);
+
+        //Get rid of the node name - no need to save that.
+        cols.pop_front();
+
+        //If one of the columns holds colour data, get the colour from that one.
+        //Acceptable colour formats: 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a
+        //standard colour name (e.g. skyblue).
+        //If the colour value is something other than one of these, a colour will be assigned to the value.  That way
+        //categorical names can be used and automatically given colours.
+        QColor colour;
+        if (colourCol != -1 && cols.size() > colourCol)
+        {
+            QString colourString = cols[colourCol];
+            colour = QColor(colourString);
+            if (!colour.isValid())
+            {
+                if (!colourCategories.contains(colourString))
+                {
+                    int nextColourIndex = colourCategories.size();
+                    colourCategories[colourString] = presetColours[nextColourIndex];
+                }
+                colour = colourCategories[colourString];
+            }
+        }
+
+        //Get rid of any extra data that doesn't have a header.
+        while (cols.size() > columnCount)
+            cols.pop_back();
+
+        if (nodeName != "" && m_deBruijnGraphNodes.contains(nodeName))
+        {
+            m_deBruijnGraphNodes[nodeName]->setCsvData(cols);
+            if (colour.isValid())
+                m_deBruijnGraphNodes[nodeName]->setCustomColour(colour);
+        }
+        else
+            ++unmatched_nodes;
+    }
+
+    if (unmatched_nodes)
+        *errormsg = "There were " + QString::number(unmatched_nodes) + " unmatched entries in the CSV.";
+
+    return true;
+}
+
+
+//This function extracts a node name from a string.
+//The string may be in this Bandage format:
+//        NODE_6+_length_50434_cov_42.3615
+//Or in a number of variations of that format.
+//If the node name it finds does not end in a '+' or '-', it will add '+'.
+QString AssemblyGraph::getNodeNameFromString(QString string)
+{
+    QStringList parts = string.split("_");
+    if (parts.size() == 0)
+        return "";
+
+    if (parts[0] == "NODE")
+        parts.pop_front();
+    if (parts.size() == 0)
+        return "";
+
+    QString nodeName;
+
+    //This checks for the standard Bandage format where the node name does
+    //not have any underscores.
+    if (parts.size() == 5 && parts[1] == "length")
+        nodeName = parts[0];
+
+    //This checks for the simple case of nothing but a node name.
+    else if (parts.size() == 1)
+        nodeName = parts[0];
+
+    //If the code got here, then it is likely that the node name contains
+    //underscores.  Grab everything in the string up until we encounter
+    //"length".
+    else
+    {
+        for (int i = 0; i < parts.size(); ++i)
+        {
+            if (parts[i] == "length")
+                break;
+            if (nodeName.length() > 0)
+                nodeName += "_";
+            nodeName += parts[i];
+        }
+    }
+
+    int nameLength = nodeName.length();
+    if (nameLength == 0)
+        return "";
+
+    QChar lastChar = nodeName.at(nameLength - 1);
+    if (lastChar == '+' || lastChar == '-')
+        return nodeName;
+    else
+        return nodeName + "+";
+}
+
+//Returns true if successful, false if not.
+bool AssemblyGraph::loadGraphFromFile(QString filename)
+{
+    GraphFileType graphFileType = getGraphFileTypeFromFile(filename);
+
+    if (graphFileType == UNKNOWN_FILE_TYPE)
+        return false;
+
+    try
+    {
+        if (graphFileType == LAST_GRAPH)
+            buildDeBruijnGraphFromLastGraph(filename);
+        if (graphFileType == FASTG)
+            buildDeBruijnGraphFromFastg(filename);
+        if (graphFileType == GFA)
+        {
+            bool unsupportedCigar, customLabels, customColours;
+            QString bandageOptionsError;
+            buildDeBruijnGraphFromGfa(filename, &unsupportedCigar, &customLabels, &customColours, &bandageOptionsError);
+        }
+        if (graphFileType == TRINITY)
+            buildDeBruijnGraphFromTrinityFasta(filename);
+        if (graphFileType == ASQG)
+            buildDeBruijnGraphFromAsqg(filename);
+        if (graphFileType == PLAIN_FASTA)
+            buildDeBruijnGraphFromPlainFasta(filename);
+    }
+
+    catch (...)
+    {
+        return false;
+    }
+
+    determineGraphInfo();
+    g_memory->clearGraphSpecificMemory();
+    return true;
+}
+
+
+
+//The startingNodes and nodeDistance parameters are only used if the graph scope
+//is not WHOLE_GRAPH.
+void AssemblyGraph::buildOgdfGraphFromNodesAndEdges(std::vector<DeBruijnNode *> startingNodes, int nodeDistance)
+{
+    if (g_settings->graphScope == WHOLE_GRAPH)
+    {
+        QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+        while (i.hasNext())
+        {
+            i.next();
+
+            //If double mode is off, only positive nodes are drawn.  If it's
+            //on, all nodes are drawn.
+            if (i.value()->isPositiveNode() || g_settings->doubleMode)
+                i.value()->setAsDrawn();
+        }
+    }
+    else //The scope is either around specified nodes, around nodes with BLAST hits or a depth range.
+    {
+        //Distance is only used for around nodes and around blast scopes, not
+        //for the depth range scope.
+        if (g_settings->graphScope == DEPTH_RANGE)
+            nodeDistance = 0;
+
+        for (size_t i = 0; i < startingNodes.size(); ++i)
+        {
+            DeBruijnNode * node = startingNodes[i];
+
+            //If we are in single mode, make sure that each node is positive.
+            if (!g_settings->doubleMode && node->isNegativeNode())
+                node = node->getReverseComplement();
+
+            node->setAsDrawn();
+            node->setAsSpecial();
+            node->labelNeighbouringNodesAsDrawn(nodeDistance, 0);
+        }
+    }
+
+    // If performing a linear layout, we first sort the drawn nodes and add them left-to-right.
+    if (g_settings->linearLayout) {
+        QList<DeBruijnNode *> sortedDrawnNodes;
+
+        // We first try to sort the nodes numerically.
+        QList<QPair<int, DeBruijnNode *>> numericallySortedDrawnNodes;
+        QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+        bool successfulIntConversion = true;
+        while (i.hasNext())
+        {
+            i.next();
+            DeBruijnNode * node = i.value();
+            if (node->isDrawn() && node->thisOrReverseComplementNotInOgdf()) {
+                int nodeInt = node->getNameWithoutSign().toInt(&successfulIntConversion);
+                if (!successfulIntConversion)
+                    break;
+                numericallySortedDrawnNodes.push_back(QPair<int, DeBruijnNode*>(nodeInt, node));
+            }
+        }
+        if (successfulIntConversion) {
+            std::sort(numericallySortedDrawnNodes.begin(), numericallySortedDrawnNodes.end(),
+                [](const QPair<int, DeBruijnNode *> & a, const QPair<int, DeBruijnNode *> & b) {return a.first < b.first;});
+            for (int i = 0; i < numericallySortedDrawnNodes.size(); ++i) {
+                sortedDrawnNodes.reserve(numericallySortedDrawnNodes.size());
+                sortedDrawnNodes.push_back(numericallySortedDrawnNodes[i].second);
+            }
+        }
+
+        // If any of the conversions from node name to integer failed, then we instead sort the nodes alphabetically.
+        else {
+            i = QMapIterator<QString, DeBruijnNode*>(m_deBruijnGraphNodes);
+            while (i.hasNext())
+            {
+                i.next();
+                DeBruijnNode * node = i.value();
+                if (node->isDrawn())
+                sortedDrawnNodes.push_back(node);
+            }
+            std::sort(sortedDrawnNodes.begin(), sortedDrawnNodes.end(),
+                [](DeBruijnNode * a, DeBruijnNode * b) {return QString::localeAwareCompare(a->getNameWithoutSign().toUpper(), b->getNameWithoutSign().toUpper()) < 0;});
+        }
+
+        // Now we add the drawn nodes to the OGDF graph, given them initial positions based on their sort order.
+        QSet<QPair<double, double> > usedStartPositions;
+        double lastXPos = 0.0;
+        for (int i = 0; i < sortedDrawnNodes.size(); ++i) {
+            DeBruijnNode * node = sortedDrawnNodes[i];
+            if (node->thisOrReverseComplementInOgdf())
+                continue;
+            std::vector<DeBruijnNode *> upstreamNodes = node->getUpstreamNodes();
+            for (size_t j = 0; j < upstreamNodes.size(); ++j) {
+                DeBruijnNode * upstreamNode = upstreamNodes[j];
+                if (!upstreamNode->inOgdf())
+                    continue;
+                ogdf::node upstreamEnd = upstreamNode->getOgdfNode()->getLast();
+                double upstreamEndPos = m_graphAttributes->x(upstreamEnd);
+                if (j == 0)
+                    lastXPos = upstreamEndPos;
+                else
+                    lastXPos = std::max(lastXPos, upstreamEndPos);
+            }
+            double xPos = lastXPos + g_settings->edgeLength;
+            double yPos = 0.0;
+            while (usedStartPositions.contains(QPair<double, double>(xPos, yPos)))
+                yPos += g_settings->edgeLength;
+            node->addToOgdfGraph(m_ogdfGraph, m_graphAttributes, m_edgeArray, xPos, yPos);
+            usedStartPositions.insert(QPair<double, double>(xPos, yPos));
+            lastXPos = m_graphAttributes->x(node->getOgdfNode()->getLast());
+        }
+    }
+
+    // If the layout isn't linear, then we don't worry about the initial positions because they'll be randomised anyway.
+    else {
+        QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+        while (i.hasNext())
+        {
+            i.next();
+            DeBruijnNode * node = i.value();
+            if (node->isDrawn() && node->thisOrReverseComplementNotInOgdf())
+                node->addToOgdfGraph(m_ogdfGraph, m_graphAttributes, m_edgeArray, 0.0, 0.0);
+        }
+    }
+
+    //Then loop through each edge determining its drawn status and adding it to OGDF if it is drawn.
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnEdge * edge = j.value();
+        edge->determineIfDrawn();
+        if (edge->isDrawn())
+            edge->addToOgdfGraph(m_ogdfGraph, m_edgeArray);
+    }
+}
+
+
+
+void AssemblyGraph::addGraphicsItemsToScene(MyGraphicsScene * scene)
+{
+    scene->clear();
+
+    double meanDrawnDepth = getMeanDepth(true);
+
+    //First make the GraphicsItemNode objects
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+
+        if (node->isDrawn())
+        {
+            if (meanDrawnDepth == 0)
+                node->setDepthRelativeToMeanDrawnDepth(1.0);
+            else
+                node->setDepthRelativeToMeanDrawnDepth(node->getDepth() / meanDrawnDepth);
+            GraphicsItemNode * graphicsItemNode = new GraphicsItemNode(node, m_graphAttributes);
+            node->setGraphicsItemNode(graphicsItemNode);
+            graphicsItemNode->setFlag(QGraphicsItem::ItemIsSelectable);
+            graphicsItemNode->setFlag(QGraphicsItem::ItemIsMovable);
+        }
+    }
+
+    resetAllNodeColours();
+
+    //Then make the GraphicsItemEdge objects and add them to the scene first
+    //so they are drawn underneath
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnEdge * edge = j.value();
+
+        if (edge->isDrawn())
+        {
+            GraphicsItemEdge * graphicsItemEdge = new GraphicsItemEdge(edge);
+            edge->setGraphicsItemEdge(graphicsItemEdge);
+            graphicsItemEdge->setFlag(QGraphicsItem::ItemIsSelectable);
+            scene->addItem(graphicsItemEdge);
+        }
+    }
+
+    //Now add the GraphicsItemNode objects to the scene so they are drawn
+    //on top
+    QMapIterator<QString, DeBruijnNode*> k(m_deBruijnGraphNodes);
+    while (k.hasNext())
+    {
+        k.next();
+        DeBruijnNode * node = k.value();
+        if (node->hasGraphicsItem())
+            scene->addItem(node->getGraphicsItemNode());
+    }
+}
+
+
+
+
+std::vector<DeBruijnNode *> AssemblyGraph::getStartingNodes(QString * errorTitle, QString * errorMessage, bool doubleMode,
+                                                            QString nodesList, QString blastQueryName)
+{
+    std::vector<DeBruijnNode *> startingNodes;
+
+    if (g_settings->graphScope == AROUND_NODE)
+    {
+        if (checkIfStringHasNodes(nodesList))
+        {
+            *errorTitle = "No starting nodes";
+            *errorMessage = "Please enter at least one node when drawing the graph using the 'Around node(s)' scope. "
+                            "Separate multiple nodes with commas.";
+            return startingNodes;
+        }
+
+        //Make sure the nodes the user typed in are actually in the graph.
+        std::vector<QString> nodesNotInGraph;
+        std::vector<DeBruijnNode *> nodesInGraph = getNodesFromString(nodesList,
+                                                                      g_settings->startingNodesExactMatch,
+                                                                      &nodesNotInGraph);
+        if (nodesNotInGraph.size() > 0)
+        {
+            *errorTitle = "Nodes not found";
+            *errorMessage = generateNodesNotFoundErrorMessage(nodesNotInGraph, g_settings->startingNodesExactMatch);
+            if (nodesInGraph.size() == 0)
+                return startingNodes;
+        }
+    }
+
+    else if (g_settings->graphScope == AROUND_BLAST_HITS)
+    {
+        std::vector<DeBruijnNode *> startingNodes = getNodesFromBlastHits(blastQueryName);
+
+        if (startingNodes.size() == 0)
+        {
+            *errorTitle = "No BLAST hits";
+            *errorMessage = "To draw the graph around BLAST hits, you must first conduct a BLAST search.";
+            return startingNodes;
+        }
+    }
+
+    else if (g_settings->graphScope == DEPTH_RANGE)
+    {
+        if (g_settings->minDepthRange > g_settings->maxDepthRange)
+        {
+            *errorTitle = "Invalid depth range";
+            *errorMessage = "The maximum depth must be greater than or equal to the minimum depth.";
+            return startingNodes;
+        }
+
+        std::vector<DeBruijnNode *> startingNodes = getNodesInDepthRange(g_settings->minDepthRange,
+                                                                             g_settings->maxDepthRange);
+
+        if (startingNodes.size() == 0)
+        {
+            *errorTitle = "No nodes in range";
+            *errorMessage = "There are no nodes with depths in the specified range.";
+            return startingNodes;
+        }
+    }
+
+    g_settings->doubleMode = doubleMode;
+    clearOgdfGraphAndResetNodes();
+
+    if (g_settings->graphScope == AROUND_NODE)
+        startingNodes = getNodesFromString(nodesList, g_settings->startingNodesExactMatch);
+    else if (g_settings->graphScope == AROUND_BLAST_HITS)
+        startingNodes = getNodesFromBlastHits(blastQueryName);
+    else if (g_settings->graphScope == DEPTH_RANGE)
+        startingNodes = getNodesInDepthRange(g_settings->minDepthRange,
+                                                 g_settings->maxDepthRange);
+
+    return startingNodes;
+}
+
+
+bool AssemblyGraph::checkIfStringHasNodes(QString nodesString)
+{
+    nodesString = nodesString.simplified();
+    QStringList nodesList = nodesString.split(",");
+    nodesList = removeNullStringsFromList(nodesList);
+    return (nodesList.size() == 0);
+}
+
+
+QString AssemblyGraph::generateNodesNotFoundErrorMessage(std::vector<QString> nodesNotInGraph, bool exact)
+{
+    QString errorMessage;
+    if (exact)
+        errorMessage += "The following nodes are not in the graph:\n";
+    else
+        errorMessage += "The following queries do not match any nodes in the graph:\n";
+
+    for (size_t i = 0; i < nodesNotInGraph.size(); ++i)
+    {
+        errorMessage += nodesNotInGraph[i];
+        if (i != nodesNotInGraph.size() - 1)
+            errorMessage += ", ";
+    }
+    errorMessage += "\n";
+
+    return errorMessage;
+}
+
+
+std::vector<DeBruijnNode *> AssemblyGraph::getNodesFromString(QString nodeNamesString, bool exactMatch, std::vector<QString> * nodesNotInGraph)
+{
+    nodeNamesString = nodeNamesString.simplified();
+    QStringList nodesList = nodeNamesString.split(",");
+
+    if (exactMatch)
+        return getNodesFromListExact(nodesList, nodesNotInGraph);
+    else
+        return getNodesFromListPartial(nodesList, nodesNotInGraph);
+}
+
+
+//Given a list of node names (as strings), this function will return all nodes which match
+//those names exactly.  The last +/- on the end of the node name is optional - if missing
+//both + and - nodes will be returned.
+std::vector<DeBruijnNode *> AssemblyGraph::getNodesFromListExact(QStringList nodesList,
+                                                                 std::vector<QString> * nodesNotInGraph)
+{
+    std::vector<DeBruijnNode *> returnVector;
+
+    for (int i = 0; i < nodesList.size(); ++i)
+    {
+        QString nodeName = nodesList.at(i).simplified();
+        if (nodeName == "")
+            continue;
+
+        //If the node name ends in +/-, then we assume the user was specifying the exact
+        //node in the pair.  If the node name does not end in +/-, then we assume the
+        //user is asking for either node in the pair.
+        QChar lastChar = nodeName.at(nodeName.length() - 1);
+        if (lastChar == '+' || lastChar == '-')
+        {
+            if (m_deBruijnGraphNodes.contains(nodeName))
+                returnVector.push_back(m_deBruijnGraphNodes[nodeName]);
+            else if (nodesNotInGraph != 0)
+                nodesNotInGraph->push_back(nodesList.at(i).trimmed());
+        }
+        else
+        {
+            QString posNodeName = nodeName + "+";
+            QString negNodeName = nodeName + "-";
+
+            bool posNodeFound = false;
+            if (m_deBruijnGraphNodes.contains(posNodeName))
+            {
+                returnVector.push_back(m_deBruijnGraphNodes[posNodeName]);
+                posNodeFound = true;
+            }
+
+            bool negNodeFound = false;
+            if (m_deBruijnGraphNodes.contains(negNodeName))
+            {
+                returnVector.push_back(m_deBruijnGraphNodes[negNodeName]);
+                negNodeFound = true;
+            }
+
+            if (!posNodeFound && !negNodeFound && nodesNotInGraph != 0)
+                nodesNotInGraph->push_back(nodesList.at(i).trimmed());
+        }
+    }
+
+    return returnVector;
+}
+
+std::vector<DeBruijnNode *> AssemblyGraph::getNodesFromListPartial(QStringList nodesList,
+                                                                   std::vector<QString> * nodesNotInGraph)
+{
+    std::vector<DeBruijnNode *> returnVector;
+
+    for (int i = 0; i < nodesList.size(); ++i)
+    {
+        QString queryName = nodesList.at(i).simplified();
+        if (queryName == "")
+            continue;
+
+        bool found = false;
+        QMapIterator<QString, DeBruijnNode*> j(m_deBruijnGraphNodes);
+        while (j.hasNext())
+        {
+            j.next();
+            QString nodeName = j.value()->getName();
+
+            if (nodeName.contains(queryName))
+            {
+                found = true;
+                returnVector.push_back(j.value());
+            }
+        }
+
+        if (!found && nodesNotInGraph != 0)
+            nodesNotInGraph->push_back(queryName.trimmed());
+    }
+
+    return returnVector;
+}
+
+std::vector<DeBruijnNode *> AssemblyGraph::getNodesFromBlastHits(QString queryName)
+{
+    std::vector<DeBruijnNode *> returnVector;
+
+    if (g_blastSearch->m_blastQueries.m_queries.size() == 0)
+        return returnVector;
+
+    std::vector<BlastQuery *> queries;
+
+    //If "all" is selected, then we'll display nodes with hits from any query
+    if (queryName == "all")
+        queries = g_blastSearch->m_blastQueries.m_queries;
+
+    //If only one query is selected, then we just display nodes with hits from that query
+    else
+        queries.push_back(g_blastSearch->m_blastQueries.getQueryFromName(queryName));
+
+    //Add pointers to nodes that have a hit for the selected target(s).
+    for (size_t i = 0; i < queries.size(); ++i)
+    {
+        BlastQuery * currentQuery = queries[i];
+        for (int j = 0; j < g_blastSearch->m_allHits.size(); ++j)
+        {
+            if (g_blastSearch->m_allHits[j]->m_query == currentQuery)
+                returnVector.push_back(g_blastSearch->m_allHits[j]->m_node);
+        }
+    }
+
+    return returnVector;
+}
+
+std::vector<DeBruijnNode *> AssemblyGraph::getNodesInDepthRange(double min,
+                                                                    double max)
+{
+    std::vector<DeBruijnNode *> returnVector;
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+
+        if (node->isInDepthRange(min, max))
+            returnVector.push_back(node);
+    }
+    return returnVector;
+}
+
+
+QStringList AssemblyGraph::removeNullStringsFromList(QStringList in)
+{
+    QStringList out;
+
+    for (int i = 0; i < in.size(); ++i)
+    {
+        QString string = in.at(i);
+        if (string.length() > 0)
+            out.push_back(string);
+    }
+    return out;
+}
+
+
+//Unlike the equivalent function in MainWindow, this does the graph layout in the main thread.
+void AssemblyGraph::layoutGraph()
+{
+    ogdf::FMMMLayout fmmm;
+    GraphLayoutWorker * graphLayoutWorker = new GraphLayoutWorker(&fmmm, m_graphAttributes, m_edgeArray,
+                                                                  g_settings->graphLayoutQuality,
+                                                                  useLinearLayout(),
+                                                                  g_settings->componentSeparation);
+    graphLayoutWorker->layoutGraph();
+}
+
+
+void AssemblyGraph::setAllEdgesExactOverlap(int overlap)
+{
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> i(m_deBruijnGraphEdges);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->setExactOverlap(overlap);
+    }
+}
+
+
+
+void AssemblyGraph::autoDetermineAllEdgesExactOverlap()
+{
+    int edgeCount = int(m_deBruijnGraphEdges.size());
+    if (edgeCount == 0)
+        return;
+
+    //Determine the overlap for each edge.
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> i(m_deBruijnGraphEdges);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->autoDetermineExactOverlap();
+    }
+
+    //The expectation here is that most overlaps will be
+    //the same or from a small subset of possible sizes.
+    //Edges with an overlap that do not match the most common
+    //overlap(s) are suspected of having their overlap
+    //misidentified.  They are therefore rechecked using the
+    //common ones.
+    std::vector<int> overlapCounts = makeOverlapCountVector();
+
+    //Sort the overlaps in order of decreasing numbers of edges.
+    //I.e. the first overlap size in the vector will be the most
+    //common overlap, the second will be the second most common,
+    //etc.
+    std::vector<int> sortedOverlaps;
+    int overlapsSoFar = 0;
+    double fractionOverlapsFound = 0.0;
+    while (fractionOverlapsFound < 1.0)
+    {
+        int mostCommonOverlap = 0;
+        int mostCommonOverlapCount = 0;
+
+        //Find the overlap size with the most instances.
+        for (size_t i = 0; i < overlapCounts.size(); ++i)
+        {
+            if (overlapCounts[i] > mostCommonOverlapCount)
+            {
+                mostCommonOverlap = int(i);
+                mostCommonOverlapCount = overlapCounts[i];
+            }
+        }
+
+        //Add that overlap to the common collection and remove it from the counts.
+        sortedOverlaps.push_back(mostCommonOverlap);
+        overlapsSoFar += mostCommonOverlapCount;
+        fractionOverlapsFound = double(overlapsSoFar) / edgeCount;
+        overlapCounts[mostCommonOverlap] = 0;
+    }
+
+    //For each edge, see if one of the more common overlaps also works.
+    //If so, use that instead.
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnEdge * edge = j.value();
+        for (size_t k = 0; k < sortedOverlaps.size(); ++k)
+        {
+            if (edge->getOverlap() == sortedOverlaps[k])
+                break;
+            else if (edge->testExactOverlap(sortedOverlaps[k]))
+            {
+                edge->setOverlap(sortedOverlaps[k]);
+                break;
+            }
+        }
+    }
+}
+
+
+//This function produces a vector for which the values are the number
+//of edges that have an overlap of the index length.
+//E.g. if overlapVector[61] = 123, that means that 123 edges have an
+//overlap of 61.
+std::vector<int> AssemblyGraph::makeOverlapCountVector()
+{
+    std::vector<int> overlapCounts;
+
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> i(m_deBruijnGraphEdges);
+    while (i.hasNext())
+    {
+        i.next();
+        int overlap = i.value()->getOverlap();
+
+        //Add the overlap to the count vector
+        if (int(overlapCounts.size()) < overlap + 1)
+            overlapCounts.resize(overlap + 1, 0);
+        ++overlapCounts[overlap];
+    }
+
+    return overlapCounts;
+}
+
+
+//The function returns a node name, replacing "+" at the end with "-" or
+//vice-versa.
+QString AssemblyGraph::getOppositeNodeName(QString nodeName)
+{
+    QChar lastChar = nodeName.at(nodeName.size() - 1);
+    nodeName.chop(1);
+
+    if (lastChar == '-')
+        return nodeName + "+";
+    else
+        return nodeName + "-";
+}
+
+
+void AssemblyGraph::readFastaFile(QString filename, std::vector<QString> * names, std::vector<QByteArray> *sequences)
+{
+    QFile inputFile(filename);
+    if (inputFile.open(QIODevice::ReadOnly))
+    {
+        QString name = "";
+        QByteArray sequence = "";
+
+        QTextStream in(&inputFile);
+        while (!in.atEnd())
+        {
+            QApplication::processEvents();
+
+            QString line = in.readLine();
+
+            if (line.length() == 0)
+                continue;
+
+            if (line.at(0) == '>')
+            {
+                //If there is a current sequence, add it to the vectors now.
+                if (name.length() > 0)
+                {
+                    names->push_back(name);
+                    sequences->push_back(sequence);
+                }
+
+                line.remove(0, 1); //Remove '>' from start
+                name = line;
+                sequence = "";
+            }
+
+            else //It's a sequence line
+                sequence += line.simplified();
+        }
+
+        //Add the last target to the results now.
+        if (name.length() > 0)
+        {
+            names->push_back(name);
+            sequences->push_back(sequence);
+        }
+
+        inputFile.close();
+    }
+}
+
+
+void AssemblyGraph::recalculateAllDepthsRelativeToDrawnMean()
+{
+    double meanDrawnDepth = getMeanDepth(true);
+    QMapIterator<QString, DeBruijnNode*> k(m_deBruijnGraphNodes);
+    while (k.hasNext())
+    {
+        k.next();
+        DeBruijnNode * node = k.value();
+
+        double depthRelativeToMeanDrawnDepth;
+        if (meanDrawnDepth == 0)
+            depthRelativeToMeanDrawnDepth = 1.0;
+        else
+            depthRelativeToMeanDrawnDepth = node->getDepth() / meanDrawnDepth;
+
+        node->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+    }
+}
+
+
+void AssemblyGraph::recalculateAllNodeWidths()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        GraphicsItemNode * graphicsItemNode = i.value()->getGraphicsItemNode();
+        if (graphicsItemNode != 0)
+            graphicsItemNode->setWidth();
+    }
+}
+
+
+
+void AssemblyGraph::clearAllCsvData()
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        i.value()->clearCsvData();
+    }
+}
+
+
+int AssemblyGraph::getDrawnNodeCount() const
+{
+    int nodeCount = 0;
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+
+        if (node->isDrawn())
+            ++nodeCount;
+    }
+
+    return nodeCount;
+}
+
+
+void AssemblyGraph::deleteNodes(std::vector<DeBruijnNode *> * nodes)
+{
+    //Build a list of nodes to delete.
+    QList<DeBruijnNode *> nodesToDelete;
+    for (size_t i = 0; i < nodes->size(); ++i)
+    {
+        DeBruijnNode * node = (*nodes)[i];
+        DeBruijnNode * rcNode = node->getReverseComplement();
+
+        if (!nodesToDelete.contains(node))
+            nodesToDelete.push_back(node);
+        if (!nodesToDelete.contains(rcNode))
+            nodesToDelete.push_back(rcNode);
+    }
+
+    //Build a list of edges to delete.
+    std::vector<DeBruijnEdge *> edgesToDelete;
+    for (int i = 0; i < nodesToDelete.size(); ++i)
+    {
+        DeBruijnNode * node = nodesToDelete[i];
+        const std::vector<DeBruijnEdge *> * nodeEdges = node->getEdgesPointer();
+        for (size_t j = 0; j < nodeEdges->size(); ++j)
+        {
+            DeBruijnEdge * edge = (*nodeEdges)[j];
+            bool alreadyAdded = std::find(edgesToDelete.begin(), edgesToDelete.end(), edge) != edgesToDelete.end();
+            if (!alreadyAdded)
+                edgesToDelete.push_back(edge);
+        }
+    }
+
+    //Build a list of node names to delete.
+    QStringList nodesNamesToDelete;
+    for (int i = 0; i < nodesToDelete.size(); ++i)
+    {
+        DeBruijnNode * node = nodesToDelete[i];
+        nodesNamesToDelete.push_back(node->getName());
+    }
+
+    //Remove the edges from the graph,
+    deleteEdges(&edgesToDelete);
+
+    //Remove the nodes from the graph.
+    for (int i = 0; i < nodesNamesToDelete.size(); ++i)
+    {
+        QString nodeName = nodesNamesToDelete[i];
+        m_deBruijnGraphNodes.remove(nodeName);
+    }
+    for (int i = 0; i < nodesToDelete.size(); ++i)
+    {
+        DeBruijnNode * node = nodesToDelete[i];
+        delete node;
+    }
+}
+
+void AssemblyGraph::deleteEdges(std::vector<DeBruijnEdge *> * edges)
+{
+    //Build a list of edges to delete.
+    QList<DeBruijnEdge *> edgesToDelete;
+    for (size_t i = 0; i < edges->size(); ++i)
+    {
+        DeBruijnEdge * edge = (*edges)[i];
+        DeBruijnEdge * rcEdge = edge->getReverseComplement();
+
+        if (!edgesToDelete.contains(edge))
+            edgesToDelete.push_back(edge);
+        if (!edgesToDelete.contains(rcEdge))
+            edgesToDelete.push_back(rcEdge);
+    }
+
+    //Remove the edges from the graph,
+    for (int i = 0; i < edgesToDelete.size(); ++i)
+    {
+        DeBruijnEdge * edge = edgesToDelete[i];
+        DeBruijnNode * startingNode = edge->getStartingNode();
+        DeBruijnNode * endingNode = edge->getEndingNode();
+
+        m_deBruijnGraphEdges.remove(QPair<DeBruijnNode*, DeBruijnNode*>(startingNode, endingNode));
+        startingNode->removeEdge(edge);
+        endingNode->removeEdge(edge);
+
+        delete edge;
+    }
+}
+
+
+
+//This function assumes it is receiving a positive node.  It will duplicate both
+//the positive and negative node in the pair.  It divided their depth in
+//two, giving half to each node.
+void AssemblyGraph::duplicateNodePair(DeBruijnNode * node, MyGraphicsScene * scene)
+{
+    DeBruijnNode * originalPosNode = node;
+    DeBruijnNode * originalNegNode = node->getReverseComplement();
+
+    QString newNodeBaseName = getNewNodeName(originalPosNode->getName());
+    QString newPosNodeName = newNodeBaseName + "+";
+    QString newNegNodeName = newNodeBaseName + "-";
+
+    double newDepth = node->getDepth() / 2.0;
+
+    //Create the new nodes.
+    DeBruijnNode * newPosNode = new DeBruijnNode(newPosNodeName, newDepth, originalPosNode->getSequence());
+    DeBruijnNode * newNegNode = new DeBruijnNode(newNegNodeName, newDepth, originalNegNode->getSequence());
+    newPosNode->setReverseComplement(newNegNode);
+    newNegNode->setReverseComplement(newPosNode);
+
+    //Copy over additional stuff from the original nodes.
+    newPosNode->setCustomColour(originalPosNode->getCustomColour());
+    newNegNode->setCustomColour(originalNegNode->getCustomColour());
+    newPosNode->setCustomLabel(originalPosNode->getCustomLabel());
+    newNegNode->setCustomLabel(originalNegNode->getCustomLabel());
+    newPosNode->setCsvData(originalPosNode->getAllCsvData());
+    newNegNode->setCsvData(originalNegNode->getAllCsvData());
+
+    m_deBruijnGraphNodes.insert(newPosNodeName, newPosNode);
+    m_deBruijnGraphNodes.insert(newNegNodeName, newNegNode);
+
+    std::vector<DeBruijnEdge *> leavingEdges = originalPosNode->getLeavingEdges();
+    for (size_t i = 0; i < leavingEdges.size(); ++i)
+    {
+        DeBruijnEdge * edge = leavingEdges[i];
+        DeBruijnNode * downstreamNode = edge->getEndingNode();
+        createDeBruijnEdge(newPosNodeName, downstreamNode->getName(),
+                           edge->getOverlap(), edge->getOverlapType());
+    }
+
+    std::vector<DeBruijnEdge *> enteringEdges = originalPosNode->getEnteringEdges();
+    for (size_t i = 0; i < enteringEdges.size(); ++i)
+    {
+        DeBruijnEdge * edge = enteringEdges[i];
+        DeBruijnNode * upstreamNode = edge->getStartingNode();
+        createDeBruijnEdge(upstreamNode->getName(), newPosNodeName,
+                           edge->getOverlap(), edge->getOverlapType());
+    }
+
+    originalPosNode->setDepth(newDepth);
+    originalNegNode->setDepth(newDepth);
+
+    double meanDrawnDepth = getMeanDepth(true);
+    double depthRelativeToMeanDrawnDepth;
+    if (meanDrawnDepth == 0)
+        depthRelativeToMeanDrawnDepth = 1.0;
+    else
+        depthRelativeToMeanDrawnDepth = originalPosNode->getDepth() / meanDrawnDepth;
+
+    originalPosNode->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+    originalNegNode->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+    newPosNode->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+    newPosNode->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+
+    duplicateGraphicsNode(originalPosNode, newPosNode, scene);
+    duplicateGraphicsNode(originalNegNode, newNegNode, scene);
+}
+
+QString AssemblyGraph::getNewNodeName(QString oldNodeName)
+{
+    oldNodeName.chop(1); //Remove trailing +/-
+
+    QString newNodeNameBase = oldNodeName + "_copy";
+    QString newNodeName = newNodeNameBase;
+
+    int suffix = 1;
+    while (m_deBruijnGraphNodes.contains(newNodeName + "+"))
+    {
+        ++suffix;
+        newNodeName = newNodeNameBase + QString::number(suffix);
+    }
+
+    return newNodeName;
+}
+
+
+void AssemblyGraph::duplicateGraphicsNode(DeBruijnNode * originalNode, DeBruijnNode * newNode, MyGraphicsScene * scene)
+{
+    GraphicsItemNode * originalGraphicsItemNode = originalNode->getGraphicsItemNode();
+    if (originalGraphicsItemNode == 0)
+        return;
+
+    GraphicsItemNode * newGraphicsItemNode = new GraphicsItemNode(newNode, originalGraphicsItemNode);
+
+    newNode->setGraphicsItemNode(newGraphicsItemNode);
+    newGraphicsItemNode->setFlag(QGraphicsItem::ItemIsSelectable);
+    newGraphicsItemNode->setFlag(QGraphicsItem::ItemIsMovable);
+
+    originalGraphicsItemNode->shiftPointsLeft();
+    newGraphicsItemNode->shiftPointsRight();
+    originalGraphicsItemNode->fixEdgePaths();
+
+    originalGraphicsItemNode->setNodeColour();
+    newGraphicsItemNode->setNodeColour();
+
+    originalGraphicsItemNode->setWidth();
+
+    scene->addItem(newGraphicsItemNode);
+
+    const std::vector<DeBruijnEdge *> * newEdges = newNode->getEdgesPointer();
+    for (size_t i = 0; i < newEdges->size(); ++i)
+    {
+        DeBruijnEdge * newEdge = (*newEdges)[i];
+        GraphicsItemEdge * graphicsItemEdge = new GraphicsItemEdge(newEdge);
+        graphicsItemEdge->setZValue(-1.0);
+        newEdge->setGraphicsItemEdge(graphicsItemEdge);
+        graphicsItemEdge->setFlag(QGraphicsItem::ItemIsSelectable);
+        scene->addItem(graphicsItemEdge);
+    }
+}
+
+
+//This function will merge the given nodes, if possible.  Nodes can only be
+//merged if they are in a simple, unbranching path with no extra edges.  If the
+//merge is successful, it returns true, otherwise false.
+bool AssemblyGraph::mergeNodes(QList<DeBruijnNode *> nodes, MyGraphicsScene * scene,
+                               bool recalulateDepth)
+{
+    if (nodes.size() == 0)
+        return true;
+
+    //We now need to sort the nodes into merge order.
+    QList<DeBruijnNode *> orderedList;
+    orderedList.push_back(nodes[0]);
+    nodes.pop_front();
+
+    bool addedNode;
+    do
+    {
+        addedNode = false;
+        for (int i = 0; i < nodes.size(); ++i)
+        {
+            DeBruijnNode * potentialNextNode = nodes[i];
+
+            //Check if the node can be added to the end of the list.
+            if (canAddNodeToEndOfMergeList(&orderedList, potentialNextNode))
+            {
+                orderedList.push_back(potentialNextNode);
+                nodes.removeAt(i);
+                addedNode = true;
+                break;
+            }
+
+            //Check if the node can be added to the front of the list.
+            if (canAddNodeToStartOfMergeList(&orderedList, potentialNextNode))
+            {
+                orderedList.push_front(potentialNextNode);
+                nodes.removeAt(i);
+                addedNode = true;
+                break;
+            }
+
+            //If neither of those worked, then we should try the node's reverse
+            //complement.
+            DeBruijnNode * potentialNextNodeRevComp = potentialNextNode->getReverseComplement();
+            if (canAddNodeToEndOfMergeList(&orderedList, potentialNextNodeRevComp))
+            {
+                orderedList.push_back(potentialNextNodeRevComp);
+                nodes.removeAt(i);
+                addedNode = true;
+                break;
+            }
+            if (canAddNodeToStartOfMergeList(&orderedList, potentialNextNodeRevComp))
+            {
+                orderedList.push_front(potentialNextNodeRevComp);
+                nodes.removeAt(i);
+                addedNode = true;
+                break;
+            }
+        }
+
+        if (nodes.size() == 0)
+            break;
+
+    } while (addedNode);
+
+    //If there are still nodes left in the first list, then they don't form a
+    //nice simple path and the merge won't work.
+    if (nodes.size() > 0)
+        return false;
+
+    double mergedNodeDepth = getMeanDepth(orderedList);
+
+    Path posPath = Path::makeFromOrderedNodes(orderedList, false);
+    QByteArray mergedNodePosSequence = posPath.getPathSequence();
+
+    QList<DeBruijnNode *> revCompOrderedList;
+    for (int i = 0; i < orderedList.size(); ++i)
+        revCompOrderedList.push_front(orderedList[i]->getReverseComplement());
+
+    Path negPath = Path::makeFromOrderedNodes(revCompOrderedList, false);
+    QByteArray mergedNodeNegSequence = negPath.getPathSequence();
+
+    QString newNodeBaseName;
+    for (int i = 0; i < orderedList.size(); ++i)
+    {
+        newNodeBaseName += orderedList[i]->getNameWithoutSign();
+        if (i < orderedList.size() - 1)
+            newNodeBaseName += "_";
+    }
+    newNodeBaseName = getUniqueNodeName(newNodeBaseName);
+    QString newPosNodeName = newNodeBaseName + "+";
+    QString newNegNodeName = newNodeBaseName + "-";
+
+    DeBruijnNode * newPosNode = new DeBruijnNode(newPosNodeName, mergedNodeDepth, mergedNodePosSequence);
+    DeBruijnNode * newNegNode = new DeBruijnNode(newNegNodeName, mergedNodeDepth, mergedNodeNegSequence);
+
+    newPosNode->setReverseComplement(newNegNode);
+    newNegNode->setReverseComplement(newPosNode);
+
+    m_deBruijnGraphNodes.insert(newPosNodeName, newPosNode);
+    m_deBruijnGraphNodes.insert(newNegNodeName, newNegNode);
+
+    std::vector<DeBruijnEdge *> leavingEdges = orderedList.back()->getLeavingEdges();
+    for (size_t i = 0; i < leavingEdges.size(); ++i)
+    {
+        DeBruijnEdge * leavingEdge = leavingEdges[i];
+        createDeBruijnEdge(newPosNodeName, leavingEdge->getEndingNode()->getName(), leavingEdge->getOverlap(),
+                           leavingEdge->getOverlapType());
+    }
+
+    std::vector<DeBruijnEdge *> enteringEdges = orderedList.front()->getEnteringEdges();
+    for (size_t i = 0; i < enteringEdges.size(); ++i)
+    {
+        DeBruijnEdge * enteringEdge = enteringEdges[i];
+        createDeBruijnEdge(enteringEdge->getStartingNode()->getName(), newPosNodeName, enteringEdge->getOverlap(),
+                           enteringEdge->getOverlapType());
+    }
+
+    if (recalulateDepth)
+    {
+        double meanDrawnDepth = getMeanDepth(true);
+        double depthRelativeToMeanDrawnDepth;
+        if (meanDrawnDepth == 0)
+            depthRelativeToMeanDrawnDepth = 1.0;
+        else
+            depthRelativeToMeanDrawnDepth = newPosNode->getDepth() / meanDrawnDepth;
+
+        newPosNode->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+        newNegNode->setDepthRelativeToMeanDrawnDepth(depthRelativeToMeanDrawnDepth);
+    }
+    else
+    {
+        newPosNode->setDepthRelativeToMeanDrawnDepth(1.0);
+        newNegNode->setDepthRelativeToMeanDrawnDepth(1.0);
+    }
+
+    mergeGraphicsNodes(&orderedList, &revCompOrderedList, newPosNode, scene);
+
+    std::vector<DeBruijnNode *> nodesToDelete;
+    for (int i = 0; i < orderedList.size(); ++i)
+        nodesToDelete.push_back(orderedList[i]);
+    deleteNodes(&nodesToDelete);
+
+    return true;
+}
+
+
+bool AssemblyGraph::canAddNodeToStartOfMergeList(QList<DeBruijnNode *> * mergeList,
+                                                 DeBruijnNode * potentialNode)
+{
+    DeBruijnNode * firstNode = mergeList->front();
+    std::vector<DeBruijnEdge *> edgesEnteringFirstNode = firstNode->getEnteringEdges();
+    std::vector<DeBruijnEdge *> edgesLeavingPotentialNode = potentialNode->getLeavingEdges();
+    return (edgesEnteringFirstNode.size() == 1 &&
+            edgesLeavingPotentialNode.size() == 1 &&
+            edgesEnteringFirstNode[0]->getStartingNode() == potentialNode &&
+            edgesLeavingPotentialNode[0]->getEndingNode() == firstNode);
+}
+
+
+bool AssemblyGraph::canAddNodeToEndOfMergeList(QList<DeBruijnNode *> * mergeList,
+                                               DeBruijnNode * potentialNode)
+{
+    DeBruijnNode * lastNode = mergeList->back();
+    std::vector<DeBruijnEdge *> edgesLeavingLastNode = lastNode->getLeavingEdges();
+    std::vector<DeBruijnEdge *> edgesEnteringPotentialNode = potentialNode->getEnteringEdges();
+    return (edgesLeavingLastNode.size() == 1 &&
+            edgesEnteringPotentialNode.size() == 1 &&
+            edgesLeavingLastNode[0]->getEndingNode() == potentialNode &&
+            edgesEnteringPotentialNode[0]->getStartingNode() == lastNode);
+}
+
+
+QString AssemblyGraph::getUniqueNodeName(QString baseName)
+{
+    //If the base name is untaken, then that's it!
+    if (!m_deBruijnGraphNodes.contains(baseName + "+"))
+        return baseName;
+
+    int suffix = 1;
+    while (true)
+    {
+        ++suffix;
+        QString potentialUniqueName = baseName + "_" + QString::number(suffix);
+        if (!m_deBruijnGraphNodes.contains(potentialUniqueName + "+"))
+            return potentialUniqueName;
+    }
+
+    //Code should never get here.
+    return baseName;
+}
+
+
+void AssemblyGraph::mergeGraphicsNodes(QList<DeBruijnNode *> * originalNodes,
+                                       QList<DeBruijnNode *> * revCompOriginalNodes,
+                                       DeBruijnNode * newNode,
+                                       MyGraphicsScene * scene)
+{
+    bool success = mergeGraphicsNodes2(originalNodes, newNode, scene);
+    if (success)
+        newNode->setAsDrawn();
+
+    if (g_settings->doubleMode) {
+        DeBruijnNode * newRevComp = newNode->getReverseComplement();
+        bool revCompSuccess = mergeGraphicsNodes2(revCompOriginalNodes, newRevComp, scene);
+        if (revCompSuccess)
+            newRevComp->setAsDrawn();
+    }
+
+    std::vector<DeBruijnNode *> nodesToRemove;
+    for (int i = 0; i < originalNodes->size(); ++i)
+        nodesToRemove.push_back((*originalNodes)[i]);
+    removeGraphicsItemNodes(&nodesToRemove, true, scene);
+}
+
+
+bool AssemblyGraph::mergeGraphicsNodes2(QList<DeBruijnNode *> * originalNodes,
+                                        DeBruijnNode * newNode,
+                                        MyGraphicsScene * scene)
+{
+    bool success = true;
+    std::vector<QPointF> linePoints;
+
+    for (int i = 0; i < originalNodes->size(); ++i)
+    {
+        DeBruijnNode * node = (*originalNodes)[i];
+
+        //If we are in single mode, then we should check for a GraphicsItemNode only
+        //in the positive nodes.
+        bool opposite = false;
+        if (!g_settings->doubleMode && node->isNegativeNode())
+        {
+            node = node->getReverseComplement();
+            opposite = true;
+        }
+
+        GraphicsItemNode * originalGraphicsItemNode = node->getGraphicsItemNode();
+        if (originalGraphicsItemNode == 0)
+        {
+            success = false;
+            break;
+        }
+
+        std::vector<QPointF> originalLinePoints = originalGraphicsItemNode->m_linePoints;
+
+        //Add the original line points to the new line point collection.  If we
+        //are working with an opposite node, then we need to reverse the order.
+        if (opposite)
+        {
+            for (size_t j = originalLinePoints.size(); j > 0; --j)
+                linePoints.push_back(originalLinePoints[j-1]);
+        }
+        else
+        {
+            for (size_t j = 0; j < originalLinePoints.size(); ++j)
+                linePoints.push_back(originalLinePoints[j]);
+        }
+    }
+
+    if (success)
+    {
+        GraphicsItemNode * newGraphicsItemNode = new GraphicsItemNode(newNode, linePoints);
+
+        newNode->setGraphicsItemNode(newGraphicsItemNode);
+        newGraphicsItemNode->setFlag(QGraphicsItem::ItemIsSelectable);
+        newGraphicsItemNode->setFlag(QGraphicsItem::ItemIsMovable);
+
+        newGraphicsItemNode->setNodeColour();
+
+        scene->addItem(newGraphicsItemNode);
+
+        const std::vector<DeBruijnEdge *> * newEdges = newNode->getEdgesPointer();
+        for (size_t i = 0; i < newEdges->size(); ++i)
+        {
+            DeBruijnEdge * newEdge = (*newEdges)[i];
+            GraphicsItemEdge * graphicsItemEdge = new GraphicsItemEdge(newEdge);
+            graphicsItemEdge->setZValue(-1.0);
+            newEdge->setGraphicsItemEdge(graphicsItemEdge);
+            graphicsItemEdge->setFlag(QGraphicsItem::ItemIsSelectable);
+            scene->addItem(graphicsItemEdge);
+        }
+    }
+    return success;
+}
+
+
+
+//If reverseComplement is true, this function will also remove the graphics items for reverse complements of the nodes.
+void AssemblyGraph::removeGraphicsItemNodes(const std::vector<DeBruijnNode *> * nodes,
+                                            bool reverseComplement,
+                                            MyGraphicsScene * scene)
+{
+    QSet<GraphicsItemNode *> graphicsItemNodesToDelete;
+    for (size_t i = 0; i < nodes->size(); ++i)
+    {
+        DeBruijnNode * node = (*nodes)[i];
+        removeAllGraphicsEdgesFromNode(node, reverseComplement, scene);
+
+        GraphicsItemNode * graphicsItemNode = node->getGraphicsItemNode();
+        if (graphicsItemNode != 0 && !graphicsItemNodesToDelete.contains(graphicsItemNode))
+            graphicsItemNodesToDelete.insert(graphicsItemNode);
+        node->setGraphicsItemNode(0);
+
+        if (reverseComplement)
+        {
+            DeBruijnNode * rcNode = node->getReverseComplement();
+            GraphicsItemNode * rcGraphicsItemNode = rcNode->getGraphicsItemNode();
+            if (rcGraphicsItemNode != 0 && !graphicsItemNodesToDelete.contains(rcGraphicsItemNode))
+                graphicsItemNodesToDelete.insert(rcGraphicsItemNode);
+            rcNode->setGraphicsItemNode(0);
+        }
+    }
+
+    if (scene != 0)
+        scene->blockSignals(true);
+    QSetIterator<GraphicsItemNode *> i(graphicsItemNodesToDelete);
+    while (i.hasNext())
+    {
+        GraphicsItemNode * graphicsItemNode = i.next();
+        if (graphicsItemNode != 0)
+        {
+            if (scene != 0)
+                scene->removeItem(graphicsItemNode);
+            delete graphicsItemNode;
+        }
+    }
+    if (scene != 0)
+        scene->blockSignals(false);
+}
+
+
+void AssemblyGraph::removeAllGraphicsEdgesFromNode(DeBruijnNode * node, bool reverseComplement,
+                                                   MyGraphicsScene * scene)
+{
+    const std::vector<DeBruijnEdge *> * edges = node->getEdgesPointer();
+    removeGraphicsItemEdges(edges, reverseComplement, scene);
+}
+
+void AssemblyGraph::removeGraphicsItemEdges(const std::vector<DeBruijnEdge *> * edges,
+                                            bool reverseComplement,
+                                            MyGraphicsScene * scene)
+{
+    QSet<GraphicsItemEdge *> graphicsItemEdgesToDelete;
+    for (size_t i = 0; i < edges->size(); ++i)
+    {
+        DeBruijnEdge * edge = (*edges)[i];
+
+        GraphicsItemEdge * graphicsItemEdge = edge->getGraphicsItemEdge();
+        if (graphicsItemEdge != 0 && !graphicsItemEdgesToDelete.contains(graphicsItemEdge))
+            graphicsItemEdgesToDelete.insert(graphicsItemEdge);
+        edge->setGraphicsItemEdge(0);
+
+        if (reverseComplement)
+        {
+            DeBruijnEdge * rcEdge = edge->getReverseComplement();
+            GraphicsItemEdge * rcGraphicsItemEdge = rcEdge->getGraphicsItemEdge();
+            if (rcGraphicsItemEdge != 0 && !graphicsItemEdgesToDelete.contains(rcGraphicsItemEdge))
+                graphicsItemEdgesToDelete.insert(rcGraphicsItemEdge);
+            rcEdge->setGraphicsItemEdge(0);
+        }
+    }
+
+    if (scene != 0)
+        scene->blockSignals(true);
+    QSetIterator<GraphicsItemEdge *> i(graphicsItemEdgesToDelete);
+    while (i.hasNext())
+    {
+        GraphicsItemEdge * graphicsItemEdge = i.next();
+        if (graphicsItemEdge != 0)
+        {
+            if (scene != 0)
+                scene->removeItem(graphicsItemEdge);
+            delete graphicsItemEdge;
+        }
+    }
+    if (scene != 0)
+        scene->blockSignals(false);
+}
+
+
+//This function simplifies the graph by merging all possible nodes in a simple
+//line.  It returns the number of merges that it did.
+//It gets a pointer to the progress dialog as well so it can check to see if the
+//user has cancelled the merge.
+int AssemblyGraph::mergeAllPossible(MyGraphicsScene * scene,
+                                    MyProgressDialog * progressDialog)
+{
+    //Create a set of all nodes.
+    QSet<DeBruijnNode *> uncheckedNodes;
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        uncheckedNodes.insert(i.value());
+    }
+
+    //Create a list of all merges to be done.
+    QList< QList<DeBruijnNode *> > allMerges;
+    QMapIterator<QString, DeBruijnNode*> j(m_deBruijnGraphNodes);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnNode * node = j.value();
+
+        //If the current node isn't checked, then we will find the longest
+        //possible mergable sequence containing this node.
+        if (uncheckedNodes.contains(node))
+        {
+            QList<DeBruijnNode *> nodesToMerge;
+            nodesToMerge.push_back(node);
+
+            uncheckedNodes.remove(node);
+            uncheckedNodes.remove(node->getReverseComplement());
+
+            //Extend forward as much as possible.
+            bool extended;
+            do
+            {
+                extended = false;
+                DeBruijnNode * last = nodesToMerge.back();
+                std::vector<DeBruijnEdge *> outgoingEdges = last->getLeavingEdges();
+                if (outgoingEdges.size() == 1)
+                {
+                    DeBruijnEdge * potentialEdge = outgoingEdges[0];
+                    DeBruijnNode * potentialNode = potentialEdge->getEndingNode();
+                    std::vector<DeBruijnEdge *> edgesEnteringPotentialNode = potentialNode->getEnteringEdges();
+                    if (edgesEnteringPotentialNode.size() == 1 &&
+                            edgesEnteringPotentialNode[0] == potentialEdge &&
+                            !nodesToMerge.contains(potentialNode) &&
+                            uncheckedNodes.contains(potentialNode))
+                    {
+                        nodesToMerge.push_back(potentialNode);
+                        uncheckedNodes.remove(potentialNode);
+                        uncheckedNodes.remove(potentialNode->getReverseComplement());
+                        extended = true;
+                    }
+                }
+            } while (extended);
+
+            //Extend backward as much as possible.
+            do
+            {
+                extended = false;
+                DeBruijnNode * first = nodesToMerge.front();
+                std::vector<DeBruijnEdge *> incomingEdges = first->getEnteringEdges();
+                if (incomingEdges.size() == 1)
+                {
+                    DeBruijnEdge * potentialEdge = incomingEdges[0];
+                    DeBruijnNode * potentialNode = potentialEdge->getStartingNode();
+                    std::vector<DeBruijnEdge *> edgesLeavingPotentialNode = potentialNode->getLeavingEdges();
+                    if (edgesLeavingPotentialNode.size() == 1 &&
+                            edgesLeavingPotentialNode[0] == potentialEdge &&
+                            !nodesToMerge.contains(potentialNode) &&
+                            uncheckedNodes.contains(potentialNode))
+                    {
+                        nodesToMerge.push_front(potentialNode);
+                        uncheckedNodes.remove(potentialNode);
+                        uncheckedNodes.remove(potentialNode->getReverseComplement());
+                        extended = true;
+                    }
+                }
+            } while (extended);
+
+            if (nodesToMerge.size() > 1)
+                allMerges.push_back(nodesToMerge);
+        }
+    }
+
+    //Now do the actual merges.
+    QApplication::processEvents();
+    emit setMergeTotalCount(allMerges.size());
+    for (int i = 0; i < allMerges.size(); ++i)
+    {
+        if (progressDialog != 0 && progressDialog->wasCancelled())
+            break;
+
+        mergeNodes(allMerges[i], scene, false);
+        emit setMergeCompletedCount(i+1);
+        QApplication::processEvents();
+    }
+
+    recalculateAllDepthsRelativeToDrawnMean();
+    recalculateAllNodeWidths();
+
+    return allMerges.size();
+}
+
+void AssemblyGraph::saveEntireGraphToFasta(QString filename)
+{
+    QFile file(filename);
+    file.open(QIODevice::WriteOnly | QIODevice::Text);
+    QTextStream out(&file);
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        out << i.value()->getFasta(true);
+    }
+}
+
+void AssemblyGraph::saveEntireGraphToFastaOnlyPositiveNodes(QString filename)
+{
+    QFile file(filename);
+    file.open(QIODevice::WriteOnly | QIODevice::Text);
+    QTextStream out(&file);
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode())
+            out << node->getFasta(false);
+    }
+}
+
+bool AssemblyGraph::saveEntireGraphToGfa(QString filename)
+{
+    QFile file(filename);
+    bool success = file.open(QIODevice::WriteOnly | QIODevice::Text);
+    if (!success)
+        return false;
+
+    QTextStream out(&file);
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode())
+            out << node->getGfaSegmentLine(m_depthTag);
+    }
+
+    QList<DeBruijnEdge*> edgesToSave;
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnEdge * edge = j.value();
+        if (edge->isPositiveEdge())
+            edgesToSave.push_back(edge);
+    }
+
+    std::sort(edgesToSave.begin(), edgesToSave.end(), DeBruijnEdge::compareEdgePointers);
+
+    for (int i = 0; i < edgesToSave.size(); ++i)
+        out << edgesToSave[i]->getGfaLinkLine();
+
+    return true;
+}
+
+bool AssemblyGraph::saveVisibleGraphToGfa(QString filename)
+{
+    QFile file(filename);
+    bool success = file.open(QIODevice::WriteOnly | QIODevice::Text);
+    if (!success)
+        return false;
+
+    QTextStream out(&file);
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->thisNodeOrReverseComplementIsDrawn() && node->isPositiveNode())
+            out << node->getGfaSegmentLine(m_depthTag);
+    }
+
+    QList<DeBruijnEdge*> edgesToSave;
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> j(m_deBruijnGraphEdges);
+    while (j.hasNext())
+    {
+        j.next();
+        DeBruijnEdge * edge = j.value();
+        if (edge->getStartingNode()->thisNodeOrReverseComplementIsDrawn() &&
+                edge->getEndingNode()->thisNodeOrReverseComplementIsDrawn() &&
+                edge->isPositiveEdge())
+            edgesToSave.push_back(edge);
+    }
+
+    std::sort(edgesToSave.begin(), edgesToSave.end(), DeBruijnEdge::compareEdgePointers);
+
+    for (int i = 0; i < edgesToSave.size(); ++i)
+        out << edgesToSave[i]->getGfaLinkLine();
+
+    return true;
+}
+
+
+
+
+//This function changes the name of a node pair.  The new and old names are
+//both assumed to not include the +/- at the end.
+void AssemblyGraph::changeNodeName(QString oldName, QString newName)
+{
+    if (checkNodeNameValidity(newName) != NODE_NAME_OKAY)
+        return;
+
+    QString posOldNodeName = oldName + "+";
+    QString negOldNodeName = oldName + "-";
+
+    if (!m_deBruijnGraphNodes.contains(posOldNodeName))
+        return;
+    if (!m_deBruijnGraphNodes.contains(negOldNodeName))
+        return;
+
+    DeBruijnNode * posNode = m_deBruijnGraphNodes[posOldNodeName];
+    DeBruijnNode * negNode = m_deBruijnGraphNodes[negOldNodeName];
+
+    m_deBruijnGraphNodes.remove(posOldNodeName);
+    m_deBruijnGraphNodes.remove(negOldNodeName);
+
+    QString posNewNodeName = newName + "+";
+    QString negNewNodeName = newName + "-";
+
+    posNode->setName(posNewNodeName);
+    negNode->setName(negNewNodeName);
+
+    m_deBruijnGraphNodes.insert(posNewNodeName, posNode);
+    m_deBruijnGraphNodes.insert(negNewNodeName, negNode);
+}
+
+
+
+//This function checks whether a new node name is okay.  It takes a node name
+//without a +/- at the end.
+NodeNameStatus AssemblyGraph::checkNodeNameValidity(QString nodeName)
+{
+    if (nodeName.contains('\t'))
+        return NODE_NAME_CONTAINS_TAB;
+
+    if (nodeName.contains('\n'))
+        return NODE_NAME_CONTAINS_NEWLINE;
+
+    if (nodeName.contains(','))
+        return NODE_NAME_CONTAINS_COMMA;
+
+    if (nodeName.contains(' '))
+        return NODE_NAME_CONTAINS_SPACE;
+
+    if (m_deBruijnGraphNodes.contains(nodeName + "+"))
+        return NODE_NAME_TAKEN;
+
+    return NODE_NAME_OKAY;
+}
+
+
+
+void AssemblyGraph::changeNodeDepth(std::vector<DeBruijnNode *> * nodes,
+                                        double newDepth)
+{
+    if (nodes->size() == 0)
+        return;
+
+    for (size_t i = 0; i < nodes->size(); ++i)
+    {
+        (*nodes)[i]->setDepth(newDepth);
+        (*nodes)[i]->getReverseComplement()->setDepth(newDepth);
+    }
+
+    //If this graph does not already have a depthTag, give it a depthTag of KC
+    //so the depth info will be saved.
+    if (m_depthTag == "")
+        m_depthTag = "KC";
+}
+
+
+
+//This function is used when making FASTA outputs - it breaks a sequence into
+//separate lines.  The default interval is 70, as that seems to be what NCBI
+//uses.
+//The returned string always ends in a newline.
+QByteArray AssemblyGraph::addNewlinesToSequence(QByteArray sequence,
+                                                int interval)
+{
+    QByteArray output;
+
+    int charactersRemaining = sequence.length();
+    int currentIndex = 0;
+    while (charactersRemaining > interval)
+    {
+        output += sequence.mid(currentIndex, interval);
+        output += "\n";
+        charactersRemaining -= interval;
+        currentIndex += interval;
+    }
+    output += sequence.mid(currentIndex);
+    output += "\n";
+
+    return output;
+}
+
+
+
+
+//This function returns the number of dead ends in the graph.
+//It looks only at positive nodes, which can have 0, 1 or 2 dead ends each.
+//This value therefore varies between zero and twice the node count (specifically
+//the positive node count).
+int AssemblyGraph::getDeadEndCount() const
+{
+    int deadEndCount = 0;
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode())
+            deadEndCount += node->getDeadEndCount();
+    }
+
+    return deadEndCount;
+}
+
+
+
+void AssemblyGraph::getNodeStats(int * n50, int * shortestNode, int * firstQuartile, int * median, int * thirdQuartile, int * longestNode) const
+{
+    if (m_totalLength == 0.0)
+        return;
+
+    std::vector<int> nodeLengths;
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode())
+            nodeLengths.push_back(node->getLength());
+    }
+
+    if (nodeLengths.size() == 0)
+        return;
+
+    std::sort(nodeLengths.begin(), nodeLengths.end());
+
+    *shortestNode = nodeLengths.front();
+    *longestNode = nodeLengths.back();
+
+    double firstQuartileIndex = (nodeLengths.size() - 1) / 4.0;
+    double medianIndex = (nodeLengths.size() - 1) / 2.0;
+    double thirdQuartileIndex = (nodeLengths.size() - 1) * 3.0 / 4.0;
+
+    *firstQuartile = round(getValueUsingFractionalIndex(&nodeLengths, firstQuartileIndex));
+    *median = round(getValueUsingFractionalIndex(&nodeLengths, medianIndex));
+    *thirdQuartile = round(getValueUsingFractionalIndex(&nodeLengths, thirdQuartileIndex));
+
+    double halfTotalLength = m_totalLength / 2.0;
+    long long totalSoFar = 0;
+    for (int i = int(nodeLengths.size()) - 1; i >= 0 ; --i)
+    {
+        totalSoFar += nodeLengths[i];
+        if (totalSoFar >= halfTotalLength)
+        {
+            *n50 = nodeLengths[i];
+            break;
+        }
+    }
+}
+
+
+
+//This function uses an algorithm adapted from: http://math.hws.edu/eck/cs327_s04/chapter9.pdf
+void AssemblyGraph::getGraphComponentCountAndLargestComponentSize(int * componentCount, int * largestComponentLength) const
+{
+    *componentCount = 0;
+    *largestComponentLength = 0;
+
+    QSet<DeBruijnNode *> visitedNodes;
+    QList< QList<DeBruijnNode *> > connectedComponents;
+    
+    //Loop through all positive nodes.
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * v = i.value();
+        if (v->isNegativeNode())
+            continue;
+        
+        //If the node has not yet been visited, then it must be the start of a new connected component.
+        if (!visitedNodes.contains(v))
+        {
+            QList<DeBruijnNode *> connectedComponent;
+            
+            QQueue<DeBruijnNode *> q;
+            q.enqueue(v);
+            visitedNodes.insert(v);
+
+            while (!q.isEmpty())
+            {
+                DeBruijnNode * w = q.dequeue();
+                connectedComponent.push_back(w);
+
+                std::vector<DeBruijnNode *> connectedNodes = w->getAllConnectedPositiveNodes();
+                for (size_t j = 0; j < connectedNodes.size(); ++j)
+                {
+                    DeBruijnNode * k = connectedNodes[j];
+                    if (!visitedNodes.contains(k))
+                    {
+                        visitedNodes.insert(k);
+                        q.enqueue(k);
+                    }
+                }
+            }
+
+            connectedComponents.push_back(connectedComponent);
+        }  
+    }
+    
+    //Now that the list of connected components is built, we look for the
+    //largest one (as measured by total node length).
+    *componentCount = connectedComponents.size();
+    for (int i = 0; i < *componentCount; ++i)
+    {
+        int componentLength = 0;
+        for (int j = 0; j < connectedComponents[i].size(); ++j)
+            componentLength += connectedComponents[i][j]->getLength();
+
+        if (componentLength > *largestComponentLength)
+            *largestComponentLength = componentLength;
+    }
+}
+
+bool compareNodeDepth(DeBruijnNode * a, DeBruijnNode * b) {return (a->getDepth() < b->getDepth());}
+
+
+
+double AssemblyGraph::getMedianDepthByBase() const
+{
+    if (m_totalLength == 0)
+        return 0.0;
+
+    //Make a list of all nodes.
+    long long totalLength = 0;
+    QList<DeBruijnNode *> nodeList;
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode())
+        {
+            nodeList.push_back(node);
+            totalLength += node->getLength();
+        }
+    }
+
+    //If there is only one node, then its depth is the median.
+    if (nodeList.size() == 1)
+        return nodeList[0]->getDepth();
+
+    //Sort the node list from low to high depth.
+    std::sort(nodeList.begin(), nodeList.end(), compareNodeDepth);
+
+    if (totalLength % 2 == 0) //Even total length
+    {
+        long long medianIndex2 = totalLength / 2;
+        long long medianIndex1 = medianIndex2 - 1;
+        double depth1 = findDepthAtIndex(&nodeList, medianIndex1);
+        double depth2 = findDepthAtIndex(&nodeList, medianIndex2);
+        return (depth1 + depth2) / 2.0;
+    }
+    else //Odd total length
+    {
+        long long medianIndex = (totalLength - 1) / 2;
+        return findDepthAtIndex(&nodeList, medianIndex);
+    }
+}
+
+
+
+//This function takes a node list sorted by depth and a target index (in terms of
+//the whole sequence length).  It returns the depth at that index.
+double AssemblyGraph::findDepthAtIndex(QList<DeBruijnNode *> * nodeList, long long targetIndex) const
+{
+    long long lengthSoFar = 0;
+    for (int i = 0; i < nodeList->size(); ++i)
+    {
+        DeBruijnNode * node = (*nodeList)[i];
+
+        lengthSoFar += node->getLength();
+        long long currentIndex = lengthSoFar - 1;
+
+        if (currentIndex >= targetIndex)
+            return node->getDepth();
+    }
+    return 0.0;
+}
+
+
+
+long long AssemblyGraph::getEstimatedSequenceLength() const
+{
+    return getEstimatedSequenceLength(getMedianDepthByBase());
+}
+
+
+
+long long AssemblyGraph::getEstimatedSequenceLength(double medianDepthByBase) const
+{
+    long long estimatedSequenceLength = 0;
+    if (medianDepthByBase == 0.0)
+        return 0;
+
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+
+        if (node->isPositiveNode())
+        {
+            int nodeLength = node->getLengthWithoutTrailingOverlap();
+            double relativeDepth = node->getDepth() / medianDepthByBase;
+
+            int closestIntegerDepth = round(relativeDepth);
+            int lengthAdjustedForDepth = nodeLength * closestIntegerDepth;
+
+            estimatedSequenceLength += lengthAdjustedForDepth;
+        }
+    }
+
+    return estimatedSequenceLength;
+}
+
+
+
+long long AssemblyGraph::getTotalLengthMinusEdgeOverlaps() const
+{
+    long long totalLength = 0;
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode())
+        {
+            totalLength += node->getLength();
+            const std::vector<DeBruijnEdge *> * edges = node->getEdgesPointer();
+            int maxOverlap = 0;
+            for (size_t j = 0; j < edges->size(); ++j)
+            {
+                int edgeOverlap = (*edges)[j]->getOverlap();
+                maxOverlap = std::max(maxOverlap, edgeOverlap);
+            }
+            totalLength -= maxOverlap;
+        }
+    }
+
+    return totalLength;
+}
+
+
+QPair<int, int> AssemblyGraph::getOverlapRange() const
+{
+    int smallestOverlap = std::numeric_limits<int>::max();
+    int largestOverlap = 0;
+    QMapIterator<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> i(m_deBruijnGraphEdges);
+    while (i.hasNext())
+    {
+        i.next();
+        int overlap = i.value()->getOverlap();
+        if (overlap < smallestOverlap)
+            smallestOverlap = overlap;
+        if (overlap > largestOverlap)
+            largestOverlap = overlap;
+    }
+    if (smallestOverlap == std::numeric_limits<int>::max())
+        smallestOverlap = 0;
+    return QPair<int, int>(smallestOverlap, largestOverlap);
+}
+
+
+
+//This function will look to see if there is a FASTA file (.fa or .fasta) with
+//the same base name as the graph. If so, it will load it and give its
+//sequences to the graph nodes with matching names. This is useful for GFA
+//files which have no sequences (just '*') like ABySS makes.
+//Returns true if any sequences were loaded (doesn't have to be all sequences
+//in the graph).
+bool AssemblyGraph::attemptToLoadSequencesFromFasta()
+{
+    if (m_sequencesLoadedFromFasta == NOT_READY || m_sequencesLoadedFromFasta == TRIED)
+        return false;
+
+    m_sequencesLoadedFromFasta = TRIED;
+
+    QFileInfo gfaFileInfo(m_filename);
+    QString baseName = gfaFileInfo.completeBaseName();
+    QString fastaName = gfaFileInfo.dir().filePath(baseName + ".fa");
+    QFileInfo fastaFileInfo(fastaName);
+    if (!fastaFileInfo.exists())
+    {
+        fastaName = gfaFileInfo.dir().filePath(baseName + ".fasta");
+        fastaFileInfo = QFileInfo(fastaName);
+    }
+    if (!fastaFileInfo.exists())
+    {
+        fastaName = gfaFileInfo.dir().filePath(baseName + ".contigs.fasta");
+        fastaFileInfo = QFileInfo(fastaName);
+    }
+    if (!fastaFileInfo.exists())
+        return false;
+
+    bool atLeastOneNodeSequenceLoaded = false;
+    std::vector<QString> names;
+    std::vector<QByteArray> sequences;
+    readFastaFile(fastaName, &names, &sequences);
+
+    for (size_t i = 0; i < names.size(); ++i)
+    {
+        QString name = names[i];
+        name = simplifyCanuNodeName(name);
+        name = name.split(QRegExp("\\s+"))[0];
+        if (m_deBruijnGraphNodes.contains(name + "+"))
+        {
+            DeBruijnNode * posNode = m_deBruijnGraphNodes[name + "+"];
+            if (posNode->sequenceIsMissing())
+            {
+                atLeastOneNodeSequenceLoaded = true;
+                posNode->setSequence(sequences[i]);
+                DeBruijnNode * negNode = m_deBruijnGraphNodes[name + "-"];
+                negNode->setSequence(getReverseComplement(sequences[i]));
+            }
+        }
+    }
+
+    return atLeastOneNodeSequenceLoaded;
+}
+
+// Returns true if every node name in the graph starts with the string.
+bool AssemblyGraph::allNodesStartWith(QString start) const
+{
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (!node->getName().startsWith(start))
+            return false;
+    }
+    return true;
+}
+
+
+QString AssemblyGraph::simplifyCanuNodeName(QString oldName) const
+{
+    QString newName;
+
+    // Remove "tig" from front.
+    if (!oldName.startsWith("tig"))
+        return oldName;
+    newName = oldName.remove(0, 3);
+    if (newName.isEmpty())
+        return oldName;
+
+    // Remove +/- from end.
+    QChar sign = oldName[oldName.length()-1];
+    newName.chop(1);
+    if (newName.isEmpty())
+        return oldName;
+
+    // Remove leading zeros.
+    while (newName.length() > 1 && newName[0] == '0')
+        newName.remove(0, 1);
+    return newName + sign;
+}
+
+long long AssemblyGraph::getTotalLengthOrphanedNodes() const {
+    long long total = 0;
+    QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        if (node->isPositiveNode() && node->getDeadEndCount() == 2)
+            total += node->getLength();
+    }
+    return total;
+}
+
+
+bool AssemblyGraph::useLinearLayout() const {
+    return g_settings->linearLayout || m_graphFileType == PLAIN_FASTA;
+}
diff --git a/graph/assemblygraph.h b/graph/assemblygraph.h
new file mode 100644
index 0000000..ef5a0f8
--- /dev/null
+++ b/graph/assemblygraph.h
@@ -0,0 +1,215 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef ASSEMBLYGRAPH_H
+#define ASSEMBLYGRAPH_H
+
+#include <QObject>
+#include <vector>
+
+#include "../ogdf/basic/Graph.h"
+#include "../ogdf/basic/GraphAttributes.h"
+#include <QString>
+#include <QMap>
+#include "../program/globals.h"
+#include "../ui/mygraphicsscene.h"
+#include "path.h"
+#include <QPair>
+
+class DeBruijnNode;
+class DeBruijnEdge;
+class MyProgressDialog;
+
+class AssemblyGraph : public QObject
+{
+    Q_OBJECT
+
+public:
+    AssemblyGraph();
+    ~AssemblyGraph();
+
+    //Nodes are stored in a map with a key of the node's name.
+    QMap<QString, DeBruijnNode*> m_deBruijnGraphNodes;
+
+    //Edges are stored in a map with a key of the starting and ending node
+    //pointers.
+    QMap<QPair<DeBruijnNode*, DeBruijnNode*>, DeBruijnEdge*> m_deBruijnGraphEdges;
+
+    ogdf::Graph * m_ogdfGraph;
+    ogdf::EdgeArray<double> * m_edgeArray;
+    ogdf::GraphAttributes * m_graphAttributes;
+
+    int m_kmer;
+    int m_nodeCount;
+    int m_edgeCount;
+    long long m_totalLength;
+    long long m_shortestContig;
+    long long m_longestContig;
+    double m_meanDepth;
+    double m_firstQuartileDepth;
+    double m_medianDepth;
+    double m_thirdQuartileDepth;
+    GraphFileType m_graphFileType;
+    bool m_contiguitySearchDone;
+    QString m_filename;
+    QString m_depthTag;
+    SequencesLoadedFromFasta m_sequencesLoadedFromFasta;
+
+    void cleanUp();
+    void createDeBruijnEdge(QString node1Name, QString node2Name,
+                            int overlap = 0,
+                            EdgeOverlapType overlapType = UNKNOWN_OVERLAP);
+    void clearOgdfGraphAndResetNodes();
+    static QByteArray getReverseComplement(QByteArray forwardSequence);
+    void resetEdges();
+    double getMeanDepth(bool drawnNodesOnly = false);
+    double getMeanDepth(std::vector<DeBruijnNode *> nodes);
+    double getMeanDepth(QList<DeBruijnNode *> nodes);
+    void resetNodeContiguityStatus();
+    void resetAllNodeColours();
+    void clearAllBlastHitPointers();
+    void determineGraphInfo();
+    void clearGraphInfo();
+    void buildDeBruijnGraphFromLastGraph(QString fullFileName);
+    void buildDeBruijnGraphFromGfa(QString fullFileName, bool * unsupportedCigar, bool * customLabels,
+                                   bool * customColours, QString *bandageOptionsError);
+    void buildDeBruijnGraphFromFastg(QString fullFileName);
+    void buildDeBruijnGraphFromTrinityFasta(QString fullFileName);
+    int buildDeBruijnGraphFromAsqg(QString fullFileName);
+    void buildDeBruijnGraphFromPlainFasta(QString fullFileName);
+    void recalculateAllDepthsRelativeToDrawnMean();
+    void recalculateAllNodeWidths();
+
+    GraphFileType getGraphFileTypeFromFile(QString fullFileName);
+    bool checkFileIsLastGraph(QString fullFileName);
+    bool checkFileIsFastG(QString fullFileName);
+    bool checkFileIsFasta(QString fullFileName);
+    bool checkFileIsGfa(QString fullFileName);
+    bool checkFileIsTrinityFasta(QString fullFileName);
+    bool checkFileIsAsqg(QString fullFileName);
+    bool checkFirstLineOfFile(QString fullFileName, QString regExp);
+
+    bool loadGraphFromFile(QString filename);
+    void buildOgdfGraphFromNodesAndEdges(std::vector<DeBruijnNode *> startingNodes,
+                                         int nodeDistance);
+    void addGraphicsItemsToScene(MyGraphicsScene * scene);
+
+    QStringList splitCsv(QString line, QString sep=",");
+    bool loadCSV(QString filename, QStringList * columns, QString * errormsg, bool * coloursLoaded);
+    std::vector<DeBruijnNode *> getStartingNodes(QString * errorTitle,
+                                                 QString * errorMessage,
+                                                 bool doubleMode,
+                                                 QString nodesList,
+                                                 QString blastQueryName);
+
+    bool checkIfStringHasNodes(QString nodesString);
+    QString generateNodesNotFoundErrorMessage(std::vector<QString> nodesNotInGraph,
+                                              bool exact);
+    std::vector<DeBruijnNode *> getNodesFromString(QString nodeNamesString,
+                                                   bool exactMatch,
+                                                   std::vector<QString> * nodesNotInGraph = 0);
+    void layoutGraph();
+
+    void setAllEdgesExactOverlap(int overlap);
+    void autoDetermineAllEdgesExactOverlap();
+
+    static void readFastaFile(QString filename, std::vector<QString> * names,
+                              std::vector<QByteArray> * sequences);
+
+    int getDrawnNodeCount() const;
+    void deleteNodes(std::vector<DeBruijnNode *> * nodes);
+    void deleteEdges(std::vector<DeBruijnEdge *> * edges);
+    void duplicateNodePair(DeBruijnNode * node, MyGraphicsScene * scene);
+    bool mergeNodes(QList<DeBruijnNode *> nodes, MyGraphicsScene * scene,
+                    bool recalulateDepth);
+    void removeGraphicsItemEdges(const std::vector<DeBruijnEdge *> * edges,
+                                 bool reverseComplement,
+                                 MyGraphicsScene * scene);
+    void removeGraphicsItemNodes(const std::vector<DeBruijnNode *> * nodes,
+                                 bool reverseComplement,
+                                 MyGraphicsScene * scene);
+    int mergeAllPossible(MyGraphicsScene * scene = 0,
+                         MyProgressDialog * progressDialog = 0);
+
+    void saveEntireGraphToFasta(QString filename);
+    void saveEntireGraphToFastaOnlyPositiveNodes(QString filename);
+    bool saveEntireGraphToGfa(QString filename);
+    bool saveVisibleGraphToGfa(QString filename);
+    void changeNodeName(QString oldName, QString newName);
+    NodeNameStatus checkNodeNameValidity(QString nodeName);
+    void changeNodeDepth(std::vector<DeBruijnNode *> * nodes,
+                             double newDepth);
+
+    static QByteArray addNewlinesToSequence(QByteArray sequence, int interval = 70);
+    int getDeadEndCount() const;
+    void getNodeStats(int * n50, int * shortestNode, int * firstQuartile, int * median, int * thirdQuartile, int * longestNode) const;
+    void getGraphComponentCountAndLargestComponentSize(int * componentCount, int * largestComponentLength) const;
+    double getMedianDepthByBase() const;
+    long long getEstimatedSequenceLength() const;
+    long long getEstimatedSequenceLength(double medianDepthByBase) const;
+    long long getTotalLengthMinusEdgeOverlaps() const;
+    QPair<int, int> getOverlapRange() const;
+    bool attemptToLoadSequencesFromFasta();
+    long long getTotalLengthOrphanedNodes() const;
+    bool useLinearLayout() const;
+
+
+private:
+    template<typename T> double getValueUsingFractionalIndex(std::vector<T> * v, double index) const;
+    QString convertNormalNumberStringToBandageNodeName(QString number);
+    void makeReverseComplementNodeIfNecessary(DeBruijnNode * node);
+    void pointEachNodeToItsReverseComplement();
+    QStringList removeNullStringsFromList(QStringList in);
+    std::vector<DeBruijnNode *> getNodesFromListExact(QStringList nodesList, std::vector<QString> * nodesNotInGraph);
+    std::vector<DeBruijnNode *> getNodesFromListPartial(QStringList nodesList, std::vector<QString> * nodesNotInGraph);
+    std::vector<DeBruijnNode *> getNodesFromBlastHits(QString queryName);
+    std::vector<DeBruijnNode *> getNodesInDepthRange(double min, double max);
+    std::vector<int> makeOverlapCountVector();
+    bool cigarContainsOnlyM(QString cigar);
+    int getLengthFromSimpleCigar(QString cigar);
+    int getLengthFromCigar(QString cigar);
+    int getCigarCount(QString cigarCode, QString cigar);
+    QString getOppositeNodeName(QString nodeName);
+    void clearAllCsvData();
+    QString getNodeNameFromString(QString string);
+    QString getNewNodeName(QString oldNodeName);
+    void duplicateGraphicsNode(DeBruijnNode * originalNode, DeBruijnNode * newNode, MyGraphicsScene * scene);
+    bool canAddNodeToStartOfMergeList(QList<DeBruijnNode *> * mergeList,
+                                      DeBruijnNode * potentialNode);
+    bool canAddNodeToEndOfMergeList(QList<DeBruijnNode *> * mergeList,
+                                    DeBruijnNode * potentialNode);
+    QString getUniqueNodeName(QString baseName);
+    void mergeGraphicsNodes(QList<DeBruijnNode *> * originalNodes,
+                            QList<DeBruijnNode *> * revCompOriginalNodes,
+                            DeBruijnNode * newNode, MyGraphicsScene * scene);
+    bool mergeGraphicsNodes2(QList<DeBruijnNode *> * originalNodes,
+                             DeBruijnNode * newNode, MyGraphicsScene * scene);
+    void removeAllGraphicsEdgesFromNode(DeBruijnNode * node,
+                                        bool reverseComplement,
+                                        MyGraphicsScene * scene);
+    QString cleanNodeName(QString name);
+    double findDepthAtIndex(QList<DeBruijnNode *> * nodeList, long long targetIndex) const;
+    bool allNodesStartWith(QString start) const;
+    QString simplifyCanuNodeName(QString oldName) const;
+
+signals:
+    void setMergeTotalCount(int totalCount);
+    void setMergeCompletedCount(int completedCount);
+};
+
+#endif // ASSEMBLYGRAPH_H
diff --git a/graph/debruijnedge.cpp b/graph/debruijnedge.cpp
new file mode 100644
index 0000000..d878639
--- /dev/null
+++ b/graph/debruijnedge.cpp
@@ -0,0 +1,445 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "debruijnedge.h"
+#include <math.h>
+#include "../program/settings.h"
+#include "ogdfnode.h"
+#include <QApplication>
+#include "../program/settings.h"
+#include "../program/globals.h"
+#include "assemblygraph.h"
+
+DeBruijnEdge::DeBruijnEdge(DeBruijnNode *startingNode, DeBruijnNode *endingNode) :
+    m_startingNode(startingNode), m_endingNode(endingNode), m_graphicsItemEdge(0),
+    m_drawn(false), m_overlapType(UNKNOWN_OVERLAP), m_overlap(0)
+{
+}
+
+
+
+//This function assumes that the parameter node pointer is one of the two nodes
+//in this edge, and it returns the other one.
+DeBruijnNode * DeBruijnEdge::getOtherNode(const DeBruijnNode * node) const
+{
+    if (node == m_startingNode)
+        return m_endingNode;
+    else
+        return m_startingNode;
+}
+
+
+//This function determines whether the edge should be drawn to the screen.
+bool DeBruijnEdge::edgeIsVisible() const
+{
+    //If the program is in double mode, then draw any edge where both of its
+    //nodes are drawn.
+    if (g_settings->doubleMode)
+        return m_startingNode->isDrawn() && m_endingNode->isDrawn();
+
+    //If the program is in single mode, then draw any edge where both of its
+    //nodes or their reverse complements are drawn.
+    else
+    {
+        bool drawEdge = (m_startingNode->isDrawn() || m_startingNode->getReverseComplement()->isDrawn())
+                && (m_endingNode->isDrawn() || m_endingNode->getReverseComplement()->isDrawn());
+        if (!drawEdge)
+            return false;
+
+        //But it is also necessary to avoid drawing both an edge and its
+        //reverse complement edge.
+        return isPositiveEdge();
+    }
+}
+
+
+
+//This function says whether an edge is 'positive'.  This is used to distinguish
+//an edge from its reverse complement - i.e. half of the graph edges are
+//positive and their reverse complements are negative.
+//When one node in the edge is positive and the other is negative, then the
+//choice is somewhat arbitrary.
+bool DeBruijnEdge::isPositiveEdge() const
+{
+    //If both nodes have a positive number, show this edge, and not
+    //the reverse complement where both nodes are negative.
+    if (m_startingNode->isPositiveNode() && m_endingNode->isPositiveNode())
+        return true;
+    if (m_startingNode->isNegativeNode() && m_endingNode->isNegativeNode())
+        return false;
+
+    //Edges that are their own reverse complement are considered positive (but
+    //will not have a negative counterpart).
+    if (isOwnReverseComplement())
+        return true;
+
+    //If the code got here, then one node is positive and the other
+    //negative.  In this case, just choose the one with the first name
+    //alphabetically - an arbitrary choice, but at least it is
+    //consistent.
+    return (m_startingNode->getName() > m_reverseComplement->m_startingNode->getName());
+}
+
+
+void DeBruijnEdge::addToOgdfGraph(ogdf::Graph * ogdfGraph, ogdf::EdgeArray<double> * edgeArray) const
+{
+    ogdf::node firstEdgeOgdfNode;
+    ogdf::node secondEdgeOgdfNode;
+
+    if (m_startingNode->inOgdf())
+        firstEdgeOgdfNode = m_startingNode->getOgdfNode()->getLast();
+    else if (m_startingNode->getReverseComplement()->inOgdf())
+        firstEdgeOgdfNode = m_startingNode->getReverseComplement()->getOgdfNode()->getFirst();
+    else
+        return; //Ending node or its reverse complement isn't in OGDF
+
+    if (m_endingNode->inOgdf())
+        secondEdgeOgdfNode = m_endingNode->getOgdfNode()->getFirst();
+    else if (m_endingNode->getReverseComplement()->inOgdf())
+        secondEdgeOgdfNode = m_endingNode->getReverseComplement()->getOgdfNode()->getLast();
+    else
+        return; //Ending node or its reverse complement isn't in OGDF
+
+    //If this in an edge connected a single-segment node to itself, then we
+    //don't want to put it in the OGDF graph, because it would be redundant
+    //with the node segment (and created conflict with the node/edge length).
+    if (m_startingNode == m_endingNode)
+    {
+        if (m_startingNode->getNumberOfOgdfGraphEdges(m_startingNode->getDrawnNodeLength()) == 1)
+            return;
+    }
+
+    ogdf::edge newEdge = ogdfGraph->newEdge(firstEdgeOgdfNode, secondEdgeOgdfNode);
+    (*edgeArray)[newEdge] = g_settings->edgeLength;
+}
+
+
+
+
+
+
+
+
+//This function traces all possible paths from this edge.
+//It proceeds a number of steps, as determined by a setting.
+//If forward is true, it looks in a forward direction (starting nodes to
+//ending nodes).  If forward is false, it looks in a backward direction
+//(ending nodes to starting nodes).
+void DeBruijnEdge::tracePaths(bool forward,
+                              int stepsRemaining,
+                              std::vector< std::vector <DeBruijnNode *> > * allPaths,
+                              DeBruijnNode * startingNode,
+                              std::vector<DeBruijnNode *> pathSoFar) const
+{
+    //This can go for a while, so keep the UI responsive.
+    QApplication::processEvents();
+
+    //Find the node in the direction we are tracing.
+    DeBruijnNode * nextNode;
+    if (forward)
+        nextNode = m_endingNode;
+    else
+        nextNode = m_startingNode;
+
+    //Add that node to the path so far.
+    pathSoFar.push_back(nextNode);
+
+    //If there are no steps left, then the path so far is done.
+    --stepsRemaining;
+    if (stepsRemaining == 0)
+    {
+        allPaths->push_back(pathSoFar);
+        return;
+    }
+
+    //If the code got here, then more steps remain.
+    //Find the edges that are in the correct direction.
+    std::vector<DeBruijnEdge *> nextEdges = findNextEdgesInPath(nextNode, forward);
+
+    //If there are no next edges, then we are finished with the
+    //path search, even though steps remain.
+    if (nextEdges.size() == 0)
+    {
+        allPaths->push_back(pathSoFar);
+        return;
+    }
+
+    //Call this function on all of the next edges.
+    //However, we also need to check to see if we are tracing a loop
+    //and stop if that is the case.
+    for (size_t i = 0; i < nextEdges.size(); ++i)
+    {
+        DeBruijnEdge * nextEdge = nextEdges[i];
+
+        //Determine the node that this next edge leads to.
+        DeBruijnNode * nextNextNode;
+        if (forward)
+            nextNextNode = nextEdge->m_endingNode;
+        else
+            nextNextNode = nextEdge->m_startingNode;
+
+        //If that node is the starting node, then we've made
+        //a full loop and the path should be considered complete.
+        if (nextNextNode == startingNode)
+        {
+            allPaths->push_back(pathSoFar);
+            continue;
+        }
+
+        //If that node is already in the path TWICE so far, that means
+        //we're caught in a loop, and we should throw this path out.
+        //If it appears 0 or 1 times, then continue the path search.
+        if (timesNodeInPath(nextNextNode, &pathSoFar) < 2)
+            nextEdge->tracePaths(forward, stepsRemaining, allPaths, startingNode, pathSoFar);
+    }
+}
+
+
+//This function counts how many times a node appears in a path
+int DeBruijnEdge::timesNodeInPath(DeBruijnNode * node, std::vector<DeBruijnNode *> * path) const
+{
+    int count = 0;
+    for (size_t i = 0; i < path->size(); ++i)
+    {
+        if ( (*path)[i] == node)
+            ++count;
+    }
+
+    return count;
+}
+
+
+
+bool DeBruijnEdge::leadsOnlyToNode(bool forward,
+                                   int stepsRemaining,
+                                   DeBruijnNode * target,
+                                   std::vector<DeBruijnNode *> pathSoFar,
+                                   bool includeReverseComplement) const
+{
+    //This can go for a while, so keep the UI responsive.
+    QApplication::processEvents();
+
+    //Find the node in the direction we are tracing.
+    DeBruijnNode * nextNode;
+    if (forward)
+        nextNode = m_endingNode;
+    else
+        nextNode = m_startingNode;
+
+    //Add that node to the path so far.
+    pathSoFar.push_back(nextNode);
+
+    //If this path has landed on the node from which the search began,
+    //that means we've followed a loop around.  The search has therefore
+    //failed because this path could represent circular DNA that does
+    //not contain the target.
+    if (nextNode == pathSoFar[0])
+        return false;
+
+    //If the next node is the target, the search succeeded!
+    if (nextNode == target)
+        return true;
+
+    //If we are including reverse complements and the next node is
+    //the reverse complement of the target, the search succeeded!
+    if (includeReverseComplement && nextNode->getReverseComplement() == target)
+        return true;
+
+    //If there are no steps left, then the search failed.
+    --stepsRemaining;
+    if (stepsRemaining == 0)
+        return false;
+
+    //If the code got here, then more steps remain.
+    //Find the edges that are in the correct direction.
+    std::vector<DeBruijnEdge *> nextEdges = findNextEdgesInPath(nextNode, forward);
+
+    //If there are no next edges, then the search failed, even
+    //though steps remain.
+    if (nextEdges.size() == 0)
+        return false;
+
+    //In order for the search to succeed, this function needs to return true
+    //for all of the nextEdges.
+    //However, we also need to check to see if we are tracing a loop
+    //and stop if that is the case.
+    for (size_t i = 0; i < nextEdges.size(); ++i)
+    {
+        DeBruijnEdge * nextEdge = nextEdges[i];
+
+        //Determine the node that this next edge leads to.
+        DeBruijnNode * nextNextNode;
+        if (forward)
+            nextNextNode = nextEdge->m_endingNode;
+        else
+            nextNextNode = nextEdge->m_startingNode;
+
+        //If that node is already in the path TWICE so far, that means
+        //we're caught in a loop, and we should throw this path out.
+        //If it appears 0 or 1 times, then continue the path search.
+        if (timesNodeInPath(nextNextNode, &pathSoFar) < 2)
+        {
+            if ( !nextEdge->leadsOnlyToNode(forward, stepsRemaining, target, pathSoFar, includeReverseComplement) )
+                return false;
+        }
+    }
+
+    //If the code got here, then the search succeeded!
+    return true;
+}
+
+
+std::vector<DeBruijnEdge *> DeBruijnEdge::findNextEdgesInPath(DeBruijnNode * nextNode,
+                                                              bool forward) const
+{
+    std::vector<DeBruijnEdge *> nextEdges;
+    const std::vector<DeBruijnEdge *> * nextNodeEdges = nextNode->getEdgesPointer();
+    for (size_t i = 0; i < nextNodeEdges->size(); ++i)
+    {
+        DeBruijnEdge * edge = (*nextNodeEdges)[i];
+
+        //If forward, we're looking for edges that lead away from
+        //nextNode.  If backward, we're looking for edges that lead
+        //into nextNode.
+        if ((forward && edge->m_startingNode == nextNode) ||
+                (!forward && edge->m_endingNode == nextNode))
+            nextEdges.push_back(edge);
+    }
+
+    return nextEdges;
+}
+
+
+//This function tries to automatically determine the overlap size
+//between the two nodes.  It tries each overlap size between the min
+//to the max (in settings), assigning the first one it finds.
+void DeBruijnEdge::autoDetermineExactOverlap()
+{
+    m_overlap = 0;
+    m_overlapType = AUTO_DETERMINED_EXACT_OVERLAP;
+
+    //Find an appropriate search range
+    int minPossibleOverlap = std::min(m_startingNode->getLength(), m_endingNode->getLength());
+    if (minPossibleOverlap < g_settings->minAutoFindEdgeOverlap)
+        return;
+    int min = std::min(minPossibleOverlap, g_settings->minAutoFindEdgeOverlap);
+    int max = std::min(minPossibleOverlap, g_settings->maxAutoFindEdgeOverlap);
+
+    //Try each overlap in the range and set the first one found.
+    //However, we don't want the search to be biased towards larger
+    //or smaller overlaps, so start with a pseudorandom value and loop.
+    int testOverlap = min + (rand() % (max - min + 1));
+    for (int i = min; i <= max; ++i)
+    {
+        if (testExactOverlap(testOverlap))
+        {
+            m_overlap = testOverlap;
+            return;
+        }
+
+        ++testOverlap;
+        if (testOverlap > max)
+            testOverlap = min;
+    }
+}
+
+
+
+
+//This function tries the given overlap between the two nodes.
+//If the overlap works perfectly, it returns true.
+bool DeBruijnEdge::testExactOverlap(int overlap) const
+{
+    bool mismatchFound = false;
+
+    int seq1Offset = m_startingNode->getLength() - overlap;
+
+    //Look at each position in the overlap
+    for (int j = 0; j < overlap && !mismatchFound; ++j)
+    {
+        char a = m_startingNode->getBaseAt(seq1Offset + j);
+        char b = m_endingNode->getBaseAt(j);
+        if (a != b)
+            mismatchFound = true;
+    }
+
+    return !mismatchFound;
+}
+
+
+QByteArray DeBruijnEdge::getGfaLinkLine() const
+{
+    DeBruijnNode * startingNode = getStartingNode();
+    DeBruijnNode * endingNode = getEndingNode();
+
+    QByteArray gfaLinkLine = "L\t";
+    gfaLinkLine += startingNode->getNameWithoutSign() + "\t";
+    gfaLinkLine += startingNode->getSign() + "\t";
+    gfaLinkLine += endingNode->getNameWithoutSign() + "\t";
+    gfaLinkLine += endingNode->getSign() + "\t";
+
+    //When Velvet graphs are saved to GFA, the sequences are extended to include
+    //the overlap.  So even though this edge might have no overlap, the GFA link
+    //line should.
+    if (g_assemblyGraph->m_graphFileType == LAST_GRAPH)
+        gfaLinkLine += QString::number(g_assemblyGraph->m_kmer - 1) + "M";
+    else
+        gfaLinkLine += QString::number(getOverlap()) + "M";
+
+    gfaLinkLine += "\n";
+    return gfaLinkLine;
+}
+
+bool DeBruijnEdge::compareEdgePointers(DeBruijnEdge * a, DeBruijnEdge * b)
+{
+    QString aStart = a->getStartingNode()->getName();
+    QString bStart = b->getStartingNode()->getName();
+    QString aStartNoSign = aStart;
+    aStartNoSign.chop(1);
+    QString bStartNoSign = bStart;
+    bStartNoSign.chop(1);
+    bool ok1;
+    long long aStartNumber = aStartNoSign.toLongLong(&ok1);
+    bool ok2;
+    long long bStartNumber = bStartNoSign.toLongLong(&ok2);
+
+    QString aEnd = a->getEndingNode()->getName();
+    QString bEnd = b->getEndingNode()->getName();
+    QString aEndNoSign = aEnd;
+    aEndNoSign.chop(1);
+    QString bEndNoSign = bEnd;
+    bEndNoSign.chop(1);
+    bool ok3;
+    long long aEndNumber = aEndNoSign.toLongLong(&ok3);
+    bool ok4;
+    long long bEndNumber = bEndNoSign.toLongLong(&ok4);
+
+
+    //If the node names are essentially numbers, then sort them as numbers.
+    if (ok1 && ok2 && ok3 && ok4)
+    {
+        if (aStartNumber != bStartNumber)
+            return aStartNumber < bStartNumber;
+
+        if (aStartNumber == bStartNumber)
+            return aEndNumber < bEndNumber;
+    }
+
+    //If the node names are strings, then just sort them as strings.
+    return aStart < bStart;
+}
diff --git a/graph/debruijnedge.h b/graph/debruijnedge.h
new file mode 100644
index 0000000..9d0de05
--- /dev/null
+++ b/graph/debruijnedge.h
@@ -0,0 +1,86 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef DEBRUIJNEDGE_H
+#define DEBRUIJNEDGE_H
+
+#include "../ogdf/basic/Graph.h"
+#include "debruijnnode.h"
+
+class GraphicsItemEdge;
+
+class DeBruijnEdge
+{
+public:
+    //CREATORS
+    DeBruijnEdge(DeBruijnNode * startingNode, DeBruijnNode * endingNode);
+
+    //ACCESSORS
+    bool isStartingNode(DeBruijnNode * node) const {return node == m_startingNode;}
+    DeBruijnNode * getStartingNode() const {return m_startingNode;}
+    DeBruijnNode * getEndingNode() const {return m_endingNode;}
+    GraphicsItemEdge * getGraphicsItemEdge() const {return m_graphicsItemEdge;}
+    DeBruijnEdge * getReverseComplement() const {return m_reverseComplement;}
+    bool isDrawn() const {return m_drawn;}
+    int getOverlap() const {return m_overlap;}
+    EdgeOverlapType getOverlapType() const {return m_overlapType;}
+    DeBruijnNode * getOtherNode(const DeBruijnNode * node) const;
+    bool testExactOverlap(int overlap) const;
+    void tracePaths(bool forward,
+                    int stepsRemaining,
+                    std::vector<std::vector<DeBruijnNode *> > * allPaths,
+                    DeBruijnNode * startingNode,
+                    std::vector<DeBruijnNode *> pathSoFar = std::vector<DeBruijnNode *>()) const;
+    bool leadsOnlyToNode(bool forward,
+                         int stepsRemaining,
+                         DeBruijnNode * target,
+                         std::vector<DeBruijnNode *> pathSoFar,
+                         bool includeReverseComplement) const;
+    QByteArray getGfaLinkLine() const;
+    bool isPositiveEdge() const;
+    bool isNegativeEdge() const {return !isPositiveEdge();}
+    bool isOwnReverseComplement() const {return this == getReverseComplement();}
+    static bool compareEdgePointers(DeBruijnEdge * a, DeBruijnEdge * b);
+
+    //MODIFERS
+    void setGraphicsItemEdge(GraphicsItemEdge * gie) {m_graphicsItemEdge = gie;}
+    void setReverseComplement(DeBruijnEdge * rc) {m_reverseComplement = rc;}
+    void setOverlap(int ol) {m_overlap = ol;}
+    void setOverlapType(EdgeOverlapType olt) {m_overlapType = olt;}
+    void reset() {m_graphicsItemEdge = 0; m_drawn = false;}
+    void determineIfDrawn() {m_drawn = edgeIsVisible();}
+    void setExactOverlap(int overlap) {m_overlap = overlap; m_overlapType = EXACT_OVERLAP;}
+    void autoDetermineExactOverlap();
+    void addToOgdfGraph(ogdf::Graph * ogdfGraph, ogdf::EdgeArray<double> * edgeArray) const;
+
+private:
+    DeBruijnNode * m_startingNode;
+    DeBruijnNode * m_endingNode;
+    GraphicsItemEdge * m_graphicsItemEdge;
+    DeBruijnEdge * m_reverseComplement;
+    bool m_drawn;
+    EdgeOverlapType m_overlapType;
+    int m_overlap;
+
+    bool edgeIsVisible() const;
+    int timesNodeInPath(DeBruijnNode * node, std::vector<DeBruijnNode *> * path) const;
+    std::vector<DeBruijnEdge *> findNextEdgesInPath(DeBruijnNode * nextNode,
+                                                    bool forward) const;
+};
+
+#endif // DEBRUIJNEDGE_H
diff --git a/graph/debruijnnode.cpp b/graph/debruijnnode.cpp
new file mode 100644
index 0000000..fe1f48b
--- /dev/null
+++ b/graph/debruijnnode.cpp
@@ -0,0 +1,840 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "debruijnnode.h"
+#include "debruijnedge.h"
+#include "ogdfnode.h"
+#include "graphicsitemnode.h"
+#include <math.h>
+#include "../blast/blasthit.h"
+#include "../blast/blastquery.h"
+#include "assemblygraph.h"
+#include <set>
+#include <QApplication>
+#include <QSet>
+
+
+//The length parameter is optional.  If it is set, then the node will use that
+//for its length.  If not set, it will just use the sequence length.
+DeBruijnNode::DeBruijnNode(QString name, double depth, QByteArray sequence, int length) :
+    m_name(name),
+    m_depth(depth),
+    m_depthRelativeToMeanDrawnDepth(1.0),
+    m_sequence(sequence),
+    m_length(sequence.length()),
+    m_contiguityStatus(NOT_CONTIGUOUS),
+    m_reverseComplement(0),
+    m_ogdfNode(0),
+    m_graphicsItemNode(0),
+    m_specialNode(false),
+    m_drawn(false),
+    m_highestDistanceInNeighbourSearch(0),
+    m_csvData()
+{
+    if (length > 0)
+        m_length = length;
+}
+
+
+DeBruijnNode::~DeBruijnNode()
+{
+    if (m_ogdfNode != 0)
+        delete m_ogdfNode;
+}
+
+
+
+//This function adds an edge to the Node, but only if the edge hasn't already
+//been added.
+void DeBruijnNode::addEdge(DeBruijnEdge * edge)
+{
+    if (std::find(m_edges.begin(), m_edges.end(), edge) == m_edges.end())
+        m_edges.push_back(edge);
+}
+
+
+//This function deletes an edge from the node, if it exists.
+void DeBruijnNode::removeEdge(DeBruijnEdge * edge)
+{
+    m_edges.erase(std::remove(m_edges.begin(), m_edges.end(), edge), m_edges.end());
+}
+
+
+//This function resets the node to the state it would be in after a graph
+//file was loaded - no contiguity status and no OGDF nodes.
+void DeBruijnNode::resetNode()
+{
+    if (m_ogdfNode != 0)
+        delete m_ogdfNode;
+    m_ogdfNode = 0;
+    m_graphicsItemNode = 0;
+    resetContiguityStatus();
+    setAsNotDrawn();
+    setAsNotSpecial();
+    m_highestDistanceInNeighbourSearch = 0;
+}
+
+
+void DeBruijnNode::addToOgdfGraph(ogdf::Graph * ogdfGraph, ogdf::GraphAttributes * graphAttributes,
+                                  ogdf::EdgeArray<double> * edgeArray, double xPos, double yPos)
+{
+    //If this node or its reverse complement is already in OGDF, then
+    //it's not necessary to make the node.
+    if (thisOrReverseComplementInOgdf())
+        return;
+
+    //Create the OgdfNode object
+    m_ogdfNode = new OgdfNode();
+
+    //Each node in the Velvet sense is made up of multiple nodes in the
+    //OGDF sense.  This way, Velvet nodes appear as lines whose length
+    //corresponds to the sequence length.
+    double drawnNodeLength = getDrawnNodeLength();
+    int numberOfGraphEdges = getNumberOfOgdfGraphEdges(drawnNodeLength);
+    int numberOfGraphNodes = numberOfGraphEdges + 1;
+    double drawnLengthPerEdge = drawnNodeLength / numberOfGraphEdges;
+
+    ogdf::node newNode = 0;
+    ogdf::node previousNode = 0;
+    for (int i = 0; i < numberOfGraphNodes; ++i)
+    {
+        newNode = ogdfGraph->newNode();
+        m_ogdfNode->addOgdfNode(newNode);
+
+        if (g_assemblyGraph->useLinearLayout()) {
+            graphAttributes->x(newNode) = xPos;
+            graphAttributes->y(newNode) = yPos;
+            xPos += g_settings->nodeSegmentLength;
+        }
+
+        if (i > 0)
+        {
+            ogdf::edge newEdge = ogdfGraph->newEdge(previousNode, newNode);
+            (*edgeArray)[newEdge] = drawnLengthPerEdge;
+        }
+
+        previousNode = newNode;
+    }
+}
+
+
+
+double DeBruijnNode::getDrawnNodeLength() const
+{
+    double drawnNodeLength = getNodeLengthPerMegabase() * double(getLength()) / 1000000.0;
+    if (drawnNodeLength < g_settings->minimumNodeLength)
+        drawnNodeLength = g_settings->minimumNodeLength;
+    return drawnNodeLength;
+}
+
+int DeBruijnNode::getNumberOfOgdfGraphEdges(double drawnNodeLength) const
+{
+    int numberOfGraphEdges = ceil(drawnNodeLength / g_settings->nodeSegmentLength);
+    if (numberOfGraphEdges <= 0)
+        numberOfGraphEdges = 1;
+    return numberOfGraphEdges;
+}
+
+
+
+//This function determines the contiguity of nodes relative to this one.
+//It has two steps:
+// -First, for each edge leaving this node, all paths outward are found.
+//  Any nodes in any path are MAYBE_CONTIGUOUS, and nodes in all of the
+//  paths are CONTIGUOUS.
+// -Second, it is necessary to check in the opposite direction - for each
+//  of the MAYBE_CONTIGUOUS nodes, do they have a path that unambiguously
+//  leads to this node?  If so, then they are CONTIGUOUS.
+void DeBruijnNode::determineContiguity()
+{
+    upgradeContiguityStatus(STARTING);
+
+    //A set is used to store all nodes found in the paths, as the nodes
+    //that show up as MAYBE_CONTIGUOUS will have their paths checked
+    //to this node.
+    std::set<DeBruijnNode *> allCheckedNodes;
+
+    //For each path leaving this node, find all possible paths
+    //outward.  Nodes in any of the paths for an edge are
+    //MAYBE_CONTIGUOUS.  Nodes in all of the paths for an edge
+    //are CONTIGUOUS.
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        bool outgoingEdge = (this == edge->getStartingNode());
+
+        std::vector< std::vector <DeBruijnNode *> > allPaths;
+        edge->tracePaths(outgoingEdge, g_settings->contiguitySearchSteps, &allPaths, this);
+
+        //Set all nodes in the paths as MAYBE_CONTIGUOUS
+        for (size_t j = 0; j < allPaths.size(); ++j)
+        {
+            QApplication::processEvents();
+            for (size_t k = 0; k < allPaths[j].size(); ++k)
+            {
+                DeBruijnNode * node = allPaths[j][k];
+                node->upgradeContiguityStatus(MAYBE_CONTIGUOUS);
+                allCheckedNodes.insert(node);
+            }
+        }
+
+        //Set all common nodes as CONTIGUOUS_STRAND_SPECIFIC
+        std::vector<DeBruijnNode *> commonNodesStrandSpecific = getNodesCommonToAllPaths(&allPaths, false);
+        for (size_t j = 0; j < commonNodesStrandSpecific.size(); ++j)
+            (commonNodesStrandSpecific[j])->upgradeContiguityStatus(CONTIGUOUS_STRAND_SPECIFIC);
+
+        //Set all common nodes (when including reverse complement nodes)
+        //as CONTIGUOUS_EITHER_STRAND
+        std::vector<DeBruijnNode *> commonNodesEitherStrand = getNodesCommonToAllPaths(&allPaths, true);
+        for (size_t j = 0; j < commonNodesEitherStrand.size(); ++j)
+        {
+            DeBruijnNode * node = commonNodesEitherStrand[j];
+            node->upgradeContiguityStatus(CONTIGUOUS_EITHER_STRAND);
+            node->getReverseComplement()->upgradeContiguityStatus(CONTIGUOUS_EITHER_STRAND);
+        }
+    }
+
+    //For each node that was checked, then we check to see if any
+    //of its paths leads unambiuously back to the starting node (this node).
+    for (std::set<DeBruijnNode *>::iterator i = allCheckedNodes.begin(); i != allCheckedNodes.end(); ++i)
+    {
+        QApplication::processEvents();
+        DeBruijnNode * node = *i;
+        ContiguityStatus status = node->getContiguityStatus();
+
+        //First check without reverse complement target for
+        //strand-specific contiguity.
+        if (status != CONTIGUOUS_STRAND_SPECIFIC &&
+                node->doesPathLeadOnlyToNode(this, false))
+            node->upgradeContiguityStatus(CONTIGUOUS_STRAND_SPECIFIC);
+
+        //Now check including the reverse complement target for
+        //either strand contiguity.
+        if (status != CONTIGUOUS_STRAND_SPECIFIC &&
+                status != CONTIGUOUS_EITHER_STRAND &&
+                node->doesPathLeadOnlyToNode(this, true))
+        {
+            node->upgradeContiguityStatus(CONTIGUOUS_EITHER_STRAND);
+            node->getReverseComplement()->upgradeContiguityStatus(CONTIGUOUS_EITHER_STRAND);
+        }
+    }
+}
+
+
+//This function differs from the above by including all reverse complement
+//nodes in the path search.
+std::vector<DeBruijnNode *> DeBruijnNode::getNodesCommonToAllPaths(std::vector< std::vector <DeBruijnNode *> > * paths,
+                                                                   bool includeReverseComplements) const
+{
+    std::vector<DeBruijnNode *> commonNodes;
+
+    //If there are no paths, then return the empty vector.
+    if (paths->size() == 0)
+        return commonNodes;
+
+    //If there is only one path in path, then they are all common nodes
+    commonNodes = (*paths)[0];
+    if (paths->size() == 1)
+        return commonNodes;
+
+    //If there are two or more paths, it's necessary to find the intersection.
+    for (size_t i = 1; i < paths->size(); ++i)
+    {
+        QApplication::processEvents();
+        std::vector <DeBruijnNode *> * path = &((*paths)[i]);
+
+        //If we are including reverse complements in the search,
+        //then it is necessary to build a new vector that includes
+        //reverse complement nodes and then use that vector.
+        std::vector <DeBruijnNode *> pathWithReverseComplements;
+        if (includeReverseComplements)
+        {
+            for (size_t j = 0; j < path->size(); ++j)
+            {
+                DeBruijnNode * node = (*path)[j];
+                pathWithReverseComplements.push_back(node);
+                pathWithReverseComplements.push_back(node->getReverseComplement());
+            }
+            path = &pathWithReverseComplements;
+        }
+
+        //Combine the commonNodes vector with the path vector,
+        //excluding any repeats.
+        std::sort(commonNodes.begin(), commonNodes.end());
+        std::sort(path->begin(), path->end());
+        std::vector<DeBruijnNode *> newCommonNodes;
+        std::set_intersection(commonNodes.begin(), commonNodes.end(), path->begin(), path->end(), std::back_inserter(newCommonNodes));
+        commonNodes = newCommonNodes;
+    }
+
+    return commonNodes;
+}
+
+
+//This function checks whether this node has any path leading outward that
+//unambiguously leads to the given node.
+//It checks a number of steps as set by the contiguitySearchSteps setting.
+//If includeReverseComplement is true, then this function returns true if
+//all paths lead either to the node or its reverse complement node.
+bool DeBruijnNode::doesPathLeadOnlyToNode(DeBruijnNode * node, bool includeReverseComplement)
+{
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        bool outgoingEdge = (this == edge->getStartingNode());
+
+        std::vector<DeBruijnNode *> pathSoFar;
+        pathSoFar.push_back(this);
+        if (edge->leadsOnlyToNode(outgoingEdge, g_settings->contiguitySearchSteps, node, pathSoFar, includeReverseComplement))
+            return true;
+    }
+
+    return false;
+}
+
+
+//This function only upgrades a node's status, never downgrades.
+void DeBruijnNode::upgradeContiguityStatus(ContiguityStatus newStatus)
+{
+    if (newStatus < m_contiguityStatus)
+        m_contiguityStatus = newStatus;
+}
+
+
+
+//It is expected that the argument connectedNode is either in incomingNodes or
+//outgoingNodes.  If that node is the only one in whichever container it is in,
+//this function returns true.
+bool DeBruijnNode::isOnlyPathInItsDirection(DeBruijnNode * connectedNode,
+                                            std::vector<DeBruijnNode *> * incomingNodes,
+                                            std::vector<DeBruijnNode *> * outgoingNodes) const
+{
+    std::vector<DeBruijnNode *> * container;
+    if (std::find(incomingNodes->begin(), incomingNodes->end(), connectedNode) != incomingNodes->end())
+        container = incomingNodes;
+    else
+        container = outgoingNodes;
+
+    return (container->size() == 1 && (*container)[0] == connectedNode);
+}
+bool DeBruijnNode::isNotOnlyPathInItsDirection(DeBruijnNode * connectedNode,
+                                 std::vector<DeBruijnNode *> * incomingNodes,
+                                 std::vector<DeBruijnNode *> * outgoingNodes) const
+{
+    return !isOnlyPathInItsDirection(connectedNode, incomingNodes, outgoingNodes);
+}
+
+
+QByteArray DeBruijnNode::getFasta(bool sign, bool newLines, bool evenIfEmpty) const
+{
+    QByteArray sequence = getSequence();
+    if (sequence.isEmpty() && !evenIfEmpty)
+        return QByteArray();
+
+    QByteArray fasta = ">";
+    fasta += getNodeNameForFasta(sign);
+    fasta += "\n";
+    if (newLines)
+        fasta += AssemblyGraph::addNewlinesToSequence(sequence);
+    else
+    {
+        fasta += sequence;
+        fasta += "\n";
+    }
+    return fasta;
+}
+
+
+QByteArray DeBruijnNode::getGfaSegmentLine(QString depthTag) const
+{
+    QByteArray gfaSequence = getSequenceForGfa();
+
+    QByteArray gfaSegmentLine = "S";
+    gfaSegmentLine += "\t" + getNameWithoutSign();
+    gfaSegmentLine += "\t" + gfaSequence;
+    gfaSegmentLine += "\tLN:i:" + QString::number(gfaSequence.length());
+
+    //We use the depthTag to guide how we save the node depth.
+    //If it is empty, that implies that the loaded graph did not have depth
+    //information and so we don't save depth.
+    if (depthTag == "DP")
+        gfaSegmentLine += "\tDP:f:" + QString::number(getDepth());
+    else if (depthTag == "KC")
+        gfaSegmentLine += "\tKC:i:" + QString::number(int(getDepth() * gfaSequence.length() + 0.5));
+    else if (depthTag == "RC")
+        gfaSegmentLine += "\tRC:i:" + QString::number(int(getDepth() * gfaSequence.length() + 0.5));
+    else if (depthTag == "FC")
+        gfaSegmentLine += "\tFC:i:" + QString::number(int(getDepth() * gfaSequence.length() + 0.5));
+
+    //If the user has included custom labels or colours, include those.
+    if (!m_customLabel.isEmpty())
+        gfaSegmentLine += "\tLB:z:" + getCustomLabel();
+    if (!m_reverseComplement->m_customLabel.isEmpty())
+        gfaSegmentLine += "\tL2:z:" + m_reverseComplement->getCustomLabel();
+    if (hasCustomColour())
+        gfaSegmentLine += "\tCL:z:" + getColourName(getCustomColour());
+    if (m_reverseComplement->hasCustomColour())
+        gfaSegmentLine += "\tC2:z:" + getColourName(m_reverseComplement->getCustomColour());
+    gfaSegmentLine += "\n";
+    return gfaSegmentLine;
+}
+
+
+//This function gets the node's sequence for a GFA file.  It has two main
+//differences from getSequence:
+//  -If the graph is from Velvet, it will extend the node sequences
+//  -If the sequence is missing, it will just give "*"
+QByteArray DeBruijnNode::getSequenceForGfa() const
+{
+    if (sequenceIsMissing())
+        return QByteArray("*");
+
+    if (g_assemblyGraph->m_graphFileType != LAST_GRAPH)
+        return getSequence();
+
+    //If the code got here, then we are getting a full sequence from a Velvet
+    //LastGraph graph, so we need to extend the beginning of the sequence.
+    int extensionLength = g_assemblyGraph->m_kmer - 1;
+
+    //If the node is at least k-1 in length, then the necessary sequence can be
+    //deduced from the reverse complement node.
+    if (getLength() >= extensionLength)
+    {
+        QByteArray revCompSeq = getReverseComplement()->getSequence();
+        QByteArray endOfRevCompSeq = revCompSeq.right(extensionLength);
+        QByteArray extension = AssemblyGraph::getReverseComplement(endOfRevCompSeq);
+        return extension + getSequence();
+    }
+
+    //If the node is not long enough, then we must look in upstream nodes for
+    //the rest of the sequence.
+    else
+    {
+        QByteArray extension = getUpstreamSequence(extensionLength);
+        if (extension.length() < extensionLength)
+        {
+            int additionalBases = extensionLength - extension.length();
+            QByteArray n;
+            n.fill('N', additionalBases);
+            extension = n + extension;
+        }
+        return extension + getSequence();
+    }
+}
+
+
+QByteArray DeBruijnNode::getUpstreamSequence(int upstreamSequenceLength) const
+{
+    std::vector<DeBruijnNode*> upstreamNodes = getUpstreamNodes();
+
+    QByteArray bestUpstreamNodeSequence;
+
+    for (size_t i = 0; i < upstreamNodes.size(); ++i)
+    {
+        DeBruijnNode * upstreamNode = upstreamNodes[i];
+        QByteArray upstreamNodeFullSequence = upstreamNode->getSequence();
+        QByteArray upstreamNodeSequence;
+
+        //If the upstream node has enough sequence, great!
+        if (upstreamNodeFullSequence.length() >= upstreamSequenceLength)
+            upstreamNodeSequence = upstreamNodeFullSequence.right(upstreamSequenceLength);
+
+        //If the upstream node does not have enough sequence, then we need to
+        //look even further upstream.
+        else
+            upstreamNodeSequence = upstreamNode->getUpstreamSequence(upstreamSequenceLength - upstreamNodeFullSequence.length()) + upstreamNodeFullSequence;
+
+        //If we now have enough sequence, then we can return it.
+        if (upstreamNodeSequence.length() == upstreamSequenceLength)
+            return upstreamNodeSequence;
+
+        //If we don't have enough sequence, then we need to try the next
+        //upstream node.  If our current one is the best so far, save that in
+        //case no complete sequence is found.
+        if (upstreamNodeSequence.length() > bestUpstreamNodeSequence.length())
+            bestUpstreamNodeSequence = upstreamNodeSequence;
+    }
+
+    //If the code got here, that means that not enough upstream sequence was
+    //found in any path!  Return what we have managed to get so far.
+    return bestUpstreamNodeSequence;
+}
+
+
+int DeBruijnNode::getFullLength() const
+{
+    if (g_assemblyGraph->m_graphFileType != LAST_GRAPH)
+        return getLength();
+    else
+        return getLength() + g_assemblyGraph->m_kmer - 1;
+}
+
+
+int DeBruijnNode::getLengthWithoutTrailingOverlap() const
+{
+    int length = getLength();
+    std::vector<DeBruijnEdge *> leavingEdges = getLeavingEdges();
+
+    if (leavingEdges.size() == 0)
+        return length;
+
+    int maxOverlap = 0;
+    for (size_t i = 0; i < leavingEdges.size(); ++i)
+    {
+        int overlap = leavingEdges[i]->getOverlap();
+        if (overlap > maxOverlap)
+            maxOverlap = overlap;
+    }
+
+    length -= maxOverlap;
+
+    if (length < 0)
+        length = 0;
+
+    return length;
+}
+
+
+QString DeBruijnNode::getNodeNameForFasta(bool sign) const
+{
+    QString nodeNameForFasta;
+
+    nodeNameForFasta += "NODE_";
+    if (sign)
+        nodeNameForFasta += getName();
+    else
+        nodeNameForFasta += getNameWithoutSign();
+
+    nodeNameForFasta += "_length_";
+    nodeNameForFasta += QByteArray::number(getLength());
+    nodeNameForFasta += "_cov_";
+    nodeNameForFasta += QByteArray::number(getDepth());
+
+    return nodeNameForFasta;
+}
+
+
+//This function recursively labels all nodes as drawn that are within a
+//certain distance of this node.  Whichever node called this will
+//definitely be drawn, so that one is excluded from the recursive call.
+void DeBruijnNode::labelNeighbouringNodesAsDrawn(int nodeDistance, DeBruijnNode * callingNode)
+{
+    if (m_highestDistanceInNeighbourSearch > nodeDistance)
+        return;
+    m_highestDistanceInNeighbourSearch = nodeDistance;
+
+    if (nodeDistance == 0)
+        return;
+
+    DeBruijnNode * otherNode;
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        otherNode = m_edges[i]->getOtherNode(this);
+
+        if (otherNode == callingNode)
+            continue;
+
+        if (g_settings->doubleMode)
+            otherNode->m_drawn = true;
+        else //single mode
+        {
+            if (otherNode->isPositiveNode())
+                otherNode->m_drawn = true;
+            else
+                otherNode->getReverseComplement()->m_drawn = true;
+        }
+        otherNode->labelNeighbouringNodesAsDrawn(nodeDistance-1, this);
+    }
+}
+
+
+
+std::vector<BlastHitPart> DeBruijnNode::getBlastHitPartsForThisNode(double scaledNodeLength) const
+{
+    std::vector<BlastHitPart> returnVector;
+
+    for (size_t i = 0; i < m_blastHits.size(); ++i)
+    {
+        std::vector<BlastHitPart> hitParts = m_blastHits[i]->getBlastHitParts(false, scaledNodeLength);
+        returnVector.insert(returnVector.end(), hitParts.begin(), hitParts.end());
+    }
+
+    return returnVector;
+}
+
+std::vector<BlastHitPart> DeBruijnNode::getBlastHitPartsForThisNodeOrReverseComplement(double scaledNodeLength) const
+{
+    const DeBruijnNode * positiveNode = this;
+    const DeBruijnNode * negativeNode = getReverseComplement();
+    if (isNegativeNode())
+        std::swap(positiveNode, negativeNode);
+
+    //Look for blast hit parts on both the positive and the negative node,
+    //since hits were previously filtered such that startPos < endPos,
+    //hence we need to look at both positive and negative nodes to recover all hits.
+    std::vector<BlastHitPart> returnVector;
+    for (size_t i = 0; i < positiveNode->m_blastHits.size(); ++i)
+    {
+        std::vector<BlastHitPart> hitParts = positiveNode->m_blastHits[i]->getBlastHitParts(false, scaledNodeLength);
+        returnVector.insert(returnVector.end(), hitParts.begin(), hitParts.end());
+    }
+    for (size_t i = 0; i < negativeNode->m_blastHits.size(); ++i)
+    {
+        std::vector<BlastHitPart> hitParts = negativeNode->m_blastHits[i]->getBlastHitParts(true, scaledNodeLength);
+        returnVector.insert(returnVector.end(), hitParts.begin(), hitParts.end());
+    }
+
+    return returnVector;
+}
+
+
+
+bool DeBruijnNode::isPositiveNode() const
+{
+    QChar lastChar = m_name.at(m_name.length() - 1);
+    return lastChar == '+';
+}
+
+bool DeBruijnNode::isNegativeNode() const
+{
+    QChar lastChar = m_name.at(m_name.length() - 1);
+    return lastChar == '-';
+}
+
+
+
+//This function checks to see if the passed node leads into
+//this node.  If so, it returns the connecting edge.  If not,
+//it returns a null pointer.
+DeBruijnEdge * DeBruijnNode::doesNodeLeadIn(DeBruijnNode * node) const
+{
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        if (edge->getStartingNode() == node && edge->getEndingNode() == this)
+            return edge;
+    }
+    return 0;
+}
+
+//This function checks to see if the passed node leads away from
+//this node.  If so, it returns the connecting edge.  If not,
+//it returns a null pointer.
+DeBruijnEdge * DeBruijnNode::doesNodeLeadAway(DeBruijnNode * node) const
+{
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        if (edge->getStartingNode() == this && edge->getEndingNode() == node)
+            return edge;
+    }
+    return 0;
+}
+
+
+bool DeBruijnNode::isNodeConnected(DeBruijnNode * node) const
+{
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        if (edge->getStartingNode() == node || edge->getEndingNode() == node)
+            return true;
+    }
+    return false;
+}
+
+
+
+std::vector<DeBruijnEdge *> DeBruijnNode::getEnteringEdges() const
+{
+    std::vector<DeBruijnEdge *> returnVector;
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        if (this == edge->getEndingNode())
+            returnVector.push_back(edge);
+    }
+    return returnVector;
+}
+std::vector<DeBruijnEdge *> DeBruijnNode::getLeavingEdges() const
+{
+    std::vector<DeBruijnEdge *> returnVector;
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        if (this == edge->getStartingNode())
+            returnVector.push_back(edge);
+    }
+    return returnVector;
+}
+
+
+
+std::vector<DeBruijnNode *> DeBruijnNode::getDownstreamNodes() const
+{
+    std::vector<DeBruijnEdge *> leavingEdges = getLeavingEdges();
+
+    std::vector<DeBruijnNode *> returnVector;
+    for (size_t i = 0; i < leavingEdges.size(); ++i)
+        returnVector.push_back(leavingEdges[i]->getEndingNode());
+
+    return returnVector;
+}
+
+
+std::vector<DeBruijnNode *> DeBruijnNode::getUpstreamNodes() const
+{
+    std::vector<DeBruijnEdge *> enteringEdges = getEnteringEdges();
+
+    std::vector<DeBruijnNode *> returnVector;
+    for (size_t i = 0; i < enteringEdges.size(); ++i)
+        returnVector.push_back(enteringEdges[i]->getStartingNode());
+
+    return returnVector;
+}
+
+
+
+double DeBruijnNode::getNodeLengthPerMegabase() const
+{
+    if (g_settings->nodeLengthMode == AUTO_NODE_LENGTH)
+        return g_settings->autoNodeLengthPerMegabase;
+    else
+        return g_settings->manualNodeLengthPerMegabase;
+}
+
+
+
+bool DeBruijnNode::isInDepthRange(double min, double max) const
+{
+    return m_depth >= min && m_depth <= max;
+}
+
+
+bool DeBruijnNode::sequenceIsMissing() const
+{
+    return m_sequence == "*" || (m_sequence == "" && m_length > 0);
+}
+
+
+QByteArray DeBruijnNode::getSequence() const
+{
+    if (sequenceIsMissing() && g_assemblyGraph->m_sequencesLoadedFromFasta == NOT_TRIED)
+        g_assemblyGraph->attemptToLoadSequencesFromFasta();
+
+    //If the sequence is still missing, return a string of Ns equal to the
+    //sequence length.
+    if (sequenceIsMissing())
+        return QByteArray(m_length, 'N');
+    else
+        return m_sequence;  
+}
+
+
+
+//If the node has an edge which leads to itself (creating a loop), this function
+//will return it.  Otherwise, it returns 0.
+DeBruijnEdge * DeBruijnNode::getSelfLoopingEdge() const
+{
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        if (edge->getStartingNode() == this && edge->getEndingNode() == this)
+            return edge;
+    }
+
+    return 0;
+}
+
+
+//This function returns either 0, 1 or 2.  A node with connections on both ends
+//(i.e. has both incoming and outgoing edges) returns 0.  A node with no edges
+//returns 2.  A node with either incoming or outgoing edges returns 1.
+int DeBruijnNode::getDeadEndCount() const
+{
+    if (m_edges.size() == 0)
+        return 2;
+
+    std::vector<DeBruijnEdge *> enteringEdges = getEnteringEdges();
+    std::vector<DeBruijnEdge *> leavingEdges = getLeavingEdges();
+
+    if (enteringEdges.size() > 0 && leavingEdges.size() > 0)
+        return 0;
+    else
+        return 1;
+}
+
+
+
+
+//This function returns all of the positive nodes that this node (or its
+//reverse complement) are connected to.
+std::vector<DeBruijnNode *> DeBruijnNode::getAllConnectedPositiveNodes() const
+{
+    QSet<DeBruijnNode *> connectedPositiveNodesSet;
+
+    for (size_t i = 0; i < m_edges.size(); ++i)
+    {
+        DeBruijnEdge * edge = m_edges[i];
+        DeBruijnNode * connectedNode = edge->getOtherNode(this);
+        if (connectedNode->isNegativeNode())
+            connectedNode = connectedNode->getReverseComplement();
+
+        connectedPositiveNodesSet.insert(connectedNode);
+    }
+
+    std::vector<DeBruijnNode *> connectedPositiveNodesVector;
+    QSetIterator<DeBruijnNode *> i(connectedPositiveNodesSet);
+    while (i.hasNext())
+        connectedPositiveNodesVector.push_back(i.next());
+
+    return connectedPositiveNodesVector;
+}
+
+void DeBruijnNode::setCustomLabel(QString newLabel)
+{
+    newLabel.replace("\t", "    ");
+    m_customLabel = newLabel;
+}
+
+
+QStringList DeBruijnNode::getCustomLabelForDisplay() const
+{
+    QStringList customLabelLines;
+    if (!getCustomLabel().isEmpty()) {
+        QStringList labelLines = getCustomLabel().split("\\n");
+        for (int i = 0; i < labelLines.size(); ++i)
+            customLabelLines << labelLines[i];
+    }
+    if (!g_settings->doubleMode && !m_reverseComplement->getCustomLabel().isEmpty()) {
+        QStringList labelLines2 = m_reverseComplement->getCustomLabel().split("\n");
+        for (int i = 0; i < labelLines2.size(); ++i)
+            customLabelLines << labelLines2[i];
+    }
+    return customLabelLines;
+}
+
+
+QColor DeBruijnNode::getCustomColourForDisplay() const
+{
+    if (hasCustomColour())
+        return getCustomColour();
+    if (!g_settings->doubleMode && m_reverseComplement->hasCustomColour())
+        return m_reverseComplement->getCustomColour();
+    return g_settings->defaultCustomNodeColour;
+}
diff --git a/graph/debruijnnode.h b/graph/debruijnnode.h
new file mode 100644
index 0000000..4e58a77
--- /dev/null
+++ b/graph/debruijnnode.h
@@ -0,0 +1,163 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef DEBRUIJNNODE_H
+#define DEBRUIJNNODE_H
+
+#include <QByteArray>
+#include <vector>
+#include "../ogdf/basic/Graph.h"
+#include "../ogdf/basic/GraphAttributes.h"
+#include "../program/globals.h"
+#include <QColor>
+#include "../blast/blasthitpart.h"
+#include "../program/settings.h"
+
+class OgdfNode;
+class DeBruijnEdge;
+class GraphicsItemNode;
+class BlastHit;
+
+class DeBruijnNode
+{
+public:
+    //CREATORS
+    DeBruijnNode(QString name, double depth, QByteArray sequence, int length = 0);
+    ~DeBruijnNode();
+
+    //ACCESSORS
+    QString getName() const {return m_name;}
+    QString getNameWithoutSign() const {return m_name.left(m_name.length() - 1);}
+    QString getSign() const {if (m_name.length() > 0) return m_name.right(1); else return "+";}
+    double getDepth() const {return m_depth;}
+    double getDepthRelativeToMeanDrawnDepth() const {return m_depthRelativeToMeanDrawnDepth;}
+    QByteArray getSequence() const;
+    int getLength() const {return m_length;}
+    QByteArray getSequenceForGfa() const;
+    int getFullLength() const;
+    int getLengthWithoutTrailingOverlap() const;
+    QByteArray getFasta(bool sign, bool newLines = true, bool evenIfEmpty = true) const;
+    QByteArray getGfaSegmentLine(QString depthTag) const;
+    char getBaseAt(int i) const {if (i >= 0 && i < m_sequence.length()) return m_sequence.at(i); else return '\0';}
+    ContiguityStatus getContiguityStatus() const {return m_contiguityStatus;}
+    DeBruijnNode * getReverseComplement() const {return m_reverseComplement;}
+    OgdfNode * getOgdfNode() const {return m_ogdfNode;}
+    GraphicsItemNode * getGraphicsItemNode() const {return m_graphicsItemNode;}
+    bool thisOrReverseComplementHasGraphicsItemNode() const {return (m_graphicsItemNode != 0 || getReverseComplement()->m_graphicsItemNode != 0);}
+    bool hasGraphicsItem() const {return m_graphicsItemNode != 0;}
+    const std::vector<DeBruijnEdge *> * getEdgesPointer() const {return &m_edges;}
+    std::vector<DeBruijnEdge *> getEnteringEdges() const;
+    std::vector<DeBruijnEdge *> getLeavingEdges() const;
+    std::vector<DeBruijnNode *> getDownstreamNodes() const;
+    std::vector<DeBruijnNode *> getUpstreamNodes() const;
+    std::vector<DeBruijnNode *> getAllConnectedPositiveNodes() const;
+    bool isSpecialNode() const {return m_specialNode;}
+    bool isDrawn() const {return m_drawn;}
+    bool thisNodeOrReverseComplementIsDrawn() const {return isDrawn() || getReverseComplement()->isDrawn();}
+    bool isNotDrawn() const {return !m_drawn;}
+    QColor getCustomColour() const {return m_customColour;}
+    QColor getCustomColourForDisplay() const;
+    QString getCustomLabel() const {return m_customLabel;}
+    QStringList getCustomLabelForDisplay() const;
+    bool hasCustomColour() const {return m_customColour.isValid();}
+    bool isPositiveNode() const;
+    bool isNegativeNode() const;
+    bool inOgdf() const {return m_ogdfNode != 0;}
+    bool notInOgdf() const {return m_ogdfNode == 0;}
+    bool thisOrReverseComplementInOgdf() const {return (inOgdf() || getReverseComplement()->inOgdf());}
+    bool thisOrReverseComplementNotInOgdf() const {return !thisOrReverseComplementInOgdf();}
+    bool isNodeConnected(DeBruijnNode * node) const;
+    const std::vector<BlastHit *> * getBlastHitsPointer() const {return &m_blastHits;}
+    bool thisNodeHasBlastHits() const {return m_blastHits.size() > 0;}
+    bool thisNodeOrReverseComplementHasBlastHits() const {return m_blastHits.size() > 0 || getReverseComplement()->m_blastHits.size() > 0;}
+    DeBruijnEdge * doesNodeLeadIn(DeBruijnNode * node) const;
+    DeBruijnEdge * doesNodeLeadAway(DeBruijnNode * node) const;
+    std::vector<BlastHitPart> getBlastHitPartsForThisNode(double scaledNodeLength) const;
+    std::vector<BlastHitPart> getBlastHitPartsForThisNodeOrReverseComplement(double scaledNodeLength) const;
+    bool hasCsvData() const {return !m_csvData.isEmpty();}
+    QStringList getAllCsvData() const {return m_csvData;}
+    QString getCsvLine(int i) const {if (i < m_csvData.length()) return m_csvData[i]; else return "";}
+    bool isInDepthRange(double min, double max) const;
+    bool sequenceIsMissing() const;
+    DeBruijnEdge *getSelfLoopingEdge() const;
+    int getDeadEndCount() const;
+    int getNumberOfOgdfGraphEdges(double drawnNodeLength) const;
+    double getDrawnNodeLength() const;
+
+    //MODIFERS
+    void setDepthRelativeToMeanDrawnDepth(double newVal) {m_depthRelativeToMeanDrawnDepth = newVal;}
+    void setSequence(QByteArray newSeq) {m_sequence = newSeq; m_length = m_sequence.length();}
+    void appendToSequence(QByteArray additionalSeq) {m_sequence.append(additionalSeq); m_length = m_sequence.length();}
+    void upgradeContiguityStatus(ContiguityStatus newStatus);
+    void resetContiguityStatus() {m_contiguityStatus = NOT_CONTIGUOUS;}
+    void setReverseComplement(DeBruijnNode * rc) {m_reverseComplement = rc;}
+    void setGraphicsItemNode(GraphicsItemNode * gin) {m_graphicsItemNode = gin;}
+    void setAsSpecial() {m_specialNode = true;}
+    void setAsNotSpecial() {m_specialNode = false;}
+    void setAsDrawn() {m_drawn = true;}
+    void setAsNotDrawn() {m_drawn = false;}
+    void setCustomColour(QColor newColour) {m_customColour = newColour;}
+    void setCustomLabel(QString newLabel);
+    void resetNode();
+    void addEdge(DeBruijnEdge * edge);
+    void removeEdge(DeBruijnEdge * edge);
+    void addToOgdfGraph(ogdf::Graph * ogdfGraph, ogdf::GraphAttributes * graphAttributes,
+                        ogdf::EdgeArray<double> * edgeArray, double xPos, double yPos);
+    void determineContiguity();
+    void clearBlastHits() {m_blastHits.clear();}
+    void addBlastHit(BlastHit * newHit) {m_blastHits.push_back(newHit);}
+    void labelNeighbouringNodesAsDrawn(int nodeDistance, DeBruijnNode * callingNode);
+    void setCsvData(QStringList csvData) {m_csvData = csvData;}
+    void clearCsvData() {m_csvData.clear();}
+    void setDepth(double newDepth) {m_depth = newDepth;}
+    void setName(QString newName) {m_name = newName;}
+
+private:
+    QString m_name;
+    double m_depth;
+    double m_depthRelativeToMeanDrawnDepth;
+    QByteArray m_sequence;
+    int m_length;
+    ContiguityStatus m_contiguityStatus;
+    DeBruijnNode * m_reverseComplement;
+    OgdfNode * m_ogdfNode;
+    GraphicsItemNode * m_graphicsItemNode;
+    std::vector<DeBruijnEdge *> m_edges;
+    bool m_specialNode;
+    bool m_drawn;
+    int m_highestDistanceInNeighbourSearch;
+    QColor m_customColour;
+    QString m_customLabel;
+    std::vector<BlastHit *> m_blastHits;
+    QStringList m_csvData;
+    QString getNodeNameForFasta(bool sign) const;
+    QByteArray getUpstreamSequence(int upstreamSequenceLength) const;
+
+    double getNodeLengthPerMegabase() const;
+    bool isOnlyPathInItsDirection(DeBruijnNode * connectedNode,
+                                  std::vector<DeBruijnNode *> * incomingNodes,
+                                  std::vector<DeBruijnNode *> * outgoingNodes) const;
+    bool isNotOnlyPathInItsDirection(DeBruijnNode * connectedNode,
+                                     std::vector<DeBruijnNode *> * incomingNodes,
+                                     std::vector<DeBruijnNode *> * outgoingNodes) const;
+    std::vector<DeBruijnNode *> getNodesCommonToAllPaths(std::vector< std::vector <DeBruijnNode *> > * paths,
+                                                         bool includeReverseComplements) const;
+    bool doesPathLeadOnlyToNode(DeBruijnNode * node, bool includeReverseComplement);
+};
+
+#endif // DEBRUIJNNODE_H
diff --git a/graph/graphicsitemedge.cpp b/graph/graphicsitemedge.cpp
new file mode 100644
index 0000000..97696d0
--- /dev/null
+++ b/graph/graphicsitemedge.cpp
@@ -0,0 +1,196 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "graphicsitemedge.h"
+#include "debruijnedge.h"
+#include <QPainterPathStroker>
+#include <QPainter>
+#include <QPen>
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include "debruijnnode.h"
+#include "ogdfnode.h"
+#include <QLineF>
+#include "graphicsitemnode.h"
+
+GraphicsItemEdge::GraphicsItemEdge(DeBruijnEdge * deBruijnEdge, QGraphicsItem * parent) :
+    QGraphicsPathItem(parent), m_deBruijnEdge(deBruijnEdge)
+
+{
+    calculateAndSetPath();
+}
+
+
+
+QPointF GraphicsItemEdge::extendLine(QPointF start, QPointF end, double extensionLength)
+{
+    double extensionRatio = extensionLength / QLineF(start, end).length();
+    QPointF difference = end - start;
+    difference *= extensionRatio;
+    return end + difference;
+}
+
+
+void GraphicsItemEdge::paint(QPainter * painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    double edgeWidth = g_settings->edgeWidth;
+    QColor penColour;
+    if (isSelected())
+        penColour = g_settings->selectionColour;
+    else
+        penColour = g_settings->edgeColour;
+    QPen edgePen(QBrush(penColour), edgeWidth, Qt::SolidLine, Qt::RoundCap);
+    painter->setPen(edgePen);
+    painter->drawPath(path());
+}
+
+
+
+QPainterPath GraphicsItemEdge::shape() const
+{
+    QPainterPathStroker stroker;
+    stroker.setWidth(g_settings->edgeWidth);
+    stroker.setCapStyle(Qt::RoundCap);
+    stroker.setJoinStyle(Qt::RoundJoin);
+    return stroker.createStroke(path());
+}
+
+
+
+void GraphicsItemEdge::calculateAndSetPath()
+{
+    setControlPointLocations();
+
+    double edgeDistance = QLineF(m_startingLocation, m_endingLocation).length();
+
+    double extensionLength = g_settings->edgeLength;
+    if (extensionLength > edgeDistance / 2.0)
+        extensionLength = edgeDistance / 2.0;
+
+    m_controlPoint1 = extendLine(m_beforeStartingLocation, m_startingLocation, extensionLength);
+    m_controlPoint2 = extendLine(m_afterEndingLocation, m_endingLocation, extensionLength);
+
+
+    //If this edge is connecting a node to itself, and that node
+    //is made of only one line segment, then a special path is
+    //required, otherwise the edge will be mostly hidden underneath
+    //the node.
+    DeBruijnNode * startingNode = m_deBruijnEdge->getStartingNode();
+    DeBruijnNode * endingNode = m_deBruijnEdge->getEndingNode();
+    if (startingNode == endingNode)
+    {
+        GraphicsItemNode * graphicsItemNode = startingNode->getGraphicsItemNode();
+        if (graphicsItemNode == 0)
+            graphicsItemNode = startingNode->getReverseComplement()->getGraphicsItemNode();
+        if (graphicsItemNode != 0 && graphicsItemNode->m_linePoints.size() == 2)
+        {
+            makeSpecialPathConnectingNodeToSelf();
+            return;
+        }
+    }
+
+    //If we are in single mode and the edge connects a node to its reverse
+    //complement, then we need a special path to make it visible.
+    if (startingNode == endingNode->getReverseComplement() &&
+            !g_settings->doubleMode)
+    {
+        makeSpecialPathConnectingNodeToReverseComplement();
+        return;
+    }
+
+    //Otherwise, the path is just a single cubic Bezier curve.
+    QPainterPath path;
+    path.moveTo(m_startingLocation);
+    path.cubicTo(m_controlPoint1, m_controlPoint2, m_endingLocation);
+
+    setPath(path);
+}
+
+void GraphicsItemEdge::setControlPointLocations()
+{
+    DeBruijnNode * startingNode = m_deBruijnEdge->getStartingNode();
+    DeBruijnNode * endingNode = m_deBruijnEdge->getEndingNode();
+
+    if (startingNode->hasGraphicsItem())
+    {
+        m_startingLocation = startingNode->getGraphicsItemNode()->getLast();
+        m_beforeStartingLocation = startingNode->getGraphicsItemNode()->getSecondLast();
+    }
+    else if (startingNode->getReverseComplement()->hasGraphicsItem())
+    {
+        m_startingLocation = startingNode->getReverseComplement()->getGraphicsItemNode()->getFirst();
+        m_beforeStartingLocation = startingNode->getReverseComplement()->getGraphicsItemNode()->getSecond();
+    }
+
+    if (endingNode->hasGraphicsItem())
+    {
+        m_endingLocation = endingNode->getGraphicsItemNode()->getFirst();
+        m_afterEndingLocation = endingNode->getGraphicsItemNode()->getSecond();
+    }
+    else if (endingNode->getReverseComplement()->hasGraphicsItem())
+    {
+        m_endingLocation = endingNode->getReverseComplement()->getGraphicsItemNode()->getLast();
+        m_afterEndingLocation = endingNode->getReverseComplement()->getGraphicsItemNode()->getSecondLast();
+    }
+}
+
+
+//This function handles the special case of an edge that connects a node
+//to itself where the node graphics item has only one line segment.
+void GraphicsItemEdge::makeSpecialPathConnectingNodeToSelf()
+{
+    double extensionLength = g_settings->edgeLength;
+    m_controlPoint1 = extendLine(m_beforeStartingLocation, m_startingLocation, extensionLength);
+    m_controlPoint2 = extendLine(m_afterEndingLocation, m_endingLocation, extensionLength);
+
+    QLineF nodeLine(m_startingLocation, m_endingLocation);
+    QLineF normalUnitLine = nodeLine.normalVector().unitVector();
+    QPointF perpendicularShift = (normalUnitLine.p2() - normalUnitLine.p1()) * g_settings->edgeLength;
+    QPointF nodeMidPoint = (m_startingLocation + m_endingLocation) / 2.0;
+
+    QPainterPath path;
+    path.moveTo(m_startingLocation);
+
+    path.cubicTo(m_controlPoint1, m_controlPoint1 + perpendicularShift, nodeMidPoint + perpendicularShift);
+    path.cubicTo(m_controlPoint2 + perpendicularShift, m_controlPoint2, m_endingLocation);
+
+    setPath(path);
+}
+
+//This function handles the special case of an edge that connects a node to its
+//reverse complement and is displayed in single mode.
+void GraphicsItemEdge::makeSpecialPathConnectingNodeToReverseComplement()
+{
+    double extensionLength = g_settings->edgeLength / 2.0;
+    m_controlPoint1 = extendLine(m_beforeStartingLocation, m_startingLocation, extensionLength);
+    m_controlPoint2 = extendLine(m_afterEndingLocation, m_endingLocation, extensionLength);
+
+    QPointF startToControl = m_controlPoint1 - m_startingLocation;
+    QPointF pathMidPoint = m_startingLocation + startToControl * 3.0;
+
+    QLineF normalLine = QLineF(m_controlPoint1, m_startingLocation).normalVector();
+    QPointF perpendicularShift = (normalLine.p2() - normalLine.p1()) * 1.5;
+
+    QPainterPath path;
+    path.moveTo(m_startingLocation);
+
+    path.cubicTo(m_controlPoint1, pathMidPoint + perpendicularShift, pathMidPoint);
+    path.cubicTo(pathMidPoint - perpendicularShift, m_controlPoint2, m_endingLocation);
+
+    setPath(path);
+}
diff --git a/graph/graphicsitemedge.h b/graph/graphicsitemedge.h
new file mode 100644
index 0000000..f5a6add
--- /dev/null
+++ b/graph/graphicsitemedge.h
@@ -0,0 +1,56 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef GRAPHICSITEMEDGE_H
+#define GRAPHICSITEMEDGE_H
+
+#include <QGraphicsPathItem>
+#include <QPainterPath>
+
+
+#include "../ogdf/basic/Graph.h"
+#include "../ogdf/basic/GraphAttributes.h"
+#include <QPointF>
+
+class DeBruijnEdge;
+
+class GraphicsItemEdge : public QGraphicsPathItem
+{
+public:
+    GraphicsItemEdge(DeBruijnEdge * deBruijnEdge, QGraphicsItem * parent = 0);
+
+    DeBruijnEdge * m_deBruijnEdge;
+    QPointF m_startingLocation;
+    QPointF m_endingLocation;
+    QPointF m_beforeStartingLocation;
+    QPointF m_afterEndingLocation;
+    QPointF m_controlPoint1;
+    QPointF m_controlPoint2;
+
+    void paint(QPainter * painter, const QStyleOptionGraphicsItem *, QWidget *);
+    QPainterPath shape() const;
+    QPointF extendLine(QPointF start, QPointF end, double extensionLength);
+    void calculateAndSetPath();
+    void setControlPointLocations();
+    void setStartingPoints(QPointF startingLocation, QPointF beforeStartingLocation) {m_startingLocation = startingLocation; m_beforeStartingLocation = beforeStartingLocation;}
+    void setEndingPoints(QPointF endingLocation, QPointF afterEndingLocation) {m_endingLocation = endingLocation; m_afterEndingLocation = afterEndingLocation;}
+    void makeSpecialPathConnectingNodeToSelf();
+    void makeSpecialPathConnectingNodeToReverseComplement();
+};
+
+#endif // GRAPHICSITEMEDGE_H
diff --git a/graph/graphicsitemnode.cpp b/graph/graphicsitemnode.cpp
new file mode 100644
index 0000000..18f923e
--- /dev/null
+++ b/graph/graphicsitemnode.cpp
@@ -0,0 +1,1148 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "graphicsitemnode.h"
+#include "debruijnnode.h"
+#include "ogdfnode.h"
+#include <QPainterPathStroker>
+#include "../graph/ogdfnode.h"
+#include "../program/settings.h"
+#include <QPainter>
+#include <QPen>
+#include <QMessageBox>
+#include "debruijnedge.h"
+#include "graphicsitemedge.h"
+#include "../ogdf/basic/GraphAttributes.h"
+#include <math.h>
+#include <QFontMetrics>
+#include <QSize>
+#include <stdlib.h>
+#include <QGraphicsScene>
+#include "../ui/mygraphicsscene.h"
+#include <set>
+#include "../ui/mygraphicsview.h"
+#include <QTransform>
+#include "../blast/blasthit.h"
+#include "../blast/blastquery.h"
+#include "../blast/blasthitpart.h"
+#include "assemblygraph.h"
+#include <math.h>
+#include <QFontMetrics>
+#include "../program/memory.h"
+
+GraphicsItemNode::GraphicsItemNode(DeBruijnNode * deBruijnNode,
+                                   ogdf::GraphAttributes * graphAttributes, QGraphicsItem * parent) :
+    QGraphicsItem(parent), m_deBruijnNode(deBruijnNode),
+    m_hasArrow(g_settings->doubleMode || g_settings->arrowheadsInSingleMode)
+
+{
+    setWidth();
+
+    OgdfNode * pathOgdfNode = deBruijnNode->getOgdfNode();
+    if (pathOgdfNode != 0)
+    {
+        for (size_t i = 0; i < pathOgdfNode->m_ogdfNodes.size(); ++i)
+        {
+            ogdf::node ogdfNode = pathOgdfNode->m_ogdfNodes[i];
+            QPointF point(graphAttributes->x(ogdfNode), graphAttributes->y(ogdfNode));
+            m_linePoints.push_back(point);
+        }
+    }
+    else
+    {
+        pathOgdfNode = deBruijnNode->getReverseComplement()->getOgdfNode();
+        for (int i = int(pathOgdfNode->m_ogdfNodes.size()) - 1; i >= 0; --i)
+        {
+            ogdf::node ogdfNode = pathOgdfNode->m_ogdfNodes[i];
+            QPointF point(graphAttributes->x(ogdfNode), graphAttributes->y(ogdfNode));
+            m_linePoints.push_back(point);
+        }
+    }
+
+    //If we are in double mode and this node's complement is also drawn,
+    //then we should shift the points so the two nodes are not drawn directly
+    //on top of each other.
+    if (g_settings->doubleMode && deBruijnNode->getReverseComplement()->isDrawn())
+        shiftPointsLeft();
+
+    remakePath();
+}
+
+
+//This constructor makes a new GraphicsItemNode by copying the line points of
+//the given node.
+GraphicsItemNode::GraphicsItemNode(DeBruijnNode * deBruijnNode,
+                                   GraphicsItemNode * toCopy,
+                                   QGraphicsItem * parent) :
+    QGraphicsItem(parent), m_deBruijnNode(deBruijnNode),
+    m_hasArrow(toCopy->m_hasArrow),
+    m_linePoints(toCopy->m_linePoints)
+{
+    setWidth();
+    remakePath();
+}
+
+//This constructor makes a new GraphicsItemNode with a specific collection of
+//line points.
+GraphicsItemNode::GraphicsItemNode(DeBruijnNode * deBruijnNode,
+                                   std::vector<QPointF> linePoints,
+                                   QGraphicsItem * parent) :
+    QGraphicsItem(parent), m_deBruijnNode(deBruijnNode),
+    m_hasArrow(g_settings->doubleMode),
+    m_linePoints(linePoints)
+{
+    setWidth();
+    remakePath();
+}
+
+
+
+void GraphicsItemNode::paint(QPainter * painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    //This code lets me see the node's bounding box.
+    //I use it for debugging graphics issues.
+//    painter->setBrush(Qt::NoBrush);
+//    painter->setPen(QPen(Qt::black, 1.0));
+//    painter->drawRect(boundingRect());
+
+    QPainterPath outlinePath = shape();
+
+    //Fill the node's colour
+    QBrush brush(m_colour);
+    painter->fillPath(outlinePath, brush);
+
+    bool nodeHasBlastHits;
+    if (g_settings->doubleMode)
+        nodeHasBlastHits = m_deBruijnNode->thisNodeHasBlastHits();
+    else
+        nodeHasBlastHits = m_deBruijnNode->thisNodeOrReverseComplementHasBlastHits();
+
+    //If the node contains a BLAST hit, draw that on top.
+    if (nodeHasBlastHits && (g_settings->nodeColourScheme == BLAST_HITS_RAINBOW_COLOUR ||
+            g_settings->nodeColourScheme == BLAST_HITS_SOLID_COLOUR))
+    {
+        std::vector<BlastHitPart> parts;
+
+        //The scaled node length is passed to the function which makes the
+        //BlastHitPart objects, because we don't want those parts to be much
+        //less than 1 pixel in size, which isn't necessary and can cause weird
+        //visual artefacts.
+        double scaledNodeLength = getNodePathLength() * g_absoluteZoom;
+
+        if (g_settings->doubleMode)
+        {
+            if (m_deBruijnNode->thisNodeHasBlastHits())
+                parts = m_deBruijnNode->getBlastHitPartsForThisNode(scaledNodeLength);
+        }
+        else
+        {
+            if (m_deBruijnNode->thisNodeOrReverseComplementHasBlastHits())
+                parts = m_deBruijnNode->getBlastHitPartsForThisNodeOrReverseComplement(scaledNodeLength);
+        }
+
+        QPen partPen;
+        partPen.setWidthF(m_width);
+        partPen.setCapStyle(Qt::FlatCap);
+        partPen.setJoinStyle(Qt::BevelJoin);
+
+        //If the node has an arrow, then it's necessary to use the outline
+        //as a clipping path so the colours don't extend past the edge of the
+        //node.
+        if (m_hasArrow)
+            painter->setClipPath(outlinePath);
+
+        for (size_t i = 0; i < parts.size(); ++i)
+        {
+            partPen.setColor(parts[i].m_colour);
+            painter->setPen(partPen);
+
+            painter->drawPath(makePartialPath(parts[i].m_nodeFractionStart,
+                                              parts[i].m_nodeFractionEnd));
+        }
+        painter->setClipping(false);
+    }
+
+
+    //Draw the node outline
+    QColor outlineColour = g_settings->outlineColour;
+    double outlineThickness = g_settings->outlineThickness;
+    if (isSelected())
+    {
+        outlineColour = g_settings->selectionColour;
+        outlineThickness = g_settings->selectionThickness;
+    }
+    if (outlineThickness > 0.0)
+    {
+        outlinePath = outlinePath.simplified();
+        QPen outlinePen(QBrush(outlineColour), outlineThickness, Qt::SolidLine,
+                        Qt::SquareCap, Qt::RoundJoin);
+        painter->setPen(outlinePen);
+        painter->drawPath(outlinePath);
+    }
+
+
+    //Draw the path highlighting outline, if appropriate
+    if (g_memory->pathDialogIsVisible)
+        exactPathHighlightNode(painter);
+
+
+    //Draw the query path, if appropriate
+    if (g_memory->queryPathDialogIsVisible)
+        queryPathHighlightNode(painter);
+
+
+    //Draw node labels if there are any to display.
+    if (anyNodeDisplayText())
+    {
+        QStringList nodeText = getNodeText();
+        QPainterPath textPath;
+
+        QFontMetrics metrics(g_settings->labelFont);
+        double fontHeight = metrics.ascent();
+
+        for (int i = 0; i < nodeText.size(); ++i)
+        {
+            QString text = nodeText.at(i);
+            int stepsUntilLast = nodeText.size() - 1 - i;
+            double shiftLeft = -metrics.width(text) / 2.0;
+            textPath.addText(shiftLeft, -stepsUntilLast * fontHeight, g_settings->labelFont, text);
+        }
+
+        std::vector<QPointF> centres;
+        if (g_settings->positionTextNodeCentre)
+            centres.push_back(getCentre(m_linePoints));
+        else
+            centres = getCentres();
+
+        for (size_t i = 0; i < centres.size(); ++i)
+            drawTextPathAtLocation(painter, textPath, centres[i]);
+    }
+
+    //Draw BLAST hit labels, if appropriate.
+    if (g_settings->displayBlastHits && nodeHasBlastHits)
+    {
+        std::vector<QString> blastHitText;
+        std::vector<QPointF> blastHitLocation;
+
+        if (g_settings->doubleMode)
+            getBlastHitsTextAndLocationThisNode(&blastHitText, &blastHitLocation);
+        else
+            getBlastHitsTextAndLocationThisNodeOrReverseComplement(&blastHitText, &blastHitLocation);
+
+        for (size_t i = 0; i < blastHitText.size(); ++i)
+        {
+            QString text = blastHitText[i];
+            QPointF centre = blastHitLocation[i];
+
+            QPainterPath textPath;
+            QFontMetrics metrics(g_settings->labelFont);
+            double shiftLeft = -metrics.width(text) / 2.0;
+            textPath.addText(shiftLeft, 0.0, g_settings->labelFont, text);
+
+            drawTextPathAtLocation(painter, textPath, centre);
+        }
+    }
+}
+
+
+void GraphicsItemNode::drawTextPathAtLocation(QPainter * painter, QPainterPath textPath, QPointF centre)
+{
+    QRectF textBoundingRect = textPath.boundingRect();
+    double textHeight = textBoundingRect.height();
+    QPointF offset(0.0, textHeight / 2.0);
+
+    double zoom = g_absoluteZoom;
+    if (zoom == 0.0)
+        zoom = 1.0;
+
+    double zoomAdjustment = 1.0 / (1.0 + ((zoom - 1.0) * g_settings->textZoomScaleFactor));
+    double inverseZoomAdjustment = 1.0 / zoomAdjustment;
+
+    painter->translate(centre);
+    painter->rotate(-g_graphicsView->getRotation());
+    painter->scale(zoomAdjustment, zoomAdjustment);
+    painter->translate(offset);
+
+    if (g_settings->textOutline)
+    {
+        painter->setPen(QPen(g_settings->textOutlineColour,
+                             g_settings->textOutlineThickness * 2.0,
+                             Qt::SolidLine,
+                             Qt::SquareCap,
+                             Qt::RoundJoin));
+        painter->drawPath(textPath);
+    }
+
+    painter->fillPath(textPath, QBrush(g_settings->textColour));
+    painter->translate(-offset);
+    painter->scale(inverseZoomAdjustment, inverseZoomAdjustment);
+    painter->rotate(g_graphicsView->getRotation());
+    painter->translate(-centre);
+}
+
+
+
+void GraphicsItemNode::setNodeColour()
+{
+    switch (g_settings->nodeColourScheme)
+    {
+    case UNIFORM_COLOURS:
+        if (m_deBruijnNode->isSpecialNode())
+            m_colour = g_settings->uniformNodeSpecialColour;
+        else if (usePositiveNodeColour())
+            m_colour = g_settings->uniformPositiveNodeColour;
+        else
+            m_colour = g_settings->uniformNegativeNodeColour;
+        break;
+
+    case RANDOM_COLOURS:
+    {
+        //Make a colour with a random hue.  Assign a colour to both this node and
+        //it complement so their hue matches.
+        int hue = rand() % 360;
+        QColor posColour;
+        posColour.setHsl(hue,
+                         g_settings->randomColourPositiveSaturation,
+                         g_settings->randomColourPositiveLightness);
+        posColour.setAlpha(g_settings->randomColourPositiveOpacity);
+
+        QColor negColour;
+        negColour.setHsl(hue,
+                         g_settings->randomColourNegativeSaturation,
+                         g_settings->randomColourNegativeLightness);
+        negColour.setAlpha(g_settings->randomColourNegativeOpacity);
+
+        QColor colour1, colour2;
+        if (m_deBruijnNode->isPositiveNode())
+        {
+            colour1 = posColour;
+            colour2 = negColour;
+        }
+        else
+        {
+            colour1 = negColour;
+            colour2 = posColour;
+        }
+
+        m_colour = colour1;
+        DeBruijnNode * revCompNode = m_deBruijnNode->getReverseComplement();
+        if (revCompNode != 0)
+        {
+            GraphicsItemNode * revCompGraphNode = revCompNode->getGraphicsItemNode();
+            if (revCompGraphNode != 0)
+                revCompGraphNode->m_colour = colour2;
+        }
+        break;
+    }
+
+    case DEPTH_COLOUR:
+    {
+        m_colour = getDepthColour();
+        break;
+    }
+
+    case BLAST_HITS_RAINBOW_COLOUR:
+    {
+        m_colour = g_settings->noBlastHitsColour;
+        break;
+    }
+
+    case BLAST_HITS_SOLID_COLOUR:
+    {
+        m_colour = g_settings->noBlastHitsColour;
+        break;
+    }
+
+    case CUSTOM_COLOURS:
+    {
+        m_colour = m_deBruijnNode->getCustomColourForDisplay();
+        break;
+    }
+
+    default: //CONTIGUITY COLOUR
+    {
+        //For single nodes, display the colour of whichever of the
+        //twin nodes has the greatest contiguity status.
+        ContiguityStatus contiguityStatus = m_deBruijnNode->getContiguityStatus();
+        if (!m_hasArrow)
+        {
+            ContiguityStatus twinContiguityStatus = m_deBruijnNode->getReverseComplement()->getContiguityStatus();
+            if (twinContiguityStatus < contiguityStatus)
+                contiguityStatus = twinContiguityStatus;
+        }
+
+        switch (contiguityStatus)
+        {
+        case STARTING:
+            m_colour = g_settings->contiguityStartingColour;
+            break;
+        case CONTIGUOUS_STRAND_SPECIFIC:
+            m_colour = g_settings->contiguousStrandSpecificColour;
+            break;
+        case CONTIGUOUS_EITHER_STRAND:
+            m_colour = g_settings->contiguousEitherStrandColour;
+            break;
+        case MAYBE_CONTIGUOUS:
+            m_colour = g_settings->maybeContiguousColour;
+            break;
+        default: //NOT_CONTIGUOUS
+            m_colour = g_settings->notContiguousColour;
+            break;
+        }
+    }
+    }
+}
+
+
+QPainterPath GraphicsItemNode::shape() const
+{
+    //If there is only one segment and it is shorter than half its
+    //width, then the arrow head will not be made with 45 degree
+    //angles, but rather whatever angle is made by going from the
+    //end to the back corners (the final node will be a triangle).
+    if (m_hasArrow
+            && m_linePoints.size() == 2
+            && distance(getLast(), getSecondLast()) < m_width / 2.0)
+    {
+        QLineF backline = QLineF(getSecondLast(), getLast()).normalVector();
+        backline.setLength(m_width / 2.0);
+        QPointF backVector = backline.p2() - backline.p1();
+        QPainterPath trianglePath;
+        trianglePath.moveTo(getLast());
+        trianglePath.lineTo(getSecondLast() + backVector);
+        trianglePath.lineTo(getSecondLast() - backVector);
+        trianglePath.lineTo(getLast());
+        return trianglePath;
+    }
+
+    //Create a path that outlines the main node shape.
+    QPainterPathStroker stroker;
+    stroker.setWidth(m_width);
+    stroker.setCapStyle(Qt::FlatCap);
+    stroker.setJoinStyle(Qt::RoundJoin);
+    QPainterPath mainNodePath = stroker.createStroke(m_path);
+
+    if (!m_hasArrow)
+        return mainNodePath;
+
+    //If the node has an arrow head, subtract the part of its
+    //final segment to give it a pointy end.
+    //NOTE: THIS APPROACH CAN LEAD TO WEIRD EFFECTS WHEN THE NODE'S
+    //POINTY END OVERLAPS WITH ANOTHER PART OF THE NODE.  PERHAPS THERE
+    //IS A BETTER WAY TO MAKE ARROWHEADS?
+    QLineF frontline = QLineF(getLast(), getSecondLast()).normalVector();
+    frontline.setLength(m_width / 2.0);
+    QPointF frontVector = frontline.p2() - frontline.p1();
+    QLineF arrowheadLine(getLast(), getSecondLast());
+    arrowheadLine.setLength(1.42 * (m_width / 2.0));
+    arrowheadLine.setAngle(arrowheadLine.angle() + 45.0);
+    QPointF arrow1 = arrowheadLine.p2();
+    arrowheadLine.setAngle(arrowheadLine.angle() - 90.0);
+    QPointF arrow2 = arrowheadLine.p2();
+    QLineF lastSegmentLine(getSecondLast(), getLast());
+    lastSegmentLine.setLength(0.01);
+    QPointF additionalForwardBit = lastSegmentLine.p2() - lastSegmentLine.p1();
+    QPainterPath subtractionPath;
+    subtractionPath.moveTo(getLast());
+    subtractionPath.lineTo(arrow1);
+    subtractionPath.lineTo(getLast() + frontVector + additionalForwardBit);
+    subtractionPath.lineTo(getLast() - frontVector + additionalForwardBit);
+    subtractionPath.lineTo(arrow2);
+    subtractionPath.lineTo(getLast());
+    return mainNodePath.subtracted(subtractionPath);
+}
+
+
+void GraphicsItemNode::mousePressEvent(QGraphicsSceneMouseEvent * event)
+{
+    m_grabIndex = 0;
+    QPointF grabPoint = event->pos();
+
+    double closestPointDistance = distance(grabPoint, m_linePoints[0]);
+    for (size_t i = 1; i < m_linePoints.size(); ++i)
+    {
+        double pointDistance = distance(grabPoint, m_linePoints[i]);
+        if (pointDistance < closestPointDistance)
+        {
+            closestPointDistance = pointDistance;
+            m_grabIndex = i;
+        }
+    }
+}
+
+
+//When this node graphics item is moved, each of the connected edge
+//graphics items will need to be adjusted accordingly.
+void GraphicsItemNode::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
+{
+    QPointF difference = event->pos() - event->lastPos();
+
+    //If this node is selected, then move all of the other selected nodes too.
+    //If it is not selected, then only move this node.
+    std::vector<GraphicsItemNode *> nodesToMove;
+    MyGraphicsScene * graphicsScene = dynamic_cast<MyGraphicsScene *>(scene());
+    if (isSelected())
+        nodesToMove = graphicsScene->getSelectedGraphicsItemNodes();
+    else
+        nodesToMove.push_back(this);
+
+    for (size_t i = 0; i < nodesToMove.size(); ++i)
+    {
+        nodesToMove[i]->shiftPoints(difference);
+        nodesToMove[i]->remakePath();
+    }
+    graphicsScene->possiblyExpandSceneRectangle(&nodesToMove);
+
+    fixEdgePaths(&nodesToMove);
+}
+
+
+//This function remakes edge paths.  If nodes is passed, it will remake the
+//edge paths for all of the nodes.  If nodes isn't passed, then it will just
+//do it for this node.
+void GraphicsItemNode::fixEdgePaths(std::vector<GraphicsItemNode *> * nodes)
+{
+    std::set<DeBruijnEdge *> edgesToFix;
+
+    if (nodes == 0)
+    {
+        const std::vector<DeBruijnEdge *> * edges = m_deBruijnNode->getEdgesPointer();
+        for (size_t j = 0; j < edges->size(); ++j)
+            edgesToFix.insert((*edges)[j]);
+    }
+    else
+    {
+        for (size_t i = 0; i < nodes->size(); ++i)
+        {
+            DeBruijnNode * node = (*nodes)[i]->m_deBruijnNode;
+            const std::vector<DeBruijnEdge *> * edges = node->getEdgesPointer();
+            for (size_t j = 0; j < edges->size(); ++j)
+                edgesToFix.insert((*edges)[j]);
+        }
+    }
+
+    for (std::set<DeBruijnEdge *>::iterator i = edgesToFix.begin(); i != edgesToFix.end(); ++i)
+    {
+        DeBruijnEdge * deBruijnEdge = *i;
+        GraphicsItemEdge * graphicsItemEdge = deBruijnEdge->getGraphicsItemEdge();
+
+        //If this edge has a graphics item, adjust it now.
+        if (graphicsItemEdge != 0)
+            graphicsItemEdge->calculateAndSetPath();
+
+        //If this edge does not have a graphics item, then perhaps its
+        //reverse complment does.  Only do this check if the graph was drawn
+        //on single mode.
+        else if (!g_settings->doubleMode)
+        {
+            graphicsItemEdge = deBruijnEdge->getReverseComplement()->getGraphicsItemEdge();
+            if (graphicsItemEdge != 0)
+                graphicsItemEdge->calculateAndSetPath();
+        }
+    }
+}
+
+
+void GraphicsItemNode::shiftPoints(QPointF difference)
+{
+    prepareGeometryChange();
+
+    if (g_settings->nodeDragging == NO_DRAGGING)
+        return;
+
+    else if (isSelected()) //Move all pieces for selected nodes
+    {
+        for (size_t i = 0; i < m_linePoints.size(); ++i)
+            m_linePoints[i] += difference;
+    }
+
+    else if (g_settings->nodeDragging == ONE_PIECE)
+        m_linePoints[m_grabIndex] += difference;
+
+    else if (g_settings->nodeDragging == NEARBY_PIECES)
+    {
+        for (size_t i = 0; i < m_linePoints.size(); ++i)
+        {
+            int indexDistance = abs(int(i) - int(m_grabIndex));
+            double dragStrength = pow(2.0, -1.0 * pow(double(indexDistance), 1.8) / g_settings->dragStrength); //constants chosen for dropoff of drag strength
+            m_linePoints[i] += difference * dragStrength;
+        }
+    }
+}
+
+void GraphicsItemNode::remakePath()
+{
+    QPainterPath path;
+
+    path.moveTo(m_linePoints[0]);
+    for (size_t i = 1; i < m_linePoints.size(); ++i)
+        path.lineTo(m_linePoints[i]);
+
+    m_path = path;
+}
+
+
+QPainterPath GraphicsItemNode::makePartialPath(double startFraction, double endFraction)
+{
+    if (endFraction < startFraction)
+        std::swap(startFraction, endFraction);
+
+    double totalLength = getNodePathLength();
+
+    QPainterPath path;
+    bool pathStarted = false;
+    double lengthSoFar = 0.0;
+    for (size_t i = 0; i < m_linePoints.size() - 1; ++i)
+    {
+        QPointF point1 = m_linePoints[i];
+        QPointF point2 = m_linePoints[i + 1];
+        QLineF line(point1, point2);
+
+        double point1Fraction = lengthSoFar / totalLength;
+        lengthSoFar += line.length();
+        double point2Fraction = lengthSoFar / totalLength;
+
+        //If the path hasn't yet begun and this segment is before
+        //the starting fraction, do nothing.
+        if (!pathStarted && point2Fraction < startFraction)
+            continue;
+
+        //If the path hasn't yet begun but this segment covers the starting
+        //fraction, start the path now.
+        if (!pathStarted && point2Fraction >= startFraction)
+        {
+            pathStarted = true;
+            path.moveTo(findIntermediatePoint(point1, point2, point1Fraction, point2Fraction, startFraction));
+        }
+
+        //If the path is in progress and this segment hasn't yet reached the end,
+        //just continue the path.
+        if (pathStarted && point2Fraction < endFraction)
+            path.lineTo(point2);
+
+        //If the path is in progress and this segment passes the end, finish the line.
+        if (pathStarted && point2Fraction >= endFraction)
+        {
+            path.lineTo(findIntermediatePoint(point1, point2, point1Fraction, point2Fraction, endFraction));
+            return path;
+        }
+    }
+
+    return path;
+}
+
+
+double GraphicsItemNode::getNodePathLength()
+{
+    double totalLength = 0.0;
+    for (size_t i = 0; i < m_linePoints.size() - 1; ++i)
+    {
+        QLineF line(m_linePoints[i], m_linePoints[i + 1]);
+        totalLength += line.length();
+    }
+    return totalLength;
+}
+
+
+//This function will find the point that is a certain fraction of the way along the node's path.
+QPointF GraphicsItemNode::findLocationOnPath(double fraction)
+{
+    double totalLength = getNodePathLength();
+
+    double lengthSoFar = 0.0;
+    for (size_t i = 0; i < m_linePoints.size() - 1; ++i)
+    {
+        QPointF point1 = m_linePoints[i];
+        QPointF point2 = m_linePoints[i + 1];
+        QLineF line(point1, point2);
+
+        double point1Fraction = lengthSoFar / totalLength;
+        lengthSoFar += line.length();
+        double point2Fraction = lengthSoFar / totalLength;
+
+        //If point2 hasn't yet reached the target, do nothing.
+        if (point2Fraction < fraction)
+            continue;
+
+        //If the path hasn't yet begun but this segment covers the starting
+        //fraction, start the path now.
+        if (point2Fraction >= fraction)
+            return findIntermediatePoint(point1, point2, point1Fraction, point2Fraction, fraction);
+    }
+
+    //The code shouldn't get here, as the target point should have been found in the above loop.
+    return QPointF();
+}
+
+QPointF GraphicsItemNode::findIntermediatePoint(QPointF p1, QPointF p2, double p1Value, double p2Value, double targetValue)
+{
+    QPointF difference = p2 - p1;
+    double fraction = (targetValue - p1Value) / (p2Value - p1Value);
+    return difference * fraction + p1;
+}
+
+double GraphicsItemNode::distance(QPointF p1, QPointF p2) const
+{
+    double xDiff = p1.x() - p2.x();
+    double yDiff = p1.y() - p2.y();
+    return sqrt(xDiff * xDiff + yDiff * yDiff);
+}
+
+
+bool GraphicsItemNode::usePositiveNodeColour()
+{
+    return !m_hasArrow || m_deBruijnNode->isPositiveNode();
+}
+
+
+
+
+//This function returns the nodes' visible centres.  If the entire node is visible,
+//then there is just one visible centre.  If none of the node is visible, then
+//there are no visible centres.  If multiple parts of the node are visible, then there
+//are multiple visible centres.
+std::vector<QPointF> GraphicsItemNode::getCentres() const
+{
+    std::vector<QPointF> centres;
+    std::vector<QPointF> currentRun;
+
+    QPointF lastP;
+    bool lastPointVisible = false;
+
+    for (size_t i = 0; i < m_linePoints.size(); ++i)
+    {
+        QPointF p = m_linePoints[i];
+        bool pVisible = g_graphicsView->isPointVisible(p);
+
+        //If this point is visible, but the last wasn't, a new run is started.
+        if (pVisible && !lastPointVisible)
+        {
+            //If this is not the first point, then we need to find the intermediate
+            //point that lies on the visible boundary and start the path with that.
+            if (i > 0)
+                currentRun.push_back(g_graphicsView->findIntersectionWithViewportBoundary(QLineF(p, lastP)));
+            currentRun.push_back(p);
+        }
+
+        //If th last point is visible and this one is too, add it to the current run.
+        else if (pVisible && lastPointVisible)
+            currentRun.push_back(p);
+
+        //If the last point is visible and this one isn't, then a run has ended.
+        else if (!pVisible && lastPointVisible)
+        {
+            //We need to find the intermediate point that is on the visible boundary.
+            currentRun.push_back(g_graphicsView->findIntersectionWithViewportBoundary(QLineF(p, lastP)));
+
+            centres.push_back(getCentre(currentRun));
+            currentRun.clear();
+        }
+
+        //If neither this point nor the last were visible, we still need to check whether
+        //the line segment between them is.  If so, then then this may be a case where
+        //we are really zoomed in (and so line segments are large compared to the scene rect).
+        else if (i > 0 && !pVisible && !lastPointVisible)
+        {
+            bool success;
+            QLineF v = g_graphicsView->findVisiblePartOfLine(QLineF(lastP, p), &success);
+            if (success)
+            {
+                QPointF vCentre = QPointF((v.p1().x() + v.p2().x()) / 2.0, (v.p1().y() + v.p2().y()) / 2.0);
+                centres.push_back(vCentre);
+            }
+        }
+
+        lastPointVisible = pVisible;
+        lastP = p;
+    }
+
+    //If there is a current run, add its centre
+    if (currentRun.size() > 0)
+        centres.push_back(getCentre(currentRun));
+
+    return centres;
+}
+
+
+
+//This function finds the centre point on the path defined by linePoints.
+QPointF GraphicsItemNode::getCentre(std::vector<QPointF> linePoints) const
+{
+    if (linePoints.size() == 0)
+        return QPointF();
+    if (linePoints.size() == 1)
+        return linePoints[0];
+
+    double pathLength = 0.0;
+    for (size_t i = 0; i < linePoints.size() - 1; ++i)
+        pathLength += distance(linePoints[i], linePoints[i+1]);
+
+    double endToCentre = pathLength / 2.0;
+
+    double lengthSoFar = 0.0;
+    for (size_t i = 0; i < linePoints.size() - 1; ++i)
+    {
+        QPointF a = linePoints[i];
+        QPointF b = linePoints[i+1];
+        double segmentLength = distance(a, b);
+
+        //If this segment will push the distance over halfway, then it
+        //contains the centre point.
+        if (lengthSoFar + segmentLength >= endToCentre)
+        {
+            double additionalLengthNeeded = endToCentre - lengthSoFar;
+            double fractionOfCurrentSegment = additionalLengthNeeded / segmentLength;
+            return (b - a) * fractionOfCurrentSegment + a;
+        }
+
+        lengthSoFar += segmentLength;
+    }
+
+    //Code should never get here.
+    return QPointF();
+}
+
+QStringList GraphicsItemNode::getNodeText()
+{
+    QStringList nodeText;
+
+    if (g_settings->displayNodeCustomLabels)
+        nodeText << m_deBruijnNode->getCustomLabelForDisplay();
+    if (g_settings->displayNodeNames)
+    {
+        QString nodeName = m_deBruijnNode->getName();
+        if (!g_settings->doubleMode)
+            nodeName.chop(1);
+        nodeText << nodeName;
+    }
+    if (g_settings->displayNodeLengths)
+        nodeText << formatIntForDisplay(m_deBruijnNode->getLength()) + " bp";
+    if (g_settings->displayNodeDepth)
+        nodeText << formatDepthForDisplay(m_deBruijnNode->getDepth());
+    if (g_settings->displayNodeCsvData && m_deBruijnNode->hasCsvData())
+        nodeText << m_deBruijnNode->getCsvLine(g_settings->displayNodeCsvDataCol);
+
+    return nodeText;
+}
+
+
+QSize GraphicsItemNode::getNodeTextSize(QString text)
+{
+    QFontMetrics fontMetrics(g_settings->labelFont);
+    return fontMetrics.size(0, text);
+}
+
+
+QColor GraphicsItemNode::getDepthColour()
+{
+    double depth = m_deBruijnNode->getDepth();
+    double lowValue;
+    double highValue;
+    if (g_settings->autoDepthValue)
+    {
+        lowValue = g_assemblyGraph->m_firstQuartileDepth;
+        highValue = g_assemblyGraph->m_thirdQuartileDepth;
+    }
+    else
+    {
+        lowValue = g_settings->lowDepthValue;
+        highValue = g_settings->highDepthValue;
+    }
+
+    if (depth <= lowValue)
+        return g_settings->lowDepthColour;
+    if (depth >= highValue)
+        return g_settings->highDepthColour;
+
+    double fraction = (depth - lowValue) / (highValue - lowValue);
+
+    int redDifference = g_settings->highDepthColour.red() - g_settings->lowDepthColour.red();
+    int greenDifference = g_settings->highDepthColour.green() - g_settings->lowDepthColour.green();
+    int blueDifference = g_settings->highDepthColour.blue() - g_settings->lowDepthColour.blue();
+    int alphaDifference = g_settings->highDepthColour.alpha() - g_settings->lowDepthColour.alpha();
+
+    int red = int(g_settings->lowDepthColour.red() + (fraction * redDifference) + 0.5);
+    int green = int(g_settings->lowDepthColour.green() + (fraction * greenDifference) + 0.5);
+    int blue = int(g_settings->lowDepthColour.blue() + (fraction * blueDifference) + 0.5);
+    int alpha = int(g_settings->lowDepthColour.alpha() + (fraction * alphaDifference) + 0.5);
+
+    return QColor(red, green, blue, alpha);
+}
+
+
+
+void GraphicsItemNode::setWidth()
+{
+    m_width = getNodeWidth(m_deBruijnNode->getDepthRelativeToMeanDrawnDepth(), g_settings->depthPower,
+                           g_settings->depthEffectOnWidth, g_settings->averageNodeWidth);
+    if (m_width < 0.0)
+        m_width = 0.0;
+}
+
+
+
+//The bounding rectangle of a node has to be a little bit bigger than
+//the node's path, because of the outline.  The selection outline is
+//the largest outline we can expect, so use that to define the bounding
+//rectangle.
+QRectF GraphicsItemNode::boundingRect() const
+{
+    double extraSize = g_settings->selectionThickness / 2.0;
+    QRectF bound = shape().boundingRect();
+
+    bound.setTop(bound.top() - extraSize);
+    bound.setBottom(bound.bottom() + extraSize);
+    bound.setLeft(bound.left() - extraSize);
+    bound.setRight(bound.right() + extraSize);
+
+    return bound;
+}
+
+
+double GraphicsItemNode::getNodeWidth(double depthRelativeToMeanDrawnDepth, double depthPower,
+                                      double depthEffectOnWidth, double averageNodeWidth)
+{
+    if (depthRelativeToMeanDrawnDepth < 0.0)
+        depthRelativeToMeanDrawnDepth = 0.0;
+    double widthRelativeToAverage = (pow(depthRelativeToMeanDrawnDepth, depthPower) - 1.0) * depthEffectOnWidth + 1.0;
+    return averageNodeWidth * widthRelativeToAverage;
+}
+
+
+
+//This function shifts all the node's points to the left (relative to its
+//direction).  This is used in double mode to prevent nodes from displaying
+//directly on top of their complement nodes.
+void GraphicsItemNode::shiftPointsLeft()
+{
+    shiftPointSideways(true);
+}
+
+void GraphicsItemNode::shiftPointsRight()
+{
+    shiftPointSideways(false);
+}
+
+void GraphicsItemNode::shiftPointSideways(bool left)
+{
+    prepareGeometryChange();
+
+    //The collection of line points should be at least
+    //two large.  But just to be safe, quit now if it
+    //is not.
+    size_t linePointsSize = m_linePoints.size();
+    if (linePointsSize < 2)
+        return;
+
+    //Shift by a quarter of the segment length.  This should make
+    //nodes one half segment length separated from their complements.
+    double shiftDistance = g_settings->doubleModeNodeSeparation;
+
+    for (size_t i = 0; i < linePointsSize; ++i)
+    {
+        QPointF point = m_linePoints[i];
+        QLineF nodeDirection;
+
+        //If the point is on the end, then determine the node direction
+        //using this point and its adjacent point.
+        if (i == 0)
+        {
+            QPointF nextPoint = m_linePoints[i+1];
+            nodeDirection = QLineF(point, nextPoint);
+        }
+        else if (i == linePointsSize - 1)
+        {
+            QPointF previousPoint = m_linePoints[i-1];
+            nodeDirection = QLineF(previousPoint, point);
+        }
+
+        // If the point is in the middle, then determine the node direction
+        //using both adjacent points.
+        else
+        {
+            QPointF previousPoint = m_linePoints[i-1];
+            QPointF nextPoint = m_linePoints[i+1];
+            nodeDirection = QLineF(previousPoint, nextPoint);
+        }
+
+        QLineF shiftLine = nodeDirection.normalVector().unitVector();
+        shiftLine.setLength(shiftDistance);
+
+        QPointF shiftVector;
+        if (left)
+            shiftVector = shiftLine.p2() - shiftLine.p1();
+        else
+            shiftVector = shiftLine.p1() - shiftLine.p2();
+        QPointF newPoint = point + shiftVector;
+        m_linePoints[i] = newPoint;
+    }
+
+    remakePath();
+}
+
+
+void GraphicsItemNode::getBlastHitsTextAndLocationThisNode(std::vector<QString> * blastHitText,
+                                                       std::vector<QPointF> * blastHitLocation)
+{
+    const std::vector<BlastHit *> * blastHits = m_deBruijnNode->getBlastHitsPointer();
+    for (size_t i = 0; i < blastHits->size(); ++i)
+    {
+        BlastHit * hit = (*blastHits)[i];
+        blastHitText->push_back(hit->m_query->getName());
+        blastHitLocation->push_back(findLocationOnPath(hit->getNodeCentreFraction()));
+    }
+}
+
+void GraphicsItemNode::getBlastHitsTextAndLocationThisNodeOrReverseComplement(std::vector<QString> * blastHitText,
+                                                                          std::vector<QPointF> * blastHitLocation)
+{
+    getBlastHitsTextAndLocationThisNode(blastHitText, blastHitLocation);
+
+    const std::vector<BlastHit *> * blastHits = m_deBruijnNode->getReverseComplement()->getBlastHitsPointer();
+    for (size_t i = 0; i < blastHits->size(); ++i)
+    {
+        BlastHit * hit = (*blastHits)[i];
+        blastHitText->push_back(hit->m_query->getName());
+        blastHitLocation->push_back(findLocationOnPath(1.0 - hit->getNodeCentreFraction()));
+    }
+}
+
+
+
+
+//This function outlines and shades the appropriate part of a node if it is
+//in the user-specified path.
+void GraphicsItemNode::exactPathHighlightNode(QPainter * painter)
+{
+    if (g_memory->userSpecifiedPath.containsNode(m_deBruijnNode))
+        pathHighlightNode2(painter, m_deBruijnNode, false, &g_memory->userSpecifiedPath);
+
+    if (!g_settings->doubleMode &&
+            g_memory->userSpecifiedPath.containsNode(m_deBruijnNode->getReverseComplement()))
+        pathHighlightNode2(painter, m_deBruijnNode->getReverseComplement(), true, &g_memory->userSpecifiedPath);
+}
+
+
+
+//This function outlines and shades the appropriate part of a node if it is
+//in the user-specified path.
+void GraphicsItemNode::queryPathHighlightNode(QPainter * painter)
+{
+    if (g_memory->queryPaths.size() == 0)
+        return;
+
+    for (int i = 0; i < g_memory->queryPaths.size(); ++i)
+    {
+        Path * path = &(g_memory->queryPaths[i]);
+        if (path->containsNode(m_deBruijnNode))
+            pathHighlightNode2(painter, m_deBruijnNode, false, path);
+
+        if (!g_settings->doubleMode &&
+                path->containsNode(m_deBruijnNode->getReverseComplement()))
+            pathHighlightNode2(painter, m_deBruijnNode->getReverseComplement(), true, path);
+    }
+}
+
+
+
+void GraphicsItemNode::pathHighlightNode2(QPainter * painter,
+                                          DeBruijnNode * node,
+                                          bool reverse,
+                                          Path * path)
+{
+    int numberOfTimesInMiddle = path->numberOfOccurrencesInMiddleOfPath(node);
+    for (int i = 0; i < numberOfTimesInMiddle; ++i)
+        pathHighlightNode3(painter, shape());
+
+    bool isStartingNode = path->isStartingNode(node);
+    bool isEndingNode = path->isEndingNode(node);
+
+    //If this is the only node in the path, then we limit the highlighting to the appropriate region.
+    if (isStartingNode && isEndingNode && path->getNodeCount() == 1)
+    {
+        pathHighlightNode3(painter, buildPartialHighlightPath(path->getStartFraction(), path->getEndFraction(), reverse));
+        return;
+    }
+
+    if (isStartingNode)
+        pathHighlightNode3(painter, buildPartialHighlightPath(path->getStartFraction(), 1.0, reverse));
+
+    if (isEndingNode)
+        pathHighlightNode3(painter, buildPartialHighlightPath(0.0, path->getEndFraction(), reverse));
+}
+
+
+void GraphicsItemNode::pathHighlightNode3(QPainter * painter,
+                                          QPainterPath highlightPath)
+{
+    QBrush shadingBrush(g_settings->pathHighlightShadingColour);
+    painter->fillPath(highlightPath, shadingBrush);
+
+    highlightPath = highlightPath.simplified();
+    QPen outlinePen(QBrush(g_settings->pathHighlightOutlineColour),
+                    g_settings->selectionThickness, Qt::SolidLine,
+                    Qt::SquareCap, Qt::RoundJoin);
+    painter->setPen(outlinePen);
+    painter->drawPath(highlightPath);
+}
+
+
+
+QPainterPath GraphicsItemNode::buildPartialHighlightPath(double startFraction,
+                                                         double endFraction,
+                                                         bool reverse)
+{
+    if (reverse)
+    {
+        startFraction = 1.0 - startFraction;
+        endFraction = 1.0 - endFraction;
+        std::swap(startFraction, endFraction);
+    }
+
+    QPainterPath partialPath = makePartialPath(startFraction,
+                                               endFraction);
+
+    QPainterPathStroker stroker;
+
+    //If the node has an arrow, we need a path intersection with the
+    //shape to make sure the arrowhead is part of the path.  Adding a bit
+    //to the width seems to help with the intersection.
+    if (m_hasArrow)
+        stroker.setWidth(m_width + 0.1);
+    else
+        stroker.setWidth(m_width);
+
+    stroker.setCapStyle(Qt::FlatCap);
+    stroker.setJoinStyle(Qt::RoundJoin);
+    QPainterPath highlightPath = stroker.createStroke(partialPath);
+
+    if (m_hasArrow)
+        highlightPath = highlightPath.intersected(shape());
+
+    return highlightPath;
+}
+
+
+bool GraphicsItemNode::anyNodeDisplayText()
+{
+    return g_settings->displayNodeCustomLabels ||
+            g_settings->displayNodeNames ||
+            g_settings->displayNodeLengths ||
+            g_settings->displayNodeDepth ||
+            g_settings->displayNodeCsvData;
+}
diff --git a/graph/graphicsitemnode.h b/graph/graphicsitemnode.h
new file mode 100644
index 0000000..f4d355f
--- /dev/null
+++ b/graph/graphicsitemnode.h
@@ -0,0 +1,105 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef GRAPHICSITEMNODE_H
+#define GRAPHICSITEMNODE_H
+
+#include <QGraphicsItem>
+#include <QGraphicsSceneMouseEvent>
+#include "../ogdf/basic/GraphAttributes.h"
+#include <vector>
+#include <QPointF>
+#include <QColor>
+#include <QFont>
+#include <QString>
+#include <QPainterPath>
+#include <QStringList>
+
+class DeBruijnNode;
+class Path;
+
+class GraphicsItemNode : public QGraphicsItem
+{
+public:
+    GraphicsItemNode(DeBruijnNode * deBruijnNode,
+                     ogdf::GraphAttributes * graphAttributes,
+                     QGraphicsItem * parent = 0);
+    GraphicsItemNode(DeBruijnNode * deBruijnNode,
+                     GraphicsItemNode * toCopy,
+                     QGraphicsItem * parent = 0);
+    GraphicsItemNode(DeBruijnNode * deBruijnNode,
+                     std::vector<QPointF> linePoints,
+                     QGraphicsItem * parent = 0);
+
+    DeBruijnNode * m_deBruijnNode;
+    double m_width;
+    bool m_hasArrow;
+    std::vector<QPointF> m_linePoints;
+    size_t m_grabIndex;
+    QColor m_colour;
+    QPainterPath m_path;
+
+    void mousePressEvent(QGraphicsSceneMouseEvent * event);
+    void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
+    void paint(QPainter * painter, const QStyleOptionGraphicsItem *, QWidget *);
+    QPainterPath shape() const;
+    void shiftPoints(QPointF difference);
+    void remakePath();
+    double distance(QPointF p1, QPointF p2) const;
+    bool usePositiveNodeColour();
+    QPointF getFirst() const {return m_linePoints[0];}
+    QPointF getSecond() const {return m_linePoints[1];}
+    QPointF getLast() const {return m_linePoints[m_linePoints.size()-1];}
+    QPointF getSecondLast() const {return m_linePoints[m_linePoints.size()-2];}
+    std::vector<QPointF> getCentres() const;
+    QPointF getCentre(std::vector<QPointF> linePoints) const;
+    void setNodeColour();
+    QStringList getNodeText();
+    QSize getNodeTextSize(QString text);
+    QColor getDepthColour();
+    void setWidth();
+    QPainterPath makePartialPath(double startFraction, double endFraction);
+    double getNodePathLength();
+    QPointF findLocationOnPath(double fraction);
+    QPointF findIntermediatePoint(QPointF p1, QPointF p2, double p1Value,
+                                  double p2Value, double targetValue);
+    QRectF boundingRect() const;
+    static double getNodeWidth(double depthRelativeToMeanDrawnDepth,
+                               double depthPower,
+                               double depthEffectOnWidth,
+                               double averageNodeWidth);
+    void shiftPointsLeft();
+    void shiftPointsRight();
+    void getBlastHitsTextAndLocationThisNode(std::vector<QString> * blastHitText,
+                                             std::vector<QPointF> * blastHitLocation);
+    void getBlastHitsTextAndLocationThisNodeOrReverseComplement(std::vector<QString> * blastHitText,
+                                                                std::vector<QPointF> * blastHitLocation);
+    void drawTextPathAtLocation(QPainter *painter, QPainterPath textPath, QPointF centre);
+    void fixEdgePaths(std::vector<GraphicsItemNode *> * nodes = 0);
+
+private:
+    void exactPathHighlightNode(QPainter * painter);
+    void queryPathHighlightNode(QPainter * painter);
+    void pathHighlightNode2(QPainter * painter, DeBruijnNode * node, bool reverse, Path * path);
+    void pathHighlightNode3(QPainter * painter, QPainterPath highlightPath);
+    QPainterPath buildPartialHighlightPath(double startFraction, double endFraction, bool reverse);
+    bool anyNodeDisplayText();
+    void shiftPointSideways(bool left);
+};
+
+#endif // GRAPHICSITEMNODE_H
diff --git a/graph/graphlocation.cpp b/graph/graphlocation.cpp
new file mode 100644
index 0000000..eb83f31
--- /dev/null
+++ b/graph/graphlocation.cpp
@@ -0,0 +1,205 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "graphlocation.h"
+
+#include "debruijnnode.h"
+#include "assemblygraph.h"
+#include "../program/globals.h"
+
+
+
+GraphLocation::GraphLocation() :
+    m_node(0), m_position(0)
+{
+
+}
+
+GraphLocation::GraphLocation(DeBruijnNode * node, int position) :
+    m_node(node), m_position(position)
+{
+}
+
+
+GraphLocation GraphLocation::startOfNode(DeBruijnNode * node)
+{
+    GraphLocation location(node, 1);
+    if (location.isValid())
+        return location;
+    else
+        return GraphLocation::null();
+}
+
+
+GraphLocation GraphLocation::endOfNode(DeBruijnNode * node)
+{
+    if (node == 0)
+        return GraphLocation::null();
+
+    int pos = node->getLength();
+    GraphLocation location(node, pos);
+    if (location.isValid())
+        return location;
+    else
+        return GraphLocation::null();
+}
+
+
+GraphLocation GraphLocation::null()
+{
+    return GraphLocation(0, 0);
+}
+
+bool GraphLocation::isValid() const
+{
+    if (isNull())
+        return false;
+    if (m_position < 1)
+        return false;
+    return m_position <= m_node->getLength();
+}
+
+
+bool GraphLocation::isNull() const
+{
+    return (m_node == 0 || m_position == 0);
+}
+
+
+GraphLocation GraphLocation::reverseComplementLocation() const
+{
+    int newPos = m_node->getLength() - m_position + 1;
+    GraphLocation newLocation(m_node->getReverseComplement(), newPos);
+
+    //For Velvet graphs, the reverse complement location is shifted by the k-mer
+    //size and may not even be on the same node!
+    if (g_assemblyGraph->m_graphFileType == LAST_GRAPH)
+        newLocation.moveLocation(-g_assemblyGraph->m_kmer + 1);
+
+    if (newLocation.isValid())
+        return newLocation;
+    else
+        return GraphLocation::null();
+}
+
+
+
+void GraphLocation::moveLocation(int change)
+{
+    if (change > 0)
+        moveForward(change);
+    else if (change < 0)
+        moveBackward(-change);
+}
+
+
+void GraphLocation::moveForward(int change)
+{
+    //See if there are enough bases left in this node to move by the
+    //required amount.  If so, we're done!
+    int basesLeftInNode = m_node->getLength() - m_position;
+    if (change <= basesLeftInNode)
+    {
+        m_position += change;
+        return;
+    }
+
+    //If there aren't enough bases left, then we recursively try with the
+    //next nodes.
+    std::vector<DeBruijnNode *> downstreamNodes = m_node->getDownstreamNodes();
+    for (size_t i = 0; i < downstreamNodes.size(); ++i)
+    {
+        DeBruijnNode * node = downstreamNodes[i];
+        GraphLocation nextNodeLocation = GraphLocation::startOfNode(node);
+        nextNodeLocation.moveForward(change - basesLeftInNode - 1);
+
+        if (nextNodeLocation.isValid())
+        {
+            m_node = nextNodeLocation.getNode();
+            m_position = nextNodeLocation.getPosition();
+            return;
+        }
+    }
+
+    //If the code got here, then we failed to move and we make this a null
+    //position.
+    m_node = 0;
+    m_position = 0;
+    return;
+}
+
+void GraphLocation::moveBackward(int change)
+{
+    //See if there are enough bases left in this node to move by the
+    //required amount.  If so, we're done!
+    int basesLeftInNode = m_position - 1;
+    if (change <= basesLeftInNode)
+    {
+        m_position -= change;
+        return;
+    }
+
+    //If there aren't enough bases left, then we recursively try with the
+    //next nodes.
+    std::vector<DeBruijnNode *> upstreamNodes = m_node->getUpstreamNodes();
+    for (size_t i = 0; i < upstreamNodes.size(); ++i)
+    {
+        DeBruijnNode * node = upstreamNodes[i];
+        GraphLocation nextNodeLocation = GraphLocation::endOfNode(node);
+        nextNodeLocation.moveBackward(change - basesLeftInNode - 1);
+
+        if (nextNodeLocation.isValid())
+        {
+            m_node = nextNodeLocation.getNode();
+            m_position = nextNodeLocation.getPosition();
+            return;
+        }
+    }
+
+    //If the code got here, then we failed to move and we make this a null
+    //position.
+    m_node = 0;
+    m_position = 0;
+    return;
+}
+
+
+char GraphLocation::getBase() const
+{
+    if (!isValid())
+        return '\0';
+    else
+        return m_node->getBaseAt(m_position - 1);
+}
+
+
+
+bool GraphLocation::isAtStartOfNode() const
+{
+    return (isValid() && m_position == 1);
+}
+
+bool GraphLocation::isAtEndOfNode() const
+{
+    return (isValid() && m_position == m_node->getLength());
+}
+
+bool GraphLocation::operator==(GraphLocation const &other) const
+{
+    return (m_node == other.m_node && m_position == other.m_position);
+}
diff --git a/graph/graphlocation.h b/graph/graphlocation.h
new file mode 100644
index 0000000..9254f66
--- /dev/null
+++ b/graph/graphlocation.h
@@ -0,0 +1,57 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef GRAPHLOCATION_H
+#define GRAPHLOCATION_H
+
+
+class DeBruijnNode;
+
+class GraphLocation
+{
+public:
+    //CREATORS
+    GraphLocation();
+    GraphLocation(DeBruijnNode * node, int position);
+    static GraphLocation startOfNode(DeBruijnNode * node);
+    static GraphLocation endOfNode(DeBruijnNode * node);
+    static GraphLocation null();
+
+    //ACCESSORS
+    DeBruijnNode * getNode() const {return m_node;}
+    int getPosition() const {return m_position;}
+    bool isValid() const;
+    bool isNull() const;
+    GraphLocation reverseComplementLocation() const;
+    char getBase() const;
+    bool isAtStartOfNode() const;
+    bool isAtEndOfNode() const;
+    bool operator==(GraphLocation const &other) const;
+
+    //MODIFERS
+    void moveLocation(int change);
+
+
+private:
+    DeBruijnNode * m_node;
+    int m_position;
+    void moveForward(int change);
+    void moveBackward(int change);
+};
+
+#endif // GRAPHLOCATION_H
diff --git a/graph/ogdfnode.h b/graph/ogdfnode.h
new file mode 100644
index 0000000..acb4b22
--- /dev/null
+++ b/graph/ogdfnode.h
@@ -0,0 +1,42 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef OGDFNODE_H
+#define OGDFNODE_H
+
+#include <vector>
+#include "../ogdf/basic/Graph.h"
+#include <QPainterPath>
+#include "../ogdf/basic/GraphAttributes.h"
+#include <QPointF>
+
+class OgdfNode
+{
+public:
+    OgdfNode() {}
+
+    std::vector<ogdf::node> m_ogdfNodes;
+
+    void addOgdfNode(ogdf::node newNode) {m_ogdfNodes.push_back(newNode);}
+    ogdf::node getFirst() {if (m_ogdfNodes.size() == 0) return 0; else return m_ogdfNodes[0];}
+    ogdf::node getSecond() {if (m_ogdfNodes.size() < 2) return 0; else return m_ogdfNodes[1];}
+    ogdf::node getLast() {if (m_ogdfNodes.size() == 0) return 0; else return m_ogdfNodes[m_ogdfNodes.size()-1];}
+    ogdf::node getSecondLast() {if (m_ogdfNodes.size() < 2) return 0; else return m_ogdfNodes[m_ogdfNodes.size()-2];}
+};
+
+#endif // OGDFNODE_H
diff --git a/graph/path.cpp b/graph/path.cpp
new file mode 100644
index 0000000..2b859f8
--- /dev/null
+++ b/graph/path.cpp
@@ -0,0 +1,929 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "path.h"
+#include "debruijnnode.h"
+#include "debruijnedge.h"
+#include "../blast/blasthit.h"
+#include "../blast/blastquery.h"
+#include <QRegularExpression>
+#include "assemblygraph.h"
+#include <QStringList>
+#include <QApplication>
+#include <limits>
+
+
+
+//These will try to produce a path using the given nodes.
+//They will only succeed if the nodes produce one and only one path.
+//If they are disconnected, branching or ambiguous, they will fail
+//and only contruct an empty Path.
+Path Path::makeFromUnorderedNodes(QList<DeBruijnNode *> nodes,
+                                  bool strandSpecific)
+{
+    Path path;
+    path.buildUnambiguousPathFromNodes(nodes, strandSpecific);
+    return path;
+}
+
+Path Path::makeFromUnorderedNodes(std::vector<DeBruijnNode *> nodes,
+                                  bool strandSpecific)
+{
+    QList<DeBruijnNode *> nodesList;
+    for (size_t i = 0; i < nodes.size(); ++i)
+        nodesList.push_back(nodes[i]);
+
+    Path path;
+    path.buildUnambiguousPathFromNodes(nodesList, strandSpecific);
+    return path;
+}
+
+
+//This will build a Path from an ordered list of nodes.  If the nodes
+//form a valid path (i.e. there is an edge connecting each step along
+//the way), a Path is made, otherwise just an empty Path is made.
+//This function needs exact, strand-specific nodes.  If circular is
+//given, then it will also look for an edge connecting the last node
+//to the first.
+Path Path::makeFromOrderedNodes(QList<DeBruijnNode *> nodes, bool circular)
+{
+    Path path;
+
+    path.m_nodes = nodes;
+
+    int targetNumberOfEdges = path.m_nodes.size() - 1;
+    if (circular)
+        ++targetNumberOfEdges;
+
+    for (int i = 0; i < targetNumberOfEdges; ++i)
+    {
+        int firstNodeIndex = i;
+        int secondNodeIndex = i + 1;
+        if (secondNodeIndex >= path.m_nodes.size())
+            secondNodeIndex = 0;
+
+        DeBruijnNode * node1 = path.m_nodes[firstNodeIndex];
+        DeBruijnNode * node2 = path.m_nodes[secondNodeIndex];
+
+        bool foundEdge = false;
+        const std::vector<DeBruijnEdge *> * edges = node1->getEdgesPointer();
+        for (size_t j = 0; j < edges->size(); ++j)
+        {
+            DeBruijnEdge * edge = (*edges)[j];
+            if (edge->getStartingNode() == node1 && edge->getEndingNode() == node2)
+            {
+                path.m_edges.push_back(edge);
+                foundEdge = true;
+                break;
+            }
+        }
+
+        //If we failed to find an edge connecting the nodes, then
+        //the path failed.
+        if (!foundEdge)
+        {
+            path.m_nodes.clear();
+            path.m_edges.clear();
+            return path;
+        }
+    }
+
+    if (path.m_nodes.empty())
+        return path;
+
+    //If the code got here, then the path building was successful.
+    path.m_startLocation = GraphLocation::startOfNode(path.m_nodes.front());
+    path.m_endLocation = GraphLocation::endOfNode(path.m_nodes.back());
+
+    return path;
+}
+
+
+
+Path Path::makeFromString(QString pathString, bool circular,
+                          QString * pathStringFailure)
+{
+    Path path;
+
+    QRegularExpression re("^(?:\\(([0-9]+)\\) ?)*((?:[^,]+[-\\+], ?)*[^,]+[-\\+])(?: ?\\(([0-9]+)\\))*$");
+    QRegularExpressionMatch match = re.match(pathString);
+
+    //If the string failed to match the regex, return an empty path.
+    if (!match.hasMatch())
+    {
+        *pathStringFailure = "the text is not formatted correctly";
+        return path;
+    }
+
+    QString startPosString = match.captured(1);
+    QString nodeListString = match.captured(2);
+    QString endPosString = match.captured(3);
+
+    //Circular paths cannot have start and end positions.
+    if (circular && (startPosString != "" || endPosString != ""))
+    {
+        *pathStringFailure = "circular paths cannot contain start or end positions";
+        return path;
+    }
+
+    //Make sure there is at least one proposed node name listed.
+    QStringList nodeNameList = nodeListString.simplified().split(",", QString::SkipEmptyParts);
+    if (nodeNameList.empty())
+    {
+        *pathStringFailure = "the text is not formatted correctly";
+        return path;
+    }
+
+    //Find which node names are and are not actually in the graph. 
+    QList<DeBruijnNode *> nodesInGraph;
+    QStringList nodesNotInGraph;
+    for (int i = 0; i < nodeNameList.size(); ++i)
+    {
+        QString nodeName = nodeNameList[i].simplified();
+        if (g_assemblyGraph->m_deBruijnGraphNodes.contains(nodeName))
+            nodesInGraph.push_back(g_assemblyGraph->m_deBruijnGraphNodes[nodeName]);
+        else
+            nodesNotInGraph.push_back(nodeName);
+    }
+
+    //If the path contains nodes not in the graph, we fail.
+    if (nodesNotInGraph.size() > 0)
+    {
+        *pathStringFailure = "the following nodes are not in the graph: ";
+        for (int i = 0; i < nodesNotInGraph.size(); ++i)
+        {
+            *pathStringFailure += nodesNotInGraph[i];
+            if (i != nodesNotInGraph.size() - 1)
+                *pathStringFailure += ", ";
+        }
+        return path;
+    }
+
+    //If the code got here, then the list at least consists of valid nodes.
+    //We now use it to create a Path object.
+    path = Path::makeFromOrderedNodes(nodesInGraph, circular);
+
+    //If the path is empty, then we don't have to worry about start/end
+    //positions and we just return it.
+    if (path.isEmpty())
+    {
+        if (circular)
+            *pathStringFailure = "the nodes do not form a circular path";
+        else
+            *pathStringFailure = "the nodes do not form a path";
+        return path;
+    }
+
+    //If the code got here, then a path was made, and now we must check whether
+    //the start/end points are valid.
+    DeBruijnNode * firstNode = path.m_nodes.front();
+    DeBruijnNode * lastNode = path.m_nodes.back();
+
+    if (startPosString.length() > 0)
+    {
+        int startPos = startPosString.toInt();
+        if (startPos < 1 || startPos > firstNode->getLength())
+        {
+            *pathStringFailure = "starting node position not valid";
+            return Path();
+        }
+
+        path.m_startLocation = GraphLocation(firstNode, startPos);
+    }
+    else
+        path.m_startLocation = GraphLocation::startOfNode(firstNode);
+
+
+    if (endPosString.length() > 0)
+    {
+        int endPos = endPosString.toInt();
+        if (endPos < 1 || endPos > lastNode->getLength())
+        {
+            *pathStringFailure = "ending node position not valid";
+            return Path();
+        }
+
+        path.m_endLocation = GraphLocation(lastNode, endPos);
+    }
+    else
+        path.m_endLocation = GraphLocation::endOfNode(lastNode);
+
+    return path;
+}
+
+
+
+void Path::buildUnambiguousPathFromNodes(QList<DeBruijnNode *> nodes,
+                                         bool strandSpecific)
+{
+    if (nodes.isEmpty())
+        return;
+
+    //Loop through the nodes, trying to add them to the Path.  If a node can't
+    //be added, then we fail and make an empty Path.  If one can be added, we
+    //quit the loop and try again with the remaining nodes.
+    while (nodes.size() > 0)
+    {
+        bool addSuccess = false;
+        for (int i = 0; i < nodes.size(); ++i)
+        {
+            addSuccess = addNode(nodes.at(i), strandSpecific, true);
+            if (addSuccess)
+            {
+                nodes.removeAt(i);
+                break;
+            }
+        }
+
+        if (!addSuccess)
+        {
+            m_nodes.clear();
+            m_edges.clear();
+            return;
+        }
+    }
+
+    //If the nodes in the path contain other edges which connect them to each
+    //other, then the path is ambiguous and we fail.
+    if (checkForOtherEdges())
+    {
+        m_nodes.clear();
+        m_edges.clear();
+        return;
+    }
+
+    if (m_nodes.empty())
+        return;
+
+    //If the code got here, then the path building was successful.
+    m_startLocation = GraphLocation::startOfNode(m_nodes.front());
+    m_endLocation = GraphLocation::endOfNode(m_nodes.back());
+}
+
+
+//This function will try to add a node to the path on either end.
+//It will only succeed (and return true) if there is a single way
+//to add the node on one of the path's ends.
+//It can, however, add a node that connects the end to both ends,
+//making a circular Path.
+bool Path::addNode(DeBruijnNode * newNode, bool strandSpecific, bool makeCircularIfPossible)
+{
+    //If the Path is empty, then this function always succeeds.
+    if (m_nodes.isEmpty())
+    {
+        m_nodes.push_back(newNode);
+        m_startLocation = GraphLocation::startOfNode(newNode);
+        m_endLocation = GraphLocation::endOfNode(newNode);
+
+        if (makeCircularIfPossible)
+        {
+            //If there is an edge connecting the node to itself, then add that
+            //too to make a circular path.
+            DeBruijnEdge * selfLoopingEdge = newNode->getSelfLoopingEdge();
+            if (selfLoopingEdge != 0)
+                m_edges.push_back(selfLoopingEdge);
+        }
+
+        return true;
+    }
+
+    //If the Path is circular, then this function fails, as there
+    //is no way to add a node to a circular path without making
+    //it ambiguous.
+    if (isCircular())
+        return false;
+
+    //Check to see if the node can be added anywhere in the middle
+    //of the Path.  If so, this function fails.
+    for (int i = 1; i < m_nodes.size() - 1; ++i)
+    {
+        DeBruijnNode * middleNode = m_nodes.at(i);
+        if (middleNode->isNodeConnected(newNode))
+            return false;
+    }
+
+    DeBruijnNode * firstNode = m_nodes.front();
+    DeBruijnNode * lastNode = m_nodes.back();
+
+    DeBruijnEdge * edgeIntoFirst = firstNode->doesNodeLeadIn(newNode);
+    DeBruijnEdge * edgeAwayFromLast = lastNode->doesNodeLeadAway(newNode);
+
+    //If not strand-specific, then we also check to see if the reverse
+    //complement of the new node can be added.
+    DeBruijnEdge * revCompEdgeIntoFirst = 0;
+    DeBruijnEdge * revCompEdgeAwayFromLast = 0;
+    if (!strandSpecific)
+    {
+        revCompEdgeIntoFirst = firstNode->doesNodeLeadIn(newNode->getReverseComplement());
+        revCompEdgeAwayFromLast = lastNode->doesNodeLeadAway(newNode->getReverseComplement());
+    }
+
+    //To be successful, either:
+    // 1) exactly one of the four edge pointers should be non-null.  This
+    //    indicates the node extends a linear path.
+    // 2) there is both an edge away from the last and an edge into the first.
+    //    This indicates that the node completes a circular Path.
+    if (edgeIntoFirst == 0 && edgeAwayFromLast == 0 &&
+            revCompEdgeIntoFirst == 0 && revCompEdgeAwayFromLast == 0)
+        return false;
+
+    if (edgeIntoFirst != 0 && edgeAwayFromLast == 0 &&
+            revCompEdgeIntoFirst == 0 && revCompEdgeAwayFromLast == 0)
+    {
+        m_nodes.push_front(newNode);
+        m_startLocation = GraphLocation::startOfNode(newNode);
+        m_edges.push_front(edgeIntoFirst);
+        return true;
+    }
+
+    if (edgeIntoFirst == 0 && edgeAwayFromLast != 0 &&
+            revCompEdgeIntoFirst == 0 && revCompEdgeAwayFromLast == 0)
+    {
+        m_nodes.push_back(newNode);
+        m_endLocation = GraphLocation::endOfNode(newNode);
+        m_edges.push_back(edgeAwayFromLast);
+        return true;
+    }
+
+    if (edgeIntoFirst == 0 && edgeAwayFromLast == 0 &&
+            revCompEdgeIntoFirst != 0 && revCompEdgeAwayFromLast == 0)
+    {
+        newNode = newNode->getReverseComplement();
+        m_nodes.push_front(newNode);
+        m_startLocation = GraphLocation::startOfNode(newNode);
+        m_edges.push_front(revCompEdgeIntoFirst);
+        return true;
+    }
+
+    if (edgeIntoFirst == 0 && edgeAwayFromLast == 0 &&
+            revCompEdgeIntoFirst == 0 && revCompEdgeAwayFromLast != 0)
+    {
+        newNode = newNode->getReverseComplement();
+        m_nodes.push_back(newNode);
+        m_endLocation = GraphLocation::endOfNode(newNode);
+        m_edges.push_back(revCompEdgeAwayFromLast);
+        return true;
+    }
+
+    if (edgeIntoFirst != 0 && edgeAwayFromLast != 0 &&
+            revCompEdgeIntoFirst == 0 && revCompEdgeAwayFromLast == 0)
+    {
+        m_edges.push_back(edgeAwayFromLast);
+        m_nodes.push_back(newNode);
+        m_edges.push_back(edgeIntoFirst);
+        return true;
+    }
+
+    if (edgeIntoFirst == 0 && edgeAwayFromLast == 0 &&
+            revCompEdgeIntoFirst != 0 && revCompEdgeAwayFromLast != 0)
+    {
+        m_edges.push_back(revCompEdgeAwayFromLast);
+        m_nodes.push_back(newNode->getReverseComplement());
+        m_edges.push_back(revCompEdgeIntoFirst);
+        return true;
+    }
+
+    //If the code got here, then there are multiple ways of adding the node, so
+    //we fail.
+    return false;
+}
+
+
+//This function looks to see if there are other edges connecting path nodes
+//that aren't in the list of path edges.  If so, it returns true.
+//This is used to check whether a Path is ambiguous or node.
+bool Path::checkForOtherEdges()
+{
+    //First compile a list of all edges which connect any
+    //node in the Path to any other node in the Path.
+    QList<DeBruijnEdge *> allConnectingEdges;
+    for (int i = 0; i < m_nodes.size(); ++i)
+    {
+        DeBruijnNode * startingNode = m_nodes[i];
+        const std::vector<DeBruijnEdge *> * startingNodeEdges = startingNode->getEdgesPointer();
+        for (int j = 0; j < m_nodes.size(); ++j)
+        {
+            DeBruijnNode * endingNode = m_nodes[j];
+            for (size_t k = 0; k < startingNodeEdges->size(); ++k)
+            {
+                DeBruijnEdge * edge = (*startingNodeEdges)[k];
+                if (edge->getStartingNode() == startingNode &&
+                        edge->getEndingNode() == endingNode)
+                    allConnectingEdges.push_back(edge);
+            }
+        }
+    }
+
+    //If this list of edges is greater than the number of edges in the path,
+    //then other edges exist.
+    return allConnectingEdges.size() > m_edges.size();
+}
+
+
+
+
+//This function extracts the sequence for the whole path.  It uses the overlap
+//value in the edges to remove sequences that are duplicated at the end of one
+//node and the start of the next.
+QByteArray Path::getPathSequence() const
+{
+    if (m_nodes.empty())
+        return "";
+
+    QByteArray sequence;
+    QByteArray firstNodeSequence = m_nodes[0]->getSequence();
+
+    //If the path is circular, we trim the overlap from the first node.
+    if (isCircular())
+    {
+        int overlap = m_edges.back()->getOverlap();
+        if (overlap != 0)
+            firstNodeSequence = modifySequenceUsingOverlap(firstNodeSequence, overlap);
+        sequence += firstNodeSequence;
+    }
+
+    //If the path is linear, then we begin either with the entire first node
+    //sequence or part of it.
+    else
+    {
+        int rightChars = firstNodeSequence.length() - m_startLocation.getPosition() + 1;
+        sequence += firstNodeSequence.right(rightChars);
+    }
+
+    //The middle nodes are not affected by whether or not the path is circular
+    //or has partial node ends.
+    for (int i = 1; i < m_nodes.size(); ++i)
+    {
+        int overlap = m_edges[i-1]->getOverlap();
+        QByteArray nodeSequence = m_nodes[i]->getSequence();
+        if (overlap != 0)
+            nodeSequence = modifySequenceUsingOverlap(nodeSequence, overlap);
+        sequence += nodeSequence;
+    }
+
+    DeBruijnNode * lastNode = m_nodes.back();
+    int amountToTrimFromEnd = lastNode->getLength() - m_endLocation.getPosition();
+    sequence.chop(amountToTrimFromEnd);
+
+    return sequence;
+}
+
+
+//This function will trim bases from the start of a sequence (in the case of
+//positive overlap) or add Ns to the start (in the case of negative overlap).
+QByteArray Path::modifySequenceUsingOverlap(QByteArray sequence, int overlap) const
+{
+    if (overlap > 0)
+    {
+        int rightChars = sequence.length() - overlap;
+        if (rightChars >= 0)
+            sequence = sequence.right(rightChars);
+    }
+    else if (overlap < 0)
+        sequence = QByteArray(-overlap, 'N') + sequence;
+
+    return sequence;
+}
+
+
+int Path::getLength() const
+{
+    int length = 0;
+    for (int i = 0; i < m_nodes.size(); ++i)
+        length += m_nodes[i]->getLength();
+
+    for (int i = 0; i < m_edges.size(); ++i)
+        length -= m_edges[i]->getOverlap();
+
+    length -= m_startLocation.getPosition() - 1;
+
+    DeBruijnNode * lastNode = m_nodes.back();
+    length -= lastNode->getLength() - m_endLocation.getPosition();
+
+    return length;
+}
+
+
+QString Path::getFasta() const
+{
+    //The description line is a comma-delimited list of the nodes in the path
+    QString fasta = ">" + getString(false);
+
+    if (isCircular())
+        fasta += "(circular)";
+    fasta += "\n";
+
+    QString pathSequence = getPathSequence();
+    int charactersOnLine = 0;
+    for (int i = 0; i < pathSequence.length(); ++i)
+    {
+        fasta += pathSequence.at(i);
+        ++charactersOnLine;
+        if (charactersOnLine >= 70)
+        {
+            fasta += "\n";
+            charactersOnLine = 0;
+        }
+    }
+    fasta += "\n";
+
+    return fasta;
+}
+
+
+
+QString Path::getString(bool spaces) const
+{
+    QString output;
+    for (int i = 0; i < m_nodes.size(); ++i)
+    {
+        if (i == 0 && !m_startLocation.isAtStartOfNode())
+        {
+            output += "(" + QString::number(m_startLocation.getPosition()) + ")";
+            if (spaces)
+                output += " ";
+        }
+
+        output += m_nodes[i]->getName();
+        if (i < m_nodes.size() - 1)
+        {
+            output += ",";
+            if (spaces)
+                output += " ";
+        }
+
+        if (i == m_nodes.size() - 1 && !m_endLocation.isAtEndOfNode())
+        {
+            if (spaces)
+                output += " ";
+            output += "(" + QString::number(m_endLocation.getPosition()) + ")";
+        }
+    }
+    return output;
+}
+
+
+//This function tests whether the last node in the path leads into the first.
+bool Path::isCircular() const
+{
+    if (isEmpty())
+        return false;
+    if (m_edges.empty())
+        return false;
+
+    //A circular path should have the same number of nodes and edges.
+    if (m_nodes.size() != m_edges.size())
+        return false;
+
+    DeBruijnEdge * lastEdge = m_edges.back();
+    DeBruijnNode * firstNode = m_nodes.front();
+    DeBruijnNode * lastNode = m_nodes.back();
+
+    return (lastEdge->getStartingNode() == lastNode &&
+            lastEdge->getEndingNode() == firstNode);
+}
+
+
+
+//These functions test whether the specified node could be added to
+//the end/front of the path to form a larger valid path.
+//If so, they set the path pointed to by extendedPath to equal the new, larger
+//path.
+bool Path::canNodeFitOnEnd(DeBruijnNode * node, Path * extendedPath) const
+{
+    if (isEmpty())
+    {
+        QList<DeBruijnNode *> nodeList;
+        nodeList.push_back(node);
+        *extendedPath = Path::makeFromOrderedNodes(nodeList, false);
+        return true;
+    }
+    if (isCircular())
+        return false;
+
+    DeBruijnNode * lastNode = m_nodes.back();
+    const std::vector<DeBruijnEdge *> * lastNodeEdges = lastNode->getEdgesPointer();
+    for (size_t i = 0; i < lastNodeEdges->size(); ++i)
+    {
+        DeBruijnEdge * edge = (*lastNodeEdges)[i];
+        if (edge->getStartingNode() == lastNode && edge->getEndingNode() == node)
+        {
+            *extendedPath = *this;
+            extendedPath->m_edges.push_back(edge);
+            extendedPath->m_nodes.push_back(node);
+            extendedPath->m_endLocation = GraphLocation::endOfNode(node);
+            return true;
+        }
+    }
+
+    return false;
+}
+
+bool Path::canNodeFitAtStart(DeBruijnNode * node, Path * extendedPath) const
+{
+    if (isEmpty())
+    {
+        QList<DeBruijnNode *> nodeList;
+        nodeList.push_back(node);
+        *extendedPath = Path::makeFromOrderedNodes(nodeList, false);
+        return true;
+    }
+    if (isCircular())
+        return false;
+
+    DeBruijnNode * firstNode = m_nodes.front();
+    const std::vector<DeBruijnEdge *> * firstNodeEdges = firstNode->getEdgesPointer();
+    for (size_t i = 0; i < firstNodeEdges->size(); ++i)
+    {
+        DeBruijnEdge * edge = (*firstNodeEdges)[i];
+        if (edge->getStartingNode() == node && edge->getEndingNode() == firstNode)
+        {
+            *extendedPath = *this;
+            extendedPath->m_edges.push_front(edge);
+            extendedPath->m_nodes.push_front(node);
+            extendedPath->m_startLocation = GraphLocation::startOfNode(node);
+            return true;
+        }
+    }
+
+    return false;
+}
+
+
+//This function builds all possible paths between the given start and end,
+//within the given restrictions.
+QList<Path> Path::getAllPossiblePaths(GraphLocation startLocation,
+                                      GraphLocation endLocation,
+                                      int nodeSearchDepth,
+                                      int minDistance, int maxDistance)
+{
+    QList<Path> finishedPaths;
+    QList<Path> unfinishedPaths;
+
+    Path startPath;
+    startPath.addNode(startLocation.getNode(), true, false);
+    startPath.m_startLocation = startLocation;
+    startPath.m_endLocation = GraphLocation::endOfNode(startLocation.getNode());
+    unfinishedPaths.push_back(startPath);
+
+    for (int i = 0; i <= nodeSearchDepth; ++i)
+    {
+        QApplication::processEvents();
+
+        //Look at each of the unfinished paths to see if they end with the end
+        //node.  If so, see if it has the appropriate length.
+        //If it does, it will go into the final returned list.
+        //If it doesn't and it's over length, then it will be removed.
+        QList<Path>::iterator j = unfinishedPaths.begin();
+        while (j != unfinishedPaths.end())
+        {
+            DeBruijnNode * lastNode = (*j).m_nodes.back();
+            if (lastNode == endLocation.getNode())
+            {
+                Path potentialFinishedPath = *j;
+                potentialFinishedPath.m_endLocation = endLocation;
+                int length = potentialFinishedPath.getLength();
+                if (length >= minDistance && length <= maxDistance)
+                    finishedPaths.push_back(potentialFinishedPath);
+                ++j;
+            }
+            else
+            {
+                if ((*j).getLength() > maxDistance)
+                    j = unfinishedPaths.erase(j);
+                else
+                    ++j;
+            }
+        }
+
+        //Make new unfinished paths by extending each of the paths.
+        QList<Path> newUnfinishedPaths;
+        for (int j = 0; j < unfinishedPaths.size(); ++j)
+            newUnfinishedPaths.append(unfinishedPaths[j].extendPathInAllPossibleWays());
+        unfinishedPaths = newUnfinishedPaths;
+    }
+
+    return finishedPaths;
+}
+
+
+//This function takes the current path and extends it in all possible ways by
+//adding one more node, then returning a list of the new paths.  How many paths
+//it returns depends on the number of edges leaving the last node in the path.
+QList<Path> Path::extendPathInAllPossibleWays() const
+{
+    QList<Path> returnList;
+
+    if (isEmpty())
+        return returnList;
+
+    //Since circular paths don't really have an end to extend, this function
+    //doesn't work for them.
+    if (isCircular())
+        return returnList;
+
+    DeBruijnNode * lastNode = m_nodes.back();
+    std::vector<DeBruijnEdge *> nextEdges = lastNode->getLeavingEdges();
+    for (size_t i = 0; i < nextEdges.size(); ++i)
+    {
+        DeBruijnEdge * nextEdge = nextEdges[i];
+        DeBruijnNode * nextNode = nextEdge->getEndingNode();
+
+        Path newPath(*this);
+        newPath.m_edges.push_back(nextEdge);
+        newPath.m_nodes.push_back(nextNode);
+        newPath.m_endLocation = GraphLocation::endOfNode(nextNode);
+
+        returnList.push_back(newPath);
+    }
+
+    return returnList;
+}
+
+
+
+double Path::getMeanDepth() const
+{
+    long double depthTimesLengthSum = 0.0;
+    int nodeLengthTotal = 0;
+    for (int i = 0; i < m_nodes.size(); ++i)
+    {
+        DeBruijnNode * node = m_nodes[i];
+        depthTimesLengthSum += node->getDepth() * node->getLength();
+        nodeLengthTotal += node->getLength();
+    }
+
+    return depthTimesLengthSum / nodeLengthTotal;
+}
+
+
+
+bool Path::operator==(Path const &other) const
+{
+    return (m_nodes == other.m_nodes &&
+            m_startLocation == other.m_startLocation &&
+            m_endLocation == other.m_endLocation);
+}
+
+
+bool Path::haveSameNodes(Path other) const
+{
+    return (m_nodes == other.m_nodes);
+}
+
+
+
+//This function checks to see if this path is actually a sub-path (i.e.
+//entirely contained within) the other given path.
+//It ignores start/end type and position, looking only at the nodes.
+//If the two paths have the same nodes, it will return false.
+bool Path::hasNodeSubset(Path other) const
+{
+    //To contain this path, the other path should be have a larger number of
+    //nodes.
+    int nodeCountDifference = other.m_nodes.size() - m_nodes.size();
+    if (nodeCountDifference <= 0)
+        return false;
+    
+    //If the paths have the same number of nodes, check to see if they are
+    //identical.
+    if (nodeCountDifference == 0)
+        return (m_nodes == other.m_nodes);
+    
+    //If the code got here, then the other path has more nodes than this path.
+    //We now see if we can find an ordered set of nodes in the other path that
+    //matches this path's nodes.
+    for (int i = 0; i <= nodeCountDifference; ++i)
+    {
+        QList<DeBruijnNode *> otherPathNodeSubset = other.m_nodes.mid(i, m_nodes.size());
+        if (m_nodes == otherPathNodeSubset)
+            return true;
+    }
+    
+    return false;
+}
+
+
+
+void Path::extendPathToIncludeEntirityOfNodes()
+{
+    if (m_nodes.empty())
+        return;
+
+    m_startLocation = GraphLocation::startOfNode(m_nodes.front());
+    m_endLocation = GraphLocation::endOfNode(m_nodes.back());
+}
+
+
+bool Path::containsNode(DeBruijnNode * node) const
+{
+    return m_nodes.contains(node);
+}
+
+bool Path::containsEntireNode(DeBruijnNode * node) const
+{
+    if (m_nodes.empty())
+        return false;
+
+    if (m_nodes.size() == 1) {
+        if (m_nodes.front() != node)
+            return false;
+        return m_startLocation.isAtStartOfNode() && m_endLocation.isAtEndOfNode();
+    }
+
+    if (m_nodes.front() == node && m_startLocation.isAtStartOfNode())
+        return true;
+
+    if (m_nodes.back() == node && m_endLocation.isAtEndOfNode())
+        return true;
+
+    for (int i = 1; i < m_nodes.size() - 1; ++i)
+    {
+        if (m_nodes[i] == node)
+            return true;
+    }
+
+    return false;
+}
+
+
+
+
+bool Path::isInMiddleOfPath(DeBruijnNode * node) const
+{
+    return containsNode(node) && !isStartingNode(node) && !isEndingNode(node);
+}
+
+
+//This function counts the number of times the node is in the path, not
+//counting the first or last nodes.
+int Path::numberOfOccurrencesInMiddleOfPath(DeBruijnNode * node) const
+{
+    int count = 0;
+    for (int i = 1; i < m_nodes.size() - 1; ++i)
+    {
+        if (m_nodes[i] == node)
+            ++count;
+    }
+    return count;
+}
+
+bool Path::isStartingNode(DeBruijnNode * node) const
+{
+    if (m_nodes.empty())
+        return false;
+    return m_nodes.front() == node;
+}
+
+bool Path::isEndingNode(DeBruijnNode * node) const
+{
+    if (m_nodes.empty())
+        return false;
+    return m_nodes.back() == node;
+}
+
+
+double Path::getStartFraction() const
+{
+    if (m_nodes.empty())
+        return 0.0;
+
+    int firstNodeLength = m_nodes.front()->getLength();
+    if (firstNodeLength == 0)
+        return 0.0;
+
+    return double(m_startLocation.getPosition() - 1) / firstNodeLength;
+}
+
+double Path::getEndFraction() const
+{
+    if (m_nodes.empty())
+        return 1.0;
+
+    int lastNodeLength = m_nodes.back()->getLength();
+    if (lastNodeLength == 0)
+        return 1.0;
+
+    return double(m_endLocation.getPosition()) / lastNodeLength;
+}
+
+
+int Path::getNodeCount() const
+{
+    return m_nodes.size();
+}
diff --git a/graph/path.h b/graph/path.h
new file mode 100644
index 0000000..1b7df00
--- /dev/null
+++ b/graph/path.h
@@ -0,0 +1,97 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef PATH_H
+#define PATH_H
+
+#include <QByteArray>
+#include <QList>
+#include <vector>
+#include <QString>
+#include <QStringList>
+#include "../program/globals.h"
+#include "graphlocation.h"
+
+class DeBruijnNode;
+class DeBruijnEdge;
+
+class Path
+{
+public:
+    //CREATORS
+    Path() {}
+    static Path makeFromUnorderedNodes(QList<DeBruijnNode *> nodes,
+                                       bool strandSpecific);
+    static Path makeFromUnorderedNodes(std::vector<DeBruijnNode *> nodes,
+                                       bool strandSpecific);
+    static Path makeFromOrderedNodes(QList<DeBruijnNode *> nodes,
+                                     bool circular);
+    static Path makeFromString(QString pathString, bool circular,
+                               QString * pathStringFailure);
+
+    //ACCESSORS
+    QList<DeBruijnNode *> getNodes() const {return m_nodes;}
+    QList<DeBruijnEdge *> getEdges() const {return m_edges;}
+    bool isEmpty() const {return m_nodes.empty();}
+    bool isCircular() const;
+    bool haveSameNodes(Path other) const;
+    bool hasNodeSubset(Path other) const;
+    QByteArray getPathSequence() const;
+    QString getFasta() const;
+    QString getString(bool spaces) const;
+    int getLength() const;
+    QList<Path> extendPathInAllPossibleWays() const;
+    bool canNodeFitOnEnd(DeBruijnNode * node, Path * extendedPath) const;
+    bool canNodeFitAtStart(DeBruijnNode * node, Path * extendedPath) const;
+    double getMeanDepth() const;
+    bool containsNode(DeBruijnNode * node) const;
+    bool containsEntireNode(DeBruijnNode * node) const;
+    bool isInMiddleOfPath(DeBruijnNode * node) const;
+    int numberOfOccurrencesInMiddleOfPath(DeBruijnNode * node) const;
+    bool isStartingNode(DeBruijnNode * node) const;
+    bool isEndingNode(DeBruijnNode * node) const;
+    double getStartFraction() const;
+    double getEndFraction() const;
+    int getNodeCount() const;
+    GraphLocation getStartLocation() const {return m_startLocation;}
+    GraphLocation getEndLocation() const {return m_endLocation;}
+    bool operator==(Path const &other) const;
+
+    //MODIFERS
+    bool addNode(DeBruijnNode * newNode, bool strandSpecific, bool makeCircularIfPossible);
+    void extendPathToIncludeEntirityOfNodes();
+
+    //STATIC
+    static QList<Path> getAllPossiblePaths(GraphLocation startLocation,
+                                           GraphLocation endLocation,
+                                           int nodeSearchDepth,
+                                           int minDistance, int maxDistance);
+
+private:
+    GraphLocation m_startLocation;
+    GraphLocation m_endLocation;
+    QList<DeBruijnNode *> m_nodes;
+    QList<DeBruijnEdge *> m_edges;
+
+    void buildUnambiguousPathFromNodes(QList<DeBruijnNode *> nodes,
+                                       bool strandSpecific);
+    QByteArray modifySequenceUsingOverlap(QByteArray sequence, int overlap) const;
+    bool checkForOtherEdges();
+};
+
+#endif // PATH_H
diff --git a/graph/querydistance.h b/graph/querydistance.h
new file mode 100644
index 0000000..8ef2624
--- /dev/null
+++ b/graph/querydistance.h
@@ -0,0 +1,39 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef QUERYDISTANCE_H
+#define QUERYDISTANCE_H
+
+#include "path.h"
+#include <QString>
+
+class QueryDistance
+{
+public:
+    QueryDistance(Path path, QString orientation);
+
+    Path m_path;
+    int m_distance;
+    QString m_orientation;
+
+
+    bool operator<(QueryDistance const &other) const;
+    bool operator==(QueryDistance const &other) const;
+};
+
+#endif // QUERYDISTANCE_H
diff --git a/images/BLAST.png b/images/BLAST.png
new file mode 100755
index 0000000..27d913f
Binary files /dev/null and b/images/BLAST.png differ
diff --git a/images/application.icns b/images/application.icns
new file mode 100644
index 0000000..8d2cd14
Binary files /dev/null and b/images/application.icns differ
diff --git a/images/application.ico b/images/application.ico
new file mode 100644
index 0000000..3e479b8
Binary files /dev/null and b/images/application.ico differ
diff --git a/images/bring-to-front.png b/images/bring-to-front.png
new file mode 100755
index 0000000..f04e009
Binary files /dev/null and b/images/bring-to-front.png differ
diff --git a/images/contiguity-contiguous.png b/images/contiguity-contiguous.png
new file mode 100755
index 0000000..41809a1
Binary files /dev/null and b/images/contiguity-contiguous.png differ
diff --git a/images/contiguity-maybe_contiguous.png b/images/contiguity-maybe_contiguous.png
new file mode 100755
index 0000000..2bd3b2e
Binary files /dev/null and b/images/contiguity-maybe_contiguous.png differ
diff --git a/images/contiguity-not_contiguous.png b/images/contiguity-not_contiguous.png
new file mode 100755
index 0000000..0f8efdb
Binary files /dev/null and b/images/contiguity-not_contiguous.png differ
diff --git a/images/contiguity.png b/images/contiguity.png
new file mode 100755
index 0000000..faad727
Binary files /dev/null and b/images/contiguity.png differ
diff --git a/images/copy.png b/images/copy.png
new file mode 100755
index 0000000..5311bec
Binary files /dev/null and b/images/copy.png differ
diff --git a/images/cross-128.png b/images/cross-128.png
new file mode 100644
index 0000000..85cf5c9
Binary files /dev/null and b/images/cross-128.png differ
diff --git a/images/exit-256.png b/images/exit-256.png
new file mode 100644
index 0000000..c0d8b14
Binary files /dev/null and b/images/exit-256.png differ
diff --git a/images/icon.png b/images/icon.png
new file mode 100644
index 0000000..050f789
Binary files /dev/null and b/images/icon.png differ
diff --git a/images/images.qrc b/images/images.qrc
new file mode 100644
index 0000000..1842319
--- /dev/null
+++ b/images/images.qrc
@@ -0,0 +1,26 @@
+<RCC>
+    <qresource prefix="/icons">
+        <file>icon.png</file>
+        <file>load-256.png</file>
+        <file>settings-256.png</file>
+        <file>tick-128.png</file>
+        <file>information-256.png</file>
+        <file>save-256.png</file>
+        <file>exit-256.png</file>
+        <file>information-256-inactive.png</file>
+        <file>BLAST.png</file>
+        <file>bring-to-front.png</file>
+        <file>contiguity.png</file>
+        <file>contiguity-contiguous.png</file>
+        <file>contiguity-maybe_contiguous.png</file>
+        <file>contiguity-not_contiguous.png</file>
+        <file>invert-selection.png</file>
+        <file>select-all.png</file>
+        <file>select-none.png</file>
+        <file>copy.png</file>
+        <file>zoom.png</file>
+        <file>cross-128.png</file>
+        <file>specify-path.png</file>
+        <file>ncbi-256.png</file>
+    </qresource>
+</RCC>
diff --git a/images/information-256-inactive.png b/images/information-256-inactive.png
new file mode 100644
index 0000000..dc5c5dc
Binary files /dev/null and b/images/information-256-inactive.png differ
diff --git a/images/information-256.png b/images/information-256.png
new file mode 100644
index 0000000..183ab48
Binary files /dev/null and b/images/information-256.png differ
diff --git a/images/invert-selection.png b/images/invert-selection.png
new file mode 100755
index 0000000..81cf114
Binary files /dev/null and b/images/invert-selection.png differ
diff --git a/images/load-256.png b/images/load-256.png
new file mode 100644
index 0000000..a5816c0
Binary files /dev/null and b/images/load-256.png differ
diff --git a/images/myapp.rc b/images/myapp.rc
new file mode 100644
index 0000000..882c3d9
--- /dev/null
+++ b/images/myapp.rc
@@ -0,0 +1 @@
+IDI_ICON1               ICON    DISCARDABLE     "application.ico"
\ No newline at end of file
diff --git a/images/ncbi-256.png b/images/ncbi-256.png
new file mode 100644
index 0000000..9823d3f
Binary files /dev/null and b/images/ncbi-256.png differ
diff --git a/images/save-256.png b/images/save-256.png
new file mode 100644
index 0000000..308eebd
Binary files /dev/null and b/images/save-256.png differ
diff --git a/images/select-all.png b/images/select-all.png
new file mode 100755
index 0000000..2a78945
Binary files /dev/null and b/images/select-all.png differ
diff --git a/images/select-none.png b/images/select-none.png
new file mode 100755
index 0000000..495b14f
Binary files /dev/null and b/images/select-none.png differ
diff --git a/images/settings-256.png b/images/settings-256.png
new file mode 100644
index 0000000..c3a092c
Binary files /dev/null and b/images/settings-256.png differ
diff --git a/images/specify-path.png b/images/specify-path.png
new file mode 100644
index 0000000..b857836
Binary files /dev/null and b/images/specify-path.png differ
diff --git a/images/tick-128.png b/images/tick-128.png
new file mode 100644
index 0000000..eaa56a8
Binary files /dev/null and b/images/tick-128.png differ
diff --git a/images/zoom.png b/images/zoom.png
new file mode 100755
index 0000000..9dcfa0e
Binary files /dev/null and b/images/zoom.png differ
diff --git a/ogdf/LICENSE.txt b/ogdf/LICENSE.txt
new file mode 100644
index 0000000..e945710
--- /dev/null
+++ b/ogdf/LICENSE.txt
@@ -0,0 +1,50 @@
+***********************************************************
+*         OGDF - The Open Graph Drawing Framework         *
+*                                                         *
+*                        LICENSE                          *
+***********************************************************
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+Version 2 or 3 as published by the Free Software Foundation
+and appearing in the files LICENSE_GPL_v2.txt and
+LICENSE_GPL_v3.txt included in the packaging of this file.
+
+In addition, as a special exception, you have permission to link
+this software with
+
+  - Tulip (http://www.tulip-software.org)
+
+  - the libraries of the COIN-OR Osi project (see
+    http://www.coin-or.org/projects/Osi.xml);
+
+  - all libraries required by Osi;
+
+  - and all LP-solver libraries directly supported by the
+    COIN-OR Osi project,
+
+and distribute executables, as long as you follow the requirements
+of the GNU General Public License in regard to all of the software
+in the executable aside from these third-party libraries.
+
+Moreover, we grant a special exception to the OGDF QML
+(https://github.com/schulzch/qml-ogdf) plugin by Christoph Schulz
+(licensed under the GNU Lesser General Public License) for linking
+OGDF and distributing the plugin under LGPL v2 or v3.
+
+See also: http://www.ogdf.net/license.html
+
+
+Third-party software:
+
+  - the ABACUS framework, licensed under the GNU GPL
+    (see http://www.informatik.uni-koeln.de/abacus/).
+    The files are located in {src,include}/ogdf/abacus.
+
+  - the COIN-OR project, licensed under the Eclipse Public License 1.0
+    (see http://www.eclipse.org/legal/epl-v10.html).
+    The files are located in {src,include}/coin.
+
+  - the GTest framework, licensed under the 3-clause BSD license
+    (see test/gtest/gtest.h header).
+    The files are located in test/gtest.
diff --git a/ogdf/basic/AdjEntryArray.h b/ogdf/basic/AdjEntryArray.h
new file mode 100644
index 0000000..36a85f1
--- /dev/null
+++ b/ogdf/basic/AdjEntryArray.h
@@ -0,0 +1,225 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of AdjEntryArray class.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_ADJ_ENTRY_ARRAY_H
+#define OGDF_ADJ_ENTRY_ARRAY_H
+
+
+
+#include "Graph.h"
+
+
+namespace ogdf {
+
+
+//! Abstract base class for adjacency entry arrays.
+/**
+ * Defines the interface for event handling used by the Graph class.
+ * Use the parameterized class AdjEntryArray for creating adjacency arrays.
+ */
+class AdjEntryArrayBase {
+	/**
+	 * Pointer to list element in the list of all registered adjacency
+	 * entry arrays which references this array.
+	 */
+	ListIterator<AdjEntryArrayBase*> m_it;
+
+public:
+	const Graph *m_pGraph; //!< The associated graph.
+
+	//! Initializes an adjacency entry array not associated with a graph.
+	AdjEntryArrayBase() : m_pGraph(0) { }
+	//! Initializes an adjacency entry array associated with \a pG.
+	AdjEntryArrayBase(const Graph *pG) : m_pGraph(pG) {
+		if(pG) m_it = pG->registerArray(this);
+	}
+
+	// destructor, unregisters the array
+	virtual ~AdjEntryArrayBase() {
+		if (m_pGraph) m_pGraph->unregisterArray(m_it);
+	}
+
+	// event interface used by Graph
+	//! Virtual function called when table size has to be enlarged.
+	virtual void enlargeTable(int newTableSize) = 0;
+	//! Virtual function called when table has to be reinitialized.
+	virtual void reinit(int initTableSize) = 0;
+	//! Virtual function called when array is disconnected from the graph.
+	virtual void disconnect() = 0;
+	//! Virtual function called when the index of an adjacency entry is changed.
+	virtual void resetIndex(int newIndex, int oldIndex) = 0;
+
+	//! Associates the array with a new graph.
+	void reregister(const Graph *pG) {
+		if (m_pGraph) m_pGraph->unregisterArray(m_it);
+		if ((m_pGraph = pG) != 0) m_it = pG->registerArray(this);
+	}
+}; // class AdjEntryArrayBase
+
+
+//! Dynamic arrays indexed with adjacency entries.
+/**
+ * Adjacency entry arrays represent a mapping from adjacency entries to data of type \a T.
+ * They adjust their table size automatically when the graph grows.
+ *
+ * @tparam T is the element type.
+ */
+template<class T> class AdjEntryArray : private Array<T>, protected AdjEntryArrayBase {
+	T m_x; //!< The default value for array elements.
+
+public:
+	//! Constructs an empty adjacency entry array associated with no graph.
+	AdjEntryArray() : Array<T>(), AdjEntryArrayBase() { }
+	//! Constructs an adjacency entry array associated with \a G.
+	AdjEntryArray(const Graph &G) : Array<T>(G.adjEntryArrayTableSize()), AdjEntryArrayBase(&G) { }
+	//! Constructs an adjacency entry array associated with \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param x is the default value for all array elements.
+	 */
+	AdjEntryArray(const Graph &G, const T &x) :
+		Array<T>(0,G.adjEntryArrayTableSize()-1,x), AdjEntryArrayBase(&G), m_x(x) { }
+	//! Constructs an adjacency entry array that is a copy of \a A.
+	/**
+	 * Associates the array with the same graph as \a A and copies all elements.
+	 */
+	AdjEntryArray(const AdjEntryArray<T> &A) : Array<T>(A), AdjEntryArrayBase(A.m_pGraph), m_x(A.m_x) { }
+
+	//! Returns true iff the array is associated with a graph.
+	bool valid() const { return (Array<T>::low() <= Array<T>::high()); }
+
+	//! Returns a reference to the element with index \a adj.
+	const T &operator[](adjEntry adj) const {
+		OGDF_ASSERT(adj != 0 && adj->graphOf() == m_pGraph)
+		return Array<T>::operator [](adj->index());
+	}
+
+	//! Returns a reference to the element with index \a adj.
+	T &operator[](adjEntry adj) {
+		OGDF_ASSERT(adj != 0 && adj->graphOf() == m_pGraph)
+		return Array<T>::operator [](adj->index());
+	}
+
+	//! Returns a reference the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for an adjacency
+	 * entry in the associated graph!
+	 */
+	const T &operator[](int index) const {
+		return Array<T>::operator [](index);
+	}
+
+	//! Returns a reference the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for an adjacency
+	 * entry in the associated graph!
+	 */
+	T &operator[](int index) {
+		return Array<T>::operator [](index);
+	}
+
+	//! Assignment operator.
+	AdjEntryArray<T> &operator=(const AdjEntryArray<T> &A) {
+		Array<T>::operator =(A);
+		m_x = A.m_x;
+		reregister(A.m_pGraph);
+		return *this;
+	}
+
+	//! Reinitializes the array. Associates the array with no graph.
+	void init() {
+		Array<T>::init(); reregister(0);
+	}
+
+	//! Reinitializes the array. Associates the array with \a G.
+	void init(const Graph &G) {
+		Array<T>::init(G.adjEntryArrayTableSize()); reregister(&G);
+	}
+
+	//! Reinitializes the array. Associates the array with \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param x is the default value.
+	 */
+	void init(const Graph &G, const T &x) {
+		Array<T>::init(0,G.adjEntryArrayTableSize()-1, m_x = x); reregister(&G);
+	}
+
+	//! Sets all array elements to \a x.
+	void fill(const T &x) {
+		int high = m_pGraph->maxAdjEntryIndex();
+		if(high >= 0)
+			Array<T>::fill(0,high,x);
+	}
+
+private:
+	virtual void enlargeTable(int newTableSize) {
+		Array<T>::grow(newTableSize-Array<T>::size(),m_x);
+	}
+
+	virtual void reinit(int initTableSize) {
+		Array<T>::init(0,initTableSize-1,m_x);
+	}
+
+	virtual void resetIndex(int newIndex, int oldIndex) {
+		Array<T>::operator [](newIndex) = Array<T>::operator [](oldIndex);
+	}
+
+	virtual void disconnect() {
+		Array<T>::init();
+		m_pGraph = 0;
+	}
+
+	OGDF_NEW_DELETE
+
+}; // class AdjEntryArray<T>
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/Array.h b/ogdf/basic/Array.h
new file mode 100644
index 0000000..1dbcd64
--- /dev/null
+++ b/ogdf/basic/Array.h
@@ -0,0 +1,589 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of Array class and
+ * Array algorithms
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_ARRAY_H
+#define OGDF_ARRAY_H
+
+
+
+
+#include "basic.h"
+
+
+namespace ogdf {
+
+//! Iteration over all indices \a i of an array \a A.
+/**
+ * Note that the index variable \a i has to be defined prior to this macro
+ * (just as for \c #forall_edges, etc.).
+ * <h3>Example</h3>
+ *
+ *   \code
+ *   Array<double> A;
+ *   ...
+ *   int i;
+ *   forall_arrayindices(i, A) {
+ *     cout << A[i] << endl;
+ *   }
+ *   \endcode
+ *
+ *   Note that this code is equivalent to the following tedious long version
+ *
+ *   \code
+ *   Array<double> A;
+ *   ...
+ *   int i;
+ *   for(i = A.low(); i <= A.high(); ++i) {
+ *     cout << A[i] << endl;
+ *   }
+ *   \endcode
+ */
+#define forall_arrayindices(i, A) \
+	for(i = (A).low(); i<=(A).high(); ++i)
+
+//! Iteration over all indices \a i of an array \a A, in reverse order.
+/**
+ * Note that the index variable \a i has to be defined prior to this macro
+ * (just as for \c #forall_edges, etc.).
+ * See \c #forall_arrayindices for an example
+ */
+#define forall_rev_arrayindices(i, A) \
+	for(i = (A).high(); i>=(A).low(); --i)
+
+
+
+//! The parameterized class \a Array<E,INDEX> implements dynamic arrays of type \a E.
+/**
+ * @tparam E     denotes the element type.
+ * @tparam INDEX denotes the index type. The index type must be chosen such that it can
+ *               express the whole index range of the array instance, as well as its size.
+ *               The default index type is \c int, other possible types are \c short and
+ *               <code>long long</code> (on 64-bit systems).
+ */
+template<class E, class INDEX = int> class Array {
+public:
+	//! Threshold used by \a quicksort() such that insertion sort is
+	//! called for instances smaller than \a maxSizeInsertionSort.
+	enum { maxSizeInsertionSort = 40 };
+
+
+	//! Creates an array with empty index set.
+	Array() { construct(0,-1); }
+
+	//! Creates an array with index set [0..\a s-1].
+	explicit Array(INDEX s) {
+		construct(0,s-1); initialize();
+	}
+
+	//! Creates an array with index set [\a a..\a b].
+	Array(INDEX a, INDEX b) {
+		construct(a,b); initialize();
+	}
+
+	//! Creates an array with index set [\a a..\a b] and initializes each element with \a x.
+	Array(INDEX a, INDEX b, const E &x) {
+		construct(a,b); initialize(x);
+	}
+
+	//! Creates an array that is a copy of \a A.
+	Array(const Array<E> &A) {
+		copy(A);
+	}
+
+	// destruction
+	~Array() {
+		deconstruct();
+	}
+
+	//! Returns the minimal array index.
+	INDEX low() const { return m_low; }
+
+	//! Returns the maximal array index.
+	INDEX high() const { return m_high; }
+
+	//! Returns the size (number of elements) of the array.
+	INDEX size() const { return m_high - m_low + 1; }
+
+	//! Returns a pointer to the first element.
+	E *begin() { return m_pStart; }
+
+	//! Returns a pointer to the first element.
+	const E *begin() const { return m_pStart; }
+
+	//! Returns a pointer to one past the last element.
+	E *end() { return m_pStop; }
+
+	//! Returns a pointer to one past the last element.
+	const E *end() const { return m_pStop; }
+
+	//! Returns a pointer to the last element.
+	E *rbegin() { return m_pStop-1; }
+
+	//! Returns a pointer to the last element.
+	const E *rbegin() const { return m_pStop-1; }
+
+	//! Returns a pointer to one before the first element.
+	E *rend() { return m_pStart-1; }
+
+	//! Returns a pointer to one before the first element.
+	const E *rend() const { return m_pStart-1; }
+
+	//! Returns a reference to the element at position \a i.
+	const E &operator[](INDEX i) const {
+		OGDF_ASSERT(m_low <= i && i <= m_high)
+		return m_vpStart[i];
+	}
+
+	//! Returns a reference to the element at position \a i.
+	E &operator[](INDEX i) {
+		OGDF_ASSERT(m_low <= i && i <= m_high)
+		return m_vpStart[i];
+	}
+
+	//! Swaps the elements at position \a i and \a j.
+	void swap(INDEX i, INDEX j) {
+		OGDF_ASSERT(m_low <= i && i <= m_high)
+		OGDF_ASSERT(m_low <= j && j <= m_high)
+
+		std::swap(m_vpStart[i], m_vpStart[j]);
+	}
+
+	//! Reinitializes the array to an array with empty index set.
+	void init() {
+		//init(0,-1);
+		deconstruct();
+		construct(0,-1);
+	}
+
+	//! Reinitializes the array to an array with index set [0..\a s-1].
+	/**
+	 * Notice that the elements contained in the array get discarded!
+	 */
+	void init(INDEX s) { init(0,s-1); }
+
+	//! Reinitializes the array to an array with index set [\a a..\a b].
+	/**
+	 * Notice that the elements contained in the array get discarded!
+	 */
+	void init(INDEX a, INDEX b) {
+		deconstruct();
+		construct(a,b);
+		initialize();
+	}
+
+	//! Reinitializes the array to an array with index set [\a a..\a b] and sets all entries to \a x.
+	void init(INDEX a, INDEX b, const E &x) {
+		deconstruct();
+		construct(a,b);
+		initialize(x);
+	}
+
+	//! Assignment operator.
+	Array<E,INDEX> &operator=(const Array<E,INDEX> &array2) {
+		deconstruct();
+		copy(array2);
+		return *this;
+	}
+
+	//! Sets all elements to \a x.
+	void fill(const E &x) {
+		E *pDest = m_pStop;
+		while(pDest > m_pStart)
+			*--pDest = x;
+	}
+
+	//! Sets elements in the intervall [\a i..\a j] to \a x.
+	void fill(INDEX i, INDEX j, const E &x) {
+		OGDF_ASSERT(m_low <= i && i <= m_high)
+		OGDF_ASSERT(m_low <= j && j <= m_high)
+
+		E *pI = m_vpStart + i, *pJ = m_vpStart + j+1;
+		while(pJ > pI)
+			*--pJ = x;
+	}
+
+	//! Enlarges the array by \a add elements and sets new elements to \a x.
+	/**
+	 *  Note: address of array entries in memory may change!
+	 * @param add is the number of additional elements; \a add can be negative in order to shrink the array.
+	 * @param x is the inital value of all new elements.
+	 */
+	void grow(INDEX add, const E &x);
+
+	//! Enlarges the array by \a add elements.
+	/**
+	 *  Note: address of array entries in memory may change!
+	 * @param add is the number of additional elements; \a add can be negative in order to shrink the array.
+	 */
+	void grow(INDEX add);
+
+	//! Randomly permutes the subarray with index set [\a l..\a r].
+	void permute (INDEX l, INDEX r);
+
+	//! Randomly permutes the array.
+	void permute() {
+		permute(low(), high());
+	}
+
+	//! Performs a binary search for element \a x.
+	/**
+	 * \pre The array must be sorted!
+	 * \return the index of the found element, and low()-1 if not found.
+	 */
+	inline int binarySearch (const E& x) const {
+		return binarySearch(x, StdComparer<E>());
+	}
+
+	//! Performs a binary search for element \a x with comparer \a comp.
+	/**
+	 * \pre The array must be sorted according to \a comp!
+	 * \return the index of the found element, and low()-1 if not found.
+	 */
+	template<class COMPARER>
+	int binarySearch(const E& e, const COMPARER &comp) const {
+		if(size() < 2) {
+			if(size() == 1 && comp.equal(e, m_vpStart[low()]))
+				return low();
+			return low()-1;
+		}
+		int l = low();
+		int r = high();
+		do {
+			int m = (r + l)/2;
+			if(comp.greater(e, m_vpStart[m]))
+				l = m+1;
+			else
+				r = m;
+		} while(r>l);
+		return comp.equal(e, m_vpStart[l]) ? l : low()-1;
+	}
+
+	//! Performs a linear search for element \a x.
+	/**
+	 * Warning: This method has linear running time!
+	 * Note that the linear search runs from back to front.
+	 * \return the index of the found element, and low()-1 if not found.
+	 */
+	inline int linearSearch (const E& e) const {
+		int i;
+		for(i = size(); i-->0;)
+			if(e == m_pStart[i]) break;
+		return i+low();	}
+
+	//! Performs a linear search for element \a x with comparer \a comp.
+	/**
+	 * Warning: This method has linear running time!
+	 * Note that the linear search runs from back to front.
+	 * \return the index of the found element, and low()-1 if not found.
+	 */
+	template<class COMPARER>
+	int linearSearch(const E& e, const COMPARER &comp) const {
+		int i;
+		for(i = size(); i-->0;)
+			if(comp.equal(e, m_pStart[i])) break;
+		return i+low();
+	}
+
+	//! Sorts array using Quicksort.
+	inline void quicksort() {
+		quicksort(StdComparer<E>());
+	}
+
+	//! Sorts subarray with index set [\a l..\a r] using Quicksort.
+	inline void quicksort(INDEX l, INDEX r) {
+		quicksort(l, r, StdComparer<E>());
+	}
+
+	//! Sorts array using Quicksort and a user-defined comparer \a comp.
+	/**
+	 * @param comp is a user-defined comparer; \a C must be a class providing a \a less(x,y) method.
+	 */
+	template<class COMPARER>
+	inline void quicksort(const COMPARER &comp) {
+		if(low() < high())
+			quicksortInt(m_pStart,m_pStop-1,comp);
+	}
+
+	//! Sorts the subarray with index set [\a l..\a r] using Quicksort and a user-defined comparer \a comp.
+	/**
+	 * @param l is the left-most position in the range to be sorted.
+	 * @param r is the right-most position in the range to be sorted.
+	 * @param comp is a user-defined comparer; \a C must be a class providing a \a less(x,y) method.
+	 */
+	template<class COMPARER>
+	void quicksort(INDEX l, INDEX r, const COMPARER &comp) {
+		OGDF_ASSERT(low() <= l && l <= high())
+		OGDF_ASSERT(low() <= r && r <= high())
+		if(l < r)
+			quicksortInt(m_vpStart+l,m_vpStart+r,comp);
+	}
+
+	template<class F, class I> friend class ArrayBuffer; // for efficient ArrayBuffer::compact-method
+
+private:
+	E *m_vpStart; //!< The virtual start of the array (address of A[0]).
+	E *m_pStart;  //!< The real start of the array (address of A[m_low]).
+	E *m_pStop;   //!< Successor of last element (address of A[m_high+1]).
+	INDEX m_low;    //!< The lowest index.
+	INDEX m_high;   //!< The highest index.
+
+	//! Allocates new array with index set [\a a..\a b].
+	void construct(INDEX a, INDEX b);
+
+	//! Initializes elements with default constructor.
+	void initialize();
+
+	//! Initializes elements with \a x.
+	void initialize(const E &x);
+
+	//! Deallocates array.
+	void deconstruct();
+
+	//! Constructs a new array which is a copy of \a A.
+	void copy(const Array<E,INDEX> &A);
+
+	//! Internal Quicksort implementation with comparer template.
+	template<class COMPARER>
+	static void quicksortInt(E *pL, E *pR, const COMPARER &comp) {
+		size_t s = pR-pL;
+
+		// use insertion sort for small instances
+		if (s < maxSizeInsertionSort) {
+			for (E *pI = pL+1; pI <= pR; pI++) {
+				E v = *pI;
+				E *pJ = pI;
+				while (--pJ >= pL && comp.less(v,*pJ)) {
+					*(pJ+1) = *pJ;
+				}
+				*(pJ+1) = v;
+			}
+			return;
+		}
+
+		E *pI = pL, *pJ = pR;
+		E x = *(pL+(s>>1));
+
+		do {
+			while (comp.less(*pI,x)) pI++;
+			while (comp.less(x,*pJ)) pJ--;
+			if (pI <= pJ) std::swap(*pI++,*pJ--);
+		} while (pI <= pJ);
+
+		if (pL < pJ) quicksortInt(pL,pJ,comp);
+		if (pI < pR) quicksortInt(pI,pR,comp);
+	}
+
+	OGDF_NEW_DELETE
+}; // class Array
+
+
+
+
+// enlarges array by add elements and sets new elements to x
+template<class E, class INDEX>
+void Array<E,INDEX>::grow(INDEX add, const E &x)
+{
+	INDEX sOld = size(), sNew = sOld + add;
+
+	// expand allocated memory block
+	if(m_pStart != 0) {
+		E *p = (E *)realloc(m_pStart, sNew*sizeof(E));
+		if(p == 0) OGDF_THROW(InsufficientMemoryException);
+		m_pStart = p;
+	} else {
+		m_pStart = (E *)malloc(sNew*sizeof(E));
+		if (m_pStart == 0) OGDF_THROW(InsufficientMemoryException);
+	}
+
+	m_vpStart = m_pStart-m_low;
+	m_pStop   = m_pStart+sNew;
+	m_high   += add;
+
+	// initialize new array entries
+	for (E *pDest = m_pStart+sOld; pDest < m_pStop; pDest++)
+		new (pDest) E(x);
+}
+
+// enlarges array by add elements (initialized with default constructor)
+template<class E, class INDEX>
+void Array<E,INDEX>::grow(INDEX add)
+{
+	INDEX sOld = size(), sNew = sOld + add;
+
+	// expand allocated memory block
+	if(m_pStart != 0) {
+		E *p = (E *)realloc(m_pStart, sNew*sizeof(E));
+		if(p == 0) OGDF_THROW(InsufficientMemoryException);
+		m_pStart = p;
+	} else {
+		m_pStart = (E *)malloc(sNew*sizeof(E));
+		if (m_pStart == 0) OGDF_THROW(InsufficientMemoryException);
+	}
+
+	m_vpStart = m_pStart-m_low;
+	m_pStop   = m_pStart+sNew;
+	m_high   += add;
+
+	// initialize new array entries
+	for (E *pDest = m_pStart+sOld; pDest < m_pStop; pDest++)
+		new (pDest) E;
+}
+
+template<class E, class INDEX>
+void Array<E,INDEX>::construct(INDEX a, INDEX b)
+{
+	m_low = a; m_high = b;
+	INDEX s = b-a+1;
+
+	if (s < 1) {
+		m_pStart = m_vpStart = m_pStop = 0;
+
+	} else {
+		m_pStart = (E *)malloc(s*sizeof(E));
+		if (m_pStart == 0) OGDF_THROW(InsufficientMemoryException);
+
+		m_vpStart = m_pStart - a;
+		m_pStop = m_pStart + s;
+	}
+}
+
+
+template<class E, class INDEX>
+void Array<E,INDEX>::initialize()
+{
+	E *pDest = m_pStart;
+	try {
+		for (; pDest < m_pStop; pDest++)
+			new(pDest) E;
+	} catch (...) {
+		while(--pDest >= m_pStart)
+			pDest->~E();
+		free(m_pStart);
+		throw;
+	}
+}
+
+
+template<class E, class INDEX>
+void Array<E,INDEX>::initialize(const E &x)
+{
+	E *pDest = m_pStart;
+	try {
+		for (; pDest < m_pStop; pDest++)
+			new(pDest) E(x);
+	} catch (...) {
+		while(--pDest >= m_pStart)
+			pDest->~E();
+		free(m_pStart);
+		throw;
+	}
+}
+
+
+template<class E, class INDEX>
+void Array<E,INDEX>::deconstruct()
+{
+	if (doDestruction((E*)0)) {
+		for (E *pDest = m_pStart; pDest < m_pStop; pDest++)
+			pDest->~E();
+	}
+	free(m_pStart);
+}
+
+
+template<class E, class INDEX>
+void Array<E,INDEX>::copy(const Array<E,INDEX> &array2)
+{
+	construct(array2.m_low, array2.m_high);
+
+	if (m_pStart != 0) {
+		E *pSrc = array2.m_pStop;
+		E *pDest = m_pStop;
+		while(pDest > m_pStart)
+			//*--pDest = *--pSrc;
+ 			new (--pDest) E(*--pSrc);
+	}
+}
+
+
+// permutes array a from a[l] to a[r] randomly
+template<class E, class INDEX>
+void Array<E,INDEX>::permute (INDEX l, INDEX r)
+{
+	OGDF_ASSERT(low() <= l && l <= high())
+	OGDF_ASSERT(low() <= r && r <= high())
+
+	E *pI = m_vpStart+l, *pStart = m_vpStart+l, *pStop = m_vpStart+r;
+	while(pI <= pStop)
+		std::swap(*pI++,*(pStart+randomNumber(0,r-l)));
+}
+
+
+// prints array a to output stream os using delimiter delim
+template<class E, class INDEX>
+void print(ostream &os, const Array<E,INDEX> &a, char delim = ' ')
+{
+	for (int i = a.low(); i <= a.high(); i++) {
+		if (i > a.low()) os << delim;
+		os << a[i];
+	}
+}
+
+
+// output operator
+template<class E, class INDEX>
+ostream &operator<<(ostream &os, const ogdf::Array<E,INDEX> &a)
+{
+	print(os,a);
+	return os;
+}
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/Array2D.h b/ogdf/basic/Array2D.h
new file mode 100644
index 0000000..1a64c29
--- /dev/null
+++ b/ogdf/basic/Array2D.h
@@ -0,0 +1,327 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of class Array2D which
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_ARRAY2D_H
+#define OGDF_ARRAY2D_H
+
+
+
+
+#include "basic.h"
+#include <math.h>
+
+
+namespace ogdf {
+
+
+//! The parameterized class \a Array2D<E> implements dynamic two-dimensional arrays.
+/**
+ * @tparam E denotes the element type.
+ */
+template<class E> class Array2D
+{
+public:
+	// constructors
+
+	//! Creates a two-dimensional array with empty index set.
+	Array2D() { construct(0,-1,0,-1); }
+
+	//! Creates a two-dimensional array with index set [\a a..\a b]*[\a c..\a d].
+	Array2D(int a, int b, int c, int d) {
+		construct(a,b,c,d); initialize();
+	}
+
+	//! Creates a two-dimensional array with index set [\a a..\a b]*[\a c..\a d] and initailizes all elements with \a x.
+	Array2D(int a, int b, int c, int d, const E &x) {
+		construct(a,b,c,d); initialize(x);
+	}
+
+	//! Creates a two-dimensional array that is a copy of \a A.
+	Array2D(const Array2D<E> &array2) {
+		copy(array2);
+	}
+
+	// destructor
+	 ~Array2D() {
+		 deconstruct();
+	}
+
+	//! Returns the minimal array index in dimension 1.
+	int low1() const { return m_a; }
+
+	//! Returns the maximal array index in dimension 1.
+	int high1() const { return m_b; }
+
+	//! Returns the minimal array index in dimension 2.
+	int low2() const { return m_c; }
+
+	//! Returns the maximal array index in dimension 2.
+	int high2() const { return m_d; }
+
+	//! Returns the size (number of elements) of the array.
+	int size() const { return size1() * size2(); }
+
+	//! Returns the length of the index interval (number of entries) in dimension 1.
+	int size1() const { return m_b - m_a + 1; }
+
+	//! Returns the length of the index interval (number of entries) in dimension 2.
+	int size2() const { return m_lenDim2; }
+
+	//! Returns the determinant of the matrix
+	/*! \note use only for square matrices and floating point values */
+	float det() const;
+
+	//! Returns a reference to the element with index (\a i,\a j).
+	const E &operator()(int i, int j) const {
+		OGDF_ASSERT(m_a <= i && i <= m_b && m_c <= j && j <= m_d);
+		return m_vpStart[(i-m_a)*m_lenDim2+j];
+	}
+
+	//! Returns a reference to the element with index (\a i,\a j).
+	E &operator()(int i, int j) {
+		OGDF_ASSERT(m_a <= i && i <= m_b && m_c <= j && j <= m_d);
+		return m_vpStart[(i-m_a)*m_lenDim2+j];
+	}
+
+	//! Reinitializes the array to an array with empty index set.
+	void init() { init(0,-1,0,-1); }
+
+	//! Reinitializes the array to an array with index set [\a a..\a b]*[\a c,\a d].
+	void init(int a, int b, int c, int d) {
+		deconstruct();
+		construct(a,b,c,d);
+		initialize();
+	}
+
+	//! Reinitializes the array to an array with index set [\a a..\a b]*[\a c,\a d] and initializes all entries with \a x.
+	void init(int a, int b, int c, int d, const E &x) {
+		deconstruct();
+		construct(a,b,c,d);
+		initialize(x);
+	}
+
+	//! Assignment operator.
+	Array2D<E> &operator=(const Array2D<E> &array2) {
+		deconstruct();
+		copy(array2);
+		return *this;
+	}
+
+	//! Sets all elements to \a x.
+	void fill(const E &x) {
+		E *pDest = m_pStop;
+		while(pDest > m_pStart)
+			*--pDest = x;
+	}
+
+private:
+	E   *m_vpStart; //!< The virtual start of the array (address of A[0,0]).
+	int  m_a; //!< The lowest index in dimension 1.
+	int  m_lenDim2; //!< The  number of elements in dimension 2.
+	E   *m_pStart; //!< The real start of the array (address of A[low1,low2]).
+	E   *m_pStop; //!< Successor of last element (address of A[high1,high2+1]).
+	int  m_b; //!< The highest index in dimension 1.
+	int  m_c; //!< The lowest index in dimension 2.
+	int  m_d; //!< The highest index in dimension 2.
+
+	void construct(int a, int b, int c, int d);
+
+	void initialize();
+	void initialize(const E &x);
+
+	void deconstruct();
+
+	void copy(const Array2D<E> &array2);
+
+};
+
+
+
+template<class E>
+void Array2D<E>::construct(int a, int b, int c, int d)
+{
+	m_a = a;
+	m_b = b;
+	m_c = c;
+	m_d = d;
+
+	int lenDim1 = b-a+1;
+	m_lenDim2   = d-c+1;
+
+	if (lenDim1 < 1 || m_lenDim2 < 1) {
+		m_pStart = m_vpStart = m_pStop = 0;
+
+	} else {
+		int len = lenDim1*m_lenDim2;
+		m_pStart = (E *)malloc(len*sizeof(E));
+		if (m_pStart == 0)
+			OGDF_THROW(InsufficientMemoryException);
+
+		m_vpStart = m_pStart - c;
+		m_pStop   = m_pStart + len;
+	}
+}
+
+
+template<class E>
+void Array2D<E>::initialize()
+{
+	E *pDest = m_pStart;
+	try {
+		for (; pDest < m_pStop; pDest++)
+			new(pDest) E;
+	} catch (...) {
+		while(--pDest >= m_pStart)
+			pDest->~E();
+		free(m_pStart);
+		throw;
+	}
+}
+
+
+template<class E>
+void Array2D<E>::initialize(const E &x)
+{
+	E *pDest = m_pStart;
+	try {
+		for (; pDest < m_pStop; pDest++)
+			new(pDest) E(x);
+	} catch (...) {
+		while(--pDest >= m_pStart)
+			pDest->~E();
+		free(m_pStart);
+		throw;
+	}
+}
+
+
+template<class E>
+void Array2D<E>::deconstruct()
+{
+	if (doDestruction((E*)0)) {
+		for (E *pDest = m_pStart; pDest < m_pStop; pDest++)
+			pDest->~E();
+	}
+	free(m_pStart);
+}
+
+
+template<class E>
+void Array2D<E>::copy(const Array2D<E> &array2)
+{
+	construct(array2.m_a, array2.m_b, array2.m_c, array2.m_d);
+
+	if (m_pStart != 0) {
+		E *pSrc  = array2.m_pStop;
+		E *pDest = m_pStop;
+		while(pDest > m_pStart)
+ 			new (--pDest) E(*--pSrc);
+	}
+}
+
+
+
+template<class E>
+float Array2D<E>::det() const
+{
+	int a = m_a;
+	int b = m_b;
+	int c = m_c;
+	int d = m_d;
+//	int m = m_b - m_a + 1;
+	int n = m_lenDim2;
+
+	int i, j;
+	int rem_i, rem_j, column;
+
+	float determinant = 0.0;
+
+//	OGDF_ASSERT(m == n);
+
+	switch(n) {
+	case 0:
+		break;
+	case 1:
+		determinant = (float)((*this)(a, c));
+		break;
+	case 2:
+		determinant = (float)((*this)(a, c) * (*this)(b, d) - (*this)(a, d) * (*this)(b, c));
+		break;
+
+		// Expanding along the first row (Laplace's Formula)
+	default:
+		Array2D<E> remMatrix(0, n-2, 0, n-2);             // the remaining matrix
+		for(column = c; column <= d; column++) {
+			rem_i = 0;
+			rem_j = 0;
+			for(i = a; i <= b; i++) {
+				for(j = c; j <= d; j++) {
+					if(i != a && j != column) {
+						remMatrix(rem_i, rem_j) = (*this)(i, j);
+						if(rem_j < n-2) {
+							rem_j++;
+						}
+						else {
+							rem_i++;
+							rem_j = 0;
+						}
+					}
+				}
+			}
+			determinant += pow(-1.0,(a+column)) * (*this)(a,column) * remMatrix.det();
+		}
+	}
+
+	return determinant;
+}
+
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/BoundedStack.h b/ogdf/basic/BoundedStack.h
new file mode 100644
index 0000000..d8f4355
--- /dev/null
+++ b/ogdf/basic/BoundedStack.h
@@ -0,0 +1,211 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of bounded stack class.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_B_STACK_H
+#define OGDF_B_STACK_H
+
+
+
+
+#include "basic.h"
+
+
+namespace ogdf {
+
+template<class E, class INDEX> class BoundedStack;
+
+// output
+template<class E, class INDEX>
+void print(ostream &os, const BoundedStack<E,INDEX> &S, char delim = ' ');
+
+
+//! The parameterized class \a BoundedStack<E,INDEX> implements stacks with bounded size.
+/**
+ * @tparam E     is the element type.
+ * @tparam INDEX is the index type. The default index type is \c int, other possible types
+ *               are \c short and <code>long long</code> (on 64-bit systems).
+ */
+template<class E, class INDEX = int> class BoundedStack {
+
+	E *m_pTop;   //!< Pointer to top element.
+	E *m_pStart; //!< Pointer to first element.
+	E *m_pStop;  //!< Pointer to one past last element.
+
+public:
+	//! Constructs an empty bounded stack for no elements at all.
+	/**
+	 * The default constructor does not allocate any space for elements; before
+	 * using the stack, it is required to initialize the stack with init().
+	 */
+	BoundedStack() {
+		m_pTop = m_pStart = m_pStop = 0;
+	}
+
+	//! Constructs an empty bounded stack for at most \a n elements.
+	explicit BoundedStack(INDEX n) {
+		OGDF_ASSERT(n >= 1)
+		m_pStart = new E[n];
+		if (m_pStart == 0) OGDF_THROW(InsufficientMemoryException);
+		m_pTop  = m_pStart - 1;
+		m_pStop = m_pStart+n;
+	}
+
+	//! Constructs a bounded stack that is a copy of \a S.
+	BoundedStack(const BoundedStack<E> &S) {
+		copy(S);
+	}
+
+	// destruction
+	~BoundedStack() {
+		delete [] m_pStart;
+	}
+
+	//! Returns top element.
+	const E &top() const {
+		OGDF_ASSERT(m_pTop != m_pStart-1)
+		return *m_pTop;
+	}
+
+	//! Returns top element.
+	E &top() {
+		OGDF_ASSERT(m_pTop != m_pStart-1)
+		return *m_pTop;
+	}
+
+	//! Returns current size of the stack.
+	INDEX size() const { return m_pTop - (m_pStart-1); }
+
+	//! Returns true iff the stack is empty.
+	bool empty() { return m_pTop == (m_pStart-1); }
+
+	//! Returns true iff the stack is full.
+	bool full() { return m_pTop == (m_pStop-1); }
+
+	//! Returns true iff the stack was initialized.
+	bool valid() const { return m_pStart != 0; }
+
+	//! Returns the capacity of the bounded stack.
+	INDEX capacity() const { return m_pStop - m_pStart; }
+
+	//! Reinitializes the stack for no elements at all (actually frees memory).
+	void init() {
+		delete [] m_pStart;
+		m_pTop = m_pStart = m_pStart = 0;
+	}
+
+	//! Reinitializes the stack for \a n elements.
+	void init(INDEX n) {
+		OGDF_ASSERT(n >= 1)
+
+		delete [] m_pStart;
+
+		m_pStart = new E[n];
+		if (m_pStart == 0) OGDF_THROW(InsufficientMemoryException);
+		m_pTop = m_pStart - 1;
+		m_pStop = m_pStart+n;
+	}
+
+	//! Assignment operator.
+	BoundedStack<E> &operator=(const BoundedStack &S) {
+		delete [] m_pStart;
+		copy(S);
+		return *this;
+	}
+
+	//! Adds element \a x as top-most element to the stack.
+	void push(const E &x) {
+		OGDF_ASSERT(m_pTop != m_pStop-1)
+		*++m_pTop = x;
+	}
+
+	//! Removes the top-most element from the stack and returns it.
+	E pop() {
+		OGDF_ASSERT(m_pTop != (m_pStart-1))
+		return *m_pTop--;
+	}
+
+	//! Makes the stack empty.
+	void clear() { m_pTop = m_pStart-1; }
+
+	//! Prints the stack to output stream \a os.
+	void print(ostream &os, char delim = ' ') const
+	{
+		for (const E *pX = m_pStart; pX != m_pTop; )
+			os << *++pX << delim;
+	}
+
+private:
+	void copy(const BoundedStack<E> &S)
+	{
+		if(!S.valid()) {
+			m_pTop = m_pStart = m_pStop = 0;
+		} else {
+			INDEX sz = S.m_pStop - S.m_pStart;
+			m_pStart = new E[sz+1];
+			if (m_pStart == 0) OGDF_THROW(InsufficientMemoryException);
+			m_pStop = m_pStart + sz;
+			m_pTop  = m_pStart-1;
+			for (E *pX = S.m_pStart-1; pX != S.m_pTop; )
+				*++m_pTop = *++pX;
+		}
+	}
+}; // class BoundedStack
+
+
+
+// output operator
+template<class E, class INDEX>
+ostream &operator<<(ostream &os, const BoundedStack<E,INDEX> &S)
+{
+	S.print(os);
+	return os;
+}
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/CombinatorialEmbedding.cpp b/ogdf/basic/CombinatorialEmbedding.cpp
new file mode 100644
index 0000000..1599a2a
--- /dev/null
+++ b/ogdf/basic/CombinatorialEmbedding.cpp
@@ -0,0 +1,630 @@
+/*
+ * $Revision: 2555 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 12:12:10 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class CombinatorialEmbedding
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "CombinatorialEmbedding.h"
+#include "FaceArray.h"
+
+
+#define MIN_FACE_TABLE_SIZE (1 << 4)
+
+
+namespace ogdf {
+
+ConstCombinatorialEmbedding::ConstCombinatorialEmbedding()
+{
+	m_cpGraph = 0;
+	m_externalFace = 0;
+	m_nFaces = m_faceIdCount = 0;
+	m_faceArrayTableSize = MIN_FACE_TABLE_SIZE;
+}
+
+
+ConstCombinatorialEmbedding::ConstCombinatorialEmbedding(const Graph &G) :
+	m_cpGraph(&G), m_rightFace(G,0)
+{
+	computeFaces();
+}
+
+ConstCombinatorialEmbedding::ConstCombinatorialEmbedding(
+	const ConstCombinatorialEmbedding &C)
+	: m_cpGraph(C.m_cpGraph), m_rightFace(*C.m_cpGraph,0)
+{
+	computeFaces();
+
+	if(C.m_externalFace == 0)
+		m_externalFace = 0;
+	else
+		m_externalFace = m_rightFace[C.m_externalFace->firstAdj()];
+}
+
+ConstCombinatorialEmbedding &ConstCombinatorialEmbedding::operator=(
+	const ConstCombinatorialEmbedding &C)
+{
+	init(*C.m_cpGraph);
+
+	if(C.m_externalFace == 0)
+		m_externalFace = 0;
+	else
+		m_externalFace = m_rightFace[C.m_externalFace->firstAdj()];
+
+	return *this;
+}
+
+void ConstCombinatorialEmbedding::init(const Graph &G)
+{
+	m_cpGraph = &G;
+	m_rightFace.init(G,0);
+	computeFaces();
+}
+
+
+void ConstCombinatorialEmbedding::init()
+{
+	m_cpGraph = 0;
+	m_externalFace = 0;
+	m_nFaces = m_faceIdCount = 0;
+	m_faceArrayTableSize = MIN_FACE_TABLE_SIZE;
+	m_rightFace.init();
+	m_faces.clear();
+
+	reinitArrays();
+}
+
+
+void ConstCombinatorialEmbedding::computeFaces()
+{
+	m_externalFace = 0; // no longer valid!
+	m_faceIdCount = 0;
+	m_faces.clear();
+
+	m_rightFace.fill(0);
+
+	node v;
+	forall_nodes(v,*m_cpGraph) {
+		adjEntry adj;
+		forall_adj(adj,v) {
+			if (m_rightFace[adj]) continue;
+
+#ifdef OGDF_DEBUG
+			face f = OGDF_NEW FaceElement(this,adj,m_faceIdCount++);
+#else
+			face f = OGDF_NEW FaceElement(adj,m_faceIdCount++);
+#endif
+
+			m_faces.pushBack(f);
+
+			adjEntry adj2 = adj;
+			do {
+				m_rightFace[adj2] = f;
+				f->m_size++;
+				adj2 = adj2->faceCycleSucc();
+			} while (adj2 != adj);
+		}
+	}
+
+	m_nFaces = m_faceIdCount;
+	m_faceArrayTableSize = Graph::nextPower2(MIN_FACE_TABLE_SIZE,m_faceIdCount);
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+face ConstCombinatorialEmbedding::createFaceElement(adjEntry adjFirst)
+{
+	if (m_faceIdCount == m_faceArrayTableSize) {
+		m_faceArrayTableSize <<= 1;
+		for(ListIterator<FaceArrayBase*> it = m_regFaceArrays.begin();
+			it.valid(); ++it)
+		{
+			(*it)->enlargeTable(m_faceArrayTableSize);
+		}
+	}
+
+#ifdef OGDF_DEBUG
+	face f = OGDF_NEW FaceElement(this,adjFirst,m_faceIdCount++);
+#else
+	face f = OGDF_NEW FaceElement(adjFirst,m_faceIdCount++);
+#endif
+
+	m_faces.pushBack(f);
+	m_nFaces++;
+
+	return f;
+}
+
+
+edge CombinatorialEmbedding::split(edge e)
+{
+	face f1 = m_rightFace[e->adjSource()];
+	face f2 = m_rightFace[e->adjTarget()];
+
+	edge e2 = m_pGraph->split(e);
+
+	m_rightFace[e->adjSource()] = m_rightFace[e2->adjSource()] = f1;
+	f1->m_size++;
+	m_rightFace[e->adjTarget()] = m_rightFace[e2->adjTarget()] = f2;
+	f2->m_size++;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return e2;
+}
+
+
+void CombinatorialEmbedding::unsplit(edge eIn, edge eOut)
+{
+	face f1 = m_rightFace[eIn->adjSource()];
+	face f2 = m_rightFace[eIn->adjTarget()];
+
+	--f1->m_size;
+	--f2->m_size;
+
+	if (f1->m_adjFirst == eOut->adjSource())
+		f1->m_adjFirst = eIn->adjSource();
+
+	if (f2->m_adjFirst == eIn->adjTarget())
+		f2->m_adjFirst = eOut->adjTarget();
+
+	m_pGraph->unsplit(eIn,eOut);
+}
+
+
+node CombinatorialEmbedding::splitNode(adjEntry adjStartLeft, adjEntry adjStartRight)
+{
+	face fL = leftFace(adjStartLeft);
+	face fR = leftFace(adjStartRight);
+
+	node u = m_pGraph->splitNode(adjStartLeft,adjStartRight);
+
+	adjEntry adj = adjStartLeft->cyclicPred();
+
+	m_rightFace[adj] = fL;
+	++fL->m_size;
+	m_rightFace[adj->twin()] = fR;
+	++fR->m_size;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return u;
+}
+
+
+node CombinatorialEmbedding::contract(edge e)
+{
+	// Since we remove face e, we also remove adjSrc and adjTgt.
+	// We make sure that node of them is stored as first adjacency
+	// entry of a face.
+	adjEntry adjSrc = e->adjSource();
+	adjEntry adjTgt = e->adjTarget();
+
+	face fSrc = m_rightFace[adjSrc];
+	face fTgt = m_rightFace[adjTgt];
+
+	if(fSrc->m_adjFirst == adjSrc) {
+		adjEntry adj = adjSrc->faceCycleSucc();
+		fSrc->m_adjFirst = (adj != adjTgt) ? adj : adj->faceCycleSucc();
+	}
+
+	if(fTgt->m_adjFirst == adjTgt) {
+		adjEntry adj = adjTgt->faceCycleSucc();
+		fTgt->m_adjFirst = (adj != adjSrc) ? adj : adj->faceCycleSucc();
+	}
+
+	node v = m_pGraph->contract(e);
+	--fSrc->m_size;
+	--fTgt->m_size;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return v;
+}
+
+
+edge CombinatorialEmbedding::splitFace(adjEntry adjSrc, adjEntry adjTgt)
+{
+	OGDF_ASSERT(m_rightFace[adjSrc] == m_rightFace[adjTgt])
+	OGDF_ASSERT(adjSrc != adjTgt)
+
+	edge e = m_pGraph->newEdge(adjSrc,adjTgt);
+
+	face f1 = m_rightFace[adjTgt];
+	face f2 = createFaceElement(adjSrc);
+
+	adjEntry adj = adjSrc;
+	do {
+		m_rightFace[adj] = f2;
+		f2->m_size++;
+		adj = adj->faceCycleSucc();
+	} while (adj != adjSrc);
+
+	f1->m_adjFirst = adjTgt;
+	f1->m_size += (2 - f2->m_size);
+	m_rightFace[e->adjSource()] = f1;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return e;
+}
+
+//special version of the above function doing a pushback of the new edge
+//on the adjacency list of v making it possible to insert new degree 0
+//nodes into a face
+edge CombinatorialEmbedding::splitFace(node v, adjEntry adjTgt)
+{
+	adjEntry adjSrc = v->lastAdj();
+	edge e = 0;
+	bool degZ = v->degree() == 0;
+	if (degZ) {
+		e = m_pGraph->newEdge(v, adjTgt);
+	}
+	else
+	{
+		OGDF_ASSERT(m_rightFace[adjSrc] == m_rightFace[adjTgt])
+		OGDF_ASSERT(adjSrc != adjTgt)
+		e = m_pGraph->newEdge(adjSrc,adjTgt); //could use ne(v,ad) here, too
+	}
+
+	face f1 = m_rightFace[adjTgt];
+	//if v already had an adjacent edge, we split the face in two faces
+	int subSize = 0;
+	if (!degZ)
+	{
+		face f2 = createFaceElement(adjSrc);
+
+		adjEntry adj = adjSrc;
+		do
+		{
+			m_rightFace[adj] = f2;
+			f2->m_size++;
+			adj = adj->faceCycleSucc();
+		} while (adj != adjSrc);
+		subSize = f2->m_size;
+	}//if not zero degree
+	else
+	{
+		m_rightFace[e->adjTarget()] = f1;
+	}
+
+	f1->m_adjFirst = adjTgt;
+	f1->m_size += (2 - subSize);
+	m_rightFace[e->adjSource()] = f1;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return e;
+}//splitface
+//--
+//-----------------
+//incremental stuff
+//special version of the above function doing a pushback of the new edge
+//on the adjacency list of v making it possible to insert new degree 0
+//nodes into a face, end node v
+edge CombinatorialEmbedding::splitFace(adjEntry adjSrc, node v)
+{
+	adjEntry adjTgt = v->lastAdj();
+	edge e = 0;
+	bool degZ = v->degree() == 0;
+	if (degZ)
+	{
+		e = m_pGraph->newEdge(adjSrc, v);
+	}
+	else
+	{
+		OGDF_ASSERT(m_rightFace[adjSrc] == m_rightFace[adjTgt])
+		OGDF_ASSERT(adjSrc != adjTgt)
+		e = m_pGraph->newEdge(adjSrc, adjTgt); //could use ne(v,ad) here, too
+	}
+
+	face f1 = m_rightFace[adjSrc];
+	//if v already had an adjacent edge, we split the face in two faces
+	int subSize = 0;
+	if (!degZ)
+	{
+		face f2 = createFaceElement(adjTgt);
+
+		adjEntry adj = adjTgt;
+		do
+		{
+			m_rightFace[adj] = f2;
+			f2->m_size++;
+			adj = adj->faceCycleSucc();
+		} while (adj != adjTgt);
+		subSize = f2->m_size;
+	}//if not zero degree
+	else
+	{
+		m_rightFace[e->adjSource()] = f1;
+	}
+
+	f1->m_adjFirst = adjSrc;
+	f1->m_size += (2 - subSize);
+	m_rightFace[e->adjTarget()] = f1;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return e;
+}//splitface
+
+//update face information after inserting a merger ith edge e in a copy graph
+void CombinatorialEmbedding::updateMerger(edge e, face fRight, face fLeft)
+{
+	//two cases: a single face/two faces
+	fRight->m_size++;
+	fLeft->m_size++;
+	m_rightFace[e->adjSource()] = fRight;
+	m_rightFace[e->adjTarget()] = fLeft;
+	//check for first adjacency entry
+	if (fRight != fLeft)
+	{
+		fRight->m_adjFirst = e->adjSource();
+		fLeft->m_adjFirst  = e->adjTarget();
+	}//if
+}//updateMerger
+
+//--
+
+
+face CombinatorialEmbedding::joinFaces(edge e)
+{
+	OGDF_ASSERT(e->graphOf() == m_pGraph);
+
+	// get the two faces adjacent to e
+	face f1 = m_rightFace[e->adjSource()];
+	face f2 = m_rightFace[e->adjTarget()];
+
+	OGDF_ASSERT(f1 != f2);
+
+	// we will reuse the largest face and delete the other one
+	if (f2->m_size > f1->m_size)
+		swap(f1,f2);
+
+	// the size of the joined face is the sum of the sizes of the two faces
+	// f1 and f2 minus the two adjacency entries of e
+	f1->m_size += f2->m_size - 2;
+
+	// If the stored (first) adjacency entry of f1 belongs to e, we must set
+	// it to the next entry in the face, because we will remove it by deleting
+	// edge e
+	if (f1->m_adjFirst->theEdge() == e)
+		f1->m_adjFirst = f1->m_adjFirst->faceCycleSucc();
+
+	// each adjacency entry in f2 belongs now to f1
+	adjEntry adj1 = f2->firstAdj(), adj = adj1;
+	do {
+		m_rightFace[adj] = f1;
+	} while((adj = adj->faceCycleSucc()) != adj1);
+
+	m_pGraph->delEdge(e);
+
+	m_faces.del(f2);
+	--m_nFaces;
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return f1;
+}
+
+
+void CombinatorialEmbedding::reverseEdge(edge e)
+{
+	// reverse edge in graph
+	m_pGraph->reverseEdge(e);
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+void CombinatorialEmbedding::moveBridge(adjEntry adjBridge, adjEntry adjBefore)
+{
+	OGDF_ASSERT(m_rightFace[adjBridge] == m_rightFace[adjBridge->twin()]);
+	OGDF_ASSERT(m_rightFace[adjBridge] != m_rightFace[adjBefore]);
+
+	face fOld = m_rightFace[adjBridge];
+	face fNew = m_rightFace[adjBefore];
+
+	adjEntry adjCand = adjBridge->faceCycleSucc();
+
+	int sz = 0;
+	adjEntry adj;
+	for(adj = adjBridge->twin(); adj != adjCand; adj = adj->faceCycleSucc()) {
+		if(fOld->m_adjFirst == adj)
+			fOld->m_adjFirst = adjCand;
+		m_rightFace[adj] = fNew;
+		++sz;
+	}
+
+	fOld->m_size -= sz;
+	fNew->m_size += sz;
+
+	edge e = adjBridge->theEdge();
+	if(e->source() == adjBridge->twinNode())
+		m_pGraph->moveSource(e, adjBefore, after);
+	else
+		m_pGraph->moveTarget(e, adjBefore, after);
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+void CombinatorialEmbedding::removeDeg1(node v)
+{
+	OGDF_ASSERT(v->degree() == 1);
+
+	adjEntry adj = v->firstAdj();
+	face     f   = m_rightFace[adj];
+
+	if(f->m_adjFirst == adj || f->m_adjFirst == adj->twin())
+		f->m_adjFirst = adj->faceCycleSucc();
+	f->m_size -= 2;
+
+	m_pGraph->delNode(v);
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+void CombinatorialEmbedding::clear()
+{
+	m_pGraph->clear();
+
+	m_faces.clear();
+
+	m_nFaces = m_faceIdCount = 0;
+	m_faceArrayTableSize = MIN_FACE_TABLE_SIZE;
+	m_externalFace = 0;
+
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+face ConstCombinatorialEmbedding::chooseFace() const
+{
+	if (m_nFaces == 0) return 0;
+
+	int k = ogdf::randomNumber(0,m_nFaces-1);
+	face f = firstFace();
+	while(k--) f = f->succ();
+
+	return f;
+}
+
+
+face ConstCombinatorialEmbedding::maximalFace() const
+{
+	if (m_nFaces == 0) return 0;
+
+	face fMax = firstFace();
+	int max = fMax->size();
+
+	for(face f = fMax->succ(); f != 0; f = f->succ())
+	{
+		if (f->size() > max) {
+			max = f->size();
+			fMax = f;
+		}
+	}
+
+	return fMax;
+}
+
+
+ListIterator<FaceArrayBase*> ConstCombinatorialEmbedding::
+	registerArray(FaceArrayBase *pFaceArray) const
+{
+	return m_regFaceArrays.pushBack(pFaceArray);
+}
+
+
+void ConstCombinatorialEmbedding::unregisterArray(
+	ListIterator<FaceArrayBase*> it) const
+{
+	m_regFaceArrays.del(it);
+}
+
+
+void ConstCombinatorialEmbedding::reinitArrays()
+{
+	ListIterator<FaceArrayBase*> it = m_regFaceArrays.begin();
+	for(; it.valid(); ++it)
+		(*it)->reinit(m_faceArrayTableSize);
+}
+
+
+bool ConstCombinatorialEmbedding::consistencyCheck()
+{
+	if (m_cpGraph->consistencyCheck() == false)
+		return false;
+
+	if(m_cpGraph->representsCombEmbedding() == false)
+		return false;
+
+	AdjEntryArray<bool> visited(*m_cpGraph,false);
+	int nF = 0;
+
+	face f;
+	forall_faces(f,*this) {
+#ifdef OGDF_DEBUG
+		if (f->embeddingOf() != this)
+			return false;
+#endif
+
+		nF++;
+
+		adjEntry adj = f->firstAdj(), adj2 = adj;
+		int sz = 0;
+		do {
+			sz++;
+			if (visited[adj2] == true)
+				return false;
+
+			visited[adj2] = true;
+
+			if (m_rightFace[adj2] != f)
+				return false;
+
+			adj2 = adj2->faceCycleSucc();
+		} while(adj2 != adj);
+
+		if (f->size() != sz)
+			return false;
+	}
+
+	if (nF != m_nFaces)
+		return false;
+
+	node v;
+	forall_nodes(v,*m_cpGraph) {
+		adjEntry adj;
+		forall_adj(adj,v) {
+			if (visited[adj] == false)
+				return false;
+		}
+	}
+
+	return true;
+}
+
+} // end namespace ogdf
diff --git a/ogdf/basic/CombinatorialEmbedding.h b/ogdf/basic/CombinatorialEmbedding.h
new file mode 100644
index 0000000..7a37e86
--- /dev/null
+++ b/ogdf/basic/CombinatorialEmbedding.h
@@ -0,0 +1,486 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of CombinatorialEmbedding and face.
+ *
+ * Enriches graph by the notion of faces
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_COMBINATORIAL_EMBEDDING_H
+#define OGDF_COMBINATORIAL_EMBEDDING_H
+
+
+
+
+#include "AdjEntryArray.h"
+
+
+namespace ogdf {
+
+class OGDF_EXPORT ConstCombinatorialEmbedding;
+
+typedef FaceElement *face;
+
+/**
+ * \brief Faces in a combinatorial embedding.
+ */
+class OGDF_EXPORT FaceElement : private GraphElement
+{
+	friend class ConstCombinatorialEmbedding;
+	friend class CombinatorialEmbedding;
+	friend class GraphList<FaceElement>;
+
+	adjEntry m_adjFirst; //!< The first adjacency element in the face.
+	int m_id;   //!< The index of the face.
+	int m_size; //!< The size of the face.
+
+#ifdef OGDF_DEBUG
+	const ConstCombinatorialEmbedding *m_pEmbedding;
+#endif
+
+	// constructor
+#ifdef OGDF_DEBUG
+	FaceElement(const ConstCombinatorialEmbedding *pEmbedding,
+		adjEntry adjFirst,
+		int id) :
+		m_adjFirst(adjFirst), m_id(id), m_size(0), m_pEmbedding(pEmbedding) { }
+#else
+	//! Creates a face with given first adjacency element \a adjFirst and face index \a id.
+	FaceElement(adjEntry adjFirst, int id) :
+		m_adjFirst(adjFirst), m_id(id), m_size(0) { }
+#endif
+
+public:
+	//! Returns the index of the face.
+	int index() const { return m_id; }
+
+	//! Returns the first adjacency element in the face.
+	adjEntry firstAdj() const { return m_adjFirst; }
+
+	//! Returns the size of the face, i.e., the number of edges in the face.
+	int size() const { return m_size; }
+
+	//! Returns the successor in the list of all faces.
+	face succ() const { return (face)m_next; }
+
+	//! Returns the predecessor in the list of all faces.
+	face pred() const { return (face)m_prev; }
+
+	//! Returns the successor of \a adj in the list of all adjacency elements in the face.
+	adjEntry nextFaceEdge(adjEntry adj) const {
+		adj = adj->faceCycleSucc();
+		return (adj != m_adjFirst) ? adj : 0;
+	}
+
+#ifdef OGDF_DEBUG
+	const ConstCombinatorialEmbedding *embeddingOf() const { return m_pEmbedding; }
+#endif
+
+	OGDF_NEW_DELETE
+}; // class FaceElement
+
+
+class FaceArrayBase;
+template<class T>class FaceArray;
+
+
+/**
+ * \brief Combinatorial embeddings of planar graphs.
+ *
+ * Maintains a combinatorial embedding of an embedded graph, i.e., the set of
+ * faces. A combinatorial embedding is defined by the (cyclic) order of the
+ * adjacency entries around a vertex; more precisely, the adjacency list
+ * gives the cyclic order of the adjacency entries in clockwise order.
+ * Each adjacency entry \a adj is contained in exactly one face, the face
+ * to the right of \a adj. The list of adjacency entries defining a face is given
+ * in clockwise order for internal faces, and in counter-clockwise order for the
+ * external face.
+ *
+ * \see CombinatorialEmbedding provides additional functionality for modifying
+ *      the embedding.
+ */
+class OGDF_EXPORT ConstCombinatorialEmbedding
+{
+protected:
+	const Graph *m_cpGraph; //!< The associated graph.
+
+	GraphList<FaceElement> m_faces; //!< The list of all faces.
+	int m_nFaces; //!< The number of faces.
+	int m_faceIdCount; //!< The index assigned to the next created face.
+	int m_faceArrayTableSize; //!< The current table size of face arrays.
+
+	AdjEntryArray<face> m_rightFace; //!< The face to which an adjacency entry belongs.
+	face m_externalFace; //! The external face.
+
+	mutable ListPure<FaceArrayBase*> m_regFaceArrays; //!< The registered face arrays.
+
+public:
+	/** @{
+	 * \brief Creates a combinatorial embedding associated with no graph.
+	 */
+	ConstCombinatorialEmbedding();
+
+	/**
+	 * \brief Creates a combinatorial embedding of graph \a G.
+	 *
+	 * \pre Graph \a G must be embedded, i.e., the adjacency lists of its nodes
+	 *      must define an embedding.
+	 */
+	explicit ConstCombinatorialEmbedding(const Graph &G);
+
+
+	//! Copy constructor.
+	ConstCombinatorialEmbedding(const ConstCombinatorialEmbedding &C);
+
+	//! Assignment operator.
+	ConstCombinatorialEmbedding &operator=(const ConstCombinatorialEmbedding &C);
+
+	/** @} @{
+	 * \brief Returns the associated graph of the combinatorial embedding.
+	 */
+	const Graph &getGraph() const { return *m_cpGraph; }
+
+	//! Returns associated graph
+	operator const Graph &() const { return *m_cpGraph; }
+
+	/** @} @{
+	 * \brief Returns the first face in the list of all faces.
+	 */
+	face firstFace() const { return m_faces.begin(); }
+
+	//! Returns the last face in the list of all faces.
+	face lastFace() const { return m_faces.rbegin(); }
+
+	//! Returns the number of faces.
+	int numberOfFaces() const { return m_nFaces; }
+
+	/** @} @{
+	 * \brief Returns the face to the right of \a adj, i.e., the face containing \a adj.
+	 * @param adj is an adjecency element in the associated graph.
+	 */
+	face rightFace(adjEntry adj) const { return m_rightFace[adj]; }
+
+	/**
+	 * \brief Returns the face to the left of \a adj, i.e., the face containing the twin of \a adj.
+	 * @param adj is an adjacency element in the associated graph.
+	 */
+	face leftFace(adjEntry adj) const { return m_rightFace[adj->twin()]; }
+
+	/** @} @{
+	 * \brief Returns the largest used face index.
+	 */
+	int maxFaceIndex() const { return m_faceIdCount-1; }
+
+	//! Returns the table size of face arrays associated with this embedding.
+	int faceArrayTableSize() const { return m_faceArrayTableSize; }
+
+	/** @} @{
+	 * \brief Returns a random face.
+	 */
+	face chooseFace() const;
+
+	//! Returns a face of maximal size.
+	face maximalFace() const;
+
+	/** @} @{
+	 * \brief Returns the external face.
+	 */
+	face externalFace() const {
+		return m_externalFace;
+	}
+
+	/**
+	 * \brief Sets the external face to \a f.
+	 * @param f is a face in this embedding.
+	 */
+	void setExternalFace(face f) {
+		OGDF_ASSERT(f->embeddingOf() == this);
+		m_externalFace = f;
+	}
+
+	bool isBridge(edge e) const {
+		return m_rightFace[e->adjSource()] == m_rightFace[e->adjTarget()];
+	}
+
+	/** @} @{
+	 * \brief Initializes the embedding for graph \a G.
+	 *
+	 * \pre Graph \a G must be embedded, i.e., the adjacency lists of its nodes
+	 *      must define an embedding.
+	 */
+	void init(const Graph &G);
+
+	void init();
+
+	//! Computes the list of faces.
+	void computeFaces();
+
+
+	/** @} @{
+	 * \brief Checks the consistency of the data structure.
+	 */
+	bool consistencyCheck();
+
+
+	/** @} @{
+	 * \brief Registers the face array \a pFaceArray.
+	 *
+	 * This method is only used by face arrays.
+	 */
+	ListIterator<FaceArrayBase*> registerArray(FaceArrayBase *pFaceArray) const;
+
+	/**
+	 * \brief Unregisters the face array identified by \a it.
+	 *
+	 * This method is only used by face arrays.
+	 */
+	void unregisterArray(ListIterator<FaceArrayBase*> it) const;
+
+	/** @} */
+
+protected:
+	//! Create a new face.
+	face createFaceElement(adjEntry adjFirst);
+
+	//! Reinitialize associated face arrays.
+	void reinitArrays();
+
+}; // class ConstCombinatorialEmbedding
+
+
+
+/**
+ * \brief Combinatorial embeddings of planar graphs with modification functionality.
+ *
+ * Maintains a combinatorial embedding of an embedded graph, i.e., the set of
+ * faces, and provides method for modifying the embedding, e.g., by inserting edges.
+ */
+class OGDF_EXPORT CombinatorialEmbedding : public ConstCombinatorialEmbedding
+{
+	Graph *m_pGraph; //!< The associated graph.
+
+	// the following methods are private in order to make them unusable
+	// It is not clear which meaning copying of a comb. embedding should
+	// have since we only store a pointer to the topology (Graph)
+	CombinatorialEmbedding(const CombinatorialEmbedding &) : ConstCombinatorialEmbedding() { }
+	CombinatorialEmbedding &operator=(const CombinatorialEmbedding &) {
+		return *this;
+	}
+
+public:
+	/** @{
+	 * \brief Creates a combinatorial embedding associated with no graph.
+	 */
+	CombinatorialEmbedding() : ConstCombinatorialEmbedding() {
+		m_pGraph = 0;
+	}
+
+	/**
+	 * \brief Creates a combinatorial embedding of graph \a G.
+	 *
+	 * \pre Graph \a G must be embedded, i.e., the adjacency lists of its nodes
+	 *      must define an embedding.
+	 */
+	explicit CombinatorialEmbedding(Graph &G) : ConstCombinatorialEmbedding(G) {
+		m_pGraph = &G;
+	}
+
+	//@}
+	/**
+	 * @name Access to the associated graph
+	 */
+	//@{
+
+	/**
+	 * \brief Returns the associated graph.
+	 */
+	const Graph &getGraph() const { return *m_cpGraph; }
+
+	Graph &getGraph() { return *m_pGraph; }
+
+	operator const Graph &() const { return *m_cpGraph; }
+
+	operator Graph &() { return *m_pGraph; }
+
+
+	//@}
+	/**
+	 * @name Initialization
+	 */
+	//@{
+
+	/**
+	 * \brief Initializes the embedding for graph \a G.
+	 *
+	 * \pre Graph \a G must be embedded, i.e., the adjacency lists of its nodes
+	 *      must define an embedding.
+	 */
+	void init(Graph &G) {
+		ConstCombinatorialEmbedding::init(G);
+		m_pGraph = &G;
+	}
+
+	/**
+	 * \brief Removes all nodes, edges, and faces from the graph and the embedding.
+	 */
+	void clear();
+
+
+	//@}
+	/**
+	 * @name Update of embedding
+	 */
+	//@{
+
+	/**
+	 * \brief Splits edge \a e=(\a v,\a w) into \a e=(\a v,\a u) and \a e'=(\a u,\a w) creating a new node \a u.
+	 * @param e is the edge to be split; \a e is modified by the split.
+	 * \return the edge \a e'.
+	 */
+	edge split(edge e);
+
+	/**
+	 * \brief Undoes a split operation.
+	 * @param eIn is the edge (\a v,\a u).
+	 * @param eOut is the edge (\a u,\a w).
+	 */
+	void unsplit(edge eIn, edge eOut);
+
+	/**
+	 * \brief Splits a node while preserving the order of adjacency entries.
+	 *
+	 * This method splits a node \a v into two nodes \a vl and \a vr. Node
+	 * \a vl receives all adjacent edges of \a v from \a adjStartLeft until
+	 * the edge preceding \a adjStartRight, and \a vr the remaining nodes
+	 * (thus \a adjStartRight is the first edge that goes to \a vr). The
+	 * order of adjacency entries is preserved. Additionally, a new edge
+	 * (\a vl,\a vr) is created, such that this edge is inserted before
+	 * \a adjStartLeft and \a adjStartRight in the the adjacency lists of
+	 * \a vl and \a vr.
+	 *
+	 * Node \a v is modified to become node \a vl, and node \a vr is returned.
+	 *
+	 * @param adjStartLeft is the first entry that goes to the left node.
+	 * @param adjStartRight is the first entry that goes to the right node.
+	 * \return the newly created node.
+	 */
+	node splitNode(adjEntry adjStartLeft, adjEntry adjStartRight);
+
+	/**
+	 * \brief Contracts edge \a e.
+	 * @param e is an edge is the associated graph.
+	 * @return the node resulting from the contraction.
+	 */
+	node contract(edge e);
+
+	/**
+	 * \brief Splits a face by inserting a new edge.
+	 *
+	 * This operation introduces a new edge \a e from the node to which \a adjSrc
+	 * belongs to the node to which \a adjTgt belongs.
+	 * \pre \a adjSrc and \a adjTgt belong to the same face.
+	 * \return the new edge \a e.
+	 */
+	edge splitFace(adjEntry adjSrc, adjEntry adjTgt);
+
+	// incremental stuff
+
+	//special version of the above function doing a pushback of the new edge
+	//on the adjacency list of v making it possible to insert new degree 0
+	//nodes into a face
+	edge splitFace(node v, adjEntry adjTgt);
+	edge splitFace(adjEntry adjSrc, node v);
+
+	/**
+	 * \brief Removes edge e and joins the two faces adjacent to \a e.
+	 * @param e is an edge in the associated graph.
+	 * \return the resulting (joined) face.
+	 */
+	face joinFaces(edge e);
+
+	//! Reverses edges \a e and updates embedding.
+	void reverseEdge(edge e);
+
+	void moveBridge(adjEntry adjBridge, adjEntry adjBefore);
+
+	void removeDeg1(node v);
+
+	//! Update face information after inserting a merger in a copy graph.
+	void updateMerger(edge e, face fRight, face fLeft);
+
+
+	/** @} */
+
+}; // class CombinatorialEmbedding
+
+
+//---------------------------------------------------------
+// iteration macros
+//---------------------------------------------------------
+
+//! Iteration over all faces \a f of the combinatorial embedding \a E.
+#define forall_faces(f,E) for((f)=(E).firstFace(); (f); (f)=(f)->succ())
+
+
+//! Iteration over all faces \a f of the combinatorial embedding \a E (in reverse order).
+#define forall_rev_faces(f,E) for((f)=(E).lastFace(); (f); (f)=(f)->pred())
+
+/**
+ * \brief Iteration over all adjacency entries \a adj of the face \a f.
+ *
+ * A faster version for this iteration demonstrates the following code snippet:
+ * \code
+ *   adjEntry adj1 = f->firstAdj(), adj = adj1;
+ *   do {
+ * 	   ...
+ *	   adj = adj->faceCycleSucc();
+ *   } while (adj != adj1);
+ * \endcode
+ */
+#define forall_face_adj(adj,f) for((adj)=(f)->firstAdj(); (adj); (adj)=(f)->nextFaceEdge(adj))
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/Constraint.cpp b/ogdf/basic/Constraint.cpp
new file mode 100644
index 0000000..9fbb3c0
--- /dev/null
+++ b/ogdf/basic/Constraint.cpp
@@ -0,0 +1,83 @@
+/*
+ * $Revision: 2549 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-04 23:09:19 +0200 (Mi, 04. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class Constraint, which is a base
+ * class for classes responsible for specifying and storing
+ * drawing constraints.
+ *
+ * \author PG478
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "ogdf/basic/Constraints.h"
+#include "../fileformats/DinoXmlParser.h"
+#include "../fileformats/Ogml.h"
+
+
+namespace ogdf {
+
+
+bool Constraint::buildFromOgml(XmlTagObject* /*constraintTag*/, Hashing <String, node> * /*nodes*/)
+{
+	return true;
+}
+
+bool Constraint::storeToOgml(int /*id*/, ostream & /*os*/, int /*indentStep*/)
+{
+	return true;
+}
+
+/*
+void Constraint::generateIndent(char ** indent, const int & indentSize)
+{
+	// free memory block (INFO: indent must point to an array of chars or to NULL)
+	delete [] *indent;
+	// instantiate array of chars
+	*indent = new char[indentSize + 1];
+	// if memory couldn't be allocated, we throw an exception
+	if (!*indent) {
+		OGDF_THROW(InsufficientMemoryException); // don't use regular throw!
+	}
+	// fill char array
+	for(int i = 0; i < indentSize; ++i) {
+		(*indent)[i] = INDENTCHAR;
+	}
+	// terminate string
+	(*indent)[indentSize] = '\0';
+}*/
+
+} //end namespace ogdf
diff --git a/ogdf/basic/Constraints.h b/ogdf/basic/Constraints.h
new file mode 100644
index 0000000..7819246
--- /dev/null
+++ b/ogdf/basic/Constraints.h
@@ -0,0 +1,212 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of base class for drawing constraints.
+ *
+ * \author PG478
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_CONSTRAINTS_H
+#define OGDF_CONSTRAINTS_H
+
+#include "Graph.h"
+#include "String.h"
+
+
+namespace ogdf {
+
+
+class GraphConstraints;
+struct XmlTagObject;
+
+
+/* -------------------------- Constraint ----------------------------------------- */
+class Constraint
+{
+	friend class GraphConstraints;
+
+private:
+	ListIterator<Constraint *> listIt;
+
+protected:
+	String m_Name;
+	/* */
+	bool m_UserDisabled;
+
+	int m_Status; // OK, Suspended, notOk
+	/* The Graph this Constraint belongs to. No Constraint without a Graph! */
+	const Graph *m_pGraph;
+
+	/* Will be called by the GraphConstraints when a Node in mGraph is removed. */
+        virtual void nodeDeleted(node /*v*/) { }
+
+public:
+	Constraint(const Graph &g) : m_pGraph(&g) { m_Status = 0; m_UserDisabled = false;  }
+
+	virtual ~Constraint() {}
+
+	const Graph& constGraph() const { return *m_pGraph; }
+
+	virtual bool isValid() { return (!m_UserDisabled && (m_Status==0)); }
+
+	virtual int getInternalStatus() { return m_Status; }
+
+	virtual void setInternalStatus(int s) { m_Status = s; }
+
+	//virtual bool load(int stuff) = 0;
+	//virtual bool save(int stuff) = 0;
+	//virtual bool checkConstraints(List<Constraint*> csts) {return true; }
+
+	void userEnable() { m_UserDisabled = false; }
+
+	void userDisable() { m_UserDisabled = true; }
+
+	bool isUserDisabled() { return m_UserDisabled; }
+
+	virtual int getType() { return 0; }
+
+	static int getStaticType() { return 0; }
+
+	void setName(String text) { m_Name = text; }
+
+	String getName() { return m_Name; }
+
+	//DEBUG
+	virtual bool buildFromOgml(XmlTagObject * constraintTag, Hashing <String, node> * nodes);
+	virtual bool storeToOgml(int id, ostream & os, int indentStep);
+	//static void generateIndent(char ** indent, const int & indentSize);
+
+	OGDF_NEW_DELETE
+};
+
+
+/* -------------------------- GraphConstraints ----------------------------------------- */
+/* For each Graph a Set of Constraints*/
+class GraphConstraints //: public GraphStructure
+{
+	friend class ConstraintManager;
+
+protected:
+	/* The Graph this Constraint belongs to. No Constraint without a Graph! */
+	const Graph *m_pGraph;
+
+	/* All Constraints for mGraph */
+	List<Constraint *> m_List;
+
+public:
+	/* Constructor, GraphStructure */
+	GraphConstraints(const Graph &g) : m_pGraph(&g), m_List() { }
+
+	/* Returns the Graph */
+	const Graph *constGraph() { return m_pGraph; }
+
+	/* adds a Constraint to this Set */
+	void addConstraint(Constraint *c) { c->listIt = m_List.pushBack(c); }
+
+	/* removes a Constraint from this set */
+	void removeConstraint(Constraint *c) { m_List.del(c->listIt); }
+
+	/* returns all Constraints */
+	List<Constraint *> *getConstraints() { return &m_List; }
+
+	/* Return Constraint Count */
+	int numberOfConstraints() { return m_List.size(); }
+
+	/* returns all Constraints of Type type */
+	List<Constraint *> getConstraintsOfType(int type);
+
+	template<class TYP> void getConstraintsOfType(List<TYP *> *res) {
+		//List<TYP *> res;
+		ListConstIterator<Constraint *> it;
+		for(it = m_List.begin(); it.valid(); ++it)
+		{
+			Constraint *c = *it;
+
+			if (TYP::getStaticType()==c->getType())
+			{
+				if (c->isValid()) res->pushBack(static_cast<TYP *>(c));
+			}
+		}
+		//return res;
+	}
+
+	void clear() {
+		m_List.clear();
+	}
+
+	virtual ~GraphConstraints() {
+		ListConstIterator<Constraint *> it;
+		for(it = m_List.begin(); it.valid(); ++it)
+		{
+			Constraint *c = *it;
+			delete c;
+		}
+	}
+
+	virtual void nodeDeleted(node v);
+        virtual void nodeAdded(node /*v*/)    { }
+        virtual void edgeDeleted(edge /*e*/)  { }
+        virtual void edgeAdded(edge /*e*/)    { }
+	virtual void reInit()             { }
+	virtual void cleared()            { }
+
+	OGDF_NEW_DELETE
+};
+
+
+/* -------------------------- ConstraintManager ----------------------------------------- */
+class ConstraintManager
+{
+public:
+
+	static Constraint *createConstraintByName(const Graph &G, String *name);
+
+	static String getClassnameOfConstraint(Constraint *c);
+
+	OGDF_NEW_DELETE
+};
+
+} // end namespace
+
+#endif
diff --git a/ogdf/basic/CriticalSection.h b/ogdf/basic/CriticalSection.h
new file mode 100644
index 0000000..409d437
--- /dev/null
+++ b/ogdf/basic/CriticalSection.h
@@ -0,0 +1,164 @@
+/*
+ * $Revision: 2583 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-12 01:02:21 +0200 (Do, 12. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of criticial sections.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+
+#ifndef OGDF_CRITICAL_SECTION_H
+#define OGDF_CRITICAL_SECTION_H
+
+#if !defined(OGDF_SYSTEM_WINDOWS)
+#include <pthread.h>
+#include <errno.h>
+#endif
+
+#include "System.h"
+
+
+namespace ogdf {
+
+#if defined(OGDF_SYSTEM_WINDOWS)
+
+//! Representation of a critical section.
+/**
+ * Critical sections are used to synchronize access to resources shared by
+ * several threads. It can be used to protect an object or a piece of code
+ * allowing always one thread at a time access.
+ */
+class OGDF_EXPORT CriticalSection
+{
+public:
+	//! Creates a critical section object.
+	CriticalSection() {
+		InitializeCriticalSection(&m_cs);
+	}
+
+	//! Creates a critical section object with spin count.
+	/**
+	 * The spin count determines how many times the calling thread spins
+	 * when the critical section is unavailable, before it performs a wait.
+	 * \remark The spin count is only used on multiprocessor systems;
+	 *         otherwise it makes no sense.
+	 */
+	explicit CriticalSection(int spinCount) {
+		InitializeCriticalSectionAndSpinCount(&m_cs, spinCount);
+	}
+
+	~CriticalSection() {
+		DeleteCriticalSection(&m_cs);
+	}
+
+	//! Enters the critical section.
+	void enter() {
+		EnterCriticalSection(&m_cs);
+	}
+
+	//! Tries to enter the critical section; returns true on success.
+	bool tryEnter() {
+		return (TryEnterCriticalSection(&m_cs) != 0);
+	}
+
+	//! Leaves the critical section.
+	void leave() {
+		LeaveCriticalSection(&m_cs);
+	}
+
+private:
+	CRITICAL_SECTION m_cs; //!< The Windows critical section object.
+};
+
+
+#else
+
+class OGDF_EXPORT CriticalSection
+{
+public:
+	CriticalSection() : m_spinCount(0) {
+		pthread_mutex_init(&m_mutex, NULL);
+	}
+
+	explicit CriticalSection(int spinCount) {
+		m_spinCount = (System::numberOfProcessors() >= 2) ? spinCount : 0;
+		int ret = pthread_mutex_init(&m_mutex, NULL);
+		if(ret != 0)
+			cout << "initialization of mutex failed: " << ret << endl;
+	}
+
+	~CriticalSection() {
+		pthread_mutex_destroy(&m_mutex);
+	}
+
+	void enter() {
+		if(m_spinCount > 0) {
+			for(int i = m_spinCount; i > 0; --i)
+				if(pthread_mutex_trylock(&m_mutex) != EBUSY)
+					return;
+		}
+		pthread_mutex_lock(&m_mutex);
+	}
+
+	bool tryEnter() {
+		return (pthread_mutex_trylock(&m_mutex) != EBUSY);
+	}
+
+	void leave() {
+		pthread_mutex_unlock(&m_mutex);
+	}
+
+private:
+	pthread_mutex_t m_mutex;
+	int             m_spinCount;
+};
+
+#endif
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/EdgeArray.h b/ogdf/basic/EdgeArray.h
new file mode 100644
index 0000000..9d02aa4
--- /dev/null
+++ b/ogdf/basic/EdgeArray.h
@@ -0,0 +1,259 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of EdgeArray class.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_EDGE_ARRAY_H
+#define OGDF_EDGE_ARRAY_H
+
+
+#include "Graph_d.h"
+
+
+namespace ogdf {
+
+
+//! Abstract base class for edge arrays.
+/**
+ * Defines the interface for event handling used by the Graph class.
+ * Use the parameterized class EdgeArray for creating edge arrays.
+ */
+class EdgeArrayBase {
+	/**
+	 * Pointer to list element in the list of all registered edge
+	 * arrays which references this array.
+	 */
+	ListIterator<EdgeArrayBase*> m_it;
+
+public:
+	const Graph *m_pGraph; //!< The associated graph.
+
+	//! Initializes an edge array not associated with a graph.
+	EdgeArrayBase() : m_pGraph(0) { }
+	//! Initializes an edge array associated with \a pG.
+	EdgeArrayBase(const Graph *pG) : m_pGraph(pG) {
+		if(pG) m_it = pG->registerArray(this);
+	}
+
+	// destructor, unregisters the array
+	virtual ~EdgeArrayBase() {
+		if (m_pGraph) m_pGraph->unregisterArray(m_it);
+	}
+
+	// event interface used by Graph
+	//! Virtual function called when table size has to be enlarged.
+	virtual void enlargeTable(int newTableSize) = 0;
+	//! Virtual function called when table has to be reinitialized.
+	virtual void reinit(int initTableSize) = 0;
+	//! Virtual function called when array is disconnected from the graph.
+	virtual void disconnect() = 0;
+
+	//! Associates the array with a new graph.
+	void reregister(const Graph *pG) {
+		if (m_pGraph) m_pGraph->unregisterArray(m_it);
+		if ((m_pGraph = pG) != 0) m_it = pG->registerArray(this);
+	}
+}; // class EdgeArrayBase
+
+
+//! Dynamic arrays indexed with edges.
+/**
+ * Edge arrays represent a mapping from edges to data of type \a T.
+ * They adjust their table size automatically when the graph grows.
+ *
+ * @tparam T is the element type.
+ */
+template<class T> class EdgeArray : private Array<T>, protected EdgeArrayBase {
+	T m_x; //!< The default value for array elements.
+
+public:
+	//! Constructs an empty edge array associated with no graph.
+	EdgeArray() : Array<T>(), EdgeArrayBase() { }
+	//! Constructs an edge array associated with \a G.
+	EdgeArray(const Graph &G) : Array<T>(G.edgeArrayTableSize()), EdgeArrayBase(&G) { }
+	//! Constructs an edge array associated with \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param x is the default value for all array elements.
+	 */
+	EdgeArray(const Graph &G, const T &x) :
+		Array<T>(0,G.edgeArrayTableSize()-1,x), EdgeArrayBase(&G), m_x(x) { }
+	//! Constructs an edge array that is a copy of \a A.
+	/**
+	 * Associates the array with the same graph as \a A and copies all elements.
+	 */
+	EdgeArray(const EdgeArray<T> &A) : Array<T>(A), EdgeArrayBase(A.m_pGraph), m_x(A.m_x) { }
+
+	//! Returns true iff the array is associated with a graph.
+	bool valid() const { return (Array<T>::low() <= Array<T>::high()); }
+
+	//! Returns a pointer to the associated graph.
+	const Graph *graphOf() const {
+		return m_pGraph;
+	}
+
+	//! Returns a reference to the element with index \a e.
+	const T &operator[](edge e) const {
+		OGDF_ASSERT(e != 0 && e->graphOf() == m_pGraph)
+		return Array<T>::operator [](e->index());
+	}
+
+	//! Returns a reference to the element with index \a e.
+	T &operator[](edge e) {
+		OGDF_ASSERT(e != 0 && e->graphOf() == m_pGraph)
+		return Array<T>::operator [](e->index());
+	}
+
+	//! Returns a reference to the element with index edge of \a adj.
+	const T &operator[](adjEntry adj) const {
+		OGDF_ASSERT(adj != 0)
+		return Array<T>::operator [](adj->index() >> 1);
+	}
+
+	//! Returns a reference to the element with index edge of \a adj.
+	T &operator[](adjEntry adj) {
+		OGDF_ASSERT(adj != 0)
+		return Array<T>::operator [](adj->index() >> 1);
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for an edge
+	 * in the associated graph!
+	 */
+	const T &operator[](int index) const {
+		return Array<T>::operator [](index);
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for an edge
+	 * in the associated graph!
+	 */
+	T &operator[](int index) {
+		return Array<T>::operator [](index);
+	}
+
+	//! Assignment operator.
+	EdgeArray<T> &operator=(const EdgeArray<T> &a) {
+		Array<T>::operator =(a);
+		m_x = a.m_x;
+		reregister(a.m_pGraph);
+		return *this;
+	}
+
+	//! Reinitializes the array. Associates the array with no graph.
+	void init() {
+		Array<T>::init(); reregister(0);
+	}
+
+	//! Reinitializes the array. Associates the array with \a G.
+	void init(const Graph &G) {
+		Array<T>::init(G.edgeArrayTableSize()); reregister(&G);
+	}
+
+	//! Reinitializes the array. Associates the array with \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param x is the default value.
+	 */
+	void init(const Graph &G, const T &x) {
+		Array<T>::init(0,G.edgeArrayTableSize()-1, m_x = x); reregister(&G);
+	}
+
+	//! Sets all array elements to \a x.
+	void fill(const T &x) {
+		int high = m_pGraph->maxEdgeIndex();
+		if(high >= 0)
+			Array<T>::fill(0,high,x);
+	}
+
+private:
+	virtual void enlargeTable(int newTableSize) {
+		Array<T>::grow(newTableSize-Array<T>::size(),m_x);
+	}
+
+	virtual void reinit(int initTableSize) {
+		Array<T>::init(0,initTableSize-1,m_x);
+	}
+
+	virtual void disconnect() {
+		Array<T>::init();
+		m_pGraph = 0;
+	}
+
+	OGDF_NEW_DELETE
+
+}; // class EdgeArray<T>
+
+
+//! Bucket function for edges.
+/**
+ * The bucket of an edge is stored in an edge array which is passed
+ * by the user at construction; only a pointer is stored to that array.
+ */
+class OGDF_EXPORT BucketEdgeArray : public BucketFunc<edge>
+{
+	const EdgeArray<int> *m_pEdgeArray; //!< Pointer to edge array.
+
+public:
+	//! Constructs a bucket function.
+	/**
+	 * @param edgeArray contains the buckets for the edges. May not be deleted
+	 *        as long as the bucket function is used.
+	 */
+	BucketEdgeArray(const EdgeArray<int> &edgeArray) : m_pEdgeArray(&edgeArray) { }
+
+	//! Returns bucket of edge \a e.
+	int getBucket(const edge &e) { return (*m_pEdgeArray)[e]; }
+};
+
+
+} // end namespace ogdf
+#include "Graph.h"
+
+#endif
diff --git a/ogdf/basic/FaceArray.h b/ogdf/basic/FaceArray.h
new file mode 100644
index 0000000..f50ddf5
--- /dev/null
+++ b/ogdf/basic/FaceArray.h
@@ -0,0 +1,224 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief declaration and implementation of FaceArray class
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_FACE_ARRAY_H
+#define OGDF_FACE_ARRAY_H
+
+
+#include "Array.h"
+#include "CombinatorialEmbedding.h"
+
+
+namespace ogdf {
+
+
+//! Abstract base class for face arrays.
+/**
+ * Defines the interface for event handling used by the
+ * CombinatorialEmbedding class.
+ * Use the parameterized class FaceArray for creating face arrays.
+ */
+class FaceArrayBase {
+	/**
+	 * Pointer to list element in the list of all registered face
+	 * arrays which references this array.
+	 */
+	ListIterator<FaceArrayBase*> m_it;
+
+public:
+	const ConstCombinatorialEmbedding *m_pEmbedding; //!< The associated combinatorial embedding.
+
+	//! Initializes a face array not associated with a combinatorial embedding.
+	FaceArrayBase() : m_pEmbedding(0) { }
+	//! Initializes a face array associated with \a pE.
+	FaceArrayBase(const ConstCombinatorialEmbedding *pE) : m_pEmbedding(pE) {
+		if(pE) m_it = pE->registerArray(this);
+	}
+
+	// destructor, unregisters the array
+	virtual ~FaceArrayBase() {
+		if (m_pEmbedding) m_pEmbedding->unregisterArray(m_it);
+	}
+
+	// event interface used by CombinatorialEmbedding
+	//! Virtual function called when table size has to be enlarged.
+	virtual void enlargeTable(int newTableSize) = 0;
+	//! Virtual function called when table has to be reinitialized.
+	virtual void reinit(int initTableSize) = 0;
+
+	//! Associates the array with a new combinatorial embedding.
+	void reregister(const ConstCombinatorialEmbedding *pE) {
+		if (m_pEmbedding) m_pEmbedding->unregisterArray(m_it);
+		if ((m_pEmbedding = pE) != 0) m_it = pE->registerArray(this);
+	}
+}; // class FaceArrayBase
+
+
+//! Dynamic arrays indexed with faces of a combinatorial embedding.
+/**
+ * Face arrays represent a mapping from faces to data of type \a T.
+ * They adjust their table size automatically when the number of faces in the
+ * corresponding combinatorial embedding increases.
+ *
+ * @tparam T is the element type.
+ */
+template<class T> class FaceArray : private Array<T>, protected FaceArrayBase {
+	T m_x; //!< The default value for array elements.
+
+public:
+	//! Constructs an empty face array associated with no combinatorial embedding.
+	FaceArray() : Array<T>(), FaceArrayBase() { }
+	//! Constructs a face array associated with \a E.
+	FaceArray(const ConstCombinatorialEmbedding &E) :
+		Array<T>(E.faceArrayTableSize()), FaceArrayBase(&E) { }
+	//! Constructs a face array associated with \a E.
+	/**
+	 * @param E is the associated combinatorial embedding.
+	 * @param x is the default value for all array elements.
+	 */
+	FaceArray(const ConstCombinatorialEmbedding &E, const T &x) :
+		Array<T>(0,E.faceArrayTableSize()-1,x), FaceArrayBase(&E), m_x(x) { }
+	//! Constructs an face array that is a copy of \a A.
+	/**
+	 * Associates the array with the same combinatorial embedding as
+	 * \a A and copies all elements.
+	 */
+	FaceArray(const FaceArray<T> &A) : Array<T>(A), FaceArrayBase(A.m_pEmbedding), m_x(A.m_x) { }
+
+	//! Returns true iff the array is associated with a combinatorial embedding.
+	bool valid() const { return (Array<T>::low() <= Array<T>::high()); }
+
+	//! Returns a pointer to the associated combinatorial embedding.
+	const ConstCombinatorialEmbedding *embeddingOf() const {
+		return m_pEmbedding;
+	}
+
+	//! Returns a reference to the element with index \a f.
+	const T &operator[](face f) const {
+		OGDF_ASSERT(f != 0 && f->embeddingOf() == m_pEmbedding)
+		return Array<T>::operator [](f->index());
+	}
+
+	//! Returns a reference to the element with index \a f.
+	T &operator[](face f) {
+		OGDF_ASSERT(f != 0 && f->embeddingOf() == m_pEmbedding)
+		return Array<T>::operator [](f->index());
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for a face
+	 * in the associated combinatorial embedding!
+	 */
+	const T &operator[](int index) const {
+		return Array<T>::operator [](index);
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for a face
+	 * in the associated combinatorial embedding!
+	 */
+	T &operator[](int index) {
+		return Array<T>::operator [](index);
+	}
+
+	//! Assignment operator.
+	FaceArray<T> &operator=(const FaceArray<T> &a) {
+		Array<T>::operator =(a);
+		m_x = a.m_x;
+		reregister(a.m_pEmbedding);
+		return *this;
+	}
+
+	//! Reinitializes the array. Associates the array with no combinatorial embedding.
+	void init() {
+		Array<T>::init(); reregister(0);
+	}
+
+	//! Reinitializes the array. Associates the array with \a E.
+	void init(const ConstCombinatorialEmbedding &E) {
+		Array<T>::init(E.faceArrayTableSize()); reregister(&E);
+	}
+
+	//! Reinitializes the array. Associates the array with \a E.
+	/**
+	 * @param E is the associated combinatorial embedding.
+	 * @param x is the default value.
+	 */
+	void init(const ConstCombinatorialEmbedding &E, const T &x) {
+		Array<T>::init(0,E.faceArrayTableSize()-1, m_x = x); reregister(&E);
+	}
+
+	//! Sets all array elements to \a x.
+	void fill(const T &x) {
+		int high = m_pEmbedding->maxFaceIndex();
+		if(high >= 0)
+			Array<T>::fill(0,high,x);
+	}
+
+private:
+	virtual void enlargeTable(int newTableSize) {
+		Array<T>::grow(newTableSize-Array<T>::size(),m_x);
+	}
+
+	virtual void reinit(int initTableSize) {
+		Array<T>::init(0,initTableSize-1,m_x);
+	}
+
+	OGDF_NEW_DELETE
+
+}; // class FaceArray<T>
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/FaceSet.h b/ogdf/basic/FaceSet.h
new file mode 100644
index 0000000..86f4a83
--- /dev/null
+++ b/ogdf/basic/FaceSet.h
@@ -0,0 +1,274 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief declaration and implementation of class FaceSetSimple,
+ * FaceSetPure and FaceSet
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_FACE_SET_H
+#define OGDF_FACE_SET_H
+
+
+#include "FaceArray.h"
+#include "List.h"
+
+
+
+namespace ogdf {
+
+
+//! Maintains a subset S of the faces contained in an associated combinatorial embedding E
+/** (only insertion of elements and clear operation)
+ */
+class OGDF_EXPORT FaceSetSimple {
+public:
+	//! creates a new empty face set associated with combinatorial embedding E
+	FaceSetSimple(const CombinatorialEmbedding &E) : m_isContained(E,false) { }
+
+	//! destructor
+	~FaceSetSimple() { }
+
+	//! inserts face f into set S
+	/** running time: O(1)
+	 *  Precond.: f is a face in the associated combinatorial embedding
+	 */
+	void insert(face f) {
+		OGDF_ASSERT(f->embeddingOf() == m_isContained.embeddingOf());
+		bool &isContained = m_isContained[f];
+		if (isContained == false) {
+			isContained = true;
+			m_faces.pushFront(f);
+		}
+	}
+
+
+	//! removes all faces from set S
+	/** running time: O(|S|)
+	 */
+	void clear() {
+		SListIterator<face> it;
+		for(it = m_faces.begin(); it.valid(); ++it) {
+			m_isContained[*it] = false;
+		}
+		m_faces.clear();
+	}
+
+
+	//! returns true iff face f is contained in S
+	/** running time: O(1)
+	 * Precond.: f is a face in the asociated embedding
+	 */
+	bool isMember(face f) const {
+		OGDF_ASSERT(f->embeddingOf() == m_isContained.embeddingOf());
+		return m_isContained[f];
+	}
+
+	//! returns the list of faces contained in S
+	const SListPure<face> &faces() const {
+		return m_faces;
+	}
+
+private:
+	//! m_isContained[f] is true <=> f is contained in S
+	FaceArray<bool> m_isContained;
+	//! list of faces contained in S
+	SListPure<face> m_faces;
+};
+
+
+
+//! maintains a subset S of the faces contained in an associated combinatorial embedding E
+/** (no efficient access to size of S)
+ */
+class OGDF_EXPORT FaceSetPure {
+public:
+	//! creates a new empty face set associated with combinatorial embedding E
+	FaceSetPure(const CombinatorialEmbedding &E) : m_it(E,ListIterator<face>()) { }
+
+	//! destructor
+	~FaceSetPure() { }
+
+	//! inserts face f into set S
+	/** running time: O(1)
+	 * Precond.: f is a face in the associated combinatorial embedding
+	 */
+	void insert(face f) {
+		OGDF_ASSERT(f->embeddingOf() == m_it.embeddingOf());
+		ListIterator<face> &itF = m_it[f];
+		if (!itF.valid())
+			itF = m_faces.pushBack(f);
+	}
+
+	//! removes face f from set S
+	/** running time: O(1)
+	 * Precond.: f is a face in the asociated embedding
+	 */
+	void remove(face f) {
+		OGDF_ASSERT(f->embeddingOf() == m_it.embeddingOf());
+		ListIterator<face> &itF = m_it[f];
+		if (itF.valid()) {
+			m_faces.del(itF);
+			itF = ListIterator<face>();
+		}
+	}
+
+
+	//! removes all faces from set S
+	/** running time: O(|S|)
+	 */
+	void clear() {
+		ListIterator<face> it;
+		for(it = m_faces.begin(); it.valid(); ++it) {
+			m_it[*it] = ListIterator<face>();
+		}
+		m_faces.clear();
+	}
+
+
+	//! returns true iff face f is contained in S
+	/** running time: O(1)
+	 * Precond.: f is a face in the asociated embedding
+	 */
+	bool isMember(face f) const {
+		OGDF_ASSERT(f->embeddingOf() == m_it.embeddingOf());
+		return m_it[f].valid();
+	}
+
+	//! returns the list of faces contained in S
+	const ListPure<face> &faces() const {
+		return m_faces;
+	}
+
+private:
+	//! m_it[f] contains list iterator pointing to f if f is contained in S, an invalid list iterator otherwise
+	FaceArray<ListIterator<face> > m_it;
+	//! list of faces contained in S
+	ListPure<face> m_faces;
+};
+
+
+
+//! maintains a subset S of the faces contained in an associated combinatorial embedding E
+class OGDF_EXPORT FaceSet {
+public:
+	//! creates a new empty face set associated with combinatorial embedding E
+	FaceSet(const CombinatorialEmbedding &E) : m_it(E,ListIterator<face>()) { }
+
+	//! destructor
+	~FaceSet() { }
+
+	//! inserts face f into set S
+	/** running time: O(1)
+	 * Precond.: f is a face in the associated combinatorial embedding
+	 */
+	void insert(face f) {
+		OGDF_ASSERT(f->embeddingOf() == m_it.embeddingOf());
+		ListIterator<face> &itF = m_it[f];
+		if (!itF.valid())
+			itF = m_faces.pushBack(f);
+	}
+
+	//! removes face f from set S
+	/* running time: O(1)
+	 * Precond.: f is a face in the asociated embedding
+	 */
+	void remove(face f) {
+		OGDF_ASSERT(f->embeddingOf() == m_it.embeddingOf());
+		ListIterator<face> &itF = m_it[f];
+		if (itF.valid()) {
+			m_faces.del(itF);
+			itF = ListIterator<face>();
+		}
+	}
+
+
+	//! removes all faces from set S
+	/** running time: O(|S|)
+	 */
+	void clear() {
+		ListIterator<face> it;
+		for(it = m_faces.begin(); it.valid(); ++it) {
+			m_it[*it] = ListIterator<face>();
+		}
+		m_faces.clear();
+	}
+
+
+	//! returns true iff face f is contained in S
+	/** running time: O(1)
+	 * Precond.: f is a face in the asociated embedding
+	 */
+	bool isMember(face f) const {
+		OGDF_ASSERT(f->embeddingOf() == m_it.embeddingOf());
+		return m_it[f].valid();
+	}
+
+	//! returns the size of set S
+	/** running time: O(1)
+	 */
+	int size() const {
+		return m_faces.size();
+	}
+
+	//! returns the list of faces contained in S
+	const List<face> &faces() const {
+		return m_faces;
+	}
+
+private:
+	//! m_it[f] contains list iterator pointing to f if f is contained in S,an invalid list iterator otherwise
+	FaceArray<ListIterator<face> > m_it;
+	//! list of faces contained in S
+	List<face> m_faces;
+};
+
+
+} // end namespace ogdf
+
+
+#endif
+
diff --git a/ogdf/basic/Graph.cpp b/ogdf/basic/Graph.cpp
new file mode 100644
index 0000000..ff14a38
--- /dev/null
+++ b/ogdf/basic/Graph.cpp
@@ -0,0 +1,1481 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of Graph class
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+#include "Array.h"
+#include "AdjEntryArray.h"
+#include "../fileformats/GmlParser.h"
+#include "simple_graph_alg.h"
+#include "GraphObserver.h"
+
+
+#define MIN_NODE_TABLE_SIZE (1 << 4)
+#define MIN_EDGE_TABLE_SIZE (1 << 4)
+
+
+namespace ogdf {
+
+Graph::Graph()
+{
+	m_nNodes = m_nEdges = m_nodeIdCount = m_edgeIdCount = 0;
+	m_nodeArrayTableSize = MIN_NODE_TABLE_SIZE;
+	m_edgeArrayTableSize = MIN_EDGE_TABLE_SIZE;
+}
+
+
+Graph::Graph(const Graph &G)
+{
+	m_nNodes = m_nEdges = m_nodeIdCount = m_edgeIdCount = 0;
+	copy(G);
+	m_nodeArrayTableSize = nextPower2(MIN_NODE_TABLE_SIZE,m_nodeIdCount);
+	m_edgeArrayTableSize = nextPower2(MIN_EDGE_TABLE_SIZE,m_edgeIdCount);
+}
+
+
+Graph::~Graph()
+{
+	ListIterator<NodeArrayBase*> itVNext;
+	for(ListIterator<NodeArrayBase*> itV = m_regNodeArrays.begin();
+		itV.valid(); itV = itVNext)
+	{
+		itVNext = itV.succ();
+		(*itV)->disconnect();
+	}
+
+	ListIterator<EdgeArrayBase*> itENext;
+	for(ListIterator<EdgeArrayBase*> itE = m_regEdgeArrays.begin();
+		itE.valid(); itE = itENext)
+	{
+		itENext = itE.succ();
+		(*itE)->disconnect();
+	}
+
+	ListIterator<AdjEntryArrayBase*> itAdjNext;
+	for(ListIterator<AdjEntryArrayBase*> itAdj = m_regAdjArrays.begin();
+		itAdj.valid(); itAdj = itAdjNext)
+	{
+		itAdjNext = itAdj.succ();
+		(*itAdj)->disconnect();
+	}
+
+	for (node v = m_nodes.begin(); v; v = v->succ()) {
+		v->m_adjEdges.~GraphList<AdjElement>();
+	}
+}
+
+
+Graph &Graph::operator=(const Graph &G)
+{
+	clear(); copy(G);
+	m_nodeArrayTableSize = nextPower2(MIN_NODE_TABLE_SIZE,m_nodeIdCount);
+	m_edgeArrayTableSize = nextPower2(MIN_EDGE_TABLE_SIZE,m_edgeIdCount);
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return *this;
+}
+
+
+void Graph::assign(const Graph &G, NodeArray<node> &mapNode,
+	EdgeArray<edge> &mapEdge)
+{
+	clear();
+	copy(G,mapNode,mapEdge);
+	m_nodeArrayTableSize = nextPower2(MIN_NODE_TABLE_SIZE,m_nodeIdCount);
+	m_edgeArrayTableSize = nextPower2(MIN_EDGE_TABLE_SIZE,m_edgeIdCount);
+	reinitArrays();
+}
+
+
+void Graph::construct(const Graph &G, NodeArray<node> &mapNode,
+	EdgeArray<edge> &mapEdge)
+{
+	copy(G,mapNode,mapEdge);
+	m_nodeArrayTableSize = nextPower2(MIN_NODE_TABLE_SIZE,m_nodeIdCount);
+	m_edgeArrayTableSize = nextPower2(MIN_EDGE_TABLE_SIZE,m_edgeIdCount);
+}
+
+
+void Graph::copy(const Graph &G, NodeArray<node> &mapNode,
+	EdgeArray<edge> &mapEdge)
+{
+	if (G.m_nNodes == 0) return;
+
+	mapNode.init(G,0);
+
+	node vG;
+	forall_nodes(vG,G) {
+		node v = mapNode[vG] = pureNewNode();
+		v->m_indeg = vG->m_indeg;
+		v->m_outdeg = vG->m_outdeg;
+	}
+
+	if (G.m_nEdges == 0) return;
+
+	mapEdge.init(G,0);
+
+	edge e, eC;
+	forall_edges(e,G) {
+		m_edges.pushBack(eC = mapEdge[e] =
+			OGDF_NEW EdgeElement(
+				mapNode[e->source()],mapNode[e->target()],m_edgeIdCount));
+
+		eC->m_adjSrc = OGDF_NEW AdjElement(eC,m_edgeIdCount<<1);
+		(eC->m_adjTgt = OGDF_NEW AdjElement(eC,(m_edgeIdCount<<1)|1))
+			->m_twin = eC->m_adjSrc;
+		eC->m_adjSrc->m_twin = eC->m_adjTgt;
+		m_edgeIdCount++;
+	}
+	m_nEdges = G.m_nEdges;
+
+	EdgeArray<bool> mark(G,false);
+
+	forall_nodes(vG,G) {
+		node v = mapNode[vG];
+		GraphList<AdjElement> &adjEdges = vG->m_adjEdges;
+		for (AdjElement *adjG = adjEdges.begin(); adjG; adjG = adjG->succ()) {
+			int id = adjG->m_edge->index();
+			edge eC = mapEdge[id];
+
+			adjEntry adj;
+			if (eC->isSelfLoop()) {
+				if (mark[id])
+					adj = eC->m_adjTgt;
+				else {
+					adj = eC->m_adjSrc;
+					mark[id] = true;
+				}
+			} else
+				adj = (v == eC->m_src) ? eC->m_adjSrc : eC->m_adjTgt;
+
+			v->m_adjEdges.pushBack(adj);
+			adj->m_node = v;
+		}
+	}
+}
+
+
+void Graph::copy(const Graph &G)
+{
+	NodeArray<node> mapNode;
+	EdgeArray<edge> mapEdge;
+	copy(G,mapNode,mapEdge);
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+void Graph::constructInitByNodes(
+	const Graph &G,
+	const List<node> &nodes,
+	NodeArray<node> &mapNode,
+	EdgeArray<edge> &mapEdge)
+{
+	// clear
+	for (node v = m_nodes.begin(); v; v = v->succ()) {
+		v->m_adjEdges.~GraphList<AdjElement>();
+	}
+
+	m_nodes.clear();
+	m_edges.clear();
+
+	m_nNodes = m_nEdges = m_nodeIdCount = m_edgeIdCount = 0;
+	m_nodeArrayTableSize = MIN_NODE_TABLE_SIZE;
+
+
+	// list of edges adjacent to nodes in nodes
+	SListPure<edge> edges;
+
+	// create nodes and assemble list of edges
+	ListConstIterator<node> itG;
+	for(itG = nodes.begin(); itG.valid(); ++itG) {
+		node vG = *itG;
+		node v = mapNode[vG] = pureNewNode();
+
+		v->m_indeg = vG->m_indeg;
+		v->m_outdeg = vG->m_outdeg;
+
+		adjEntry adjG;
+		forall_adj(adjG,vG) {
+			// corresponding adjacency entries differ by index modulo 2
+			// the following conditions makes sure that each edge is
+			// added only once to edges
+			if ((adjG->m_id & 1) == 0)
+				edges.pushBack(adjG->m_edge);
+		}
+	}
+
+	// create edges
+	SListConstIterator<edge> it;
+	for(it = edges.begin(); it.valid(); ++it)
+	{
+		edge eG = *it;
+		node v = mapNode[eG->source()];
+		node w = mapNode[eG->target()];
+
+		edge eC = mapEdge[eG] = OGDF_NEW EdgeElement(v, w, m_edgeIdCount);
+		m_edges.pushBack(eC);
+
+		eC->m_adjSrc = OGDF_NEW AdjElement(eC, m_edgeIdCount<<1);
+		(eC->m_adjTgt = OGDF_NEW AdjElement(eC, (m_edgeIdCount<<1)|1))
+			->m_twin = eC->m_adjSrc;
+		eC->m_adjSrc->m_twin = eC->m_adjTgt;
+		++m_edgeIdCount;
+		++m_nEdges;
+	}
+
+	EdgeArray<bool> mark(G,false);
+	for(itG = nodes.begin(); itG.valid(); ++itG) {
+		node vG = *itG;
+		node v = mapNode[vG];
+
+		GraphList<AdjElement> &adjEdges = vG->m_adjEdges;
+		for (AdjElement *adjG = adjEdges.begin(); adjG; adjG = adjG->succ()) {
+			int id = adjG->m_edge->index();
+			edge eC = mapEdge[id];
+
+			adjEntry adj;
+			if (eC->isSelfLoop()) {
+				if (mark[id])
+					adj = eC->m_adjTgt;
+				else {
+					adj = eC->m_adjSrc;
+					mark[id] = true;
+				}
+			} else
+				adj = (v == eC->m_src) ? eC->m_adjSrc : eC->m_adjTgt;
+
+			v->m_adjEdges.pushBack(adj);
+			adj->m_node = v;
+		}
+	}
+
+/*
+		AdjElement *adjSrc = OGDF_NEW AdjElement(v);
+
+		v->m_adjEdges.pushBack(adjSrc);
+		//v->m_outdeg++;
+
+		AdjElement *adjTgt = OGDF_NEW AdjElement(w);
+
+		w->m_adjEdges.pushBack(adjTgt);
+		//w->m_indeg++;
+
+		adjSrc->m_twin = adjTgt;
+		adjTgt->m_twin = adjSrc;
+
+		adjTgt->m_id = (adjSrc->m_id = m_edgeIdCount << 1) | 1;
+		edge e = OGDF_NEW EdgeElement(v,w,adjSrc,adjTgt,m_edgeIdCount++);
+
+		++m_nEdges;
+		m_edges.pushBack(e);
+
+		mapEdge[eG] = adjSrc->m_edge = adjTgt->m_edge = e;
+	}*/
+
+	// set size of associated arrays and reinitialize all (we have now a
+	// completely new graph)
+	m_nodeArrayTableSize = nextPower2(MIN_NODE_TABLE_SIZE,m_nodeIdCount);
+	m_edgeArrayTableSize = nextPower2(MIN_EDGE_TABLE_SIZE,m_edgeIdCount);
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+//------------------
+//mainly a copy of the above code, remerge this again
+void Graph::constructInitByActiveNodes(
+	const List<node> &nodes,
+	const NodeArray<bool> &activeNodes,
+	NodeArray<node> &mapNode,
+	EdgeArray<edge> &mapEdge)
+{
+	// clear
+	for (node v = m_nodes.begin(); v; v = v->succ()) {
+		v->m_adjEdges.~GraphList<AdjElement>();
+	}
+
+	m_nodes.clear();
+	m_edges.clear();
+
+	m_nNodes = m_nEdges = m_nodeIdCount = m_edgeIdCount = 0;
+	m_nodeArrayTableSize = MIN_NODE_TABLE_SIZE;
+
+
+	// list of edges adjacent to nodes in nodes
+	SListPure<edge> edges;
+
+	// create nodes and assemble list of edges
+	//NOTE: nodes is a list of ACTIVE nodes
+	ListConstIterator<node> itG;
+	for(itG = nodes.begin(); itG.valid(); ++itG) {
+		node vG = *itG;
+		node v = mapNode[vG] = pureNewNode();
+
+		//we cannot assign the original degree, as there
+		//may be edges to non-active nodes
+		//v->m_indeg = vG->m_indeg;
+		//v->m_outdeg = vG->m_outdeg;
+
+		int inCount = 0;
+		int outCount = 0;
+		adjEntry adjG;
+		forall_adj(adjG,vG)
+		{
+			// coresponding adjacency entries differ by index modulo 2
+			// the following conditions makes sure that each edge is
+			// added only once to edges
+			if (activeNodes[adjG->m_edge->opposite(vG)])
+			{
+				if ((adjG->m_id & 1) == 0)
+				{
+					edges.pushBack(adjG->m_edge);
+				}//if one time
+				if (adjG->m_edge->source() == vG) outCount++;
+					else inCount++;
+			}//if opposite active
+		}//foralladj
+		v->m_indeg = inCount;
+		v->m_outdeg = outCount;
+	}//for nodes
+
+	// create edges
+	SListConstIterator<edge> it;
+	for(it = edges.begin(); it.valid(); ++it)
+	{
+		edge eG = *it;
+		node v = mapNode[eG->source()];
+		node w = mapNode[eG->target()];
+
+		AdjElement *adjSrc = OGDF_NEW AdjElement(v);
+
+		v->m_adjEdges.pushBack(adjSrc);
+		//v->m_outdeg++;
+
+		AdjElement *adjTgt = OGDF_NEW AdjElement(w);
+
+		w->m_adjEdges.pushBack(adjTgt);
+		//w->m_indeg++;
+
+		adjSrc->m_twin = adjTgt;
+		adjTgt->m_twin = adjSrc;
+
+		adjTgt->m_id = (adjSrc->m_id = m_edgeIdCount << 1) | 1;
+		edge e = OGDF_NEW EdgeElement(v,w,adjSrc,adjTgt,m_edgeIdCount++);
+
+		++m_nEdges;
+		m_edges.pushBack(e);
+
+		mapEdge[eG] = adjSrc->m_edge = adjTgt->m_edge = e;
+	}
+
+	// set size of associated arrays and reinitialize all (we have now a
+	// completely new graph)
+	m_nodeArrayTableSize = nextPower2(MIN_NODE_TABLE_SIZE,m_nodeIdCount);
+	m_edgeArrayTableSize = nextPower2(MIN_EDGE_TABLE_SIZE,m_edgeIdCount);
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}//constructinitbyactivenodes
+
+//------------------
+
+
+
+node Graph::newNode()
+{
+	++m_nNodes;
+	if (m_nodeIdCount == m_nodeArrayTableSize) {
+		m_nodeArrayTableSize <<= 1;
+		for(ListIterator<NodeArrayBase*> it = m_regNodeArrays.begin();
+			it.valid(); ++it)
+		{
+			(*it)->enlargeTable(m_nodeArrayTableSize);
+		}
+	}
+
+#ifdef OGDF_DEBUG
+	node v = OGDF_NEW NodeElement(this,m_nodeIdCount++);
+#else
+	node v = OGDF_NEW NodeElement(m_nodeIdCount++);
+#endif
+
+	m_nodes.pushBack(v);
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->nodeAdded(v);
+
+	return v;
+}
+
+
+//what about negative index numbers?
+node Graph::newNode(int index)
+{
+	++m_nNodes;
+
+	if(index >= m_nodeIdCount) {
+		m_nodeIdCount = index+1;
+
+		if(index >= m_nodeArrayTableSize) {
+			m_nodeArrayTableSize = nextPower2(m_nodeArrayTableSize,index);
+			for(ListIterator<NodeArrayBase*> it = m_regNodeArrays.begin();
+				it.valid(); ++it)
+			{
+				(*it)->enlargeTable(m_nodeArrayTableSize);
+			}
+		}
+	}
+
+#ifdef OGDF_DEBUG
+	node v = OGDF_NEW NodeElement(this,index);
+#else
+	node v = OGDF_NEW NodeElement(index);
+#endif
+
+	m_nodes.pushBack(v);
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->nodeAdded(v);
+	return v;
+}
+
+
+node Graph::pureNewNode()
+{
+	++m_nNodes;
+
+#ifdef OGDF_DEBUG
+	node v = OGDF_NEW NodeElement(this,m_nodeIdCount++);
+#else
+	node v = OGDF_NEW NodeElement(m_nodeIdCount++);
+#endif
+
+	m_nodes.pushBack(v);
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->nodeAdded(v);
+	return v;
+}
+
+
+// IMPORTANT:
+// The indices of the two adjacency entries pointing to an edge differ
+// only in the last bit (adjSrc/2 == adjTgt/2)
+//
+// This can be useful sometimes in order to avoid visiting an edge twice.
+edge Graph::createEdgeElement(node v, node w, adjEntry adjSrc, adjEntry adjTgt)
+{
+	if (m_edgeIdCount == m_edgeArrayTableSize) {
+		m_edgeArrayTableSize <<= 1;
+
+		for(ListIterator<EdgeArrayBase*> it = m_regEdgeArrays.begin();
+			it.valid(); ++it)
+		{
+			(*it)->enlargeTable(m_edgeArrayTableSize);
+		}
+
+		for(ListIterator<AdjEntryArrayBase*> itAdj = m_regAdjArrays.begin();
+			itAdj.valid(); ++itAdj)
+		{
+			(*itAdj)->enlargeTable(m_edgeArrayTableSize << 1);
+		}
+	}
+
+	adjTgt->m_id = (adjSrc->m_id = m_edgeIdCount << 1) | 1;
+	edge e = OGDF_NEW EdgeElement(v,w,adjSrc,adjTgt,m_edgeIdCount++);
+	m_edges.pushBack(e);
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->edgeAdded(e);
+	return e;
+}
+
+
+edge Graph::newEdge(node v, node w, int index)
+{
+	OGDF_ASSERT(v != 0 && w != 0);
+	OGDF_ASSERT(v->graphOf() == this && w->graphOf() == this);
+
+	++m_nEdges;
+
+	AdjElement *adjSrc = OGDF_NEW AdjElement(v);
+
+	v->m_adjEdges.pushBack(adjSrc);
+	v->m_outdeg++;
+
+	AdjElement *adjTgt = OGDF_NEW AdjElement(w);
+
+	w->m_adjEdges.pushBack(adjTgt);
+	w->m_indeg++;
+
+	adjSrc->m_twin = adjTgt;
+	adjTgt->m_twin = adjSrc;
+
+	if(index >= m_edgeIdCount) {
+		m_edgeIdCount = index+1;
+
+		if(index >= m_edgeArrayTableSize) {
+			m_edgeArrayTableSize = nextPower2(m_edgeArrayTableSize,index);
+
+			for(ListIterator<EdgeArrayBase*> it = m_regEdgeArrays.begin();
+				it.valid(); ++it)
+			{
+				(*it)->enlargeTable(m_edgeArrayTableSize);
+			}
+
+			for(ListIterator<AdjEntryArrayBase*> itAdj = m_regAdjArrays.begin();
+				itAdj.valid(); ++itAdj)
+			{
+				(*itAdj)->enlargeTable(m_edgeArrayTableSize << 1);
+			}
+		}
+	}
+
+	adjTgt->m_id = (adjSrc->m_id = index/*m_edgeIdCount*/ << 1) | 1;
+	edge e = OGDF_NEW EdgeElement(v,w,adjSrc,adjTgt,index);
+	m_edges.pushBack(e);
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->edgeAdded(e);
+	return adjSrc->m_edge = adjTgt->m_edge = e;
+}
+
+
+edge Graph::newEdge(node v, node w)
+{
+	OGDF_ASSERT(v != 0 && w != 0);
+	OGDF_ASSERT(v->graphOf() == this && w->graphOf() == this);
+
+	++m_nEdges;
+
+	AdjElement *adjSrc = OGDF_NEW AdjElement(v);
+
+	v->m_adjEdges.pushBack(adjSrc);
+	v->m_outdeg++;
+
+	AdjElement *adjTgt = OGDF_NEW AdjElement(w);
+
+	w->m_adjEdges.pushBack(adjTgt);
+	w->m_indeg++;
+
+	adjSrc->m_twin = adjTgt;
+	adjTgt->m_twin = adjSrc;
+
+	edge e = createEdgeElement(v,w,adjSrc,adjTgt);
+
+	return adjSrc->m_edge = adjTgt->m_edge = e;
+}
+
+
+edge Graph::newEdge(adjEntry adjStart, adjEntry adjEnd, Direction dir)
+{
+	OGDF_ASSERT(adjStart != 0 && adjEnd != 0)
+	OGDF_ASSERT(adjStart->graphOf() == this && adjEnd->graphOf() == this);
+
+	++m_nEdges;
+
+	node v = adjStart->theNode(), w = adjEnd->theNode();
+
+	AdjElement *adjTgt = OGDF_NEW AdjElement(w);
+	AdjElement *adjSrc = OGDF_NEW AdjElement(v);
+
+	if(dir == ogdf::after) {
+		w->m_adjEdges.insertAfter(adjTgt,adjEnd);
+		v->m_adjEdges.insertAfter(adjSrc,adjStart);
+	} else {
+		w->m_adjEdges.insertBefore(adjTgt,adjEnd);
+		v->m_adjEdges.insertBefore(adjSrc,adjStart);
+	}
+
+	w->m_indeg++;
+	v->m_outdeg++;
+
+	adjSrc->m_twin = adjTgt;
+	adjTgt->m_twin = adjSrc;
+
+	edge e = createEdgeElement(v,w,adjSrc,adjTgt);
+
+	return adjSrc->m_edge = adjTgt->m_edge = e;
+}
+
+edge Graph::newEdge(node v, adjEntry adjEnd)
+{
+	OGDF_ASSERT(v != 0 && adjEnd != 0)
+	OGDF_ASSERT(v->graphOf() == this && adjEnd->graphOf() == this);
+
+	++m_nEdges;
+
+	node w = adjEnd->theNode();
+
+	AdjElement *adjTgt = OGDF_NEW AdjElement(w);
+
+	w->m_adjEdges.insertAfter(adjTgt,adjEnd);
+	w->m_indeg++;
+
+	AdjElement *adjSrc = OGDF_NEW AdjElement(v);
+
+	v->m_adjEdges.pushBack(adjSrc);
+	v->m_outdeg++;
+
+	adjSrc->m_twin = adjTgt;
+	adjTgt->m_twin = adjSrc;
+
+	edge e = createEdgeElement(v,w,adjSrc,adjTgt);
+
+	return adjSrc->m_edge = adjTgt->m_edge = e;
+}//newedge
+//copy of above function with edge ending at v
+edge Graph::newEdge(adjEntry adjStart, node v)
+{
+	OGDF_ASSERT(v != 0 && adjStart != 0)
+	OGDF_ASSERT(v->graphOf() == this && adjStart->graphOf() == this);
+
+	++m_nEdges;
+
+	node w = adjStart->theNode();
+
+	AdjElement *adjSrc = OGDF_NEW AdjElement(w);
+
+	w->m_adjEdges.insertAfter(adjSrc, adjStart);
+	w->m_outdeg++;
+
+	AdjElement *adjTgt = OGDF_NEW AdjElement(v);
+
+	v->m_adjEdges.pushBack(adjTgt);
+	v->m_indeg++;
+
+	adjSrc->m_twin = adjTgt;
+	adjTgt->m_twin = adjSrc;
+
+	edge e = createEdgeElement(w,v,adjSrc,adjTgt);
+
+	return adjSrc->m_edge = adjTgt->m_edge = e;
+}//newedge
+
+
+void Graph::move(edge e,
+	adjEntry adjSrc,
+	Direction dirSrc,
+	adjEntry adjTgt,
+	Direction dirTgt)
+{
+	OGDF_ASSERT(e->graphOf() == this);
+	OGDF_ASSERT(adjSrc->graphOf() == this && adjTgt->graphOf() == this);
+	OGDF_ASSERT(adjSrc != e->m_adjSrc && adjSrc != e->m_adjTgt);
+	OGDF_ASSERT(adjTgt != e->m_adjSrc && adjTgt != e->m_adjTgt);
+
+	node v = adjSrc->m_node, w = adjTgt->m_node;
+	adjEntry adj1 = e->m_adjSrc, adj2 = e->m_adjTgt;
+	e->m_src->m_adjEdges.move(adj1,v->m_adjEdges,adjSrc,dirSrc);
+	e->m_tgt->m_adjEdges.move(adj2,w->m_adjEdges,adjTgt,dirTgt);
+
+	e->m_src->m_outdeg--;
+	e->m_tgt->m_indeg--;
+
+	adj1->m_node = e->m_src = v;
+	adj2->m_node = e->m_tgt = w;
+
+	v->m_outdeg++;
+	w->m_indeg++;
+}
+
+
+void Graph::moveTarget(edge e, node v)
+{
+	OGDF_ASSERT(e->graphOf() == this);
+	OGDF_ASSERT(v->graphOf() == this);
+
+	adjEntry adj = e->m_adjTgt;
+	e->m_tgt->m_adjEdges.move(adj,v->m_adjEdges);
+
+	e->m_tgt->m_indeg--;
+	adj->m_node = e->m_tgt = v;
+	v->m_indeg++;
+}
+
+void Graph::moveTarget(edge e, adjEntry adjTgt, Direction dir)
+{
+	node v = adjTgt->theNode();
+
+	OGDF_ASSERT(e->graphOf() == this);
+	OGDF_ASSERT(v->graphOf() == this);
+
+	adjEntry adj = e->m_adjTgt;
+	e->m_tgt->m_adjEdges.move(adj,v->m_adjEdges, adjTgt, dir);
+
+	e->m_tgt->m_indeg--;
+	adj->m_node = e->m_tgt = v;
+	v->m_indeg++;
+}
+
+// By Leipert
+void Graph::moveSource(edge e, node v)
+{
+	OGDF_ASSERT(e->graphOf() == this);
+	OGDF_ASSERT(v->graphOf() == this);
+
+	adjEntry adj = e->m_adjSrc;
+	e->m_src->m_adjEdges.move(adj,v->m_adjEdges);
+
+	e->m_src->m_outdeg--;
+	adj->m_node = e->m_src = v;
+	v->m_outdeg++;
+}
+
+void Graph::moveSource(edge e, adjEntry adjSrc, Direction dir)
+{
+	node v = adjSrc->theNode();
+
+	OGDF_ASSERT(e->graphOf() == this);
+	OGDF_ASSERT(v->graphOf() == this);
+
+	adjEntry adj = e->m_adjSrc;
+	e->m_src->m_adjEdges.move(adj,v->m_adjEdges, adjSrc, dir);
+
+	e->m_src->m_outdeg--;
+	adj->m_node = e->m_src = v;
+	v->m_outdeg++;
+}
+
+edge Graph::split(edge e)
+{
+	OGDF_ASSERT(e != 0 && e->graphOf() == this);
+
+	++m_nEdges;
+
+	node u = newNode();
+	u->m_indeg = u->m_outdeg = 1;
+
+	adjEntry adjTgt = OGDF_NEW AdjElement(u);
+	adjTgt->m_edge = e;
+	adjTgt->m_twin = e->m_adjSrc;
+	e->m_adjSrc->m_twin = adjTgt;
+
+	// adapt adjacency entry index to hold invariant
+	adjTgt->m_id = e->m_adjTgt->m_id;
+
+	u->m_adjEdges.pushBack(adjTgt);
+
+	adjEntry adjSrc = OGDF_NEW AdjElement(u);
+	adjSrc->m_twin = e->m_adjTgt;
+	u->m_adjEdges.pushBack(adjSrc);
+
+	int oldId = e->m_adjTgt->m_id;
+	edge e2 = createEdgeElement(u,e->m_tgt,adjSrc,e->m_adjTgt);
+	resetAdjEntryIndex(e->m_adjTgt->m_id,oldId);
+
+	e2->m_adjTgt->m_twin = adjSrc;
+	e->m_adjTgt->m_edge = adjSrc->m_edge = e2;
+
+	e->m_tgt = u;
+	e->m_adjTgt = adjTgt;
+	return e2;
+}
+
+
+void Graph::unsplit(node u)
+{
+	edge eIn = u->firstAdj()->theEdge();
+	edge eOut = u->lastAdj()->theEdge();
+
+	if (eIn->target() != u)
+		swap(eIn,eOut);
+
+	unsplit(eIn,eOut);
+}
+
+
+
+void Graph::unsplit(edge eIn, edge eOut)
+{
+	node u = eIn->target();
+
+	// u must be a node with exactly one incoming edge eIn and one outgoing
+	// edge eOut
+	OGDF_ASSERT(u->graphOf() == this && u->indeg() == 1 &&
+		u->outdeg() == 1 && eOut->source() == u);
+
+	// none of them is a self-loop!
+	OGDF_ASSERT(eIn->isSelfLoop() == false && eOut->isSelfLoop() == false);
+
+	// we reuse these adjacency entries
+	adjEntry adjSrc = eIn ->m_adjSrc;
+	adjEntry adjTgt = eOut->m_adjTgt;
+
+	eIn->m_tgt = eOut->m_tgt;
+
+	// adapt adjacency entry index to hold invariant
+	resetAdjEntryIndex(eIn->m_adjTgt->m_id,adjTgt->m_id);
+	adjTgt->m_id = eIn->m_adjTgt->m_id; // correct id of adjacency entry!
+
+	eIn->m_adjTgt = adjTgt;
+
+	adjSrc->m_twin = adjTgt;
+	adjTgt->m_twin = adjSrc;
+
+	adjTgt->m_edge = eIn;
+
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->edgeDeleted(eOut);
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->nodeDeleted(u);
+	// remove structures that are no longer used
+	m_edges.del(eOut);
+	m_nodes.del(u);
+	--m_nNodes;
+	--m_nEdges;
+
+}
+
+
+void Graph::delNode(node v)
+{
+	OGDF_ASSERT(v != 0 && v->graphOf() == this)
+
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->nodeDeleted(v);
+
+	--m_nNodes;
+
+	GraphList<AdjElement> &adjEdges = v->m_adjEdges;
+	AdjElement *adj;
+	while((adj = adjEdges.begin()) != 0)
+		delEdge(adj->m_edge);
+
+	m_nodes.del(v);
+}
+
+
+void Graph::delEdge(edge e)
+{
+	OGDF_ASSERT(e != 0 && e->graphOf() == this)
+
+	//  notify all registered observers
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it) (*it)->edgeDeleted(e);
+
+	--m_nEdges;
+
+	node src = e->m_src, tgt = e->m_tgt;
+
+	src->m_adjEdges.del(e->m_adjSrc);
+	src->m_outdeg--;
+	tgt->m_adjEdges.del(e->m_adjTgt);
+	tgt->m_indeg--;
+
+	m_edges.del(e);
+}
+
+
+void Graph::clear()
+{
+	//tell all structures to clear their graph-initialized data
+	for(ListIterator<GraphObserver*> it = m_regStructures.begin();
+			it.valid(); ++it)
+	{
+		(*it)->cleared();
+	}//for
+	for (node v = m_nodes.begin(); v; v = v->succ()) {
+		v->m_adjEdges.~GraphList<AdjElement>();
+	}
+
+	m_nodes.clear();
+	m_edges.clear();
+
+	m_nNodes = m_nEdges = m_nodeIdCount = m_edgeIdCount = 0;
+	m_nodeArrayTableSize = MIN_NODE_TABLE_SIZE;
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+void Graph::reverseEdge(edge e)
+{
+	OGDF_ASSERT(e != 0 && e->graphOf() == this)
+	node &src = e->m_src, &tgt = e->m_tgt;
+
+	swap(src,tgt);
+	swap(e->m_adjSrc,e->m_adjTgt);
+	src->m_outdeg++; src->m_indeg--;
+	tgt->m_outdeg--; tgt->m_indeg++;
+}
+
+
+void Graph::reverseAllEdges()
+{
+	for (edge e = m_edges.begin(); e; e = e->succ())
+		reverseEdge(e);
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+}
+
+
+void Graph::reverseAdjEdges()
+{
+	node v;
+	forall_nodes(v,*this)
+		reverseAdjEdges(v);
+}
+
+
+node Graph::chooseNode() const
+{
+	if (m_nNodes == 0) return 0;
+	int k = ogdf::randomNumber(0,m_nNodes-1);
+	node v = firstNode();
+	while(k--) v = v->succ();
+	return v;
+}
+
+
+edge Graph::chooseEdge() const
+{
+	if (m_nEdges == 0) return 0;
+	int k = ogdf::randomNumber(0,m_nEdges-1);
+	edge e = firstEdge();
+	while(k--) e = e->succ();
+	return e;
+}
+
+
+edge Graph::searchEdge(node v, node w) const
+{
+	OGDF_ASSERT(v != 0 && v->graphOf() == this)
+	OGDF_ASSERT(w != 0 && w->graphOf() == this)
+	adjEntry adj;
+	forall_adj(adj,v) {
+		if(adj->twinNode() == w) return adj->twin()->theEdge();
+	}
+	return 0;
+}
+
+
+void Graph::hideEdge(edge e)
+{
+	OGDF_ASSERT(e != 0 && e->graphOf() == this)
+	--m_nEdges;
+
+	node src = e->m_src, tgt = e->m_tgt;
+
+	src->m_adjEdges.delPure(e->m_adjSrc);
+	src->m_outdeg--;
+	tgt->m_adjEdges.delPure(e->m_adjTgt);
+	tgt->m_indeg--;
+
+	m_edges.move(e, m_hiddenEdges);
+}
+
+
+void Graph::restoreEdge(edge e)
+{
+	++m_nEdges;
+
+	node v = e->m_src;
+	v->m_adjEdges.pushBack(e->m_adjSrc);
+	++v->m_outdeg;
+
+	node w = e->m_tgt;
+	w->m_adjEdges.pushBack(e->m_adjTgt);
+	++w->m_indeg;
+
+	m_hiddenEdges.move(e, m_edges);
+}
+
+
+void Graph::restoreAllEdges()
+{
+	edge e, ePrev;
+	for(e = m_hiddenEdges.rbegin(); e != 0; e = ePrev) {
+		ePrev = e->pred();
+		restoreEdge(e);
+	}
+}
+
+
+int Graph::genus() const
+{
+	if (m_nNodes == 0) return 0;
+
+	int nIsolated = 0;
+	node v;
+	forall_nodes(v,*this)
+		if (v->degree() == 0) ++nIsolated;
+
+	NodeArray<int> component(*this);
+	int nCC = connectedComponents(*this,component);
+
+	AdjEntryArray<bool> visited(*this,false);
+	int nFaceCycles = 0;
+
+	forall_nodes(v,*this) {
+		adjEntry adj1;
+		forall_adj(adj1,v) {
+			if (visited[adj1]) continue;
+
+			adjEntry adj = adj1;
+			do {
+				visited[adj] = true;
+				adj = adj->faceCycleSucc();
+			} while (adj != adj1);
+
+			++nFaceCycles;
+		}
+	}
+
+	return (m_nEdges - m_nNodes - nIsolated - nFaceCycles + 2*nCC) / 2;
+}
+
+
+ListIterator<NodeArrayBase*> Graph::registerArray(
+	NodeArrayBase *pNodeArray) const
+{
+	return m_regNodeArrays.pushBack(pNodeArray);
+}
+
+
+ListIterator<EdgeArrayBase*> Graph::registerArray(
+	EdgeArrayBase *pEdgeArray) const
+{
+	return m_regEdgeArrays.pushBack(pEdgeArray);
+}
+
+
+ListIterator<AdjEntryArrayBase*> Graph::registerArray(
+	AdjEntryArrayBase *pAdjArray) const
+{
+	return m_regAdjArrays.pushBack(pAdjArray);
+}
+
+ListIterator<GraphObserver*> Graph::registerStructure(
+	GraphObserver *pStructure) const
+{
+	return m_regStructures.pushBack(pStructure);
+}//registerstructure
+
+
+void Graph::unregisterArray(ListIterator<NodeArrayBase*> it) const
+{
+	m_regNodeArrays.del(it);
+}
+
+
+void Graph::unregisterArray(ListIterator<EdgeArrayBase*> it) const
+{
+	m_regEdgeArrays.del(it);
+}
+
+
+void Graph::unregisterArray(ListIterator<AdjEntryArrayBase*> it) const
+{
+	m_regAdjArrays.del(it);
+}
+
+void Graph::unregisterStructure(ListIterator<GraphObserver*> it) const
+{
+	m_regStructures.del(it);
+}
+
+void Graph::reinitArrays()
+{
+	ListIterator<NodeArrayBase*> itNode = m_regNodeArrays.begin();
+	for(; itNode.valid(); ++itNode)
+		(*itNode)->reinit(m_nodeArrayTableSize);
+
+	ListIterator<EdgeArrayBase*> itEdge = m_regEdgeArrays.begin();
+	for(; itEdge.valid(); ++itEdge)
+		(*itEdge)->reinit(m_edgeArrayTableSize);
+
+	ListIterator<AdjEntryArrayBase*> itAdj = m_regAdjArrays.begin();
+	for(; itAdj.valid(); ++itAdj)
+		(*itAdj)->reinit(m_edgeArrayTableSize << 1);
+}
+
+void Graph::reinitStructures()
+{
+	//is there a challenge?
+	ListIterator<GraphObserver*> itGS = m_regStructures.begin();
+	for (;itGS.valid(); ++itGS)
+		(*itGS)->reInit();
+}
+
+
+void Graph::resetAdjEntryIndex(int newIndex, int oldIndex)
+{
+	ListIterator<AdjEntryArrayBase*> itAdj = m_regAdjArrays.begin();
+	for(; itAdj.valid(); ++itAdj)
+		(*itAdj)->resetIndex(newIndex,oldIndex);
+}
+
+
+int Graph::nextPower2(int start, int idCount)
+{
+	while (start <= idCount)
+		start <<= 1;
+
+	return start;
+}
+
+
+bool Graph::readGML(const char *fileName)
+{
+	ifstream is(fileName);
+	return readGML(is);
+}
+
+
+bool Graph::readGML(istream &is)
+{
+	GmlParser gml(is);
+	if (gml.error()) return false;
+	bool result = gml.read(*this);
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return result;
+}
+
+
+void Graph::writeGML(const char *fileName) const
+{
+	ofstream os(fileName);
+	writeGML(os);
+}
+
+
+void Graph::writeGML(ostream &os) const
+{
+	NodeArray<int> id(*this);
+	int nextId = 0;
+
+	os << "Creator \"ogdf::Graph::writeGML\"\n";
+	os << "graph [\n";
+	os << "  directed 1\n";
+
+	node v;
+	forall_nodes(v,*this) {
+		os << "  node [\n";
+		os << "    id " << (id[v] = nextId++) << "\n";
+		os << "  ]\n"; // node
+	}
+
+	edge e;
+	forall_edges(e,*this) {
+		os << "  edge [\n";
+		os << "    source " << id[e->source()] << "\n";
+		os << "    target " << id[e->target()] << "\n";
+		os << "  ]\n"; // edge
+	}
+
+	os << "]\n"; // graph
+}
+
+
+// read graph in LEDA format from file fileName
+bool Graph::readLEDAGraph(const char *fileName)
+{
+	ifstream is(fileName);
+	return readLEDAGraph(is);
+}
+
+
+bool Graph::readToEndOfLine(istream &is)
+{
+	int c;
+	do {
+		if (is.eof()) return false;
+		c = is.get();
+	} while(c != '\n');
+	return true;
+}
+
+
+// read graph in LEDA format from input stream is
+bool Graph::readLEDAGraph(istream &is)
+{
+	clear();
+
+	// the first three strings in the LEDA format describe the type of the
+	// format, of nodes and of edges. We simply ignore the additional node/
+	// edge attributes
+	String formatType, nodeType, edgeType;
+
+	is >> formatType;
+	is >> nodeType;
+	is >> edgeType;
+
+	if (formatType != "LEDA.GRAPH")
+		return false;
+
+
+	// number of nodes
+	int n;
+	is >> n >> std::ws;
+
+	// create n nodes and ignore n lines
+	Array<node> nodes(1,n);
+	int i;
+	for(i = 1; i <= n; ++i) {
+		if (readToEndOfLine(is) == false)
+			return false;
+		nodes[i] = newNode();
+	}
+
+	// number of edges
+	int m;
+	is >> m;
+
+	for(i = 1; i <= m; ++i) {
+		// read index of source and target node
+		int src, tgt;
+		is >> src >> tgt;
+
+		// indices valid?
+		if (src < 1 || n < src || tgt < 1 || n < tgt)
+			return false;
+
+		newEdge(nodes[src],nodes[tgt]);
+
+		// ignore rest of line
+		if (readToEndOfLine(is) == false)
+			return false;
+	}
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+
+	return true;
+}
+
+
+bool Graph::consistencyCheck() const
+{
+	int n = 0;
+	node v;
+	forall_nodes(v,*this) {
+#ifdef OGDF_DEBUG
+		if (v->graphOf() != this)
+			return false;
+#endif
+
+		n++;
+		int in = 0, out = 0;
+
+		adjEntry adj;
+		forall_adj(adj,v) {
+			edge e = adj->m_edge;
+			if (adj->m_twin->m_edge != e)
+				return false;
+
+			if (e->m_adjSrc == adj)
+				out++;
+			else if (e->m_adjTgt == adj)
+				in++;
+			else
+				return false;
+
+			if (adj->m_node != v)
+				return false;
+
+#ifdef OGDF_DEBUG
+			if (adj->graphOf() != this)
+				return false;
+#endif
+		}
+
+		if (v->m_indeg != in)
+			return false;
+
+		if (v->m_outdeg != out)
+			return false;
+	}
+
+	if (n != m_nNodes)
+		return false;
+
+	int m = 0;
+	edge e;
+	forall_edges(e,*this) {
+#ifdef OGDF_DEBUG
+		if (e->graphOf() != this)
+			return false;
+#endif
+
+		m++;
+		if (e->m_adjSrc == e->m_adjTgt)
+			return false;
+
+		if (e->m_adjSrc->m_edge != e)
+			return false;
+
+		if (e->m_adjTgt->m_edge != e)
+			return false;
+
+		if (e->m_adjSrc->m_node != e->m_src)
+			return false;
+
+		if (e->m_adjTgt->m_node != e->m_tgt)
+			return false;
+	}
+
+	if (m != m_nEdges)
+		return false;
+
+	return true;
+}
+
+
+void Graph::resetEdgeIdCount(int maxId)
+{
+	m_edgeIdCount = maxId+1;
+
+#ifdef OGDF_DEBUG
+	if (ogdf::debugLevel >= int(ogdf::dlConsistencyChecks)) {
+		edge e;
+		forall_edges(e,*this)
+		{
+			// if there is an edge with higer index than maxId, we cannot
+			// set the edge id count to maxId+1
+			if (e->index() > maxId)
+				OGDF_ASSERT(false);
+		}
+	}
+#endif
+}
+
+
+node Graph::splitNode(adjEntry adjStartLeft, adjEntry adjStartRight)
+{
+	OGDF_ASSERT(adjStartLeft != 0 && adjStartRight != 0);
+	OGDF_ASSERT(adjStartLeft->graphOf() == this && adjStartRight->graphOf() == this);
+	OGDF_ASSERT(adjStartLeft->theNode() == adjStartRight->theNode());
+
+	node w = newNode();
+
+	adjEntry adj, adjSucc;
+	for(adj = adjStartRight; adj != adjStartLeft; adj = adjSucc) {
+		adjSucc = adj->cyclicSucc();
+		moveAdj(adj,w);
+	}
+
+	newEdge(adjStartLeft, adjStartRight, ogdf::before);
+
+	return w;
+}
+
+
+node Graph::contract(edge e)
+{
+	adjEntry adjSrc = e->adjSource();
+	adjEntry adjTgt = e->adjTarget();
+	node v = e->source();
+	node w = e->target();
+
+	adjEntry adjNext;
+	for(adjEntry adj = adjTgt->cyclicSucc(); adj != adjTgt; adj = adjNext)
+	{
+		adjNext = adj->cyclicSucc();
+
+		edge eAdj = adj->theEdge();
+		if(w == eAdj->source())
+			moveSource(eAdj, adjSrc, before);
+		else
+			moveTarget(eAdj, adjSrc, before);
+	}
+
+	delNode(adjTgt->theNode());
+
+	return v;
+}
+
+
+void Graph::moveAdj(adjEntry adj, node w)
+{
+	node v = adj->m_node;
+
+	v->m_adjEdges.move(adj,w->m_adjEdges);
+	adj->m_node = w;
+
+	edge e = adj->m_edge;
+	if(v == e->m_src) {
+		--v->m_outdeg;
+		e->m_src = w;
+		++w->m_outdeg;
+	} else {
+		--v->m_indeg;
+		e->m_tgt = w;
+		++w->m_indeg;
+	}
+}
+
+
+ostream &operator<<(ostream &os, ogdf::node v)
+{
+	if (v) os << v->index(); else os << "nil";
+	return os;
+}
+
+ostream &operator<<(ostream &os, ogdf::edge e)
+{
+	if (e) os << "(" << e->source() << "," << e->target() << ")";
+	else os << "nil";
+	return os;
+}
+
+ostream &operator<<(ostream &os, ogdf::adjEntry adj)
+{
+	if (adj) {
+		ogdf::edge e = adj->theEdge();
+		if (adj == e->adjSource())
+			os << e->source() << "->" << e->target();
+		else
+			os << e->target() << "->" << e->source();
+	} else os << "nil";
+	return os;
+}
+
+
+} // end namespace ogdf
+
diff --git a/ogdf/basic/Graph.h b/ogdf/basic/Graph.h
new file mode 100644
index 0000000..6f2fc64
--- /dev/null
+++ b/ogdf/basic/Graph.h
@@ -0,0 +1,75 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Includes declaration of graph class.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_GRAPH_H
+#define OGDF_GRAPH_H
+
+
+#include "List.h"
+#include "NodeArray.h"
+#include "EdgeArray.h"
+
+
+
+namespace ogdf {
+
+	//! Output operator for nodes; prints node index (or "nil").
+	OGDF_EXPORT ostream &operator<<(ostream &os, ogdf::node v);
+
+	//! Output operator for edges; prints source and target indices (or "nil").
+	OGDF_EXPORT ostream &operator<<(ostream &os, ogdf::edge e);
+
+	//! Output operator for adjacency entries; prints node and twin indices (or "nil").
+	OGDF_EXPORT ostream &operator<<(ostream &os, ogdf::adjEntry adj);
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/GraphAttributes.cpp b/ogdf/basic/GraphAttributes.cpp
new file mode 100644
index 0000000..2f9418c
--- /dev/null
+++ b/ogdf/basic/GraphAttributes.cpp
@@ -0,0 +1,1256 @@
+/*
+ * $Revision: 2571 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-10 17:25:20 +0200 (Di, 10. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class GraphAttributes.
+ *
+ * Class GraphAttributes extends a graph by graphical attributes like
+ * node position, color, etc.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "GraphAttributes.h"
+#include "../fileformats/GmlParser.h"
+#include "../fileformats/XmlParser.h"
+
+
+namespace ogdf {
+
+//---------------------------------------------------------
+// GraphAttributes
+// graph topology + graphical attributes
+//---------------------------------------------------------
+
+GraphAttributes::GraphAttributes() : m_pGraph(0), m_directed(true) { }
+
+
+
+GraphAttributes::GraphAttributes(const Graph &G, long initAttr) :
+	m_pGraph(&G), m_directed(true), m_attributes(0)
+{
+	initAttributes(m_attributes = initAttr);
+}
+
+
+
+void GraphAttributes::initAttributes(long attr)
+{
+	m_attributes |= attr;
+
+	//no color without graphics
+	OGDF_ASSERT( (m_attributes & nodeGraphics) != 0 || (m_attributes & nodeColor) == 0);
+	//no fill and linewithout graphics
+	OGDF_ASSERT( (m_attributes & nodeGraphics) != 0 || (attr & nodeStyle) == 0);
+	//no color without graphics
+	OGDF_ASSERT( (m_attributes & edgeGraphics) != 0 || (attr & edgeColor) == 0);
+
+	if (attr & nodeGraphics) {
+		m_x     .init(*m_pGraph,0.0);
+		m_y     .init(*m_pGraph,0.0);
+		m_width .init(*m_pGraph,0.0);
+		m_height.init(*m_pGraph,0.0);
+		m_nodeShape.init(*m_pGraph,rectangle);
+	}
+
+	if (attr & nodeColor)
+	{
+		m_nodeColor.init(*m_pGraph, "");
+		m_nodeLine.init(*m_pGraph, "");
+	}
+
+	if (attr & nodeStyle)
+	{
+		m_nodePattern.init(*m_pGraph, bpNone);
+		m_nodeStyle.init(*m_pGraph, esSolid);
+		m_nodeLineWidth.init(*m_pGraph, 1);
+		//images should not be added here as nodestyle, purely experimental
+		//such that it fits PG code
+		//images:
+		m_imageUri.init(*m_pGraph, "");
+		m_imageStyle.init(*m_pGraph, GraphAttributes::FreeScale);
+		m_imageAlign.init(*m_pGraph, GraphAttributes::Center);
+		m_imageDrawLine.init(*m_pGraph, false);
+		m_imageWidth.init(*m_pGraph, 0);
+		m_imageHeight.init(*m_pGraph, 0);
+	}
+
+	if (attr & edgeGraphics) {
+		m_bends.init(*m_pGraph,DPolyline());
+	}
+
+	if (attr & edgeColor)
+		m_edgeColor.init(*m_pGraph);
+
+	if (attr & edgeStyle)
+	{
+		m_edgeStyle.init(*m_pGraph, esSolid);
+		m_edgeWidth.init(*m_pGraph, 1.0);
+	}
+
+	if (attr & nodeLevel) {
+		m_level.init(*m_pGraph,0);
+	}
+	if (attr & nodeWeight) {
+		m_nodeIntWeight.init(*m_pGraph,0);
+	}
+	if (attr & edgeIntWeight) {
+		m_intWeight.init(*m_pGraph,1);
+	}
+	if (attr & edgeDoubleWeight) {
+		m_doubleWeight.init(*m_pGraph,1.0);
+	}
+	if (attr & nodeLabel) {
+		m_nodeLabel.init(*m_pGraph);
+	}
+	if (attr & edgeLabel) {
+		m_edgeLabel.init(*m_pGraph);
+	}
+	if (attr & edgeType) {
+		m_eType.init(*m_pGraph,Graph::association);//should be Graph::standard end explicitly set
+	}
+	if (attr & nodeType) {
+		m_vType.init(*m_pGraph,Graph::vertex);
+	}
+	if (attr & nodeId) {
+		m_nodeId.init(*m_pGraph, -1);
+	}
+	if (attr & edgeArrow) {
+		m_edgeArrow.init(*m_pGraph, undefined);
+	}
+	if (attr & nodeTemplate) {
+		m_nodeTemplate.init(*m_pGraph);
+	}
+	if (attr & edgeSubGraph) {
+		m_subGraph.init(*m_pGraph,0);
+	}
+}
+
+void GraphAttributes::destroyAttributes(long attr)
+{
+	m_attributes &= ~attr;
+
+	if (attr & nodeGraphics) {
+		m_x     .init();
+		m_y     .init();
+		m_width .init();
+		m_height.init();
+		m_nodeShape.init();
+		if (attr & nodeColor)
+			m_nodeColor.init();
+		if (attr & nodeStyle)
+		{
+			m_nodePattern.init();
+			m_nodeLine.init();
+			m_nodeLineWidth.init();
+			//should have its own trigger attribute
+			//images
+			m_imageUri.init();
+			m_imageStyle.init();
+			m_imageAlign.init();
+			m_imageDrawLine.init();
+			m_imageWidth.init();
+			m_imageHeight.init();
+		}
+	}
+
+	if (attr & edgeGraphics) {
+		m_bends.init();
+	}
+	if (attr & edgeColor)
+	{
+		m_edgeColor.init();
+	}
+	if (attr & edgeStyle)
+	{
+		m_edgeStyle.init();
+		m_edgeWidth.init();
+	}
+
+	if (attr & nodeLevel) {
+		m_level.init();
+	}
+	if (attr & nodeWeight) {
+		m_nodeIntWeight.init();
+	}
+	if (attr & edgeIntWeight) {
+		m_intWeight.init();
+	}
+	if (attr & edgeDoubleWeight) {
+		m_doubleWeight.init();
+	}
+	if (attr & nodeLabel) {
+		m_nodeLabel.init();
+	}
+	if (attr & edgeLabel) {
+		m_edgeLabel.init();
+	}
+	if (attr & nodeId) {
+		m_nodeId.init();
+	}
+	if (attr & edgeArrow) {
+		m_edgeArrow.init();
+	}
+	if (attr & nodeTemplate) {
+		m_nodeTemplate.init();
+	}
+	if (attr & edgeSubGraph) {
+		m_subGraph.init();
+	}
+}
+
+
+void GraphAttributes::init(const Graph &G, long initAttr)
+{
+	m_pGraph = &G;
+	destroyAttributes(m_attributes);
+	m_attributes = 0;
+	initAttributes(m_attributes = initAttr);
+}
+
+void GraphAttributes::setAllWidth(double w)
+{
+	node v;
+	forall_nodes(v,*m_pGraph)
+		m_width[v] = w;
+}
+
+
+void GraphAttributes::setAllHeight(double h)
+{
+	node v;
+	forall_nodes(v,*m_pGraph)
+		m_height[v] = h;
+}
+
+
+void GraphAttributes::clearAllBends()
+{
+	edge e;
+	forall_edges(e,*m_pGraph)
+		m_bends[e].clear();
+}
+
+
+bool GraphAttributes::readGML(Graph &G, const String &fileName)
+{
+	ifstream is(fileName.cstr());
+	if (!is)
+		return false; // couldn't open file
+
+	return readGML(G,is);
+}
+
+
+bool GraphAttributes::readGML(Graph &G, istream &is)
+{
+	GmlParser gml(is);
+	if (gml.error())
+		return false;
+
+	return gml.read(G,*this);
+}
+
+
+bool GraphAttributes::readRudy(Graph &G, const String &fileName)
+{
+	ifstream is(fileName.cstr());
+	if (!is)
+		return false;
+	return readRudy(G,is);
+}
+
+
+bool GraphAttributes::readRudy(Graph &G, istream &is)
+{
+	if (!is)
+		return false;
+	int i;
+	int n, m;
+	int src, tgt;
+	double weight;
+	edge e;
+
+	is >> n >> m;
+
+	G.clear();
+	Array<node> mapToNode(0,n-1,0);
+
+	if (attributes() & edgeDoubleWeight){
+		for(i=0; i<m; i++) {
+			is >> src >> tgt >> weight;
+			src--;
+			tgt--;
+			if(mapToNode[src] == 0) mapToNode[src] = G.newNode(src);
+			if(mapToNode[tgt] == 0) mapToNode[tgt] = G.newNode(tgt);
+			e = G.newEdge(mapToNode[src],mapToNode[tgt]);
+			this->doubleWeight(e)=weight;
+		}
+	}
+	return true;
+}
+
+
+void GraphAttributes::writeRudy(const String &fileName) const
+{
+	ofstream os(fileName.cstr());
+	writeRudy(os);
+}
+
+
+void GraphAttributes::writeRudy(ostream &os) const
+{
+	const Graph &G = this->constGraph();
+	os << G.numberOfNodes() << " " << G.numberOfEdges() << endl;
+
+	edge e;
+	if (attributes() & edgeDoubleWeight){
+		forall_edges(e,G) {
+			os << (e->source()->index())+1 << " " << (e->target()->index())+1;
+			os << " " << this->doubleWeight(e) << endl;
+		}
+	}
+	else forall_edges(e,G) os << (e->source()->index())+1 << " " << (e->target()->index())+1 << endl;
+}
+
+
+const int c_maxLengthPerLine = 200;
+
+void GraphAttributes::writeLongString(ostream &os, const String &str) const
+{
+	os << "\"";
+
+	int num = 1;
+	const char *p = str.cstr();
+	while(*p != 0)
+	{
+		switch(*p) {
+		case '\\':
+			os << "\\\\";
+			num += 2;
+			break;
+		case '\"':
+			os << "\\\"";
+			num += 2;
+			break;
+
+		// ignored white space
+		case '\r':
+		case '\n':
+		case '\t':
+			break;
+
+		default:
+			os << *p;
+			++num;
+		}
+
+		if(num >= c_maxLengthPerLine) {
+			os << "\\\n";
+			num = 0;
+		}
+
+		++p;
+	}
+
+	os << "\"";
+}
+
+
+void GraphAttributes::writeGML(const String &fileName) const
+{
+	ofstream os(fileName.cstr());
+	writeGML(os);
+}
+
+
+void GraphAttributes::writeGML(ostream &os) const
+{
+	NodeArray<int> id(*m_pGraph);
+	int nextId = 0;
+
+	os.setf(ios::showpoint);
+	os.precision(10);
+
+	os << "Creator \"ogdf::GraphAttributes::writeGML\"\n";
+
+	os << "graph [\n";
+
+	os << (m_directed ? "  directed 1\n" : "  directed 0\n");
+
+	node v;
+	forall_nodes(v,*m_pGraph) {
+		os << "  node [\n";
+
+		os << "    id " << (id[v] = nextId++) << "\n";
+
+		if (attributes() & nodeTemplate) {
+			os << "    template ";
+			writeLongString(os, templateNode(v));
+			os << "\n";
+		}
+
+		if (attributes() & nodeLabel) {
+			//os << "label \"" << labelNode(v) << "\"\n";
+			os << "    label ";
+			writeLongString(os, labelNode(v));
+			os << "\n";
+		}
+
+		if (m_attributes & nodeGraphics) {
+			os << "    graphics [\n";
+			os << "      x " << m_x[v] << "\n";
+			os << "      y " << m_y[v] << "\n";
+			os << "      w " << m_width[v] << "\n";
+			os << "      h " << m_height[v] << "\n";
+			if (m_attributes & nodeColor)
+			{
+				os << "      fill \"" << m_nodeColor[v] << "\"\n";
+				os << "      line \"" << m_nodeLine[v] << "\"\n";
+			}//color
+			if (m_attributes & nodeStyle)
+			{
+				os << "      pattern \"" << m_nodePattern[v] << "\"\n";
+				os << "      stipple " << styleNode(v) << "\n";
+				os << "      lineWidth " << lineWidthNode(v) << "\n";
+			}
+			switch (m_nodeShape[v])
+			{
+				case rectangle: os << "      type \"rectangle\"\n"; break;
+				case oval: os << "      type \"oval\"\n"; break;
+			}
+			os << "      width 1.0\n";
+			os << "    ]\n"; // graphics
+		}
+
+		os << "  ]\n"; // node
+	}
+
+	edge e;
+	forall_edges(e,*m_pGraph) {
+		os << "  edge [\n";
+
+		os << "    source " << id[e->source()] << "\n";
+		os << "    target " << id[e->target()] << "\n";
+
+		if (attributes() & edgeLabel){
+			os << "    label ";
+			writeLongString(os, labelEdge(e));
+			os << "\n";
+		}
+		if (attributes() & edgeType)
+			os << "    generalization " << type(e) << "\n";
+
+		if (attributes() & edgeSubGraph)
+			os << "    subgraph " << subGraphBits(e) << "\n";
+
+		if (m_attributes & edgeGraphics) {
+			os << "    graphics [\n";
+
+			os << "      type \"line\"\n";
+
+			if (attributes() & GraphAttributes::edgeType) {
+				if (attributes() & GraphAttributes::edgeArrow) {
+					switch(arrowEdge(e)) {
+						case GraphAttributes::none:
+							os << "      arrow \"none\"\n";
+							break;
+
+						case GraphAttributes::last:
+							os << "      arrow \"last\"\n";
+							break;
+
+						case GraphAttributes::first:
+							os << "      arrow \"first\"\n";
+							break;
+
+						case GraphAttributes::both:
+							os << "      arrow \"both\"\n";
+							break;
+
+						case GraphAttributes::undefined:
+							// do nothing
+							break;
+
+						default:
+							// do nothing
+							break;
+					}
+				} else {
+					if (type(e) == Graph::generalization)
+						os << "      arrow \"last\"\n";
+					else
+						os << "      arrow \"none\"\n";
+				}
+
+			} else { // GraphAttributes::edgeType not used
+				if (m_directed) {
+					os << "      arrow \"last\"\n";
+				} else {
+					os << "      arrow \"none\"\n";
+				}
+			}
+
+			if (attributes() & GraphAttributes::edgeStyle)
+			{
+				os << "      stipple " << styleEdge(e) << "\n";
+				os << "      lineWidth " << edgeWidth(e) << "\n";
+			}//edgestyle is gml graphlet extension!!!
+			if (attributes() & edgeDoubleWeight)
+			{
+				os << "      weight " << doubleWeight(e) << "\n";
+			}
+			//hier noch Unterscheidung Knotentypen, damit die Berechnung
+			//fuer Ellipsen immer bis zum echten Rand rechnet
+			const DPolyline &dpl = m_bends[e];
+			if (!dpl.empty()) {
+				os << "      Line [\n";
+
+				node v = e->source();
+				if(dpl.front().m_x < m_x[v] - m_width[v]/2 ||
+					dpl.front().m_x > m_x[v] + m_width[v]/2 ||
+					dpl.front().m_y < m_y[v] - m_height[v]/2 ||
+					dpl.front().m_y > m_y[v] + m_height[v]/2)
+				{
+					os << "        point [ x " << m_x[e->source()] << " y " <<
+						m_y[e->source()] << " ]\n";
+				}
+
+				ListConstIterator<DPoint> it;
+				for(it = dpl.begin(); it.valid(); ++it)
+					os << "        point [ x " << (*it).m_x << " y " << (*it).m_y << " ]\n";
+
+				v = e->target();
+				if(dpl.back().m_x < m_x[v] - m_width[v]/2 ||
+					dpl.back().m_x > m_x[v] + m_width[v]/2 ||
+					dpl.back().m_y < m_y[v] - m_height[v]/2 ||
+					dpl.back().m_y > m_y[v] + m_height[v]/2)
+				{
+					os << "        point [ x " << m_x[e->target()] << " y " <<
+						m_y[e->target()] << " ]\n";
+				}
+
+				os << "      ]\n"; // Line
+			}//bends
+
+			//output width and color
+			if ((m_attributes & edgeColor) &&
+				(m_edgeColor[e].length() != 0))
+				os << "      fill \"" << m_edgeColor[e] << "\"\n";
+
+			os << "    ]\n"; // graphics
+		}
+
+		os << "  ]\n"; // edge
+	}
+
+	os << "]\n"; // graph
+}
+
+
+bool GraphAttributes::readXML(Graph &G, const String &fileName)
+{
+	ifstream is(fileName.cstr());
+	return readXML(G,is);
+}
+
+
+bool GraphAttributes::readXML(Graph &G, istream &is)
+{
+	// need at least these attributes
+	initAttributes(~m_attributes &
+		(nodeGraphics | edgeGraphics | nodeLabel | edgeLabel));
+
+	XmlParser xml(is);
+	if (xml.error()) return false;
+
+	return xml.read(G,*this);
+}
+
+
+
+//
+// calculates the bounding box of the graph
+const DRect GraphAttributes::boundingBox() const
+{
+	double minx, maxx, miny, maxy;
+	const Graph           &G  = constGraph();
+	const GraphAttributes &AG = *this;
+	node v = G.firstNode();
+
+	if (v == 0) {
+		minx = maxx = miny = maxy = 0.0;
+	}
+	else {
+		minx = AG.x(v) - AG.width(v)/2;
+		maxx = AG.x(v) + AG.width(v)/2;
+		miny = AG.y(v) - AG.height(v)/2;
+		maxy = AG.y(v) + AG.height(v)/2;
+
+		forall_nodes(v, G) {
+			double x1 = AG.x(v) - AG.width(v)/2;
+			double x2 = AG.x(v) + AG.width(v)/2;
+			double y1 = AG.y(v) - AG.height(v)/2;
+			double y2 = AG.y(v) + AG.height(v)/2;
+
+			if (x1 < minx) minx = x1;
+			if (x2 > maxx) maxx = x2;
+			if (y1 < miny) miny = y1;
+			if (y2 > maxy) maxy = y2;
+		}
+	}
+
+	edge e;
+	forall_edges(e, G) {
+		const DPolyline &dpl = AG.bends(e);
+		ListConstIterator<DPoint> iter;
+		for (iter = dpl.begin(); iter.valid(); ++iter) {
+			if ((*iter).m_x < minx) minx = (*iter).m_x;
+			if ((*iter).m_x > maxx) maxx = (*iter).m_x;
+			if ((*iter).m_y < miny) miny = (*iter).m_y;
+			if ((*iter).m_y > maxy) maxy = (*iter).m_y;
+		}
+	}
+
+	return DRect(minx, miny, maxx, maxy);
+}
+
+
+//
+// returns a list of all hierachies in the graph (a hierachy consists of a set of nodes)
+// at least one list is returned, which is the list of all nodes not belonging to any hierachy
+// this is always the first list
+// the return-value of this function is the number of hierachies
+int GraphAttributes::hierarchyList(List<List<node>* > &list) const
+{
+	// list must be empty during startup
+	OGDF_ASSERT(list.empty());
+
+	const Graph &G = constGraph();
+	Array<bool> processed(0, G.maxNodeIndex(), false);
+	node v;
+	edge e;
+
+	// initialize the first list of all single nodes
+	List<node> *firstList = OGDF_NEW List<node>;
+	list.pushBack(firstList);
+
+	forall_nodes(v, G) { // scan all nodes
+
+		// skip, if already processed
+		if (processed[v->index()])
+			continue;
+
+		List<node> nodeSet;                    // set of nodes in this hierachy,
+		// whose neighbours have to be processed
+		List<node> *hierachy = OGDF_NEW List<node>; // holds all nodes in this hierachy
+
+		nodeSet.pushBack(v);           // push the unprocessed node to the list
+		processed[v->index()] = true;  // and mark it as processed
+
+		do { // scan all neighbours of nodes in 'nodeSet'
+			node v = nodeSet.popFrontRet();
+			hierachy->pushBack(v); // push v to the list of nodes in this hierachy
+
+			// process all the neighbours of v, e.g. push them into 'nodeSet'
+			forall_adj_edges(e, v) {
+				if (type(e) == Graph::generalization) {
+					node w = e->source() == v ? e->target() : e->source();
+					if (!processed[w->index()]) {
+						nodeSet.pushBack(w);
+						processed[w->index()] = true;
+					}
+				}
+			}
+		} while (!nodeSet.empty());
+
+		// skip adding 'hierachy', if it contains only one node
+		if (hierachy->size() == 1) {
+			firstList->conc(*hierachy);
+			delete hierachy;
+		}
+		else
+			list.pushBack(hierachy);
+	}
+
+	return list.size() - 1 + (*list.begin())->size();
+}
+
+
+//
+// returns a list of all hierarchies in the graph (in this case, a hierarchy consists of a set of edges)
+// list may be empty, if no generalizations are used
+// the return-value of this function is the number of hierarchies with generalizations
+int GraphAttributes::hierarchyList(List<List<edge>* > &list) const
+{
+	// list must be empty during startup
+	OGDF_ASSERT(list.empty());
+
+	const Graph &G = constGraph();
+	Array<bool> processed(0, G.maxNodeIndex(), false);
+	node v;
+	edge e;
+
+	forall_nodes(v, G) { // scan all nodes
+
+		// skip, if already processed
+		if (processed[v->index()])
+			continue;
+
+		List<node> nodeSet;                    // set of nodes in this hierarchy,
+		// whose neighbours have to be processed
+		List<edge> *hierarchy = OGDF_NEW List<edge>; // holds all edges in this hierarchy
+
+		nodeSet.pushBack(v);           // push the unprocessed node to the list
+		processed[v->index()] = true;  // and mark it as processed
+
+		do { // scan all neighbours of nodes in 'nodeSet'
+			node v = nodeSet.popFrontRet();
+
+			// process all the neighbours of v, e.g. push them into 'nodeSet'
+			forall_adj_edges(e, v) {
+				if (type(e) == Graph::generalization) {
+					node w = e->source() == v ? e->target() : e->source();
+					if (!processed[w->index()]) {
+						nodeSet.pushBack(w);
+						processed[w->index()] = true;
+						hierarchy->pushBack(e); // push e to the list of edges in this hierarchy
+					}
+				}
+			}
+		} while (!nodeSet.empty());
+
+		// skip adding 'hierarchy', if it contains only one node
+		if (hierarchy->empty())
+			delete hierarchy;
+		else
+			list.pushBack(hierarchy);
+	}
+
+	return list.size();
+}
+
+
+
+void GraphAttributes::removeUnnecessaryBendsHV()
+{
+	edge e;
+	forall_edges(e,*m_pGraph)
+	{
+		DPolyline &dpl = m_bends[e];
+
+		if(dpl.size() < 3)
+			continue;
+
+		ListIterator<DPoint> it1, it2, it3;
+
+		it1 = dpl.begin();
+		it2 = it1.succ();
+		it3 = it2.succ();
+
+		do {
+			if(((*it1).m_x == (*it2).m_x && (*it2).m_x == (*it3).m_x) ||
+				((*it1).m_y == (*it2).m_y && (*it2).m_y == (*it3).m_y))
+			{
+				dpl.del(it2);
+				it2 = it3;
+			} else {
+				it1 = it2;
+				it2 = it3;
+			}
+
+			it3 = it2.succ();
+		} while(it3.valid());
+	}
+}
+
+
+void GraphAttributes::writeXML(
+	const String &fileName,
+	const char* delimiter,
+	const char* offset) const
+{
+	ofstream os(fileName.cstr());
+	writeXML(os,delimiter,offset);
+}
+
+
+void GraphAttributes::writeXML(
+	ostream &os,
+	const char* delimiter,
+	const char* offset) const
+{
+	NodeArray<int> id(*m_pGraph);
+
+	int nextId = 0;
+
+	os.setf(ios::showpoint);
+	os.precision(10);
+
+	os << "<GRAPH TYPE=\"SSJ\">" << delimiter;
+
+	node v;
+	forall_nodes(v,*m_pGraph) {
+		if (m_attributes & nodeLabel)
+		{
+			os << "<NODE NAME=\"" << m_nodeLabel[v] << "\">" << delimiter;
+		}
+		id[v] = nextId++;
+
+		if (m_attributes & nodeGraphics) {
+			os << offset << "<POSITION X=\"" << m_x[v] << "\" ";
+			os << "Y=\"" << m_y[v] << "\" /> " << delimiter;
+			os << offset << "<SIZE WIDTH=\"" << m_width[v] << "\" ";
+			os << "HEIGHT=\"" << m_height[v] << "\" />"  << delimiter;
+
+		}
+		os << "</NODE>" << delimiter;
+	}
+
+	edge e;
+	forall_edges(e,*m_pGraph) {
+		if (m_attributes & edgeLabel)
+		{
+			os << "<EDGE NAME=\"" << m_edgeLabel[e] << "\" ";
+		}
+		if (m_attributes & nodeLabel)
+		{
+			os << "SOURCE=\"" << m_nodeLabel[e->source()] << "\" ";
+			os << "TARGET=\"" << m_nodeLabel[e->target()] << "\" ";
+			os << "GENERALIZATION=\"" << (m_eType[e]==Graph::generalization?1:0) << "\">" << delimiter;
+		}
+
+		if (m_attributes & edgeGraphics) {
+
+			const DPolyline &dpl = m_bends[e];
+			if (!dpl.empty()) {
+				os << offset << "<PATH TYPE=\"polyline\">" << delimiter;
+/*				if (m_backward[e])
+				{
+					os << (*dpl.rbegin()).m_x  << " " <<  (*dpl.rbegin()).m_y << " ";
+					if (dpl.size() > 1)
+						os << (*dpl.begin()).m_x << " " << (*dpl.begin()).m_y << " ";
+				}
+				else
+				{
+*/
+				ListConstIterator<DPoint> iter;
+				for (iter = dpl.begin(); iter.valid(); ++iter)
+					os << offset << offset << "<POSITION X=\"" << (*iter).m_x << "\" "
+						<< "Y=\"" << (*iter).m_y << "\" />" << delimiter;
+//					if (dpl.size() > 1)
+//						os << "<POSITION X=\"" << (*dpl.rbegin()).m_x << "\" "
+//						   << "Y=\"" << (*dpl.rbegin()).m_y << "\" />";
+//				}
+				os << offset << "</PATH>" << delimiter;
+			}
+
+		}
+
+		os << "</EDGE>" << delimiter; // edge
+	}
+
+	os << "</GRAPH>";
+}
+
+void GraphAttributes::addNodeCenter2Bends(int mode)
+{
+	edge e;
+	forall_edges(e, *m_pGraph) {
+		node v = e->source();
+		node w = e->target();
+		DPolyline &bendpoints = bends(e);
+		switch (mode) {
+		case 0 : // push center to the bends and return
+			bendpoints.pushFront(DPoint(x(v), y(v)));
+			bendpoints.pushBack (DPoint(x(w), y(w)));
+			break;
+		case 1 : // determine intersection with node and [center, last-bend-point]
+			bendpoints.pushFront(DPoint(x(v), y(v)));
+			bendpoints.pushBack (DPoint(x(w), y(w)));
+		case 2 : // determine intersection between node and last bend-segment
+			{
+				DPoint sp1(x(v) - width(v)/2, y(v) - height(v)/2);
+				DPoint sp2(x(v) - width(v)/2, y(v) + height(v)/2);
+				DPoint sp3(x(v) + width(v)/2, y(v) + height(v)/2);
+				DPoint sp4(x(v) + width(v)/2, y(v) - height(v)/2);
+				DLine sourceRect[4] = {
+					DLine(sp1, sp2),
+					DLine(sp2, sp3),
+					DLine(sp3, sp4),
+					DLine(sp4, sp1)
+				};
+
+				DPoint tp1(x(w) - width(w)/2, y(w) - height(w)/2);
+				DPoint tp2(x(w) - width(w)/2, y(w) + height(w)/2);
+				DPoint tp3(x(w) + width(w)/2, y(w) + height(w)/2);
+				DPoint tp4(x(w) + width(w)/2, y(w) - height(w)/2);
+				DLine targetRect[4] = {
+					DLine(tp1, tp2),
+					DLine(tp2, tp3),
+					DLine(tp3, tp4),
+					DLine(tp4, tp1)
+				};
+
+				DRect source(sp1, sp3);
+				DRect target(tp1, tp3);
+
+				DPoint c1 = bendpoints.popFrontRet();
+				DPoint c2 = bendpoints.popBackRet();
+
+				while (!bendpoints.empty() && source.contains(bendpoints.front()))
+					c1 = bendpoints.popFrontRet();
+				while (!bendpoints.empty() && target.contains(bendpoints.back()))
+					c2 = bendpoints.popBackRet();
+
+				DPoint a1, a2;
+				int i;
+				if (bendpoints.size() == 0) {
+					DLine cross(c1, c2);
+					for (i = 0; i < 4; i++)
+						if (cross.intersection(sourceRect[i], a1)) break;
+					for (i = 0; i < 4; i++)
+						if (cross.intersection(targetRect[i], a2)) break;
+				}
+				else {
+					DLine cross1(c1, bendpoints.front());
+					for (i = 0; i < 4; i++)
+						if (cross1.intersection(sourceRect[i], a1)) break;
+					DLine cross2(bendpoints.back(), c2);
+					for (i = 0; i < 4; i++)
+						if (cross2.intersection(targetRect[i], a2)) break;
+				}
+				bendpoints.pushFront(a1);
+				bendpoints.pushBack(a2);
+				break;
+			}
+			OGDF_NODEFAULT
+		}
+		bendpoints.normalize();
+	}
+}
+
+/* Methods for OGML serialization */
+
+// static helper method for mapping edge styles to ogml
+const char * GraphAttributes::edgeStyleToOGML(const GraphAttributes::EdgeStyle & edgeStyle)
+{
+	switch (edgeStyle)  {
+	case GraphAttributes::esNoPen:
+		return "esNoPen";
+	case GraphAttributes::esSolid:
+		return "esSolid";
+	case GraphAttributes::esDash:
+		return "esDash";
+	case GraphAttributes::esDot:
+		return "esDot";
+	case GraphAttributes::esDashdot:
+		return "esDashdot";
+	case GraphAttributes::esDashdotdot:
+		return "esDashdotdot";
+	default:
+		return "esSolid";
+	}//switch
+}
+
+// static helper method for mapping image alignments to ogml
+const char * GraphAttributes::imageAlignmentToOGML(const GraphAttributes::ImageAlignment &imgAlign)
+{
+	switch (imgAlign)   {
+	case GraphAttributes::TopLeft:
+		return "topLeft";
+	case GraphAttributes::TopCenter:
+		return "topCenter";
+	case GraphAttributes::TopRight:
+		return "topRight";
+	case GraphAttributes::CenterLeft:
+		return "centerLeft";
+	case GraphAttributes::Center:
+		return "center";
+	case GraphAttributes::CenterRight:
+		return "centerRight";
+	case GraphAttributes::BottomLeft:
+		return "bottomLeft";
+	case GraphAttributes::BottomCenter:
+		return "bottomCenter";
+	case GraphAttributes::BottomRight:
+		return "bottomRight";
+	default:
+		return "center";
+	}//switch
+}
+
+
+// static helper method for mapping image style to ogml
+const char * GraphAttributes::imageStyleToOGML(const GraphAttributes::ImageStyle &imgStyle)
+{
+	switch (imgStyle)   {
+	case GraphAttributes::FreeScale: return "freeScale";
+	case GraphAttributes::FixScale:  return "fixScale";
+	default: return "freeScale";
+	}//switch
+}
+
+
+// static helper method for mapping brush patterns styles to ogml
+const char * GraphAttributes::brushPatternToOGML(const GraphAttributes::BrushPattern & brushPattern)
+{
+	switch (brushPattern) {
+	case GraphAttributes::bpNone:
+		return "bpNone";
+	case GraphAttributes::bpSolid:
+		return "bpSolid";
+	case GraphAttributes::bpDense1:
+		return "bpDense1";
+	case GraphAttributes::bpDense2:
+		return "bpDense2";
+	case GraphAttributes::bpDense3:
+		return "bpDense3";
+	case GraphAttributes::bpDense4:
+		return "bpDense4";
+	case GraphAttributes::bpDense5:
+		return "bpDense5";
+	case GraphAttributes::bpDense6:
+		return "bpDense6";
+	case GraphAttributes::bpDense7:
+		return "bpDense7";
+	case GraphAttributes::bpHorizontal:
+		return "bpHorizontal";
+	case GraphAttributes::bpVertical:
+		return "bpVertical";
+	case GraphAttributes::bpCross:
+		return "bpCross";
+	case GraphAttributes::BackwardDiagonal:
+		return "BackwardDiagonal";
+	case GraphAttributes::ForwardDiagonal:
+		return "ForwardDiagonal";
+	case GraphAttributes::DiagonalCross:
+		return "DiagonalCross";
+	default:
+		return "bpSolid";
+	}//switch
+}
+
+
+// static helper method for exchanging X(HT)ML-tag specific chars
+String GraphAttributes::formatLabel(const String& labelText)
+{
+	size_t length = labelText.length();
+	String formattedString;
+
+	for (size_t i = 0; i < length; ++i) {
+		char c = labelText[i];
+		if (c == '<') {
+			formattedString += "<";
+		} else {
+			if (c == '>') {
+				formattedString += ">";
+				if ((i+1 < length) && (labelText[i+1] != '\n'))
+					formattedString += '\n';
+			} else {
+				formattedString += c;
+			}
+		}
+	}
+	return formattedString;
+}
+
+void GraphAttributes::writeSVG(const String &fileName, int fontSize, const String &fontColor) const
+	{
+		ofstream os(fileName.cstr());
+		writeSVG(os, fontSize, fontColor);
+	}
+
+void GraphAttributes::writeSVG(ostream &os, int fontSize, const String &fontColor) const
+{
+	os.setf(ios::showpoint);
+	os.precision(10);
+
+	os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+	os << "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:ev=\"http://www.w3.org/2001/xml-events\" version=\"1.1\" baseProfile=\"full\" ";
+
+	// determine bounding box of svg
+	OGDF_ASSERT((*m_pGraph).numberOfNodes() > 0);
+	double maxX = x((*m_pGraph).firstNode());
+	double maxY = y((*m_pGraph).firstNode());
+	double minX = x((*m_pGraph).firstNode());
+	double minY = y((*m_pGraph).firstNode());
+	double nodeStrokeWidth;
+
+	node v;
+	forall_nodes(v, *m_pGraph) {
+		if (m_attributes & nodeStyle) {
+			nodeStrokeWidth = lineWidthNode(v);
+		} else {
+			nodeStrokeWidth = 1.0;
+		}
+		maxX = max(maxX, x(v) + m_width[v]/2 + nodeStrokeWidth);
+		maxY = max(maxY, y(v) + m_height[v]/2 + nodeStrokeWidth);
+		minX = min(minX, x(v) - m_width[v]/2 - nodeStrokeWidth);
+		minY = min(minY, y(v) - m_height[v]/2 - nodeStrokeWidth);
+	}
+
+	edge e;
+	ListConstIterator<DPoint> it;
+	double edgeStrokeWidth;
+	forall_edges(e, *m_pGraph) {
+		if (m_attributes & edgeGraphics) {
+			if (attributes() & GraphAttributes::edgeStyle) {
+				edgeStrokeWidth = edgeWidth(e);
+			} else {
+				edgeStrokeWidth = 1.0;
+			}
+			const DPolyline &dpl = m_bends[e];
+			if (!dpl.empty()) {
+				for(it = dpl.begin(); it.valid(); ++it) {
+					maxX = max(maxX, (*it).m_x + edgeStrokeWidth);
+					maxY = max(maxY, (*it).m_y + edgeStrokeWidth);
+					minX = min(minX, (*it).m_x - edgeStrokeWidth);
+					minY = min(minY, (*it).m_y - edgeStrokeWidth);
+				}
+			}
+		}
+	}
+
+	os << "width=\"" << (maxX - minX) << "px\" ";
+	os << "height=\"" << (maxY - minY) << "px\" ";
+	os << "viewBox=\"" << 0 << " " << 0 << " " << (maxX - minX) << " " << (maxY - minY) << "\">\n";
+
+	forall_edges(e, *m_pGraph) {
+
+		const DPolyline &dpl = m_bends[e];
+		if (m_attributes & edgeGraphics) {
+			if (!dpl.empty()) { //polyline
+				os << "<polyline fill=\"none\" ";
+
+				if ((m_attributes & edgeColor) && (m_edgeColor[e].length() != 0)) {
+					os << "stroke=\"" << m_edgeColor[e] << "\" ";
+				}
+
+				if (attributes() & GraphAttributes::edgeStyle) {
+					os << "stroke-width=\"" << edgeWidth(e) << "px\" ";
+				} else {
+					os << "stroke=\"#000000\" ";
+				}
+
+				os << "points=\"";
+				node v = e->source();
+				if(dpl.front().m_x < m_x[v] - m_width[v]/2 ||
+						dpl.front().m_x > m_x[v] + m_width[v]/2 ||
+						dpl.front().m_y < m_y[v] - m_height[v]/2 ||
+						dpl.front().m_y > m_y[v] + m_height[v]/2)
+				{
+					os << (m_x[e->source()] - minX) << "," << (m_y[e->source()] - minY) << " ";
+				}
+
+				for(it = dpl.begin(); it.valid(); ++it)
+				os << ((*it).m_x - minX) << "," << ((*it).m_y - minY) << " ";
+
+				v = e->target();
+				if(dpl.back().m_x < m_x[v] - m_width[v]/2 ||
+						dpl.back().m_x > m_x[v] + m_width[v]/2 ||
+						dpl.back().m_y < m_y[v] - m_height[v]/2 ||
+						dpl.back().m_y > m_y[v] + m_height[v]/2)
+				{
+					os << (m_x[e->target()] - minX) << "," << (m_y[e->target()] - minY) << " ";
+				}
+
+				os << "\"/>\n";
+			} else { // single line
+				os << "<line ";
+				os << "x1=\"" << x(e->source()) - minX << "\" ";
+				os << "y1=\"" << y(e->source()) - minY << "\" ";
+				os << "x2=\"" << x(e->target()) - minX << "\" ";
+				os << "y2=\"" << y(e->target()) - minY<< "\" ";
+
+				if ((m_attributes & edgeColor) && (m_edgeColor[e].length() != 0)) {
+					os << "stroke=\"" << m_edgeColor[e] << "\" ";
+				} else {
+					os << "stroke=\"#000000\" ";
+				}
+
+				if (attributes() & GraphAttributes::edgeStyle) {
+					os << "stroke-width=\"" << edgeWidth(e) << "px\" ";
+				}
+
+				os << "/>\n";
+			}
+		}
+	}
+
+	forall_nodes(v,*m_pGraph) {
+		if (m_attributes & nodeGraphics) {
+			switch (m_nodeShape[v])
+			{
+				case rectangle:
+				os << "<rect ";
+				os << "x=\"" << m_x[v] - minX - m_width[v]/2 << "\" ";
+				os << "y=\"" << m_y[v] - minY - m_height[v]/2 << "\" ";
+				os << "width=\"" << m_width[v] << "\" ";
+				os << "height=\"" << m_height[v] << "\" ";
+				break;
+				case oval:
+				os << "<ellipse ";
+				os << "cx=\"" << m_x[v] - minX << "\" ";
+				os << "cy=\"" << m_y[v] - minY << "\" ";
+				os << "rx=\"" << m_width[v]/2 << "\" ";
+				os << "ry=\"" << m_height[v]/2 << "\" ";
+				break;
+			}
+
+			if (m_attributes & nodeColor) {
+				os << "fill=\"" << m_nodeColor[v] << "\" ";
+				os << "stroke=\"" << m_nodeLine[v] << "\" ";
+			}
+
+			if (m_attributes & nodeStyle)
+			{
+				os << "stroke-width=\"" << lineWidthNode(v) << "px\" ";
+			}
+
+			os << "/>\n";
+
+			if(m_attributes & nodeLabel){
+				os << "<text x=\"" << m_x[v] - minX - m_width[v]/2 << "\" y=\"" << m_y[v] - minY << "\" textLength=\"" << m_width[v] << "\" font-size=\"" << fontSize << "\" fill=\"" << fontColor << "\" lengthAdjust=\"spacingAndGlyphs\">" << m_nodeLabel[v] << "</text>\n";
+			}
+		}
+	}
+
+	os << "</svg>\n";
+}
+
+} // end namespace ogdf
diff --git a/ogdf/basic/GraphAttributes.h b/ogdf/basic/GraphAttributes.h
new file mode 100644
index 0000000..50fc9b7
--- /dev/null
+++ b/ogdf/basic/GraphAttributes.h
@@ -0,0 +1,863 @@
+/*
+ * $Revision: 2585 $
+ *
+ * last checkin:
+ *   $Author: klein $
+ *   $Date: 2012-07-12 03:46:50 +0200 (Do, 12. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class GraphAttributes which extends a Graph
+ *        by additional attributes.
+ *
+ * \author Carsten Gutwenger
+ *         Karsten Klein
+ *         Joachim Kupke
+ *         Sebastian Leipert
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_ATTRIBUTED_GRAPH_H
+#define OGDF_ATTRIBUTED_GRAPH_H
+
+#include "NodeArray.h"
+#include "EdgeArray.h"
+#include "String.h"
+#include "geometry.h"
+
+namespace ogdf {
+
+//---------------------------------------------------------
+// GraphAttributes
+// graph topology + graphical attributes
+//---------------------------------------------------------
+//! Stores additional attributes of a graph (like layout information).
+/**
+ * It is frequently necessary to associate additional attributes with a graph.
+ * The class GraphAttributes provides various such attributes and is the
+ * central place were such attributes are stored.
+ *
+ * Attributes are simply stored in node or edge arrays; for memory consumption
+ * reasons, only a subset of these arrays is in fact initialized for the graph;
+ * non-initialized arrays require only a few bytes of extra memory.
+ *
+ * Which arrays are initialized is specified by a bit vector; each bit in this
+ * bit vector corresponds to one or more attributes. E.g., \a #nodeGraphics
+ * corresponds to the attributes \a #m_x, \a #m_y, \a #m_width, and \a #m_height;
+ * whereas \a #edgeDoubleWeight only corresponds to the attribute \a #m_doubleWeight.
+ *
+ * Attributes can be initialized by the constructor GraphAttributes(const Graph &,long)
+ * or the function initAttributes(); attributes can also be deinitialized by
+ * calling destroyAttributes().
+ */
+
+class OGDF_EXPORT GraphAttributes {
+public:
+	//! Types for edge arrows.
+	enum EdgeArrow {
+		none, //!< no edge arrows
+		last, //!< edge arrow at target node of the edge
+		first, //!< edge arrow at source node of the edge
+		both, //!< edge arrow at target and source node of the edge
+		undefined
+	};
+
+	//! Types for line styles.
+	/**
+	 * The line styles are preliminary the same as in QT.
+	 */
+	enum EdgeStyle {
+		esNoPen = 0, //!< no line
+		esSolid = 1, //!< solid line
+		esDash = 2, //!< dashed line
+		esDot = 3, //!< dotted line
+		esDashdot = 4, //!< line style "dash dot dash dot ..."
+		esDashdotdot = 5
+	//!< line style "dash dot dot dash dot dot ..."
+	};
+
+	//! Converts integer \a i to edge style.
+	static EdgeStyle intToStyle(int i) {
+		switch (i) {
+		case 0:
+			return esNoPen;
+		case 1:
+			return esSolid;
+		case 2:
+			return esDash;
+		case 3:
+			return esDot;
+		case 4:
+			return esDashdot;
+		case 5:
+			return esDashdotdot;
+		default:
+			return esNoPen;
+
+		}
+	}
+
+	//! Types for object brush patterns.
+	/**
+	 * The brush patterns are currently the same as the GDE project.
+	 */
+	enum BrushPattern {
+		bpNone = 0,
+		bpSolid = 1,
+		bpDense1 = 2,
+		bpDense2 = 3,
+		bpDense3 = 4,
+		bpDense4 = 5,
+		bpDense5 = 6,
+		bpDense6 = 7,
+		bpDense7 = 8,
+		bpHorizontal = 9,
+		bpVertical = 10,
+		bpCross = 11,
+		BackwardDiagonal = 12,
+		ForwardDiagonal = 13,
+		DiagonalCross = 14
+	};
+
+	//! Converts integer \a i to brush pattern.
+	static BrushPattern intToPattern(int i) {
+		switch (i) {
+		case 0:
+			return bpNone;
+			break;
+		case 1:
+			return bpSolid;
+			break;
+		case 2:
+			return bpDense1;
+			break;
+		case 3:
+			return bpDense2;
+			break;
+		case 4:
+			return bpDense3;
+			break;
+		case 5:
+			return bpDense4;
+			break;
+		case 6:
+			return bpDense5;
+			break;
+		case 7:
+			return bpDense6;
+			break;
+		case 8:
+			return bpDense7;
+			break;
+		case 9:
+			return bpHorizontal;
+			break;
+		case 10:
+			return bpVertical;
+			break;
+		case 11:
+			return bpCross;
+			break;
+		case 12:
+			return BackwardDiagonal;
+			break;
+		case 13:
+			return ForwardDiagonal;
+			break;
+		case 14:
+			return DiagonalCross;
+			break;
+		default:
+			return bpNone;
+			break;
+		}
+	}
+
+	//! Specifies scaling of images.
+	enum ImageStyle {
+		FreeScale = 0, FixScale = 1
+	};
+	//! Specifies image alignment.
+	enum ImageAlignment {
+		TopLeft = 0, TopCenter, TopRight, CenterLeft, Center, CenterRight, BottomLeft, BottomCenter, BottomRight
+	};
+
+	//! Helper function mapping int values to image styles
+	static ImageStyle intToImageStyle(int i) {
+		switch (i) {
+		case 0:
+			return FreeScale;
+			break;
+		case 1:
+			return FixScale;
+			break;
+		default:
+			return FreeScale;
+		}//switch
+	}//intToStyle
+
+	//! Helper function mapping int values to image alignment
+	static ImageAlignment intToImageAlignment(int i) {
+		switch (i) {
+		case 0:
+			return TopLeft;
+			break;
+		case 1:
+			return TopCenter;
+			break;
+		case 2:
+			return TopRight;
+			break;
+		case 3:
+			return CenterLeft;
+			break;
+		case 4:
+			return Center;
+			break;
+		case 5:
+			return CenterRight;
+			break;
+		case 6:
+			return BottomLeft;
+			break;
+		case 7:
+			return BottomCenter;
+			break;
+		case 8:
+			return BottomRight;
+			break;
+		default:
+			return TopLeft;
+		}//switch
+	}//intToAlignment
+
+protected:
+	/**
+	 * Writes string \a str into a GML file such that line length limits
+	 * are respected and characters '\', '"' are correctly escaped.
+	 */
+	void writeLongString(ostream &os, const String &str) const;
+
+	/* Methods for OGML serialization */
+
+	//! Static helper method for mapping edge styles to ogml.
+	static const char * edgeStyleToOGML(const GraphAttributes::EdgeStyle & edgeStyle);
+
+	//! Static helper method for mapping image alignments to ogml.
+	static const char * imageAlignmentToOGML(const GraphAttributes::ImageAlignment &imgAlign);
+
+	//! Static helper method for mapping image style to ogml.
+	static const char * imageStyleToOGML(const GraphAttributes::ImageStyle &imgStyle);
+
+	//! Static helper method for mapping brush patterns styles to ogml.
+	static const char * brushPatternToOGML(const GraphAttributes::BrushPattern & brushPattern);
+
+	//static void generateIndent(char ** indent, const int & indentSize);
+
+	//! Static helper method for exchanging X(HT)ML-tag specific chars.
+	String formatLabel(const String & labelText);
+
+	/* End methods for OGML serialization */
+
+	const Graph *m_pGraph; //!< associated graph
+
+	bool m_directed; //!< whether or not the graph is directed
+
+	// graphical representation of nodes
+	NodeArray<double> m_x; //!< x-coordinate of a node
+	NodeArray<double> m_y; //!< y-coordinate pf a node
+	NodeArray<double> m_width; //!< width of a node's bounding box
+	NodeArray<double> m_height; //!< height of a nodes's bounding box
+	NodeArray<String> m_nodeLabel; //!< label of a node
+	NodeArray<String> m_nodeColor; //!< color of a node
+	NodeArray<String> m_nodeLine; //!< line color of a node
+	NodeArray<int> m_nodeShape; //!< shape of a node
+	NodeArray<double> m_nodeLineWidth; //!< line width of a node
+	NodeArray<BrushPattern> m_nodePattern; //!< brush pattern of a node
+	NodeArray<EdgeStyle> m_nodeStyle; //!< line style of a node
+	NodeArray<String> m_nodeTemplate; //!< name of template of a node
+
+	// images
+	NodeArray<String> m_imageUri;
+	NodeArray<ImageStyle> m_imageStyle;
+	NodeArray<ImageAlignment> m_imageAlign;
+	NodeArray<bool> m_imageDrawLine;
+	NodeArray<double> m_imageWidth;
+	NodeArray<double> m_imageHeight;
+
+	// other node attributes
+	NodeArray<int> m_nodeId; //!< user ID of a node
+	NodeArray<int> m_level; //!< level of a node
+	NodeArray<int> m_nodeIntWeight; //!< (integer) weight of a node
+	NodeArray<Graph::NodeType> m_vType; // type (vertex, dummy, generalizationMerger)
+
+	// graphical representation of edges
+	EdgeArray<DPolyline> m_bends; //!< list of bend points of an edge
+	EdgeArray<String> m_edgeLabel; //!< label of an edge
+	EdgeArray<EdgeArrow> m_edgeArrow; //!< arrow type of an edge
+	EdgeArray<EdgeStyle> m_edgeStyle; //!< line style of an edge
+	EdgeArray<String> m_edgeColor; //!< line color of an edge
+	EdgeArray<double> m_edgeWidth; //!< line width of an edge
+	EdgeArray<Graph::EdgeType> m_eType; //!< type of an edge (association or generalization)
+
+	// other edge attributes
+	EdgeArray<int> m_intWeight; //!< (integer) weight of an edge
+	EdgeArray<double> m_doubleWeight; //!< (real number) weight of an edge
+	EdgeArray<unsigned int> m_subGraph; //!< is element of subgraphs given by bitvector
+
+	long m_attributes; //!< bit vector of currently used attributes
+
+public:
+	//! Bits for specifying attributes.
+	enum {
+		nodeGraphics = 0x00001, //!< node attributes m_x, m_y, m_width, m_height, m_nodeShape
+		edgeGraphics = 0x00002, //!< edge attribute m_bends
+		nodeLevel = 0x00004, //!< node attribute m_level
+		edgeIntWeight = 0x00008, //!< edge attribute m_intWeight
+		edgeDoubleWeight = 0x00010, //!< edge attribute m_doubleWeight
+		edgeLabel = 0x00020, //!< edge attribute m_edgeLabel
+		nodeLabel = 0x00040, //!< node attribute m_nodeLabel
+		edgeType = 0x00080, //!< edge attribute m_eType
+		nodeType = 0x00100, //!< node attribute m_vType
+		nodeColor = 0x00200, //!< node attribute m_nodeColor, m_nodeLine
+		nodeId = 0x00400, //!< node attribute m_nodeId
+		edgeArrow = 0x00800, //!< edge attribute m_edgeArrow
+		edgeColor = 0x01000, //!< edge attribute m_edgeColor
+		edgeStyle = 0x02000, //!< edge attribute m_edgeStyle, m_edgeWidth
+		nodeStyle = 0x04000, //!< node attributes m_nodePattern, m_nodeStyle, m_nodeLineWidth;
+		//!< experimental: m_imageUri, m_imageStyle, m_imageAlign,
+		//!< m_imageDrawLine, m_imageWidth, m_imageHeight
+		nodeTemplate = 0x08000, //!< node attribute m_nodeTemplate
+		edgeSubGraph = 0x10000, //!< edge attribute m_subGraph
+		nodeWeight = 0x20000
+	//!< node attribute m_nodeIntWeight
+	};
+
+	//! Bits for specifying node shapes.
+	enum {
+		oval = 0x8001, rectangle = 0x8002
+	};
+
+	//! Constructs graph attributes for no associated graph (default constructor).
+	/**
+	 * The associated graph can be set later with the init() function.
+	 */
+	GraphAttributes();
+
+	//! Constructs graph attributes associated with the graph \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param initAttributes specifies the set of attributes that can be accessed.
+	 */
+	GraphAttributes(const Graph &G, long initAttributes = nodeGraphics | edgeGraphics);
+
+	virtual ~GraphAttributes() {
+	}
+
+	//! Initializes the graph attributes for graph \a G.
+	/**
+	 * @param G is the new associated graph.
+	 * @param initAttr specifies the set of attributes that can be accessed.
+	 *
+	 * \warning All attributes that were allocated before are destroyed by this function!
+	 *  If you wish to extend the set of allocated attributes, use initAttributes().
+	 */
+	virtual void init(const Graph &G, long initAttr);
+
+	//! Returns currently accessible attributes.
+	long attributes() const {
+		return m_attributes;
+	}
+
+	//! Initializes attributes in \a attr for usage.
+	void initAttributes(long attr);
+
+	//! Destroys attributes in attr.
+	void destroyAttributes(long attr);
+
+	//! Returns a reference to the associated graph
+	const Graph& constGraph() const {
+		return *m_pGraph;
+	}
+
+	//! Returns if the graph is directed.
+	bool directed() {
+		return m_directed;
+	}
+
+	//! Sets if the graph is directed to \a directed.
+	void directed(bool directed) {
+		m_directed = directed;
+	}
+
+	//! Returns the template name of node \a v.
+	const String &templateNode(node v) const {
+		return m_nodeTemplate[v];
+	}
+	//! Returns the template name of node \a v.
+	String &templateNode(node v) {
+		return m_nodeTemplate[v];
+	}
+
+	//! Returns the x-coordinate of node \a v.
+	const double &x(node v) const {
+		return m_x[v];
+	}
+	//! Returns the x-coordinate of node \a v.
+	double &x(node v) {
+		return m_x[v];
+	}
+
+	//! Returns the y-coordinate of node \a v.
+	const double &y(node v) const {
+		return m_y[v];
+	}
+	//! Returns the y-coordinate of node \a v.
+	double &y(node v) {
+		return m_y[v];
+	}
+
+	//! Returns a reference to the NodeArray \a m_width.
+	const NodeArray<double> &width() const {
+		return m_width;
+	}
+	//! Returns a refeence to the NodeArray \a m_width.
+	NodeArray<double> &width() {
+		return m_width;
+	}
+
+	//! Returns the width of the bounding box of node \a v.
+	const double &width(node v) const {
+		return m_width[v];
+	}
+	//! Returns the width of the bounding box of node \a v.
+	double &width(node v) {
+		return m_width[v];
+	}
+
+	//! Returns a reference to the NodeArray \a m_height.
+	const NodeArray<double> &height() const {
+		return m_height;
+	}
+	//! Returns a refeence to the NodeArray \a m_height.
+	NodeArray<double> &height() {
+		return m_height;
+	}
+
+	//! Returns the height of the bounding box of node \a v.
+	const double &height(node v) const {
+		return m_height[v];
+	}
+	//! Returns the height of the bounding box of node \a v.
+	double &height(node v) {
+		return m_height[v];
+	}
+
+	//! Returns the level of node \a v.
+	const int &level(node v) const {
+		return m_level[v];
+	}
+	//! Returns the level of node \a v.
+	int &level(node v) {
+		return m_level[v];
+	}
+
+	//! Returns the weight of node \a v.
+	const int &weight(node v) const {
+		return m_nodeIntWeight[v];
+	}
+	//! Returns the weight of node \a v.
+	int &weight(node v) {
+		return m_nodeIntWeight[v];
+	}
+
+	//! Returns the brush pattern of node \a v.
+	const BrushPattern &nodePattern(node v) const {
+		return m_nodePattern[v];
+	}
+	//! Returns the brush pattern of node \a v.
+	BrushPattern &nodePattern(node v) {
+		return m_nodePattern[v];
+	}
+
+	//! Returns the line style of node \ v.
+	const EdgeStyle &styleNode(node v) const {
+		return m_nodeStyle[v];
+	}
+	//! Returns the line style of node \ v.
+	EdgeStyle &styleNode(node v) {
+		return m_nodeStyle[v];
+	}
+
+	//! Returns the line width of node \a v.
+	const double &lineWidthNode(node v) const {
+		return m_nodeLineWidth[v];
+	}
+	//! Returns the line width of node \a v.
+	double &lineWidthNode(node v) {
+		return m_nodeLineWidth[v];
+	}
+
+	//! Returns the line color of node \a v.
+	const String &nodeLine(node v) const {
+		return m_nodeLine[v];
+	}
+	//! Returns the line color of node \a v.
+	String &nodeLine(node v) {
+		return m_nodeLine[v];
+	}
+
+	//! Returns the list of bend points of edge \a e.
+	const DPolyline &bends(edge e) const {
+		return m_bends[e];
+	}
+	//! Returns the list of bend points of edge \a e.
+	DPolyline &bends(edge e) {
+		return m_bends[e];
+	}
+
+	//! Returns the (integer) weight of edge \a e.
+	const int &intWeight(edge e) const {
+		return m_intWeight[e];
+	}
+	//! Returns the (integer) weight of edge \a e.
+	int &intWeight(edge e) {
+		return m_intWeight[e];
+	}
+
+	//! Returns the (real number) weight of edge \a e.
+	const double &doubleWeight(edge e) const {
+		return m_doubleWeight[e];
+	}
+	//! Returns the (real number) weight of edge \a e.
+	double &doubleWeight(edge e) {
+		return m_doubleWeight[e];
+	}
+
+	//! Returns the line width of edge \a e.
+	const double &edgeWidth(edge e) const {
+		return m_edgeWidth[e];
+	}
+	//! Returns the line width of edge \a e.
+	double &edgeWidth(edge e) {
+		return m_edgeWidth[e];
+	}
+
+	//! Returns the color of node \a v.
+	const String &colorNode(node v) const {
+		return m_nodeColor[v];
+	}
+	//! Returns the color of node \a v.
+	String &colorNode(node v) {
+		return m_nodeColor[v];
+	}
+
+	//! Returns the shape type of node \a v.
+	int shapeNode(node v) const {
+		return m_nodeShape[v];
+	}
+	//! Returns the shape type of node \a v.
+	int &shapeNode(node v) {
+		return m_nodeShape[v];
+	}
+
+	//! Returns the label of node \ v.
+	const String &labelNode(node v) const {
+		return m_nodeLabel[v];
+	}
+	//! Returns the label of node \ v.
+	String &labelNode(node v) {
+		return m_nodeLabel[v];
+	}
+
+	//! Returns the label of edge \a e.
+	const String &labelEdge(edge e) const {
+		return m_edgeLabel[e];
+	}
+	//! Returns the label of edge \a e.
+	String &labelEdge(edge e) {
+		return m_edgeLabel[e];
+	}
+
+	//! Returns the type of edge \a e.
+	Graph::EdgeType type(edge e) const {
+		return m_eType.valid() ? m_eType[e] : Graph::association;
+	}
+	//! Returns the type of edge \a e.
+	Graph::EdgeType &type(edge e) {
+		return m_eType[e];
+	}
+
+	//! Returns the type of node \a v.
+	Graph::NodeType type(node v) const {
+		return m_vType.valid() ? m_vType[v] : Graph::vertex;
+	}
+	//! Returns the type of node \a v.
+	Graph::NodeType &type(node v) {
+		return m_vType[v];
+	}
+
+	//! Returns the user ID of node \a v.
+	const int &idNode(node v) const {
+		return m_nodeId[v];
+	}
+	//! Returns the user ID of node \a v.
+	int &idNode(node v) {
+		return m_nodeId[v];
+	}
+
+	//! Returns the arrow type of edge \a e.
+	const EdgeArrow &arrowEdge(edge e) const {
+		return m_edgeArrow[e];
+	}
+	//! Returns the arrow type of edge \a e.
+	EdgeArrow &arrowEdge(edge e) {
+		return m_edgeArrow[e];
+	}
+
+	//! Returns the line style of an edge \a e.
+	const EdgeStyle &styleEdge(edge e) const {
+		return m_edgeStyle[e];
+	}
+	//! Returns the line style of an edge \a e.
+	EdgeStyle &styleEdge(edge e) {
+		return m_edgeStyle[e];
+	}
+
+	//! Returns the color of node \a v.
+	const String &colorEdge(edge e) const {
+		return m_edgeColor[e];
+	}
+	//! Returns the color of node \a v.
+	String &colorEdge(edge e) {
+		return m_edgeColor[e];
+	}
+
+	// Images:
+	//! Returns image uri of node v.
+	const String &imageUriNode(node v) const {
+		return m_imageUri[v];
+	}
+	//! Returns image uri of node v.
+	String &imageUriNode(node v) {
+		return m_imageUri[v];
+	}
+	//! Returns image style of node v.
+	const ImageStyle &imageStyleNode(node v) const {
+		return m_imageStyle[v];
+	}
+	//! Returns image style of node v.
+	ImageStyle &imageStyleNode(node v) {
+		return m_imageStyle[v];
+	}
+	// Returns image alignment of node v.
+	const ImageAlignment &imageAlignmentNode(node v) const {
+		return m_imageAlign[v];
+	}
+	// Returns image alignment of node v.
+	ImageAlignment &imageAlignmentNode(node v) {
+		return m_imageAlign[v];
+	}
+	//! Returns bool value drawLine of node v.
+	const bool &imageDrawLineNode(node v) const {
+		return m_imageDrawLine[v];
+	}
+	//! Returns bool value drawLine of node v.
+	bool &imageDrawLineNode(node v) {
+		return m_imageDrawLine[v];
+	}
+	//! Returns image width of node v.
+	const double &imageWidthNode(node v) const {
+		return m_imageWidth[v];
+	}
+	//! Returns image width of node v.
+	double &imageWidthNode(node v) {
+		return m_imageWidth[v];
+	}
+	// Returns image height of node v.
+	const double &imageHeightNode(node v) const {
+		return m_imageHeight[v];
+	}
+	// Returns image height of node v.
+	double &imageHeightNode(node v) {
+		return m_imageHeight[v];
+	}
+
+	//! Returns the edgesubgraph value of an edge \a e.
+	const unsigned int &subGraphBits(edge e) const {
+		return m_subGraph[e];
+	}
+	//! Returns the edgesubgraph value of an edge \a e.
+	unsigned int &subGraphBits(edge e) {
+		return m_subGraph[e];
+	}
+
+	//! Checks whether edge \a e belongs to basic graph \a n.
+	bool inSubGraph(edge e, int n) const {
+		OGDF_ASSERT( n>=0 && n<32 );
+		return (m_subGraph[e] & (1 << n)) != 0;
+	}
+	//! Addes edge \a e to basic graph \a n.
+	void addSubGraph(edge e, int n) {
+		OGDF_ASSERT( n>=0 && n<32 );
+		m_subGraph[e] |= (1 << n);
+	}
+	//! Removes edge \a e from basic graph \a n.
+	void removeSubGraph(edge e, int n) {
+		OGDF_ASSERT( n>=0 && n<32 );
+		m_subGraph[e] &= ~(1 << n);
+	}
+
+	//! Returns the bounding box of the graph.
+	const DRect boundingBox() const;
+
+	/**
+	 * We hide the internal representation of semantic node types from
+	 * the user to be able to change this later (semantic node type member array).
+	 * We are not allowed to set association classes manually, only by calling
+	 * createAssociationClass().
+	 */
+	bool isAssociationClass(node v) const {
+		return (type(v) == Graph::associationClass);
+	}
+
+	/**
+	 * According to the \a mode switch add either the node center points to
+	 * the bends or the anchor point on the node boundary
+	 *   - \a mode = 0: only add node center
+	 *   - \a mode = 1: compute intersection with the line segment to the center
+	 *     and the boundary of the rectangular node
+	 *   - \a mode = 2: compute intersection with the first/last line segment
+	 *     and the boundary of the rectangular node
+	 */
+	void addNodeCenter2Bends(int mode = 1);
+
+	void clearAllBends();
+
+	//! Returns a list of all inheritance hierarchies in the graph.
+	/**
+	 * Inheritance hierarchies are identified by edges with type Graph::generalization.
+	 *
+	 * @param list is a list of all hierarchies; each hierarchie is itself a list
+	 *        of all nodes in this hierarchy.
+	 *
+	 * \return Returns the number of generalization hierarchies.
+	 */
+	int hierarchyList(List<List<node>*> &list) const;
+
+	//! Returns a list of all inheritance hierarchies in the graph.
+	/**
+	 * Inheritance hierarchies are identified by edges with type Graph::generalization.
+	 *
+	 * @param list is a list of all hierarchies; each hierarchie is itself a list
+	 *        of all edges in this hierarchy.
+	 *
+	 * \return Returns the number of generalization hierarchies.
+	 */
+	int hierarchyList(List<List<edge>*> &list) const;
+
+	//! Sets the width of all nodes to \a w.
+	void setAllWidth(double w);
+	//! Sets the height of all nodes to \a h.
+	void setAllHeight(double h);
+
+	//! Reads the graph from a GML file \a fileName.
+	bool readGML(Graph &G, const String &fileName);
+
+	//! Reads the graph from a GML input stream \a is.
+	bool readGML(Graph &G, istream &is);
+
+	//! Writes the graph with its attributes in GML format to file \a fileName.
+	void writeGML(const String &fileName) const;
+
+	//! Writes the graph with its attributes in GML format to output stream \a os.
+	void writeGML(ostream &os) const;
+
+	//! Writes the graph with its attributes in SVG format to file \a fileName.
+	/**
+	 * @param fileName filename of the SVG
+	 * @param fontSize size of node label (default = 3)
+	 * @param fontColor color of node label (default = #000000)
+	 */
+	void writeSVG(const String &fileName, int fontSize = 3, const String &fontColor = "#000000") const;
+
+	//! Writes the graph with its attributes in SVG format to output stream \a os.
+	/**
+	 * @param os output stream for SVG
+	 * @param fontSize size of node label
+	 * @param fontColor color of node label
+	 */
+	void writeSVG(ostream &os, int fontSize, const String &fontColor) const;
+
+	//! Reads the graph and attributes from the XML file \a fileName.
+	bool readXML(Graph &G, const String &fileName);
+
+	//! Reads the graph and attributes from the XML input stream \a is.
+	bool readXML(Graph &G, istream &is);
+
+	//! Writes the graph to the XML file \a fileName.
+	void writeXML(const String &fileName, const char* delimiter = "", const char* offset = "") const;
+
+	//! Writes the graph to XML output stream \a os.
+	virtual void writeXML(ostream &os, const char* delimiter = "", const char* offset = "") const;
+
+	//! Reads a graph in Rudy format from file \a fileName.
+	bool readRudy(Graph &G, const String &fileName);
+
+	//! Reads a graph in Rudy format from input stream \a is.
+	bool readRudy(Graph &G, istream &is);
+
+	//! Writes the graph in Rudy format to file \a fileName.
+	void writeRudy(const String &fileName) const;
+
+	//! Writes the graph in Rudy format to output stream \a os.
+	void writeRudy(ostream &os) const;
+
+	//! Removes unnecessary bend points in orthogonal segements.
+	/**
+	 * Processes all edges and removes unnecessary bend points in the bend point list
+	 * of the edge, i.e., bend points such that the preceding and succeeding bend point
+	 * form a horizontal or vertical segement containing this bend point. This function
+	 * is useful to remove redundant bend points in an orthogonal layout.
+	 */
+	void removeUnnecessaryBendsHV();
+};
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/GraphCopy.cpp b/ogdf/basic/GraphCopy.cpp
new file mode 100644
index 0000000..6d76e0a
--- /dev/null
+++ b/ogdf/basic/GraphCopy.cpp
@@ -0,0 +1,678 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of GraphCopySimple and GraphCopy classes
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "GraphCopy.h"
+#include "FaceSet.h"
+
+
+namespace ogdf {
+
+
+//---------------------------------------------------------
+// GraphCopySimple
+// simple graph copies (no support for edge splitting)
+//---------------------------------------------------------
+
+GraphCopySimple::GraphCopySimple(const Graph &G) : m_pGraph(&G)
+{
+	Graph::construct(G,m_vCopy,m_eCopy);
+
+	m_vOrig.init(*this,0);
+	m_eOrig.init(*this,0);
+
+	node v;
+	forall_nodes(v,G)
+		m_vOrig[m_vCopy[v]] = v;
+
+	edge e;
+	forall_edges(e,G)
+		m_eOrig[m_eCopy[e]] = e;
+}
+
+
+GraphCopySimple::GraphCopySimple(const GraphCopySimple &GC) : Graph()
+
+{
+	NodeArray<node> vCopy;
+	EdgeArray<edge> eCopy;
+
+	Graph::construct(GC,vCopy,eCopy);
+	initGC(GC,vCopy,eCopy);
+}
+
+
+GraphCopySimple &GraphCopySimple::operator=(const GraphCopySimple &GC)
+{
+	NodeArray<node> vCopy;
+	EdgeArray<edge> eCopy;
+
+	Graph::assign(GC,vCopy,eCopy);
+	initGC(GC,vCopy,eCopy);
+
+	return *this;
+}
+
+
+void GraphCopySimple::initGC(const GraphCopySimple &GC,
+	NodeArray<node> &vCopy,
+	EdgeArray<edge> &eCopy)
+{
+	m_pGraph = GC.m_pGraph;
+
+	m_vOrig.init(*this,0); m_eOrig.init(*this,0);
+	m_vCopy.init(*m_pGraph,0); m_eCopy.init(*m_pGraph,0);
+
+	node v;
+	forall_nodes(v,GC)
+		m_vCopy[m_vOrig[vCopy[v]] = GC.m_vOrig[v]] = vCopy[v];
+
+	edge e;
+	forall_edges(e,GC) {
+		edge eOrig = GC.m_eOrig[e];
+		m_eOrig[eCopy[e]] = eOrig;
+		if (eOrig)
+			m_eCopy[eOrig] = eCopy[e];
+	}
+}
+
+
+//---------------------------------------------------------
+// GraphCopy
+// graph copies (support for edge splitting)
+//---------------------------------------------------------
+
+GraphCopy::GraphCopy(const Graph &G) : m_pGraph(&G)
+{
+	EdgeArray<edge> eCopy;
+	Graph::construct(G,m_vCopy,eCopy);
+
+	m_vOrig.init(*this,0); m_eOrig.init(*this,0);
+	m_eCopy.init(*m_pGraph);
+	m_eIterator.init(*this,0);
+
+	node v;
+	forall_nodes(v,G)
+		m_vOrig[m_vCopy[v]] = v;
+
+	edge e;
+	forall_edges(e,G) {
+		m_eIterator[eCopy[e]] = m_eCopy[e].pushBack(eCopy[e]);
+		m_eOrig[eCopy[e]] = e;
+	}
+}
+
+
+GraphCopy::GraphCopy(const GraphCopy &GC) : Graph()
+{
+	NodeArray<node> vCopy;
+	EdgeArray<edge> eCopy;
+
+	Graph::construct(GC,vCopy,eCopy);
+	initGC(GC,vCopy,eCopy);
+}
+
+
+void GraphCopy::initGC(const GraphCopy &GC,
+	NodeArray<node> &vCopy,
+	EdgeArray<edge> &eCopy)
+{
+	m_pGraph = GC.m_pGraph;
+
+	m_vOrig.init(*this,0); m_eOrig.init(*this,0);
+	m_vCopy.init(*m_pGraph,0); m_eCopy.init(*m_pGraph);
+	m_eIterator.init(*this,0);
+
+	node v, w;
+	forall_nodes(v,GC)
+		m_vOrig[vCopy[v]] = GC.original(v);
+
+	edge e;
+	forall_edges(e,GC)
+		m_eOrig[eCopy[e]] = GC.original(e);
+
+	forall_nodes(v,*this)
+		if ((w = m_vOrig[v]) != 0) m_vCopy[w] = v;
+
+	forall_edges(e,*m_pGraph) {
+		ListConstIterator<edge> it;
+		for (it = GC.m_eCopy[e].begin(); it.valid(); ++it)
+			m_eIterator[eCopy[*it]] = m_eCopy[e].pushBack(eCopy[*it]);
+	}
+}
+
+
+void GraphCopy::createEmpty(const Graph &G)
+{
+	m_pGraph = &G;
+
+	m_vCopy.init(G,0);
+	m_eCopy.init(G);
+	m_vOrig.init(*this,0);
+	m_eOrig.init(*this,0);
+	m_eIterator.init(*this,0);
+}
+
+
+void GraphCopy::initByNodes(const List<node> &nodes, EdgeArray<edge> &eCopy)
+{
+	Graph::constructInitByNodes(*m_pGraph,nodes,m_vCopy,eCopy);
+
+	ListConstIterator<node> itV;
+	for(itV = nodes.begin(); itV.valid(); ++itV)
+	{
+		node v = *itV;
+
+		m_vOrig[m_vCopy[v]] = v;
+
+		adjEntry adj;
+		forall_adj(adj,v) {
+			if ((adj->index() & 1) == 0) {
+				edge e = adj->theEdge();
+				//
+				// edge ec = eCopy[e];
+				//
+				m_eIterator[eCopy[e]] = m_eCopy[e].pushBack(eCopy[e]);
+				m_eOrig[eCopy[e]] = e;
+			}
+		}
+	}
+
+}
+
+void GraphCopy::initByActiveNodes(
+	const List<node> &nodes,
+	const NodeArray<bool> &activeNodes,
+	EdgeArray<edge> &eCopy)
+{
+	Graph::constructInitByActiveNodes(nodes, activeNodes, m_vCopy, eCopy);
+
+	ListConstIterator<node> itV;
+	for(itV = nodes.begin(); itV.valid(); ++itV)
+	{
+		node v = *itV;
+
+		m_vOrig[m_vCopy[v]] = v;
+
+		adjEntry adj;
+		forall_adj(adj,v) {
+			if ((adj->index() & 1) == 0) {
+				edge e = adj->theEdge();
+				//
+				// edge ec = eCopy[e];
+				//
+				OGDF_ASSERT(m_eCopy[e].size() == 0)
+				if (activeNodes[e->opposite(v)])
+				{
+					m_eIterator[eCopy[e]] = m_eCopy[e].pushBack(eCopy[e]);
+					m_eOrig[eCopy[e]] = e;
+				}
+			}
+		}
+	}
+
+}
+
+
+GraphCopy &GraphCopy::operator=(const GraphCopy &GC)
+{
+	NodeArray<node> vCopy;
+	EdgeArray<edge> eCopy;
+
+	Graph::assign(GC,vCopy,eCopy);
+	initGC(GC,vCopy,eCopy);
+
+	return *this;
+}
+
+
+void GraphCopy::setOriginalEmbedding()
+{
+	node v;
+	forall_nodes(v, *m_pGraph)
+	{
+		if (m_vCopy[v] != 0)
+		{
+			adjEntry adjOr;
+			List<adjEntry> newAdjOrder;
+			newAdjOrder.clear();
+
+			forall_adj(adjOr, v)
+			{
+				if (m_eCopy[adjOr->theEdge()].size() > 0){
+					//we have outgoing adjEntries for all
+					//incoming and outgoing edges, check the direction
+					//to find the correct copy adjEntry
+					bool outEdge = (adjOr == (adjOr->theEdge()->adjSource()));
+
+					OGDF_ASSERT(chain(adjOr->theEdge()).size() == 1);
+					edge cEdge = chain(adjOr->theEdge()).front();
+					adjEntry cAdj = (outEdge ? cEdge->adjSource() : cEdge->adjTarget());
+					newAdjOrder.pushBack(cAdj);
+				}
+			}//foralladj
+			sort(copy(v), newAdjOrder);
+		}
+	}//forallnodes
+}
+
+
+edge GraphCopy::split(edge e)
+{
+	edge eNew  = Graph::split(e);
+	edge eOrig = m_eOrig[e];
+
+	if ((m_eOrig[eNew] = eOrig) != 0) {
+		m_eIterator[eNew] = m_eCopy[eOrig].insert(eNew,m_eIterator[e],after);
+	}
+
+	return eNew;
+}
+
+
+void GraphCopy::unsplit(edge eIn, edge eOut)
+{
+	edge eOrig = m_eOrig[eOut];
+
+	// update chain of eOrig if eOrig exists
+	if (eOrig != 0) {
+		m_eCopy[eOrig].del(m_eIterator[eOut]);
+	}
+
+	Graph::unsplit(eIn,eOut);
+}
+
+
+edge GraphCopy::newEdge(edge eOrig)
+{
+	OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
+	OGDF_ASSERT(m_eCopy[eOrig].empty()); // no support for edge splitting!
+
+	edge e = Graph::newEdge(m_vCopy[eOrig->source()], m_vCopy[eOrig->target()]);
+	m_eCopy[m_eOrig[e] = eOrig].pushBack(e);
+
+	return e;
+}
+
+edge GraphCopy::newEdge(edge eOrig, adjEntry adjSrc, node w)
+{
+	OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
+	OGDF_ASSERT(m_eCopy[eOrig].empty()); // no support for edge splitting!
+	OGDF_ASSERT(w == m_vCopy[eOrig->target()]);
+
+	edge e = Graph::newEdge(adjSrc, w);
+	m_eCopy[m_eOrig[e] = eOrig].pushBack(e);
+
+	return e;
+}
+
+edge GraphCopy::newEdge(edge eOrig, node v, adjEntry adjTgt)
+{
+	OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
+	OGDF_ASSERT(m_eCopy[eOrig].empty()); // no support for edge splitting!
+	OGDF_ASSERT(v == m_vCopy[eOrig->source()]);
+
+	edge e = Graph::newEdge(v, adjTgt);
+	m_eCopy[m_eOrig[e] = eOrig].pushBack(e);
+
+	return e;
+}
+
+
+//inserts edge preserving the embedding
+//todo: rename adjEnd to show the symmetric character
+edge GraphCopy::newEdge(node v, adjEntry adjEnd, edge eOrig, CombinatorialEmbedding &E)
+{
+	OGDF_ASSERT(v != 0 && adjEnd != 0)
+	OGDF_ASSERT(v->graphOf() == this && adjEnd->graphOf() == this);
+	OGDF_ASSERT(&(E.getGraph()) == this)
+	OGDF_ASSERT(m_eCopy[eOrig].size() == 0)
+
+	//check which direction is correct
+	edge e;
+	if (original(v) == eOrig->source())
+		e = E.splitFace(v, adjEnd);
+	else
+		e = E.splitFace(adjEnd, v);
+	m_eIterator[e] = m_eCopy[eOrig].pushBack(e);
+	m_eOrig[e] = eOrig;
+
+	return e;
+}//newedge
+
+
+void GraphCopy::setEdge(edge eOrig, edge eCopy){
+	OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
+	OGDF_ASSERT(eCopy != 0 && eCopy->graphOf() == this);
+	OGDF_ASSERT(eCopy->target() == m_vCopy[eOrig->target()]);
+	OGDF_ASSERT(eCopy->source() == m_vCopy[eOrig->source()]);
+	OGDF_ASSERT(m_eCopy[eOrig].empty());
+
+	m_eCopy[m_eOrig[eCopy] = eOrig].pushBack(eCopy);
+}
+
+
+void GraphCopy::insertEdgePathEmbedded(
+	edge eOrig,
+	CombinatorialEmbedding &E,
+	const SList<adjEntry> &crossedEdges)
+{
+	m_eCopy[eOrig].clear();
+
+	adjEntry adjSrc, adjTgt;
+	SListConstIterator<adjEntry> it = crossedEdges.begin();
+	SListConstIterator<adjEntry> itLast = crossedEdges.rbegin();
+
+	// iterate over all adjacency entries in crossedEdges except for first
+	// and last
+	adjSrc = *it;
+	for(++it; it != itLast; ++it)
+	{
+		adjEntry adj = *it;
+		// split edge
+		node u = E.split(adj->theEdge())->source();
+
+		// determine target adjacency entry and source adjacency entry
+		// in the next iteration step
+		adjTgt = u->firstAdj();
+		adjEntry adjSrcNext = adjTgt->succ();
+
+		if (adjTgt != adj->twin())
+			swap(adjTgt,adjSrcNext);
+
+		// insert a new edge into the face
+		edge eNew = E.splitFace(adjSrc,adjTgt);
+		m_eIterator[eNew] = m_eCopy[eOrig].pushBack(eNew);
+		m_eOrig[eNew] = eOrig;
+
+		adjSrc = adjSrcNext;
+	}
+
+	// insert last edge
+	edge eNew = E.splitFace(adjSrc,*it);
+	m_eIterator[eNew] = m_eCopy[eOrig].pushBack(eNew);
+	m_eOrig[eNew] = eOrig;
+}
+
+
+void GraphCopy::insertEdgePath(edge eOrig, const SList<adjEntry> &crossedEdges)
+{
+	node v = copy(eOrig->source());
+
+	SListConstIterator<adjEntry> it;
+	for(it = crossedEdges.begin(); it.valid(); ++it)
+	{
+		node u = split((*it)->theEdge())->source();
+
+		edge eNew = newEdge(v,u);
+		m_eIterator[eNew] = m_eCopy[eOrig].pushBack(eNew);
+		m_eOrig[eNew] = eOrig;
+
+		v = u;
+	}
+
+	edge eNew = newEdge(v,copy(eOrig->target()));
+	m_eIterator[eNew] = m_eCopy[eOrig].pushBack(eNew);
+	m_eOrig[eNew] = eOrig;
+}
+
+void GraphCopy::insertEdgePath(node srcOrig, node tgtOrig, const SList<adjEntry> &crossedEdges)
+{
+	node v = copy(srcOrig);
+
+	SListConstIterator<adjEntry> it;
+	for(it = crossedEdges.begin(); it.valid(); ++it)
+	{
+		node u = split((*it)->theEdge())->source();
+
+		edge eNew = newEdge(v,u);
+	//	m_eIterator[eNew] = m_eCopy[eOrig].pushBack(eNew);
+		m_eOrig[eNew] = 0;
+
+		v = u;
+	}
+
+	edge eNew = newEdge(v,copy(tgtOrig));
+	//m_eIterator[eNew] = m_eCopy[eOrig].pushBack(eNew);
+	m_eOrig[eNew] = 0;
+}
+
+//inserts crossing between two copy edges already in PlanRep
+//returns newly introduced copy edge of crossed edge
+//the crossing edge parameter is changed to allow iteration
+//over an edge's crossings in the edge direction
+//the parameter topDown describes he following:
+// if the crossingEdge is running horizontally from left to right,
+// is the crossedEdge direction top->down?
+edge GraphCopy::insertCrossing(
+	edge& crossingEdge,
+	edge crossedEdge,
+	bool topDown)
+	//const SList<edge> &crossedCopies)
+{
+	//we first split the crossed edge
+	edge e = split(crossedEdge);
+	edge eOrig = original(crossingEdge);
+	adjEntry adSource = crossingEdge->adjSource();
+
+	//now we delete the crossing copy edge and replace it
+	//by two edges adjacent to the crossing vertex
+	//we have to consider the copy ordering of the
+	//original edge
+	//we have to keep the correct order of the adjacency entries
+	//because even without a combinatorial embedding, the
+	//ordering of the edges may already be fixed
+	//Problem: wie erkennt man die Reihenfolge am split?
+	//Man muss die Richtung der gekreuzten Kante kennen
+	//=>Parameter, und hier adjSource und adjTarget trennen
+	edge eNew1, eNew2;
+	if (topDown)
+	{
+		//case 1: crossingEdge runs top-down
+		eNew1 = newEdge(adSource, e->adjSource());
+		eNew2 = newEdge(e->adjSource()->cyclicPred(),
+			crossingEdge->adjTarget()->cyclicPred());
+	}
+	else
+	{
+		//case 2: crossingEdge runs bottom-up
+		eNew1 = newEdge(adSource, e->adjSource()->cyclicPred());
+		eNew2 = newEdge(e->adjSource(), crossingEdge->adjTarget()->cyclicPred());
+	}//else bottom up
+	//insert new edge after old entry
+	m_eIterator[eNew1] = m_eCopy[eOrig].insert(eNew1, m_eIterator[crossingEdge]);
+	m_eOrig[eNew1] = eOrig;
+	m_eIterator[eNew2] = m_eCopy[eOrig].insert(eNew2, m_eIterator[eNew1]);
+	m_eOrig[eNew2] = eOrig;
+	//now we delete the input copy edge
+	m_eCopy[eOrig].del(m_eIterator[crossingEdge]);
+	delEdge(crossingEdge);
+	crossingEdge = eNew2;
+
+	return e;//eNew2;
+}
+
+void GraphCopy::delCopy(edge e)
+{
+	edge eOrig = m_eOrig[e];
+
+	delEdge(e);
+	if (eOrig == 0)	return;
+
+	OGDF_ASSERT(m_eCopy[eOrig].size() == 1);
+	m_eCopy[eOrig].clear();
+}
+
+
+void GraphCopy::delCopy(node v)
+{
+	node w = m_vOrig[v];
+	if (w != 0) m_vCopy[w] = 0;
+
+	adjEntry adj;
+	forall_adj(adj,v)
+	{
+		edge eo = m_eOrig[adj->theEdge()];
+		if (eo != 0)
+			m_eCopy[eo].clear();
+	}
+
+	delNode(v);
+}
+
+
+void GraphCopy::removeEdgePathEmbedded(
+	CombinatorialEmbedding &E,
+	edge eOrig,
+	FaceSetPure &newFaces)
+{
+	const List<edge> &path = m_eCopy[eOrig];
+	ListConstIterator<edge> it = path.begin();
+
+	newFaces.insert(E.joinFaces(*it));
+
+	for(++it; it.valid(); ++it)
+	{
+		edge e = *it;
+		node u = e->source();
+
+		newFaces.remove(E.rightFace(e->adjSource()));
+		newFaces.remove(E.rightFace(e->adjTarget()));
+
+		newFaces.insert(E.joinFaces(e));
+
+		edge eIn = u->firstAdj()->theEdge();
+		edge eOut = u->lastAdj()->theEdge();
+		if (eIn->target() != u)
+			swap(eIn,eOut);
+
+		E.unsplit(eIn,eOut);
+	}
+
+	m_eCopy[eOrig].clear();
+}
+
+
+void GraphCopy::removeEdgePath(edge eOrig)
+{
+	const List<edge> &path = m_eCopy[eOrig];
+	ListConstIterator<edge> it = path.begin();
+
+	delEdge(*it);
+
+	for(++it; it.valid(); ++it)
+	{
+		edge e = *it;
+		node u = e->source();
+
+		delEdge(e);
+
+		edge eIn = u->firstAdj()->theEdge();
+		edge eOut = u->lastAdj()->theEdge();
+		if (eIn->target() != u)
+			swap(eIn,eOut);
+
+		unsplit(eIn,eOut);
+	}
+
+	m_eCopy[eOrig].clear();
+}
+
+
+
+bool GraphCopy::consistencyCheck() const
+{
+	if (Graph::consistencyCheck() == false)
+		return false;
+
+	const Graph &G = *m_pGraph;
+
+	node v, vG;
+	forall_nodes(vG,G) {
+		v = m_vCopy[vG];
+#ifdef OGDF_DEBUG
+		if (v && v->graphOf() != this)
+			return false;
+#endif
+		if (v && m_vOrig[v] != vG)
+			return false;
+	}
+
+	forall_nodes(v,*this) {
+		vG = m_vOrig[v];
+#ifdef OGDF_DEBUG
+		if(vG && vG->graphOf() != &G)
+			return false;
+#endif
+		if (vG && m_vCopy[vG] != v)
+			return false;
+	}
+
+	edge e, eG;
+	forall_edges(eG,G) {
+		const List<edge> &path = m_eCopy[eG];
+		ListConstIterator<edge> it;
+		for(it = path.begin(); it.valid(); ++it) {
+			e = *it;
+#ifdef OGDF_DEBUG
+			if (e->graphOf() != this)
+				return false;
+#endif
+			if (m_eOrig[e] != eG)
+				return false;
+		}
+	}
+
+	forall_edges(e,*this) {
+		eG = m_eOrig[e];
+#ifdef OGDF_DEBUG
+		if(eG && eG->graphOf() != &G)
+			return false;
+#endif
+	}
+
+	return true;
+}
+
+
+
+} // end namespace ogdf
diff --git a/ogdf/basic/GraphCopy.h b/ogdf/basic/GraphCopy.h
new file mode 100644
index 0000000..ff035bc
--- /dev/null
+++ b/ogdf/basic/GraphCopy.h
@@ -0,0 +1,645 @@
+/*
+ * $Revision: 2583 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-12 01:02:21 +0200 (Do, 12. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of graph copy classes.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_GRAPH_COPY_H
+#define OGDF_GRAPH_COPY_H
+
+
+#include "NodeArray.h"
+#include "EdgeArray.h"
+#include "SList.h"
+#include "CombinatorialEmbedding.h"
+
+
+namespace ogdf {
+
+class FaceSetPure;
+
+
+//---------------------------------------------------------
+// GraphCopySimple
+// simple graph copies (no support for edge splitting)
+//---------------------------------------------------------
+/**
+ * \brief Copies of graphs with mapping between nodes and edges
+ *
+ * The class GraphCopySimple represents a copy of a graph and
+ * maintains a mapping between the nodes and edges of the original
+ * graph to the copy and vice versa.
+ *
+ * New nodes and edges can be added to the copy; the counterpart
+ * of those nodes and edges is 0 indicating that there is no counterpart.
+ * This class <b>does not</b> support splitting of edges in such a way
+ * that both edges resulting from the split are mapped to the same
+ * original edge; this feature is provided by GraphCopy.
+ */
+class OGDF_EXPORT GraphCopySimple : public Graph
+{
+	const Graph *m_pGraph;   //!< The original graph.
+	NodeArray<node> m_vOrig; //!< The corresponding node in the original graph.
+	NodeArray<node> m_vCopy; //!< The corresponding node in the graph copy.
+	EdgeArray<edge> m_eOrig; //!< The corresponding edge in the original graph.
+	EdgeArray<edge> m_eCopy; //!< The corresponding edge in the graph copy.
+
+public:
+	// construction
+
+	//! Constructs a copy of graph \a G.
+	GraphCopySimple(const Graph &G);
+
+	//! Copy constructor.
+	GraphCopySimple(const GraphCopySimple &GC);
+
+	virtual ~GraphCopySimple() { }
+
+	//! Returns a reference to the original graph.
+	const Graph &original() const { return *m_pGraph; }
+
+	/**
+	 * \brief Returns the node in the original graph corresponding to \a v.
+	 * @param v is a node in the graph copy.
+	 * \return the corresponding node in the original graph, or 0 if no
+	 *         such node exists.
+	 */
+	node original(node v) const { return m_vOrig[v]; }
+
+	/**
+	 * \brief Returns the edge in the original graph corresponding to \a e.
+	 * @param e is an edge in the graph copy.
+	 * \return the corresponding edge in the original graph, or 0 if no
+	 *         such edge exists.
+	 */
+	edge original(edge e) const { return m_eOrig[e]; }
+
+	/**
+	 * \brief Returns the node in the graph copy corresponding to \a v.
+	 * @param v is a node in the original graph.
+	 * \return the corresponding node in the graph copy.
+	 */
+	node copy(node v) const { return m_vCopy[v]; }
+
+	/**
+	 * \brief Returns the edge in the graph copy corresponding to \a e.
+	 * @param e is an edge in the original graph.
+	 * \return the corresponding edge in the graph copy.
+	 */
+	edge copy(edge e) const { return m_eCopy[e]; }
+
+	/**
+	 * \brief Returns true iff \a v has no corresponding node in the original graph.
+	 * @param v is a node in the graph copy.
+	 */
+	bool isDummy(node v) const { return (m_vOrig[v] == 0); }
+
+	/**
+	 * \brief Returns true iff \a e has no corresponding edge in the original graph.
+	 * @param e is an edge in the graph copy.
+	 */
+	bool isDummy(edge e) const { return (m_eOrig[e] == 0); }
+
+	//! Assignment operator.
+	GraphCopySimple &operator=(const GraphCopySimple &GC);
+
+
+	//! Creates a new node in the graph copy.
+	node newNode() {
+		return Graph::newNode();
+	}
+
+	/**
+	 * \brief Creates a new node in the graph copy with original node \a vOrig.
+	 * \warning You have to make sure that the original node makes sense, in
+	 *   particular that \a vOrig is not the original node of another node in the copy.
+	 */
+	node newNode(node vOrig) {
+		OGDF_ASSERT(vOrig != 0 && vOrig->graphOf() == m_pGraph);
+		node v = Graph::newNode();
+		m_vCopy[m_vOrig[v] = vOrig] = v;
+		return v;
+	}
+
+	//! Creates a new edge from \a v to \a w in the graph copy.
+	edge newEdge(node v, node w) {
+		return Graph::newEdge(v,w);
+	}
+
+	/**
+	 * \brief Creates a new edge in the graph copy with original edge \a eOrig.
+	 * \warning You have to make sure that the original edge makes sense, in
+	 *   particular that \a eOrig is not the original edge of another edge in the copy.
+	 */
+	edge newEdge(edge eOrig) {
+		OGDF_ASSERT(eOrig != 0 && eOrig->graphOf() == m_pGraph);
+		edge e = Graph::newEdge(m_vCopy[eOrig->source()], m_vCopy[eOrig->target()]);
+		m_eCopy[m_eOrig[e] = eOrig] = e;
+		return e;
+	}
+
+private:
+	void initGC(const GraphCopySimple &GC, NodeArray<node> &vCopy,
+		EdgeArray<edge> &eCopy);
+}; // class GraphCopySimple
+
+
+//---------------------------------------------------------
+// GraphCopy
+// graph copies (support for edge splitting)
+//---------------------------------------------------------
+/**
+ * \brief Copies of graphs supporting edge splitting
+ *
+ * The class GraphCopy represents a copy of a graph and
+ * maintains a mapping between the nodes and edges of the original
+ * graph to the copy and vice versa.
+ *
+ * New nodes and edges can be added to the copy; the counterpart
+ * of those nodes and edges is 0 indicating that there is no counterpart.
+ * GraphCopy also support splitting of edges in such a way
+ * that both edges resulting from the split are mapped to the same
+ * original edge, and each edge of the original graph is mapped to a list
+ * of edges. Furthermore, it is allowed to reverse edges in the graph copy.
+ *
+ * <h3>Do's and Dont's</h3>
+ * Here is a short summary, what can be done with GraphCopy, and what should not
+ * be done. The following operations are safely supported:
+ *   - Splitting of edges such that an original edge is represented by a path
+ *     in the copy (split(), unsplit()).
+ *   - Reversing edges in the copy (Graph::reverseEdge(), Graph::reverseAllEdges()).
+ *   - Reinsertion of original edges such that they are represented by a path
+ *     in the copy (insertEdgePath(), insertEdgePathEmbedded(), removeEdgePath(),
+ *     removeEdgePathEmbedded()).
+ *   - Inserting and removing dummy edges in the copy which are not associated
+ *     with edges in the original graph.
+ *
+ * The following operations are <b>not supported</b> and are thus dangerous:
+ *   - Any modifications on the original graph, since the copy will not be
+ *     notified.
+ *   - Moving the source or target node of an edge in the copy to a different node.
+ *   - Removing edges in the graph copy that belong to a path representing an
+ *     original edge.
+ *   - ... (better think first!)
+ */
+class OGDF_EXPORT GraphCopy : public Graph {
+protected:
+
+	const Graph *m_pGraph;   //!< The original graph.
+	NodeArray<node> m_vOrig; //!< The corresponding node in the original graph.
+	EdgeArray<edge> m_eOrig; //!< The corresponding edge in the original graph.
+	EdgeArray<ListIterator<edge> > m_eIterator; //!< The position of copy edge in the list.
+
+	NodeArray<node> m_vCopy; //!< The corresponding node in the graph copy.
+	EdgeArray<List<edge> > m_eCopy; //!< The corresponding list of edges in the graph copy.
+
+public:
+	//! Creates a graph copy of \a G.
+	/**
+	 * The constructor assures that the adjacency lists of nodes in the
+	 * constructed copy are in the same order as the adjacency lists in \a G.
+	 * This is in particular important when dealing with embedded graphs.
+	 */
+	GraphCopy(const Graph &G);
+
+	//! Default constructor (does nothing!).
+	GraphCopy() : Graph() { }
+
+	//! Copy constructor.
+	/**
+	 * Creates a graph copy that is a copy of \a GC and represents a graph
+	 * copy of the original graph of \a GC.
+	 */
+	GraphCopy(const GraphCopy &GC);
+
+	virtual ~GraphCopy() { }
+
+
+	/**
+	 * @name Mapping between original graph and copy
+	 */
+	//@{
+
+	//! Returns a reference to the original graph.
+	const Graph &original() const { return *m_pGraph; }
+
+	/**
+	 * \brief Returns the node in the original graph corresponding to \a v.
+	 * @param v is a node in the graph copy.
+	 * \return the corresponding node in the original graph, or 0 if no
+	 *         such node exists.
+	 */
+	node original(node v) const { return m_vOrig[v]; }
+
+	/**
+	 * \brief Returns the edge in the original graph corresponding to \a e.
+	 * @param e is an edge in the graph copy.
+	 * \return the corresponding edge in the original graph, or 0 if no
+	 *         such edge exists.
+	 */
+	edge original(edge e) const { return m_eOrig[e]; }
+
+	/**
+	 * \brief Returns the node in the graph copy corresponding to \a v.
+	 * @param v is a node in the original graph.
+	 * \return the corresponding node in the graph copy.
+	 */
+	node copy(node v) const { return m_vCopy[v]; }
+
+	/**
+	 * \brief Returns the list of edges coresponding to edge \a e.
+	 * \param e is an edge in the original graph.
+	 * \return the corresponding list of edges in the graph copy.
+	 */
+	const List<edge> &chain(edge e) const { return m_eCopy[e]; }
+
+	// returns first edge in chain(e)
+	/**
+	 * \brief Returns the first edge in the list of edges coresponding to edge \a e.
+	 * @param e is an edge in the original graph.
+	 * \return the first edge in the corresponding list of edges in
+	 * the graph copy.
+	 */
+	edge copy(edge e) const { return m_eCopy[e].front(); }
+
+	/**
+	 * \brief Returns true iff \a v has no corresponding node in the original graph.
+	 * @param v is a node in the graph copy.
+	 */
+	bool isDummy(node v) const { return (m_vOrig[v] == 0); }
+
+	/**
+	 * \brief Returns true iff \a e has no corresponding edge in the original graph.
+	 * @param e is an edge in the graph copy.
+	 */
+	bool isDummy(edge e) const { return (m_eOrig[e] == 0); }
+
+	/**
+	 * \brief Returns true iff edge \a e has been reversed.
+	 * @param e is an edge in the original graph.
+	 */
+	bool isReversed (edge e) const {
+		return e->source() != original(copy(e)->source());
+	}
+
+
+	/**
+	 * @name Creation and deletion of nodes and edges
+	 */
+	//@{
+
+	//! Creates a new node in the graph copy.
+	node newNode() {
+		return Graph::newNode();
+	}
+
+	/**
+	 * \brief Creates a new node in the graph copy with original node \a vOrig.
+	 * \warning You have to make sure that the original node makes sense, in
+	 *   particular that \a vOrig is not the original node of another node in the copy.
+	 */
+	node newNode(node vOrig) {
+		OGDF_ASSERT(vOrig != 0 && vOrig->graphOf() == m_pGraph);
+		node v = Graph::newNode();
+		m_vCopy[m_vOrig[v] = vOrig] = v;
+		return v;
+	}
+
+	/**
+	 * \brief Removes node \a v and all its adjacent edges cleaning-up their corresponding lists of original edges.
+	 *
+	 * \pre The corresponding lists oforiginal edges contain each only one edge.
+	 * \param v is a node in the graph copy.
+	 */
+	void delCopy(node v);
+
+	/**
+	 * \brief Removes edge e and clears the list of edges corresponding to \a e's original edge.
+	 *
+	 * \pre The list of edges corresponding to \a e's original edge contains only \a e.
+	 * \param e is an edge in the graph copy.
+	 */
+	void delCopy(edge e);
+
+
+	/**
+	 * \brief Splits edge \a e.
+	 * @param e is an edge in the graph copy.
+	 */
+	virtual edge split(edge e);
+
+
+	/**
+	 * \brief Undoes a previous split operation.
+	 * The two edges \a eIn and \a eOut are merged to a single edge \a eIn.
+	 * \pre The vertex \a u that was created by the previous split operation has
+	 *      exactly one incoming edge \a eIn and one outgoing edge \a eOut.
+	 * @param eIn is an edge (*,\a u) in the graph copy.
+	 * @param eOut is an edge (\a u,*) in the graph copy.
+	 */
+	void unsplit(edge eIn, edge eOut);
+
+	//! Creates a new edge (\a v,\a w) with original edge \a eOrig.
+	edge newEdge(edge eOrig);
+
+	//! Creates a new edge with original edge \a eOrig at predefined positions in the adjacency lists.
+	/**
+	 * Let \a v be the node whose adjacency list contains \a adjSrc. Then,
+	 * the created edge is (\a v,\a w).
+	 * @param eOrig is the original edge.
+	 * @param adjSrc is the adjacency entry after which the new edge is inserted
+	 *        in the adjacency list of \a v.
+	 * @param w is the source node of the new edge; the edge is added at the end
+	 *        of the adjacency list of \a w.
+	 * @return the created edge.
+	 */
+	edge newEdge(edge eOrig, adjEntry adjSrc, node w);
+
+	//! Creates a new edge with original edge \a eOrig at predefined positions in the adjacency lists.
+	/**
+	 * Let \a w be the node whose adjacency list contains \a adjTgt. Then,
+	 * the created edge is (\a v,\a w).
+	 * @param eOrig is the original edge.
+	 * @param v is the source node of the new edge; the edge is added at the end
+	 *        of the adjacency list of \a v.
+	 * @param adjTgt is the adjacency entry after which the new edge is inserted
+	 *        in the adjacency list of \a w.
+	 * @return the created edge.
+	 */
+	edge newEdge(edge eOrig, node v, adjEntry adjTgt);
+
+	edge newEdge(node v, node w)                   { return Graph::newEdge(v, w); }
+	edge newEdge(adjEntry adjSrc, adjEntry adjTgt) { return Graph::newEdge(adjSrc, adjTgt); }
+	edge newEdge(node v, adjEntry adjTgt)          { return Graph::newEdge(v, adjTgt); }
+	edge newEdge(adjEntry adjSrc, node w)          { return Graph::newEdge(adjSrc, w); }
+
+	//! sets eOrig to be the corresponding original edge of eCopy and vice versa
+	/**
+	 * @param eOrig is the original edge
+	 * @param eCopy is the edge copy
+	 */
+	void setEdge(edge eOrig, edge eCopy);
+
+	//! Re-inserts edge \a eOrig by "crossing" the edges in \a crossedEdges.
+	/**
+	 * Let \a v and \a w be the copies of the source and target nodes of \a eOrig.
+	 * Each edge in \a crossedEdges is split creating a sequence
+	 * \f$u_1,\ldots,u_k\f$ of new nodes, and additional edges are inserted creating
+	 * a path \f$v,u_1,\ldots,u_k,w\f$.
+	 * @param eOrig is an edge in the original graph and becomes the original edge of
+	 *        all edges in the path \f$v,u_1,\ldots,u_k,w\f$.
+	 * @param crossedEdges are edges in the graph copy.
+	 */
+	void insertEdgePath(edge eOrig, const SList<adjEntry> &crossedEdges);
+
+	//for FixedEmbeddingUpwardEdgeInserter only
+	void insertEdgePath(node srcOrig, node tgtOrig, const SList<adjEntry> &crossedEdges);
+
+
+	//! Removes the complete edge path for edge \a eOrig.
+	/**
+	 * \@param eOrig is an edge in the original graph.
+	 */
+	void removeEdgePath(edge eOrig);
+
+	//! Inserts crossings between two copy edges.
+	/**
+	 * This method is used in TopologyModule.
+	 *
+	 * Let \a crossingEdge = (\a a, \a b) and \a crossedEdge = (\a v, \a w).
+	 * Then \a crossedEdge is split creating two edges \a crossedEdge = (\a v, \a u)
+	 * and (\a u, \a w), \a crossingEdge is removed and replaced by two new edges
+	 * \a e1  = (\a a, \a u) and \a e1 = (\a u, \a b).
+	 * Finally it sets \a crossingEdge to \a e2 and returns (\a u, \a w).
+	 *
+	 * @param crossingEdge is the edge that gets split.
+	 * @param crossedEdge is the edge that is replaced by two new edges.
+	 * @param topDown is used as follows: If set to true, \a crossingEdge will cross
+	 *        \a crossedEdge from right to left, otherwise from left to right.
+	*/
+	edge insertCrossing(
+		edge& crossingEdge,
+		edge crossedEdge,
+		bool topDown);
+
+
+	/**
+	 * @name Combinatorial Embeddings
+	 */
+	//@{
+
+	//! Creates a new edge with original edge \a eOrig in an embedding \a E.
+	/**
+	 * Let \a w be the node whose adjacency list contains \a adjTgt. The original
+	 * edge \a eOrig must connect the original nodes of \a v and \a w. If \a eOrig =
+	 * (original(\a v),original(\a w)), then the created edge is (\a v,\a w), otherwise
+	 * it is (\a w,\a v). The new edge \a e must split a face in \a E, such that \a e
+	 * comes after \a adj in the adjacency list of \a v and at the end of the adjacency
+	 * list of \a v.
+	 *
+	 * @param v is a node in the graph copy.
+	 * @param adj is an adjacency entry in the graph copy.
+	 * @param eOrig is an edge in the original graph.
+	 * @param E is an embedding of the graph copy.
+	 * @return the created edge.
+	 */
+	edge newEdge(node v, adjEntry adj, edge eOrig, CombinatorialEmbedding &E);
+
+	/**
+	 * \brief Sets the embedding of the graph copy to the embedding of the original graph.
+	 * \pre The graph copy has not been changed after construction, i.e., no new nodes
+	 *      or edges have been added and no edges have been split.
+	 */
+	void setOriginalEmbedding();
+
+	//! Re-inserts edge \a eOrig by "crossing" the edges in \a crossedEdges in embedding \a E.
+	/**
+	 * Let \a v and \a w be the copies of the source and target nodes of \a eOrig,
+	 * and let \f$e_0,e_1,\ldots,e_k,e_{k+1}\f$ be the sequence of edges corresponding
+	 * to the adjacency entries in \a crossedEdges. The first edge needs to be incident
+	 * to \a v and the last to \a w; the edges \f$e_1,\ldots,e_k\f$ are each split
+	 * creating a sequence \f$u_1,\ldots,u_k\f$ of new nodes, and additional edges
+	 * are inserted creating a path \f$v,u_1,\ldots,u_k,w\f$.
+	 *
+	 * The following figure illustrates, which adjacency entries need to be in the list
+	 * \a crossedEdges. It inserts an edge connecting \a v and \a w by passing through
+	 * the faces \f$f_0,f_1,f_2\f$; in this case, the list \a crossedEdges must contain
+	 * the adjacency entries \f$adj_0,\ldots,adj_3\f$ (in this order).
+	 * \image html insertEdgePathEmbedded.png
+	 *
+	 * @param eOrig is an edge in the original graph and becomes the original edge of
+	 *        all edges in the path \f$v,u_1,\ldots,u_k,w\f$.
+	 * @param E is an embedding of the graph copy.
+	 * @param crossedEdges are a list of adjacency entries in the graph copy.
+	 */
+	void insertEdgePathEmbedded(
+		edge eOrig,
+		CombinatorialEmbedding &E,
+		const SList<adjEntry> &crossedEdges);
+
+	/**
+	 * Removes the complete edge path for edge \a eOrig while preserving the embedding.
+	 * @param E is an embedding of the graph copy.
+	 * @param eOrig is an edge in the original graph.
+	 * @param newFaces is assigned the set of new faces resulting from joining faces
+	 *        when removing edges.
+	 */
+	void removeEdgePathEmbedded(
+		CombinatorialEmbedding &E,
+		edge                    eOrig,
+		FaceSetPure            &newFaces);
+
+
+	//@}
+	/**
+	 * @name Miscellaneous
+	 */
+	//@{
+
+	//! Checks the consistency of the data structure (for debugging only).
+	bool consistencyCheck() const;
+
+	//! Associates the graph copy with \a G, but does not create any nodes or edges.
+	/**
+	 * This method is used for a special creation of the graph copy.
+	 * The graph copy needs to be constructed with the default constructor,
+	 * gets associated with \a G using this method, and then is initialized
+	 * using either initByNodes() or initByActiveNodes().
+	 *
+	 * The following code snippet shows a typical application of this functionality:
+	 * \code
+	 *   GraphCopy GC;
+	 *   GC.createEmpty(G);
+	 *
+	 *   // compute connected components of G
+	 *   NodeArray<int> component(G);
+	 *   int numCC = connectedComponents(G,component);
+	 *
+	 *   // intialize the array of lists of nodes contained in a CC
+	 *   Array<List<node> > nodesInCC(numCC);
+	 *
+	 *   node v;
+	 *   forall_nodes(v,G)
+	 *	   nodesInCC[component[v]].pushBack(v);
+	 *
+	 *   EdgeArray<edge> auxCopy(G);
+	 *   Array<DPoint> boundingBox(numCC);
+	 *
+	 *   for(int i = 0; i < numCC; ++i) {
+	 *     GC.initByNodes(nodesInCC[i],auxCopy);
+	 *     ...
+	 *   }
+	 * \endcode
+	 * @param G is the graph of which this graph copy shall be a copy.
+	 */
+	void createEmpty(const Graph &G);
+
+	//! Initializes the graph copy for the nodes in a component.
+	/**
+	 * Creates copies of all nodes in \a nodes and their incident edges.
+	 * Any nodes and edges allocated before are removed.
+	 *
+	 * The order of entries in the adjacency lists is preserved, i.e., if
+	 * the original graph is embedded, its embedding induces the embedding
+	 * of the created copy.
+	 *
+	 * It is important that \a nodes is the complete list of nodes in
+	 * a connected component. If you wish to initialize the graph copy for an
+	 * arbitrary set of nodes, use the method initByActiveNodes().
+	 * \see createEmpty() for an example.
+	 * @param nodes is the list of nodes in the original graph for which
+	 *        copies are created in the graph copy.
+	 * @param eCopy is assigned the copy of each original edge.
+	 */
+	void initByNodes(const List<node> &nodes, EdgeArray<edge> &eCopy);
+
+	//! Initializes the graph copy for the nodes in \a nodes.
+	/**
+	 * Creates copies of all nodes in \a nodes and edges between two nodes
+	 * which are both contained in \a nodes.
+	 * Any nodes and edges allocated before are destroyed.
+	 *
+	 * \see createEmpty()
+	 * @param nodes is the list of nodes in the original graph for which
+	 *        copies are created in the graph copy.
+	 * @param activeNodes must be true for every node in \a nodes, false
+	 *        otherwise.
+	 * @param eCopy is assigned the copy of each original edge.
+	 */
+	void initByActiveNodes(const List<node> &nodes,
+		const NodeArray<bool> &activeNodes, EdgeArray<edge> &eCopy);
+
+	//@}
+	/**
+	 * @name Operators
+	 */
+	//@{
+
+	//! Assignment operator.
+	/**
+	 * Creates a graph copy that is a copy of \a GC and represents a graph
+	 * copy of the original graph of \a GC.
+	 *
+	 * The constructor assures that the adjacency lists of nodes in the
+	 * constructed graph are in the same order as the adjacency lists in \a G.
+	 * This is in particular important when dealing with embedded graphs.
+	 */
+	GraphCopy &operator=(const GraphCopy &GC);
+
+
+	//@}
+
+private:
+	void initGC(const GraphCopy &GC,
+		NodeArray<node> &vCopy, EdgeArray<edge> &eCopy);
+
+}; // class GraphCopy
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/GraphObserver.h b/ogdf/basic/GraphObserver.h
new file mode 100644
index 0000000..cad4eb7
--- /dev/null
+++ b/ogdf/basic/GraphObserver.h
@@ -0,0 +1,147 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Abstract base class for structures on graphs, that need
+ *        to be informed about graph changes (e.g. cluster graphs).
+ *
+ * Follows the observer pattern: graphs are observable
+ * objects that can inform observers on changes made to their
+ * structure.
+ *
+ * \author Karsten Klein
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_GRAPH_STRUCTURE_H
+#define OGDF_GRAPH_STRUCTURE_H
+
+
+#include "List.h"
+#include "Graph.h"
+
+namespace ogdf {
+
+//
+// in embedded graphs, adjacency lists are given in clockwise order.
+//
+
+
+//----------------------------------------------------------
+// GraphObserver
+//----------------------------------------------------------
+/**
+ * \brief Abstract Base class for classes that need to keep track
+ * of changes in the graph like addition/deletion of nodes
+ * or edges.
+ * derived classes have to overload nodeDeleted, nodeAdded
+ * edgeDeleted, edgeAdded
+ * these functions should be called by Graph before (delete)
+ *
+ */
+
+class OGDF_EXPORT GraphObserver {
+	friend class Graph;
+
+public:
+	//! Constructs instance of GraphObserver class
+	GraphObserver() : m_pGraph(0) { }
+
+	/**
+	 *\brief Constructs instance of GraphObserver class
+	 * \param G is the graph to be watched
+	 */
+	GraphObserver(const Graph* G) : m_pGraph(G)
+	{
+		m_itGList = G->registerStructure(this);
+	}//constructor
+
+	//! Destroys the instance, unregisters it from watched graph
+	virtual ~GraphObserver()
+	{
+		if (m_pGraph) m_pGraph->unregisterStructure(m_itGList);
+	}//destructor
+
+	//! Associates observer instance with graph \a G
+	void reregister(const Graph *pG) {
+		//small speedup: check if == m_pGraph
+		if (m_pGraph) m_pGraph->unregisterStructure(m_itGList);
+		if ((m_pGraph = pG) != 0) m_itGList = pG->registerStructure(this);
+	}
+
+	//! Called by watched graph when a node is deleted
+	//! Has to be implemented by derived classes
+	virtual void nodeDeleted(node v) = 0;
+
+	//! Called by watched graph when a node is added
+	//! Has to be implemented by derived classes
+	virtual void nodeAdded(node v)   = 0;
+
+	//! Called by watched graph when an edge is deleted
+	//! Has to be implemented by derived classes
+	virtual void edgeDeleted(edge e) = 0;
+
+	//! Called by watched graph when an edge is added
+	//! Has to be implemented by derived classes
+	virtual void edgeAdded(edge e)   = 0;
+
+	//! Called by watched graph when it is reinitialized
+	//! Has to be implemented by derived classes
+	virtual void reInit()            = 0;
+
+	//! Called by watched graph when its clear function is called
+	//! Has to be implemented by derived classes
+	virtual void cleared()           = 0;
+
+	const Graph*  getGraph() const { return m_pGraph; }
+
+protected:
+	const Graph* m_pGraph; //! watched graph
+	ListIterator<GraphObserver*> m_itGList; //! List entry in graphs list of all registered graphobservers
+
+
+};
+
+} //end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/Graph_d.h b/ogdf/basic/Graph_d.h
new file mode 100644
index 0000000..64a8834
--- /dev/null
+++ b/ogdf/basic/Graph_d.h
@@ -0,0 +1,1560 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Pure declaration header, find template implementation in
+ *        Graph.h
+ *
+ * Declaration of NodeElement, EdgeElement, and Graph classes.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_GRAPH_D_H
+#define OGDF_GRAPH_D_H
+
+
+#include "List.h"
+
+
+namespace ogdf {
+
+//
+// in embedded graphs, adjacency lists are given in clockwise order.
+//
+
+
+class OGDF_EXPORT Graph;
+class OGDF_EXPORT NodeElement;
+class OGDF_EXPORT EdgeElement;
+class OGDF_EXPORT AdjElement;
+class OGDF_EXPORT FaceElement;
+class OGDF_EXPORT GraphListBase;
+class OGDF_EXPORT ClusterElement;
+
+
+//! The base class for objects used by graphs like nodes, edges, etc.
+/**
+ * Such graph objects are maintained in list (see GraphList<T>),
+ * and \a GraphElement basically provides a next and previous pointer
+ * for these objects.
+ */
+class OGDF_EXPORT GraphElement {
+	friend class Graph;
+	friend class GraphListBase;
+
+protected:
+	GraphElement *m_next; //!< The successor in the list.
+	GraphElement *m_prev; //!< The predecessor in the list.
+
+	OGDF_NEW_DELETE
+}; // class GraphElement
+
+
+//! Base class for GraphElement lists.
+class OGDF_EXPORT GraphListBase {
+protected:
+	GraphElement *m_head; //!< Pointer to the first element in the list.
+	GraphElement *m_tail; //!< Pointer to the last element in the list.
+
+public:
+	//! Constructs an empty list.
+	GraphListBase() { m_head = m_tail = 0; }
+	// destruction
+	~GraphListBase() { }
+
+	//! Adds element \a pX at the end of the list.
+	void pushBack(GraphElement *pX) {
+		pX->m_next = 0;
+		pX->m_prev = m_tail;
+		if (m_head)
+			m_tail = m_tail->m_next = pX;
+		else
+			m_tail = m_head = pX;
+	}
+
+	//! Inserts element \a pX after element \a pY.
+	void insertAfter(GraphElement *pX, GraphElement *pY) {
+		pX->m_prev = pY;
+		GraphElement *pYnext = pX->m_next = pY->m_next;
+		pY->m_next = pX;
+		if (pYnext) pYnext->m_prev = pX;
+		else m_tail = pX;
+	}
+
+	//! Inserts element \a pX before element \a pY.
+	void insertBefore(GraphElement *pX, GraphElement *pY) {
+		pX->m_next = pY;
+		GraphElement *pYprev = pX->m_prev = pY->m_prev;
+		pY->m_prev = pX;
+		if (pYprev) pYprev->m_next = pX;
+		else m_head = pX;
+	}
+
+	//! Removes element \a pX from the list.
+	void del(GraphElement *pX) {
+		GraphElement *pxPrev = pX->m_prev, *pxNext = pX->m_next;
+
+		if (pxPrev)
+			pxPrev->m_next = pxNext;
+		else
+			m_head = pxNext;
+		if (pxNext)
+			pxNext->m_prev = pxPrev;
+		else
+			m_tail = pxPrev;
+	}
+
+	//! Sorts the list according to \a newOrder.
+	template<class LIST>
+	void sort(const LIST &newOrder) {
+		GraphElement *pPred = 0;
+		typename LIST::const_iterator it = newOrder.begin();
+		if (!it.valid()) return;
+
+		m_head = *it;
+		for(; it.valid(); ++it) {
+			GraphElement *p = *it;
+			if ((p->m_prev = pPred) != 0) pPred->m_next = p;
+			pPred = p;
+		}
+
+		(m_tail = pPred)->m_next = 0;
+	}
+
+	//! Reverses the order of the list elements.
+	void reverse() {
+		GraphElement *pX = m_head;
+		m_head = m_tail;
+		m_tail = pX;
+		while(pX) {
+			GraphElement *pY = pX->m_next;
+			pX->m_next = pX->m_prev;
+			pX = pX->m_prev = pY;
+		}
+	}
+
+	//! Exchanges the positions of \a pX and \a pY in the list.
+	void swap(GraphElement *pX, GraphElement *pY) {
+		if (pX->m_next == pY) {
+			pX->m_next = pY->m_next;
+			pY->m_prev = pX->m_prev;
+			pY->m_next = pX;
+			pX->m_prev = pY;
+
+		} else if(pY->m_next == pX) {
+			pY->m_next = pX->m_next;
+			pX->m_prev = pY->m_prev;
+			pX->m_next = pY;
+			pY->m_prev = pX;
+
+		} else {
+			::swap(pX->m_next,pY->m_next);
+			::swap(pX->m_prev,pY->m_prev);
+		}
+
+		if(pX->m_prev)
+			pX->m_prev->m_next = pX;
+		else
+			m_head = pX;
+		if(pX->m_next)
+			pX->m_next->m_prev = pX;
+		else
+			m_tail = pX;
+
+		if(pY->m_prev)
+			pY->m_prev->m_next = pY;
+		else
+			m_head = pY;
+		if(pY->m_next)
+			pY->m_next->m_prev = pY;
+		else
+			m_tail = pY;
+
+		OGDF_ASSERT(consistencyCheck());
+	}
+
+
+	//! Checks consistency of graph list.
+	bool consistencyCheck() {
+		if (m_head == 0) {
+			return (m_tail == 0);
+
+		} else if (m_tail == 0) {
+			return false;
+
+		} else {
+			if (m_head->m_prev != 0)
+				return false;
+			if (m_tail->m_next != 0)
+				return false;
+
+			GraphElement *pX = m_head;
+			for(; pX; pX = pX->m_next) {
+				if (pX->m_prev) {
+					if (pX->m_prev->m_next != pX)
+						return false;
+				} else if(pX != m_head)
+					return false;
+
+				if (pX->m_next) {
+					if (pX->m_next->m_prev != pX)
+						return false;
+				} else if (pX != m_tail)
+					return false;
+			}
+		}
+
+		return true;
+	}
+
+	OGDF_NEW_DELETE
+}; // class GraphListBase
+
+
+//! Lists of graph objects (like nodes, edges, etc.).
+/**
+ * The template type \a T must be a class derived from GraphElement.
+ */
+template<class T> class GraphList : protected GraphListBase {
+public:
+	//! Constructs an empty list.
+	GraphList() { }
+	// destruction (deletes all elements)
+	~GraphList() {
+		if (m_head)
+			OGDF_ALLOCATOR::deallocateList(sizeof(T), m_head,m_tail);
+	}
+
+	//! Returns the first element in the list.
+	T *begin () const { return (T *)m_head; }
+	//! Returns the last element in the list.
+	T *rbegin() const { return (T *)m_tail; }
+
+	//! Returns true iff the list is empty.
+	bool empty() { return m_head; }
+
+	//! Adds element \a pX at the end of the list.
+	void pushBack(T *pX) {
+		GraphListBase::pushBack(pX);
+	}
+
+	//! Inserts element \a pX after element \a pY.
+	void insertAfter(T *pX, T *pY) {
+		GraphListBase::insertAfter(pX,pY);
+	}
+
+	//! Inserts element \a pX before element \a pY.
+	void insertBefore(T *pX, T *pY) {
+		GraphListBase::insertBefore(pX,pY);
+	}
+
+	//! Moves element \a pX to list \a L and inserts it before or after \a pY.
+	void move(T *pX, GraphList<T> &L, T *pY, Direction dir) {
+		GraphListBase::del(pX);
+		if (dir == after)
+			L.insertAfter(pX,pY);
+		else
+			L.insertBefore(pX,pY);
+	}
+
+	//! Moves element \a pX to list \a L and inserts it at the end.
+	void move(T *pX, GraphList<T> &L) {
+		GraphListBase::del(pX);
+		L.pushBack(pX);
+	}
+
+	//! Moves element \a pX from its current position to a position after \a pY.
+	void moveAfter(T *pX, T *pY){
+		GraphListBase::del(pX);
+		insertAfter(pX,pY);
+	}
+
+	//! Moves element \a pX from its current position to a position before \a pY.
+	void moveBefore(T *pX, T *pY){
+		GraphListBase::del(pX);
+		insertBefore(pX,pY);
+	}
+
+	//! Removes element \a pX from the list and deletes it.
+	void del(T *pX) {
+		GraphListBase::del(pX);
+		delete pX;
+	}
+
+	//! Only removes element \a pX from the list; does not delete it.
+	void delPure(T *pX) {
+		GraphListBase::del(pX);
+	}
+
+	//! Removes all elements from the list and deletes them.
+	void clear() {
+		if (m_head) {
+			OGDF_ALLOCATOR::deallocateList(sizeof(T),m_head,m_tail);
+			m_head = m_tail = 0;
+		}
+	}
+
+	//! Sorts all elements according to \a newOrder.
+	template<class T_LIST>
+	void sort(const T_LIST &newOrder) {
+		GraphListBase::sort(newOrder);
+	}
+
+
+	//! Reverses the order of the list elements.
+	void reverse() {
+		GraphListBase::reverse();
+	}
+
+	//! Exchanges the positions of \a pX and \a pY in the list.
+	void swap(T *pX, T *pY) {
+		GraphListBase::swap(pX,pY);
+	}
+
+
+	//! Checks consistency of graph list; returns true if ok.
+	bool consistencyCheck() {
+		return GraphListBase::consistencyCheck();
+	}
+
+
+	OGDF_NEW_DELETE
+}; // class GraphList<T>
+
+
+typedef NodeElement *node; //!< The type of nodes.
+typedef EdgeElement *edge; //!< The type of edges.
+typedef AdjElement *adjEntry; //!< The type of adjacency entries.
+
+
+
+//! Class for adjacency list elements.
+/**
+ * Adjacency list elements represent the occurrence of an edges in
+ * the adjacency list of a node.
+ */
+class OGDF_EXPORT AdjElement : private GraphElement {
+	friend class Graph;
+	friend class GraphListBase;
+	friend class GraphList<AdjElement>;
+
+	AdjElement *m_twin; //!< The corresponding adjacency entry (same edge)
+	edge m_edge; //!< The associated edge.
+	node m_node; //!< The node whose adjacency list contains this entry.
+	int m_id;    //!< The (unique) index of the adjacency entry.
+
+	//! Constructs an adjacency element for a given node.
+	AdjElement(node v) : m_node(v) { }
+	//! Constructs an adjacency entry for a given edge and index.
+	AdjElement(edge e, int id) : m_edge(e), m_id(id) { }
+
+public:
+	//! Returns the edge associated with this adjacency entry.
+	edge theEdge() const { return m_edge; }
+	//! Conversion to edge.
+	operator edge() const { return m_edge; }
+	//! Returns the node whose adjacency list contains this element.
+	node theNode() const { return m_node; }
+
+	//! Returns the corresponding adjacency element associated with the same edge.
+	adjEntry twin() const { return m_twin; }
+
+	//! Returns the associated node of the corresponding adjacency entry (shorthand for twin()->theNode()).
+	node twinNode() const { return m_twin->m_node; }
+
+	//! Returns the index of this adjacency element.
+	int index() const { return m_id; }
+
+	// traversing faces in clockwise (resp. counter-clockwise) order
+	// (if face is an interior face)
+
+	//! Returns the clockwise successor in face. Use faceCycleSucc instead!
+	adjEntry clockwiseFaceSucc() const { return m_twin->cyclicPred(); }
+	//! Returns the clockwise predecessor in face.  Use faceCycleSucc instead!
+	adjEntry clockwiseFacePred() const { return cyclicSucc()->m_twin; }
+	//! Returns the counter-clockwise successor in face.
+	adjEntry counterClockwiseFaceSucc() const { return m_twin->cyclicSucc(); }
+	//! Returns the counter-clockwise predecessor in face.
+	adjEntry counterClockwiseFacePred() const { return cyclicPred()->m_twin; }
+
+	// default is traversing faces in clockwise order
+	//! Returns the cyclic successor in face.
+	adjEntry faceCycleSucc() const { return clockwiseFaceSucc(); }
+	//! Returns the cyclic predecessor in face.
+	adjEntry faceCyclePred() const { return clockwiseFacePred(); }
+
+
+	//! Returns the successor in the adjacency list.
+	adjEntry succ() const { return (adjEntry)m_next; }
+	//! Returns the predecessor in the adjacency list.
+	adjEntry pred() const { return (adjEntry)m_prev; }
+
+	//! Returns the cyclic successor in the adjacency list.
+	adjEntry cyclicSucc() const;
+	//! Returns the cyclic predecessor in the adjacency list.
+	adjEntry cyclicPred() const;
+
+#ifdef OGDF_DEBUG
+	const Graph *graphOf() const;
+#endif
+
+	OGDF_NEW_DELETE
+}; // class AdjElement
+
+
+//! Class for the representation of nodes.
+class OGDF_EXPORT NodeElement : private GraphElement {
+	friend class Graph;
+	friend class GraphList<NodeElement>;
+
+	GraphList<AdjElement> m_adjEdges; //!< The adjacency list of the node.
+	int m_indeg;  //!< The indegree of the node.
+	int m_outdeg; //!< The outdegree of the node.
+	int m_id;     //!< The (unique) index of the node.
+
+#ifdef OGDF_DEBUG
+	// we store the graph containing this node for debugging purposes
+	const Graph *m_pGraph; //!< The graph containg this node (debug only).
+#endif
+
+
+	// construction
+#ifdef OGDF_DEBUG
+	//! Constructs a node element with index \a id.
+	/**
+	 * \remarks The parameter \a pGraph is only passed in a debug build.
+	 * It is used, e.g., by NodeArray for checking if a node belongs to
+	 * the correct graph.
+	 */
+	NodeElement(const Graph *pGraph, int id) :
+		m_indeg(0), m_outdeg(0), m_id(id), m_pGraph(pGraph) { }
+#else
+	NodeElement(int id) : m_indeg(0), m_outdeg(0), m_id(id) { }
+#endif
+
+
+public:
+	//! Returns the (unique) node index.
+	int index() const { return m_id; }
+
+	//! Returns the indegree of the node.
+	int indeg() const { return m_indeg; }
+	//! Returns the outdegree of the node.
+	int outdeg() const { return m_outdeg; }
+	//! Returns the degree of the node (indegree + outdegree).
+	int degree() const { return m_indeg + m_outdeg; }
+
+	//! Returns the first entry in the adjaceny list.
+	adjEntry firstAdj() const { return m_adjEdges.begin();  }
+	//! Returns the last entry in the adjacency list.
+	adjEntry lastAdj () const { return m_adjEdges.rbegin(); }
+
+	//! Returns the successor in the list of all nodes.
+	node succ() const { return (node)m_next; }
+	//! Returns the predecessor in the list of all nodes.
+	node pred() const { return (node)m_prev; }
+
+#ifdef OGDF_DEBUG
+	//! Returns the graph containing this node (debug only).
+	const Graph *graphOf() const { return m_pGraph; }
+#endif
+
+	OGDF_NEW_DELETE
+}; // class NodeElement
+
+
+inline adjEntry AdjElement::cyclicSucc() const
+{
+	return (m_next) ? (adjEntry)m_next : m_node->firstAdj();
+}
+
+inline adjEntry AdjElement::cyclicPred() const
+{
+	return (m_prev) ? (adjEntry)m_prev : m_node->lastAdj();
+}
+
+inline bool test_forall_adj_edges(adjEntry &adj, edge &e)
+{
+	if (adj) { e = adj->theEdge(); return true; }
+	else return false;
+}
+
+
+
+//! Class for the representation of edges.
+class OGDF_EXPORT EdgeElement : private GraphElement {
+	friend class Graph;
+	friend class GraphList<EdgeElement>;
+
+	node m_src; //!< The source node of the edge.
+	node m_tgt; //!< The target node of the edge.
+	AdjElement *m_adjSrc; //!< Corresponding adjacancy entry at source node.
+	AdjElement *m_adjTgt; //!< Corresponding adjacancy entry at target node.
+	int m_id; // The (unique) index of the node.
+
+	//! Constructs an edge element (\a src,\a tgt).
+	/**
+	 * @param src is the source node of the edge.
+	 * @param tgt is the target node of the edge.
+	 * @param adjSrc is the corresponding adjacency entry at source node.
+	 * @param adjTgt is the corresponding adjacency entry at target node.
+	 * @param id is the index of the edge.
+	 */
+	EdgeElement(node src, node tgt, AdjElement *adjSrc, AdjElement *adjTgt, int id) :
+		m_src(src), m_tgt(tgt), m_adjSrc(adjSrc), m_adjTgt(adjTgt), m_id(id) { }
+
+	//! Constructs an edge element (\a src,\a tgt).
+	/**
+	 * @param src is the source node of the edge.
+	 * @param tgt is the target node of the edge.
+	 * @param id is the index of the edge.
+	 */
+	EdgeElement(node src, node tgt, int id) :
+		m_src(src), m_tgt(tgt), m_id(id) { }
+
+public:
+	//! Returns the index of the edge.
+	int index() const { return m_id; }
+	//! Returns the source node of the edge.
+	node source() const { return m_src; }
+	//! Returns the target node of the edge.
+	node target() const { return m_tgt; }
+
+	//! Returns the corresponding adjacancy entry at source node.
+	adjEntry adjSource() const { return m_adjSrc; }
+	//! Returns the corresponding adjacancy entry at target node.
+	adjEntry adjTarget() const { return m_adjTgt; }
+
+	//! Returns the adjacent node different from \a v.
+	node opposite(node v) const { return (v == m_src) ? m_tgt : m_src; }
+	// Returns true iff the edge is a self-loop (source node = target node).
+	bool isSelfLoop() const { return m_src == m_tgt; }
+
+	//! Returns the successor in the list of all edges.
+	edge succ() const { return (edge)m_next; }
+	//! Returns the predecessor in the list of all edges.
+	edge pred() const { return (edge)m_prev; }
+
+#ifdef OGDF_DEBUG
+	//! Returns the graph containing this node (debug only).
+	const Graph *graphOf() const { return m_src->graphOf(); }
+#endif
+
+	//! Returns true iff \a v is incident to the edge.
+	bool isIncident(node v) const { return v == m_src || v == m_tgt; }
+
+	//! Returns the common node of the edge and \a e. Returns NULL if the two edges are not adjacent.
+	node commonNode(edge e) const { return (m_src==e->m_src || m_src==e->m_tgt) ? m_src : ((m_tgt==e->m_src || m_tgt==e->m_tgt) ? m_tgt: 0); }
+
+	OGDF_NEW_DELETE
+}; // class EdgeElement
+
+
+#ifdef OGDF_DEBUG
+inline const Graph *AdjElement::graphOf() const {
+	return m_node->graphOf();
+}
+#endif
+
+
+template<>inline bool doDestruction<node>(const node *) { return false; }
+template<>inline bool doDestruction<edge>(const edge *) { return false; }
+template<>inline bool doDestruction<adjEntry>(const adjEntry *) { return false; }
+
+class NodeArrayBase;
+class EdgeArrayBase;
+class AdjEntryArrayBase;
+template<class T> class NodeArray;
+template<class T> class EdgeArray;
+template<class T> class AdjEntryArray;
+class OGDF_EXPORT GraphObserver;
+
+
+//---------------------------------------------------------
+// iteration macros
+//---------------------------------------------------------
+
+//! Iteration over all nodes \a v of graph \a G.
+#define forall_nodes(v,G) for((v)=(G).firstNode(); (v); (v)=(v)->succ())
+//! Iteration over all nodes \a v of graph \a G in reverse order.
+#define forall_rev_nodes(v,G) for((v)=(G).lastNode(); (v); (v)=(v)->pred())
+
+//! Iteration over all edges \a e of graph \a G.
+#define forall_edges(e,G) for((e)=(G).firstEdge(); (e); (e)=(e)->succ())
+//! Iteration over all edges \a e of graph \a G in reverse order.
+#define forall_rev_edges(e,G) for((e)=(G).lastEdge(); (e); (e)=(e)->pred())
+
+//! Iteration over all adjacency list entries \a adj of node \a v.
+#define forall_adj(adj,v) for((adj)=(v)->firstAdj(); (adj); (adj)=(adj)->succ())
+//! Iteration over all adjacency list entries \a adj of node \a v in reverse order.
+#define forall_rev_adj(adj,v) for((adj)=(v)->lastAdj(); (adj); (adj)=(adj)->pred())
+
+//! Iteration over all adjacent edges \a e of node \a v.
+#define forall_adj_edges(e,v)\
+for(ogdf::adjEntry ogdf_loop_var=(v)->firstAdj();\
+	ogdf::test_forall_adj_edges(ogdf_loop_var,(e));\
+	ogdf_loop_var=ogdf_loop_var->succ())
+
+
+//! Data type for general directed graphs (adjacency list representation).
+/**
+ * <H3>Iteration</H3>
+ * Besides the usage of iteration macros defined in Graph_d.h, the following
+ * code is recommended for further iteration tasks.
+ * <ul>
+ *   <li> Iteration over all outgoing edges \a e of node \a v:
+ *     \code
+ *  forall_adj_edges(e,v)
+ *    if(e->source() != v) continue;
+ *     \endcode
+ *
+ *   <li> Iteration over all ingoing edges \a e of node \a v:
+ *     \code
+ *  forall_adj_edges(e,v)
+ *	  if(e->target() != v) continue;
+ *     \endcode
+ *
+ *   <li> Iteration over all nodes \a x reachable by an outgoing edge \a e
+ *        of node \a v (without self-loops):
+ *     \code
+ *  forall_adj_edges(e,v)
+ *    if ((x = e->target()) == v) continue;
+ *     \endcode
+ *
+ *   <li> Iteration over all nodes \a x reachable by an outgoing edge \a e
+ *        of node \a v (with self-loops):
+ *     \code
+ *  forall_adj_edges(e,v) {
+ *    if (e->source() != v) continue;
+ *    x = e->target();
+ *  }
+ *     \endcode
+ *
+ *  <li> Iteration over all nodes \a x reachable by an ingoing edge \a e
+ *       of node \a v (without self-loops):
+ *     \code
+ *  forall_adj_edges(e,v)
+ *    if ((x = e->source()) == v) continue;
+ *     \endcode
+ *
+ * <li> Iteration over all nodes \a x reachable by an ingoing edge \a e
+ *      of node \a v (with self-loops):
+ *     \code
+ *  forall_adj_edges(e,v) {
+ *    if (e->target() != v) continue;
+ *    x = e->source();
+ *  }
+ *     \endcode
+ * </ul>
+ */
+
+class OGDF_EXPORT Graph
+{
+	GraphList<NodeElement> m_nodes; //!< The list of all nodes.
+	GraphList<EdgeElement> m_edges; //!< The list of all edges.
+	int m_nNodes; //!< The number of nodes in the graph.
+	int m_nEdges; //!< The number of edges in the graph.
+
+	int m_nodeIdCount; //!< The Index that will be assigned to the next created node.
+	int m_edgeIdCount; //!< The Index that will be assigned to the next created edge.
+
+	int m_nodeArrayTableSize; //!< The current table size of node arrays associated with this graph.
+	int m_edgeArrayTableSize; //!< The current table size of edge arrays associated with this graph.
+
+	mutable ListPure<NodeArrayBase*> m_regNodeArrays; //!< The registered node arrays.
+	mutable ListPure<EdgeArrayBase*> m_regEdgeArrays; //!< The registered edge arrays.
+	mutable ListPure<AdjEntryArrayBase*> m_regAdjArrays;  //!< The registered adjEntry arrays.
+	mutable ListPure<GraphObserver*> m_regStructures; //!< The registered graph structures.
+
+	GraphList<EdgeElement> m_hiddenEdges; //!< The list of hidden edges.
+
+public:
+	//
+	// enumerations
+	//
+
+	//! The type of edges (only used in derived classes).
+	enum EdgeType {
+		association = 0,
+		generalization = 1,
+		dependency = 2
+	}; // should be more flexible, standard, dissect, expand
+
+	//! The type of nodes.
+	enum NodeType {
+		vertex,
+		dummy,
+		generalizationMerger,
+		generalizationExpander,
+		highDegreeExpander,
+		lowDegreeExpander,
+		associationClass
+	};
+
+
+	//! Constructs an empty graph.
+	Graph();
+
+	//! Constructs a graph that is a copy of \a G.
+	/**
+	 * The constructor assures that the adjacency lists of nodes in the
+	 * constructed graph are in the same order as the adjacency lists in \a G.
+	 * This is in particular important when dealing with embedded graphs.
+	 *
+	 * @param G is the graph that will be copied.
+	 */
+	Graph(const Graph &G);
+
+	//! Destructor.
+	virtual ~Graph();
+
+
+	/**
+	 * @name Access methods
+	 */
+	//@{
+
+	//! Returns true iff the graph is empty, i.e., contains no nodes.
+	bool empty() const { return m_nNodes == 0; }
+
+	//! Returns the number of nodes in the graph.
+	int numberOfNodes() const { return m_nNodes; }
+
+	//! Returns the number of edges in the graph.
+	int numberOfEdges() const { return m_nEdges; }
+
+	//! Returns the largest used node index.
+	int maxNodeIndex() const { return m_nodeIdCount-1; }
+	//! Returns the largest used edge index.
+	int maxEdgeIndex() const { return m_edgeIdCount-1; }
+	//! Returns the largest used adjEntry index.
+	int maxAdjEntryIndex() const { return (m_edgeIdCount<<1)-1; }
+
+	//! Returns the table size of node arrays associated with this graph.
+	int nodeArrayTableSize() const { return m_nodeArrayTableSize; }
+	//! Returns the table size of edge arrays associated with this graph.
+	int edgeArrayTableSize() const { return m_edgeArrayTableSize; }
+	//! Returns the table size of adjEntry arrays associated with this graph.
+	int adjEntryArrayTableSize() const { return m_edgeArrayTableSize << 1; }
+
+	//! Returns the first node in the list of all nodes.
+	node firstNode() const { return m_nodes.begin (); }
+	//! Returns the last node in the list of all nodes.
+	node lastNode () const { return m_nodes.rbegin(); }
+
+	//! Returns the first edge in the list of all edges.
+	edge firstEdge() const { return m_edges.begin (); }
+	//! Returns the last edge in the list of all edges.
+	edge lastEdge () const { return m_edges.rbegin(); }
+
+	//! Returns a randomly chosen node.
+	node chooseNode() const;
+	//! Returns a randomly chosen edge.
+	edge chooseEdge() const;
+
+	//! Returns a list with all nodes of the graph.
+	/**
+	 * @tparam NODELIST is the type of node list, which is returned.
+	 * @param  nodes    is assigned the list of all nodes.
+	 */
+	template<class NODELIST>
+	void allNodes(NODELIST &nodes) const {
+		nodes.clear();
+		for (node v = m_nodes.begin(); v; v = v->succ())
+			nodes.pushBack(v);
+	}
+
+	//! Returns a list with all edges of the graph.
+	/**
+	 * @tparam EDGELIST is the type of edge list, which is returned.
+	 * @param  edges    is assigned the list of all edges.
+	 */
+	template<class EDGELIST>
+	void allEdges(EDGELIST &edges) const {
+		edges.clear();
+		for (edge e = m_edges.begin(); e; e = e->succ())
+			edges.pushBack(e);
+	}
+
+	//! Returns a list with all edges adjacent to node \a v.
+	/**
+	 * @tparam EDGELIST is the type of edge list, which is returned.
+	 * @param  v        is the node whose incident edges are queried.
+	 * @param  edges    is assigned the list of all edges incident to \a v
+	 *                  (including incoming and outcoming edges).
+	 */
+	template<class EDGELIST>
+	void adjEdges(node v, EDGELIST &edges) const {
+		edges.clear();
+		edge e;
+		forall_adj_edges(e,v)
+			edges.pushBack(e);
+	}
+
+	//! Returns a list with all entries in the adjacency list of node \a v.
+	/**
+	 * @tparam ADJLIST is the type of adjacency entry list, which is returned.
+	 * @param  v       is the node whose adjacency entries are queried.
+	 * @param  entries is assigned the list of all adjacency entries in the adjacency list of \a v.
+	 */
+	template<class ADJLIST>
+	void adjEntries(node v, ADJLIST &entries) const {
+		entries.clear();
+		adjEntry adj;
+		forall_adj(adj,v)
+			entries.pushBack(adj);
+	}
+
+	//! Returns a list with all incoming edges of node \a v.
+	/**
+	 * @tparam EDGELIST is the type of edge list, which is returned.
+	 * @param  v        is the node whose incident edges are queried.
+	 * @param  edges    is assigned the list of all incoming edges incident to \a v.
+	 */
+	template<class EDGELIST>
+	void inEdges(node v, EDGELIST &edges) const {
+		edges.clear();
+		edge e;
+		forall_adj_edges(e,v)
+			if (e->target() == v) edges.pushBack(e);
+	}
+
+	//! Returns a list with all outgoing edges of node \a v.
+	/**
+	 * @tparam EDGELIST is the type of edge list, which is returned.
+	 * @param  v        is the node whose incident edges are queried.
+	 * @param  edges    is assigned the list of all outgoing edges incident to \a v.
+	 */
+	template<class EDGELIST>
+	void outEdges(node v, EDGELIST &edges) const {
+		edges.clear();
+		edge e;
+		forall_adj_edges(e,v)
+			if (e->source() == v) edges.pushBack(e);
+	}
+
+
+	//@}
+	/**
+	 * @name Creation of new nodes and edges
+	 */
+	//@{
+
+	//! Creates a new node and returns it.
+	node newNode();
+
+	//! Creates a new node with predefined index and returns it.
+	/**
+	 * \pre \a index is currently not the index of any other node in the graph.
+	 *
+	 * \attention Passing a node index that is already in use results in an inconsistent
+	 *            data structure. Only use this method if you know what you're doing!
+	 *
+	 * @param index is the index that will be assigned to the newly created node.
+	 * @return the newly created node.
+	 */
+	node newNode(int index);
+
+	//! Creates a new edge (\a v,\a w) and returns it.
+	/**
+	 * @param v is the source node of the newly created edge.
+	 * @param w is the target node of the newly created edge.
+	 * @return the newly created edge.
+	 */
+	edge newEdge(node v, node w);
+
+	//! Creates a new edge (\a v,\a w) with predefined index and returns it.
+	/**
+	 * \pre \a index is currently not the index of any other edge in the graph.
+	 *
+	 * \attention  Passing an edge index that is already in use results in an inconsistent
+	 *             data structure. Only use this method if you know what you're doing!
+	 *
+	 * @param v     is the source node of the newly created edge.
+	 * @param w     is the target node of the newly created edge.
+	 * @param index is the index that will be assigned to the newly created edge.
+	 * @return the newly created edge.
+	 */
+	edge newEdge(node v, node w, int index);
+
+	//! Creates a new edge at predefined positions in the adjacency lists.
+	/**
+	 * Let \a v be the node whose adjacency list contains \a adjSrc,
+	 * and \a w the node whose adjacency list contains \a adjTgt. Then,
+	 * the created edge is (\a v,\a w).
+	 *
+	 * @param adjSrc is the adjacency entry after which the new edge is inserted
+	 *               in the adjacency list of \a v.
+	 * @param adjTgt is the adjacency entry after which the new edge is inserted
+	 *               in the adjacency list of \a w.
+	 * @param dir    specifies if the edge is inserted before or after the given
+	 *               adjacency entries.
+	 * @return the newly created edge.
+	 */
+	edge newEdge(adjEntry adjSrc, adjEntry adjTgt, Direction dir = ogdf::after);
+
+	//! Creates a new edge at predefined positions in the adjacency lists.
+	/**
+	 * Let \a w be the node whose adjacency list contains \a adjTgt. Then,
+	 * the created edge is (\a v,\a w).
+	 *
+	 * @param v      is the source node of the new edge; the edge is added at the end
+	 *               of the adjacency list of \a v.
+	 * @param adjTgt is the adjacency entry after which the new edge is inserted
+	 *               in the adjacency list of \a w.
+	 * @return the newly created edge.
+	 */
+	edge newEdge(node v, adjEntry adjTgt);
+
+	//! Creates a new edge at predefined positions in the adjacency lists.
+	/**
+	 * Let \a v be the node whose adjacency list contains \a adjSrc. Then,
+	 * the created edge is (\a v,\a w).
+	 *
+	 * @param adjSrc is the adjacency entry after which the new edge is inserted
+	 *               in the adjacency list of \a v.
+	 * @param w      is the source node of the new edge; the edge is added at the end
+	 *               of the adjacency list of \a w.
+	 * @return the newly created edge.
+	 */
+	edge newEdge(adjEntry adjSrc, node w);
+
+
+	//@}
+	/**
+	 * @name Removing nodes and edges
+	 */
+	//@{
+
+	//! Removes node \a v and all incident edges from the graph.
+	/**
+	 * @param v is the node that will be deleted.
+	 */
+	void delNode(node v);
+
+	//! Removes edge \a e from the graph.
+	/**
+	 * @param e is the egde that will be deleted.
+	 */
+	void delEdge(edge e);
+
+	//! Removes all nodes and all edges from the graph.
+	void clear();
+
+
+	//@}
+	/**
+	 * @name Hiding edges
+	 * These methods are used for temporarily hiding edges. Edges are removed from the
+	 * list of all edges and their corresponding adfjacency entries from the repsective
+	 * adjacency lists, but the edge objects themselves are not destroyed; hiddenedges
+	 * can later be reactivated with restoreEdge().
+	 */
+	//@{
+
+	//! Hides the edge \a e.
+	/**
+	 * The edge \a e is removed from the list of all edges and adjacency lists of nodes, but
+	 * not deleted; \a e can be restored by calling restoreEdge(e).
+	 *
+	 * \attention If an edge is hidden, its source and target node may not be deleted!
+	 *
+	 * @param e is the edge that will be hidden.
+	 */
+	void hideEdge(edge e);
+
+	//! Restores a hidden edge \a e.
+	/**
+	 * \pre \a e is currently hidden and its source and target have not been removed!
+	 *
+	 * @param e is the hidden edge that will be restored.
+	 */
+	void restoreEdge(edge e);
+
+	//! Restores all hidden edges.
+	void restoreAllEdges();
+
+
+	/**
+	 * @name Advanced modification methods
+	 */
+	//@{
+
+	//! Splits edge \a e into two edges introducing a new node.
+	/**
+	 * Let \a e=(\a v,\a w). Then, the resulting two edges are \a e=(\a v,\a u)
+	 * and \a e'=(\a u,\a w), where \a u is a new node.
+	 *
+	 * \note The edge \a e is modified by this operation.
+	 *
+	 * @param e is the edge to be split.
+	 * @return The edge \a e'.
+	 */
+	virtual edge split(edge e);
+
+	//! Undoes a split operation.
+	/**
+	 * Removes node \a u by joining the two edges adjacent to \a u. The
+	 * outgoing edge of \a u is removed and the incoming edge \a e is reused
+	 *
+	 * \pre \a u has exactly one incoming and one outgoing edge, and
+	 *    none of them is a self-loop.
+	 *
+	 * @param u is the node to be unsplit.
+	 * @return The edge \a e.
+	 */
+	void unsplit(node u);
+
+	//! Undoes a split operation.
+	/**
+	 * For two edges \a eIn = (\a x,\a u) and \a eOut = (\a u,\a y), removes
+	 * node \a u by joining \a eIn and \a eOut. Edge \a eOut is removed and
+	 * \a eIn is reused.
+	 *
+	 * \pre \a eIn and \a eOut are the only edges incident with \a u and
+	 *      none of them is a self-loop.
+	 *
+	 * @param eIn  is the (only) incoming edge of \a u.
+	 * @param eOut is the (only) outgoing edge of \a u.
+	 */
+	virtual void unsplit(edge eIn, edge eOut);
+
+	//! Splits a node while preserving the order of adjacency entries.
+	/**
+	 * This method splits a node \a v into two nodes \a vl and \a vr. Node
+	 * \a vl receives all adjacent edges of \a v from \a adjStartLeft until
+	 * the edge preceding \a adjStartRight, and \a vr the remaining nodes
+	 * (thus \a adjStartRight is the first edge that goes to \a vr). The
+	 * order of adjacency entries is preserved. Additionally, a new edge
+	 * (\a vl,\a vr) is created, such that this edge is inserted before
+	 * \a adjStartLeft and \a adjStartRight in the the adjacency lists of
+	 * \a vl and \a vr.
+	 *
+	 * Node \a v is modified to become node \a vl, and node \a vr is returned.
+	 * This method is useful when modifying combinatorial embeddings.
+	 *
+	 * @param adjStartLeft  is the first entry that goes to the left node.
+	 * @param adjStartRight is the first entry that goes to the right node.
+	 * @return the newly created node.
+	 */
+	node splitNode(adjEntry adjStartLeft, adjEntry adjStartRight);
+
+	//! Contracts edge \a e while preserving the order of adjacency entries.
+	/**
+	 * @param e is the edge to be contracted.
+	 * @return the endpoint of \a e to which all edges have been moved.
+	 */
+	node contract(edge e);
+
+	//! Moves edge \a e to a different adjacency list.
+	/**
+	 * The source adjacency entry of \a e is moved to the adjacency list containing
+	 * \a adjSrc and is inserted before or after \a adjSrc, and its target adjacency entry
+	 * to the adjacency list containing \a adjTgt and is inserted before or after
+	 * \a adjTgt; e is afterwards an edge from owner(\a adjSrc) to owner(\a adjTgt).
+	 *
+	 * @param e      is the edge to be moved.
+	 * @param adjSrc is the adjaceny entry before or after which the source adjacency entry
+	 *               of \a e will be inserted.
+	 * @param dirSrc specifies if the source adjacency entry of \a e will be inserted before or after \a adjSrc.
+	 * @param adjTgt is the adjaceny entry before or after which the target adjacency entry
+	 *               of \a e will be inserted.
+	 * @param dirTgt specifies if the target adjacency entry of \a e will be inserted before or after \a adjTgt.
+	 */
+	void move(edge e, adjEntry adjSrc, Direction dirSrc,
+		adjEntry adjTgt, Direction dirTgt);
+
+	//! Moves the target node of edge \a e to node \a w.
+	/**
+	 * If \a e=(\a v,\a u) before, then \a e=(\a v,\a w) afterwards.
+	 *
+	 * @param e is the edge whose target node is moved.
+	 * @param w is the new target node of \a e.
+	 */
+	void moveTarget(edge e, node w);
+
+	//! Moves the target node of edge \a e to a specific position in an adjacency list.
+	/**
+	 * Let \a w be the node containing \a adjTgt. If \a e=(\a v,\a u) before, then \a e=(\a v,\a w) afterwards.
+	 * Inserts the adjacency entry before or after \a adjTgt according to \a dir.
+	 *
+	 * @param e is the edge whose target node is moved.
+	 * @param adjTgt is the adjacency entry before or after which the target adjacency entry of \a e is inserted.
+	 * @param dir specifies if the target adjacency entry of \a e is inserted before or after \a adjTgt.
+	 */
+	void moveTarget(edge e, adjEntry adjTgt, Direction dir);
+
+	//! Moves the source node of edge \a e to node \a w.
+	/**
+	 * If \a e=(\a v,\a u) before, then \a e=(\a w,\a u) afterwards.
+	 *
+	 * @param e is the edge whose source node is moved.
+	 * @param w is the new source node of \a e.
+	 */
+	void moveSource(edge e, node w);
+
+	//! Moves the source node of edge \a e to a specific position in an adjacency list.
+	/**
+	 * Let \a w be the node containing \a adjSrc. If \a e=(\a v,\a u) before, then \a e=(\a w,\a u) afterwards.
+	 * Inserts the adjacency entry before or after \a adjSrc according to \a dir.
+	 *
+	 * @param e is the edge whose source node is moved.
+	 * @param adjSrc is the adjacency entry before or after which the source adjacency entry of \a e is inserted.
+	 * @param dir specifies if the source adjacency entry of \a e is inserted before or after \a adjSrc.
+	 */
+	void moveSource(edge e, adjEntry adjSrc, Direction dir);
+
+	//! Searches and returns an edge connecting nodes \a v and \a w.
+	/**
+	 * @param v is the source node of the edge to be searched.
+	 * @param w is the target node of the edge to be searched.
+	 * @return an edge (\ v,\a w) if such an edge exists, 0 otherwise.
+	 */
+	edge searchEdge (node v, node w) const;
+
+	//! Reverses the edge \a e, i.e., exchanges source and target node.
+	/**
+	 * @param e is the edge to be reveresed.
+	 */
+	void reverseEdge(edge e);
+
+	//! Reverses all edges in the graph.
+	void reverseAllEdges();
+
+	//! Collapses all nodes in the list \a nodes to the first node in the list.
+	/**
+	 * Parallel edges are removed.
+	 *
+	 * @tparam NODELIST is the type of input node list.
+	 * @param  nodes    is the list of nodes that will be collapsed. This list will be empty after the call.
+	 */
+	template<class NODELIST>
+	void collaps(NODELIST &nodes){
+		node v = nodes.popFrontRet();
+		while (!nodes.empty())
+		{
+			node w = nodes.popFrontRet();
+			adjEntry adj = w->firstAdj();
+			while (adj !=0)
+			{
+				adjEntry succ = adj->succ();
+				edge e = adj->theEdge();
+				if (e->source() == v || e->target() == v)
+					delEdge(e);
+				else if (e->source() == w)
+					moveSource(e,v);
+				else
+					moveTarget(e,v);
+				adj = succ;
+			}
+			delNode(w);
+		}
+	}
+
+	//! Sorts the adjacency list of node \a v according to \a newOrder.
+	/**
+	 * \pre \a newOrder contains exactly the adjacency entries of \a v!
+	 *
+	 * @tparam ADJ_ENTRY_LIST is the type of the input adjacency entry list.
+	 * @param  v              is the node whose adjacency list will be sorted.
+	 * @param  newOrder       is the list of adjacency entries of \a v in the new order.
+	 */
+	template<class ADJ_ENTRY_LIST>
+	void sort(node v, const ADJ_ENTRY_LIST &newOrder) {
+#ifdef OGDF_DEBUG
+		typename ADJ_ENTRY_LIST::const_iterator it;
+		for(it = newOrder.begin(); it.valid() ; ++it) {
+			OGDF_ASSERT((*it)->theNode() == v);
+		}
+#endif
+		v->m_adjEdges.sort(newOrder);
+	}
+
+	//! Reverses the adjacency list of \a v.
+	/**
+	 * @param v is the node whose adjacency list will be reveresed.
+	 */
+	void reverseAdjEdges(node v) {
+		v->m_adjEdges.reverse();
+	}
+
+	//! Moves adjacency entry \a adjMove before or after \a adjPos.
+	/**
+	 * \pre \a adjMove and adjAfter are distinct entries in the same adjacency list.
+	 *
+	 * @param adjMove is an entry in the adjacency list of a node in this graph.
+	 * @param adjPos  is an entry in the same adjacency list as \a adjMove.
+	 * @param dir     specifies if \a adjMove is moved before or after \a adjPos.
+	 */
+	void moveAdj(adjEntry adjMove, Direction dir, adjEntry adjPos) {
+		OGDF_ASSERT(adjMove->graphOf() == this && adjPos->graphOf() == this);
+		OGDF_ASSERT(adjMove != 0 && adjPos != 0);
+		GraphList<AdjElement> &adjList = adjMove->m_node->m_adjEdges;
+		adjList.move(adjMove, adjList, adjPos, dir);
+	}
+
+	//! Moves adjacency entry \a adjMove after \a adjAfter.
+	/**
+	 * \pre \a adjMove and \a adjAfter are distinct entries in the same adjacency list.
+	 *
+	 * @param adjMove  is an entry in the adjacency list of a node in this graph.
+	 * @param adjAfter is an entry in the same adjacency list as \a adjMove.
+	 */
+	void moveAdjAfter(adjEntry adjMove, adjEntry adjAfter) {
+		OGDF_ASSERT(adjMove->graphOf() == this && adjAfter->graphOf() == this);
+		OGDF_ASSERT(adjMove != 0 && adjAfter != 0);
+		adjMove->m_node->m_adjEdges.moveAfter(adjMove,adjAfter);
+	}
+
+	//! Moves adjacency entry \a adjMove before \a adjBefore.
+	/**
+	 * \pre \a adjMove and \a adjBefore are distinct entries in the same adjacency list.
+	 *
+	 * @param adjMove   is an entry in the adjacency list of a node in this graph.
+	 * @param adjBefore is an entry in the same adjacency list as \a adjMove.
+	 */
+	void moveAdjBefore(adjEntry adjMove, adjEntry adjBefore) {
+		OGDF_ASSERT(adjMove->graphOf() == this && adjBefore->graphOf() == this);
+		OGDF_ASSERT(adjMove != 0 && adjBefore != 0);
+		adjMove->m_node->m_adjEdges.moveBefore(adjMove,adjBefore);
+	}
+
+	//! Reverses all adjacency lists.
+	void reverseAdjEdges();
+
+	//! Exchanges two entries in an adjacency list.
+	/**
+	 * \pre \a adj1 and \a adj2 must be belong to the same adjacency list.
+	 *
+	 * @param adj1 the first adjacency entry to be swapped.
+	 * @param adj2 the secomd adjacency entry to be swapped.
+	 */
+	void swapAdjEdges(adjEntry adj1, adjEntry adj2) {
+		OGDF_ASSERT(adj1->theNode() == adj2->theNode());
+		OGDF_ASSERT(adj1->graphOf() == this);
+
+		adj1->theNode()->m_adjEdges.swap(adj1,adj2);
+	}
+
+
+	//@}
+	/**
+	 * @name Input and output
+	 */
+	//@{
+
+	//! Reads a graph in GML format from file \a fileName.
+	/**
+	 * @param fileName is the name of the input file.
+	 * @return true if successful, false otherwise.
+	 */
+	bool readGML(const char *fileName);
+
+	//! Reads a graph in GML format from input stream \a is.
+	/**
+	 * @param is is the input file stream.
+	 * @return true if successful, false otherwise.
+	 */
+	bool readGML(istream &is);
+
+	//! Writes the graph in GML format to file \a fileName.
+	/**
+	 * @param fileName is the name of the output file.
+	 */
+	void writeGML(const char *fileName) const;
+
+	//! Writes the graph in GML format to output stream \a os.
+	/**
+	 * @param os is the output file stream.
+	 * @return true if successful, false otherwise.
+	 */
+	void writeGML(ostream &os) const;
+
+	//! Reads a graph in LEDA format from file \a fileName.
+	/**
+	 * @param fileName is the name of the input file.
+	 * @return true if successful, false otherwise.
+	 */
+	bool readLEDAGraph(const char *fileName);
+
+	//! Read a graph in LEDA format from input stream \a is.
+	/**
+	 * @param is is the input file stream.
+	 * @return true if successful, false otherwise.
+	 */
+	bool readLEDAGraph(istream &is);
+
+
+	//@}
+	/**
+	 * @name Miscellaneous
+	 */
+	//@{
+
+	//! Returns the genus of the graph's embedding.
+	/**
+	 * The genus of a graph is defined as follows. Let \f$G\f$ be a graph
+	 * with \f$m\f$ edges, \f$n\f$ nodes, \f$c\f$ connected components, \f$nz\f$
+	 * isolated vertices, and \f$fc\f$ face cycles. Then,
+	 * \f[
+	 *   genus(G) = (m/2 + 2c - n -nz -fc)/2
+	 * \f]
+	 *
+	 * @return the genus of the graph's current embedding; if this is 0, then the graph is planarly embedded.
+	 */
+	int genus() const;
+
+	//! Returns true iff the graph represents a combinatorial embedding.
+	/**
+	 * @return true if the current embedding (given by the adjacency lists) represents a combinatorial embedding, false otherwise.
+	 */
+	bool representsCombEmbedding() const {
+		return (genus() == 0);
+	}
+
+	//! Checks the consistency of the data structure.
+	/**
+	 * \remark This method is meant for debugging purposes only.
+	 *
+	 * @return true if everything is ok, false if the data structure is inconsistent.
+	 */
+	bool consistencyCheck() const;
+
+
+	//@}
+	/**
+	 * @name Registering arrays and observers
+	 * These methods are used by various graph array types like NodeArray or EdgeArray.
+	 * There should be no need to use them directly in user code.
+	 */
+	//@{
+
+	//! Registers a node array.
+	/**
+	 * \remark This method is automatically called by node arrays; it should not be called manually.
+	 *
+	 * @param pNodeArray is a pointer to the node array's base; this node array must be associated with this graph.
+	 * @return an iterator pointing to the entry for the registered node array in the list of registered node arrays.
+	 *         This iterator is required for unregistering the node array again.
+	 */
+	ListIterator<NodeArrayBase*> registerArray(NodeArrayBase *pNodeArray) const;
+
+	//! Registers an edge array.
+	/**
+	 * \remark This method is automatically called by edge arrays; it should not be called manually.
+	 *
+	 * @param pEdgeArray is a pointer to the edge array's base; this edge array must be associated with this graph.
+	 * @return an iterator pointing to the entry for the registered edge array in the list of registered edge arrays.
+	 *         This iterator is required for unregistering the edge array again.
+	 */
+	ListIterator<EdgeArrayBase*> registerArray(EdgeArrayBase *pEdgeArray) const;
+
+	//! Registers an adjEntry array.
+	/**
+	 * \remark This method is automatically called by adjacency entry arrays; it should not be called manually.
+	 *
+	 * @param pAdjArray is a pointer to the adjacency entry array's base; this adjacency entry array must be
+	 *                  associated with this graph.
+	 * @return an iterator pointing to the entry for the registered adjacency entry array in the list of registered
+	 *         adjacency entry arrays. This iterator is required for unregistering the adjacency entry array again.
+	 */
+	ListIterator<AdjEntryArrayBase*> registerArray(AdjEntryArrayBase *pAdjArray) const;
+
+	//! Registers a graph observer (e.g. a ClusterGraph).
+	/**
+	 * @param pStructure is a pointer to the graph observer that shall be registered; this graph observer must be
+	 *                   associated with this graph.
+	 * @return an iterator pointing to the entry for the registered graph observer in the list of registered
+	 *         graph observers. This iterator is required for unregistering the graph observer again.
+	 */
+	ListIterator<GraphObserver*> registerStructure(GraphObserver *pStructure) const;
+
+	//! Unregisters a node array.
+	/**
+	 * @param it is an iterator pointing to the entry in the list of registered node arrays for the node array to
+	 *        be unregistered.
+	 */
+	void unregisterArray(ListIterator<NodeArrayBase*> it) const;
+
+	//! Unregisters an edge array.
+	/**
+	 * @param it is an iterator pointing to the entry in the list of registered edge arrays for the edge array to
+	 *        be unregistered.
+	 */
+	void unregisterArray(ListIterator<EdgeArrayBase*> it) const;
+
+	//! unregisters an adjEntry array.
+	/**
+	 * @param it is an iterator pointing to the entry in the list of registered adjacency entry arrays for the
+	 *           adjacency entry array to be unregistered.
+	 */
+	void unregisterArray(ListIterator<AdjEntryArrayBase*> it) const;
+
+	//! Unregisters a graph observer.
+	/**
+	 * @param it is an iterator pointing to the entry in the list of registered graph observers for the graph
+	 *           observer to be unregistered.
+	 */
+	void unregisterStructure(ListIterator<GraphObserver*> it) const;
+
+
+	//! Resets the edge id count to \a maxId.
+	/**
+	 * The next edge will get edge id \a maxId+1. Use this function with caution!
+	 * It is provided as an efficient way to reduce the edge id count. The Graph class
+	 * increments the edge id count whenever an edge is created; free edge ids resulting
+	 * from removing edges are not reused (there is not something like a freelist).
+	 *
+	 * This function is , e.g., useful, when a lot of edges has been added and
+	 * <em>all</em> these edges are removed again (without creating other new edges
+	 * meanwile). Then, it is safe to reduce the edge id count to the value it had
+	 * before, cf. the following code snippet:
+	 * \code
+	 *   int oldIdCount = G.maxEdgeIndex();
+	 *   Create some edges
+	 *   ...
+	 *   Remove all these edges again
+	 *   G.resetEdgeIdCount(oldIdCount);
+	 * \endcode
+	 *
+	 * Reducing the edge id count will reduce the memory consumption of edge arrays
+	 * associated with the graph.
+	 *
+	 * \pre -1 \f$\leq\f$ \a maxId \f$\leq\f$ maximal edge id in the graph.
+	 *
+	 * @param maxId is an upper bound of the edge ids in the graph.
+	 */
+	void resetEdgeIdCount(int maxId);
+
+
+	//@}
+	/**
+	 * @name Operators
+	 */
+	//@{
+	//! Assignment operator.
+	/**
+	 * The assignment operature assures that the adjacency lists of nodes in the
+	 * constructed graph are in the same order as the adjacency lists in \a G.
+	 * This is in particular important when dealing with embedded graphs.
+	 *
+	 * @param G is the graph to be copied.
+	 * @return this graph.
+	 */
+	Graph &operator=(const Graph &G);
+
+	OGDF_MALLOC_NEW_DELETE
+
+	//@}
+
+public:
+
+	//! Returns the smallest power of 2 which is >= 2^\a start and > \a idCount.
+	static int nextPower2(int start, int idCount);
+
+
+protected:
+	void construct(const Graph &G, NodeArray<node> &mapNode,
+		EdgeArray<edge> &mapEdge);
+
+	void assign(const Graph &G, NodeArray<node> &mapNode,
+		EdgeArray<edge> &mapEdge);
+
+	//! Constructs a copy of the subgraph of \a G induced by \a nodes.
+	/**
+	 * This method preserves the order in the adjacency lists, i.e., if
+	 * \a G is embedded, its embedding induces the embedding of the copy.
+	 */
+	void constructInitByNodes(
+		const Graph &G,
+		const List<node> &nodes,
+		NodeArray<node> &mapNode,
+		EdgeArray<edge> &mapEdge);
+
+	void constructInitByActiveNodes(
+		const List<node> &nodes,
+		const NodeArray<bool> &activeNodes,
+		NodeArray<node> &mapNode,
+		EdgeArray<edge> &mapEdge);
+
+private:
+	void copy(const Graph &G, NodeArray<node> &mapNode,
+		EdgeArray<edge> &mapEdge);
+	void copy(const Graph &G);
+
+	edge createEdgeElement(node v, node w, adjEntry adjSrc, adjEntry adjTgt);
+	node pureNewNode();
+
+	// moves adjacency entry to node w
+	void moveAdj(adjEntry adj, node w);
+
+	void reinitArrays();
+	void reinitStructures();
+	void resetAdjEntryIndex(int newIndex, int oldIndex);
+
+	bool readToEndOfLine(istream &is);
+}; // class Graph
+
+
+
+//! Bucket function using the index of an edge's source node as bucket.
+class OGDF_EXPORT BucketSourceIndex : public BucketFunc<edge> {
+public:
+	//! Returns source index of \a e.
+	int getBucket(const edge &e) { return e->source()->index(); }
+};
+
+//! Bucket function using the index of an edge's target node as bucket.
+class OGDF_EXPORT BucketTargetIndex : public BucketFunc<edge> {
+public:
+	//! Returns target index of \a e.
+	int getBucket(const edge &e) { return e->target()->index(); }
+};
+
+
+} //namespace
+
+#endif
+
diff --git a/ogdf/basic/HashArray.h b/ogdf/basic/HashArray.h
new file mode 100644
index 0000000..794069b
--- /dev/null
+++ b/ogdf/basic/HashArray.h
@@ -0,0 +1,179 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of HashArray class.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_HASH_ARRAY_H
+#define OGDF_HASH_ARRAY_H
+
+
+#include "Hashing.h"
+
+
+namespace ogdf {
+
+
+//! Indexed arrays using hashing for element access.
+/**
+ * @tparam I is the index type.
+ * @tparam E is the element type.
+ * @tparam H is the hash function type. Optional; its default uses the class DefHashFunc.
+ *
+ * A hashing array can be used like a usual array but has a general
+ * index type.
+ *
+ * The hashing array is only defined for a subset <I>I<SUB>def</SUB></I> of the
+ * index set (set of all elements of the index type). At construction, this set
+ * is empty. Whenever an index is assigned an element, this index is added
+ * to <I>I<SUB>def</SUB></I>. There are also method for testing if an index
+ * is defined (is in <I>I<SUB>def</SUB></I>).
+ *
+ * <H3>Example</H3>
+ * The following code snippet demonstrates how to use a hashing array. First,
+ * the example inserts elements into a hashing array simulating a tiny
+ * German–English dictionary, then it prints some elements via array
+ * access, and finally it iterates over all defined indices and prints the
+ * dictionary entries. We use a the const reference \a Hc, since we want to
+ * avoid that array access for undefined indices creates these elements.
+ *
+ * \code
+ *   HashArray<String,String> H("[undefined]");
+ *   const HashArray<String,String> &Hc = H;
+ *
+ *   H["Hund"]  = "dog";
+ *   H["Katze"] = "cat";
+ *   H["Maus"]  = "mouse";
+ *
+ *   cout << "Katze:   " << Hc["Katze"]   << endl;
+ *   cout << "Hamster: " << Hc["Hamster"] << endl;
+ *
+ *   cout << "\nAll elements:" << endl;
+ *   HashConstIterator<String,String> it;
+ *   for(it = Hc.begin(); it.valid(); ++it)
+ *     cout << it.key() << " -> " << it.info() << endl;
+ * \endcode
+ *
+ * The produced output is as follows:
+ * \code
+ * Katze:   cat
+ * Hamster: [undefined]
+ *
+ * All elements:
+ * Hund -> dog
+ * Maus -> mouse
+ * Katze -> cat
+ * \endcode
+ */
+template<class I, class E, class H = DefHashFunc<I> >
+class HashArray : private Hashing<I,E,H>
+{
+	E m_defaultValue; //! The default value for elements.
+
+public:
+	//! The type of const-iterators for hash arrays.
+	typedef HashConstIterator<I,E,H> const_iterator;
+
+	//! Creates a hashing array; the default value is the default value of the element type.
+	HashArray() : Hashing<I,E,H>() { }
+
+	//! Creates a hashing array with default value \a defaultValue.
+	HashArray(const E &defaultValue, const H &hashFunc = H())
+		: Hashing<I,E,H>(256, hashFunc), m_defaultValue(defaultValue) { }
+
+	//! Copy constructor.
+	HashArray(const HashArray<I,E,H> &A) : Hashing<I,E,H>(A), m_defaultValue(A.m_defaultValue) { }
+
+	//! Returns an iterator to the first element in the list of all elements.
+	HashConstIterator<I,E,H> begin() const { return Hashing<I,E,H>::begin(); }
+
+	//! Returns the number of defined indices (= number of elements in hash table).
+	int size() const { return Hashing<I,E,H>::size(); }
+
+	//! Returns if any indices are defined (= if the hash table is empty)
+	int empty() const { return Hashing<I,E,H>::empty(); }
+
+
+	//! Returns the element with index \a i.
+	const E &operator[](const I &i) const {
+		HashElement<I,E> *pElement = Hashing<I,E,H>::lookup(i);
+		if (pElement) return pElement->info();
+		else return m_defaultValue;
+	}
+
+	//! Returns a reference to the element with index \a i.
+	E &operator[](const I &i) {
+		HashElement<I,E> *pElement = Hashing<I,E,H>::lookup(i);
+		if (!pElement) pElement = Hashing<I,E,H>::fastInsert(i,m_defaultValue);
+		return pElement->info();
+	}
+
+	//! Returns true iff index \a i is defined.
+	bool isDefined(const I &i) const {
+		return Hashing<I,E,H>::member(i);
+	}
+
+	//! Undefines index \a i.
+	void undefine(const I &i) {
+		Hashing<I,E,H>::del(i);
+	}
+
+	//! Assignment operator.
+	HashArray<I,E,H> &operator=(const HashArray<I,E,H> &A) {
+		m_defaultValue = A.m_defaultValue;
+		Hashing<I,E,H>::operator =(A);
+		return *this;
+	}
+
+	//! Undefines all indices.
+	void clear() { Hashing<I,E,H>::clear(); }
+};
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/Hashing.cpp b/ogdf/basic/Hashing.cpp
new file mode 100644
index 0000000..ab70a9d
--- /dev/null
+++ b/ogdf/basic/Hashing.cpp
@@ -0,0 +1,207 @@
+/*
+ * $Revision: 2549 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-04 23:09:19 +0200 (Mi, 04. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of Hashing (class HashingBase)
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+#include "Hashing.h"
+
+
+namespace ogdf {
+
+HashingBase::HashingBase(int minTableSize)
+{
+	m_count = 0;
+	init(m_minTableSize = minTableSize);
+}
+
+
+HashingBase::HashingBase(const HashingBase &H)
+{
+	copyAll(H);
+}
+
+
+HashingBase::~HashingBase()
+{
+	free(m_table);
+}
+
+
+void HashingBase::init(int tableSize)
+{
+	OGDF_ASSERT(tableSize >= m_minTableSize)
+
+	m_tableSize = tableSize;
+	m_hashMask = tableSize-1;
+	m_tableSizeHigh = tableSize << 1;
+	m_tableSizeLow  = (tableSize > m_minTableSize) ? (tableSize >> 1) : -1;
+
+	m_table = (HashElementBase **)calloc(tableSize,sizeof(HashElementBase *));
+}
+
+
+void HashingBase::destroyAll()
+{
+	HashElementBase **pList = m_table, **pListStop = m_table+m_tableSize;
+
+	for(; pList != pListStop; ++pList) {
+		HashElementBase *pElement = *pList, *pNext;
+		for (; pElement; pElement = pNext) {
+			pNext = pElement->next();
+			destroy(pElement);
+		}
+	}
+}
+
+
+void HashingBase::copyAll(const HashingBase &H)
+{
+	m_count = 0;
+	init(H.m_tableSize);
+
+	HashElementBase **pList = H.m_table;
+	HashElementBase **pListStop = H.m_table+m_tableSize;
+
+	for(; pList != pListStop; ++pList) {
+		HashElementBase *pElement = *pList;
+		for (; pElement; pElement = pElement->next())
+			insert(H.copy(pElement));
+	}
+}
+
+
+void HashingBase::clear()
+{
+	destroyAll();
+	free(m_table);
+
+	m_count = 0;
+	init(m_minTableSize);
+}
+
+
+HashingBase &HashingBase::operator=(const HashingBase &H)
+{
+	destroyAll();
+	free(m_table);
+	copyAll(H);
+	return *this;
+}
+
+
+void HashingBase::resize(int newTableSize)
+{
+	HashElementBase **oldTable = m_table;
+	HashElementBase **oldTableStop = oldTable + m_tableSize;
+
+	init(newTableSize);
+
+	for(HashElementBase **pOldList = oldTable;
+		pOldList != oldTableStop; ++pOldList)
+	{
+		HashElementBase *pElement = *pOldList, *pNext;
+		for(; pElement; pElement = pNext) {
+			pNext = pElement->m_next;
+
+			HashElementBase **pList = m_table +
+				(pElement->m_hashValue & m_hashMask);
+			pElement->m_next = *pList;
+			*pList = pElement;
+		}
+	}
+
+	free(oldTable);
+}
+
+
+void HashingBase::insert(HashElementBase *pElement)
+{
+	if (++m_count == m_tableSizeHigh)
+		resize(m_tableSizeHigh);
+
+	HashElementBase **pList = m_table + (pElement->m_hashValue & m_hashMask);
+	pElement->m_next = *pList;
+	*pList = pElement;
+}
+
+
+void HashingBase::del(HashElementBase *pElement)
+{
+	HashElementBase **pList = m_table + (pElement->m_hashValue & m_hashMask);
+	HashElementBase *pPrev = *pList;
+
+	if (pPrev == pElement) {
+		*pList = pElement->m_next;
+
+	} else {
+		while (pPrev->m_next != pElement) pPrev = pPrev->m_next;
+		pPrev->m_next = pElement->m_next;
+	}
+
+	if (--m_count == m_tableSizeLow)
+		resize(m_tableSizeLow);
+}
+
+
+HashElementBase *HashingBase::firstElement(HashElementBase ***pList) const
+{
+	HashElementBase **pStop = m_table + m_tableSize;
+	for(*pList = m_table; *pList != pStop; ++(*pList))
+		if (**pList) return **pList;
+
+	return 0;
+}
+
+
+HashElementBase *HashingBase::nextElement(HashElementBase ***pList,
+	HashElementBase *pElement) const
+{
+	if ((pElement = pElement->next()) != 0) return pElement;
+
+	HashElementBase **pStop = m_table + m_tableSize;
+	for(++(*pList); *pList != pStop; ++(*pList))
+		if (**pList) return **pList;
+
+	return 0;
+}
+
+
+
+} // end namespace ogdf
diff --git a/ogdf/basic/Hashing.h b/ogdf/basic/Hashing.h
new file mode 100644
index 0000000..36bcaef
--- /dev/null
+++ b/ogdf/basic/Hashing.h
@@ -0,0 +1,520 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of classes used for hashing.
+ *
+ * Declares HashingBase and HashElementBase, and declares and implements
+ * classes Hashing, HashElement, HashConstIterator.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_HASHING_H
+#define OGDF_HASHING_H
+
+#include "basic.h"
+#include <math.h>
+#include <limits.h>
+
+
+namespace ogdf {
+
+class HashingBase;
+
+/**
+ * \brief Base class for elements within a hash table.
+ *
+ * This class realizes only chaining of elements and maintianing hash values
+ * for rehashing.
+ */
+class HashElementBase {
+	friend class HashingBase;
+
+	HashElementBase *m_next; //!< The successor in the list.
+	size_t m_hashValue; //!< The hash value.
+
+public:
+	//! Creates a hash element with hash value \a hashValue.
+	HashElementBase(size_t hashValue) : m_hashValue(hashValue) { }
+
+	//! Returns the successor to this element in the list.
+	HashElementBase *next() const { return m_next; }
+
+	//! Returns the hash value of this element.
+	size_t hashValue() const { return m_hashValue; }
+
+	OGDF_NEW_DELETE
+};
+
+
+/**
+ * \brief Base class for hashing with chaining and table doubling.
+ *
+ * The actual hashing is provided by the parameterized class Hashing<K,I>
+ * which derives from HashingBase.
+ */
+class HashingBase {
+protected:
+	int m_tableSize;     //!< The current table size.
+	int m_hashMask;      //!< The current table size minus one.
+	int m_minTableSize;  //!< The minimal table size.
+	int m_tableSizeLow;  //!< The minimal number of elements at this table size.
+	int m_tableSizeHigh; //!< The maximal number of elements at this table size.
+	int m_count;         //!< The current number of elements.
+	HashElementBase **m_table; //!< The hash table (an array of lists).
+
+public:
+	//! Creates a hash table with minimum table size \a minTableSize.
+	HashingBase(int minTableSize);
+
+	//! Copy constructor.
+	HashingBase(const HashingBase &H);
+
+	// destruction
+	virtual ~HashingBase();
+
+	//! Resizes the hash table to \a newTableSize.
+	void resize(int newTableSize);
+
+	//! Inserts a new element \a pElement into the hash table.
+	void insert(HashElementBase *pElement);
+
+	//! Removes the element \a pElement from the hash table.
+	void del(HashElementBase *pElement);
+
+	//! Removes all elements from the hash table.
+	void clear();
+
+	//! Assignment operator.
+	HashingBase &operator=(const HashingBase &H);
+
+	//! Returns the number of elements in the hash table.
+	int size() const { return m_count; }
+
+	//! Returns if the hash table is empty
+	int empty() const { return (m_count==0); }
+
+	/**
+	 * \brief Returns the first element in the list for elements with hash value \a hashValue.
+	 *
+	 * This is the list m_table[hashValue & m_hashMask].
+	 */
+	HashElementBase *firstListElement(size_t hashValue) const {
+		return *(m_table + (hashValue & m_hashMask));
+	}
+
+	/**
+	 * \brief Returns the first element in the list of all elements in the hash table.
+	 *
+	 * This function is used by hash iterators for iterating over all elements
+	 * in the hash table.
+	 * @param pList is assigned the list containing the first element.
+	 * \return a pointer to the first element or 0 if hash table is empty.
+	 */
+	HashElementBase *firstElement(HashElementBase ***pList) const;
+
+	/**
+	 * \brief Returns the successor of \a pElement in the list of all elements in the hash table.
+	 *
+	 * This function is used by hash iterators for iterating over all elements
+	 * in the hash table.
+	 * @param pList is assigned the list containing the first element.
+	 * @param pElement points to an element in the has table.
+	 * \return a pointer to the first element or 0 if hash table is empty.
+	 */
+	HashElementBase *nextElement(HashElementBase ***pList,
+		HashElementBase *pElement) const;
+
+protected:
+	//! Deletes all elements in hash table (but does not free m_table!).
+	void destroyAll();
+
+	/**
+	 * \brief Called to delete hash element.
+	 *
+	 * This must be done in Hashing<K,I> since only this class knows the actual
+	 * element type; alternatively, HashElementBase could have a virtual destructor.
+	 */
+	virtual void destroy(HashElementBase *pElement) = 0;
+
+	//! Called to create a copy of the element \a pElement.
+	virtual HashElementBase *copy(HashElementBase *pElement) const = 0;
+
+private:
+	//! Initializes the table for given table size.
+	void init(int tableSize);
+
+	//! Copies all elements from \a H to this hash table.
+	void copyAll(const HashingBase &H);
+};
+
+
+template<class K, class I, class H> class Hashing;
+template<class K, class I, class H> class HashArray;
+
+
+/**
+ * \brief Representation of elements in a hash table.
+ *
+ * This class adds key and information members to HashElementBase. The two
+ * template parameters are \a K for the type of keys and \a I for the type
+ * of information.
+ */
+template<class K, class I>
+class HashElement : public HashElementBase
+{
+	K m_key;  //!< The key value.
+	I m_info; //!< The information value.
+
+public:
+	//! Creates a hash element with given hash value, key, and information.
+	HashElement(size_t hashValue, const K &key, const I &info) :
+		HashElementBase(hashValue), m_key(key), m_info(info) { }
+
+	//! Returns the successor element in the list.
+	HashElement<K,I> *next() const {
+		return (HashElement<K,I> *)HashElementBase::next();
+	}
+
+	//! Returns the key value.
+	const K &key() const { return m_key; }
+
+	//! Returns the information value.
+	const I &info() const { return m_info; }
+
+	//! Returns a refeence to the information value.
+	I &info() { return m_info; }
+
+	OGDF_NEW_DELETE
+};
+
+
+template<class K, class I, class H> class HashConstIterator;
+
+//--------------------------------------------------------------------
+// Hash function classes have to define
+// int hash(const E &key)
+//
+// "const E &" can be replaced by "E"
+//--------------------------------------------------------------------
+
+/**
+ * \brief Default hash functions.
+ *
+ * This class implements a default hash function for various
+ * basic data types.
+ *
+ * \see Hashing, HashArray, HashArray2D
+ */
+template<class K> class DefHashFunc {
+	//! Returns the hash value of \a key.
+	public:	size_t hash(const K &key) const { return size_t(key); }
+};
+
+//! Specialized default hash function for pointer types.
+template<> class DefHashFunc<void *> {
+	public:	size_t hash(const void * &key) const { return size_t(key && 0xffffffff); }
+};
+
+//! Specialized default hash function for double.
+template<> class DefHashFunc<double> {
+	public:	size_t hash(const double &key) const {
+		int dummy;
+		return size_t(SIZE_MAX*frexp(key,&dummy));
+	}
+};
+
+
+/**
+ * \brief %Hashing with chaining and table doubling.
+ *
+ * The class Hashing<K,I> implements a hashing table which realizes a
+ * mapping from a key type \a K to an information type \a I.
+ *
+ * The class requires three template parameters:
+ *   - \a K is the type of keys.
+ *   - \a I is the type of information.
+ *   - \a H is the hash function type.
+ * The hash function type argument is optional; its default uses the class
+ * DefHashFunc.
+ */
+template<class K, class I, class H = DefHashFunc<K> >
+class Hashing : private HashingBase
+{
+	friend class HashConstIterator<K,I,H>;
+	H m_hashFunc; //!< The hash function.
+
+public:
+	//! The type of const-iterators for hash tables.
+	typedef HashConstIterator<K,I,H> const_iterator;
+
+	//! Creates a hash table for given initial table size \a minTableSize.
+	explicit Hashing(int minTableSize = 256, const H &hashFunc = H())
+		: HashingBase(minTableSize), m_hashFunc(hashFunc) { }
+
+	//! Copy constructor.
+	Hashing(const Hashing<K,I> &h) : HashingBase(h) { }
+
+	// destruction
+	~Hashing() { HashingBase::destroyAll(); }
+
+	//! Returns the number of elements in the hash table.
+	int size() const { return HashingBase::size(); }
+
+	//! Returns true iff the table is empty, i.e., contains no elements.
+	bool empty() const { return (HashingBase::size() == 0); }
+
+	//! Returns true iff the hash table contains an element with key \a key.
+	bool member(const K &key) const { return (lookup(key) != 0); }
+
+	//! Returns an hash iterator to the first element in the list of all elements.
+	HashConstIterator<K,I,H> begin() const;
+
+	//! Returns the hash element with key \a key in the hash table; returns 0 if no such element.
+	HashElement<K,I> *lookup(const K &key) const {
+		HashElement<K,I> *pElement =
+			(HashElement<K,I> *)firstListElement(m_hashFunc.hash(key));
+		for (; pElement; pElement = pElement->next())
+			if (pElement->key() == key) return pElement;
+
+		return 0;
+	}
+
+	//! Assignment operator.
+	Hashing<K,I> &operator=(const Hashing<K,I> &hashing) {
+		HashingBase::operator =(hashing);
+		m_hashFunc = hashing.m_hashFunc;
+		return *this;
+	}
+
+	/**
+	 * \brief Inserts a new element with key \a key and information \a info into the hash table.
+	 *
+	 * The new element will only be inserted if no element with key \a key is
+	 * already contained; if such an element already exists the information of
+	 * this element will be changed to \a info.
+	 */
+	HashElement<K,I> *insert(const K &key, const I &info) {
+		HashElement<K,I> *pElement = lookup(key);
+
+		if (pElement)
+			pElement->info() = info;
+		else
+			HashingBase::insert(pElement =
+				OGDF_NEW HashElement<K,I>(m_hashFunc.hash(key),key,info));
+
+		return pElement;
+	}
+
+	/**
+	 * \brief Inserts a new element with key \a key and information \a info into the hash table.
+	 *
+	 * The new element will only be inserted if no element with key \a key is
+	 * already contained; if such an element already exists the information of
+	 * this element remains unchanged.
+	 */
+	HashElement<K,I> *insertByNeed(const K &key, const I &info) {
+		HashElement<K,I> *pElement = lookup(key);
+
+		if (!pElement)
+			HashingBase::insert(pElement = OGDF_NEW HashElement<K,I>(m_hashFunc.hash(key),key,info));
+
+		return pElement;
+	}
+
+	/**
+	 * \brief Inserts a new element with key \a key and information \a info into the hash table.
+	 *
+	 * This is a faster version of insert() that assumes that no element with key
+	 * \a key is already contained in the hash table.
+	 */
+	HashElement<K,I> *fastInsert(const K &key, const I &info) {
+		HashElement<K,I> *pElement = OGDF_NEW HashElement<K,I>(m_hashFunc.hash(key),key,info);
+		HashingBase::insert(pElement);
+		return pElement;
+	}
+
+	//! Removes the element with key \a key from the hash table (does nothing if no such element).
+	void del(const K &key) {
+		HashElement<K,I> *pElement = lookup(key);
+		if (pElement) {
+			HashingBase::del(pElement);
+			delete pElement;
+		}
+	}
+
+	//! Removes all elements from the hash table.
+	void clear() { HashingBase::clear(); }
+
+protected:
+	/**
+	 * \brief Returns the first element in the list of all elements in the hash table.
+	 *
+	 * This function is used by hash iterators for iterating over all elements
+	 * in the hash table.
+	 * @param pList is assigned the list containing the first element.
+	 * \return a pointer to the first element or 0 if hash table is empty.
+	 */
+	HashElement<K,I> *firstElement(HashElement<K,I> ***pList) const {
+		return (HashElement<K,I> *)(HashingBase::firstElement((HashElementBase ***)pList));
+	}
+
+	/**
+	 * \brief Returns the successor of \a pElement in the list of all elements in the hash table.
+	 *
+	 * This function is used by hash iterators for iterating over all elements
+	 * in the hash table.
+	 * @param pList is assigned the list containing the first element.
+	 * @param pElement points to an element in the has table.
+	 * \return a pointer to the first element or 0 if hash table is empty.
+	 */
+	HashElement<K,I> *nextElement(HashElement<K,I> ***pList,
+		HashElement<K,I> *pElement) const
+	{
+		return (HashElement<K,I> *)(HashingBase::nextElement(
+			(HashElementBase ***)pList,pElement));
+	}
+
+private:
+	//! Deletes hash element \a pElement.
+	virtual void destroy(HashElementBase *pElement) {
+		delete (HashElement<K,I> *)(pElement);
+	}
+
+	//! Returns a copy of hash element \a pElement.
+	virtual HashElementBase *copy(HashElementBase *pElement) const {
+		HashElement<K,I> *pX = (HashElement<K,I> *)(pElement);
+		return OGDF_NEW HashElement<K,I>(pX->hashValue(),pX->key(),pX->info());
+	}
+};
+
+
+/**
+ * \brief Iterators for hash tables.
+ *
+ * This class implements an iterator for iterating over all elements in
+ * a hash table. Hash iterators are provided by Hashing<K,I>::begin().
+ *
+ * <H3>Example</H3>
+ * The following code snippet demonstrates how to iterate over all elements
+ * of a hash table. First, the example fills a hash table with a tiny
+ * German–English dictionary, and then it iterates over the elements
+ * and prints the entries.
+ * \code
+ *   Hashing<String,String> H;
+ *
+ *   H.fastInsert("Hund","dog");
+ *   H.fastInsert("Katze","cat");
+ *   H.fastInsert("Maus","mouse");
+ *
+ *   HashConstIterator<String,String> it;
+ *   for(it = H.begin(); it.valid(); ++it)
+ *     cout << it.key() << " -> " << it.info() << endl;
+ * \endcode
+ */
+template<class K, class I, class H = DefHashFunc<K> >
+class HashConstIterator {
+	HashElement<K,I> *m_pElement; //!< The hash element to which the iterator points.
+	HashElement<K,I> **m_pList; //!< The list containg the hash element.
+	const Hashing<K,I,H> *m_pHashing; //!< The associated hash table.
+
+public:
+	//! Creates a hash iterator pointing to no element.
+	HashConstIterator() : m_pElement(0), m_pList(0), m_pHashing(0) { }
+
+	//! Creates a hash iterator pointing to element \a pElement in list \a pList of hash table \a pHashing.
+	HashConstIterator(HashElement<K,I> *pElement, HashElement<K,I> **pList,
+		const Hashing<K,I,H> *pHashing) : m_pElement(pElement), m_pList(pList),
+		m_pHashing(pHashing) { }
+
+	//! Copy constructor.
+	HashConstIterator(const HashConstIterator<K,I,H> &it) : m_pElement(it.m_pElement),
+		m_pList(it.m_pList), m_pHashing(it.m_pHashing) { }
+
+	//! Assignment operator.
+	HashConstIterator &operator=(const HashConstIterator<K,I,H> &it) {
+		m_pElement = it.m_pElement;
+		m_pList = it.m_pList;
+		m_pHashing = it.m_pHashing;
+		return *this;
+	}
+
+	//! Returns true if the hash iterator points to an element.
+	bool valid() const { return (m_pElement != 0); }
+
+	//! Returns the key of the hash element pointed to.
+	const K &key() const { return m_pElement->key(); }
+
+	//! Returns the information of the hash element pointed to.
+	const I &info() const { return m_pElement->info(); }
+
+	//! Equality operator.
+	friend bool operator==(const HashConstIterator<K,I,H> &it1,
+		const HashConstIterator<K,I,H> &it2) { return (it1.m_pElement == it2.m_pElement); }
+
+	//! Inequality operator.
+	friend bool operator!=(const HashConstIterator<K,I,H> &it1,
+		const HashConstIterator<K,I,H> &it2) { return (it1.m_pElement != it2.m_pElement); }
+
+	//! Moves this hash iterator to the next element (iterator gets invalid if no more elements).
+	HashConstIterator<K,I,H> &operator++() {
+		m_pElement = m_pHashing->nextElement(&m_pList,m_pElement);
+		return *this;
+	}
+};
+
+
+template<class K, class I, class H>
+inline HashConstIterator<K,I,H> Hashing<K,I,H>::begin() const
+{
+	HashElement<K,I> *pElement, **pList;
+	pElement = firstElement(&pList);
+	return HashConstIterator<K,I,H>(pElement,pList,this);
+}
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/List.h b/ogdf/basic/List.h
new file mode 100644
index 0000000..d31050e
--- /dev/null
+++ b/ogdf/basic/List.h
@@ -0,0 +1,1634 @@
+/*
+ * $Revision: 2632 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-17 21:04:24 +0200 (Di, 17. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of doubly linked lists and iterators
+ *
+ * \author Carsten Gutwenger and Sebastian Leipert
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_LIST_H
+#define OGDF_LIST_H
+
+
+#include "../internal/basic/list_templates.h"
+
+
+namespace ogdf {
+
+
+template<class E> class List;
+template<class E> class ListPure;
+template<class E> class ListIterator;
+template<class E> class ListConstIterator;
+
+
+//! The parameterized class \a ListElement<E> represents the structure for elements of doubly linked lists.
+template<class E>
+class ListElement {
+	friend class ListPure<E>;
+	friend class List<E>;
+	friend class ListIterator<E>;
+	friend class ListConstIterator<E>;
+
+	ListElement<E> *m_next; //!< Pointer to successor element.
+	ListElement<E> *m_prev; //!< Pointer to predecessor element.
+	E m_x; //!< Stores the content.
+
+	//! Constructs a ListElement.
+	ListElement() : m_next(0), m_prev(0) { }
+	//! Constructs a ListElement.
+	ListElement(const E &x) : m_next(0), m_prev(0), m_x(x) { }
+	//! Constructs a ListElement.
+	ListElement(const E &x, ListElement<E> *next, ListElement<E> *prev) :
+		m_next(next), m_prev(prev), m_x(x) { }
+
+	OGDF_NEW_DELETE
+}; // class ListElement
+
+
+
+//! The parameterized class \a ListIterator<E> encapsulates a pointer to a dlist element.
+/**
+ * It is used in order to iterate over doubly linked lists,
+ * and to specify a position in a doubly linked list. It is possible that
+ * an iterator encapsulates a null pointer.
+ */
+
+template<class E> class ListIterator {
+	ListElement<E> *m_pX; // pointer to associated list element
+
+	friend class ListConstIterator<E>;
+	friend class ListPure<E>;
+
+	//! Conversion to pointer to list element.
+	operator ListElement<E> *() { return m_pX; }
+	//! Conversion to pointer to list element.
+	operator const ListElement<E> *() const { return m_pX; }
+
+public:
+	//! Constructs an iterator pointing to no element.
+	ListIterator() : m_pX(0) { }
+	//! Constructs an iterator pointing to \a pX.
+	ListIterator(ListElement<E> *pX) : m_pX(pX) { }
+	//! Constructs an iterator that is a copy of \a it.
+	ListIterator(const ListIterator<E> &it) : m_pX(it.m_pX) { }
+
+	//! Returns true iff the iterator points to an element.
+	bool valid() const { return m_pX != 0; }
+
+	//! Equality operator.
+	bool operator==(const ListIterator<E> &it) const {
+		return m_pX == it.m_pX;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const ListIterator<E> &it) const {
+		return m_pX != it.m_pX;
+	}
+
+	//! Returns successor iterator.
+	ListIterator<E> succ() const { return m_pX->m_next; }
+
+	//! Returns predecessor iterator.
+	ListIterator<E> pred() const { return m_pX->m_prev; }
+
+	//! Returns a reference to the element content.
+	E &operator*() const { return m_pX->m_x; }
+
+	//! Assignment operator.
+	ListIterator<E> &operator=(const ListIterator<E> &it) {
+		m_pX = it.m_pX;
+		return *this;
+	}
+
+	//! Increment operator (prefix).
+	ListIterator<E> &operator++() {
+		m_pX = m_pX->m_next;
+		return *this;
+	}
+
+	//! Increment operator (postfix).
+	ListIterator<E> operator++(int) {
+		ListIterator<E> it = *this;
+		m_pX = m_pX->m_next;
+		return it;
+	}
+
+	//! Decrement operator (prefix).
+	ListIterator<E> &operator--() {
+		m_pX = m_pX->m_prev;
+		return *this;
+	}
+
+	//! Decrement operator (postfix).
+	ListIterator<E> operator--(int) {
+		ListIterator<E> it = *this;
+		m_pX = m_pX->m_prev;
+		return it;
+	}
+
+	OGDF_NEW_DELETE
+}; // class ListIterator
+
+
+
+//---------------------------------------------------------
+// ListConstIterator<E>
+// const iterator for doubly linked lists
+//---------------------------------------------------------
+//! The parameterized class \a ListIterator<E> encapsulates a constant pointer to a list element.
+/**
+ * It is used in order to iterate over doubly linked lists,
+ * and to specify a position in a doubly linked list. It is possible that
+ * an iterator encapsulates a null pointer. In contrast to ListIterator,
+ * it is not possible to change the list element pointed to.
+ */
+
+template<class E> class ListConstIterator {
+	const ListElement<E> *m_pX; // pointer to list element
+
+	friend class ListPure<E>;
+
+	//! Conversion to pointer to list element.
+	operator const ListElement<E> *() { return m_pX; }
+
+public:
+	//! Constructs an iterator pointing to no element.
+	ListConstIterator() : m_pX(0) { }
+
+	//! Constructs an iterator pointing to \a pX.
+	ListConstIterator(const ListElement<E> *pX) : m_pX(pX) { }
+
+	//! Constructs an iterator that is a copy of \a it.
+	ListConstIterator(const ListIterator<E> &it) : m_pX((const ListElement<E> *)it) { }
+	//! Constructs an iterator that is a copy of \a it.
+	ListConstIterator(const ListConstIterator &it) : m_pX(it.m_pX) { }
+
+	//! Returns true iff the iterator points to an element.
+	bool valid() const { return m_pX != 0; }
+
+	//! Equality operator.
+	bool operator==(const ListConstIterator<E> &it) const {
+		return m_pX == it.m_pX;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const ListConstIterator<E> &it) const {
+		return m_pX != it.m_pX;
+	}
+
+	//! Returns successor iterator.
+	ListConstIterator<E> succ() const { return m_pX->m_next; }
+
+	//! Returns predecessor iterator.
+	ListConstIterator<E> pred() const { return m_pX->m_prev; }
+
+	//! Returns a reference to the element content.
+	const E &operator*() const { return m_pX->m_x; }
+
+	//! Assignment operator.
+	ListConstIterator<E> &operator=(const ListConstIterator<E> &it) {
+		m_pX = it.m_pX;
+		return *this;
+	}
+
+	//! Increment operator (prefix).
+	ListConstIterator<E> &operator++() {
+		m_pX = m_pX->m_next;
+		return *this;
+	}
+
+	//! Increment operator (postfix).
+	ListConstIterator<E> operator++(int) {
+		ListConstIterator<E> it = *this;
+		m_pX = m_pX->m_next;
+		return it;
+	}
+
+	//! Decrement operator (prefix).
+	ListConstIterator<E> &operator--() {
+		m_pX = m_pX->m_prev;
+		return *this;
+	}
+
+	//! Decrement operator (postfix).
+	ListConstIterator<E> operator--(int) {
+		ListConstIterator<E> it = *this;
+		m_pX = m_pX->m_prev;
+		return it;
+	}
+
+	OGDF_NEW_DELETE
+}; // class ListConstIterator
+
+
+
+//! The parameterized class \a ListPure<E> represents doubly linked lists with content type \a E.
+/**
+ * Elements of the list are instances of type ListElement<E>.
+ * Use ListConstIterator<E> or ListIterator<E> in order to iterate over the list.
+ *
+ * In contrast to List<E>, instances of \a ListPure<E> do not store the length of the list.
+ *
+ * @tparam E is the data type stored in list elements.
+ */
+
+template<class E> class ListPure {
+protected:
+
+	ListElement<E> *m_head; //!< Pointer to first element.
+	ListElement<E> *m_tail; //!< Pointer to last element.
+
+public:
+	//! Constructs an empty doubly linked list.
+	ListPure() : m_head(0), m_tail(0) { }
+
+	//! Constructs a doubly linked list that is a copy of \a L.
+	ListPure(const ListPure<E> &L) : m_head(0), m_tail(0) {
+		copy(L);
+	}
+
+	// destruction
+	~ListPure() { clear(); }
+
+	typedef E value_type;
+	typedef ListElement<E> element_type;
+	typedef ListConstIterator<E> const_iterator;
+	typedef ListIterator<E> iterator;
+
+	//! Returns true iff the list is empty.
+	bool empty() const { return m_head == 0; }
+
+	//! Returns the length of the list
+	/**
+	 * Notice that this method requires to run through the whole list and takes linear running time!
+	 */
+	int size() const {
+		int count = 0;
+		for (ListElement<E> *pX = m_head; pX; pX = pX->m_next)
+			++count;
+		return count;
+	}
+
+	//! Returns an iterator to the first element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	const ListConstIterator<E> begin() const { return m_head; }
+	//! Returns an iterator to the first element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	ListIterator<E> begin() { return m_head; }
+
+	//! Returns an iterator to one-past-last element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	ListConstIterator<E> end() const { return ListConstIterator<E>(); }
+	//! Returns an iterator to one-past-last element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	ListIterator<E> end() { return ListIterator<E>(); }
+
+	//! Returns an iterator to the last element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	const ListConstIterator<E> rbegin() const { return m_tail; }
+	//! Returns an iterator to the last element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	ListIterator<E> rbegin() { return m_tail; }
+
+	//! Returns an iterator to one-before-first element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	ListConstIterator<E> rend() const { return ListConstIterator<E>(); }
+	//! Returns an iterator to one-before-first element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	ListIterator<E> rend() { return ListIterator<E>(); }
+
+	//! Returns a reference to the first element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	const E &front() const {
+		OGDF_ASSERT(m_head != 0)
+		return m_head->m_x;
+	}
+
+	//! Returns a reference to the first element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E &front() {
+		OGDF_ASSERT(m_head != 0)
+		return m_head->m_x;
+	}
+
+	//! Returns a reference to the last element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	const E &back() const {
+		OGDF_ASSERT(m_tail != 0)
+		return m_tail->m_x;
+	}
+
+	//! Returns a reference to the last element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E &back() {
+		OGDF_ASSERT(m_tail != 0)
+		return m_tail->m_x;
+	}
+
+	//! Returns an iterator to the cyclic successor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	ListConstIterator<E> cyclicSucc(ListConstIterator<E> it) const {
+		const ListElement<E> *pX = it;
+		return (pX->m_next) ? pX->m_next : m_head;
+	}
+
+	//! Returns an iterator to the cyclic successor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	ListIterator<E> cyclicSucc(ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		ListElement<E> *pX = it;
+		return (pX->m_next) ? pX->m_next : m_head;
+	}
+
+	//! Returns an iterator to the cyclic predecessor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	ListConstIterator<E> cyclicPred(ListConstIterator<E> it) const {
+		OGDF_ASSERT(it.valid())
+		const ListElement<E> *pX = it;
+		return (pX->m_prev) ? pX->m_prev : m_tail;
+	}
+
+	//! Returns an iterator to the cyclic predecessor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	ListIterator<E> cyclicPred(ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		ListElement<E> *pX = it;
+		return (pX->m_prev) ? pX->m_prev : m_tail;
+	}
+
+	//! Returns an iterator pointing to the element at position \a pos.
+	/**
+	 * The running time of this method is linear in \a pos.
+	 */
+	ListConstIterator<E> get(int pos) const {
+		ListElement<E> *pX;
+		for(pX = m_head; pX != 0; pX = pX->m_next)
+			if (pos-- == 0) break;
+		return pX;
+	}
+
+	//! Returns an iterator pointing to the element at position \a pos.
+	/**
+	 * The running time of this method is linear in \a pos.
+	 */
+	ListIterator<E> get(int pos) {
+		ListElement<E> *pX;
+		for(pX = m_head; pX != 0; pX = pX->m_next)
+			if (pos-- == 0) break;
+		return pX;
+	}
+
+	//! Returns the position (starting with 0) of iterator \a it in the list.
+	/**
+	 * \pre \a it is a valid iterator pointing to an element in this list!
+	 */
+	int pos(ListConstIterator<E> it) const {
+		OGDF_ASSERT(it.valid())
+		int p = 0;
+		for(ListElement<E> *pX = m_head; pX != 0; pX = pX->m_next, ++p)
+			if (pX == it) break;
+		return p;
+	}
+
+	//! Returns an iterator to a random element in the list (or an invalid iterator if the list is empty)
+	/**
+	 * This method takes linear time.
+	 */
+	ListConstIterator<E> chooseIterator() const {
+		return empty() ? ListConstIterator<E>() : get(randomNumber(0,size()-1));
+	}
+
+	//! Returns an iterator to a random element in the list (or an invalid iterator if the list is empty)
+	/**
+	 * This method takes linear time.
+	 */
+	ListIterator<E> chooseIterator() {
+		return empty() ? ListIterator<E>() : get(randomNumber(0,size()-1));
+	}
+
+	//! Returns a random element from the list.
+	/**
+	 * \pre The list is not empty!
+	 *
+	 * This method takes linear time.
+	 */
+	const E chooseElement() const {
+		OGDF_ASSERT(m_head != 0)
+		return *chooseIterator();
+	}
+
+	//! Returns a random element from the list.
+	/**
+	 * \pre The list is not empty!
+	 *
+	 * This method takes linear time.
+	 */
+	E chooseElement() {
+		return *chooseIterator();
+	}
+
+	//! Assignment operator.
+	ListPure<E> &operator=(const ListPure<E> &L) {
+		clear(); copy(L);
+		return *this;
+	}
+
+	//! Equality operator.
+	bool operator==(const ListPure<E> &L) const {
+		ListElement<E> *pX = m_head, *pY = L.m_head;
+		while(pX != 0 && pY != 0) {
+			if(pX->m_x != pY->m_x)
+				return false;
+			pX = pX->m_next;
+			pY = pY->m_next;
+		}
+		return (pX == 0 && pY == 0);
+	}
+
+	//! Inequality operator.
+	bool operator!=(const ListPure<E> &L) const {
+		return !operator==(L);
+	}
+
+	//! Adds element \a x at the begin of the list.
+	ListIterator<E> pushFront(const E &x) {
+		ListElement<E> *pX = OGDF_NEW ListElement<E>(x,m_head,0);
+		if (m_head)
+			m_head = m_head->m_prev = pX;
+		else
+			m_head = m_tail = pX;
+		return m_head;
+	}
+
+	//! Adds element \a x at the end of the list.
+	ListIterator<E> pushBack(const E &x) {
+		ListElement<E> *pX = OGDF_NEW ListElement<E>(x,0,m_tail);
+		if (m_head)
+			m_tail = m_tail->m_next = pX;
+		else
+			m_tail = m_head = pX;
+		return m_tail;
+	}
+
+	//! Inserts element \a x before or after \a it.
+	/**
+	 * @param x is the element to be inserted.
+	 * @param it is a list iterator in this list.
+	 * @param dir determines if \a x is inserted before or after \a it.
+	 *   Possible values are \c ogdf::before and \c ogdf::after.
+	 * \pre \a it points to an element in this list.
+	 */
+	ListIterator<E> insert(const E &x, ListIterator<E> it, Direction dir = after) {
+		OGDF_ASSERT(it.valid())
+		OGDF_ASSERT(dir == after || dir == before)
+		ListElement<E> *pY = it, *pX;
+		if (dir == after) {
+			ListElement<E> *pYnext = pY->m_next;
+			pY->m_next = pX = OGDF_NEW ListElement<E>(x,pYnext,pY);
+			if (pYnext) pYnext->m_prev = pX;
+			else m_tail = pX;
+		} else {
+			ListElement<E> *pYprev = pY->m_prev;
+			pY->m_prev = pX = OGDF_NEW ListElement<E>(x,pY,pYprev);
+			if (pYprev) pYprev->m_next = pX;
+			else m_head = pX;
+		}
+		return pX;
+	}
+
+	//! Inserts element \a x before \a it.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	ListIterator<E> insertBefore(const E &x, ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		ListElement<E> *pY = it, *pX;
+		ListElement<E> *pYprev = pY->m_prev;
+		pY->m_prev = pX = OGDF_NEW ListElement<E>(x,pY,pYprev);
+		if (pYprev) pYprev->m_next = pX;
+		else m_head = pX;
+		return pX;
+	}
+
+	//! Inserts element \a x after \a it.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	ListIterator<E> insertAfter(const E &x, ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		ListElement<E> *pY = it, *pX;
+		ListElement<E> *pYnext = pY->m_next;
+		pY->m_next = pX = OGDF_NEW ListElement<E>(x,pYnext,pY);
+		if (pYnext) pYnext->m_prev = pX;
+		else m_tail = pX;
+		return pX;
+	}
+
+	//! Removes the first element from the list.
+	/**
+	 * \pre The list is not empty!
+	 */
+	void popFront() {
+		OGDF_ASSERT(m_head != 0)
+		ListElement<E> *pX = m_head;
+		m_head = m_head->m_next;
+		delete pX;
+		if (m_head) m_head->m_prev = 0;
+		else m_tail = 0;
+	}
+
+	//! Removes the first element from the list and returns it.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E popFrontRet() {
+		E el = front();
+		popFront();
+		return el;
+	}
+
+	//! Removes the last element from the list.
+	/**
+	 * \pre The list is not empty!
+	 */
+	void popBack() {
+		OGDF_ASSERT(m_tail != 0)
+		ListElement<E> *pX = m_tail;
+		m_tail = m_tail->m_prev;
+		delete pX;
+		if (m_tail) m_tail->m_next = 0;
+		else m_head = 0;
+	}
+
+	//! Removes the last element from the list and returns it.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E popBackRet() {
+		E el = back();
+		popBack();
+		return el;
+	}
+
+	//! Removes \a it from the list.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void del(ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		delete pX;
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+	}
+
+	//! Exchanges the positions of \a it1 and \a it2 in the list.
+	/**
+	 * \pre \a it1 and \a it2 point to elements in this list.
+	 */
+	void exchange(ListIterator<E> it1, ListIterator<E> it2) {
+		OGDF_ASSERT(it1.valid() && it2.valid() && it1 != it2)
+		ListElement<E> *pX = it1, *pY = it2;
+
+		std::swap(pX->m_next,pY->m_next);
+		std::swap(pX->m_prev,pY->m_prev);
+
+		if(pX->m_next == pX) {
+			pX->m_next = pY; pY->m_prev = pX;
+		}
+		if(pX->m_prev == pX) {
+			pX->m_prev = pY; pY->m_next = pX;
+		}
+
+		if(pX->m_prev) pX->m_prev->m_next = pX;
+		else m_head = pX;
+
+		if(pY->m_prev) pY->m_prev->m_next = pY;
+		else m_head = pY;
+
+		if(pX->m_next) pX->m_next->m_prev = pX;
+		else m_tail = pX;
+
+		if(pY->m_next) pY->m_next->m_prev = pY;
+		else m_tail = pY;
+	}
+
+	//! Moves \a it to the begin of the list.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void moveToFront(ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		// remove it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		//already at front
+		if (!pPrev) return;
+
+		//update old position
+		if (pPrev) pPrev->m_next = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// insert it at front
+		pX->m_prev = 0;
+		pX->m_next = m_head;
+		m_head = m_head->m_prev = pX;
+	}//move
+
+	//! Moves \a it to the end of the list.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void moveToBack(ListIterator<E> it) {
+		OGDF_ASSERT(it.valid())
+		// remove it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		//already at back
+		if (!pNext) return;
+
+		//update old position
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		// insert it at back
+		pX->m_prev = m_tail;
+		pX->m_next = 0;
+		m_tail = m_tail->m_next = pX;
+	}//move
+
+	//! Moves \a it after \a itBefore.
+	/**
+	 * \pre \a it and \a itBefore point to elements in this list.
+	 */
+	void moveToSucc(ListIterator<E> it, ListIterator<E> itBefore) {
+		OGDF_ASSERT(it.valid() && itBefore.valid())
+		// move it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		//the same of already in place
+		ListElement<E> *pY = itBefore;
+		if(pX == pY || pPrev == pY) return;
+
+		// update old position
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// move it after itBefore
+		ListElement<E> *pYnext = pX->m_next = pY->m_next;
+		(pX->m_prev = pY)->m_next = pX;
+		if (pYnext) pYnext->m_prev = pX;
+		else m_tail = pX;
+	}//move
+
+	//! Moves \a it before \a itAfter.
+	/**
+	 * \pre \a it and \a itAfter point to elements in this list.
+	 */
+	void moveToPrec(ListIterator<E> it, ListIterator<E> itAfter) {
+		OGDF_ASSERT(it.valid() && itAfter.valid())
+		// move it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		//the same of already in place
+		ListElement<E> *pY = itAfter;
+		if(pX == pY || pNext == pY) return;
+
+		// update old position
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// move it before itAfter
+		ListElement<E> *pYprev = pX->m_prev = pY->m_prev;
+		(pX->m_next = pY)->m_prev = pX;
+		if (pYprev) pYprev->m_next = pX;
+		else m_head = pX;
+	}//move
+
+	//! Moves \a it to the begin of \a L2.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void moveToFront(ListIterator<E> it, ListPure<E> &L2) {
+		OGDF_ASSERT(it.valid())
+		OGDF_ASSERT(this != &L2)
+		// remove it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// insert it at front of L2
+		pX->m_prev = 0;
+		if ((pX->m_next = L2.m_head) != 0)
+			L2.m_head = L2.m_head->m_prev = pX;
+		else
+			L2.m_head = L2.m_tail = pX;
+	}
+
+	//! Moves \a it to the end of \a L2.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void moveToBack(ListIterator<E> it, ListPure<E> &L2) {
+		OGDF_ASSERT(it.valid())
+		OGDF_ASSERT(this != &L2)
+		// remove it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// insert it at back of L2
+		pX->m_next = 0;
+		if ((pX->m_prev = L2.m_tail) != 0)
+			L2.m_tail = L2.m_tail->m_next = pX;
+		else
+			L2.m_head = L2.m_tail = pX;
+	}
+
+	//! Moves \a it to list \a L2 and inserts it after \a itBefore.
+	/**
+	 * \pre \a it points to an element in this list, and \a itBefore
+	 *      points to an element in \a L2.
+	 */
+	void moveToSucc(ListIterator<E> it, ListPure<E> &L2, ListIterator<E> itBefore) {
+		OGDF_ASSERT(it.valid() && itBefore.valid())
+		OGDF_ASSERT(this != &L2)
+		// remove it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// insert it in list L2 after itBefore
+		ListElement<E> *pY = itBefore;
+		ListElement<E> *pYnext = pX->m_next = pY->m_next;
+		(pX->m_prev = pY)->m_next = pX;
+		if (pYnext) pYnext->m_prev = pX;
+		else L2.m_tail = pX;
+	}
+
+	//! Moves \a it to list \a L2 and inserts it before \a itAfter.
+	/**
+	 * \pre \a it points to an element in this list, and \a itAfter
+	 *      points to an element in \a L2.
+	 */
+	void moveToPrec(ListIterator<E> it, ListPure<E> &L2, ListIterator<E> itAfter) {
+		OGDF_ASSERT(it.valid() && itAfter.valid())
+		OGDF_ASSERT(this != &L2)
+		// remove it
+		ListElement<E> *pX = it, *pPrev = pX->m_prev, *pNext = pX->m_next;
+		if (pPrev) pPrev->m_next = pNext;
+		else m_head = pNext;
+		if (pNext) pNext->m_prev = pPrev;
+		else m_tail = pPrev;
+		// insert it in list L2 after itBefore
+		ListElement<E> *pY = itAfter;
+		ListElement<E> *pYprev = pX->m_prev = pY->m_prev;
+		(pX->m_next = pY)->m_prev = pX;
+		if (pYprev) pYprev->m_next = pX;
+		else L2.m_head = pX;
+	}
+
+	//! Appends \a L2 to this list and makes \a L2 empty.
+	void conc(ListPure<E> &L2) {
+		OGDF_ASSERT(this != &L2)
+		if (m_head)
+			m_tail->m_next = L2.m_head;
+		else
+			m_head = L2.m_head;
+		if (L2.m_head) {
+			L2.m_head->m_prev = m_tail;
+			m_tail = L2.m_tail;
+		}
+		L2.m_head = L2.m_tail = 0;
+	}
+
+	//! Prepends \a L2 to this list and makes \a L2 empty.
+	void concFront(ListPure<E> &L2) {
+		OGDF_ASSERT(this != &L2)
+		if (m_head)
+			m_head->m_prev = L2.m_tail;
+		else
+			m_tail = L2.m_tail;
+		if (L2.m_head) {
+			L2.m_tail->m_next = m_head;
+			m_head = L2.m_head;
+		}
+		L2.m_head = L2.m_tail = 0;
+	}
+
+	//! Exchanges too complete lists in O(1).
+	/**
+	 * The list's content is moved to L2 and vice versa.
+	 */
+	void exchange(ListPure<E>& L2) {
+		ListElement<E>* t;
+		t = this->m_head;
+		this->m_head = L2.m_head;
+		L2.m_head = t;
+		t = this->m_tail;
+		this->m_tail = L2.m_tail;
+		L2.m_tail = t;
+	}
+
+	//! Splits the list at element \a it into lists \a L1 and \a L2.
+	/**
+	 * If \a it is not a null pointer and \a L = x1,...,x{k-1}, \a it,x_{k+1},xn, then
+	 * \a L1 = x1,...,x{k-1} and \a L2 = \a it,x{k+1},...,xn if \a dir = \c before.
+	 * If \a it is a null pointer, then \a L1 is made empty and \a L2 = \a L. Finally
+	 * \a L is made empty if it is not identical to \a L1 or \a L2.
+	 *
+	 * \pre \a it points to an element in this list.
+	 */
+
+	void split(ListIterator<E> it,ListPure<E> &L1,ListPure<E> &L2,Direction dir = before) {
+		if (&L1 != this) L1.clear();
+		if (&L2 != this) L2.clear();
+
+		if (it.valid()){
+			L1.m_head = m_head;
+			L2.m_tail = m_tail;
+			if (dir == before){
+				L2.m_head = it;
+				L1.m_tail = L2.m_head->m_prev;
+			}
+			else {
+				L1.m_tail = it;
+				L2.m_head = L1.m_tail->m_next;
+			}
+			L2.m_head->m_prev = L1.m_tail->m_next = 0;
+
+		} else {
+			L1.m_head = L1.m_tail = 0;
+			L2.m_head = m_head;
+			L2.m_tail = m_tail;
+		}
+
+		if (this != &L1 && this != &L2) {
+			m_head = m_tail = 0;
+		}
+	}
+
+	//! Splits the list after \a it.
+	void splitAfter(ListIterator<E> it, ListPure<E> &L2) {
+		OGDF_ASSERT(it.valid())
+		OGDF_ASSERT(this != &L2)
+		L2.clear();
+		ListElement<E> *pX = it;
+		if (pX != m_tail) {
+			(L2.m_head = pX->m_next)->m_prev = 0;
+			pX->m_next = 0;
+			L2.m_tail = m_tail;
+			m_tail = pX;
+		}
+	}
+
+	//! Splits the list before \a it.
+	void splitBefore(ListIterator<E> it, ListPure<E> &L2) {
+		OGDF_ASSERT(it.valid())
+		OGDF_ASSERT(this != &L2)
+		L2.clear();
+		ListElement<E> *pX = it;
+		L2.m_head = pX; L2.m_tail = m_tail;
+		if ((m_tail = pX->m_prev) == 0)
+			m_head = 0;
+		else
+			m_tail->m_next = 0;
+		pX->m_prev = 0;
+	}
+
+	//! Reverses the order of the list elements.
+	void reverse() {
+		ListElement<E> *pX = m_head;
+		m_head = m_tail;
+		m_tail = pX;
+		while(pX) {
+			ListElement<E> *pY = pX->m_next;
+			pX->m_next = pX->m_prev;
+			pX = pX->m_prev = pY;
+		}
+	}
+
+	//! Removes all elements from the list.
+	void clear() {
+		if (m_head == 0) return;
+
+#if (_MSC_VER == 1100)
+// workaround for bug in Visual Studio 5.0
+
+		while (!empty())
+			popFront();
+
+#else
+
+		if (doDestruction((E*)0)) {
+			for(ListElement<E> *pX = m_head; pX != 0; pX = pX->m_next)
+				pX->m_x.~E();
+		}
+		OGDF_ALLOCATOR::deallocateList(sizeof(ListElement<E>),m_head,m_tail);
+
+#endif
+
+		m_head = m_tail = 0;
+	}
+
+	//! Sorts the list using Quicksort.
+	void quicksort() {
+		ogdf::quicksortTemplate(*this);
+	}
+
+	//! Sorts the list using Quicksort and comparer \a comp.
+	template<class COMPARER>
+	void quicksort(const COMPARER &comp) {
+		ogdf::quicksortTemplate(*this,comp);
+	}
+
+	//! Sorts the list using bucket sort.
+	/**
+	 * @param l is the lowest bucket that will occur.
+	 * @param h is the highest bucket that will occur.
+	 * @param f returns the bucket for each element.
+	 * \pre The bucket function \a f will only return bucket values between \a l
+	 * and \a h for this list.
+	 */
+	void bucketSort(int l, int h, BucketFunc<E> &f);
+
+	//! Randomly permutes the elements in the list.
+	void permute() {
+		permute(size());
+	}
+
+	//! Scans the list for the specified element and returns its position in the list, or -1 if not found.
+	int search (const E& e) const {
+		int x = 0;
+		for(ListConstIterator<E> i = begin(); i.valid(); ++i, ++x)
+			if(*i == e) return x;
+		return -1;
+	}
+
+	//! Scans the list for the specified element (using the user-defined comparer) and returns its position in the list, or -1 if not found.
+	template<class COMPARER>
+	int search (const E& e, const COMPARER &comp) const {
+		int x = 0;
+		for(ListConstIterator<E> i = begin(); i.valid(); ++i, ++x)
+			if(comp.equal(*i,e)) return x;
+		return -1;
+	}
+
+protected:
+	void copy(const ListPure<E> &L) {
+		for(ListElement<E> *pX = L.m_head; pX != 0; pX = pX->m_next)
+			pushBack(pX->m_x);
+	}
+
+	void permute(const int n);
+
+	OGDF_NEW_DELETE
+}; // class ListPure
+
+
+
+//! Iteration over all iterators \a it of a list \a L, where L is of Type \c List<\a type>.
+/**
+ * Automagically creates a \c ListConstIterator<\a type> named \a it, and runs through the List \a L.
+ *
+ * <h3>Example</h3>
+ *
+ * The following code runs through the list \a L, and prints each item
+ *   \code
+ *   List<double> L;
+ *   ...
+ *   forall_listiterators(double, it, L) {
+ *     cout << *it << endl;
+ *   }
+ *   \endcode
+ *
+ *   Note that this code is equivalent to the following tedious long version
+ *
+ *   \code
+ *   List<double> L;
+ *   ...
+ *   for( ListConstIterator<double> it = L.begin(); it.valid(); ++it) {
+ *     cout << *it << endl;
+ *   }
+ *   \endcode
+ */
+#define forall_listiterators(type, it, L) \
+	for(ListConstIterator< type > it = (L).begin(); it.valid(); ++it)
+
+//! Iteration over all iterators \a it of a list \a L, where L is of Type \c List<\a type>, in reverse order.
+/**
+ * Automagically creates a \c ListConstIterator<\a type> named \a it, and runs through the List \a L, in reverse order.
+ * See \c #forall_listiterators for an example.
+ */
+#define forall_rev_listiterators(type, it, L) \
+	for(ListConstIterator< type > it = (L).rbegin(); it.valid(); --it)
+
+//! Iteration over all non-const iterators \a it of a list \a L, where L is of Type \c List<\a type>.
+/**
+ * Automagically creates a \c ListIterator<\a type> named \a it, and runs through the List \a L.
+ * See \c #forall_listiterators for an example.
+ */
+#define forall_nonconst_listiterators(type, it, L) \
+	for(ListIterator< type > it = (L).begin(); it.valid(); ++it)
+
+//! Iteration over all non-const iterators \a it of a list \a L, where L is of Type \c List<\a type>, in reverse order.
+/**
+ * Automagically creates a \c ListIterator<\a type> named \a it, and runs through the List \a L, in reverse order.
+ * See \c #forall_listiterators for an example.
+ */
+#define forall_rev_nonconst_listiterators(type, it, L) \
+	for(ListIterator< type > it = (L).rbegin(); it.valid(); --it)
+
+//! Iteration over all iterators \a it of a list \a L, where L is of Type \c SList<\a type>.
+/**
+ * Automagically creates a \c SListConstIterator<\a type> named \a it, and runs through the SList \a L.
+ * See \c #forall_listiterators for an example.
+ */
+#define forall_slistiterators(type, it, L) \
+	for(SListConstIterator< type > it = (L).begin(); it.valid(); ++it)
+
+//! Iteration over all non-const iterators \a it of a list \a L, where L is of Type \c SList<\a type>.
+/**
+ * Automagically creates a \c SListIterator<\a type> named \a it, and runs through the SList \a L.
+ * See \c #forall_listiterators for an example.
+ */
+#define forall_nonconst_slistiterators(type, it, L) \
+	for(SListIterator< type > it = (L).begin(); it.valid(); ++it)
+
+
+
+
+//! The parameterized class \a ListPure<E> represents doubly linked lists with content type \a E.
+/**
+ * Elements of the list are instances of type ListElement<E>.
+ * Use ListConstIterator<E> or ListIterator<E> in order to iterate over the list.
+ *
+ * In contrast to ListPure<E>, instances of \a List<E> store the length of the list.
+ *
+ * See the \c #forall_listiterators macros for the recommended way how to easily iterate through a
+ * list.
+ *
+ * @tparam E is the data type stored in list elements.
+ */
+template<class E>
+class List : private ListPure<E> {
+
+	int m_count; //!< The length of the list.
+
+public:
+	//! Constructs an empty doubly linked list.
+	List() : m_count(0) { }
+
+	//! Constructs a doubly linked list that is a copy of \a L.
+	List(const List<E> &L) : ListPure<E>(L), m_count(L.m_count) { }
+
+	// destruction
+	~List() { }
+
+	typedef E value_type;
+	typedef ListElement<E> element_type;
+	typedef ListConstIterator<E> const_iterator;
+	typedef ListIterator<E> iterator;
+
+	//! Returns true iff the list is empty.
+	bool empty() const { return ListPure<E>::empty(); }
+
+	// returns length of list
+	int size() const { return m_count; }
+
+	// returns first element of list (0 if empty)
+	const ListConstIterator<E> begin() const { return ListPure<E>::begin(); }
+	// returns first element of list (0 if empty)
+	ListIterator<E> begin() { return ListPure<E>::begin(); }
+
+	// returns iterator to one-past-last element of list
+	ListConstIterator<E> end() const { return ListConstIterator<E>(); }
+	// returns iterator to one-past-last element of list
+	ListIterator<E> end() { return ListIterator<E>(); }
+
+	// returns last element of list (0 if empty)
+	const ListConstIterator<E> rbegin() const { return ListPure<E>::rbegin(); }
+	// returns last element of list (0 if empty)
+	ListIterator<E> rbegin() { return ListPure<E>::rbegin(); }
+
+	// returns iterator to one-before-first element of list
+	ListConstIterator<E> rend() const { return ListConstIterator<E>(); }
+	// returns iterator to one-before-first element of list
+	ListIterator<E> rend() { return ListIterator<E>(); }
+
+	// returns reference to first element
+	const E &front() const { return ListPure<E>::front(); }
+	// returns reference to first element
+	E &front() { return ListPure<E>::front(); }
+
+	// returns reference to last element
+	const E &back() const { return ListPure<E>::back(); }
+	// returns reference to last element
+	E &back() { return ListPure<E>::back(); }
+
+	// returns cyclic successor
+	ListConstIterator<E> cyclicSucc(ListConstIterator<E> it) const {
+		return ListPure<E>::cyclicSucc(it);
+	}
+
+	// returns cyclic successor
+	ListIterator<E> cyclicSucc(ListIterator<E> it) {
+		return ListPure<E>::cyclicSucc(it);
+	}
+
+	// returns cyclic predecessor
+	ListConstIterator<E> cyclicPred(ListConstIterator<E> it) const {
+		return ListPure<E>::cyclicPred(it);
+	}
+
+	// returns cyclic predecessor
+	ListIterator<E> cyclicPred(ListIterator<E> it) {
+		return ListPure<E>::cyclicPred(it);
+	}
+
+	// returns the iterator at position pos. Note that this takes time linear in pos.
+	ListConstIterator<E> get(int pos) const {
+		OGDF_ASSERT(0 <= pos && pos < m_count)
+		return ListPure<E>::get(pos);
+	}
+
+	// returns the iterator at position pos. Note that this takes time linear in pos.
+	ListIterator<E> get(int pos) {
+		OGDF_ASSERT(0 <= pos && pos < m_count)
+		return ListPure<E>::get(pos);
+	}
+
+	//! Returns the position (starting with 0) of iterator \a it in the list.
+	/**
+	 * \pre \a it is a valid iterator pointing to an element in this list!
+	 */
+	int pos(ListConstIterator<E> it) const {
+		OGDF_ASSERT(it.valid())
+		return ListPure<E>::pos(it);
+	}
+
+	//! Returns an iterator to a random element in the list (or an invalid iterator if the list is empty)
+	/**
+	 * This method takes linear time.
+	 */
+	ListConstIterator<E> chooseIterator() const {
+		return (m_count > 0) ? get(randomNumber(0,m_count-1)) : ListConstIterator<E>();
+	}
+
+	//! Returns an iterator to a random element in the list (or an invalid iterator if the list is empty)
+	/**
+	 * This method takes linear time.
+	 */
+	ListIterator<E> chooseIterator() {
+		return (m_count > 0) ? get(randomNumber(0,m_count-1)) : ListIterator<E>();
+	}
+
+	//! Returns a random element from the list.
+	/**
+	 * \pre The list is not empty!
+	 *
+	 * This method takes linear time.
+	 */
+	const E chooseElement() const {
+		OGDF_ASSERT(!empty());
+		return *chooseIterator();
+	}
+
+	//! Returns a random element from the list.
+	/**
+	 * \pre The list is not empty!
+	 *
+	 * This method takes linear time.
+	 */
+	E chooseElement() {
+		OGDF_ASSERT(!empty());
+		return *chooseIterator();
+	}
+
+	// assignment
+	List<E> &operator=(const List<E> &L) {
+		ListPure<E>::operator=(L);
+		m_count = L.m_count;
+		return *this;
+	}
+
+	//! Equality operator.
+	bool operator==(const List<E> &L) const {
+		if(m_count != L.m_count)
+			return false;
+
+		ListElement<E> *pX = ListPure<E>::m_head, *pY = L.m_head;
+		while(pX != 0) {
+			if(pX->m_x != pY->m_x)
+				return false;
+			pX = pX->m_next;
+			pY = pY->m_next;
+		}
+		return true;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const List<E> &L) const {
+		return !operator==(L);
+	}
+
+	// adds element x at beginning
+	ListIterator<E> pushFront(const E &x) {
+		++m_count;
+		return ListPure<E>::pushFront(x);
+	}
+
+	// adds element x at end
+	ListIterator<E> pushBack(const E &x) {
+		++m_count;
+		return ListPure<E>::pushBack(x);
+	}
+
+	// inserts x before or after it
+	ListIterator<E> insert(const E &x, ListIterator<E> it, Direction dir = after) {
+		++m_count;
+		return ListPure<E>::insert(x,it,dir);
+	}
+
+	// inserts x before it
+	ListIterator<E> insertBefore(const E &x, ListIterator<E> it) {
+		++m_count;
+		return ListPure<E>::insertBefore(x,it);
+	}
+
+	// inserts x after it
+	ListIterator<E> insertAfter(const E &x, ListIterator<E> it) {
+		++m_count;
+		return ListPure<E>::insertAfter(x,it);
+	}
+
+	// removes first element
+	void popFront() {
+		--m_count;
+		ListPure<E>::popFront();
+	}
+
+	// removes first element and returns it
+	E popFrontRet() {
+		E el = front();
+		popFront();
+		return el;
+	}
+
+	// removes last element
+	void popBack() {
+		--m_count;
+		ListPure<E>::popBack();
+	}
+
+	// removes last element and returns it
+	E popBackRet() {
+		E el = back();
+		popBack();
+		return el;
+	}
+
+	void exchange(ListIterator<E> it1, ListIterator<E> it2) {
+		ListPure<E>::exchange(it1,it2);
+	}
+
+	//! Moves \a it to the beginning of the list
+	/**
+	 * \pre \a it points to an element in the list.
+	 */
+	void moveToFront(ListIterator<E> it) {
+		ListPure<E>::moveToFront(it);
+	}
+	//! Moves \a it to the end of the list
+	/**
+	 * \pre \a it points to an element in the list.
+	 */
+	void moveToBack(ListIterator<E> it) {
+		ListPure<E>::moveToBack(it);
+	}
+	//! Moves \a it after \a itBefore.
+	/**
+	 * \pre \a it and \a itBefore point to elements in this list.
+	 */
+	void moveToSucc(ListIterator<E> it, ListIterator<E> itBefore) {
+		ListPure<E>::moveToSucc(it,itBefore);
+	}
+	//! Moves \a it before \a itAfter.
+	/**
+	 * \pre \a it and \a itAfter point to elements in this list.
+	 */
+	void moveToPrec(ListIterator<E> it, ListIterator<E> itAfter) {
+		ListPure<E>::moveToPrec(it,itAfter);
+	}
+
+	//! Moves \a it to the beginning of \a L2.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void moveToFront(ListIterator<E> it, List<E> &L2) {
+		ListPure<E>::moveToFront(it,L2);
+		--m_count; ++L2.m_count;
+	}
+	//! Moves \a it to the end of \a L2.
+	/**
+	 * \pre \a it points to an element in this list.
+	 */
+	void moveToBack(ListIterator<E> it, List<E> &L2) {
+		ListPure<E>::moveToBack(it,L2);
+		--m_count; ++L2.m_count;
+	}
+
+	//! Moves \a it to list \a L2 and inserts it after \a itBefore.
+	/**
+	 * \pre \a it points to an element in this list, and \a itBefore
+	 *      points to an element in \a L2.
+	 */
+	void moveToSucc(ListIterator<E> it, List<E> &L2, ListIterator<E> itBefore) {
+		ListPure<E>::moveToSucc(it,L2,itBefore);
+		--m_count; ++L2.m_count;
+	}
+	//! Moves \a it to list \a L2 and inserts it after \a itBefore.
+	/**
+	 * \pre \a it points to an element in this list, and \a itBefore
+	 *      points to an element in \a L2.
+	 */
+	void moveToPrec(ListIterator<E> it, List<E> &L2, ListIterator<E> itAfter) {
+		ListPure<E>::moveToPrec(it,L2,itAfter);
+		--m_count; ++L2.m_count;
+	}
+
+	// removes it and frees memory
+	void del(ListIterator<E> it) {
+		--m_count;
+		ListPure<E>::del(it);
+	}
+
+	//! Appends \a L2 to this list and makes \a L2 empty.
+	void conc(List<E> &L2) {
+		ListPure<E>::conc(L2);
+		m_count += L2.m_count;
+		L2.m_count = 0;
+	}
+
+	//! Prepends \a L2 to this list and makes \a L2 empty.
+	void concFront(List<E> &L2) {
+		ListPure<E>::concFront(L2);
+		m_count += L2.m_count;
+		L2.m_count = 0;
+	}
+
+	//! Exchanges too complete lists in O(1).
+	/**
+	 * The list's content is moved to L2 and vice versa.
+	 */
+	void exchange(List<E>& L2) {
+		ListPure<E>::exchange(L2);
+		int t = this->m_count;
+		this->m_count = L2.m_count;
+		L2.m_count = t;
+	}
+
+	//! Splits the list at element \a it into lists \a L1 and \a L2.
+	/**
+	 * If \a it is not a null pointer and \a L = x1,...,x{k-1}, \a it,x_{k+1},xn, then
+	 * \a L1 = x1,...,x{k-1} and \a L2 = \a it,x{k+1},...,xn if \a dir = \c before.
+	 * If \a it is a null pointer, then \a L1 is made empty and \a L2 = \a L. Finally
+	 * \a L is made empty if it is not identical to \a L1 or \a L2.
+	 *
+	 * \pre \a it points to an element in this list.
+	 */
+	void split(ListIterator<E> it,List<E> &L1,List<E> &L2,Direction dir = before) {
+		ListPure<E>::split(it,L1,L2,dir);
+		int countL = m_count, countL1 = 0;
+		for(ListElement<E> *pX = L1.m_head; pX != 0; pX = pX->m_next)
+			++countL1;
+
+		L1.m_count = countL1;
+		L2.m_count = countL - countL1;
+		if (this->m_head == 0) m_count = 0;
+	}
+
+	// reverses the order of the list elements
+	void reverse() { ListPure<E>::reverse(); }
+
+	// removes all elements from list
+	void clear() {
+		m_count = 0;
+		ListPure<E>::clear();
+	}
+
+	//! Conversion to const SListPure.
+	const ListPure<E> &getListPure() const { return *this; }
+
+	// sorts list using quicksort
+	void quicksort() {
+		ogdf::quicksortTemplate(*this);
+	}
+
+	// sorts list using quicksort and parameterized compare element comp
+	template<class COMPARER>
+	void quicksort(const COMPARER &comp) {
+		ogdf::quicksortTemplate(*this,comp);
+	}
+
+	// sorts list using bucket sort
+	void bucketSort(int l, int h, BucketFunc<E> &f) {
+		ListPure<E>::bucketSort(l,h,f);
+	}
+
+	// permutes elements in list randomly
+	void permute() {
+		ListPure<E>::permute(m_count);
+	}
+
+	//! Scans the list for the specified element and returns its position in the list, or -1 if not found.
+	int search (const E& e) const {
+		return ListPure<E>::search(e);
+	}
+
+	//! Scans the list for the specified element (using the user-defined comparer) and returns its position in the list, or -1 if not found.
+	template<class COMPARER>
+	int search (const E& e, const COMPARER &comp) const {
+		return ListPure<E>::search(e, comp);
+	}
+
+
+	OGDF_NEW_DELETE
+}; // class List
+
+
+
+template<class E>
+void ListPure<E>::bucketSort(int l, int h, BucketFunc<E> &f)
+{
+	if (m_head == m_tail) return;
+
+	Array<ListElement<E> *> head(l,h,0), tail(l,h);
+
+	ListElement<E> *pX;
+	for (pX = m_head; pX; pX = pX->m_next) {
+		int i = f.getBucket(pX->m_x);
+		if (head[i])
+			tail[i] = ((pX->m_prev = tail[i])->m_next = pX);
+		else
+			head[i] = tail[i] = pX;
+	}
+
+	ListElement<E> *pY = 0;
+	for (int i = l; i <= h; i++) {
+		pX = head[i];
+		if (pX) {
+			if (pY) {
+				(pY->m_next = pX)->m_prev = pY;
+			} else
+				(m_head = pX)->m_prev = 0;
+			pY = tail[i];
+		}
+	}
+
+	m_tail = pY;
+	pY->m_next = 0;
+}
+
+
+// permutes elements in list randomly; n is the length of the list
+template<class E>
+void ListPure<E>::permute(const int n)
+{
+	Array<ListElement<E> *> A(n+2);
+	A[0] = A[n+1] = 0;
+
+	int i = 1;
+	ListElement<E> *pX;
+	for (pX = m_head; pX; pX = pX->m_next)
+		A[i++] = pX;
+
+	A.permute(1,n);
+
+	for (i = 1; i <= n; i++) {
+		pX = A[i];
+		pX->m_next = A[i+1];
+		pX->m_prev = A[i-1];
+	}
+
+	m_head = A[1];
+	m_tail = A[n];
+}
+
+
+// prints list L to output stream os using delimiter delim
+template<class E>
+void print(ostream &os, const ListPure<E> &L, char delim = ' ')
+{
+	ListConstIterator<E> pX = L.begin();
+	if (pX.valid()) {
+		os << *pX;
+		for(++pX; pX.valid(); ++pX)
+			os << delim << *pX;
+	}
+}
+
+// prints list L to output stream os using delimiter delim
+template<class E>
+void print(ostream &os, const List<E> &L, char delim = ' ')
+{
+	print(os, L.getListPure(), delim);
+}
+
+// prints list L to output stream os
+template<class E>
+ostream &operator<<(ostream &os, const ListPure<E> &L)
+{
+	print(os,L);
+	return os;
+}
+
+// prints list L to output stream os
+template<class E>
+ostream &operator<<(ostream &os, const List<E> &L)
+{
+	return os << L.getListPure();
+}
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/Math.cpp b/ogdf/basic/Math.cpp
new file mode 100644
index 0000000..f4a189c
--- /dev/null
+++ b/ogdf/basic/Math.cpp
@@ -0,0 +1,112 @@
+/*
+ * $Revision: 2549 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-04 23:09:19 +0200 (Mi, 04. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of mathematical constants, functions.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "Math.h"
+#include <limits.h>
+
+
+namespace ogdf {
+
+
+	const double Math::pi     = 3.14159265358979323846;
+	const double Math::pi_2   = 1.57079632679489661923;
+	const double Math::pi_4   = 0.785398163397448309616;
+	const double Math::two_pi = 2*3.14159265358979323846;
+
+	const double Math::e    = 2.71828182845904523536;
+
+	const double Math::log_of_2 = log(2.0);
+	const double Math::log_of_4 = log(4.0);
+
+	int factorials[13] = {
+		1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880,
+		3628800, 39916800, 479001600
+	};
+
+	double factorials_d[20] = {
+		1.0, 1.0, 2.0, 6.0, 24.0, 120.0, 720.0, 5040.0, 40320.0, 362880.0,
+		3628800.0, 39916800.0, 479001600.0, 6227020800.0, 87178291200.0,
+		1307674368000.0, 20922789888000.0, 355687428096000.0,
+		6402373705728000.0, 121645100408832000.0
+	};
+
+	int Math::binomial(int n, int k)
+	{
+		if(k>n/2) k = n-k;
+		if(k == 0) return 1;
+		int r = n;
+		for(int i = 2; i<=k; ++i)
+			r = (r * (n+1-i))/i;
+		return r;
+	}
+
+	double Math::binomial_d(int n, int k)
+	{
+		if(k>n/2) k = n-k;
+		if(k == 0) return 1.0;
+		double r = n;
+		for(int i = 2; i<=k; ++i)
+			r = (r * (n+1-i))/i;
+		return r;
+	}
+
+	int Math::factorial(int n)
+	{
+		if(n < 0) return 1;
+		if(n > 12) return INT_MAX; // not representable by int
+
+		return factorials[n];
+	}
+
+	double Math::factorial_d(int n)
+	{
+		if(n < 0) return 1.0;
+
+		double f = 1.0;
+		for(; n > 19; --n)
+			f *= n;
+
+		return f * factorials_d[n];
+	}
+
+} // namespace ogdf
diff --git a/ogdf/basic/Math.h b/ogdf/basic/Math.h
new file mode 100644
index 0000000..463ce5c
--- /dev/null
+++ b/ogdf/basic/Math.h
@@ -0,0 +1,150 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Mathematical Helpers
+ *
+ * \author Markus Chimani
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifndef OGDF_MATH_H
+#define OGDF_MATH_H
+
+#include "basic.h"
+#include <math.h>
+
+namespace ogdf {
+
+
+//#define DOUBLE_EPS 0.000001
+
+
+class OGDF_EXPORT Math {
+
+public:
+	//! The constant \f$\pi\f$.
+	static const double pi;
+
+	//! The constant \f$\frac{\pi}{2}\f$.
+	static const double pi_2;
+
+	//! The constant \f$\frac{\pi}{4}\f$.
+	static const double pi_4;
+
+	//! The constant \f$2\pi\f$.
+	static const double two_pi;
+
+	//! Euler's number.
+	static const double e;
+
+	//! The constant log(2.0).
+	static const double log_of_2;
+
+	//! The constant log(4.0).
+	static const double log_of_4;
+
+	//! Returns the logarithm of \a x to the base 2.
+	static double log2(double x) {
+		OGDF_ASSERT(x >= 0)
+		return log(x) / log_of_2;
+	}
+
+	//! Returns the logarithm of \a x to the base 4.
+	static double log4(double x) {
+		OGDF_ASSERT(x >= 0)
+		return log(x) / log_of_4;
+	}
+
+	//! Returns \f$n \choose k\f$.
+	static int binomial(int n, int k);
+
+	//! Returns \f$n \choose k\f$.
+	static double binomial_d(int n, int k);
+
+	//! Returns \a n!.
+	static int factorial(int n);
+
+	//! Returns \a n!.
+	static double factorial_d(int n);
+
+	//static bool equald(double a, double b) {
+	//	double d = a-b;
+	//	return d < DOUBLE_EPS && d > -DOUBLE_EPS;
+	//}
+
+	/*!
+	 * \brief A fast method to obtain the rounded down binary logarithm of an 32-bit integer
+	 *
+	 * This is based on http://en.wikipedia.org/wiki/Binary_logarithm
+	 * @param v The number of which the binary logarithm is to be determined
+	 * @return The rounded down logarithm base 2 if v is positive, -1 otherwise
+	 */
+	static int floorLog2(int v) {
+		if (v <= 0) {
+			return -1;
+		} else {
+			int result = 0;
+			if (v >= (1 << 16)) {
+				v >>= 16;
+				result += 16;
+			}
+			if (v >= (1 << 8)) {
+				v >>= 8;
+				result += 8;
+			}
+			if (v >= (1 << 4)) {
+				v >>= 4;
+				result += 4;
+			}
+			if (v >= (1 << 2)) {
+				v >>= 2;
+				result += 2;
+			}
+			if (v >= (1 << 1)) {
+				result += 1;
+			}
+			return result;
+		}
+	}
+};
+
+
+}
+
+#endif // OGDF_MATH_H
diff --git a/ogdf/basic/NodeArray.h b/ogdf/basic/NodeArray.h
new file mode 100644
index 0000000..98510ad
--- /dev/null
+++ b/ogdf/basic/NodeArray.h
@@ -0,0 +1,227 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of NodeArray class
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_NODE_ARRAY_H
+#define OGDF_NODE_ARRAY_H
+
+
+#include "Graph_d.h"
+
+
+namespace ogdf {
+
+
+//! Abstract base class for node arrays.
+/**
+ * Defines the interface for event handling used by the Graph class.
+ * Use the parameterized class NodeArray for creating node arrays.
+ */
+class NodeArrayBase {
+	/**
+	 * Pointer to list element in the list of all registered node
+	 * arrays which references this array.
+	 */
+	ListIterator<NodeArrayBase*> m_it;
+
+public:
+	const Graph *m_pGraph; //!< The associated graph.
+
+	//! Initializes an node array not associated with a graph.
+	NodeArrayBase() : m_pGraph(0) { }
+	//! Initializes an node array associated with \a pG.
+	NodeArrayBase(const Graph *pG) : m_pGraph(pG) {
+		if(pG) m_it = pG->registerArray(this);
+	}
+
+	// destructor, unregisters the array
+	virtual ~NodeArrayBase() {
+		if (m_pGraph) m_pGraph->unregisterArray(m_it);
+	}
+
+	// event interface used by Graph
+	//! Virtual function called when table size has to be enlarged.
+	virtual void enlargeTable(int newTableSize) = 0;
+	//! Virtual function called when table has to be reinitialized.
+	virtual void reinit(int initTableSize) = 0;
+	//! Virtual function called when array is disconnected from the graph.
+	virtual void disconnect() = 0;
+
+	//! Associates the array with a new graph.
+	void reregister(const Graph *pG) {
+		if (m_pGraph) m_pGraph->unregisterArray(m_it);
+		if ((m_pGraph = pG) != 0) m_it = pG->registerArray(this);
+	}
+}; // class NodeArrayBase
+
+
+//! Dynamic arrays indexed with nodes.
+/**
+ * Node arrays represent a mapping from nodes to data of type \a T.
+ * They adjust their table size automatically when the graph grows.
+ *
+ * @tparam T is the element type.
+ */
+template<class T> class NodeArray : private Array<T>, protected NodeArrayBase {
+	T m_x; //!< The default value for array elements.
+
+public:
+	//! Constructs an empty node array associated with no graph.
+	NodeArray() : Array<T>(), NodeArrayBase() { }
+	//! Constructs a node array associated with \a G.
+	NodeArray(const Graph &G) : Array<T>(G.nodeArrayTableSize()), NodeArrayBase(&G) { }
+	//! Constructs a node array associated with \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param x is the default value for all array elements.
+	 */
+	NodeArray(const Graph &G, const T &x) :
+		Array<T>(0,G.nodeArrayTableSize()-1,x), NodeArrayBase(&G), m_x(x) { }
+	//! Constructs a node array that is a copy of \a A.
+	/**
+	 * Associates the array with the same graph as \a A and copies all elements.
+	 */
+	NodeArray(const NodeArray<T> &A) : Array<T>(A), NodeArrayBase(A.m_pGraph), m_x(A.m_x) { }
+
+	//! Returns true iff the array is associated with a graph.
+	bool valid() const { return (Array<T>::low() <= Array<T>::high()); }
+
+	//! Returns a pointer to the associated graph.
+	const Graph *graphOf() const {
+		return m_pGraph;
+	}
+
+	//! Returns a reference to the element with index \a v.
+	const T &operator[](node v) const {
+		OGDF_ASSERT(v != 0 && v->graphOf() == m_pGraph)
+		return Array<T>::operator [](v->index());
+	}
+
+	//! Returns a reference to the element with index \a v.
+	T &operator[](node v) {
+		OGDF_ASSERT(v != 0 && v->graphOf() == m_pGraph)
+		return Array<T>::operator [](v->index());
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for a node
+	 * in the associated graph!
+	 */
+	const T &operator[](int index) const {
+		return Array<T>::operator [](index);
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for a node
+	 * in the associated graph!
+	 */
+	T &operator[](int index) {
+		return Array<T>::operator [](index);
+	}
+
+	//! Assignment operator.
+	NodeArray<T> &operator=(const NodeArray<T> &a) {
+		Array<T>::operator =(a);
+		m_x = a.m_x;
+		reregister(a.m_pGraph);
+		return *this;
+	}
+
+	//! Reinitializes the array. Associates the array with no graph.
+	void init() {
+		Array<T>::init(); reregister(0);
+	}
+
+	//! Reinitializes the array. Associates the array with \a G.
+	void init(const Graph &G) {
+		Array<T>::init(G.nodeArrayTableSize()); reregister(&G);
+	}
+
+	//! Reinitializes the array. Associates the array with \a G.
+	/**
+	 * @param G is the associated graph.
+	 * @param x is the default value.
+	 */
+	void init(const Graph &G, const T &x) {
+		Array<T>::init(0,G.nodeArrayTableSize()-1, m_x = x); reregister(&G);
+	}
+
+	//! Sets all array elements to \a x.
+	void fill(const T &x) {
+		int high = m_pGraph->maxNodeIndex();
+		if(high >= 0)
+			Array<T>::fill(0,high,x);
+	}
+
+private:
+	virtual void enlargeTable(int newTableSize) {
+		Array<T>::grow(newTableSize-Array<T>::size(),m_x);
+	}
+
+	virtual void reinit(int initTableSize) {
+		Array<T>::init(0,initTableSize-1,m_x);
+	}
+
+	virtual void disconnect() {
+		Array<T>::init();
+		m_pGraph = 0;
+	}
+
+	OGDF_NEW_DELETE
+
+}; // class NodeArray<T>
+
+
+} // end namespace ogdf
+
+#include "Graph.h"
+
+#endif
diff --git a/ogdf/basic/SList.h b/ogdf/basic/SList.h
new file mode 100644
index 0000000..c018df8
--- /dev/null
+++ b/ogdf/basic/SList.h
@@ -0,0 +1,1047 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of singly linked lists
+ * (SListPure<E> and SList<E>) and iterators (SListConstIterator<E>
+ * and SListIterator<E>).
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_SLIST_H
+#define OGDF_SLIST_H
+
+
+#include "../internal/basic/list_templates.h"
+
+
+namespace ogdf {
+
+
+template<class E> class SListPure;
+template<class E> class StackPure;
+template<class E> class SListIterator;
+template<class E> class SListConstIterator;
+
+
+//! The parameterized class \a SListElement<E> represents the structure for elements of singly linked lists.
+template<class E>
+class SListElement {
+	friend class SListPure<E>;
+	friend class StackPure<E>;
+	friend class SListIterator<E>;
+	friend class SListConstIterator<E>;
+
+	SListElement<E> *m_next; //!< Pointer to successor element.
+	E m_x; //!< Stores the content.
+
+	//! Constructs an SListElement.
+	SListElement() : m_next(0) { }
+	//! Constructs an SListElement.
+	SListElement(const E &x) : m_next(0), m_x(x) { }
+	//! Constructs an SListElement.
+	SListElement(const E &x, SListElement<E> *next) :
+		m_next(next), m_x(x) { }
+
+	OGDF_NEW_DELETE
+}; // class SListElement
+
+
+
+//! The parameterized class \a SListIterator<E> encapsulates a pointer to an slist element.
+/**
+ * It is used in order to iterate over singly linked lists,
+ * and to specify a position in a singly linked list. It is possible that
+ * an iterator encapsulates a null pointer.
+ */
+
+template<class E> class SListIterator {
+	SListElement<E> *m_pX; //!< Pointer to slist element.
+
+	friend class SListConstIterator<E>;
+	friend class SListPure<E>;
+
+	//! Conversion to pointer to slist element.
+	operator SListElement<E> *() { return m_pX; }
+	//! Conversion to pointer to slist element.
+	operator const SListElement<E> *() const { return m_pX; }
+
+public:
+	//! Constructs an iterator pointing to no element.
+	SListIterator() : m_pX(0) { }
+	//! Constructs an iterator pointing to \a pX.
+	SListIterator(SListElement<E> *pX) : m_pX(pX) { }
+	//! Constructs an iterator that is a copy of \a it.
+	SListIterator(const SListIterator<E> &it) : m_pX(it.m_pX) { }
+
+	//! Returns true iff the iterator points to an element.
+	bool valid() const { return m_pX != 0; }
+
+	//! Equality operator.
+	bool operator==(const SListIterator<E> &it) const {
+		return m_pX == it.m_pX;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const SListIterator<E> &it) const {
+		return m_pX != it.m_pX;
+	}
+
+	//! Returns successor iterator.
+	SListIterator<E> succ() const { return m_pX->m_next; }
+
+	//! Returns a reference to the element content.
+	E &operator*() const { return m_pX->m_x; }
+
+	//! Assignment operator.
+	SListIterator<E> &operator=(const SListIterator<E> &it) {
+		m_pX = it.m_pX;
+		return *this;
+	}
+
+	//! Increment operator (prefix).
+	SListIterator<E> &operator++() {
+		m_pX = m_pX->m_next;
+		return *this;
+	}
+
+	//! Increment operator (postfix).
+	SListIterator<E> operator++(int) {
+		SListIterator<E> it = *this;
+		m_pX = m_pX->m_next;
+		return it;
+	}
+
+	OGDF_NEW_DELETE
+}; // class SListIterator
+
+
+
+//! The parameterized class \a SListIterator<E> encapsulates a constant pointer to an slist element.
+/**
+ * It is used in order to iterate over singly linked lists,
+ * and to specify a position in a singly linked list. It is possible that
+ * an iterator encapsulates a null pointer. In contrast to SListIterator,
+ * it is not possible to change the slist element pointed to.
+ */
+
+template<class E> class SListConstIterator {
+	const SListElement<E> *m_pX; //!< Pointer to slist element.
+
+	friend class SListPure<E>;
+
+	//! Conversion to pointer to slist element.
+	operator const SListElement<E> *() { return m_pX; }
+
+public:
+	//! Constructs an iterator pointing to no element.
+	SListConstIterator() : m_pX(0) { }
+
+	//! Constructs an iterator pointing to \a pX.
+	SListConstIterator(const SListElement<E> *pX) : m_pX(pX) { }
+
+	//! Constructs an iterator that is a copy of \a it.
+	SListConstIterator(const SListIterator<E> &it) : m_pX((const SListElement<E> *)it) { }
+	//! Constructs an iterator that is a copy of \a it.
+	SListConstIterator(const SListConstIterator &it) : m_pX(it.m_pX) { }
+
+	//! Returns true iff the iterator points to an element.
+	bool valid() const { return m_pX != 0; }
+
+	//! Equality operator.
+	bool operator==(const SListConstIterator<E> &it) const {
+		return m_pX == it.m_pX;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const SListConstIterator<E> &it) const {
+		return m_pX != it.m_pX;
+	}
+
+	//! Returns successor iterator.
+	SListConstIterator<E> succ() const { return m_pX->m_next; }
+
+	//! Returns a reference to the element content.
+	const E &operator*() const { return m_pX->m_x; }
+
+	//! Assignment operator.
+	SListConstIterator<E> &operator=(const SListConstIterator<E> &it) {
+		m_pX = it.m_pX;
+		return *this;
+	}
+
+
+	//! Increment operator (prefix).
+	SListConstIterator<E> &operator++() {
+		m_pX = m_pX->m_next;
+		return *this;
+	}
+
+	//! Increment operator (postfix).
+	SListConstIterator<E> operator++(int) {
+		SListConstIterator<E> it = *this;
+		m_pX = m_pX->m_next;
+		return it;
+	}
+
+	OGDF_NEW_DELETE
+}; // class SListConstIterator
+
+
+//! The parameterized class \a SListPure<E> represents singly linked lists with content type \a E.
+/**
+ * Elements of the list are instances of type SListElement<E>.
+ * Use SListConstIterator<E> or SListIterator<E> in order to iterate over the list.
+ *
+ * In contrast to SList<E>, instances of \a SListPure<E> do not store the length of the list.
+ *
+ * @tparam E is the data type stored in list elements.
+ */
+
+template<class E> class SListPure {
+	SListElement<E> *m_head; //!< Pointer to first element.
+	SListElement<E> *m_tail; //!< Pointer to last element.
+
+public:
+	//! Constructs an empty singly linked list.
+	SListPure() : m_head(0), m_tail(0) { }
+
+	//! Constructs a singly linked list that is a copy of \a L.
+	SListPure(const SListPure<E> &L) : m_head(0), m_tail(0) {
+		copy(L);
+	}
+
+	// destruction
+	~SListPure() { clear(); }
+
+	typedef E value_type;
+	typedef SListElement<E> element_type;
+	typedef SListConstIterator<E> const_iterator;
+	typedef SListIterator<E> iterator;
+
+	//! Returns true iff the list is empty.
+	bool empty() const { return m_head == 0; }
+
+	//! Returns the length of the list
+	/**
+	 * Notice that this method requires to run through the whole list and takes linear running time!
+	 */
+	int size() const {
+		int count = 0;
+		for (SListElement<E> *pX = m_head; pX; pX = pX->m_next)
+			++count;
+		return count;
+	}
+
+	//! Returns an iterator to the first element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	SListConstIterator<E> begin() const { return m_head; }
+
+	//! Returns an iterator to the first element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	SListIterator<E> begin() { return m_head; }
+
+	//! Returns an iterator to one-past-last element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	SListConstIterator<E> end() const { return SListConstIterator<E>(); }
+
+	//! Returns an iterator to one-past-last element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	SListIterator<E> end() { return SListIterator<E>(); }
+
+	//! Returns an iterator to the last element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	SListConstIterator<E> rbegin() const { return m_tail; }
+
+	//! Returns an iterator to the last element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	SListIterator<E> rbegin() { return m_tail; }
+
+
+	//! Returns an iterator pointing to the element at position \a pos.
+	/**
+	 * The running time of this method is linear in \a pos.
+	 */
+	SListConstIterator<E> get(int pos) const {
+		SListElement<E> *pX;
+		for(pX = m_head; pX != 0; pX = pX->m_next)
+			if (pos-- == 0) break;
+		return pX;
+	}
+
+	//! Returns an iterator pointing to the element at position \a pos.
+	/**
+	 * The running time of this method is linear in \a pos.
+	 */
+	SListIterator<E> get(int pos) {
+		SListElement<E> *pX;
+		for(pX = m_head; pX != 0; pX = pX->m_next)
+			if (pos-- == 0) break;
+		return pX;
+	}
+
+	//! Returns the position (starting with 0) of \a it in the list.
+	/**
+	 * Positions are numbered 0,1,...
+	 * \pre \a it is an iterator pointing to an element in this list.
+	 */
+	int pos(SListConstIterator<E> it) const {
+		OGDF_ASSERT(it.valid())
+		int p = 0;
+		for(SListElement<E> *pX = m_head; pX != 0; pX = pX->m_next, ++p)
+			if (pX == it) break;
+		return p;
+	}
+
+
+	//! Returns a reference to the first element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	const E &front() const {
+		OGDF_ASSERT(m_head != 0)
+		return m_head->m_x;
+	}
+
+	//! Returns a reference to the first element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E &front() {
+		OGDF_ASSERT(m_head != 0)
+		return m_head->m_x;
+	}
+
+	//! Returns a reference to the last element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	const E &back() const {
+		OGDF_ASSERT(m_tail != 0)
+		return m_tail->m_x;
+	}
+
+	//! Returns a reference to the last element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E &back() {
+		OGDF_ASSERT(m_tail != 0)
+		return m_tail->m_x;
+	}
+
+	//! Returns an iterator to the cyclic successor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	SListConstIterator<E> cyclicSucc(SListConstIterator<E> it) const {
+		const SListElement<E> *pX = it;
+		return (pX->m_next) ? pX->m_next : m_head;
+	}
+
+	//! Returns an iterator to the cyclic successor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	SListIterator<E> cyclicSucc(SListIterator<E> it) {
+		SListElement<E> *pX = it;
+		return (pX->m_next) ? pX->m_next : m_head;
+	}
+
+	//! Assignment operator.
+	SListPure<E> &operator=(const SListPure<E> &L) {
+		clear(); copy(L);
+		return *this;
+	}
+
+	//! Adds element \a x at the begin of the list.
+	SListIterator<E> pushFront(const E &x) {
+		m_head = OGDF_NEW SListElement<E>(x,m_head);
+		if (m_tail == 0) m_tail = m_head;
+		return m_head;
+	}
+
+	//! Adds element \a x at the end of the list.
+	SListIterator<E> pushBack(const E &x) {
+		SListElement<E> *pNew = OGDF_NEW SListElement<E>(x);
+		if (m_head == 0)
+			m_head = m_tail = pNew;
+		else
+			m_tail = m_tail->m_next = pNew;
+		return m_tail;
+	}
+
+	//! Inserts element \a x after \a pBefore.
+	/**
+	 * \pre \a pBefore points to an element in this list.
+	 */
+	SListIterator<E> insertAfter(const E &x, SListIterator<E> itBefore) {
+		SListElement<E> *pBefore = itBefore;
+		OGDF_ASSERT(pBefore != 0)
+		SListElement<E> *pNew = OGDF_NEW SListElement<E>(x,pBefore->m_next);
+		if (pBefore == m_tail) m_tail = pNew;
+		return (pBefore->m_next = pNew);
+	}
+
+	//! Removes the first element from the list.
+	/**
+	 * \pre The list is not empty!
+	 */
+	void popFront() {
+		OGDF_ASSERT(m_head != 0)
+		SListElement<E> *pX = m_head;
+		if ((m_head = m_head->m_next) == 0) m_tail = 0;
+		delete pX;
+	}
+
+	//! Removes the first element from the list and returns it.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E popFrontRet() {
+		E el = front();
+		popFront();
+		return el;
+	}
+
+	//! Removes the succesor of \a pBefore.
+	/**
+	 * \pre \a pBefore points to an element in this list.
+	 */
+	void delSucc(SListIterator<E> itBefore) {
+		SListElement<E> *pBefore = itBefore;
+		OGDF_ASSERT(pBefore != 0)
+		SListElement<E> *pDel = pBefore->m_next;
+		OGDF_ASSERT(pDel != 0)
+		if ((pBefore->m_next = pDel->m_next) == 0) m_tail = pBefore;
+		delete pDel;
+	}
+
+	//! Moves the first element of this list to the begin of list \a L2.
+	void moveFrontToFront(SListPure<E> &L2) {
+		OGDF_ASSERT(m_head != 0)
+		OGDF_ASSERT(this != &L2)
+		SListElement<E> *pX = m_head;
+		if ((m_head = m_head->m_next) == 0) m_tail = 0;
+		pX->m_next = L2.m_head;
+		L2.m_head = pX;
+		if (L2.m_tail == 0) L2.m_tail = L2.m_head;
+	}
+
+	//! Moves the first element of this list to the end of list \a L2.
+	void moveFrontToBack(SListPure<E> &L2) {
+		OGDF_ASSERT(m_head != 0)
+		OGDF_ASSERT(this != &L2)
+		SListElement<E> *pX = m_head;
+		if ((m_head = m_head->m_next) == 0) m_tail = 0;
+		pX->m_next = 0;
+		if (L2.m_head == 0)
+			L2.m_head = L2.m_tail = pX;
+		else
+			L2.m_tail = L2.m_tail->m_next = pX;
+	}
+
+	//! Moves the first element of this list to list \a L2 inserted after \a itBefore.
+	/**
+	 * \pre \a itBefore points to an element in \a L2.
+	 */
+	void moveFrontToSucc(SListPure<E> &L2, SListIterator<E> itBefore) {
+		OGDF_ASSERT(m_head != 0)
+		OGDF_ASSERT(this != &L2)
+		SListElement<E> *pBefore = itBefore;
+		SListElement<E> *pX = m_head;
+		if ((m_head = m_head->m_next) == 0) m_tail = 0;
+		pX->m_next = pBefore->m_next;
+		pBefore->m_next = pX;
+		if (pBefore == L2.m_tail) L2.m_tail = pX;
+	}
+
+	//! Removes all elements from the list.
+	void clear() {
+		if (m_head == 0) return;
+
+#if (_MSC_VER == 1100)
+// workaround for bug in Visual Studio 5.0
+
+		while (!empty())
+			popFront();
+
+#else
+
+		if (doDestruction((E*)0)) {
+			for(SListElement<E> *pX = m_head; pX != 0; pX = pX->m_next)
+				pX->m_x.~E();
+		}
+		OGDF_ALLOCATOR::deallocateList(sizeof(SListElement<E>),m_head,m_tail);
+
+#endif
+
+		m_head = m_tail = 0;
+	}
+
+	//! Appends \a L2 to this list and makes \a L2 empty.
+	void conc(SListPure<E> &L2) {
+		if (m_head)
+			m_tail->m_next = L2.m_head;
+		else
+			m_head = L2.m_head;
+		if (L2.m_tail != 0) m_tail = L2.m_tail;
+		L2.m_head = L2.m_tail = 0;
+	}
+
+	//! Reverses the order of the list elements.
+	void reverse() {
+		SListElement<E> *p, *pNext, *pPred = 0;
+		for(p = m_head; p; p = pNext) {
+			pNext = p->m_next;
+			p->m_next = pPred;
+			pPred = p;
+		}
+		swap(m_head,m_tail);
+	}
+
+	//! Conversion to const SListPure.
+	const SListPure<E> &getListPure() const { return *this; }
+
+	//! Sorts the list using Quicksort.
+	void quicksort() {
+		ogdf::quicksortTemplate(*this);
+	}
+
+	//! Sorts the list using Quicksort and comparer \a comp.
+	template<class COMPARER>
+	void quicksort(const COMPARER &comp) {
+		ogdf::quicksortTemplate(*this,comp);
+	}
+
+	//! Sorts the list using bucket sort.
+	/**
+	 * @param l is the lowest bucket that will occur.
+	 * @param h is the highest bucket that will occur.
+	 * @param f returns the bucket for each element.
+	 * \pre The bucket function \a f will only return bucket values between \a l
+	 * and \a h for this list.
+	 */
+	void bucketSort(int l, int h, BucketFunc<E> &f);
+
+	//! Sorts the list using bucket sort.
+	void bucketSort(BucketFunc<E> &f);
+
+	//! Randomly permutes the elements in the list.
+	void permute() {
+		permute(size());
+	}
+
+	//! Scans the list for the specified element and returns its position in the list, or -1 if not found.
+	int search (const E& e) const {
+		int x = 0;
+		for(SListConstIterator<E> i = begin(); i.valid(); ++i, ++x)
+			if(*i == e) return x;
+		return -1;
+	}
+
+	//! Scans the list for the specified element (using the user-defined comparer) and returns its position in the list, or -1 if not found.
+	template<class COMPARER>
+	int search (const E& e, const COMPARER &comp) const {
+		int x = 0;
+		for(SListConstIterator<E> i = begin(); i.valid(); ++i, ++x)
+			if(comp.equal(*i,e)) return x;
+		return -1;
+	}
+
+protected:
+	void copy(const SListPure<E> &L) {
+		for(SListElement<E> *pX = L.m_head; pX != 0; pX = pX->m_next)
+			pushBack(pX->m_x);
+	}
+
+	void permute(const int n);
+
+	OGDF_NEW_DELETE
+}; // class SListPure
+
+
+
+//! The parameterized class \a SList<E> represents singly linked lists with content type \a E.
+/**
+ * Elements of the list are instances of type SListElement<E>.
+ * Use SListConstIterator<E> or SListIterator<E> in order to iterate over the list.
+ * In contrast to SListPure<E>, instances of \a SList<E> store the length of the list
+ * and thus allow constant time access to the length.
+ *
+ * @tparam E is the data type stored in list elements.
+ */
+
+template<class E>
+class SList : private SListPure<E> {
+
+	int m_count; //!< The length of the list.
+
+public:
+	//! Constructs an empty singly linked list.
+	SList() : m_count(0) { }
+
+	//! Constructs a singly linked list that is a copy of \a L.
+	SList(const SList<E> &L) : SListPure<E>(L), m_count(L.m_count) { }
+
+	// destruction
+	~SList() { }
+
+	typedef E value_type;
+	typedef SListElement<E> element_type;
+	typedef SListConstIterator<E> const_iterator;
+	typedef SListIterator<E> iterator;
+
+	//! Returns true iff the list is empty.
+	bool empty() const { return SListPure<E>::empty(); }
+
+	//! Returns the length of the list.
+	int size() const { return m_count; }
+
+	//! Returns an iterator to the first element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	const SListConstIterator<E> begin() const { return SListPure<E>::begin(); }
+
+	//! Returns an iterator to the first element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	SListIterator<E> begin() { return SListPure<E>::begin(); }
+
+	//! Returns an iterator to one-past-last element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	SListConstIterator<E> end() const { return SListConstIterator<E>(); }
+
+	//! Returns an iterator to one-past-last element of the list.
+	/**
+	 * This is always a null pointer iterator.
+	 */
+	SListIterator<E> end() { return SListIterator<E>(); }
+
+	//! Returns an iterator to the last element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	const SListConstIterator<E> rbegin() const { return SListPure<E>::rbegin(); }
+
+	//! Returns an iterator to the last element of the list.
+	/**
+	 * If the list is empty, a null pointer iterator is returned.
+	 */
+	SListIterator<E> rbegin() { return SListPure<E>::rbegin(); }
+
+
+	//! Returns an iterator pointing to the element at position \a pos.
+	/**
+	 * The running time of this method is linear in \a pos.
+	 */
+	SListConstIterator<E> get(int pos) const {
+		return SListPure<E>::get(pos);
+	}
+
+	//! Returns an iterator pointing to the element at position \a pos.
+	/**
+	 * The running time of this method is linear in \a pos.
+	 */
+	SListIterator<E> get(int pos) {
+		return SListPure<E>::get(pos);
+	}
+
+	//! Returns the position (starting with 0) of \a it in the list.
+	/**
+	 * Positions are numbered 0,1,...
+	 * \pre \a it is an iterator pointing to an element in this list.
+	 */
+	int pos(SListConstIterator<E> it) const {
+		return SListPure<E>::pos(it);;
+	}
+
+
+	//! Returns a reference to the first element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	const E &front() const { return SListPure<E>::front(); }
+
+	//! Returns a reference to the first element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E &front() { return SListPure<E>::front(); }
+
+	//! Returns a reference to the last element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	const E &back() const { return SListPure<E>::back(); }
+
+	//! Returns a reference to the last element.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E &back() { return SListPure<E>::back(); }
+
+	//! Returns an iterator to the cyclic successor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	SListConstIterator<E> cyclicSucc(SListConstIterator<E> it) const {
+		return SListPure<E>::cyclicSucc(it);
+	}
+
+	//! Returns an iterator to the cyclic successor of \a it.
+	/**
+	 * \pre \a it points to an element in this list!
+	 */
+	SListIterator<E> cyclicSucc(SListIterator<E> it) {
+		return SListPure<E>::cyclicSucc(it);
+	}
+
+	//! Assignment operator.
+	SList<E> &operator=(const SList<E> &L) {
+		SListPure<E>::operator=(L);
+		m_count = L.m_count;
+		return *this;
+	}
+
+	//! Adds element \a x at the begin of the list.
+	SListIterator<E> pushFront(const E &x) {
+		++m_count;
+		return SListPure<E>::pushFront(x);
+	}
+
+	//! Adds element \a x at the end of the list.
+	SListIterator<E> pushBack(const E &x) {
+		++m_count;
+		return SListPure<E>::pushBack(x);
+	}
+
+	//! Inserts element \a x after \a pBefore.
+	/**
+	 * \pre \a pBefore points to an element in this list.
+	 */
+	SListIterator<E> insertAfter(const E &x, SListIterator<E> itBefore) {
+		++m_count;
+		return SListPure<E>::insertAfter(x, itBefore);
+	}
+
+	//! Removes the first element from the list.
+	/**
+	 * \pre The list is not empty!
+	 */
+	void popFront() {
+		--m_count;
+		SListPure<E>::popFront();
+	}
+
+	//! Removes the first element from the list and returns it.
+	/**
+	 * \pre The list is not empty!
+	 */
+	E popFrontRet() {
+		E el = front();
+		popFront();
+		return el;
+	}
+
+	//! Removes the succesor of \a pBefore.
+	/**
+	 * \pre \a pBefore points to an element in this list.
+	 */
+	void delSucc(SListIterator<E> itBefore) {
+		--m_count;
+		SListPure<E>::delSucc(itBefore);
+	}
+
+	//! Moves the first element of this list to the begin of list \a L2.
+	void moveFrontToFront(SList<E> &L2) {
+		SListPure<E>::moveFrontToFront(L2);
+		--m_count; ++L2.m_count;
+	}
+
+	//! Moves the first element of this list to the end of list \a L2.
+	void moveFrontToBack(SList<E> &L2) {
+		SListPure<E>::moveFrontToBack(L2);
+		--m_count; ++L2.m_count;
+	}
+
+	//! Moves the first element of this list to list \a L2 inserted after \a itBefore.
+	/**
+	 * \pre \a itBefore points to an element in \a L2.
+	 */
+	void moveFrontToSucc(SList<E> &L2, SListIterator<E> itBefore) {
+		SListPure<E>::moveFrontToSucc(L2,itBefore);
+		--m_count; ++L2.m_count;
+	}
+
+	//! Removes all elements from the list.
+	void clear() {
+		m_count = 0;
+		SListPure<E>::clear();
+	}
+
+	//! Appends \a L2 to this list and makes \a L2 empty.
+	void conc(SList<E> &L2) {
+		SListPure<E>::conc(L2);
+		m_count += L2.m_count;
+		L2.m_count = 0;
+	}
+
+	//! Reverses the order of the list elements.
+	void reverse() {
+		SListPure<E>::reverse();
+	}
+
+	//! Conversion to const SListPure.
+	const SListPure<E> &getListPure() const { return *this; }
+
+	//! Sorts the list using Quicksort.
+	void quicksort() {
+		ogdf::quicksortTemplate(*this);
+	}
+
+	//! Sorts the list using Quicksort and comparer \a comp.
+	template<class COMPARER>
+	void quicksort(const COMPARER &comp) {
+		ogdf::quicksortTemplate(*this,comp);
+	}
+
+	//! Sorts the list using bucket sort.
+	/**
+	 * @param l is the lowest bucket that will occur.
+	 * @param h is the highest bucket that will occur.
+	 * @param f returns the bucket for each element.
+	 * \pre The bucket function \a f will only return bucket values between \a l
+	 * and \a h for this list.
+	 */
+	void bucketSort(int l, int h, BucketFunc<E> &f) {
+		SListPure<E>::bucketSort(l,h,f);
+	}
+
+	//! Sorts the list using bucket sort.
+	void bucketSort(BucketFunc<E> &f) {
+		SListPure<E>::bucketSort(f);
+	}
+
+	//! Randomly permutes the elements in the list.
+	void permute() {
+		SListPure<E>::permute(m_count);
+	}
+
+	//! Scans the list for the specified element and returns its position in the list, or -1 if not found.
+	int search (const E& e) const {
+		return SListPure<E>::search(e);
+	}
+
+	//! Scans the list for the specified element (using the user-defined comparer) and returns its position in the list, or -1 if not found.
+	template<class COMPARER>
+	int search (const E& e, const COMPARER &comp) const {
+		return SListPure<E>::search(e, comp);
+	}
+
+	OGDF_NEW_DELETE
+}; // class SList
+
+
+
+
+// sorts list L using bucket sort
+// computes l and h value
+template<class E>
+void SListPure<E>::bucketSort(BucketFunc<E> &f)
+{
+	// if less than two elements, nothing to do
+	if (m_head == m_tail) return;
+
+	int l, h;
+	l = h = f.getBucket(m_head->m_x);
+
+	SListElement<E> *pX;
+	for(pX = m_head->m_next; pX; pX = pX->m_next)
+	{
+		int i = f.getBucket(pX->m_x);
+		if (i < l) l = i;
+		if (i > h) h = i;
+	}
+
+	bucketSort(l,h,f);
+}
+
+
+// sorts list L using bucket sort
+template<class E>
+void SListPure<E>::bucketSort(int l, int h, BucketFunc<E> &f)
+{
+	// if less than two elements, nothing to do
+	if (m_head == m_tail) return;
+
+	Array<SListElement<E> *> head(l,h,0), tail(l,h);
+
+	SListElement<E> *pX;
+	for (pX = m_head; pX; pX = pX->m_next) {
+		int i = f.getBucket(pX->m_x);
+		if (head[i])
+			tail[i] = (tail[i]->m_next = pX);
+		else
+			head[i] = tail[i] = pX;
+	}
+
+	SListElement<E> *pY = 0;
+	for (int i = l; i <= h; i++) {
+		pX = head[i];
+		if (pX) {
+			if (pY)
+				pY->m_next = pX;
+			else
+				m_head = pX;
+			pY = tail[i];
+		}
+	}
+
+	m_tail = pY;
+	pY->m_next = 0;
+}
+
+
+// permutes elements in list randomly; n is the length of the list
+template<class E>
+void SListPure<E>::permute(const int n)
+{
+	Array<SListElement<E> *> A(n+1);
+	A[n] = 0;
+
+	int i = 0;
+	SListElement<E> *pX;
+	for (pX = m_head; pX; pX = pX->m_next)
+		A[i++] = pX;
+
+	A.permute(0,n-1);
+
+	for (i = 0; i < n; i++) {
+		A[i]->m_next = A[i+1];
+	}
+
+	m_head = A[0];
+	m_tail = A[n-1];
+}
+
+// prints list to output stream os using delimiter delim
+template<class E>
+void print(ostream &os, const SListPure<E> &L, char delim = ' ')
+{
+	SListConstIterator<E> pX = L.begin();
+	if (pX.valid()) {
+		os << *pX;
+		for(++pX; pX.valid(); ++pX)
+			os << delim << *pX;
+	}
+}
+
+// prints list to output stream os using delimiter delim
+template<class E>
+void print(ostream &/*os*/, const SList<E> &L, char delim = ' ')
+{
+	print(L.getListPure(), delim);
+}
+
+// output operator
+template<class E>
+ostream &operator<<(ostream &os, const SListPure<E> &L)
+{
+	print(os,L);
+	return os;
+}
+
+template<class E>
+ostream &operator<<(ostream &os, const SList<E> &L)
+{
+	return operator<<(os,L.getListPure());
+}
+
+
+// sort array using bucket sort and bucket object f;
+// the values of f must be in the interval [min,max]
+template<class E>
+void bucketSort(Array<E> &a, int min, int max, BucketFunc<E> &f)
+{
+	if (a.low() >= a.high()) return;
+
+	Array<SListPure<E> > bucket(min,max);
+
+	int i;
+	for(i = a.low(); i <= a.high(); ++i)
+		bucket[f.getBucket(a[i])].pushBack(a[i]);
+
+	i = a.low();
+	for(int j = min; j <= max; ++j) {
+		SListConstIterator<E> it = bucket[j].begin();
+		for(; it.valid(); ++it)
+			a[i++] = *it;
+	}
+}
+
+
+
+
+} // namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/Stack.h b/ogdf/basic/Stack.h
new file mode 100644
index 0000000..c3e4170
--- /dev/null
+++ b/ogdf/basic/Stack.h
@@ -0,0 +1,252 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of list-based stacks
+ *        (StackPure<E> and Stack<E>).
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_STACK_H
+#define OGDF_STACK_H
+
+
+#include "SList.h"
+
+
+namespace ogdf {
+
+
+//! List-based stacks.
+/**
+ * In contrast to Stack<E>, instances of \a StackPure<E> do not store the
+ * number of elements contained in the stack.
+ *
+ * @tparam E is the element type.
+ */
+template<class E> class StackPure
+{
+	struct Element {
+		Element(const E &x, Element *pNext) : m_next(pNext), m_x(x) { }
+		Element *m_next;
+		E        m_x;
+		OGDF_NEW_DELETE
+	};
+
+	Element *m_head;
+
+public:
+	//! Constructs an empty stack.
+	StackPure() { m_head = 0; }
+
+	//! Constructs a stack that is a copy of \a S.
+	StackPure(const StackPure<E> &S)  {
+		m_head = 0;
+		copy(S);
+	}
+
+	// destruction
+	~StackPure() {
+		clear();
+	}
+
+	//! Returns true iff the stack is empty.
+	bool empty() const { return m_head == 0; }
+
+	//! Returns a reference to the top element.
+	const E &top() const {
+		return m_head->m_x;
+	}
+
+	//! Returns a reference to the top element.
+	E &top() {
+		return m_head->m_x;
+	}
+
+	//! Assignment operator.
+	StackPure<E> &operator=(const StackPure<E> &S) {
+		clear();
+		copy(S);
+		return *this;
+	}
+
+	//! Adds element \a x as top-most element to the stack.
+	void push(const E &x) {
+		m_head = OGDF_NEW Element(x,m_head);
+	}
+
+	//! Removes the top-most element from the stack and returns it.
+	E pop() {
+		OGDF_ASSERT(m_head != 0)
+		Element *pX = m_head;
+		m_head = m_head->m_next;
+		E x = pX->m_x;
+		delete pX;
+		return x;
+	}
+
+	//! Makes the stack empty.
+	void clear() {
+		while(m_head) {
+			Element *pX = m_head;
+			m_head = m_head->m_next;
+			delete pX;
+		}
+	}
+
+	void print(ostream &os, char delim = ' ') const
+	{
+		Element *pX = m_head;
+		if (pX != 0) {
+			os << pX->m_x;
+			for(pX = pX->m_next; pX != 0; pX = pX->m_next)
+				os << delim << pX->m_x;
+		}
+	}
+
+private:
+	void copy(const StackPure<E> &S) {
+		Element **p = &m_head;
+
+		for(Element *q = S.m_head; q != 0; q = q->m_next) {
+			*p = OGDF_NEW Element(q->m_x,0);
+			p = &(*p)->m_next;
+		}
+	}
+
+	OGDF_NEW_DELETE
+}; // class StackPure
+
+
+//! The parameterized class \a Stack<E> implements list-based stacks
+/**
+ * In contrast to StackPure<E>, instances of \a Stack<E> store the
+ * number of elements contained in the stack.
+ *
+ * @tparam E is the element type.
+ */
+template<class E> class Stack : private StackPure<E>
+{
+	int m_count; //! The number of elements in the list.
+
+public:
+	//! Constructs an empty stack.
+	Stack() { m_count = 0; }
+
+	//! Constructs a stack that is a copy of \a S.
+	Stack(const Stack<E> &S) : StackPure<E>(S) { m_count = S.m_count; }
+
+	// destruction
+	~Stack() { }
+
+	//! Returns true iff the stack is empty.
+	bool empty() const { return StackPure<E>::empty(); }
+
+	//! Returns the number of elements contained in the stack.
+	int size() const { return m_count; }
+
+	//! Returns a reference to the top element.
+	const E &top() const {
+		return StackPure<E>::top();
+	}
+
+	//! Returns a reference to the top element.
+	E &top() {
+		return StackPure<E>::top();
+	}
+
+	//! Assignment operator.
+	Stack<E> &operator=(const Stack<E> &S) {
+		StackPure<E>::operator=(S);
+		m_count = S.m_count;
+		return *this;
+	}
+
+	//! Adds element \a x as top-most element to the stack.
+	void push(const E &x) {
+		++m_count;
+		return StackPure<E>::push(x);
+	}
+
+	//! Removes the top-most element from the stack and returns it.
+	E pop() {
+		--m_count;
+		return StackPure<E>::pop();
+	}
+
+	//! Makes the stack empty.
+	void clear() {
+		StackPure<E>::clear();
+		m_count = 0;
+	}
+
+	void print(ostream &os, char delim = ' ') const {
+		StackPure<E>::print(os,delim);
+	}
+
+	OGDF_NEW_DELETE
+}; // class Stack
+
+
+
+template<class E>
+ostream &operator<<(ostream &os, const StackPure<E> &S)
+{
+	S.print(os);
+	return os;
+}
+
+
+template<class E>
+ostream &operator<<(ostream &os, const Stack<E> &S)
+{
+	S.print(os);
+	return os;
+}
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/String.cpp b/ogdf/basic/String.cpp
new file mode 100644
index 0000000..67e84ab
--- /dev/null
+++ b/ogdf/basic/String.cpp
@@ -0,0 +1,219 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class String
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+#include "String.h"
+#include "Hashing.h"
+#include <stdarg.h>
+#include <string.h>
+
+
+namespace ogdf {
+
+
+char String::s_pBuffer[OGDF_STRING_BUFFER_SIZE];
+
+
+String::String()
+{
+	m_pChar = new char[1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	m_pChar[0] = 0;
+	m_length = 0;
+}
+
+
+String::String(const char c)
+{
+	m_length = 1;
+	m_pChar = new char[2];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	m_pChar[0] = c;
+	m_pChar[1] = '\0';
+}
+
+
+String::String(const char *str)
+{
+	m_length = strlen(str);
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	ogdf::strcpy(m_pChar,m_length+1,str);
+}
+
+
+String::String(size_t maxLen, const char *str)
+{
+	m_length = maxLen;
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	ogdf::strncpy(m_pChar, m_length+1, str, m_length);
+	m_pChar[m_length] = '\0';
+}
+
+/*
+String::String(const char *format, ...)
+{
+	va_list argList;
+	va_start(argList,format);
+
+	m_length = vsprintf(s_pBuffer,format,argList);
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	strcpy(m_pChar,s_pBuffer);
+}
+*/
+
+String::String(const String &str)
+{
+	m_length = str.m_length;
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	ogdf::strcpy(m_pChar,m_length+1,str.m_pChar);
+}
+
+
+String::~String()
+{
+	delete [] m_pChar;
+}
+
+
+String &String::operator =(const String &str)
+{
+	if (&str == this) return *this;
+
+	delete [] m_pChar;
+
+	m_length = str.m_length;
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	ogdf::strcpy(m_pChar,m_length+1,str.m_pChar);
+
+	return *this;
+}
+
+
+String &String::operator =(const char *str)
+{
+	delete [] m_pChar;
+
+	m_length = strlen(str);
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	ogdf::strcpy(m_pChar,m_length+1,str);
+
+	return *this;
+}
+
+
+String &String::operator +=(const String &str)
+{
+	size_t oldLength = m_length;
+	char *pOldChar = m_pChar;
+
+	m_length += str.m_length;
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) {
+		delete [] pOldChar;
+		OGDF_THROW(InsufficientMemoryException);
+	}
+
+	ogdf::strcpy(m_pChar,m_length+1,pOldChar);
+	ogdf::strcpy(m_pChar+oldLength,m_length+1-oldLength,str.m_pChar);
+
+	delete [] pOldChar;
+
+	return *this;
+}
+
+
+void String::sprintf(const char *format, ...)
+{
+	delete [] m_pChar;
+
+	va_list argList;
+	va_start(argList,format);
+
+	m_length = ogdf::vsprintf(s_pBuffer,OGDF_STRING_BUFFER_SIZE,format,argList);
+	m_pChar = new char[m_length+1];
+	if (m_pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+	ogdf::strcpy(m_pChar,m_length+1,s_pBuffer);
+}
+
+
+int String::compare (const String &x, const String &y)
+{
+	return strcmp(x.m_pChar, y.m_pChar);
+}
+
+
+istream& operator>>(istream& is, String &str)
+{
+	is >> String::s_pBuffer;
+	str = String::s_pBuffer;
+	return is;
+}
+
+int DefHashFunc<String>::hash(const String &key) const
+{
+	int hashValue = 0;
+	const char *pChar = key.cstr();
+
+	while (*pChar)
+		hashValue += int(*pChar++);
+
+	return hashValue;
+}
+
+
+} // end namespace ogdf
diff --git a/ogdf/basic/String.h b/ogdf/basic/String.h
new file mode 100644
index 0000000..ada0753
--- /dev/null
+++ b/ogdf/basic/String.h
@@ -0,0 +1,232 @@
+/*
+ * $Revision: 2619 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 16:05:39 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class String.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_STRING_H
+#define OGDF_STRING_H
+
+
+#include "basic.h"
+#include "Hashing.h"
+
+
+#define OGDF_STRING_BUFFER_SIZE 1024
+
+
+namespace ogdf {
+
+
+//! Representation of character strings.
+/**
+ * Strings are internally stored as an Ascii character array. The positions
+ * within a string a numbered 0,1,...
+ */
+class OGDF_EXPORT String {
+
+	char  *m_pChar; //!< Pointer to characters.
+	size_t m_length;  //!< The length of the string (number of characters).
+
+	static char s_pBuffer[OGDF_STRING_BUFFER_SIZE]; //!< Temporary buffer used by sprintf().
+
+public:
+	//! Constructs an empty string, i.e., a string with length 0.
+	String();
+	//! Constructs a string consisting of a single character \a c.
+	String(const char c);
+	//! Constructs a string that is a copy of \a str.
+	String(const char *str);
+	//String(const char *format, ...);
+	//! Constructs a string consisting of the first \a maxLen characters of \a str.
+	/**
+	 * @param maxLen is the number of characters to be copied from the begin of \a str.
+	 *        If \a str is shorter than \a maxLen, then the complete string is copied.
+	 * @param str is the string to be copied.
+	 */
+	String(size_t maxLen, const char *str);
+	//! Constructs a string that is a copy of \a str.
+	String(const String &str);
+
+	~String();
+
+	//! Cast a string into a 0-terminated C++ string.
+	//operator const char *() const { return m_pChar; }
+	const char *cstr() const { return m_pChar; }
+
+	//! Returns the length of the string.
+	size_t length() const { return m_length; }
+
+	//! Returns a reference to the character at position \a i.
+	char &operator[](size_t i) {
+		OGDF_ASSERT(i < m_length)
+		return m_pChar[i];
+	}
+
+	//! Returns a reference to the character at position \a i.
+	const char &operator[](size_t i) const {
+		OGDF_ASSERT(i < m_length)
+		return m_pChar[i];
+	}
+
+	//! Equality operator.
+	friend bool operator==(const String &x, const String &y) {
+		return (compare(x,y) == 0);
+	}
+	//! Equality operator.
+	friend bool operator==(const char *x, const String &y) {
+		return (compare(x,y) == 0);
+	}
+	//! Equality operator.
+	friend bool operator==(const String &x, const char *y) {
+		return (compare(x,y) == 0);
+	}
+
+	//! Inequality operator.
+	friend bool operator!=(const String &x, const String &y) {
+		return (compare(x,y) != 0);
+	}
+	//! Inequality operator.
+	friend bool operator!=(const char *x, const String &y) {
+		return (compare(x,y) != 0);
+	}
+	//! Inequality operator.
+	friend bool operator!=(const String &x, const char *y) {
+		return (compare(x,y) != 0);
+	}
+
+	//! Less than operator.
+	friend bool operator<(const String &x, const String &y) {
+		return (compare(x,y) < 0);
+	}
+	//! Less than operator.
+	friend bool operator<(const char *x, const String &y) {
+		return (compare(x,y) < 0);
+	}
+	//! Less than operator.
+	friend bool operator<(const String &x, const char *y) {
+		return (compare(x,y) < 0);
+	}
+
+	//! Less or equal than operator.
+	friend bool operator<=(const String &x, const String &y) {
+		return (compare(x,y) <= 0);
+	}
+	//! Less or equal than operator.
+	friend bool operator<=(const char *x, const String &y) {
+		return (compare(x,y) <= 0);
+	}
+	//! Less or equal than operator.
+	friend bool operator<=(const String &x, const char *y) {
+		return (compare(x,y) <= 0);
+	}
+
+	//! Greater than operator.
+	friend bool operator>(const String &x, const String &y) {
+		return (compare(x,y) > 0);
+	}
+	//! Greater than operator.
+	friend bool operator>(const char *x, const String &y) {
+		return (compare(x,y) > 0);
+	}
+	//! Greater than operator.
+	friend bool operator>(const String &x, const char *y) {
+		return (compare(x,y) > 0);
+	}
+
+	//! Greater or equal than operator.
+	friend bool operator>=(const String &x, const String &y) {
+		return (compare(x,y) >= 0);
+	}
+	//! Greater or equal than operator.
+	friend bool operator>=(const char *x, const String &y) {
+		return (compare(x,y) >= 0);
+	}
+	//! Greater or equal than operator.
+	friend bool operator>=(const String &x, const char *y) {
+		return (compare(x,y) >= 0);
+	}
+
+	//! Assignment operator.
+	String &operator=(const String &str);
+	//! Assignment operator.
+	String &operator=(const char *str);
+
+	//! Appends string \a str to this string.
+	String &operator+=(const String &str);
+
+	//! Formatted assignment operator.
+	/**
+	 * Behaves essentially like the C function \c printf().
+	 */
+	void sprintf(const char *format, ...);
+
+	//! Compare function for strings.
+	static int compare (const String &x, const String &y);
+
+	//! Input operator.
+	friend istream& operator>>(istream& is, String &str);
+
+	OGDF_NEW_DELETE
+};
+
+//! Output operator for strings.
+inline ostream &operator<<(ostream &os, const String &str) {
+	os << str.cstr();
+	return os;
+}
+
+template<> class DefHashFunc<String> {
+public:
+	int hash(const String &key) const;
+};
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/System.cpp b/ogdf/basic/System.cpp
new file mode 100644
index 0000000..2c8891a
--- /dev/null
+++ b/ogdf/basic/System.cpp
@@ -0,0 +1,444 @@
+/*
+ * $Revision: 2633 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-18 09:09:28 +0200 (Mi, 18. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of System class.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "basic.h"
+
+#ifdef __APPLE__
+#include <stdlib.h>
+#include <malloc/malloc.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <sys/utsname.h>
+#include <mach/vm_statistics.h>
+#include <mach/mach.h>
+#include <mach/machine.h>
+#elif defined(OGDF_SYSTEM_UNIX)
+#include <malloc.h>
+#endif
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+#include <Psapi.h>
+#endif
+
+#ifdef _MSC_VER
+#include <intrin.h>
+
+#elif defined(OGDF_SYSTEM_UNIX) || (defined(__MINGW32__) && !defined(__MINGW64__))
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/time.h>
+
+static void __cpuid(int CPUInfo[4], int infoType)
+{
+	uint32_t a = CPUInfo[0];
+	uint32_t b = CPUInfo[1];
+	uint32_t c = CPUInfo[2];
+	uint32_t d = CPUInfo[3];
+
+#if defined(__i386__) || defined(__x86_64__) && !defined(__APPLE__)
+	__asm__ __volatile__ ("xchgl	%%ebx,%0\n\t"
+						"cpuid	\n\t"
+						"xchgl	%%ebx,%0\n\t"
+						: "+r" (b), "=a" (a), "=c" (c), "=d" (d)
+						: "1" (infoType), "2" (c));
+#else
+	// not supported on other systems!
+	a = b = c = d = 0;
+    infoType = 0;
+#endif
+
+	CPUInfo[0] = a;
+	CPUInfo[1] = b;
+	CPUInfo[2] = c;
+	CPUInfo[3] = d;
+}
+#endif
+
+
+namespace ogdf {
+
+unsigned int System::s_cpuFeatures;
+int          System::s_cacheSize;
+int          System::s_cacheLine;
+int          System::s_pageSize;
+int          System::s_numberOfProcessors;
+
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+LARGE_INTEGER System::s_HPCounterFrequency;
+#endif
+
+
+void System::init()
+{
+	s_cpuFeatures = 0;
+	s_cacheSize   = 0;
+	s_cacheLine   = 0;
+
+	// currently not working for shared libs on Linux
+#if !defined(OGDF_DLL) || !defined(OGDF_SYSTEM_UNIX)
+
+	int CPUInfo[4] = {-1};
+	__cpuid(CPUInfo, 0);
+
+	unsigned int nIds = CPUInfo[0];
+	if(nIds >= 1)
+	{
+		__cpuid(CPUInfo, 1);
+
+		int featureInfoECX = CPUInfo[2];
+		int featureInfoEDX = CPUInfo[3];
+
+		if(featureInfoEDX & (1 << 23)) s_cpuFeatures |= cpufmMMX;
+		if(featureInfoEDX & (1 << 25)) s_cpuFeatures |= cpufmSSE;
+		if(featureInfoEDX & (1 << 26)) s_cpuFeatures |= cpufmSSE2;
+		if(featureInfoECX & (1 <<  0)) s_cpuFeatures |= cpufmSSE3;
+		if(featureInfoECX & (1 <<  9)) s_cpuFeatures |= cpufmSSSE3;
+		if(featureInfoECX & (1 << 19)) s_cpuFeatures |= cpufmSSE4_1;
+		if(featureInfoECX & (1 << 20)) s_cpuFeatures |= cpufmSSE4_2;
+		if(featureInfoECX & (1 <<  5)) s_cpuFeatures |= cpufmVMX;
+		if(featureInfoECX & (1 <<  6)) s_cpuFeatures |= cpufmSMX;
+		if(featureInfoECX & (1 <<  7)) s_cpuFeatures |= cpufmEST;
+		if(featureInfoECX & (1 <<  3)) s_cpuFeatures |= cpufmMONITOR;
+	}
+
+	__cpuid(CPUInfo, 0x80000000);
+	unsigned int nExIds = CPUInfo[0];
+
+	if(nExIds >= 0x80000006) {
+		__cpuid(CPUInfo, 0x80000006);
+		s_cacheLine = CPUInfo[2] & 0xff;
+		s_cacheSize = (CPUInfo[2] >> 16) & 0xffff;
+	}
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+	QueryPerformanceFrequency(&s_HPCounterFrequency);
+
+	SYSTEM_INFO siSysInfo;
+	GetSystemInfo(&siSysInfo);
+	s_pageSize = siSysInfo.dwPageSize;
+	s_numberOfProcessors = siSysInfo.dwNumberOfProcessors;
+
+#elif defined(OGDF_SYSTEM_UNIX) && defined(__APPLE__)
+	unsigned long long value;
+	size_t  size = sizeof( value );
+		if (sysctlbyname("hw.pagesize", &value, &size, NULL, 0) !=-1)
+		s_pageSize = (int)value;
+	else
+		s_pageSize = 0;
+
+	if (sysctlbyname("hw.ncpu", &value, &size, NULL, 0) !=-1)
+		s_numberOfProcessors = (int)value;
+	else
+		s_numberOfProcessors = 1;
+
+#elif defined(OGDF_SYSTEM_UNIX)
+	s_pageSize = sysconf(_SC_PAGESIZE);
+	s_numberOfProcessors = (int)sysconf(_SC_NPROCESSORS_CONF);
+
+#else
+	s_pageSize = 0; // just a placeholder!!!
+	s_numberOfProcessors = 1; // just a placeholder!!!
+#endif
+
+#endif
+}
+
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+void System::getHPCounter(LARGE_INTEGER &counter)
+{
+	QueryPerformanceCounter(&counter);
+}
+
+
+double System::elapsedSeconds(
+	const LARGE_INTEGER &startCounter,
+	const LARGE_INTEGER &endCounter)
+{
+	return double(endCounter.QuadPart - startCounter.QuadPart)
+					/ s_HPCounterFrequency.QuadPart;
+}
+
+
+__int64 System::usedRealTime(__int64 &t)
+{
+	__int64 tStart = t;
+	t = GetTickCount();
+	return t - tStart;
+}
+
+
+long long System::physicalMemory()
+{
+#if !defined(__CYGWIN__) || (_WIN32_WINNT >= 0x0500)
+	MEMORYSTATUSEX statex;
+	statex.dwLength = sizeof (statex);
+
+	GlobalMemoryStatusEx (&statex);
+	return statex.ullTotalPhys;
+#else
+	MEMORYSTATUS stat;
+	stat.dwLength = sizeof (stat);
+
+	GlobalMemoryStatus (&stat);
+	return stat.dwTotalPhys;
+#endif
+}
+
+long long System::availablePhysicalMemory()
+{
+#if !defined(__CYGWIN__) || (_WIN32_WINNT >= 0x0500)
+	MEMORYSTATUSEX statex;
+	statex.dwLength = sizeof (statex);
+
+	GlobalMemoryStatusEx (&statex);
+	return statex.ullAvailPhys;
+#else
+	MEMORYSTATUS stat;
+	stat.dwLength = sizeof (stat);
+
+	GlobalMemoryStatus (&stat);
+	return stat.dwAvailPhys;
+#endif
+}
+
+size_t System::memoryUsedByProcess()
+{
+	PROCESS_MEMORY_COUNTERS pmc;
+	GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
+
+	return pmc.WorkingSetSize;
+}
+
+size_t System::peakMemoryUsedByProcess()
+{
+	PROCESS_MEMORY_COUNTERS pmc;
+	GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
+
+	return pmc.PeakWorkingSetSize;
+}
+
+#elif __APPLE__
+
+long long System::physicalMemory()
+{
+	unsigned long long value;
+	size_t  size = sizeof( value );
+	if (sysctlbyname("hw.memsize", &value, &size, NULL, 0) !=-1)
+		return value;
+	else
+		return 0;
+}
+
+long long System::availablePhysicalMemory()
+{
+	unsigned long long pageSize;
+	long long result;
+	size_t  size = sizeof( pageSize );
+	sysctlbyname("hw.pagesize", &pageSize, &size, NULL, 0);
+
+	vm_statistics_data_t vm_stat;
+	int count = ((mach_msg_type_number_t) (sizeof(vm_statistics_data_t)/sizeof(integer_t)));
+	host_statistics(mach_host_self(), HOST_VM_INFO, (integer_t*)&vm_stat, (mach_msg_type_number_t*)&count);
+	result = (unsigned long long)(vm_stat.free_count + vm_stat.inactive_count) * pageSize;
+	return result;
+}
+
+
+size_t System::memoryUsedByProcess()
+{
+	/*int pid = getpid();
+	static char filename[32];
+	sprintf(filename, 32, "/proc/%d/statm", pid);
+
+	int fd = open(filename, O_RDONLY, 0);
+	if(fd==-1) OGDF_THROW(Exception);
+
+	static char sbuf[256];
+	sbuf[read(fd, sbuf, sizeof(sbuf) - 1)] = 0;
+	close(fd);
+
+	long size, resident, share, trs, lrs, drs, dt;
+	sscanf(sbuf, "%ld %ld %ld %ld %ld %ld %ld",
+		&size,      // total program size (in pages)
+		&resident,  // number of resident set (non-swapped) pages (4k)
+		&share,     // number of pages of shared (mmap'd) memory
+		&trs,       // text resident set size
+		&lrs,       // shared-lib resident set size
+		&drs,       // data resident set size
+		&dt);       // dirty pages
+
+	return resident*4*1024;*/
+	return 0;
+}
+
+#else
+// LINUX, NOT MAC OS
+long long System::physicalMemory()
+{
+	return (long long)(sysconf(_SC_PHYS_PAGES)) * sysconf(_SC_PAGESIZE);
+}
+
+long long System::availablePhysicalMemory()
+{
+	return (long long)(sysconf(_SC_AVPHYS_PAGES)) * sysconf(_SC_PAGESIZE);
+}
+
+size_t System::memoryUsedByProcess()
+{
+	int pid = getpid();
+	static char filename[32];
+	sprintf(filename, 32, "/proc/%d/statm", pid);
+
+	int fd = open(filename, O_RDONLY, 0);
+	if(fd==-1) OGDF_THROW(Exception);
+
+	static char sbuf[256];
+	sbuf[read(fd, sbuf, sizeof(sbuf) - 1)] = 0;
+	close(fd);
+
+	long size, resident, share, trs, lrs, drs, dt;
+	sscanf(sbuf, "%ld %ld %ld %ld %ld %ld %ld",
+		&size,      // total program size (in pages)
+		&resident,  // number of resident set (non-swapped) pages (4k)
+		&share,     // number of pages of shared (mmap'd) memory
+		&trs,       // text resident set size
+		&lrs,       // shared-lib resident set size
+		&drs,       // data resident set size
+		&dt);       // dirty pages
+
+	return resident*4*1024;
+}
+
+#endif
+
+
+#ifdef OGDF_SYSTEM_WINDOWS
+
+size_t System::memoryAllocatedByMalloc()
+{
+	_HEAPINFO hinfo;
+	int heapstatus;
+	hinfo._pentry = NULL;
+
+	size_t allocMem = 0;
+	while((heapstatus = _heapwalk(&hinfo)) == _HEAPOK)
+	{
+		if(hinfo._useflag == _USEDENTRY)
+			allocMem += hinfo._size;
+	}
+
+	return allocMem;
+}
+
+size_t System::memoryInFreelistOfMalloc()
+{
+	_HEAPINFO hinfo;
+	int heapstatus;
+	hinfo._pentry = NULL;
+
+	size_t allocMem = 0;
+	while((heapstatus = _heapwalk(&hinfo)) == _HEAPOK)
+	{
+		if(hinfo._useflag == _FREEENTRY)
+			allocMem += hinfo._size;
+	}
+
+	return allocMem;
+}
+
+#elif __APPLE__
+
+size_t System::memoryAllocatedByMalloc()
+{
+	return mstats().chunks_used;
+}
+
+size_t System::memoryInFreelistOfMalloc()
+{
+	return mstats().chunks_free;
+}
+#else
+
+size_t System::memoryAllocatedByMalloc()
+{
+	return mallinfo().uordblks;
+}
+
+size_t System::memoryInFreelistOfMalloc()
+{
+	return mallinfo().fordblks;
+}
+
+#endif
+
+#if !defined(OGDF_SYSTEM_WINDOWS) && !defined(__CYGWIN__)
+__int64 System::usedRealTime(__int64 &t)
+{
+	__int64 tStart = t;
+	timeval tv;
+	gettimeofday(&tv, 0);
+	t = __int64(tv.tv_sec) * 1000 + tv.tv_usec/1000;
+	return t - tStart;
+}
+#endif
+
+
+size_t System::memoryAllocatedByMemoryManager()
+{
+	return PoolMemoryAllocator::memoryAllocatedInBlocks();
+}
+
+size_t System::memoryInGlobalFreeListOfMemoryManager()
+{
+	return PoolMemoryAllocator::memoryInGlobalFreeList();
+}
+
+size_t System::memoryInThreadFreeListOfMemoryManager()
+{
+	return PoolMemoryAllocator::memoryInThreadFreeList();
+}
+
+
+} // namespace ogdf
diff --git a/ogdf/basic/System.h b/ogdf/basic/System.h
new file mode 100644
index 0000000..696bed7
--- /dev/null
+++ b/ogdf/basic/System.h
@@ -0,0 +1,328 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Decalration of System class which provides unified
+ *        access to system information.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_SYSTEM_H
+#define OGDF_SYSTEM_H
+
+
+#include "basic.h"
+#if defined(OGDF_SYSTEM_OSX)
+#include <stdlib.h>
+#elif defined(OGDF_SYSTEM_UNIX) || defined(__MINGW32__)
+#include <malloc.h>
+#endif
+
+// detect processor architecture we're compiling for
+//
+// OGDF_ARCH_X86       Intel / AMD x86 32-bit processors
+// OGDF_ARCH_X64       Intel / AMD x86 64-bit processors
+// OGDF_ARCH_IA64      Intel Itanium
+// OGDF_ARCH_PPC       PowerPC
+// OGDF_ARCH_SPARC     SUN SPARC
+// OGDF_ARCH_SPARC_V9  SUN SPARC V9
+
+#if defined(_M_X64) || defined(__x86_64__)
+#define OGDF_ARCH_X64
+#elif defined(_M_IX86) || defined(__i386__)
+#define OGDF_ARCH_X86
+#elif defined(_M_IA64) || defined(__ia64__)
+#define OGDF_ARCH_IA64
+#elif defined(_M_MPPC) || defined(_M_PPC) || defined(__powerpc__)
+#define OGDF_ARCH_PPC
+#elif defined(__sparc__)
+#define OGDF_ARCH_SPARC
+#elif defined(__sparc_v9__)
+#define OGDF_ARCH_SPARC_V9
+#endif
+
+// use SSE2 always if x64-platform or compiler option is set
+#ifndef OGDF_USE_SSE2
+#if defined(OGDF_ARCH_X64)
+#define OGDF_USE_SSE2
+#elif defined(_MSC_VER)
+#if _M_IX86_FP >= 2
+#define OGDF_USE_SSE2
+#endif
+#endif
+#endif
+
+// macros to check for using special cpu features
+//
+// OGDF_CHECK_SSE2   returns true if SSE2 can be used
+
+#ifdef OGDF_USE_SSE2
+#define OGDF_CHECK_SSE2 true
+#elif defined(OGDF_ARCH_X86)
+#define OGDF_CHECK_SSE2 ogdf::System::cpuSupports(ogdf::cpufSSE2)
+#else
+#define OGDF_USE_SSE2 false
+#endif
+
+// work-around for MinGW-w64
+#ifdef __MINGW64__
+#ifndef _aligned_free
+#define _aligned_free(a) __mingw_aligned_free(a)
+#endif
+#ifndef _aligned_malloc
+#define _aligned_malloc(a,b) __mingw_aligned_malloc(a,b)
+#endif
+#endif
+
+
+namespace ogdf {
+
+//! Special features supported by a x86/x64 CPU.
+/**
+ * This enumeration is used to specify spcial additional features that
+ * are supported by the CPU, in particular extended instruction sets
+ * such as SSE.
+ */
+enum CPUFeature {
+	cpufMMX,    //!< Intel MMX Technology
+	cpufSSE,    //!< Streaming SIMD Extensions (SSE)
+	cpufSSE2,   //!< Streaming SIMD Extensions 2 (SSE2)
+	cpufSSE3,   //!< Streaming SIMD Extensions 3 (SSE3)
+	cpufSSSE3,  //!< Supplemental Streaming SIMD Extensions 3 (SSSE3)
+	cpufSSE4_1, //!< Streaming SIMD Extensions 4.1 (SSE4.1)
+	cpufSSE4_2, //!< Streaming SIMD Extensions 4.2 (SSE4.2)
+	cpufVMX,    //!< Virtual Machine Extensions
+	cpufSMX,    //!< Safer Mode Extensions
+	cpufEST,    //!< Enhanced Intel SpeedStep Technology
+	cpufMONITOR //!< Processor supports MONITOR/MWAIT instructions
+};
+
+//! Bit mask for CPU features.
+enum CPUFeatureMask {
+	cpufmMMX     = 1 << cpufMMX,    //!< Intel MMX Technology
+	cpufmSSE     = 1 << cpufSSE,    //!< Streaming SIMD Extensions (SSE)
+	cpufmSSE2    = 1 << cpufSSE2,   //!< Streaming SIMD Extensions 2 (SSE2)
+	cpufmSSE3    = 1 << cpufSSE3,   //!< Streaming SIMD Extensions 3 (SSE3)
+	cpufmSSSE3   = 1 << cpufSSSE3,  //!< Supplemental Streaming SIMD Extensions 3 (SSSE3)
+	cpufmSSE4_1  = 1 << cpufSSE4_1, //!< Streaming SIMD Extensions 4.1 (SSE4.1)
+	cpufmSSE4_2  = 1 << cpufSSE4_2, //!< Streaming SIMD Extensions 4.2 (SSE4.2)
+	cpufmVMX     = 1 << cpufVMX,    //!< Virtual Machine Extensions
+	cpufmSMX     = 1 << cpufSMX,    //!< Safer Mode Extensions
+	cpufmEST     = 1 << cpufEST,    //!< Enhanced Intel SpeedStep Technology
+	cpufmMONITOR = 1 << cpufMONITOR //!< Processor supports MONITOR/MWAIT instructions
+};
+
+
+//! %System specific functionality.
+/**
+ * The class System encapsulates system specific functions
+ * providing unified access across different operating systems.
+ * The provided functionality includes:
+ *   - Access to file system functionality (listing directories etc.).
+ *   - Query memory usage.
+ *   - Access to high-perfomance counter under Windows and Cygwin.
+ *   - Query CPU specific information.
+ */
+class OGDF_EXPORT System {
+
+	//friend class ::OgdfInitialization;
+
+public:
+	/**
+	 * @name Memory usage
+	 * These methods allow to query the amount of physical memory, as well as the
+	 * current memory usage by both the process and OGDF's internal memory manager.
+	 */
+	//@{
+
+    static void *alignedMemoryAlloc16(size_t size) {
+#ifdef OGDF_SYSTEM_WINDOWS
+        size_t alignment = 16;
+		return _aligned_malloc(size,alignment);
+#elif defined(OGDF_SYSTEM_OSX)
+		// malloc returns 16 byte aligned memory on OS X.
+		return malloc(size);
+#else
+        size_t alignment = 16;
+		return memalign(alignment,size);
+#endif
+	}
+
+	static void alignedMemoryFree(void *p) {
+#ifdef OGDF_SYSTEM_WINDOWS
+		_aligned_free(p);
+#else
+		free(p);
+#endif
+	}
+
+	//! Returns the page size of virtual memory (in bytes).
+	static int pageSize() { return s_pageSize; }
+
+	//! Returns the total size of physical memory (in bytes).
+	static long long physicalMemory();
+
+	//! Returns the size of available (free) physical memory (in bytes).
+	static long long availablePhysicalMemory();
+
+	//! Returns the amount of memory (in bytes) allocated by the process.
+	static size_t memoryUsedByProcess();
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+	//! Returns the maximal amount of memory (in bytes) used by the process (Windows/Cygwin only).
+	static size_t peakMemoryUsedByProcess();
+#endif
+
+	//! Returns the amount of memory (in bytes) allocated by OGDF's memory manager.
+	/**
+	 * The memory manager allocates blocks of a fixed size from the system (via malloc())
+	 * and makes it available in its free lists (for allocating small pieces of memory.
+	 * The returned value is the total amount of memory allocated from the system;
+	 * the amount of memory currently allocated from the user is
+	 * memoryAllocatedByMemoryManager() - memoryInFreelistOfMemoryManager().
+	 *
+	 * Keep in mind that the memory manager never releases memory to the system before
+	 * its destruction.
+	 */
+	static size_t memoryAllocatedByMemoryManager();
+
+	//! Returns the amount of memory (in bytes) contained in the global free list of OGDF's memory manager.
+	static size_t memoryInGlobalFreeListOfMemoryManager();
+
+	//! Returns the amount of memory (in bytes) contained in the thread's free list of OGDF's memory manager.
+	static size_t memoryInThreadFreeListOfMemoryManager();
+
+	//! Returns the amount of memory (in bytes) allocated on the heap (e.g., with malloc).
+	/**
+	 * This refers to dynamically allocated memory, e.g., memory allocated with malloc()
+	 * or new.
+	 */
+	static size_t memoryAllocatedByMalloc();
+
+	//! Returns the amount of memory (in bytes) contained in free chunks on the heap.
+	/**
+	 * This refers to memory that has been deallocated with free() or delete, but has not
+	 * yet been returned to the operating system.
+	 */
+	static size_t memoryInFreelistOfMalloc();
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+	//@}
+	/**
+	 * @name Measuring time
+	 * These methods provide various ways to measure time. The high-performance
+	 * counter (Windows and Cygwin only) can be used to measure real time
+	 * periods with a better resolution than the standard system time function.
+	 */
+	//@{
+
+	//! Returns the current value of the high-performance counter in \a counter.
+	static void getHPCounter(LARGE_INTEGER &counter);
+
+	//! Returns the elapsed time (in seconds) between \a startCounter and \a endCounter.
+	static double elapsedSeconds(
+		const LARGE_INTEGER &startCounter,
+		const LARGE_INTEGER &endCounter);
+#endif
+
+	//! Returns the elapsed time (in milliseconds) between \a t and now.
+	/**
+	 * The functions sets \a t to to the current time. Usually, you first call
+	 * usedRealTime(t) to query the start time \a t, and determine the elapsed time
+	 * after performing some computation by calling usedRealTime(t) again; this time
+	 * the return value gives you the elapsed time in milliseconds.
+	 */
+	static __int64 usedRealTime(__int64 &t);
+
+
+	//@}
+	/**
+	 * @name Processor information
+	 * These methods allow to query information about the current processor such as
+	 * supported instruction sets (e.g., SSE extensions), cache size, and number of
+	 * installed processors.
+	 */
+	//@{
+
+	//! Returns the bit vector describing the CPU features supported on current system.
+	static int cpuFeatures() { return s_cpuFeatures; }
+
+	//! Returns true if the CPU supports \a feature.
+	static bool cpuSupports(CPUFeature feature) {
+		return (s_cpuFeatures & (1 << feature)) != 0;
+	}
+
+	//! Returns the L2-cache size (in KBytes).
+	static int cacheSizeKBytes() { return s_cacheSize; }
+
+	//! Returns the number of bytes in a cache line.
+	static int cacheLineBytes() { return s_cacheLine; }
+
+	//! Returns the number of processors (cores) available on the current system.
+	static int numberOfProcessors() { return s_numberOfProcessors; }
+
+	//@}
+
+private:
+	static unsigned int s_cpuFeatures; //!< Supported CPU features.
+	static int          s_cacheSize;   //!< Cache size in KBytes.
+	static int          s_cacheLine;   //!< Bytes in a cache line.
+	static int          s_numberOfProcessors; //!< Number of processors (cores) available.
+	static int          s_pageSize;    //!< The page size of virtual memory.
+
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+	static LARGE_INTEGER s_HPCounterFrequency; //!< Frequency of high-performance counter.
+#endif
+
+public:
+	//! Static initilization routine (automatically called).
+	static void init();
+};
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/basic.cpp b/ogdf/basic/basic.cpp
new file mode 100644
index 0000000..8838493
--- /dev/null
+++ b/ogdf/basic/basic.cpp
@@ -0,0 +1,357 @@
+/*
+ * $Revision: 2626 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-17 12:10:52 +0200 (Di, 17. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of basic functionality (incl. file and
+ * directory handling)
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "basic.h"
+#include "List.h"
+#include "String.h"
+#include <time.h>
+
+// Windows includes
+#ifdef OGDF_SYSTEM_WINDOWS
+#include <direct.h>
+#if defined(_MSC_VER) && defined(UNICODE)
+#undef GetFileAttributes
+#undef FindFirstFile
+#undef FindNextFile
+#define GetFileAttributes  GetFileAttributesA
+#define FindFirstFile  FindFirstFileA
+#define WIN32_FIND_DATA WIN32_FIND_DATAA
+#define FindNextFile  FindNextFileA
+#endif
+#endif
+
+#ifdef __BORLANDC__
+#define _chdir chdir
+#endif
+
+// Unix includes
+#ifdef OGDF_SYSTEM_UNIX
+#include <unistd.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <sys/times.h>
+#include <sys/stat.h>
+#include <fnmatch.h>
+
+double OGDF_clk_tck = sysconf(_SC_CLK_TCK); //is long. but definig it here avoids casts...
+#endif
+
+
+#ifdef OGDF_DLL
+
+#ifdef OGDF_SYSTEM_WINDOWS
+
+#ifdef __MINGW32__
+extern "C"
+#endif
+BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
+{
+	switch (ul_reason_for_call)
+	{
+	case DLL_PROCESS_ATTACH:
+		ogdf::PoolMemoryAllocator::init();
+		ogdf::System::init();
+		break;
+
+	case DLL_THREAD_ATTACH:
+	case DLL_THREAD_DETACH:
+		break;
+
+	case DLL_PROCESS_DETACH:
+		ogdf::PoolMemoryAllocator::cleanup();
+		break;
+	}
+	return TRUE;
+}
+
+#else
+
+void __attribute__ ((constructor)) my_load(void)
+{
+	ogdf::PoolMemoryAllocator::init();
+	ogdf::System::init();
+}
+
+void __attribute__ ((destructor)) my_unload(void)
+{
+	ogdf::PoolMemoryAllocator::cleanup();
+}
+
+#endif
+
+#else
+
+namespace ogdf {
+
+//static int variables are automatically initialized with 0
+int Initialization::s_count;
+
+Initialization::Initialization()
+{
+	if (s_count++ == 0) {
+		ogdf::PoolMemoryAllocator::init();
+		ogdf::System::init();
+	}
+}
+
+Initialization::~Initialization()
+{
+	if (--s_count == 0) {
+		ogdf::PoolMemoryAllocator::cleanup();
+	}
+}
+
+} // namespace ogdf
+
+#endif
+
+
+namespace ogdf {
+
+	// debug level (in debug build only)
+#ifdef OGDF_DEBUG
+	DebugLevel debugLevel;
+#endif
+
+
+double usedTime(double& T)
+{
+	double t = T;
+#ifdef OGDF_SYSTEM_WINDOWS
+	T = double(clock())/CLOCKS_PER_SEC;
+#endif
+#ifdef OGDF_SYSTEM_UNIX
+	struct tms now;
+	times (&now);
+	T = now.tms_utime/OGDF_clk_tck;
+#endif
+	return  T-t;
+}
+
+
+#ifdef OGDF_SYSTEM_WINDOWS
+
+bool isFile(const char *fileName)
+{
+	DWORD att = GetFileAttributes(fileName);
+
+	if (att == 0xffffffff) return false;
+	return (att & FILE_ATTRIBUTE_DIRECTORY) == 0;
+}
+
+
+bool isDirectory(const char *fileName)
+{
+	DWORD att = GetFileAttributes(fileName);
+
+	if (att == 0xffffffff) return false;
+	return (att & FILE_ATTRIBUTE_DIRECTORY) != 0;
+}
+
+
+bool changeDir(const char *dirName)
+{
+	return (_chdir(dirName) == 0);
+}
+
+
+void getEntriesAppend(const char *dirName,
+		FileType t,
+		List<String> &entries,
+		const char *pattern)
+{
+	OGDF_ASSERT(isDirectory(dirName));
+
+	String filePattern;
+	filePattern.sprintf("%s\\%s", dirName, pattern);
+
+	WIN32_FIND_DATA findData;
+	HANDLE handle = FindFirstFile(filePattern.cstr(), &findData);
+
+	if (handle != INVALID_HANDLE_VALUE)
+	{
+		do {
+			DWORD isDir = (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
+			if(isDir && (
+				strcmp(findData.cFileName,".") == 0 ||
+				strcmp(findData.cFileName,"..") == 0)
+			)
+				continue;
+
+			if (t == ftEntry || (t == ftFile && !isDir) ||
+				(t == ftDirectory && isDir))
+			{
+				entries.pushBack(findData.cFileName);
+			}
+		} while(FindNextFile(handle, &findData));
+
+		FindClose(handle);
+	}
+}
+#endif
+
+#ifdef OGDF_SYSTEM_UNIX
+
+bool isDirectory(const char *fname)
+{
+	struct stat stat_buf;
+
+	if (stat(fname,&stat_buf) != 0)
+		return false;
+	return (stat_buf.st_mode & S_IFMT) == S_IFDIR;
+}
+
+bool isFile(const char *fname)
+{
+	struct stat stat_buf;
+
+	if (stat(fname,&stat_buf) != 0)
+		return false;
+	return (stat_buf.st_mode & S_IFMT) == S_IFREG;
+}
+
+bool changeDir(const char *dirName)
+{
+	return (chdir(dirName) == 0);
+}
+
+void getEntriesAppend(const char *dirName,
+	FileType t,
+	List<String> &entries,
+	const char *pattern)
+{
+	OGDF_ASSERT(isDirectory(dirName));
+
+ 	DIR* dir_p = opendir(dirName);
+
+	dirent* dir_e;
+	while ( (dir_e = readdir(dir_p)) != NULL )
+	{
+		const char *fname = dir_e->d_name;
+		if (pattern != 0 && fnmatch(pattern,fname,0)) continue;
+
+		String fullName;
+		fullName.sprintf("%s/%s", dirName, fname);
+
+		bool isDir = isDirectory(fullName.cstr());
+		if(isDir && (
+			strcmp(fname,".") == 0 ||
+			strcmp(fname,"..") == 0)
+			)
+			continue;
+
+		if (t == ftEntry || (t == ftFile && !isDir) ||
+			(t == ftDirectory && isDir))
+		{
+			entries.pushBack(fname);
+		}
+	}
+
+ 	closedir(dir_p);
+}
+#endif
+
+
+void getEntries(const char *dirName,
+		FileType t,
+		List<String> &entries,
+		const char *pattern)
+{
+	entries.clear();
+	getEntriesAppend(dirName, t, entries, pattern);
+}
+
+
+void getFiles(const char *dirName,
+	List<String> &files,
+	const char *pattern)
+{
+	getEntries(dirName, ftFile, files, pattern);
+}
+
+
+void getSubdirs(const char *dirName,
+	List<String> &subdirs,
+	const char *pattern)
+{
+	getEntries(dirName, ftDirectory, subdirs, pattern);
+}
+
+
+void getEntries(const char *dirName,
+	List<String> &entries,
+	const char *pattern)
+{
+	getEntries(dirName, ftEntry, entries, pattern);
+}
+
+
+void getFilesAppend(const char *dirName,
+	List<String> &files,
+	const char *pattern)
+{
+	getEntriesAppend(dirName, ftFile, files, pattern);
+}
+
+
+void getSubdirsAppend(const char *dirName,
+	List<String> &subdirs,
+	const char *pattern)
+{
+	getEntriesAppend(dirName, ftDirectory, subdirs, pattern);
+}
+
+
+void getEntriesAppend(const char *dirName,
+	List<String> &entries,
+	const char *pattern)
+{
+	getEntriesAppend(dirName, ftEntry, entries, pattern);
+}
+
+
+
+
+
+} // end namespace ogdf
diff --git a/ogdf/basic/basic.h b/ogdf/basic/basic.h
new file mode 100644
index 0000000..480ba9b
--- /dev/null
+++ b/ogdf/basic/basic.h
@@ -0,0 +1,639 @@
+/*
+ * $Revision: 2618 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 15:59:09 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Basic declarations, included by all source files.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_BASIC_H
+#define OGDF_BASIC_H
+
+
+/**
+ * \mainpage The Open Graph Drawing Framework
+ *
+ * \section sec_intro Introduction
+ * The Open Graph Drawing Framework (OGDF) is a C++ library containing
+ * implementations of various graph drawing algorithms. The library is self
+ * contained; optionally, additional packages like LP-solvers are required
+ * for some implementations.
+ *
+ * Here, you find the library's code documentation. For more general information
+ * on OGDF see http://www.ogdf.net. There, you can also find further explanations,
+ * how-tos, and example code.
+ *
+ * The OGDF project is a cooperation between
+ * - [Chair of Algorithm Engineering](http://ls11-www.cs.uni-dortmund.de/), Faculty of Computer Science, TU Dortmund, Germany
+ * - [Juniorprofessorship of Algorithm Engineering](http://www.ae.uni-jena.de/), Faculty of Mathematics and Computer Science, Friedrich-Schiller-University Jena, Germany
+ * - [Chair of Prof. Jünger](http://www.informatik.uni-koeln.de/ls_juenger/), Department of Computer Science, University of Cologne, Germany
+ * - [University of Sydney](http://sydney.edu.au/engineering/it/), Australia
+ * - [oreas GmbH](http://www.oreas.com/), Cologne, Germany
+ */
+
+
+
+
+//---------------------------------------------------------
+// detection of the system
+//---------------------------------------------------------
+
+#if defined(unix) || defined(__unix__) || defined(__unix) || defined(_AIX) || defined(__APPLE__)
+#define OGDF_SYSTEM_UNIX
+#endif
+
+#if defined(__WIN32__) || defined(_WIN32) || defined(__NT__)
+#define OGDF_SYSTEM_WINDOWS
+#endif
+
+// Note: Apple OS X machines will be both OGDF_SYSTEM_UNIX and OGDF_SYSTEM_OSX
+#if defined(__APPLE__)
+#define OGDF_SYSTEM_OSX
+#endif
+
+
+#if defined(USE_COIN) || defined(OGDF_OWN_LPSOLVER)
+#define OGDF_LP_SOLVER
+#endif
+
+#if defined(USE_COIN) && !defined(COIN_OSI_CPX) && !defined(COIN_OSI_SYM) && !defined(COIN_OSI_CLP)
+#error "Compiler-flag USE_COIN requires an additional COIN_OSI_xxx-flag to choose the LP solver backend."
+#endif
+
+
+// define minimal MS runtime version for mingw32
+#if defined(__MINGW32__) && !defined(__MINGW64__)
+#ifndef __MSVCRT_VERSION__
+#define __MSVCRT_VERSION__ 0x0700
+#endif
+#endif
+
+// include windows.h on Windows systems
+#if defined(OGDF_SYSTEM_WINDOWS) || defined(__CYGWIN__)
+#define WIN32_EXTRA_LEAN
+#define WIN32_LEAN_AND_MEAN
+#undef NOMINMAX
+#define NOMINMAX
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0500
+#endif
+#include <windows.h>
+#endif
+
+
+//---------------------------------------------------------
+// assertions
+//---------------------------------------------------------
+
+#ifdef OGDF_DEBUG
+#include <assert.h>
+#define OGDF_ASSERT(expr) assert(expr);
+#define OGDF_ASSERT_IF(minLevel,expr) \
+	if (int(ogdf::debugLevel) >= int(minLevel)) { assert(expr); } else { }
+#define OGDF_SET_DEBUG_LEVEL(level) ogdf::debugLevel = level;
+
+#else
+#define OGDF_ASSERT(expr)
+#define OGDF_ASSERT_IF(minLevel,expr)
+#define OGDF_SET_DEBUG_LEVEL(level)
+#endif
+
+
+//---------------------------------------------------------
+// macros for optimization
+//---------------------------------------------------------
+
+// Visual C++ compiler
+#ifdef _MSC_VER
+
+#define OGDF_LIKELY(x)    (x)
+#define OGDF_UNLIKELY(x)  (x)
+
+#ifdef OGDF_DEBUG
+#define OGDF_NODEFAULT    default: assert(0);
+#else
+#define OGDF_NODEFAULT    default: __assume(0);
+#endif
+
+#define OGDF_DECL_ALIGN(b) __declspec(align(b))
+#define OGDF_DECL_THREAD __declspec(thread)
+
+
+// GNU gcc compiler (also Intel compiler)
+#elif defined(__GNUC__)
+//// make sure that SIZE_MAX gets defined
+//#define __STDC_LIMIT_MACROS
+//#include <stdint.h>
+
+#define OGDF_LIKELY(x)    __builtin_expect((x),1)
+#define OGDF_UNLIKELY(x)  __builtin_expect((x),0)
+#define OGDF_NODEFAULT    default: ;
+
+#define OGDF_DECL_ALIGN(b) __attribute__ ((aligned(b)))
+#define OGDF_DECL_THREAD __thread
+
+
+// other compiler
+#else
+#define OGDF_LIKELY(x)    (x)
+#define OGDF_UNLIKELY(x)  (x)
+#define OGDF_NODEFAULT
+
+#define OGDF_DECL_ALIGN(b)
+#endif
+
+#ifndef __SIZEOF_POINTER__
+#ifdef _M_X64
+#define __SIZEOF_POINTER__ 8
+#else
+#define __SIZEOF_POINTER__ 4
+#endif
+#endif
+
+
+#if defined(__CYGWIN__) || defined(__APPLE__) || defined(__sparc__)
+#define OGDF_NO_COMPILER_TLS
+#elif defined(__GNUC__)
+#if __GNUC__ < 4
+#define OGDF_NO_COMPILER_TLS
+#endif
+#endif
+
+
+//---------------------------------------------------------
+// macros for compiling OGDF as DLL
+//---------------------------------------------------------
+
+#ifdef OGDF_SYSTEM_WINDOWS
+#ifdef OGDF_DLL
+
+#ifdef OGDF_INSTALL
+#define OGDF_EXPORT __declspec(dllexport)
+#else
+#define OGDF_EXPORT __declspec(dllimport)
+#endif
+
+#else
+#define OGDF_EXPORT
+#endif
+
+#else
+#define OGDF_EXPORT
+#endif
+
+
+//---------------------------------------------------------
+// define data types with known size
+//---------------------------------------------------------
+
+#if defined(_MSC_VER)
+
+typedef unsigned __int8  __uint8;
+typedef unsigned __int16 __uint16;
+typedef unsigned __int32 __uint32;
+typedef unsigned __int64 __uint64;
+
+#else
+
+#undef __int8
+#undef __int16
+#undef __int32
+#undef __int64
+
+typedef signed char        __int8;
+typedef short              __int16;
+typedef int                __int32;
+typedef long long          __int64;
+typedef unsigned char      __uint8;
+typedef unsigned short     __uint16;
+typedef unsigned int       __uint32;
+typedef unsigned long long __uint64;
+#endif
+
+
+//---------------------------------------------------------
+// common includes
+//---------------------------------------------------------
+
+#include <iostream>
+#include <fstream>
+#include <algorithm>
+
+using std::ios;
+using std::istream;
+using std::ifstream;
+using std::ostream;
+using std::ofstream;
+using std::cin;
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::flush;
+using std::swap;
+using std::min;
+using std::max;
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <time.h>
+#include <string.h>
+#include <math.h>
+
+#ifdef OGDF_SYSTEM_UNIX
+#include <stdint.h>
+#endif
+// make sure that SIZE_MAX gets defined
+#ifndef SIZE_MAX
+#define SIZE_MAX ((size_t)-1)
+#endif
+
+
+#include "exceptions.h"
+#include "memory.h"
+#include "comparer.h"
+
+
+
+//---------------------------------------------------------
+// compiler adaptions
+//---------------------------------------------------------
+
+#ifdef _MSC_VER
+
+// disable useless warnings
+
+// missing dll-interface
+#pragma warning(disable:4251)
+#pragma warning(disable:4275)
+
+#endif
+
+
+//! The namespace for all OGDF objects.
+namespace ogdf {
+
+#ifndef OGDF_DLL
+
+/**
+ *  The class Initialization is used for initializing global variables.
+ *  You should never create instances of it!
+*/
+class Initialization {
+	static int s_count;
+
+public:
+	Initialization();
+	~Initialization();
+};
+
+static Initialization s_ogdfInitializer;
+
+#endif
+
+
+//---------------------------------------------------------
+// global basic functions
+//---------------------------------------------------------
+
+	// forward declarations
+	template<class E> class List;
+	class OGDF_EXPORT String;
+
+
+	enum Direction { before, after };
+
+	//! Returns random integer between low and high (including).
+	inline int randomNumber(int low, int high) {
+#if RAND_MAX == 32767
+		// We get only 15 random bits on some systems (Windows, Solaris)!
+		int r1 = (rand() & ((1 << 16) - 1));
+		int r2 = (rand() & ((1 << 16) - 1));
+		int r = (r1 << 15) | r2;
+#else
+		int r = rand();
+#endif
+		return low + (r % (high-low+1));
+	}
+
+	//! Returns random double value between low and high.
+	inline double randomDouble(double low, double high) {
+		double val = low +(rand()*(high-low))/RAND_MAX;
+		OGDF_ASSERT(val >= low && val <= high);
+		return val;
+	}
+
+	//! Returns a random double value from the normal distribution
+	//! with mean m and standard deviation sd
+	inline double randomDoubleNormal(double m, double sd)
+	{
+		double x1, x2, y1, w, rndVal;
+
+		do {
+			rndVal = randomDouble(0,1);
+			x1 = 2.0 * rndVal - 1.0;
+			rndVal = randomDouble(0,1);
+			x2 = 2.0 * rndVal - 1.0;
+			w = x1*x1 + x2*x2;
+		} while (w >= 1.0);
+
+		w = sqrt((-2.0 * log(w))/w) ;
+		y1 = x1*w;
+
+		return(m + y1*sd);
+	}
+
+
+
+	//! Returns used CPU time from T to current time and assigns
+	//! current time to T.
+	OGDF_EXPORT double usedTime(double& T);
+
+	//! \a doDestruction() returns false if a data type does not require to
+	//! call its destructor (e.g. build-in data types).
+	template<class E>inline bool doDestruction(const E *) { return true; }
+
+	// specializations
+	template<>inline bool doDestruction(const char *) { return false; }
+	template<>inline bool doDestruction<int>(const int *) { return false; }
+	template<>inline bool doDestruction<double>(const double *) { return false; }
+
+
+	//---------------------------------------------------------
+	// handling files and directories
+	//---------------------------------------------------------
+
+	//! The type of an entry in a directory.
+	enum FileType {
+		ftEntry,     /**< file or directory */
+		ftFile,      /**< file */
+		ftDirectory  /**< directory */
+	};
+
+	//! Returns true iff \a fileName is a regular file (not a directory).
+	OGDF_EXPORT bool isFile(const char *fileName);
+
+	//! Returns true iff \a fileName is a directory.
+	OGDF_EXPORT bool isDirectory(const char *fileName);
+
+	//! Changes current directory to \a dirName; returns true if successful.
+	OGDF_EXPORT bool changeDir(const char *dirName);
+
+	//! Returns in \a files the list of files in directory \a dirName.
+	/** The optional argument \a pattern can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getFiles(const char *dirName,
+		List<String> &files,
+		const char *pattern = "*");
+
+	//! Appends to \a files the list of files in directory \a dirName.
+	/** The optional argument \a pattern can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getFilesAppend(const char *dirName,
+		List<String> &files,
+		const char *pattern = "*");
+
+
+	//! Returns in \a subdirs the list of directories contained in directory \a dirName.
+	/** The optional argument \a pattern can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getSubdirs(const char *dirName,
+		List<String> &subdirs,
+		const char *pattern = "*");
+
+	//! Appends to \a subdirs the list of directories contained in directory \a dirName.
+	/** The optional argument \a pattern can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getSubdirsAppend(const char *dirName,
+		List<String> &subdirs,
+		const char *pattern = "*");
+
+
+	//! Returns in \a entries the list of all entries contained in directory \a dirName.
+	/** Entries may be files or directories. The optional argument \a pattern
+	 *  can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getEntries(const char *dirName,
+		List<String> &entries,
+		const char *pattern = "*");
+
+	//! Appends to \a entries the list of all entries contained in directory \a dirName.
+	/** Entries may be files or directories. The optional argument \a pattern
+	 *  can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getEntriesAppend(const char *dirName,
+		List<String> &entries,
+		const char *pattern = "*");
+
+
+	//! Returns in \a entries the list of all entries of type \a t contained in directory \a dirName.
+	/** The optional argument \a pattern can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getEntries(const char *dirName,
+		FileType t,
+		List<String> &entries,
+		const char *pattern = "*");
+
+	//! Appends to \a entries the list of all entries of type \a t contained in directory \a dirName.
+	/** The optional argument \a pattern can be used to filter files.
+	 *
+	 *  \pre \a dirName is a directory
+	 */
+	OGDF_EXPORT void getEntriesAppend(const char *dirName,
+		FileType t,
+		List<String> &entries,
+		const char *pattern = "*");
+
+	//---------------------------------------------------------
+	// handling markup formatting
+	//---------------------------------------------------------
+
+#ifdef OGDF_DEBUG
+	/** We maintain a debug level in debug versions indicating how many
+	 *  internal checks (usually assertions) are done.
+	 *  Usage: Set the variable ogdf::debugLevel using the macro
+	 *   OGDF_SET_DEBUG_LEVEL(level) to the desired level
+	 *   in the calling code (e.g. main()). The debugLevel can be set
+	 *   to a higher level for critical parts (e.g., where you assume a bug)
+	 *   ensuring that other parts are not too slow.
+	 */
+	enum DebugLevel {
+		dlMinimal, dlExtendedChecking, dlConsistencyChecks, dlHeavyChecks
+	};
+	extern DebugLevel debugLevel;
+#endif
+
+
+//! Abstract base class for bucket functions.
+/**
+ * The parameterized class \a BucketFunc<E> is an abstract base class
+ * for bucket functions. Derived classes have to implement \a getBucket().
+ * Bucket functions are used by bucket sort functions for container types.
+ */
+template<class E> class BucketFunc
+{
+public:
+	virtual ~BucketFunc() { }
+
+	//! Returns the bucket of \a x.
+	virtual int getBucket(const E &x) = 0;
+};
+
+
+
+#if _MSC_VER >= 1400
+
+inline int sprintf(char *buffer, size_t sizeOfBuffer, const char *format, ...)
+{
+	va_list args;
+	va_start(args, format);
+
+	return vsprintf_s(buffer, sizeOfBuffer, format, args);
+}
+
+inline int vsprintf(char *buffer, size_t sizeInBytes, const char *format, va_list argptr)
+{
+	return vsprintf_s(buffer, sizeInBytes, format, argptr);
+}
+
+inline int strcat(char *strDest, size_t sizeOfDest, const char *strSource)
+{
+	return (int)strcat_s(strDest, sizeOfDest, strSource);
+}
+
+inline int strcpy(char *strDest, size_t sizeOfDest, const char *strSource)
+{
+	return (int)strcpy_s(strDest, sizeOfDest, strSource);
+}
+
+inline int strncpy(char *strDest, size_t sizeOfDest, const char *strSource, size_t count)
+{
+	return (int)strncpy_s(strDest, sizeOfDest, strSource, count);
+}
+
+inline char *strtok(char *strToken, const char *strDelimit)
+{
+	//provide a persistent context pointer for strtok_s
+	static char *context;
+	return strtok_s(strToken, strDelimit, &context);
+}
+
+#define scanf scanf_s
+#define fscanf fscanf_s
+#define sscanf sscanf_s
+
+inline FILE *fopen(const char *filename, const char *mode)
+{
+	FILE *stream;
+	if(fopen_s(&stream, filename, mode)) stream = 0;
+	return stream;
+}
+
+inline int localtime(struct tm *ptm, const time_t *timer)
+{
+	return (int)localtime_s(ptm,timer);
+}
+
+#else ///////////////////////////////////////////////////////////////////////////////
+
+inline int sprintf(char *buffer, size_t, const char *format, ...)
+{
+	va_list args;
+	va_start(args, format);
+
+	return ::vsprintf(buffer, format, args);
+}
+
+
+inline int vsprintf(char *buffer, size_t, const char *format, va_list argptr)
+{
+	return ::vsprintf(buffer, format, argptr);
+}
+
+
+inline int strcat(char *strDest, size_t, const char *strSource)
+{
+	::strcat(strDest, strSource);
+	return 0;
+}
+
+inline int strcpy(char *strDest, size_t, const char *strSource)
+{
+	::strcpy(strDest, strSource);
+	return 0;
+}
+
+inline int strncpy(char *strDest, size_t, const char *strSource, size_t count)
+{
+	::strncpy(strDest, strSource, count);
+	return 0;
+}
+
+inline int localtime(struct tm *ptm, const time_t *timer)
+{
+	struct tm *newtime = ::localtime(timer);
+	if(newtime) {
+		*ptm = *newtime;
+		return 0;
+	}
+	return 1; // indicates error
+}
+
+#endif
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/comparer.h b/ogdf/basic/comparer.h
new file mode 100644
index 0000000..41ffbe8
--- /dev/null
+++ b/ogdf/basic/comparer.h
@@ -0,0 +1,287 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declarations for Comparer objects.
+ *
+ * \author Markus Chimani, Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_COMPARER_H
+#define OGDF_COMPARER_H
+
+namespace ogdf {
+
+//--------------------------------------------------------------------
+// A comparer interface is has to define
+// bool less (const E &x, const E &y);
+// bool leq  (const E &x, const E &y);
+// bool equal(const E &x, const E &y);
+// bool geq (const E &x, const E &y);
+// bool greater  (const E &x, const E &y);
+//
+// "const E &" can be replaced by "E"
+//--------------------------------------------------------------------
+
+//! Standard comparer (valid as a static comparer).
+/**
+ * Standard comparers are used by some sorting and searching methods.
+ * The implementation of the generic class only provides dummies that
+ * always throw a NoStdComparerException.
+ *
+ * The compare operations are static, hence the StdComparer cannot
+ * only be used as a comparer object, but also as a static comparer
+ * when required.
+ *
+ * You need to specialize this class for types you want to use with
+ * sorting and searching methods like quicksort and binary search. There
+ * already exist specializations for several standard types. If your type
+ * already provides compare operators, you can use the macro #OGDF_STD_COMPARER
+ * to automatically generate the specialization based on these operators.
+ */
+template<typename E> class StdComparer
+{
+public:
+    static bool less(const E &/*x*/, const E &/*y*/) { OGDF_THROW(NoStdComparerException); }
+    static bool leq(const E &/*x*/, const E &/*y*/) { OGDF_THROW(NoStdComparerException); }
+    static bool greater(const E &/*x*/, const E &/*y*/) { OGDF_THROW(NoStdComparerException); }
+    static bool geq(const E &/*x*/, const E &/*y*/) { OGDF_THROW(NoStdComparerException); }
+    static bool equal(const E &/*x*/, const E &/*y*/) { OGDF_THROW(NoStdComparerException); }
+};
+
+//! Generates a specialization of the standard static comparer for \a type based on compare operators.
+#define OGDF_STD_COMPARER(type) \
+	template<> class StdComparer<type> \
+	{ \
+	public: \
+		static bool less   (const type &x, const type &y) { return x <  y; } \
+		static bool leq    (const type &x, const type &y) { return x <= y; } \
+		static bool greater(const type &x, const type &y) { return x >  y; } \
+		static bool geq    (const type &x, const type &y) { return x >= y; } \
+		static bool equal  (const type &x, const type &y) { return x == y; } \
+	};
+
+OGDF_STD_COMPARER(int)
+OGDF_STD_COMPARER(float)
+OGDF_STD_COMPARER(double)
+
+//! Generates a specialization of the standard static comparer for booleans.
+template<> class StdComparer<bool> {
+public:
+	static bool less   (const bool &x, const bool &y) { return !x &&  y; }
+	static bool leq    (const bool &x, const bool &y) { return !x ||  y; }
+	static bool greater(const bool &x, const bool &y) { return  x && !y; }
+	static bool geq    (const bool &x, const bool &y) { return  x || !y; }
+	static bool equal  (const bool &x, const bool &y) { return  x ==  y; }
+};
+
+
+//! A static comparer which compares the target of pointers ("content"), instead of the pointer's adresses.
+/**
+ * For the comparison of the contents, you may give your own static comparer
+ */
+template<class CONTENTTYPE, class STATICCONTENTCOMPARER = StdComparer<CONTENTTYPE> >
+class TargetComparer {
+	typedef CONTENTTYPE* CONTENTPOINTER;
+public:
+	static bool less   (const CONTENTPOINTER &x, const CONTENTPOINTER &y) { return STATICCONTENTCOMPARER::less   (*x,*y); }
+	static bool leq    (const CONTENTPOINTER &x, const CONTENTPOINTER &y) { return STATICCONTENTCOMPARER::leq    (*x,*y); }
+	static bool greater(const CONTENTPOINTER &x, const CONTENTPOINTER &y) { return STATICCONTENTCOMPARER::greater(*x,*y); }
+	static bool geq    (const CONTENTPOINTER &x, const CONTENTPOINTER &y) { return STATICCONTENTCOMPARER::geq    (*x,*y); }
+	static bool equal  (const CONTENTPOINTER &x, const CONTENTPOINTER &y) { return STATICCONTENTCOMPARER::equal  (*x,*y); }
+};
+
+
+//! Add this macro to your class to turn it into a full comparer.
+/**
+ * It is assumed that your class has a method "compare(const type &x, const type &y)", which
+ * returns 0 if the two elements are equal, a negative value if \a x is smaller, and a positive
+ * value if \a x is greater.
+ *
+ * Note: If the compare function of your class requires no additional data other than the
+ * two elements to compare, your should usually use the more general #OGDF_AUGMENT_STATICCOMPARER:
+ * A static comparer is also always valid as a normal comparer.
+ *
+ * Usage in Definition:
+ * \code
+ * class MyComparer {
+ * private:
+ *   Oracle oracle;
+ * public:
+ *   MyComparer(Oracle o) : oracle(o) {}
+ *   int compare(const MyStuff& x1, const MyStuff& x2) const {
+ *      return ... //compare x1 with x2, using oracle
+ *   }
+ *   OGDF_AUGMENT_COMPARER(MyStuff)
+ * }
+ * \endcode
+ *
+ * Use the Comparer:
+ * \code
+ * MyStuff a=...;
+ * MyStuff b=...;
+ * Oracle or;
+ * MyComparer comp(or);
+ * if( comp.less(a,b) )
+ *   ... // do something
+ * ...
+ * Array<MyStuff> ay(10);
+ * ... // fill array
+ * ay.quicksort(comp); // sort the array using the MyComparer comp
+ * \endcode
+ */
+#define OGDF_AUGMENT_COMPARER(type) \
+	public: \
+	bool less(const type &x, const type &y) const { return compare(x,y) < 0; } \
+	bool leq(const type &x, const type &y) const { return compare(x,y) <= 0; } \
+	bool greater(const type &x, const type &y) const { return compare(x,y) > 0; } \
+	bool geq(const type &x, const type &y) const { return compare(x,y) >= 0; } \
+	bool equal(const type &x, const type &y) const { return compare(x,y) == 0; }
+
+//! Add this macro to your class to turn it into a full static comparer.
+/**
+ * It is assumed that your class has a *static* method "compare(const type &x, const type &y)", which
+ * returns 0 if the two elements are equal, a negative value if \a x is smaller, and a positive
+ * value if \a x is greater.
+ *
+ * Note: You should use this macro instead of #OGDF_AUGMENT_COMPARER whenever your compare function
+ * requires no additional data stored in the object, other than the two elements to compare.
+ * A static comparer is also always valid as a normal comparer.
+ *
+ * Usage in Definition:
+ * \code
+ * class MyComparer {
+ * public:
+ *    static int comparer(const MyStuff& x1, const MyStuff& x2) {
+ *       return ... //compare x1 with x2
+ *    }
+ *    OGDF_AUGMENT_STATICCOMPARER(MyStuff)
+ * }
+ * \endcode
+ *
+ * Use the Comparer:
+ * \code
+ * MyStuff a=...;
+ * MyStuff b=...;
+ * MyComparer comp;
+ * if( MyComparer.less(a,b) ) // use it statically on the class
+ *    ... // do something
+ * if( comp.less(a,b) ) // use it on the object
+ *    ... // do something
+ * ...
+ * Array<MyStuff> ay(10);
+ * ... // fill array
+ * ay.quicksort(comp); // sort the array using the MyComparer comp
+ * \endcode
+ */
+#define OGDF_AUGMENT_STATICCOMPARER(type) \
+	public: \
+	static bool less(const type &x, const type &y) { return compare(x,y) < 0; } \
+	static bool leq(const type &x, const type &y) { return compare(x,y) <= 0; } \
+	static bool greater(const type &x, const type &y) { return compare(x,y) > 0; } \
+	static bool geq(const type &x, const type &y) { return compare(x,y) >= 0; } \
+	static bool equal(const type &x, const type &y) { return compare(x,y) == 0; }
+
+
+//! Abstract base class for comparer classes.
+/**
+ * The parameterized class \a VComparer<E> is an abstract base class for
+ * encapsulating compare functions for type \a E. Implementations derive
+ * from this class and implement at least the compare() method.
+ *
+ * The methods of this class are all \a virtual, which comes with a
+ * certain performance penalty. Its advantage is that if you require
+ * multiple Comparers for the same class \a E, functions using
+ * compareres on \a E are not generated multiple times, which means
+ * smaller code.
+ *
+ * If size is not an issue, but speed is, use a Comparer with
+ * non-virtual functions. You may want to use the convenience classes
+ * StdComparer and TargetComparer, or the convenience macros
+ * #OGDF_AUGMENT_COMPARER, #OGDF_AUGMENT_STATICCOMPARER, #OGDF_STD_COMPARER to
+ * obtain non-virtual classes with few effort.
+ */
+template<class E> class VComparer {
+public:
+	//! Initializes a comparer.
+	VComparer() { }
+
+	virtual ~VComparer() { }
+
+	//! Compares \a x and \a y and returns the result as an integer.
+	/** The returns value is
+	 *  - < 0 iff x < y,
+	 *  - = 0 iff x = y,
+	 *  - > 0 iff x > y
+	 */
+	virtual int compare(const E &x, const E &y) const = 0;
+
+	//! Returns true iff \a x < \a y
+	virtual bool less(const E &x, const E &y) const {
+		return compare(x,y) < 0;
+	}
+
+	//! Returns true iff \a x <= \a y
+	virtual bool leq(const E &x, const E &y) const {
+		return compare(x,y) <= 0;
+	}
+
+	//! Returns true iff \a x > \a y
+	virtual bool greater(const E &x, const E &y) const {
+		return compare(x,y) > 0;
+	}
+
+	//! Returns true iff \a x >= \a y
+	virtual bool geq(const E &x, const E &y) const {
+		return compare(x,y) >= 0;
+	}
+
+	//! Returns true iff \a x = \a y
+	virtual bool equal(const E &x, const E &y) const {
+		return compare(x,y) == 0;
+	}
+}; // class VComparer
+
+} //namespace
+
+#endif /*OGF_COMPARER_H*/
diff --git a/ogdf/basic/exceptions.h b/ogdf/basic/exceptions.h
new file mode 100644
index 0000000..e79d658
--- /dev/null
+++ b/ogdf/basic/exceptions.h
@@ -0,0 +1,307 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Definition of exception classes
+ *
+ * \author Carsten Gutwenger, Markus Chimani
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#include <stdio.h>
+#include "basic.h"
+
+
+#ifndef OGDF_EXCEPTIONS_H
+#define OGDF_EXCEPTIONS_H
+
+
+namespace ogdf {
+
+#ifdef OGDF_DEBUG
+/**
+ * If this flag is set the #OGDF_THROW macros pass the location where the
+ * exception is thrown (file name and line number) to the exception
+ * constructor, otherwise not.
+ */
+#define OGDF_THROW_WITH_INFO
+#endif
+
+#ifdef OGDF_THROW
+#undef OGDF_THROW
+#endif
+
+#ifndef OGDF_THROW_WITH_INFO
+#define OGDF_THROW_PARAM(CLASS, PARAM) throw CLASS ( PARAM )
+#define OGDF_THROW(CLASS)              throw CLASS ( )
+#else
+//! Replacement for \c throw.
+/**
+ * This macro is used to throw an exception and pass the file name
+ * and line number of the location in the source file.
+ * @param CLASS is the name of the exception class.
+ * @param PARAM is an additional parameter (like the error code) required
+ *        by the exception calls.
+ */
+#define OGDF_THROW_PARAM(CLASS, PARAM) throw CLASS ( PARAM , __FILE__ , __LINE__ )
+//! Replacement for \c throw.
+/**
+ * This macro is used to throw an exception and pass the file name
+ * and line number of the location in the source file.
+ * @param CLASS is the name of the exception class.
+ */
+#define OGDF_THROW(CLASS)              throw CLASS ( __FILE__ , __LINE__ )
+#endif
+
+
+	//! Error code for a violated precondition.
+	/**
+	 * \see PreconditionViolatedException
+	 */
+	enum PreconditionViolatedCode {
+		pvcUnknown,
+		pvcSelfLoop,          //!< graph contains a self-loop
+		pvcTreeHierarchies,   //!< hierarchies are not only trees
+		pvcAcyclicHierarchies,//!< hierarchies are not acyclic
+		pvcSingleSource,      //!< graph has not a single source
+		pvcUpwardPlanar,      //!< graph is not upward planar
+		pvcTree,              //!< graph is not a rooted tree
+		pvcForest,            //!< graph is not a rooted forest
+		pvcOrthogonal,        //!< layout is not orthogonal
+		pvcPlanar,            //!< graph is not planar
+		pvcClusterPlanar,     //!< graph is not c-planar
+		pvcNoCopy,            //!< graph is not a copy of the corresponding graph
+		pvcConnected,         //!< graph is not connected
+		pvcBiconnected,         //!< graph is not twoconnected
+		pvcSTOP               // INSERT NEW CODES BEFORE pvcSTOP!
+	}; // enum PreconditionViolatedCode
+
+
+	//! Code for an internal failure condition
+	/**
+	 * \see AlgorithmFailureException
+	 */
+	enum AlgorithmFailureCode {
+		afcUnknown,
+		afcIllegalParameter, //!< function parameter is illegal
+		afcNoFlow,           //!< min-cost flow could not find a legal flow
+		afcSort,             //!< sequence not sorted
+		afcLabel,            //!< labelling failed
+		afcExternalFace,     //!< external face not correct
+		afcForbiddenCrossing,//!< crossing forbidden but necessary
+		afcTimelimitExceeded,//!< it took too long
+		afcNoSolutionFound,  //!< couldn't solve the problem
+		afcSTOP              // INSERT NEW CODES BEFORE afcSTOP!
+	}; // enum AlgorithmFailureCode
+
+
+
+	//! Code for the library which was intended to get used, but its use is not supported.
+	/**
+	 * \see LibraryNotSupportedException
+	 */
+	enum LibraryNotSupportedCode {
+		lnscUnknown,
+		lnscCoin,                          //!< COIN not supported
+		lnscAbacus,                        //!< ABACUS not supported
+		lnscFunctionNotImplemented,        //!< the used library doesn't support that function
+		lnscMissingCallbackImplementation, //
+		lnscSTOP                           // INSERT NEW CODES BEFORE nscSTOP!
+	}; // enum AlgorithmFailureCode
+
+
+
+	//! Base class of all ogdf exceptions.
+	class OGDF_EXPORT Exception {
+
+	private:
+
+		const char *m_file; //!< Source file where exception occurred.
+		int         m_line; //!< Line number where exception occurred.
+
+	public:
+		//! Constructs an exception.
+		/**
+		 * @param file is the name of the source file where exception was thrown.
+		 * @param line is the line number in the source file where the exception was thrown.
+		 */
+		Exception(const char *file = NULL, int line = -1) :
+			m_file(file),
+			m_line(line)
+			{ }
+
+		//! Returns the name of the source file where exception was thrown.
+		/**
+		 * Returns a null pointer if the name of the source file is unknown.
+		 */
+		const char *file() { return m_file; }
+
+		//! Returns the line number where the exception was thrown.
+		/**
+		 * Returns -1 if the line number is unknown.
+		 */
+		int line() { return m_line; }
+	};
+
+
+	//! %Exception thrown when result of cast is 0.
+	class OGDF_EXPORT DynamicCastFailedException : public Exception {
+
+	public:
+		//! Constructs a dynamic cast failed exception.
+		DynamicCastFailedException(const char *file = NULL, int line = -1) : Exception(file, line) {}
+	};
+
+
+	//! %Exception thrown when not enough memory is available to execute an algorithm.
+	class OGDF_EXPORT InsufficientMemoryException : public Exception {
+
+	public:
+		//! Constructs an insufficient memory exception.
+		InsufficientMemoryException(const char *file = NULL, int line = -1) : Exception(file, line) {}
+	};
+
+
+	//! %Exception thrown when a required standard comparer has not been specialized.
+	/**
+	 * The default implementation of StdComparer<E> throws this exception, since it
+	 * provides no meaningful implementation of comparer methods. You need to specialize
+	 * this class for the types you want to use with sorting and searching methods (like
+	 * quicksort and binary search).
+	 */
+	class OGDF_EXPORT NoStdComparerException : public Exception {
+
+	public:
+		//! Constructs a no standard comparer available exception.
+		NoStdComparerException(const char *file = NULL, int line = -1) : Exception(file, line) {}
+	};
+
+
+	//! %Exception thrown when preconditions are violated.
+	class OGDF_EXPORT PreconditionViolatedException : public Exception
+	{
+	public:
+		//! Constructs a precondition violated exception.
+		PreconditionViolatedException(PreconditionViolatedCode code,
+			const char *file = NULL,
+			int line = -1) :
+		Exception(file, line),
+		m_exceptionCode(code)
+		{}
+
+		//! Constructs a precondition violated exception.
+		PreconditionViolatedException(
+			const char *file = NULL,
+			int line = -1) :
+		Exception(file, line),
+		m_exceptionCode(pvcUnknown)
+		{}
+
+		//! Returns the error code of the exception.
+		PreconditionViolatedCode exceptionCode() const { return m_exceptionCode; }
+
+	private:
+		PreconditionViolatedCode m_exceptionCode; //!< The error code specifying the exception.
+	}; // class PreconditionViolatedException
+
+
+
+	//! %Exception thrown when an algorithm realizes an internal bug that prevents it from continuing.
+	class OGDF_EXPORT AlgorithmFailureException : public Exception
+	{
+	public:
+
+		//! Constructs an algorithm failure exception.
+		AlgorithmFailureException(AlgorithmFailureCode code,
+			const char *file = NULL,
+			int line = -1) :
+		Exception(file, line),
+		m_exceptionCode(code)
+		{}
+
+		//! Constructs an algorithm failure exception.
+		AlgorithmFailureException(
+			const char *file = NULL,
+			int line = -1) :
+		Exception(file, line),
+		m_exceptionCode(afcUnknown)
+		{}
+
+		//! Returns the error code of the exception.
+		AlgorithmFailureCode exceptionCode() const { return m_exceptionCode; }
+
+	private:
+		AlgorithmFailureCode m_exceptionCode; //!< The error code specifying the exception.
+	}; // class AlgorithmFailureException
+
+
+
+	//! %Exception thrown when an external library shall be used which is not supported.
+	class OGDF_EXPORT LibraryNotSupportedException : public Exception {
+		public:
+		//! Constructs a library not supported exception.
+			LibraryNotSupportedException(LibraryNotSupportedCode code,
+				const char *file = NULL,
+				int line = -1) :
+			Exception(file, line),
+			m_exceptionCode(code)
+			{}
+
+		//! Constructs a library not supported exception.
+			LibraryNotSupportedException(
+				const char *file = NULL,
+				int line = -1) :
+			Exception(file, line),
+			m_exceptionCode(lnscUnknown)
+			{}
+
+		//! Returns the error code of the exception.
+		LibraryNotSupportedCode exceptionCode() const { return m_exceptionCode; }
+
+	private:
+		LibraryNotSupportedCode m_exceptionCode; //!< The error code specifying the exception.
+	}; // class LibraryNotSupportedException
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/geometry.cpp b/ogdf/basic/geometry.cpp
new file mode 100644
index 0000000..c3c92e2
--- /dev/null
+++ b/ogdf/basic/geometry.cpp
@@ -0,0 +1,804 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Geometric-classes like DPoint, DPolyline, DRect, DLine,
+ *  DScaler
+ *
+ * \author Joachim Kupke
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "ogdf/basic/geometry.h"
+#include "ogdf/basic/GraphAttributes.h"
+#include "ogdf/basic/Math.h"
+#include <math.h>
+
+
+namespace ogdf {
+
+//---------------------------------------------------------
+// IPoint
+//---------------------------------------------------------
+
+ostream &operator<<(ostream &os, const IPoint &ip)
+{
+	os << "(" << ip.m_x << "," << ip.m_y << ")";
+	return os;
+}
+
+
+//---------------------------------------------------------
+// DPoint
+//---------------------------------------------------------
+
+// gives the euclidean distance between p and *this
+double IPoint::distance(const IPoint &p) const
+{
+	double dx = p.m_x - m_x;
+	double dy = p.m_y - m_y;
+	return sqrt( (dx*dx) + (dy*dy) );
+}
+
+
+//---------------------------------------------------------
+// IPolyline
+//---------------------------------------------------------
+
+// calculates the total length of a polyline
+double IPolyline::length() const
+{
+	OGDF_ASSERT(!empty());
+
+	double len = 0.0;
+	ListConstIterator<IPoint> pred, iter;
+
+	pred = iter = begin();
+	++iter;
+
+	while (iter.valid()) {
+		len += (*iter).distance(*pred);
+		++pred;
+		++iter;
+	}
+
+	return len;
+}
+
+
+//---------------------------------------------------------
+// DPoint
+//---------------------------------------------------------
+
+// gives the euclidean distance between p and *this
+double DPoint::distance(const DPoint &p) const
+{
+	double dx = p.m_x - m_x;
+	double dy = p.m_y - m_y;
+	return sqrt( (dx*dx) + (dy*dy) );
+}
+
+// adds p to *this
+DPoint DPoint::operator+(const DPoint &p) const
+{
+	return DPoint(m_x + p.m_x, m_y + p.m_y);
+}
+
+// subtracts p from *this
+DPoint DPoint::operator-(const DPoint &p) const
+{
+	return DPoint(m_x - p.m_x, m_y - p.m_y);
+}
+
+// outputs dp
+ostream &operator<<(ostream &os, const DPoint &dp)
+{
+	os << "(" << dp.m_x << "," << dp.m_y << ")";
+	return os;
+}
+
+
+//---------------------------------------------------------
+// DVector
+//---------------------------------------------------------
+DVector DVector::operator*(const double val) const
+{
+	DVector ret(m_x*val, m_y*val);
+	return ret;
+}
+
+DVector DVector::operator/(const double val) const
+{
+	DVector ret(m_x/val, m_y/val);
+	return ret;
+}
+
+// length
+double DVector::length() const
+{
+	return sqrt((m_x * m_x) + (m_y * m_y));
+}
+
+// determinante
+double DVector::operator^(const DVector &dv) const
+{
+	return ((m_x * dv.m_y) - (m_y * dv.m_x));
+}
+
+// s-product
+double DVector::operator*(const DVector &dv) const
+{
+	return ((m_x * dv.m_x) + (m_y * dv.m_y));
+}
+
+// ortho left
+DVector DVector::operator++() const
+{
+	DVector ret;
+	if (m_x != 0.0) {
+		ret.m_y = 1.0;
+		ret.m_x = - m_y / m_x;
+	}
+	else {
+		ret.m_x = 1.0;
+		ret.m_y = 0.0;
+
+	}
+	return ret;
+}
+
+// ortho right
+DVector DVector::operator--() const
+{
+	return (++(*this)) * (-1.0);
+}
+
+
+
+//---------------------------------------------------------
+// DPolyline
+//---------------------------------------------------------
+
+const double DPolyline::s_prec = 10000.0;
+
+// calculates the total length of a polyline
+double DPolyline::length() const
+{
+	OGDF_ASSERT(!empty());
+
+	double len = 0.0;
+	ListConstIterator<DPoint> pred, iter;
+
+	pred = iter = begin();
+	++iter;
+
+	while (iter.valid()) {
+		len += (*iter).distance(*pred);
+		++pred;
+		++iter;
+	}
+
+	return len;
+}
+
+
+// gives the point on a polyline, which is fraction*len away from the start
+DPoint DPolyline::position(const double fraction, double len) const
+{
+	OGDF_ASSERT(!empty());
+	OGDF_ASSERT(fraction >= 0.0 && fraction <= 1.0);
+	if (len < 0.0)
+		len = length();
+	OGDF_ASSERT(len >= 0.0);
+
+	DPoint p      = (*begin());
+	double liter  = 0.0;
+	double pos    = len * fraction;
+	double seglen = 0.0;
+	ListConstIterator<DPoint> pred, iter;
+
+	pred = iter = begin();
+	++iter;
+
+	// search the segment, which contains the desired point
+	double DX = 0, DY = 0; // for further use
+	while (iter.valid()) {
+		DX = (*iter).m_x - (*pred).m_x;
+		DY = (*iter).m_y - (*pred).m_y;
+		seglen = sqrt( (DX*DX) + (DY*DY) );
+		liter += seglen;
+		if (liter >= pos)
+			break;
+		++pred;
+		++iter;
+	}
+
+	if (!iter.valid()) // position not inside the polyline, return last point!
+		p = (*rbegin());
+	else {
+		if (seglen == 0.0) // *pred == *iter and pos is inbetween
+			return (*pred);
+
+		double segpos = seglen + pos - liter;
+
+		double dx = DX * segpos / seglen;
+		double dy = DY * segpos / seglen;
+
+		p = (*pred);
+		p.m_x += dx;
+		p.m_y += dy;
+	}
+
+	return p;
+}
+
+
+//
+void DPolyline::writeGML(ostream &stream) const
+{
+	Graph g;
+	GraphAttributes ag(g);
+
+	node u = NULL;
+	node v = NULL;
+
+	ListConstIterator<DPoint> iter;
+	for (iter = begin(); iter.valid(); ++iter) {
+		v = g.newNode();
+		if (u != NULL)
+			g.newEdge(u, v);
+		u = v;
+
+		ag.x(v) = (*iter).m_x;
+		ag.y(v) = (*iter).m_y;
+	}
+	ag.writeGML(stream);
+}
+
+
+// outputs the GML-file, which illustrates the Polyline as Graph
+void DPolyline::writeGML(const char *filename) const
+{
+	ofstream file(filename);
+	writeGML(file);
+}
+
+
+// delete all consecutive double-points
+void DPolyline::unify()
+{
+	if (empty()) return;
+	ListIterator<DPoint> iter, next;
+	for (iter = next = begin(), ++next; next.valid() && (size() > 2); ++next) {
+		if (*iter == *next) {
+			del(next);
+			next = iter;
+		} else
+			iter = next;
+	}
+}
+
+
+// deletes all points, which are not facets
+void DPolyline::normalize()
+{
+	unify();
+
+	ListIterator<DPoint> iter, next, onext;
+	for (iter = begin(); iter.valid(); ++iter) {
+		for( ; ; ) {
+			next  = iter; next++;
+			if (!next.valid()) break;
+			onext = next, onext++;
+			if (!onext.valid()) break;
+
+			DSegment s1((*iter), (*next));
+			DSegment s2((*next), (*onext));
+			DRect    r ((*iter), (*onext));
+
+			// is *next on the way from *iter to *onext?
+			if (s1.slope() == s2.slope() && r.contains(*next))
+				del(next);
+			else
+				break; /* while */
+		}
+	}
+}
+
+
+void DPolyline::normalize(DPoint src, DPoint tgt)
+{
+	if (empty())
+		return;
+
+	unify();
+	ListIterator<DPoint> iter, next, onext;
+	DPoint pCur = src;
+	DPoint pNext;
+	DPoint pNextNext;
+	for (iter = begin(); iter.valid(); ++iter) {
+		for( ; ; ) {
+
+			if (!iter.valid())
+				break;
+
+			next  = iter;
+			pNext = *next;
+			next++;
+
+			if (!next.valid()) {
+				pNextNext = tgt;
+			}
+			else
+				pNextNext = *next;
+
+
+			DSegment s1(pCur, pNext);
+			DSegment s2(pNext, pNextNext);
+			DRect    r (pCur, pNextNext);
+
+			// is *next on the way from *iter to *onext?
+			if (s1.slope() == s2.slope() && r.contains(pNext)) {
+				del(iter);
+				iter = next;
+			}
+			else
+				break; /* while */
+		}
+		if (iter.valid())
+			pCur = *iter;
+		else
+			break;
+	}
+}
+
+
+//
+void DPolyline::convertToInt()
+{
+	ListIterator<DPoint> iter;
+	for (iter = begin(); iter.valid(); ++iter) {
+		DPoint &p = *iter;
+		p.m_x = DRound(p.m_x * s_prec);
+		p.m_y = DRound(p.m_y * s_prec);
+	}
+}
+
+// Removed since I do not see that this makes sense... (CG)
+//void DPolyline::reConvertToDouble()
+//{
+//    ListIterator<DPoint> iter;
+//    for (iter = begin(); iter.valid(); ++iter) {
+//        DPoint &p = *iter;
+//        p.m_x = p.m_x / s_prec;
+//        p.m_y = p.m_y / s_prec;
+//    }
+//}
+
+//---------------------------------------------------------
+// DLine
+//---------------------------------------------------------
+
+// gives the intersection-point between two lines, returns true, if any
+// computes the crossing point between the (infinite) lines
+// defined by the endpoints of the DLines, then checks if it
+// lies within the two rectangles defined by the DLines endpoints
+bool DLine::intersection(
+	const DLine &line,
+	DPoint &inter,
+	bool endpoints) const
+{
+	double ix, iy;
+
+	//do not return true if parallel edges are encountered
+	if (slope() == line.slope()) return false;
+
+	//two possible checks:
+	// only check for overlap on endpoints if option parameter set,
+	// compute crossing otherwise
+	// or skip computation if endpoints overlap (can't have "real" crossing)
+	// (currently implemented)
+	//if (endpoints) {
+
+	if (m_start == line.m_start || m_start == line.m_end) {
+		inter = m_start;
+		if (endpoints) return true;
+		else return false;
+	}
+
+	if (m_end == line.m_start || m_end == line.m_end) {
+		inter = m_end;
+		if (endpoints) return true;
+		else return false;
+	}
+
+	//}//if endpoints
+
+	//if the edge is vertical, we cannot compute the slope
+	if (isVertical())
+		ix = m_start.m_x;
+	else
+		if (line.isVertical())
+			ix = line.m_start.m_x;
+		else
+			ix = (line.yAbs() - yAbs())/(slope() - line.slope());
+
+	//set iy to the value of the infinite line at xvalue ix
+	//use a non-vertical line (can't be both, otherwise they're parallel)
+	if (isVertical())
+		iy = line.slope() * ix + line.yAbs();
+	else
+		iy = slope() * ix + yAbs();
+
+	inter = DPoint(ix, iy); //the (infinite) lines cross point
+
+	DRect tRect(line);
+	DRect mRect(*this);
+
+	return (tRect.contains(inter) && mRect.contains(inter));
+}
+
+
+// returns true, if line contains p
+bool DLine::contains(const DPoint &p) const
+{
+	if (p == start() || p == end())
+		return true;
+
+	// check, if outside rect
+	DRect r(start(), end());
+	if (!r.contains(p))
+		return false;
+
+	if (dx() == 0.0) { // first check, if line is vertical
+		if (DIsEqual       (p.m_x, start().m_x)                     &&
+			DIsLessEqual   (p.m_y, (max(start().m_y, end().m_y)))   &&
+			DIsGreaterEqual(p.m_y, (min(start().m_y, end().m_y))))
+			return true;
+		return false;
+	}
+
+	double dx2p = p.m_x - start().m_x;
+	double dy2p = p.m_y - start().m_y;
+
+	if (dx2p == 0.0) // dx() != 0.0, already checked
+		return false;
+
+	if (DIsEqual(slope(), (dy2p/dx2p)))
+		return true;
+	return false;
+}
+
+
+// gives the intersection with the horizontal axis 'horAxis', returns the number of intersections
+// 0 = no, 1 = one, 2 = infinity or both end-points, e.g. parallel on this axis
+int DLine::horIntersection(const double horAxis, double &crossing) const
+{
+	if (dy() == 0.0) {
+		crossing = 0.0;
+		if (m_start.m_y == horAxis)
+			return 2;
+		else
+			return 0;
+	}
+	if (min(m_start.m_y, m_end.m_y) <= horAxis && max(m_start.m_y, m_end.m_y) >= horAxis) {
+		crossing = (m_start.m_x * (m_end.m_y - horAxis) -
+			m_end.m_x * (m_start.m_y - horAxis)   ) / dy();
+		return 1;
+	}
+	else {
+		crossing = 0.0;
+		return 0;
+	}
+}
+
+
+// gives the intersection with the vertical axis 'verAxis', returns the number of intersections
+// 0 = no, 1 = one, 2 = infinity or both end-points, e.g. parallel on this axis
+int DLine::verIntersection(const double verAxis, double &crossing) const
+{
+	if (dx() == 0.0) {
+		crossing = 0.0;
+		if (m_start.m_x == verAxis)
+			return 2;
+		else
+			return 0;
+	}
+	if (min(m_start.m_x, m_end.m_x) <= verAxis && max(m_start.m_x, m_end.m_x) >= verAxis) {
+		crossing = (m_start.m_y * (m_end.m_x - verAxis) -
+			m_end.m_y * (m_start.m_x - verAxis)   ) / dx();
+		return 1;
+	}
+	else {
+		crossing = 0.0;
+		return 0;
+	}
+}
+
+// output the line
+ostream &operator<<(ostream &os, const DLine &dl)
+{
+	os << "Line-Start: " << dl.start() << ", Line-End: " << dl.end();
+	return os;
+}
+
+
+//---------------------------------------------------------
+// DRect
+//---------------------------------------------------------
+
+// output the rect
+ostream &operator<<(ostream &os, const DRect &dr)
+{
+	os << "Rect-LowerLeftPoint: " << dr.p1() << ", Rect-UpperRightPoint: " << dr.p2();
+	return os;
+}
+
+
+//---------------------------------------------------------
+// DScaler
+//---------------------------------------------------------
+
+// output the two rects in the scaler
+ostream &operator<<(ostream &os, const DScaler &ds)
+{
+	os << "Scale from " << ds.from() << " to " << ds.to();
+	return os;
+}
+
+
+
+//----------------------------------------------------------------
+// DPolygon
+//----------------------------------------------------------------
+
+// gives the segment starting at point 'it'
+DSegment DPolygon::segment(ListConstIterator<DPoint> it) const
+{
+	OGDF_ASSERT(!empty() && size() != 1);
+	return DSegment(*it, *cyclicSucc(it));
+}
+
+
+
+// Assignment operator (for assigning from a rectangle).
+DPolygon &DPolygon::operator=(const DRect &rect)
+{
+	clear();
+	DRect  r1(rect);
+	DRect  r2(rect);
+	if (m_counterclock)
+		r2.xInvert();
+	else
+		r2.yInvert();
+
+	pushBack(r1.p1());
+	pushBack(r2.p1());
+	pushBack(r1.p2());
+	pushBack(r2.p2());
+
+	unify();
+	return *this;
+}
+
+
+// inserts the point p, which must ly on the boarder of the polygon, between the two points p1 and p2
+// returns the index to that point, which is inserted only once
+ListIterator<DPoint> DPolygon::insertPoint(
+	const DPoint &p,
+	ListIterator<DPoint> p1,
+	ListIterator<DPoint> p2)
+{
+	ListIterator<DPoint> i = p1;
+
+	do {
+		DSegment seg = segment(i);
+		if (seg.contains(p)) {
+			if (seg.start() == p)
+				return i;
+			else if (seg.end() == p) {
+				i = cyclicSucc(i);
+				return i;
+			}
+			else
+				return insertAfter(p, i);
+		}
+
+		i = cyclicSucc(i);
+	} while (i != p2);
+
+	OGDF_ASSERT(false); // Point not in polygon, should not be reached!
+	return i;
+}
+
+
+// inserts 'p' on every segment (a,b) with p in the open range ]a, b[
+void DPolygon::insertCrossPoint(const DPoint &p)
+{
+	ListIterator<DPoint> i = begin();
+
+	do {
+		DSegment seg = segment(i);
+		if (seg.contains(p))
+			if (seg.start() != p && seg.end() != p)
+				i = insertAfter(p, i);
+
+		i = cyclicSucc(i);
+	} while (i != begin());
+}
+
+
+//
+int DPolygon::getCrossPoints(const DPolygon &p, List<DPoint> &crossPoints) const
+{
+	crossPoints.clear();
+
+	ListConstIterator<DPoint> i, j;
+	for (i = begin(); i.valid(); ++i) {
+		DSegment s1 = segment(i);
+		for (j = p.begin(); j.valid(); ++j) {
+			DSegment s2 = p.segment(j);
+
+			DPoint intersec;
+
+			if (s1.intersection(s2, intersec))
+				crossPoints.pushBack(intersec);
+		}
+	}
+	// unify the list
+	ListIterator<DPoint> k, l;
+	for (k = crossPoints.begin(); k.valid(); ++k)
+		for (l = k, ++l; l.valid(); ++l)
+			if (*k == *l) {
+				--l;
+				crossPoints.del(crossPoints.cyclicSucc(l));
+			}
+
+			return crossPoints.size();
+}
+
+
+
+// delete all consecutive double-points
+void DPolygon::unify()
+{
+	ListIterator<DPoint> iter, next;
+	for (iter = begin(); iter.valid(); ++iter) {
+		next = cyclicSucc(iter);
+		while (*iter == *next) {
+			del(next);
+			next = cyclicSucc(iter);
+			if (iter == next)
+				break;
+		}
+	}
+}
+
+
+// deletes all points, which are not facets
+void DPolygon::normalize()
+{
+	unify();
+
+	ListIterator<DPoint> iter, next;
+	for (iter = begin(); iter.valid(); ++iter) {
+		for( ; ; ) {
+			next = cyclicSucc(iter);
+			DSegment s1 = segment(iter);
+			DSegment s2 = segment(next);
+			DRect    r    (*iter, *cyclicSucc(next));
+			if (s1.slope() == s2.slope() && r.contains(*next))
+				del(next);
+			else
+				break; // while
+		}
+	}
+}
+
+
+//
+void DPolygon::writeGML(ostream &stream) const
+{
+	Graph g;
+	GraphAttributes ag(g);
+
+	node u = NULL;
+	node v = NULL;
+	node first = 0;
+
+	ListConstIterator<DPoint> iter;
+	for (iter = begin(); iter.valid(); ++iter) {
+		v = g.newNode();
+		if (u != NULL)
+			g.newEdge(u, v);
+		else
+			first = v;
+		u = v;
+
+		ag.x(v) = (*iter).m_x;
+		ag.y(v) = (*iter).m_y;
+	}
+	g.newEdge(v, first);
+
+	ag.writeGML(stream);
+}
+
+
+// outputs the GML-file, which illustrates the Polygon as Graph
+void DPolygon::writeGML(const char *filename) const
+{
+	ofstream file(filename);
+	writeGML(file);
+}
+
+
+// Checks wether a Point /a p is inside the Poylgon or not.
+bool DPolygon::containsPoint(DPoint &p) const
+{
+	if (size() < 3) {
+		return false;
+	}
+
+	double angle = 0.0;
+	DPolygon::const_iterator i = cyclicPred(begin());
+	double lastangle = atan2((*i).m_y - p.m_y, (*i).m_x - p.m_x);
+	double tempangle = 0.0;
+	for (i = begin(); i != end(); i++)
+	{
+		tempangle = atan2((*i).m_y - p.m_y, (*i).m_x - p.m_x);
+		double step = lastangle - tempangle;
+		while (step > Math::pi) step -= 2.0*Math::pi;
+		while (step < -Math::pi) step += 2.0*Math::pi;
+		angle += step;
+		lastangle = tempangle;
+	}
+
+	double d = angle / (2.0 * Math::pi);
+	int rounds = static_cast<int>(d<0?d-.5:d+.5);
+
+	return ((rounds % 2) != 0);
+}
+
+
+// outputs the polygon
+ostream &operator<<(ostream &os, const DPolygon &dop)
+{
+	print(os, dop, ' ');
+	return os;
+}
+
+
+}  // end namespace ogdf
diff --git a/ogdf/basic/geometry.h b/ogdf/basic/geometry.h
new file mode 100644
index 0000000..a5f885a
--- /dev/null
+++ b/ogdf/basic/geometry.h
@@ -0,0 +1,794 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of classes DPoint, DPolyline, DLine, DRect, DScaler.
+ *
+ * \author Joachim Kupke
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_GEOMETRY_H
+#define OGDF_GEOMETRY_H
+
+#include "List.h"
+#include "Hashing.h"
+#include <float.h>
+#include <math.h>
+
+#define OGDF_GEOM_EPS  1e-06
+
+
+namespace ogdf {
+
+//! Determines the orientation in hierarchical layouts.
+enum Orientation {
+	topToBottom, //!< Edges are oriented from top to bottom.
+	bottomToTop, //!< Edges are oriented from bottom to top.
+	leftToRight, //!< Edges are oriented from left to right.
+	rightToLeft  //!< Edges are oriented from right to left.
+};
+
+
+// Important: be careful, if compared values are (+/-)DBL_MAX !!!
+inline
+	bool DIsEqual(const double &a, const double &b, const double eps = OGDF_GEOM_EPS)
+{
+	return (a < (b + eps) && a > (b - eps));
+}
+
+inline
+	bool DIsGreaterEqual(const double &a, const double &b, const double eps = OGDF_GEOM_EPS)
+{
+	return (a > (b - eps));
+}
+
+inline
+	bool DIsGreater(const double &a, const double &b, const double eps = OGDF_GEOM_EPS)
+{
+	return (a > (b + eps));
+}
+
+inline
+	bool DIsLessEqual(const double &a, const double &b, const double eps = OGDF_GEOM_EPS)
+{
+	return (a < (b + eps));
+}
+
+inline
+	bool DIsLess(const double &a, const double &b, const double eps = OGDF_GEOM_EPS)
+{
+	return (a < (b - eps));
+}
+
+inline
+	double DRound(const double &d, int prec = 0)
+{
+	if (prec == 0)
+		return floor(d + 0.5);
+	double factor = pow(10.0, ((double) prec));
+	return DRound(d * factor, 0) / factor;
+}
+
+/**
+ * \brief Parameterized base class for points.
+ *
+ * This class serves as base class for two-dimensional points with specific
+ * coordinate types like integer points (IPoint) and real points (DPoint).
+ * The template parameter NUMBER is the type for the coordinates of the point
+ * and has to support assignment and equality/inequality operators.
+ */
+template <class NUMBER>
+class GenericPoint
+{
+public:
+	//! The type for coordinates of the point.
+	typedef NUMBER numberType;
+
+	NUMBER m_x; //!< The x-coordinate.
+	NUMBER m_y; //!< The y-coordinate.
+
+	//! Creates a generic point.
+	/**
+	 * \warning Does not assign something like zero to the coordinates,
+	 *          since we do not require that 0 can be casted to a NUMBER.
+	 */
+	GenericPoint() { }
+
+	//! Creates a generic point (\a x,\a y).
+	GenericPoint(NUMBER x, NUMBER y) : m_x(x), m_y(y) { }
+
+	//! Copy constructor.
+	GenericPoint(const GenericPoint &ip) : m_x(ip.m_x), m_y(ip.m_y) { }
+
+	//! Assignment operator.
+	GenericPoint operator=(const GenericPoint &ip) {
+		m_x = ip.m_x;
+		m_y = ip.m_y;
+		return *this;
+	}
+
+	//! Equality operator.
+	bool operator==(const GenericPoint &ip) const {
+		return m_x == ip.m_x && m_y == ip.m_y;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const GenericPoint &ip) const {
+		return m_x != ip.m_x || m_y != ip.m_y;
+	}
+
+};//class GenericPoint
+
+
+/**
+ * \brief Integer points.
+ *
+ * This class represent a two-dimensional point with integer coordinates.
+ */
+class OGDF_EXPORT IPoint : public GenericPoint<int>
+{
+public:
+	//! Creates an integer point (0,0).
+	IPoint() : GenericPoint<int>(0,0) { }
+
+	//! Creates an integer point (\a x,\a y).
+	IPoint(int x, int y) : GenericPoint<int>(x,y) { }
+
+	//! Copy constructor.
+	IPoint(const IPoint &ip) : GenericPoint<int>(ip) { }
+
+	//! Returns the euclidean distance between \a p and this point.
+	double distance(const IPoint &p) const;
+};//class IPoint
+
+
+//! Output operator for integer points.
+OGDF_EXPORT ostream &operator<<(ostream &os, const IPoint &ip);
+
+
+template<> class DefHashFunc<IPoint>
+{
+public:
+	int hash(const IPoint &ip) const {
+		return 7*ip.m_x + 23*ip.m_y;
+	}
+};
+
+
+/**
+ * \brief Polylines with integer coordinates.
+ *
+ * This class represents integer polylines by a list of integer points.
+ * Such polylines are, e.g., used in layouts for representing bend
+ * point lists. Note that in this case, only the bend points are in the
+ * list and neither the start nor the end point.
+ */
+class OGDF_EXPORT IPolyline : public List<IPoint> {
+public:
+	//! Creates an empty integer polyline.
+	IPolyline() { }
+
+	//! Copy constructor.
+	IPolyline(const IPolyline &ipl) : List<IPoint>(ipl) { }
+
+	//! Assignment operator.
+	IPolyline &operator=(const IPolyline &ipl) {
+		List<IPoint>::operator =(ipl);
+		return *this;
+	}
+
+	//! Returns the euclidean length of the polyline.
+	double length() const;
+};
+
+
+
+/**
+ * \brief Real points.
+ *
+ * This class represent a two-dimensional point with real coordinates.
+ */
+class OGDF_EXPORT DPoint : public GenericPoint<double>
+{
+public:
+	//! Creates a real point (0,0).
+	DPoint() : GenericPoint<double>(0,0) { }
+
+	//! Creates a real point (\a x,\a y).
+	DPoint(double x, double y) : GenericPoint<double>(x,y) { }
+
+	//! Copy constructor.
+	DPoint(const DPoint &dp) : GenericPoint<double>(dp) { }
+
+	//! Relaxed equality operator.
+	bool operator==(const DPoint &dp) const {
+		return DIsEqual(m_x, dp.m_x) && DIsEqual(m_y,dp.m_y);
+	}
+
+	//! Returns the norm of the point.
+	double norm() const {
+		return sqrt(m_x*m_x + m_y*m_y);
+	}
+
+	//! Addition of real points.
+	DPoint operator+(const DPoint &p) const;
+
+	//! Subtraction of real points.
+	DPoint operator-(const DPoint &p) const;
+
+	//! Returns the euclidean distance between \a p and this point.
+	double distance(const DPoint &p) const;
+};
+
+//! Output operator for real points.
+OGDF_EXPORT ostream &operator<<(ostream &os, const DPoint &dp);
+
+
+/**
+ * \brief Vectors with real coordinates.
+ */
+class OGDF_EXPORT DVector : public DPoint {
+public:
+
+	//! Creates a vector (0,0).
+	DVector() : DPoint() { }
+
+	//! Creates a vector (\a x,\a y).
+	DVector(double x, double y) : DPoint(x, y) { }
+
+	//! Copy constructor.
+	DVector(const DVector &dv) : DPoint(dv) { }
+
+	//! Assignment operator.
+	DVector operator=(const DPoint &ip) {
+		if (this != &ip)
+		{
+			m_x = ip.m_x;
+			m_y = ip.m_y;
+		}
+		return *this;
+	}
+
+	//! Multiplies all coordinates with \a val.
+	DVector operator*(const double val) const;
+
+	//! Divides all coordinates by \a val.
+	DVector operator/(const double val) const;
+
+	//! Returns the length of the vector.
+	double length() const;
+
+	//! Returns the determinante of the vector.
+	double operator^(const DVector &dv) const;
+
+	//! Returns the scalar product of this vecor and \a dv.
+	double operator*(const DVector &dv) const;
+
+	/**
+	* \brief Returns a vector that is orthogonal to this vector.
+	*
+	* Returns the vector \f$(y/x,1)\f$ if \f$x\neq 0\f$, or \f$(1,0)\f$
+	* otherwise, where \f$(x,y)\f$ is this vector.
+	*/
+	DVector operator++() const;
+
+	/**
+	* \brief Returns a vector that is orthogonal to this vector.
+	*
+	* Returns the vector \f$(-y/x,-1)\f$ if \f$x\neq 0\f$, or \f$(-1,0)\f$
+	* otherwise, where \f$(x,y)\f$ is this vector.
+	*/
+	DVector operator--() const;
+};
+
+
+
+/**
+ * \brief Polylines with real coordinates.
+ *
+ * This class represents real polylines by a list of real points.
+ * Such polylines are, e.g., used in layouts for representing bend
+ * point lists.
+ */
+class OGDF_EXPORT DPolyline : public List<DPoint> {
+	static const double s_prec; //!< The conversion-precision.
+public:
+	//! Creates an empty integer polyline.
+	DPolyline() { }
+
+	//! Copy constructor.
+	DPolyline(const DPolyline &dpl) : List<DPoint>(dpl) { }
+
+	//! Assignment operator.
+	DPolyline &operator=(const DPolyline &dpl) {
+		List<DPoint>::operator =(dpl);
+		return *this;
+	}
+
+	//! Returns the euclidean length of the polyline.
+	double length() const;
+
+	/**
+	 * \brief Returns a point on the polyline which is \a fraction * \a len
+	 *        away from the start point.
+	 *
+	 * @param fraction defines the fraction of \a lento be considered.
+	 * @param len is the given length, or the length of the polyline if \a len < 0.
+	 */
+	DPoint position(const double fraction, double len = -1.0) const;
+
+	//! Writes the polyline as graph in gml-format to file \a filename.
+	void writeGML(const char* filename) const;
+
+	//! Writes the polyline as graph in gml-format to output stream \a stream.
+	void writeGML(ostream &stream) const;
+
+	//! Deletes all successive points with equal coordinates.
+	void unify();
+
+	//! Deletes all redundant points on the polyline that lie on a straight line given by their adajcent points.
+	void normalize();
+
+	//! Deletes all redundant points on the polyline that lie on a straight line given by their adajcent points.
+	void normalize(DPoint src, //start point of the edge
+		DPoint tgt); //end point of the edge
+
+	//! Converts all coordinates rounded to \a s_prec decimal digits.
+	void convertToInt();
+
+	//void reConvertToDouble();
+};
+
+
+/**
+ * \brief Lines with real coordinates.
+ */
+class OGDF_EXPORT DLine {
+
+protected:
+	DPoint m_start; //!< The start point of the line.
+	DPoint m_end;   //!< The end point of the line.
+
+public:
+
+	//! Creates an empty line.
+	DLine() : m_start(), m_end() {}
+
+	//! Creates a line with start point \a p1 and end point \a p2.
+	DLine(const DPoint &p1, const DPoint &p2) : m_start(p1), m_end(p2) {}
+
+	//! Copy constructor.
+	DLine(const DLine &dl) : m_start(dl.m_start), m_end(dl.m_end) {}
+
+	//! Creates a line with start point (\a x1,\a y1) and end point (\a x2,\a y2).
+	DLine(double x1, double y1, double x2, double y2) {
+		m_start.m_x = x1; m_start.m_y = y1; m_end.m_x = x2; m_end.m_y = y2;
+	}
+
+	//! Equality operator.
+	bool operator==(const DLine &dl) const {
+		return m_start == dl.m_start && m_end == dl.m_end;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const DLine &dl) const {
+		return !(*this == dl);
+	}
+
+	//! Assignment operator.
+	DLine &operator= (const DLine &dl) {
+		if (this != &dl) { // don't assign myself
+			m_start = dl.m_start;
+			m_end   = dl.m_end;
+		}
+		return *this;
+	}
+
+	//! Returns the start point of the line.
+	const DPoint &start() const { return m_start; }
+
+	//! Returns the end point of the line.
+	const DPoint &end() const { return m_end; }
+
+	//! Returns the x-coordinate of the difference (end point - start point).
+	double dx() const { return m_end.m_x - m_start.m_x; }
+
+	//! Returns the y-coordinate of the difference (end point - start point).
+	double dy() const { return m_end.m_y - m_start.m_y; }
+
+	//! Returns the slope of the line.
+	double slope() const { return (dx() == 0) ? DBL_MAX : dy()/dx(); }
+
+	//! Returns the value y' such that (0,y') lies on the unlimited straight-line define dby this line.
+	double yAbs() const { return (dx() == 0) ? DBL_MAX : m_start.m_y - (slope() * m_start.m_x); }
+
+	//! Returns true iff this line runs vertically.
+	bool isVertical()   const { return (DIsEqual(dx(), 0.0)); }
+
+	//! Returns true iff this line runs horizontally.
+	bool isHorizontal() const { return (DIsEqual(dy(), 0.0)); }
+
+	/**
+	 * \brief Returns true iff \a line and this line intersect.
+	 *
+	 * @param line is the second line.
+	 * @param inter is assigned  the intersection point if true is returned.
+	 * @param endpoints determines if common endpoints are treated as intersection.
+	 */
+	bool intersection(const DLine &line, DPoint &inter, bool endpoints = true) const;
+
+	//! Returns true iff \a p lie on this line.
+	bool contains(const DPoint &p) const;
+
+	//! Returns the length (euclidean distance between start and edn point) of this line.
+	double length() const {
+		return m_start.distance(m_end);
+	}
+
+	/**
+	 * \brief Computes the intersection between this line and the horizontal line through y = \a horAxis.
+	 *
+	 * @param horAxis defines the horizontal line.
+	 * @param crossing is assigned the x-coordinate of the intersection point.
+	 *
+	 * \return the number of intersection points (0 = none, 1 = one, 2 = this
+	 *         line lies on the horizontal line through y = \a horAxis).
+	 */
+	int horIntersection(const double horAxis, double &crossing) const;
+
+	// gives the intersection with the vertical axis 'verAxis', returns the number of intersections
+	// 0 = no, 1 = one, 2 = infinity or both end-points, e.g. parallel on this axis
+	/**
+	 * \brief Computes the intersection between this line and the vertical line through x = \a verAxis.
+	 *
+	 * @param verAxis defines the vertical line.
+	 * @param crossing is assigned the y-coordinate of the intersection point.
+	 *
+	 * \return the number of intersection points (0 = none, 1 = one, 2 = this
+	 *         line lies on the vertical line through x = \a verAxis).
+	 */
+	int verIntersection(const double verAxis, double &crossing) const;
+};
+
+//! Output operator for lines.
+ostream &operator<<(ostream &os, const DLine &dl);
+
+
+/**
+ * \brief Rectangles with real coordinates.
+ */
+class OGDF_EXPORT DRect {
+
+private:
+	DPoint m_p1; //!< The lower left point of the rectangle.
+	DPoint m_p2; //!< The upper right point of the rectangle.
+
+public:
+	//! Creates a rectangle with lower left and upper right point (0,0).
+	DRect() : m_p1(), m_p2() {}
+
+	//! Creates a rectangle with lower left point \a p1 and upper right point \a p2.
+	DRect(const DPoint &p1, const DPoint &p2) : m_p1(p1), m_p2(p2)
+	{ normalize(); }
+
+	//! Creates a rectangle with lower left point (\a x1,\a y1) and upper right point (\a x1,\a y2).
+	DRect(double x1, double y1, double x2, double y2) {
+		m_p1.m_x = x1; m_p1.m_y = y1; m_p2.m_x = x2; m_p2.m_y = y2;
+		normalize();
+	}
+
+	//! Creates a rectangle defined by the end points of line \a dl.
+	DRect(const DLine &dl) : m_p1(dl.start()), m_p2(dl.end())
+	{ normalize(); }
+
+	//! Copy constructor.
+	DRect(const DRect &dr) : m_p1(dr.m_p1), m_p2(dr.m_p2)
+	{ normalize(); }
+
+	//! Equality operator.
+	bool operator==(const DRect &dr) const {
+		return m_p1 == dr.m_p1 && m_p2 == dr.m_p2;
+	}
+
+	//! Inequality operator.
+	bool operator!=(const DRect &dr) const {
+		return !(*this == dr);
+	}
+
+	//! Assignment operator.
+	DRect &operator= (const DRect &dr) {
+		if (this != &dr) { // don't assign myself
+			m_p1 = dr.m_p1;
+			m_p2 = dr.m_p2;
+		}
+		return *this;
+	}
+
+	//! Returns the width of the rectangle.
+	double width() const {
+		return m_p2.m_x - m_p1.m_x;
+	}
+
+	//! Returns the height of the rectangle.
+	double height() const {
+		return m_p2.m_y - m_p1.m_y;
+	}
+
+	/**
+	 * \brief Normalizes the rectangle.
+	 *
+	 * Makes sure that the lower left point lies below and left of the upper
+	 * right point.
+	 */
+	void normalize() {
+		if (width() < 0)  swap(m_p2.m_x, m_p1.m_x);
+		if (height() < 0) swap(m_p2.m_y, m_p1.m_y);
+	}
+
+	//! Returns the lower left point of the rectangle.
+	const DPoint &p1() const { return m_p1; }
+
+	//! Returns the upper right point of the rectangle.
+	const DPoint &p2() const { return m_p2; }
+
+	//! Returns the top side of the rectangle.
+	const DLine topLine() const {
+		return DLine( DPoint(m_p1.m_x, m_p2.m_y), DPoint(m_p2.m_x, m_p2.m_y));
+	}
+
+	//! Returns the right side of the rectangle.
+	const DLine rightLine() const {
+		return DLine( DPoint(m_p2.m_x, m_p2.m_y), DPoint(m_p2.m_x, m_p1.m_y));
+	}
+
+	//! Returns the left side of the rectangle.
+	const DLine leftLine() const {
+		return DLine( DPoint(m_p1.m_x, m_p1.m_y), DPoint(m_p1.m_x, m_p2.m_y));
+	}
+
+	//! Returns the bottom side of the rectangle.
+	const DLine bottomLine() const {
+		return DLine( DPoint(m_p2.m_x, m_p1.m_y), DPoint(m_p1.m_x, m_p1.m_y));
+	}
+
+	//! Swaps the y-coordinates of the two points.
+	void yInvert() { swap(m_p1.m_y, m_p2.m_y); }
+
+	//! Swaps the x-coordinates of the two points.
+	void xInvert() { swap(m_p1.m_x, m_p2.m_x); }
+
+	//! Returns true iff \a p lies within this rectangle.
+	bool contains(const DPoint &p) const {
+		if (DIsLess   (p.m_x, m_p1.m_x) ||
+			DIsGreater(p.m_x, m_p2.m_x) ||
+			DIsLess   (p.m_y, m_p1.m_y) ||
+			DIsGreater(p.m_y, m_p2.m_y))
+			return false;
+		return true;
+	}
+};
+
+//! Output operator for rectangles.
+OGDF_EXPORT ostream &operator<<(ostream &os, const DRect &dr);
+
+
+/**
+* \brief Scaling between coordinate systems.
+*/
+class OGDF_EXPORT DScaler {
+
+private:
+
+	const DRect *m_from; //!< Rectangluar area in source coordinate system.
+	const DRect *m_to; //!< Rectangluar area in target coordinate system.
+
+	double m_factorX; //!< The scaling factor for the x-coordinates.
+	double m_factorY; //!< The scaling factor for the y-coordinates.
+	double m_offsetX; //!< The offset for the x-coordinates.
+	double m_offsetY; //!< The offset for the y-coordinates.
+
+public:
+	//! Creates a scaler for scaling from area \a from to area \a to.
+	DScaler(const DRect &from, const DRect &to) :
+		m_from(&from),
+		m_to(&to),
+		m_factorX(to.width()/from.width()),
+		m_factorY(to.height()/from.height()),
+		m_offsetX(to.p1().m_x - from.p1().m_x * m_factorX),
+		m_offsetY(to.p1().m_y - from.p1().m_y * m_factorY) { }
+
+	~DScaler() {}
+
+	//! Returns the rectangle in the source coordinate system.
+	const DRect &from() const { return *m_from; }
+
+	//! Returns the rectangle in the target coordinate system.
+	const DRect &to()   const { return *m_to;   }
+
+	//! Transforms x-coordinates from source to target coordinate system.
+	double scaleToX(double x) { return x * m_factorX + m_offsetX; }
+
+	//! Transforms y-coordinates from source to target coordinate system.
+	double scaleToY(double y) { return y * m_factorY + m_offsetY; }
+
+	//! Scales a horizontal length from source to target coordinate system.
+	double scaleWidth(double width)   { return width  * m_to->width() /m_from->width();  }
+
+	//! Scales a vertical length from source to target coordinate system.
+	double scaleHeight(double height) { return height * m_to->height()/m_from->height(); }
+};
+
+
+//! Output operator for scalers.
+OGDF_EXPORT ostream &operator<<(ostream &os, const DScaler &ds);
+
+
+/**
+ * \brief Line segments with real coordinates.
+ */
+class OGDF_EXPORT DSegment : public DLine {
+
+protected:
+
+public:
+
+	//! Creates an empty line segment.
+	DSegment() : DLine() {}
+
+	//! Creates a line segment from \a p1 to \a p2.
+	DSegment(const DPoint &p1, const DPoint &p2) : DLine(p1, p2) {}
+
+	//! Creates a line segment defined by the start and end point of line \a dl.
+	DSegment(const DLine &dl) : DLine(dl) {}
+
+	//! Creates a line segment from (\a x1,\a y1) to (\a x2,\a y2).
+	DSegment(double x1, double y1, double x2, double y2) : DLine(x1, y1, x2, y2) {}
+
+	//! Copy constructor.
+	DSegment(const DSegment &ds) : DLine(ds) {}
+
+
+	/**
+	 * \brief Determines if \a segment is left or right of this segment.
+	 *
+	 * \return a positve number if \a segment is left of this segment, and a
+	 *         a negative number if \a segment is right of this segment.
+	 */
+	double det(const DSegment &segment) const {
+		return (dx() * segment.dy() - dy() * segment.dx());
+	}
+};
+
+
+/**
+ * \brief Polygons with real coordinates.
+ */
+class OGDF_EXPORT DPolygon : public DPolyline {
+
+protected:
+
+	bool m_counterclock; //!< If true points are given in conter-clockwise order.
+
+public:
+	/**
+	 * \brief Creates an empty polygon.
+	 *
+	 * @param cc determines in which order the points will be given; true means
+	 *        counter-clockwise, false means clockwise.
+	 */
+	DPolygon(bool cc = true) : m_counterclock(cc) { }
+
+	//! Creates a polgon from a rectangle.
+	DPolygon(const DRect &rect, bool cc = true) : m_counterclock(cc) {
+		operator=(rect);
+	}
+
+	//! Copy constructor.
+	DPolygon(const DPolygon  &dop) : DPolyline(dop), m_counterclock(dop.m_counterclock) { }
+
+	//! Returns true iff points are given in counter-clockwise order.
+	bool counterclock() { return m_counterclock; }
+
+	//! Assignment operator.
+	DPolygon &operator=(const DPolygon &dop) {
+		List<DPoint>::operator =(dop);
+		m_counterclock = dop.m_counterclock;
+		return *this;
+	}
+
+	//! Assignment operator (for assigning from a rectangle).
+	DPolygon &operator=(const DRect &rect);
+
+	//! Returns the line segment that starts at position \a it.
+	DSegment segment(ListConstIterator<DPoint> it) const;
+
+
+	//! Inserts point \a p, that must lie on a polygon segment.
+	ListIterator<DPoint> insertPoint(const DPoint &p) {
+		return insertPoint(p, begin(), begin());
+	}
+
+	/**
+	 * \brief Inserts point \a p, but just searching from point \a p1 to \a p2.
+	 *
+	 * That is, from the segment starting at \a p1 to the segment ending at \a p2.
+	 */
+	ListIterator<DPoint> insertPoint(const DPoint &p,
+		ListIterator<DPoint> p1,
+		ListIterator<DPoint> p2);
+
+	//! Inserts point p on every segment (a,b) with \a p in the open range ]a, b[.
+	void insertCrossPoint(const DPoint &p);
+
+	//! Returns the list of intersection points of this polygon with \a p.
+	int getCrossPoints(const DPolygon &p, List<DPoint> &crossPoints) const;
+
+	//! Deletes all consecutive points that are equal.
+	void unify();
+
+	//! Deletes all points, which are not facets.
+	void normalize();
+
+	//! Writes the polygon as graph in gml-format to file \a filename.
+	void writeGML(const char* filename) const;
+
+	//! Writes the polygon as graph in gml-format to output stream \a stream.
+	void writeGML(ostream &stream)      const;
+
+	/**
+	 * \brief Checks wether a Point /a p is inside the Poylgon or not.
+	 * \note Polygons with crossings have inner areas that count as outside!
+	 * \par p the Point to check.
+	 * return true if Point is inside.
+	 */
+	bool containsPoint(DPoint &p) const;
+};
+
+//! Output operator for polygons.
+OGDF_EXPORT ostream &operator<<(ostream &os, const DPolygon &dop);
+
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/memory.h b/ogdf/basic/memory.h
new file mode 100644
index 0000000..3ec848f
--- /dev/null
+++ b/ogdf/basic/memory.h
@@ -0,0 +1,126 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of memory manager for allocating small
+ *        pieces of memory
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_MEMORY_H
+#define OGDF_MEMORY_H
+
+
+#include <stdlib.h>
+#include <new>
+
+
+//---------------------------------------------------------------------
+// configuration of memory-manager (can also be set by compiler flag)
+//
+// the good old pool allocator (not thread-safe)
+//#define OGDF_MEMORY_POOL_NTS
+//
+// just using malloc/free (thread-safe)
+#define OGDF_MEMORY_MALLOC_TS
+//
+// new buffered-pool allocator per thread pool (thread-safe)
+//#define OGDF_MEMORY_POOL_TS
+//
+// default (nothing defined): depending on system / compiler
+//---------------------------------------------------------------------
+
+// By default, we use the non-thread safe variant on cygwin and g++ 3.x
+// since thread-local storage is not working there, and a thread-safe
+// pool allocator otherwise.
+#if !defined(OGDF_MEMORY_POOL_NTS) && !defined(OGDF_MEMORY_MALLOC_TS) && !defined(OGDF_MEMORY_POOL_TS)
+#define OGDF_MEMORY_POOL_TS
+#endif
+
+#include "../internal/basic/PoolMemoryAllocator.h"
+#include "../internal/basic/MallocMemoryAllocator.h"
+
+
+namespace ogdf {
+
+#define OGDF_MM(Alloc) \
+public: \
+static void *operator new(size_t nBytes) { \
+	if(OGDF_LIKELY(Alloc::checkSize(nBytes))) \
+		return Alloc::allocate(nBytes); \
+	else \
+	return MallocMemoryAllocator::allocate(nBytes); \
+} \
+\
+static void operator delete(void *p, size_t nBytes) { \
+	if(OGDF_LIKELY(p != 0)) { \
+		if(OGDF_LIKELY(Alloc::checkSize(nBytes))) \
+			Alloc::deallocate(nBytes, p); \
+		else \
+			MallocMemoryAllocator::deallocate(nBytes, p); \
+	} \
+} \
+static void *operator new(size_t, void *p) { return p; } \
+static void operator delete(void *, void *) { }
+
+
+#define OGDF_NEW new
+
+#ifdef OGDF_MEMORY_MALLOC_TS
+#define OGDF_ALLOCATOR ogdf::MallocMemoryAllocator
+#else
+#define OGDF_ALLOCATOR ogdf::PoolMemoryAllocator
+#endif
+
+//! Creates new and delete operators in a class using ogdf's memory allocator.
+#define OGDF_NEW_DELETE OGDF_MM(OGDF_ALLOCATOR)
+
+//! Creates new and delete operators in a class using the malloc memory allocator.
+#define OGDF_MALLOC_NEW_DELETE OGDF_MM(MallocMemoryAllocator)
+
+} // namespace ogdf
+
+
+#endif
diff --git a/ogdf/basic/simple_graph_alg.cpp b/ogdf/basic/simple_graph_alg.cpp
new file mode 100644
index 0000000..dd36aef
--- /dev/null
+++ b/ogdf/basic/simple_graph_alg.cpp
@@ -0,0 +1,1056 @@
+/*
+ * $Revision: 2594 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-15 15:35:29 +0200 (So, 15. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of simple graph algorithms
+ *
+ * \author Carsten Gutwenger, Sebastian Leipert
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "simple_graph_alg.h"
+#include "SList.h"
+#include "Stack.h"
+#include "GraphCopy.h"
+#include "tuples.h"
+#include "BoundedStack.h"
+
+
+namespace ogdf {
+
+
+//---------------------------------------------------------
+// isLoopFree(), makeLoopFree()
+// testing for self-loops, removing self-loops
+//---------------------------------------------------------
+bool isLoopFree(const Graph &G)
+{
+	edge e;
+	forall_edges(e,G)
+		if(e->isSelfLoop()) return false;
+
+	return true;
+}
+
+
+void makeLoopFree(Graph &G)
+{
+	edge e, eNext;
+	for (e = G.firstEdge(); e; e = eNext) {
+		eNext = e->succ();
+		if (e->isSelfLoop()) G.delEdge(e);
+	}
+}
+
+
+//---------------------------------------------------------
+// isParallelFree(), makeParallelFree()
+// testing for multi-edges, removing multi-edges
+//---------------------------------------------------------
+
+void parallelFreeSort(const Graph &G, SListPure<edge> &edges)
+{
+	G.allEdges(edges);
+
+	BucketSourceIndex bucketSrc;
+	edges.bucketSort(0,G.maxNodeIndex(),bucketSrc);
+
+	BucketTargetIndex bucketTgt;
+	edges.bucketSort(0,G.maxNodeIndex(),bucketTgt);
+}
+
+
+bool isParallelFree(const Graph &G)
+{
+	if (G.numberOfEdges() <= 1) return true;
+
+	SListPure<edge> edges;
+	parallelFreeSort(G,edges);
+
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it, e;
+	for(it = ++it; it.valid(); ++it, ePrev = e) {
+		e = *it;
+		if (ePrev->source() == e->source() && ePrev->target() == e->target())
+			return false;
+	}
+
+	return true;
+}
+
+
+int numParallelEdges(const Graph &G)
+{
+	if (G.numberOfEdges() <= 1) return 0;
+
+	SListPure<edge> edges;
+	parallelFreeSort(G,edges);
+
+	int num = 0;
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it, e;
+	for(it = ++it; it.valid(); ++it, ePrev = e) {
+		e = *it;
+		if (ePrev->source() == e->source() && ePrev->target() == e->target())
+			++num;
+	}
+
+	return num;
+}
+
+
+
+//---------------------------------------------------------
+// isParallelFreeUndirected(), makeParallelFreeUndirected()
+// testing for (undirected) multi-edges, removing (undirected) multi-edges
+//---------------------------------------------------------
+
+void parallelFreeSortUndirected(const Graph &G,
+	SListPure<edge> &edges,
+	EdgeArray<int> &minIndex,
+	EdgeArray<int> &maxIndex)
+{
+	G.allEdges(edges);
+
+	edge e;
+	forall_edges(e,G) {
+		int srcIndex = e->source()->index(), tgtIndex = e->target()->index();
+		if (srcIndex <= tgtIndex) {
+			minIndex[e] = srcIndex; maxIndex[e] = tgtIndex;
+		} else {
+			minIndex[e] = tgtIndex; maxIndex[e] = srcIndex;
+		}
+	}
+
+	BucketEdgeArray bucketMin(minIndex), bucketMax(maxIndex);
+	edges.bucketSort(0,G.maxNodeIndex(),bucketMin);
+	edges.bucketSort(0,G.maxNodeIndex(),bucketMax);
+}
+
+
+bool isParallelFreeUndirected(const Graph &G)
+{
+	if (G.numberOfEdges() <= 1) return true;
+
+	SListPure<edge> edges;
+	EdgeArray<int> minIndex(G), maxIndex(G);
+	parallelFreeSortUndirected(G,edges,minIndex,maxIndex);
+
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it, e;
+	for(it = ++it; it.valid(); ++it, ePrev = e) {
+		e = *it;
+		if (minIndex[ePrev] == minIndex[e] && maxIndex[ePrev] == maxIndex[e])
+			return false;
+	}
+
+	return true;
+}
+
+
+int numParallelEdgesUndirected(const Graph &G)
+{
+	if (G.numberOfEdges() <= 1) return 0;
+
+	SListPure<edge> edges;
+	EdgeArray<int> minIndex(G), maxIndex(G);
+	parallelFreeSortUndirected(G,edges,minIndex,maxIndex);
+
+	int num = 0;
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it, e;
+	for(it = ++it; it.valid(); ++it, ePrev = e) {
+		e = *it;
+		if (minIndex[ePrev] == minIndex[e] && maxIndex[ePrev] == maxIndex[e])
+			++num;
+	}
+
+	return num;
+}
+
+
+
+//---------------------------------------------------------
+// isConnected(), makeConnected()
+// testing connectivity, establishing connectivity
+//---------------------------------------------------------
+
+bool isConnected(const Graph &G)
+{
+	node v = G.firstNode();
+	if (v == 0) return true;
+
+	int count = 0;
+	NodeArray<bool> visited(G,false);
+	BoundedStack<node> S(G.numberOfNodes());
+
+	S.push(v);
+	visited[v] = true;
+	while(!S.empty()) {
+		v = S.pop();
+		++count;
+
+		adjEntry adj;
+		forall_adj(adj,v) {
+			node w = adj->twinNode();
+			if(!visited[w]) {
+				visited[w] = true;
+				S.push(w);
+			}
+		}
+	}
+
+	return (count == G.numberOfNodes());
+}
+
+
+void makeConnected(Graph &G, List<edge> &added)
+{
+	added.clear();
+	if (G.numberOfNodes() == 0) return;
+	NodeArray<bool> visited(G,false);
+	BoundedStack<node> S(G.numberOfNodes());
+
+	node pred = 0, u;
+	forall_nodes(u,G)
+	{
+		if (visited[u]) continue;
+
+		node vMinDeg = u;
+		int  minDeg  = u->degree();
+
+		S.push(u);
+		visited[u] = true;
+
+		while(!S.empty())
+		{
+			node v = S.pop();
+
+			adjEntry adj;
+			forall_adj(adj,v) {
+				node w = adj->twinNode();
+				if(!visited[w]) {
+					visited[w] = true;
+					S.push(w);
+
+					int wDeg = w->degree();
+					if (wDeg < minDeg) {
+						vMinDeg = w;
+						minDeg  = wDeg;
+					}
+				}
+			}
+		}
+
+		if (pred)
+			added.pushBack(G.newEdge(pred,vMinDeg));
+		pred = vMinDeg;
+	}
+}
+
+
+int connectedComponents(const Graph &G, NodeArray<int> &component)
+{
+	int nComponent = 0;
+	component.fill(-1);
+
+	StackPure<node> S;
+
+	node v;
+	forall_nodes(v,G) {
+		if (component[v] != -1) continue;
+
+		S.push(v);
+		component[v] = nComponent;
+
+		while(!S.empty()) {
+			node w = S.pop();
+			edge e;
+			forall_adj_edges(e,w) {
+				node x = e->opposite(w);
+				if (component[x] == -1) {
+					component[x] = nComponent;
+					S.push(x);
+				}
+			}
+		}
+
+		++nComponent;
+	}
+
+	return nComponent;
+}
+
+//return the isolated nodes too, is used in incremental layout
+int connectedIsolatedComponents(const Graph &G, List<node> &isolated,
+								NodeArray<int> &component)
+{
+	int nComponent = 0;
+	component.fill(-1);
+
+	StackPure<node> S;
+
+	node v;
+	forall_nodes(v,G) {
+		if (component[v] != -1) continue;
+
+		S.push(v);
+		component[v] = nComponent;
+
+		while(!S.empty()) {
+			node w = S.pop();
+			if (w->degree() == 0) isolated.pushBack(w);
+			edge e;
+			forall_adj_edges(e,w) {
+				node x = e->opposite(w);
+				if (component[x] == -1) {
+					component[x] = nComponent;
+					S.push(x);
+				}
+			}
+		}
+
+		++nComponent;
+	}
+
+	return nComponent;
+}//connectedIsolated
+
+
+//---------------------------------------------------------
+// isBiconnected(), makeBiconnected()
+// testing biconnectivity, establishing biconnectivity
+//---------------------------------------------------------
+static node dfsIsBicon (const Graph &G, node v, node father,
+	NodeArray<int> &number, NodeArray<int> &lowpt, int &numCount)
+{
+	node first_son = 0;
+
+	lowpt[v] = number[v] = ++numCount;
+
+	edge e;
+	forall_adj_edges(e,v) {
+		node w = e->opposite(v);
+		if (v == w) continue; // ignore self-loops
+
+		if (number[w] == 0) {
+			if (first_son == 0) first_son = w;
+
+			node cutVertex = dfsIsBicon(G,w,v,number,lowpt,numCount);
+			if (cutVertex) return cutVertex;
+
+			// is v cut vertex ?
+			if (lowpt[w] >= number[v] && (w != first_son || father != 0))
+				return v;
+
+			if (lowpt[w] < lowpt[v]) lowpt[v] = lowpt[w];
+
+		} else {
+
+			if (number[w] < lowpt[v]) lowpt[v] = number[w];
+		}
+	}
+
+	return 0;
+}
+
+
+bool isBiconnected(const Graph &G, node &cutVertex)
+{
+	if (G.empty()) return true;
+
+	NodeArray<int> number(G,0);
+	NodeArray<int> lowpt(G);
+	int numCount = 0;
+
+	cutVertex = dfsIsBicon(G,G.firstNode(),0,number,lowpt,numCount);
+
+	return (numCount == G.numberOfNodes() && cutVertex == 0);
+}
+
+
+static void dfsMakeBicon (Graph &G,
+	node v, node father,
+	NodeArray<int> &number,
+	NodeArray<int> &lowpt,
+	int &numCount,
+	List<edge> &added)
+{
+	node predSon = 0;
+
+	lowpt[v] = number[v] = ++numCount;
+
+	edge e;
+	forall_adj_edges(e,v) {
+		node w = e->opposite(v);
+		if (v == w) continue; // ignore self-loops
+
+		if (number[w] == 0) {
+
+			dfsMakeBicon(G,w,v,number,lowpt,numCount,added);
+
+			// is v cut vertex ?
+			if (lowpt[w] >= number[v]) {
+				if (predSon == 0 && father != 0)
+					added .pushBack(G.newEdge(w,father));
+
+				else if (predSon != 0)
+					added.pushBack(G.newEdge(w,predSon));
+			}
+
+			if (lowpt[w] < lowpt[v]) lowpt[v] = lowpt[w];
+			predSon = w;
+
+		} else {
+
+			if (number[w] < lowpt[v]) lowpt[v] = number[w];
+		}
+	}
+}
+
+
+void makeBiconnected(Graph &G, List<edge> &added)
+{
+	if (G.empty()) return;
+
+	makeConnected(G,added);
+
+	NodeArray<int> number(G,0);
+	NodeArray<int> lowpt(G);
+	int numCount = 0;
+
+	dfsMakeBicon(G,G.firstNode(),0,number,lowpt,numCount,added);
+}
+
+
+//---------------------------------------------------------
+// biconnectedComponents()
+// computing biconnected components
+//---------------------------------------------------------
+static void dfsBiconComp (const Graph &G,
+	node v,
+	node father,
+	NodeArray<int> &number,
+	NodeArray<int> &lowpt,
+	StackPure<node> &called,
+	EdgeArray<int> &component,
+	int &nNumber,
+	int &nComponent)
+{
+	lowpt[v] = number[v] = ++nNumber;
+	called.push(v);
+
+	edge e;
+	forall_adj_edges(e,v) {
+		node w = e->opposite(v);
+		if (v == w) continue; // ignore self-loops
+
+		if (number[w] == 0) {
+
+			dfsBiconComp(G,w,v,number,lowpt,called,component,
+				nNumber,nComponent);
+
+			if (lowpt[w] < lowpt[v]) lowpt[v] = lowpt[w];
+
+		} else {
+
+			if (number[w] < lowpt[v]) lowpt[v] = number[w];
+		}
+	}
+
+	if (father && (lowpt[v] == number[father])) {
+		node w;
+		do {
+			w = called.top(); called.pop();
+
+			forall_adj_edges(e,w) {
+				if (number[w] > number[e->opposite(w)])
+					component[e] = nComponent;
+			}
+		} while (w != v);
+
+		++nComponent;
+	}
+}
+
+
+int biconnectedComponents(const Graph &G, EdgeArray<int> &component)
+{
+	if (G.empty()) return 0;
+
+	StackPure<node> called;
+	NodeArray<int> number(G,0);
+	NodeArray<int> lowpt(G);
+	int nNumber = 0, nComponent = 0, nIsolated = 0;
+
+	node v;
+	forall_nodes(v,G) {
+		if (number[v] == 0) {
+			bool isolated = true;
+			edge e;
+			forall_adj_edges(e,v)
+				if (!e->isSelfLoop()) {
+					isolated = false; break;
+				}
+
+			if (isolated)
+				++nIsolated;
+			else
+				dfsBiconComp(G,v,0,number,lowpt,called,component,
+					nNumber,nComponent);
+		}
+	}
+
+	return nComponent + nIsolated;
+}
+
+
+//---------------------------------------------------------
+// isTriconnected()
+// testing triconnectivity
+//---------------------------------------------------------
+bool isTriconnectedPrimitive(const Graph &G, node &s1, node &s2)
+{
+	s1 = s2 = 0;
+
+	if (isConnected(G) == false)
+		return false;
+
+	if (isBiconnected(G,s1) == false)
+		return false;
+
+	if (G.numberOfNodes() <= 3)
+		return true;
+
+	// make a copy of G
+	GraphCopySimple GC(G);
+
+	// for each node v in G, we test if G \ v is biconnected
+	node v;
+	forall_nodes(v,G)
+	{
+		node vC = GC.copy(v), wC;
+
+		// store adjacent nodes
+		SListPure<node> adjacentNodes;
+		edge eC;
+		forall_adj_edges(eC,vC) {
+			wC = eC->opposite(vC);
+			// forget self-loops (vC would no longer be in GC!)
+			if (wC != vC)
+				adjacentNodes.pushBack(wC);
+		}
+
+		GC.delNode(vC);
+
+		// test for biconnectivity
+		if(isBiconnected(GC,wC) == false) {
+			s1 = v; s2 = GC.original(wC);
+			return false;
+		}
+
+		// restore deleted node with adjacent edges
+		vC = GC.newNode(v);
+		SListConstIterator<node> it;
+		for(it = adjacentNodes.begin(); it.valid(); ++it)
+			GC.newEdge(vC,*it);
+	}
+
+	return true;
+}
+
+
+//--------------------------------------------------------------------------
+// triangulate()
+//--------------------------------------------------------------------------
+void triangulate(Graph &G)
+{
+	OGDF_ASSERT(isSimple(G));
+
+	CombinatorialEmbedding E(G);
+
+	OGDF_ASSERT(E.consistencyCheck());
+
+	node v;
+	edge e;
+	adjEntry adj, succ, succ2, succ3;
+	NodeArray<int> marked(E.getGraph(), 0);
+
+	forall_nodes(v,E.getGraph()) {
+		marked.init(E.getGraph(), 0);
+
+		forall_adj(adj,v) {
+			marked[adj->twinNode()] = 1;
+		}
+
+		// forall faces adj to v
+		forall_adj(adj,v) {
+			succ = adj->faceCycleSucc();
+			succ2 = succ->faceCycleSucc();
+
+			if (succ->twinNode() != v && adj->twinNode() != v) {
+				while (succ2->twinNode() != v) {
+					if (marked[succ2->theNode()] == 1) {
+						// edge e=(x2,x4)
+						succ3 = succ2->faceCycleSucc();
+						E.splitFace(succ, succ3);
+					}
+					else {
+						// edge e=(v=x1,x3)
+						e = E.splitFace(adj, succ2);
+						marked[succ2->theNode()] = 1;
+
+						// old adj is in wrong face
+						adj = e->adjSource();
+					}
+					succ = adj->faceCycleSucc();
+					succ2 = succ->faceCycleSucc();
+				}
+			}
+		}
+	}
+}
+
+
+//--------------------------------------------------------------------------
+// isAcyclic(), isAcyclicUndirected(), makeAcyclic(), makeAcyclicByReverse()
+// testing acyclicity, establishing acyclicity
+//--------------------------------------------------------------------------
+void dfsIsAcyclic(const Graph &G,
+	node v,
+	NodeArray<int> &number,
+	NodeArray<int> &completion,
+	int &nNumber,
+	int &nCompletion)
+{
+	number[v] = ++nNumber;
+
+	edge e;
+	forall_adj_edges(e,v) {
+		node w = e->target();
+
+		if (number[w] == 0)
+			dfsIsAcyclic(G,w,number,completion,nNumber,nCompletion);
+	}
+
+	completion[v] = ++nCompletion;
+}
+
+
+void dfsIsAcyclicUndirected(const Graph &G,
+	node v,
+	NodeArray<int> &number,
+	int &nNumber,
+	List<edge> &backedges)
+{
+	number[v] = ++nNumber;
+
+	adjEntry adj;
+	node w;
+	forall_adj(adj,v) {
+		w = adj->twinNode();
+		if (number[w] == 0) {
+			dfsIsAcyclicUndirected(G,w,number,nNumber,backedges);
+		} else {
+			if (number[w] > number[v]) {
+				backedges.pushBack(adj->theEdge());
+			}
+		}
+	}
+}
+
+
+bool isAcyclic(const Graph &G, List<edge> &backedges)
+{
+	backedges.clear();
+
+	NodeArray<int> number(G,0), completion(G);
+	int nNumber = 0, nCompletion = 0;
+
+	node v;
+	forall_nodes(v,G)
+		if (number[v] == 0)
+			dfsIsAcyclic(G,v,number,completion,nNumber,nCompletion);
+
+	edge e;
+	forall_edges(e,G) {
+		node src = e->source(), tgt = e->target();
+
+		if (number[src] >= number[tgt] && completion[src] <= completion[tgt])
+			backedges.pushBack(e);
+	}
+
+	return backedges.empty();
+}
+
+
+bool isAcyclicUndirected(const Graph &G, List<edge> &backedges)
+{
+	backedges.clear();
+	int nNumber = 0;
+	NodeArray<int> number(G,0);
+
+	node v;
+	forall_nodes(v,G) {
+		if (number[v] == 0) {
+			dfsIsAcyclicUndirected(G,v,number,nNumber,backedges);
+		}
+	}
+	return backedges.empty();
+}
+
+
+void makeAcyclic(Graph &G)
+{
+	List<edge> backedges;
+	isAcyclic(G,backedges);
+
+	ListIterator<edge> it;
+	for(it = backedges.begin(); it.valid(); ++it)
+		G.delEdge(*it);
+}
+
+
+void makeAcyclicByReverse(Graph &G)
+{
+	List<edge> backedges;
+	isAcyclic(G,backedges);
+
+	ListIterator<edge> it;
+	for(it = backedges.begin(); it.valid(); ++it)
+		if (!(*it)->isSelfLoop()) G.reverseEdge(*it);
+}
+
+
+//---------------------------------------------------------
+// hasSingleSource(), hasSingleSink()
+// testing for single source/sink
+//---------------------------------------------------------
+bool hasSingleSource(const Graph& G, node &s)
+{
+	node v;
+	s = 0;
+
+	forall_nodes(v,G) {
+		if (v->indeg() == 0) {
+			if (s != 0) {
+				s = 0;
+				return false;
+			} else s = v;
+		}
+	}
+	return (G.empty() || s != 0);
+}
+
+
+bool hasSingleSink(const Graph& G, node &t)
+{
+	node v;
+	t = 0;
+
+	forall_nodes(v,G) {
+		if (v->outdeg() == 0) {
+			if (t != 0) {
+				t = 0;
+				return false;
+			} else t = v;
+		}
+	}
+	return (G.empty() || t != 0);
+}
+
+
+//---------------------------------------------------------
+// isStGraph()
+// true <=> G is st-graph, i.e., is acyclic, contains exactly one source s
+//   and one sink t, and the edge (s,t); returns single source s and single
+//   sink t if contained (otherwise they are set to 0), and edge st if
+//   contained (otherwise 0)
+//---------------------------------------------------------
+bool isStGraph(const Graph &G, node &s, node &t, edge &st)
+{
+	st = 0;
+
+	hasSingleSource(G,s);
+	hasSingleSink  (G,t);
+
+	if (s == 0 || t == 0 || isAcyclic(G) == false) {
+		s = t = 0;
+		return false;
+	}
+
+	edge e;
+	forall_adj_edges(e,s) {
+		if (e->target() == t) {
+			st = e;
+			break;
+		}
+	}
+
+	return (st != 0);
+}
+
+
+//---------------------------------------------------------
+// topologicalNumbering()
+// computes a topological numbering of an acyclic graph
+//---------------------------------------------------------
+
+void topologicalNumbering(const Graph &G, NodeArray<int> &num)
+{
+	BoundedStack<node> S(G.numberOfNodes());
+	NodeArray<int> indeg(G);
+
+	node v;
+	forall_nodes(v,G)
+		if((indeg[v] = v->indeg()) == 0)
+			S.push(v);
+
+	int count = 0;
+	while(!S.empty()) {
+		node v = S.pop();
+		num[v] = count++;
+
+		edge e;
+		forall_adj_edges(e,v) {
+			node u = e->target();
+			if(u != v) {
+				if(--indeg[u] == 0)
+					S.push(u);
+			}
+		}
+	}
+}
+
+
+//---------------------------------------------------------
+// strongComponents()
+// computes the strongly connected components
+//---------------------------------------------------------
+
+//! Computes the strongly connected components with the algorithm of Tarjan.
+/**
+ * @param G         is the input graph.
+ * @param w         is the current node.
+ * @param S         is the stack containing all vertices of the current
+ *                  component during the algorithm
+ * @param pre       is the preorder number.
+ * @param low       is the lowest reachable preorder number (lowpoint).
+ * @param cnt       is the counter for the dfs-number.
+ * @param scnt      is the counter for the components.
+ * @param component is assigned a mapping from nodes to component numbers.
+ */
+void dfsStrongComponents(
+	const Graph& G,
+	node w,
+	BoundedStack<node>& S,
+	NodeArray<int>& pre,
+	NodeArray<int>& low,
+	int& cnt,
+	int& scnt,
+	NodeArray<int>& component)
+{
+	S.push(w);
+	int min = cnt;
+	low[w] = cnt;
+	pre[w] = cnt;
+	cnt++;
+	node t;
+	edge e;
+	forall_adj_edges(e, w) {
+		if (e->source() == w) {
+			t = e->target();
+			if(pre[t] == -1) {
+				dfsStrongComponents(G, t, S, pre, low, cnt, scnt, component);
+			}
+			if (low[t] < low[w])
+				min = low[t];
+		}
+	}
+	if (min < low[w]) {
+		low[w] = min;
+		return;
+	}
+	do {
+		t = S.pop();
+		component[t] = scnt;
+		low[t] = G.numberOfNodes();
+	} while (t != w);
+	scnt++;
+}
+
+int strongComponents(const Graph& G, NodeArray<int>& component)
+{
+	if (G.numberOfNodes() == 0)
+		return 0;
+	if (G.numberOfNodes() == 1){
+		component[G.firstNode()] = 0;
+		return 1;
+	}
+	NodeArray<int> pre(G, -1);
+	NodeArray<int> low(G, G.numberOfNodes());
+	BoundedStack<node> S(G.numberOfNodes());
+	int cnt = 0;
+	int scnt = 0;
+	node v;
+	forall_nodes(v, G){
+		if (pre[v] == -1){
+			dfsStrongComponents(G, v, S, pre, low, cnt, scnt, component);
+		}
+	}
+	return scnt;
+}
+
+
+//---------------------------------------------------------
+// isFreeForest()
+// testing if graph represents a free forest
+//---------------------------------------------------------
+
+bool isFreeForest(const Graph &G)
+{
+	NodeArray<bool> visited(G,false);
+
+	node vFirst;
+	forall_nodes(vFirst,G)
+	{
+		if(visited[vFirst]) continue;
+
+		StackPure<Tuple2<node,node> > S;
+		S.push(Tuple2<node,node>(vFirst,0));
+
+		while(!S.empty())
+		{
+			Tuple2<node,node> t = S.pop();
+			node v      = t.x1();
+			node parent = t.x2();
+
+			visited[v] = true;
+
+			adjEntry adj;
+			forall_adj(adj,v)
+			{
+				node w = adj->twinNode();
+
+				// skip edge to parent, but only once!
+				if(w == parent) {
+					parent = 0;
+					continue;
+				}
+
+				if(visited[w] == true)
+					return false;
+
+				S.push(Tuple2<node,node>(w,v));
+			}
+		}
+	}
+
+	return true;
+}
+
+
+//---------------------------------------------------------
+// isForest(), isTree()
+// testing if graph represents a forest/tree
+//---------------------------------------------------------
+static bool dfsIsForest (node v,
+	NodeArray<bool> &visited,
+	NodeArray<bool> &mark)
+{
+	SListPure<node> sons;
+
+	visited[v] = true;
+
+	edge e;
+	forall_adj_edges(e,v) {
+		node w = e->target();
+		if (w != v && !mark[w]) {
+			mark[w] = true;
+			sons.pushBack(w);
+		}
+	}
+
+	SListIterator<node> it;
+	for(it = sons.begin(); it.valid(); ++it)
+		mark[*it] = false;
+
+	while(!sons.empty()) {
+		node w = sons.front();
+		sons.popFront();
+
+		if (visited [w] || dfsIsForest(w,visited,mark) == false)
+			return false;
+	}
+
+	return true;
+}
+
+bool isForest(const Graph& G, List<node> &roots)
+{
+	roots.clear();
+	if (G.empty()) return true;
+
+	NodeArray<bool> visited(G,false), mark(G,false);
+
+	node v;
+	forall_nodes(v,G)
+		if (v->indeg() == 0) {
+			roots.pushBack(v);
+			if (dfsIsForest(v,visited,mark) == false)
+				return false;
+		}
+
+	forall_nodes(v,G)
+		if (!visited[v]) return false;
+
+	return true;
+}
+
+
+bool isTree (const Graph& G, node &root)
+{
+	List<node> roots;
+
+	if (isForest(G,roots) && roots.size() == 1) {
+		root = roots.front(); return true;
+	}
+	return false;
+}
+
+
+
+} // end namespace ogdf
diff --git a/ogdf/basic/simple_graph_alg.h b/ogdf/basic/simple_graph_alg.h
new file mode 100644
index 0000000..c4263a2
--- /dev/null
+++ b/ogdf/basic/simple_graph_alg.h
@@ -0,0 +1,803 @@
+/*
+ * $Revision: 2593 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-15 15:33:53 +0200 (So, 15. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of simple graph algorithms.
+ *
+ * \author Carsten Gutwenger and Sebastian Leipert
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_SIMPLE_GRAPH_ALG_H
+#define OGDF_SIMPLE_GRAPH_ALG_H
+
+
+#include "EdgeArray.h"
+#include "SList.h"
+#include "BoundedStack.h"
+
+namespace ogdf {
+
+
+//---------------------------------------------------------
+// Methods for loops
+//---------------------------------------------------------
+
+//! Returns true iff \a G contains no self-loop.
+/**
+ * @param G is the input graph.
+ * @return true if \a G contains no self-loops (edges whose two endpoints are the same), false otherwise.
+ */
+OGDF_EXPORT bool isLoopFree(const Graph &G);
+
+//! Removes all self-loops from \a G and returns all nodes with self-loops in \a L.
+/**
+ * @tparam NODELIST is the type of the node list for returning the nodes with self-loops.
+ * @param  G is the input graph.
+ * @param  L is assigned the list of nodes with self-loops.
+ */
+template<class NODELIST>
+void makeLoopFree(Graph &G, NODELIST &L)
+{
+	L.clear();
+
+	edge e, eNext;
+	for (e = G.firstEdge(); e; e = eNext) {
+		eNext = e->succ();
+		if (e->isSelfLoop()) {
+			L.pushBack(e->source());
+			G.delEdge(e);
+		}
+	}
+}
+
+
+//! Removes all self-loops from \a G.
+/**
+ * @param  G is the input graph.
+ */
+OGDF_EXPORT void makeLoopFree(Graph &G);
+
+
+//---------------------------------------------------------
+// Methods for parallel edges
+//---------------------------------------------------------
+
+//! Sorts the edges of \a G such that parallel edges come after each other in the list.
+/**
+ * @param G is the input graph.
+ * @param edges is assigned the list of sorted edges.
+ */
+OGDF_EXPORT void parallelFreeSort(const Graph &G, SListPure<edge> &edges);
+
+
+//! Returns true iff \a G contains no paralle edges.
+/**
+ * A parallel edge is an edge e1=(v,w) such that there exists another edge e2=(v,w) in
+ * the graph. Reversal edges (e.g. (v,w) and (w,v)) are not parallel edges. If you want to
+ * test if a graph contains no undirected parallel edges, use isParallelFreeUndirected().
+ *
+ * @param G is the input graph.
+ * @return true if \a G contains no multi-edges (edges with the same source and target).
+ */
+OGDF_EXPORT bool isParallelFree(const Graph &G);
+
+
+//! Returns the number of parallel edges in \a G.
+/**
+ * A parallel edge is an edge e1=(v,w) such that there exists another edge e2=(v,w) in
+ * the graph. Reversal edges (e.g. (v,w) and (w,v)) are not parallel edges. If you want to
+ * also take reversal edges into account, use numParallelEdgesUndirected().
+ *
+ * @param G is the input graph.
+ * @return is the number of parallel edges: for each bundle of parallel edges between two nodes
+ *         v and w, all but one are counted.
+ */
+OGDF_EXPORT int numParallelEdges(const Graph &G);
+
+
+//! Removes all but one of each bundle of parallel edges.
+/**
+ * A parallel edge is an edge e1=(v,w) such that there exists another edge e2=(v,w) in
+ * the graph. Reversal edges (e.g. (v,w) and (w,v)) are not multi-edges. If you want to
+ * remove parallel and reversal edges, use makeParallelFreeUndirected(Graph&,EDGELIST&).
+ *
+ * @tparam EDGELIST      is the type of edge list that will be assigned the list of parallel edges.
+ * @param  G             is the input graph.
+ * @param  parallelEdges is assigned the list of remaining edges in \a G that were part of a
+ *                       bundle of parallel edges in the input graph.
+ */
+template <class EDGELIST>
+void makeParallelFree(Graph &G, EDGELIST &parallelEdges)
+{
+	parallelEdges.clear();
+	if (G.numberOfEdges() <= 1) return;
+
+	SListPure<edge> edges;
+	parallelFreeSort(G,edges);
+
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it++, e;
+	bool bAppend = true;
+	while(it.valid()) {
+		e = *it++;
+		if (ePrev->source() == e->source() && ePrev->target() == e->target()) {
+			G.delEdge(e);
+			if (bAppend) { parallelEdges.pushBack(ePrev); bAppend = false; }
+		} else {
+			ePrev = e; bAppend = true;
+		}
+	}
+}
+
+
+//! Removes all but one edge of each bundle of parallel edges in \a G.
+/**
+ * A parallel edge is an edge e1=(v,w) such that there exists another edge e2=(v,w) in
+ * the graph. Reversal edges (e.g. (v,w) and (w,v)) are not parallel edges. If you want to
+ * remove parallel and reversal edges, use makeParallelFreeUndirected(Graph&).
+ *
+ * @param G is the input graph.
+ */
+inline void makeParallelFree(Graph &G) {
+	List<edge> parallelEdges;
+	makeParallelFree(G,parallelEdges);
+}
+
+
+
+//! Sorts the edges of \a G such that undirected parallel edges come after each other in the list.
+/**
+ * An undirected parallel edges is an edge e1=(v,w) such that there exists another edge e2=(v,w) or (w,v)
+ * in the graph.
+ *
+ * @param G is the input graph.
+ * @param edges is assigned the list of sorted edges.
+ * @param minIndex is assigned for each edge (v,w) the index min(index(v),index(w)).
+ * @param maxIndex is assigned for each edge (v,w) the index max(index(v),index(w)).
+ */
+OGDF_EXPORT void parallelFreeSortUndirected(
+	const Graph &G,
+	SListPure<edge> &edges,
+	EdgeArray<int> &minIndex,
+	EdgeArray<int> &maxIndex);
+
+
+//! Returns true iff \a G contains no undirected parallel edges.
+/**
+ * An undirected parallel edges is an edge e1=(v,w) such that there exists another edge e2=(v,w) or (w,v)
+ * in the graph.
+ *
+ * @param G is the input graph.
+ * @return true if \a G contains no undirected parallel edges.
+ */
+OGDF_EXPORT bool isParallelFreeUndirected(const Graph &G);
+
+
+//! Returns the number of undirected parallel edges in \a G.
+/**
+ * An undirected parallel edges is an edge e1=(v,w) such that there exists another edge e2=(v,w) or (w,v)
+ * in the graph.
+ *
+ * @param G is the input graph.
+ * @return the number of undirected parallel edges; for each unordered pair {v,w} of nodes, all
+ *         but one of the edges with endpoints v and w (in any order) are counted.
+ */
+OGDF_EXPORT int numParallelEdgesUndirected(const Graph &G);
+
+
+//! Removes all but one of each bundle of undirected parallel edges.
+/**
+ * An undirected parallel edges is an edge e1=(v,w) such that there exists another edge e2=(v,w) or (w,v)
+ * in the graph. The function removes unordered pair {v,w} of nodes all but one of the edges with
+ * endpoints v and w (in any order).
+ *
+ * @tparam EDGELIST      is the type of edge list that will be assigned the list of edges.
+ * @param  G             is the input graph.
+ * @param  parallelEdges is assigned the list of remaining edges that were part of a bundle
+ *                       of undirected parallel edges in the input graph.
+ */
+template <class EDGELIST>
+void makeParallelFreeUndirected(Graph &G, EDGELIST &parallelEdges)
+{
+	parallelEdges.clear();
+	if (G.numberOfEdges() <= 1) return;
+
+	SListPure<edge> edges;
+	EdgeArray<int> minIndex(G), maxIndex(G);
+	parallelFreeSortUndirected(G,edges,minIndex,maxIndex);
+
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it++, e;
+	bool bAppend = true;
+	while(it.valid()) {
+		e = *it++;
+		if (minIndex[ePrev] == minIndex[e] && maxIndex[ePrev] == maxIndex[e]) {
+			G.delEdge(e);
+			if (bAppend) { parallelEdges.pushBack(ePrev); bAppend = false; }
+		} else {
+			ePrev = e; bAppend = true;
+		}
+	}
+}
+
+
+//! Removes all but one of each bundle of undirected parallel edges.
+/**
+ * An undirected parallel edges is an edge e1=(v,w) such that there exists another edge e2=(v,w) or (w,v)
+ * in the graph. The function removes unordered pair {v,w} of nodes all but one of the edges with
+ * endpoints v and w (in any order).
+ *
+ * @param G is the input graph.
+ */
+inline void makeParallelFreeUndirected(Graph &G) {
+	List<edge> parallelEdges;
+	makeParallelFreeUndirected(G,parallelEdges);
+}
+
+
+//! Removes all but one of each bundle of undirected parallel edges.
+/**
+ * An undirected parallel edges is an edge e1=(v,w) such that there exists another edge e2=(v,w) or (w,v)
+ * in the graph. The function removes unordered pair {v,w} of nodes all but one of the edges with
+ * endpoints v and w (in any order).
+ *
+ * @tparam EDGELIST      is the type of edge list that is assigned the list of edges.
+ * @param  G             is the input graph.
+ * @param  parallelEdges is assigned the list of remaining edges that were
+ *                       part of a bundle of undirected parallel edges in the input graph.
+ * @param  cardPositive  contains for each edge the number of removed undirected parallel edges
+ *                       pointing in the same direction.
+ * @param  cardNegative  contains for each edge the number of removed undirected parallel edges
+ *                       pointing in the opposite direction.
+ */
+template <class EDGELIST>
+void makeParallelFreeUndirected(
+	Graph &G,
+	EDGELIST &parallelEdges,
+	EdgeArray<int> &cardPositive,
+	EdgeArray<int> &cardNegative)
+{
+	parallelEdges.clear();
+	cardPositive.fill(0);
+	cardNegative.fill(0);
+	if (G.numberOfEdges() <= 1) return;
+
+	SListPure<edge> edges;
+	EdgeArray<int> minIndex(G), maxIndex(G);
+	parallelFreeSortUndirected(G,edges,minIndex,maxIndex);
+
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it++, e;
+	bool bAppend = true;
+//	int  counter = 0;
+	while(it.valid())
+	{
+		e = *it++;
+		if (minIndex[ePrev] == minIndex[e] && maxIndex[ePrev] == maxIndex[e])
+		{
+			if (ePrev->source() == e->source() && ePrev->target() == e->target())
+				cardPositive[ePrev]++;
+			else if (ePrev->source() == e->target() && ePrev->target() == e->source())
+				cardNegative[ePrev]++;
+			G.delEdge(e);
+			if (bAppend)
+			{
+				parallelEdges.pushBack(ePrev);
+				bAppend = false;
+			}
+		}
+		else
+		{
+			ePrev = e; bAppend = true;
+		}
+	}
+}
+
+
+//! Computes the bundles of undirected parallel edges in \a G.
+/**
+ * Stores for one (arbitrarily chosen) reference edge all edges belonging to the same bundle of
+ * undirected parallel edges; no edge is removed from the graph.
+ *
+ * @tparam EDGELIST      is the type of edge list that is assigned the list of edges.
+ * @param  G             is the input graph.
+ * @param  parallelEdges is assigned for each reference edge the list of edges belonging to the
+ *                       bundle of undirected parallel edges.
+ */
+template <class EDGELIST>
+void getParallelFreeUndirected(const Graph &G, EdgeArray<EDGELIST> &parallelEdges)
+{
+	if (G.numberOfEdges() <= 1) return;
+
+	SListPure<edge> edges;
+	EdgeArray<int> minIndex(G), maxIndex(G);
+	parallelFreeSortUndirected(G,edges,minIndex,maxIndex);
+
+	SListConstIterator<edge> it = edges.begin();
+	edge ePrev = *it++, e;
+	while(it.valid())
+	{
+		e = *it++;
+		if (minIndex[ePrev] == minIndex[e] && maxIndex[ePrev] == maxIndex[e])
+			parallelEdges[ePrev].pushBack(e);
+		else
+			ePrev = e;
+	}
+}
+
+
+//---------------------------------------------------------
+// Methods for simple graphs
+//---------------------------------------------------------
+
+
+//! Returns true iff \a G contains neither self-loops nor parallel edges.
+/**
+ * @param G is the input graph.
+ * @return true if \a G is simple, i.e. contains neither self-loops nor parallel edges, false otherwise.
+ */
+inline bool isSimple(const Graph &G) {
+	return isLoopFree(G) && isParallelFree(G);
+}
+
+
+//! Removes all self-loops and all but one edge of each bundle of parallel edges.
+/**
+ * @param G is the input graph.
+ */
+inline void makeSimple(Graph &G) {
+	makeLoopFree(G);
+	makeParallelFree(G);
+}
+
+
+//! Returns true iff \a G contains neither self-loops nor undirected parallel edges.
+/**
+ * @param G is the input graph.
+ * @return true if \a G is (undirected) simple, i.e. contains neither self-loops
+ *         nor undirected parallel edges, false otherwise.
+ */
+inline bool isSimpleUndirected(const Graph &G) {
+	return isLoopFree(G) && isParallelFreeUndirected(G);
+}
+
+
+//! Removes all self-loops and all but one edge of each bundle of undirected parallel edges.
+/**
+ * @param G is the input graph.
+ */
+inline void makeSimpleUndirected(Graph &G) {
+	makeLoopFree(G);
+	makeParallelFreeUndirected(G);
+}
+
+
+
+//---------------------------------------------------------
+// Methods for connectivity
+//---------------------------------------------------------
+
+//! Returns true iff \a G is connected.
+/**
+ * @param G is the input graph.
+ * @return true if \a G is connected, false otherwise.
+ */
+OGDF_EXPORT bool isConnected(const Graph &G);
+
+
+//! Makes \a G connected by adding a minimum number of edges.
+/**
+ * @param G     is the input graph.
+ * @param added is assigned the added edges.
+ */
+OGDF_EXPORT void makeConnected(Graph &G, List<edge> &added);
+
+
+//! makes \a G connected by adding a minimum number of edges.
+/**
+ * @param G is the input graph.
+ */
+inline void makeConnected(Graph &G) {
+	List<edge> added;
+	makeConnected(G,added);
+}
+
+
+//! Computes the connected components of \a G.
+/**
+ * Assigns component numbers (0, 1, ...) to the nodes of \a G. The component number of each
+ * node is stored in the node array \a component.
+ *
+ * @param G         is the input graph.
+ * @param component is assigned a mapping from nodes to component numbers.
+ * @return the number of connected components.
+ */
+OGDF_EXPORT int connectedComponents(const Graph &G, NodeArray<int> &component);
+
+
+//! Computes the connected components of \a G and returns the list of isolated nodes.
+/**
+ * Assigns component numbers (0, 1, ...) to the nodes of \a G. The component number of each
+ * node is stored in the node array \a component.
+ *
+ * @param G         is the input graph.
+ * @param isolated  is assigned the list of isolated nodes. An isolated
+ *                  node is a node without incident edges.
+ * @param component is assigned a mapping from nodes to component numbers.
+ * @return the number of connected components.
+ */
+OGDF_EXPORT int connectedIsolatedComponents(
+	const Graph &G,
+	List<node> &isolated,
+	NodeArray<int> &component);
+
+
+//! Returns true iff \a G is biconnected.
+/**
+ * @param G is the input graph.
+ * @param cutVertex If false is returned, \a cutVertex is assigned either 0 if \a G is not connected,
+ *                  or a cut vertex in \a G.
+ */
+OGDF_EXPORT bool isBiconnected(const Graph &G, node &cutVertex);
+
+
+//! Returns true iff \a G is biconnected.
+/**
+ * @param G is the input graph.
+ */
+inline bool isBiconnected(const Graph &G) {
+	node cutVertex;
+	return isBiconnected(G,cutVertex);
+}
+
+
+//! Makes \a G biconnected by adding edges.
+/**
+ * @param G     is the input graph.
+ * @param added is assigned the list of inserted edges.
+ */
+OGDF_EXPORT void makeBiconnected(Graph &G, List<edge> &added);
+
+
+//! Makes \a G biconnected by adding edges.
+/**
+ * @param G is the input graph.
+ */
+inline void makeBiconnected(Graph &G) {
+	List<edge> added;
+	makeBiconnected(G,added);
+}
+
+
+//! Computes the biconnected components of \a G.
+/**
+ * Assigns component numbers (0, 1, ...) to the edges of \ G. The component number of each edge
+ * is stored in the edge array \a component.
+ *
+ * @param G         is the input graph.
+ * @param component is assigned a mapping from edges to component numbers.
+ * @return the number of biconnected components (including isolated nodes).
+ */
+OGDF_EXPORT int biconnectedComponents(const Graph &G, EdgeArray<int> &component);
+
+
+//! Returns true iff \a G is triconnected.
+/**
+ * If true is returned, then either
+ *   - \a s1 and \a s2 are either both 0 if \a G is not connected; or
+ *   - \a s1 is a cut vertex and \a s2 = 0 if \a G is not biconnected; or
+ *   - \a s1 and \a s2 are a separation pair otherwise.
+ *
+ * @param G is the input graph.
+ * @param s1 is assigned a cut vertex of one node of a separation pair, if \a G is not triconnected (see above).
+ * @param s2 is assigned one node of a separation pair, if \a G is not triconnected (see above).
+ * @return true if \a G is triconnected, false otherwise.
+ */
+OGDF_EXPORT bool isTriconnected(const Graph &G, node &s1, node &s2);
+
+
+//! Returns true iff \a G is triconnected.
+/**
+ * @param G is the input graph.
+ * @return true if \a G is triconnected, false otherwise.
+ */
+inline bool isTriconnected(const Graph &G) {
+	node s1, s2;
+	return isTriconnected(G,s1,s2);
+}
+
+
+//! Returns true iff \a G is triconnected (using a quadratic time algorithm!).
+/**
+ * If true is returned, then either
+ *   - \a s1 and \a s2 are either both 0 if \a G is not connected; or
+ *   - \a s1 is a cut vertex and \a s2 = 0 if \a G is not biconnected; or
+ *   - \a s1 and \a s2 are a separation pair otherwise.
+ *
+ * \warning This method has quadratic running time. An efficient linear time
+ *          version is provided by isTriconnected().
+ *
+ * @param G is the input graph.
+ * @param s1 is assigned a cut vertex of one node of a separation pair, if \a G is not triconnected (see above).
+ * @param s2 is assigned one node of a separation pair, if \a G is not triconnected (see above).
+ * @return true if \a G is triconnected, false otherwise.
+ */
+OGDF_EXPORT bool isTriconnectedPrimitive(const Graph &G, node &s1, node &s2);
+
+
+//! Returns true iff \a G is triconnected (using a quadratic time algorithm!).
+/**
+ * \warning This method has quadratic running time. An efficient linear time
+ *          version is provided by isTriconnected().
+ *
+ * @param G is the input graph.
+ * @return true if \a G is triconnected, false otherwise.
+ */
+inline bool isTriconnectedPrimitive(const Graph &G) {
+	node s1, s2;
+	return isTriconnectedPrimitive(G,s1,s2);
+}
+
+
+//! Triangulates a planarly embedded graph \a G by adding edges.
+/**
+ * The result of this function is that \a G is made maximally planar by adding new edges.
+ * \a G will also be planarly embedded such that each face is a triangle.
+ *
+ * \pre \a G is planar, simple and represents a combinatorial embedding (i.e. \a G is planarly embedded).
+ *
+ * @param G is the input graph to which edges will be added.
+ */
+void triangulate(Graph &G);
+
+
+//---------------------------------------------------------
+// Methods for directed graphs
+//---------------------------------------------------------
+
+//! Returns true iff the digraph \a G is acyclic.
+/**
+ * @param G         is the input graph
+ * @param backedges is assigned the backedges of a DFS-tree.
+ * @return true if \a G contains no directed cycle, false otherwise.
+ */
+OGDF_EXPORT bool isAcyclic(const Graph &G, List<edge> &backedges);
+
+
+//! Returns true iff the digraph \a G is acyclic.
+/**
+ * @param G is the input graph
+ * @return true if \a G contains no directed cycle, false otherwise.
+ */
+inline bool isAcyclic(const Graph &G) {
+	List<edge> backedges;
+	return isAcyclic(G,backedges);
+}
+
+
+//! Returns true iff the undirected graph \a G is acyclic.
+/**
+ * @param G         is the input graph
+ * @param backedges is assigned the backedges of a DFS-tree.
+ * @return true if \a G contains no undirected cycle, false otherwise.
+ */
+OGDF_EXPORT bool isAcyclicUndirected(const Graph &G, List<edge> &backedges);
+
+
+//! Returns true iff the undirected graph \a G is acyclic.
+/**
+ * @param G is the input graph
+ * @return true if \a G contains no undirected cycle, false otherwise.
+ */
+inline bool isAcyclicUndirected(const Graph &G) {
+	List<edge> backedges;
+	return isAcyclicUndirected(G,backedges);
+}
+
+
+//! Makes the digraph \a G acyclic by removing edges.
+/**
+ * The implementation removes all backedges of a DFS tree.
+ *
+ * @param G is the input graph
+ */
+OGDF_EXPORT void makeAcyclic(Graph &G);
+
+
+//! Makes the digraph G acyclic by reversing edges.
+/**
+ * \remark The implementation ignores self-loops and reverses
+ * the backedges of a DFS-tree.
+ *
+ * @param G is the input graph
+ */
+OGDF_EXPORT void makeAcyclicByReverse(Graph &G);
+
+
+//! Returns true iff the digraph \a G contains exactly one source node (or is empty).
+/**
+ * @param G      is the input graph.
+ * @param source is assigned the single source if true is returned, or 0 otherwise.
+ * @return true if \a G has a single source, false otherwise.
+ */
+OGDF_EXPORT bool hasSingleSource(const Graph &G, node &source);
+
+
+//! Returns true iff the digraph \a G contains exactly one source node (or is empty).
+/**
+ * @param G is the input graph.
+ * @return true if \a G has a single source, false otherwise.
+ */
+inline bool hasSingleSource(const Graph &G) {
+	node source;
+	return hasSingleSource(G,source);
+}
+
+
+//! Returns true iff the digraph \a G contains exactly one sink node (or is empty).
+/**
+ * @param G is the input graph.
+ * @param sink is assigned the single sink if true is returned, or 0 otherwise.
+ * @return true if \a G has a single sink, false otherwise.
+ */
+OGDF_EXPORT bool hasSingleSink(const Graph &G, node &sink);
+
+
+//! Returns true iff the digraph \a G contains exactly one sink node (or is empty).
+/**
+ * @param G is the input graph.
+ * @return true if \a G has a single sink, false otherwise.
+ */
+inline bool hasSingleSink(const Graph &G) {
+	node sink;
+	return hasSingleSink(G,sink);
+}
+
+
+//! Returns true iff \a G is an st-digraph.
+/**
+ * A directed graph is an st-digraph if it is acyclic, contains exactly one source s
+ * and one sink t, and the edge (s,t).
+ *
+ * @param G  is the input graph.
+ * @param s  is assigned the single source (if true is returned).
+ * @param t  is assigned the single sink (if true is returned).
+ * @param st is assigned the edge (s,t) (if true is returned).
+ * @return true if \a G is an st-digraph, false otherwise.
+ */
+OGDF_EXPORT bool isStGraph(const Graph &G, node &s, node &t, edge &st);
+
+
+//! Returns true if \a G is an st-digraph.
+/**
+ * A directed graph is an st-digraph if it is acyclic, contains exactly one source s
+ * and one sink t, and the edge (s,t).
+ * @param G  is the input graph.
+ * @return true if \a G is an st-digraph, false otherwise.
+ */
+inline bool isStGraph(const Graph &G) {
+	node s, t;
+	edge st;
+	return isStGraph(G,s,t,st);
+}
+
+
+//! Computes a topological numbering of an acyclic digraph \a G.
+/**
+ * \pre \a G is an acyclic directed graph.
+ *
+ * @param G   is the input graph.
+ * @param num is assigned the topological numbering (0, 1, ...).
+ */
+OGDF_EXPORT void topologicalNumbering(const Graph &G, NodeArray<int> &num);
+
+
+//! Computes the strongly connected components of the digraph \a G.
+/**
+ * The function implements the algorithm by Tarjan.
+ *
+ * @param G         is the input graph.
+ * @param component is assigned a mapping from nodes to component numbers (0, 1, ...).
+ * @return the number of strongly connected components.
+ */
+OGDF_EXPORT int strongComponents(const Graph& G, NodeArray<int>& component);
+
+
+
+//---------------------------------------------------------
+// Methods for trees and forests
+//---------------------------------------------------------
+
+//! Returns true iff \a G is a free forest, i.e. contains no undirected cycle.
+/**
+ * @param G is the input graph.
+ * @return true if \ G is contains no undirected cycle, false otherwise.
+ */
+OGDF_EXPORT bool isFreeForest(const Graph &G);
+
+
+//! Returns true iff \a G represents a forest, i.e., a collection of rooted trees.
+/**
+ * @param G     is the input graph.
+ * @param roots is assigned the list of root nodes of the trees in the forest.
+ * @return true if \a G represents a forest, false otherwise.
+ */
+OGDF_EXPORT bool isForest(const Graph& G, List<node> &roots);
+
+
+//! Returns true iff \a G represents a forest, i.e. a collection of rooted trees.
+/**
+ * @param G is the input graph.
+ * @return true if \a G represents a forest, false otherwise.
+ */
+inline bool isForest(const Graph &G)
+{
+	List<node> roots;
+	return isForest(G,roots);
+}
+
+
+//! Returns true iff \a G represents a tree
+/**
+ * @param G    is the input graph.
+ * @param root is assigned the root node (if true is returned).
+ * @return true if \a G represents a tree, false otherwise.
+ */
+OGDF_EXPORT bool isTree (const Graph& G, node &root);
+
+
+//! Returns true iff \a G represents a tree
+/**
+ * @param G    is the input graph.
+ * @return true if \a G represents a tree, false otherwise.
+ */
+inline bool isTree(const Graph &G) {
+	node root;
+	return isTree(G,root);
+}
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/basic/tuples.h b/ogdf/basic/tuples.h
new file mode 100644
index 0000000..407c356
--- /dev/null
+++ b/ogdf/basic/tuples.h
@@ -0,0 +1,274 @@
+/*
+ * $Revision: 2615 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 14:23:36 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of class Tuple2, Tuple3
+ *        and Tuple4.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_TUPLE_H
+#define OGDF_TUPLE_H
+
+
+#include "basic.h"
+#include "Hashing.h"
+
+
+namespace ogdf {
+
+//! Tuples of two elements (2-tuples).
+/**
+ * @tparam E1 is the data type for the first element.
+ * @tparam E2 is the data type for the second element.
+ */
+template<class E1, class E2> class Tuple2 {
+public:
+	E1 m_x1; //!< The first element.
+	E2 m_x2; //!< The second element.
+
+	//! Constructs a 2-tuple using default constructors.
+	Tuple2() { }
+	//! Constructs a 2-tuple for given values.
+	Tuple2(const E1 &y1, const E2 &y2) : m_x1(y1), m_x2(y2) { }
+	//! Constructs a 2-tuple that is a copy of \a t2.
+	Tuple2(const Tuple2<E1,E2> &t2) : m_x1(t2.m_x1), m_x2(t2.m_x2) { }
+
+	//! Returns a reference the first element.
+	const E1 &x1() const { return m_x1; }
+	//! Returns a reference the second element.
+	const E2 &x2() const { return m_x2; }
+
+	//! Returns a reference the first element.
+	E1 &x1() { return m_x1; }
+	//! Returns a reference the second element.
+	E2 &x2() { return m_x2; }
+
+	// default assignment operator
+
+	OGDF_NEW_DELETE
+};
+
+//! Equality operator for 2-tuples
+template<class E1, class E2>
+bool operator==(const Tuple2<E1,E2> &t1, const Tuple2<E1,E2> &t2)
+{
+	return t1.x1() == t2.x1() && t1.x2() == t2.x2();
+}
+
+//! Inequality operator for 2-tuples
+template<class E1, class E2>
+bool operator!=(const Tuple2<E1,E2> &t1, const Tuple2<E1,E2> &t2)
+{
+	return t1.x1() != t2.x1() || t1.x2() != t2.x2();
+}
+
+//! Output operator for 2-tuples.
+template<class E1, class E2>
+ostream &operator<<(ostream &os, const Tuple2<E1,E2> &t2)
+{
+	os << "(" << t2.x1() << " " << t2.x2() << ")";
+	return os;
+}
+
+
+//! Tuples of three elements (3-tuples).
+/**
+ * @tparam E1 is the data type for the first element.
+ * @tparam E2 is the data type for the second element.
+ * @tparam E3 is the data type for the third element.
+ */
+template<class E1, class E2, class E3> class Tuple3 {
+public:
+	E1 m_x1; //!< The first element.
+	E2 m_x2; //!< The second element.
+	E3 m_x3; //!< The third element.
+
+	//! Constructs a 3-tuple using default constructors.
+	Tuple3() { }
+	//! Constructs a 3-tuple for given values.
+	Tuple3(const E1 &y1, const E2 &y2, const E3 &y3) :
+		m_x1(y1), m_x2(y2), m_x3(y3) { }
+	//! Constructs a 3-tuple that is a copy of \a t3.
+	Tuple3(const Tuple3<E1,E2,E3> &t3) :
+		m_x1(t3.m_x1), m_x2(t3.m_x2), m_x3(t3.m_x3) { }
+
+	//! Returns a reference the first element.
+	const E1 &x1() const { return m_x1; }
+	//! Returns a reference the second element.
+	const E2 &x2() const { return m_x2; }
+	//! Returns a reference the third element.
+	const E3 &x3() const { return m_x3; }
+
+	//! Returns a reference the first element.
+	E1 &x1() { return m_x1; }
+	//! Returns a reference the second element.
+	E2 &x2() { return m_x2; }
+	//! Returns a reference the third element.
+	E3 &x3() { return m_x3; }
+
+	// default assignment operator
+
+	OGDF_NEW_DELETE
+};
+
+//! Equality operator for 3-tuples
+template<class E1, class E2, class E3>
+bool operator==(const Tuple3<E1,E2,E3> &t1, const Tuple3<E1,E2,E3> &t2)
+{
+	return t1.x1() == t2.x1() && t1.x2() == t2.x2() && t1.x3() == t2.x3();
+}
+
+//! Inequality operator for 3-tuples
+template<class E1, class E2, class E3>
+bool operator!=(const Tuple3<E1,E2,E3> &t1, const Tuple3<E1,E2,E3> &t2)
+{
+	return t1.x1() != t2.x1() || t1.x2() != t2.x2() || t1.x3() != t2.x3();
+}
+
+//! Output operator for 3-tuples
+template<class E1, class E2, class E3>
+ostream &operator<<(ostream &os, const Tuple3<E1,E2,E3> &t3)
+{
+	os << "(" << t3.x1() << " " << t3.x2() << " " << t3.x3() << ")";
+	return os;
+}
+
+
+//! Tuples of four elements (4-tuples).
+/**
+ * @tparam E1 is the data type for the first element.
+ * @tparam E2 is the data type for the second element.
+ * @tparam E3 is the data type for the third element.
+ * @tparam E4 is the data type for the fourth element.
+ */
+template<class E1, class E2, class E3, class E4> class Tuple4 {
+public:
+	E1 m_x1; //!< The first element.
+	E2 m_x2; //!< The second element.
+	E3 m_x3; //!< The third element.
+	E4 m_x4; //!< The fourth element.
+
+	//! Constructs a 4-tuple using default constructors.
+	Tuple4() { }
+	//! Constructs a 4-tuple for given values.
+	Tuple4(const E1 &y1, const E2 &y2, const E3 &y3, const E4 &y4) :
+		m_x1(y1), m_x2(y2), m_x3(y3), m_x4(y4) { }
+	//! Constructs a 4-tuple that is a copy of \a t4.
+	Tuple4(const Tuple4<E1,E2,E3,E4> &t4) :
+		m_x1(t4.m_x1), m_x2(t4.m_x2), m_x3(t4.m_x3), m_x4(t4.m_x4) { }
+
+	//! Returns a reference the first element.
+	const E1 &x1() const { return m_x1; }
+	//! Returns a reference the second element.
+	const E2 &x2() const { return m_x2; }
+	//! Returns a reference the third element.
+	const E3 &x3() const { return m_x3; }
+	//! Returns a reference the fourth element.
+	const E4 &x4() const { return m_x4; }
+
+	//! Returns a reference the first element.
+	E1 &x1() { return m_x1; }
+	//! Returns a reference the second element.
+	E2 &x2() { return m_x2; }
+	//! Returns a reference the third element.
+	E3 &x3() { return m_x3; }
+	//! Returns a reference the fourth element.
+	E4 &x4() { return m_x4; }
+
+	// default assignment operator
+
+	OGDF_NEW_DELETE
+};
+
+//! Equality operator for 4-tuples
+template<class E1, class E2, class E3, class E4>
+bool operator==(const Tuple4<E1,E2,E3,E4> &t1, const Tuple4<E1,E2,E3,E4> &t2)
+{
+	return t1.x1() == t2.x1() && t1.x2() == t2.x2() &&
+		t1.x3() == t2.x3() && t1.x4() == t2.x4();
+}
+
+//! Inequality operator for 4-tuples
+template<class E1, class E2, class E3, class E4>
+bool operator!=(const Tuple4<E1,E2,E3,E4> &t1, const Tuple4<E1,E2,E3,E4> &t2)
+{
+	return t1.x1() != t2.x1() || t1.x2() != t2.x2() ||
+		t1.x3() != t2.x3() || t1.x4() != t2.x4();
+}
+
+//! Output operator for 4-tuples
+template<class E1, class E2, class E3, class E4>
+ostream &operator<<(ostream &os, const Tuple4<E1,E2,E3,E4> &t4)
+{
+	os << "(" << t4.x1() << " " << t4.x2() << " " <<
+		t4.x3() << " " << t4.x4() << ")";
+	return os;
+}
+
+template<typename K1_, typename K2_,
+	typename Hash1_ = DefHashFunc<K1_>,
+	typename Hash2_ = DefHashFunc<K2_> >
+class HashFuncTuple
+{
+public:
+	HashFuncTuple() { }
+
+	HashFuncTuple(const Hash1_ &hash1, const Hash2_ &hash2)
+		: m_hash1(hash1), m_hash2(hash2) { }
+
+	size_t hash(const Tuple2<K1_,K2_> &key) const {
+		return 23*m_hash1.hash(key.x1()) + 443*m_hash2.hash(key.x2());
+	}
+
+private:
+	Hash1_ m_hash1;
+	Hash2_ m_hash2;
+};
+
+} // namespace ogdf
+
+
+#endif
diff --git a/ogdf/cluster/ClusterArray.h b/ogdf/cluster/ClusterArray.h
new file mode 100644
index 0000000..e3cc654
--- /dev/null
+++ b/ogdf/cluster/ClusterArray.h
@@ -0,0 +1,245 @@
+/*
+ * $Revision: 2584 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-12 02:38:07 +0200 (Do, 12. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration and implementation of ClusterArray class.
+ *
+ * \author Sebastian Leipert
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_CLUSTER_ARRAY_H
+#define OGDF_CLUSTER_ARRAY_H
+
+
+#include "../basic/Array.h"
+#include "ClusterGraph.h"
+
+
+namespace ogdf {
+
+
+//---------------------------------------------------------
+// ClusterArrayBase
+// base class for ClusterArray<T>, defines interface for event handling
+// used by Graph
+//---------------------------------------------------------
+//! Abstract base class for cluster arrays.
+/**
+ * Defines the interface for event handling used by the ClusterGraph class.
+ * Use the paramiterized class ClusterArray for creating edge arrays.
+ */
+class ClusterArrayBase {
+	/**
+	 * Pointer to list element in the list of all registered cluster
+	 * arrays which references this array.
+	 */
+	ListIterator<ClusterArrayBase*> m_it;
+
+public:
+	const ClusterGraph *m_pClusterGraph; //!< The associated cluster graph.
+
+	//! Initializes a cluster array not associated with a cluster graph.
+	ClusterArrayBase() : m_pClusterGraph(0) { }
+	//! Initializes a cluster array associated with \a pC.
+	ClusterArrayBase(const ClusterGraph *pC) : m_pClusterGraph(pC) {
+		if(pC) m_it = pC->registerArray(this);
+	}
+
+	// destructor, unregisters the array
+	virtual ~ClusterArrayBase() {
+		if (m_pClusterGraph) m_pClusterGraph->unregisterArray(m_it);
+	}
+
+	// event interface used by Graph
+	//! Virtual function called when table size has to be enlarged.
+	virtual void enlargeTable(int newTableSize) = 0;
+	//! Virtual function called when table has to be reinitialized.
+	virtual void reinit(int initTableSize) = 0;
+	//! Virtual function called when array is disconnected from the cluster graph.
+	virtual void disconnect() = 0;
+
+	//! Associates the array with a new cluster graph.
+	void reregister(const ClusterGraph *pC) {
+		if (m_pClusterGraph) m_pClusterGraph->unregisterArray(m_it);
+		if ((m_pClusterGraph = pC) != 0) m_it = pC->registerArray(this);
+	}
+}; // class ClusterArrayBase
+
+
+//! Dynamic arrays indexed with clusters.
+/**
+ * Cluster arrays adjust their table size automatically
+ * when the cluster graph grows.
+ */
+template<class T> class ClusterArray : private Array<T>, protected ClusterArrayBase {
+	T m_x; //!< The default value for array elements.
+
+public:
+	//! Constructs an empty cluster array associated with no graph.
+	ClusterArray() : Array<T>(), ClusterArrayBase() { }
+	//! Constructs a cluster array associated with \a C.
+	ClusterArray(const ClusterGraph &C) :
+		Array<T>(C.clusterArrayTableSize()),
+		ClusterArrayBase(&C) { }
+	//! Constructs a cluster array associated with \a C.
+	/**
+	 * @param C is the associated cluster graph.
+	 * @param x is the default value for all array elements.
+	 */
+	ClusterArray(const ClusterGraph &C, const T &x) :
+		Array<T>(0,C.clusterArrayTableSize()-1,x),
+		ClusterArrayBase(&C), m_x(x) { }
+	//! Constructs a cluster array associated with \a C and a given
+	//! size (for static use).
+	/**
+	 * @param C is the associated cluster graph.
+	 * @param x is the default value for all array elements.
+	 * @param size is the size of the array.
+	 */
+	ClusterArray(const ClusterGraph &C, const T &x, int size) :
+		Array<T>(0,size-1,x),
+		ClusterArrayBase(&C), m_x(x) { }
+
+	//! Constructs a cluster array that is a copy of \a A.
+	/**
+	 * Associates the array with the same cluster graph as \a A and copies all elements.
+	 */
+	ClusterArray(const ClusterArray<T> &A) :
+		Array<T>(A),
+		ClusterArrayBase(A.m_pClusterGraph), m_x(A.m_x) { }
+
+	//! Returns true iff the array is associated with a graph.
+	bool valid() const { return (Array<T>::low() <= Array<T>::high()); }
+
+	//! Returns a pointer to the associated cluster graph.
+	const ClusterGraph *graphOf() const {
+		return m_pClusterGraph;
+	}
+
+	//! Returns a reference to the element with index \a c.
+	const T &operator[](cluster c) const {
+		OGDF_ASSERT(c != 0 && c->graphOf() == m_pClusterGraph)
+		return Array<T>::operator [](c->index());
+	}
+
+	//! Returns a reference to the element with index \a c.
+	T &operator[](cluster c) {
+		OGDF_ASSERT(c != 0 && c->graphOf() == m_pClusterGraph)
+		return Array<T>::operator [](c->index());
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for a cluster
+	 * in the associated cluster graph!
+	 */
+	const T &operator[](int index) const {
+		return Array<T>::operator [](index);
+	}
+
+	//! Returns a reference to the element with index \a index.
+	/**
+	 * \attention Make sure that \a index is a valid index for a cluster
+	 * in the associated cluster graph!
+	 */
+	T &operator[](int index) {
+		return Array<T>::operator [](index);
+	}
+
+	//! Assignment operator.
+	ClusterArray<T> &operator=(const ClusterArray<T> &a) {
+		Array<T>::operator =(a);
+		m_x = a.m_x;
+		reregister(a.m_pClusterGraph);
+		return *this;
+	}
+
+	//! Reinitializes the array. Associates the array with no cluster graph.
+	void init() {
+		Array<T>::init(); reregister(0);
+	}
+
+	//! Reinitializes the array. Associates the array with \a C.
+	void init(const ClusterGraph &C) {
+		Array<T>::init( C.clusterArrayTableSize() ); reregister(&C);
+	}
+
+	//! Reinitializes the array. Associates the array with \a C.
+	/**
+	 * @param C is the associated cluster graph.
+	 * @param x is the default value.
+	 */
+	void init(const ClusterGraph &C, const T &x) {
+		Array<T>::init(0,C.clusterArrayTableSize()-1, m_x = x); reregister(&C);
+	}
+
+	//! Sets all array elements to \a x.
+	void fill(const T &x) {
+		int high = m_pClusterGraph->maxClusterIndex();
+		if(high >= 0)
+			Array<T>::fill(0,high,x);
+	}
+
+private:
+	virtual void enlargeTable(int newTableSize) {
+		Array<T>::grow(newTableSize-Array<T>::size(),m_x);
+	}
+
+	virtual void reinit(int initTableSize) {
+		Array<T>::init(0,initTableSize-1,m_x);
+	}
+
+	virtual void disconnect() {
+		Array<T>::init();
+		m_pClusterGraph = 0;
+	}
+
+	OGDF_NEW_DELETE
+
+}; // class ClusterArray<T>
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/cluster/ClusterGraph.cpp b/ogdf/cluster/ClusterGraph.cpp
new file mode 100644
index 0000000..0bdb5c3
--- /dev/null
+++ b/ogdf/cluster/ClusterGraph.cpp
@@ -0,0 +1,1775 @@
+/*
+ * $Revision: 2573 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-10 18:48:33 +0200 (Di, 10. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implements the class ClusterGraph, providing
+ * extra functionality for clustered graphs.
+ * A clustered graph C=(G,T) consists of an undirected graph G
+ * and a rooted tree T in which the leaves of T correspond
+ * to the vertices of G=(V,E).
+ *
+ * \author Sebastian Leipert, Karsten Klein
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "ClusterGraph.h"
+#include "ClusterArray.h"
+#include "ClusterGraphObserver.h"
+
+#include <limits.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "../basic/String.h"
+#include "../basic/AdjEntryArray.h"
+
+#include "../fileformats/GmlParser.h"
+
+
+namespace ogdf {
+
+#define MIN_CLUSTER_TABLE_SIZE (1 << 4)
+
+//---------------------------------------------------------
+//node search in cluster hierarchy
+//---------------------------------------------------------
+void ClusterElement::getClusterInducedNodes(List<node> &clusterNodes) {
+
+	ListConstIterator<node> nit;
+	for (nit=m_entries.begin(); nit.valid(); ++nit) {
+		clusterNodes.pushBack(*nit);
+	}
+	ListConstIterator<cluster> cit;
+	for (cit=m_children.begin(); cit.valid(); ++cit) {
+		(*cit)->getClusterInducedNodes(clusterNodes);
+	}
+}
+
+void ClusterElement::getClusterNodes(List<node> &clusterNodes) {
+
+	clusterNodes.clear();
+	getClusterInducedNodes(clusterNodes);
+}
+
+void ClusterElement::getClusterInducedNodes(NodeArray<bool> &clusterNode, int& num) {
+
+	ListConstIterator<node> nit;
+	for (nit=m_entries.begin(); nit.valid(); ++nit) {
+		clusterNode[*nit] = true;
+		num++;
+	}
+	ListConstIterator<cluster> cit;
+	for (cit=m_children.begin(); cit.valid(); ++cit) {
+		(*cit)->getClusterInducedNodes(clusterNode, num);
+	}
+}
+
+int ClusterElement::getClusterNodes(NodeArray<bool> &clusterNode)
+{
+	int num = 0;
+	getClusterInducedNodes(clusterNode, num);
+
+	return num;
+}
+
+
+//---------------------------------------------------------
+// Construction
+//---------------------------------------------------------
+
+ClusterGraph::ClusterGraph()
+{
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_rootCluster    = 0;
+
+	m_allowEmptyClusters = true;
+	m_updateDepth   = false;
+	m_depthUpToDate = false;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+	m_clusterArrayTableSize = MIN_CLUSTER_TABLE_SIZE;
+	m_adjAvailable = false;
+	m_lcaNumber = 0;
+	m_lcaSearch = 0;
+	m_vAncestor = 0;
+	m_wAncestor = 0;
+	//m_clusterDepth.init(*this, 0);
+}
+
+
+
+// Construction of a new cluster graph. All nodes
+// are children of the root cluster
+ClusterGraph::ClusterGraph(const Graph &G) : GraphObserver(&G), m_pGraph(&G)
+{
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_rootCluster    = 0;
+
+	m_allowEmptyClusters = true;
+	m_updateDepth   = false;
+	m_depthUpToDate = false;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+	m_clusterArrayTableSize = G.nextPower2(MIN_CLUSTER_TABLE_SIZE, G.nodeArrayTableSize());
+	//m_clusterDepth.init(*this, 0);
+	initGraph(G);
+}
+
+
+ClusterGraph::ClusterGraph(const ClusterGraph &C) :
+	GraphObserver(&(C.getGraph())),
+	m_lcaSearch(0),
+	m_vAncestor(0),
+	m_wAncestor(0)
+{
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_rootCluster    = 0;
+
+	m_allowEmptyClusters = true;
+	m_updateDepth   = false;
+	m_depthUpToDate = false;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+
+	m_clusterArrayTableSize = C.m_clusterArrayTableSize;
+	shallowCopy(C);
+}
+
+
+ClusterGraph::ClusterGraph(
+	const ClusterGraph &C,
+	Graph &G,
+	ClusterArray<cluster> &originalClusterTable,
+	NodeArray<node> &originalNodeTable)
+:
+	GraphObserver(&G),
+	m_lcaSearch(0),
+	m_vAncestor(0),
+	m_wAncestor(0)
+{
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_rootCluster    = 0;
+
+	m_allowEmptyClusters = true;
+	m_updateDepth   = false;
+	m_depthUpToDate = false;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+
+	m_clusterArrayTableSize = C.m_clusterArrayTableSize;
+	deepCopy(C,G,originalClusterTable,originalNodeTable);
+}
+
+
+ClusterGraph::ClusterGraph(
+	const ClusterGraph &C,
+	Graph &G,
+	ClusterArray<cluster> &originalClusterTable,
+	NodeArray<node> &originalNodeTable,
+	EdgeArray<edge> &edgeCopy)
+:
+	GraphObserver(&G),
+	m_lcaSearch(0),
+	m_vAncestor(0),
+	m_wAncestor(0)
+{
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_rootCluster    = 0;
+
+	m_allowEmptyClusters = true;
+	m_updateDepth   = false;
+	m_depthUpToDate = false;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+
+	m_clusterArrayTableSize = C.m_clusterArrayTableSize;
+	deepCopy(C, G, originalClusterTable, originalNodeTable, edgeCopy);
+}
+
+
+ClusterGraph::ClusterGraph(const ClusterGraph &C,Graph &G) :
+	GraphObserver(&G),
+	m_lcaSearch(0),
+	m_vAncestor(0),
+	m_wAncestor(0)
+{
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_rootCluster    = 0;
+
+	m_allowEmptyClusters = true;
+	m_updateDepth   = false;
+	m_depthUpToDate = false;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+
+	m_clusterArrayTableSize = C.m_clusterArrayTableSize;
+	deepCopy(C,G);
+}
+
+
+ClusterGraph::~ClusterGraph()
+{
+	for(ListIterator<ClusterArrayBase*> it = m_regClusterArrays.begin();
+		it.valid(); ++it)
+	{
+		(*it)->disconnect();
+	}
+
+	clear();
+}
+
+
+// Construction of a new cluster graph. All nodes
+// are children of the root cluster
+void ClusterGraph::init(const Graph &G)
+{
+	clear();
+	m_clusterIdCount = 0;
+	m_postOrderStart = 0;
+	m_pGraph = &G;
+
+	m_nClusters = 0;
+	m_lcaNumber = 0;
+	m_clusterArrayTableSize = G.nextPower2(MIN_CLUSTER_TABLE_SIZE, G.nodeArrayTableSize());
+	//m_clusterDepth.init(*this, 0);
+	initGraph(G);
+}
+
+
+
+//---------------------------------------------------------
+// =
+//---------------------------------------------------------
+
+ClusterGraph &ClusterGraph::operator=(const ClusterGraph &C)
+{
+	clear(); shallowCopy(C);
+	m_clusterArrayTableSize = C.m_clusterArrayTableSize;
+	reinitArrays();
+
+	OGDF_ASSERT_IF(dlConsistencyChecks, consistencyCheck());
+	return *this;
+}
+
+
+//---------------------------------------------------------
+// copy,initGraph
+//---------------------------------------------------------
+
+// Copy Function
+void ClusterGraph::shallowCopy(const ClusterGraph &C)
+{
+	const Graph &G = C;
+	m_pGraph = &G;
+
+	m_nClusters = 0;
+
+	//m_clusterDepth.init(*this, 0);
+
+	initGraph(G);
+
+	m_updateDepth = C.m_updateDepth;
+	m_depthUpToDate = C.m_depthUpToDate;
+
+	// Construct cluster tree
+	ClusterArray<cluster> originalClusterTable(C);
+	cluster c = 0;
+	forall_clusters(c,C)
+	{
+		if (c == C.m_rootCluster)
+		{
+			originalClusterTable[c] = m_rootCluster;
+			//does not really need to be assigned HERE in for
+			m_rootCluster->depth() = 1;
+			OGDF_ASSERT(C.rootCluster()->depth() == 1)
+			continue;
+		}
+		originalClusterTable[c] = newCluster();
+		originalClusterTable[c]->depth() = c->depth();
+	}
+	forall_clusters(c,C)
+	{
+
+		if (c == C.m_rootCluster)
+			continue;
+		originalClusterTable[c]->m_parent = originalClusterTable[c->m_parent];
+		originalClusterTable[c->m_parent]->m_children.pushBack(originalClusterTable[c]);
+		originalClusterTable[c]->m_it = originalClusterTable[c->m_parent]->m_children.rbegin();
+	}
+
+	node v;
+	forall_nodes(v,G)
+		reassignNode(v,originalClusterTable[C.clusterOf(v)]);
+
+	copyLCA(C);
+}
+
+
+
+// Initialize the graph
+void ClusterGraph::initGraph(const Graph &G)
+{
+
+	reregister(&G); //will in some constructors cause double registration
+
+	m_lcaNumber = 0;
+	m_lcaSearch = 0;
+	m_vAncestor = 0;
+	m_wAncestor = 0;
+
+	//if (G.empty())
+	//	return;
+
+	m_adjAvailable = false;
+
+	//assign already existing nodes, new nodes are assigned
+	//over nodeadded
+	List<node> allNodes;
+	G.allNodes(allNodes);
+
+	//clusterIdcount may be zero in case of constructor call,
+	//but can be != zero if readgraphwin is used
+	//root cluster should always get id 0
+	#ifdef OGDF_DEBUG
+	m_rootCluster = OGDF_NEW ClusterElement(this, 0);//m_clusterIdCount++);
+	#else
+	m_rootCluster = OGDF_NEW ClusterElement(0);//m_clusterIdCount++);
+	#endif
+
+	OGDF_ASSERT(m_nClusters == 0)
+
+	m_clusterIdCount++;
+	m_rootCluster->depth() = 1;
+	m_rootCluster->init(allNodes);
+	m_nodeMap.init(G,m_rootCluster);
+	m_itMap.init(G,0);
+	ListIterator<node> it;
+	for (it = m_rootCluster->m_entries.begin(); it.valid(); it++)
+		m_itMap[*it] = it;
+
+	m_nClusters++;
+	m_clusters.pushBack(m_rootCluster);
+}
+
+
+void ClusterGraph::reinitGraph(const Graph &G)
+	{
+		m_pGraph = &G;
+
+		OGDF_ASSERT_IF(dlConsistencyChecks, G.consistencyCheck());
+
+		m_clusterArrayTableSize = G.nextPower2(MIN_CLUSTER_TABLE_SIZE, G.nodeArrayTableSize());
+
+		if (numberOfClusters() != 0)
+		{
+			clear();
+		}//if
+		initGraph(G); //already constructs root cluster, reassign
+	}
+
+
+void ClusterGraph::reinitArrays()
+{
+	ListIterator<ClusterArrayBase*> itCluster = m_regClusterArrays.begin();
+	for(; itCluster.valid(); ++itCluster)
+		(*itCluster)->reinit(m_clusterArrayTableSize);
+}
+
+
+
+// Copy Function
+void ClusterGraph::deepCopy(const ClusterGraph &C,Graph &G)
+{
+
+	const Graph &cG = C;	// original graph
+
+	ClusterArray<cluster> originalClusterTable(C);
+	NodeArray<node> originalNodeTable(cG);
+	EdgeArray<edge> edgeCopy(cG);
+
+	deepCopy(C,G,originalClusterTable, originalNodeTable, edgeCopy);
+}
+
+void ClusterGraph::deepCopy(const ClusterGraph &C,Graph &G,
+							ClusterArray<cluster> &originalClusterTable,
+							NodeArray<node> &originalNodeTable)
+{
+
+	const Graph &cG = C;	// original graph
+
+	EdgeArray<edge> edgeCopy(cG);
+
+	deepCopy(C,G,originalClusterTable, originalNodeTable, edgeCopy);
+}
+
+void ClusterGraph::deepCopy(const ClusterGraph &C,Graph &G,
+							ClusterArray<cluster> &originalClusterTable,
+							NodeArray<node> &originalNodeTable,
+							EdgeArray<edge> &edgeCopy)
+{
+	G.clear();
+
+	const Graph &cG = C;	// original graph
+
+	m_pGraph = &G;
+
+	m_nClusters = 0;
+
+	initGraph(G); //arrays have already to be initialized for newnode
+
+	m_updateDepth = C.m_updateDepth;
+	m_depthUpToDate = C.m_depthUpToDate;
+
+	NodeArray<node> orig(G);
+	node v;
+	edge e;
+
+	forall_nodes(v,cG)
+	{
+		node w = G.newNode();
+		orig[w] = v;
+		originalNodeTable[v] = w;
+	}
+	forall_edges(e,cG)
+	{
+		edge eNew = G.newEdge(originalNodeTable[e->adjSource()->theNode()],
+					originalNodeTable[e->adjTarget()->theNode()]);
+		edgeCopy[e] = eNew;
+	}//foralledges
+
+	//m_clusterDepth.init(*this, 0);
+
+
+	// Construct cluster tree
+	cluster c = 0;
+	forall_clusters(c,C)
+	{
+		if (c == C.m_rootCluster)
+		{
+			originalClusterTable[c] = m_rootCluster;
+			//does not really need to be assigned HERE in for
+			m_rootCluster->depth() = 1;
+			OGDF_ASSERT(c->depth() == 1)
+			continue;
+		}
+		originalClusterTable[c] = newCluster();
+		originalClusterTable[c]->depth() = c->depth();
+	}
+	forall_clusters(c,C)
+	{
+
+		if (c == C.m_rootCluster)
+			continue;
+		originalClusterTable[c]->m_parent = originalClusterTable[c->m_parent];
+		originalClusterTable[c->m_parent]->m_children.pushBack(originalClusterTable[c]);
+		originalClusterTable[c]->m_it = originalClusterTable[c->m_parent]->m_children.rbegin();
+	}
+
+	forall_nodes(v,G)
+		reassignNode(v,originalClusterTable[C.clusterOf(orig[v])]);
+
+	//ClusterArray<cluster>* ca = ;
+	copyLCA(C, &originalClusterTable);
+}
+
+//*********************************************************
+//cluster search
+
+//We search for the lowest common cluster of a set of nodes.
+//We first compute the common path of two nodes, then update path if root
+//path from other nodes hits it .
+//We always stop if we encounter root cluster.
+cluster ClusterGraph::commonCluster(SList<node>& nodes)
+{
+	//worst case running time #nodes x clustertreeheight-1
+	//always <= complete tree run
+	//we could even use pathcompression...
+	//at any time, we stop if root is encountered as lowest
+	//common cluster of a node subset
+
+
+	if (nodes.empty()) return 0;
+
+	//For simplicity, we use cluster arrays
+	ClusterArray<int> commonPathHit(*this, 0); //count for clusters path hits
+	int runs = 0; //number of nodes already considered
+	cluster pathCluster;
+	SListIterator<node> sIt = nodes.begin();
+	node v1 = (*sIt);
+	if (nodes.size() == 1) return clusterOf(v1);
+	sIt++;
+	node v2 = (*sIt);
+
+	cluster lowestCommon = commonCluster(v1, v2);
+	commonPathHit[lowestCommon] = 2;
+	pathCluster = lowestCommon;
+	while (pathCluster->parent())
+	{
+		pathCluster = pathCluster->parent();
+		commonPathHit[pathCluster] = 2;
+	}
+	runs = 2;
+	//we save direct lca access, it also lies on a runs hit path from root
+	while ((runs < nodes.size()) && (lowestCommon != m_rootCluster))
+	{
+		sIt++;
+		node v = (*sIt);
+		pathCluster = clusterOf(v);
+		while (commonPathHit[pathCluster] == 0)
+		{
+			if (pathCluster->parent()) pathCluster = pathCluster->parent();
+			else return m_rootCluster; //can never happen
+		}//while
+		//assign new (maybe same) lowest common
+		if (commonPathHit[pathCluster] == runs) lowestCommon = pathCluster;
+		commonPathHit[pathCluster] = commonPathHit[pathCluster]+1;
+		if (pathCluster == m_rootCluster) return m_rootCluster;
+		//update hits in path to root
+		while (pathCluster->parent())
+		{
+			pathCluster = pathCluster->parent();
+			commonPathHit[pathCluster] = commonPathHit[pathCluster]+1;
+		}
+
+		runs++;
+	}
+	return lowestCommon;
+
+
+}//commoncluster
+
+//lowest common cluster of v,w
+cluster ClusterGraph::commonCluster(node v, node w) const
+{
+	cluster c1, c2;
+	return commonClusterLastAncestors(v, w, c1, c2);
+}//commonCluster
+
+//lowest common cluster of v,w and its ancestors
+cluster ClusterGraph::commonClusterLastAncestors(node v,
+												 node w,
+												 cluster& c1,
+												 cluster& c2) const
+{
+	List<cluster> e;
+	return commonClusterAncestorsPath(v, w, c1, c2, e);
+}//commonClusterLastAncestors
+//lowest common cluster and path between v and w containing it
+//note that eL is directed from v to w
+cluster ClusterGraph::commonClusterPath(node v,
+										node w,
+										List<cluster>& eL) const
+{
+	cluster c1, c2;
+	return commonClusterAncestorsPath(v, w, c1, c2, eL);
+}//commonClusterLastAncestors
+
+//note that eL is directed from v to w
+cluster ClusterGraph::commonClusterAncestorsPath(node v,
+												 node w,
+												 cluster& c1,
+												 cluster& c2,
+												 List<cluster>& eL) const
+{
+	OGDF_ASSERT(v->graphOf() == m_pGraph)
+	OGDF_ASSERT(w->graphOf() == m_pGraph)
+
+	cluster cv = clusterOf(v);
+	cluster cw = clusterOf(w);
+
+
+	//clusters from v and w to common
+	List<cluster> vList;
+	List<cluster> wList;
+
+	//CASE1 no search necessary
+	//if both nodes are in the same cluster, we return this cluster
+	//and have to check if c1 == c2 to have a (v,w) representation edge
+	if (cv == cw)
+	{
+		c1 = c2 = cv;
+		eL.pushBack(c1);
+		return cv;
+	}
+
+	if (m_lcaNumber == INT_MAX - 1) m_lcaNumber = 0;
+	else m_lcaNumber++;
+	if (!m_lcaSearch)
+	{
+		m_lcaSearch = OGDF_NEW ClusterArray<int>(*this, -1);
+		m_vAncestor = OGDF_NEW ClusterArray<cluster>(*this, 0);
+		m_wAncestor = OGDF_NEW ClusterArray<cluster>(*this, 0);
+	}
+
+	//CASE2: one of the nodes hangs at root: save root as ancestor
+	//any other case: save cluster of node as ancestor, too, to check this
+	//case:: common = xCluster != yCluster
+	//(*m_vAncestor)[rootCluster()] = rootCluster();
+	//(*m_wAncestor)[rootCluster()] = rootCluster();
+	(*m_vAncestor)[cv] = 0;
+	(*m_wAncestor)[cw] = 0;
+
+	//we rely on the fact all nodes are in the rootcluster or
+	//that parent is initialized to zero to terminate
+
+	//we start with different clusters due to CASE1
+	//save the ancestor information
+	(*m_lcaSearch)[cw] = m_lcaNumber; //not really necessary, we won't return
+	(*m_lcaSearch)[cv] = m_lcaNumber;
+	vList.pushBack(cv);
+	wList.pushBack(cw);
+
+	//we break and return if we find a common node
+	//before we reach the rootcluster
+	do
+	{
+		if (cv->parent()) //root reached?
+		{
+			(*m_vAncestor)[cv->parent()] = cv;
+			cv = cv->parent();
+			//was cv visited on path from w
+			if ((*m_lcaSearch)[cv] == m_lcaNumber)
+			{
+				c1 = (*m_vAncestor)[cv];
+				c2 = (*m_wAncestor)[cv];
+				//setup list
+				ListIterator<cluster> itC = vList.begin();
+
+				while (itC.valid())
+				{
+					eL.pushBack(*itC);
+					itC++;
+				}
+				itC = wList.rbegin();
+				while (itC.valid() && ((*itC) != cv))
+					itC--;
+				while (itC.valid())
+				{
+					eL.pushBack(*itC);
+					itC--;
+				}
+
+				return cv;
+			}
+			vList.pushBack(cv);
+			(*m_lcaSearch)[cv] = m_lcaNumber;
+		}//if not root reached on cvpath
+
+		if (cw->parent())
+		{
+			(*m_wAncestor)[cw->parent()] = cw;
+			cw = cw->parent();
+			//was cw visited on path from v
+			if ((*m_lcaSearch)[cw] == m_lcaNumber)
+			{
+				c1 = (*m_vAncestor)[cw];
+				c2 = (*m_wAncestor)[cw];
+				//setup list
+				ListIterator<cluster> itC = vList.begin();
+				while (itC.valid() && ((*itC) != cw))
+				{
+					eL.pushBack(*itC);
+					itC++;
+				}
+
+				eL.pushBack(cw);
+
+				itC = wList.rbegin();
+				while (itC.valid())
+				{
+					eL.pushBack(*itC);
+					itC--;
+				}
+
+				return cw;
+			}
+			wList.pushBack(cw);
+			(*m_lcaSearch)[cw] = m_lcaNumber;
+
+		}//if not root reached on cwpath
+	}	while ( cv->parent() || cw->parent() );
+
+	//v,w should be at least together in the rootcluster
+	c1 = (*m_vAncestor)[rootCluster()];
+	c2 = (*m_wAncestor)[rootCluster()];
+	return rootCluster();
+
+}//commonclusterlastAncestors
+
+void ClusterGraph::copyLCA(
+	const ClusterGraph &C,
+    ClusterArray<cluster>* /*clusterCopy*/)
+{
+	if (m_lcaSearch)
+	{
+		delete m_lcaSearch;
+		delete m_vAncestor;
+		delete m_wAncestor;
+	}//if
+	if (C.m_lcaSearch)
+	{
+		//otherwise, initialization won't work
+		m_clusterArrayTableSize = C.m_clusterArrayTableSize;
+
+		m_lcaSearch = OGDF_NEW ClusterArray<int>(*this, -1);//(*C.m_lcaSearch);
+
+		m_vAncestor = OGDF_NEW ClusterArray<cluster>(*this, 0); //*C.m_vAncestor);
+		//m_vAncestor->init(*this, 0),
+		m_wAncestor = OGDF_NEW ClusterArray<cluster>(*this, 0);//*C.m_wAncestor);
+		//setting of clusters is not necessary!
+		//(*m_v/wAncestor)[(*clusterCopy)[c]]= (*(C.m_v/wAncestor))[c];
+	}//if
+}//copylca
+
+//---------------------------------------------------------
+// check the graph for empty clusters
+//---------------------------------------------------------
+//we never set rootcluster to be one of the empty clusters!!
+void ClusterGraph::emptyClusters(SList<cluster>& emptyCluster,
+								 SList<cluster>* checkCluster)
+{
+	emptyCluster.clear();
+	cluster cc;
+	//for all nodes = #nodes
+	if (checkCluster)
+	{
+		SListIterator<cluster> it = checkCluster->begin();
+
+		while (it.valid())
+		{
+			if ((*it)->cCount() + (*it)->nCount() == 0)
+				if ((*it) != rootCluster()) //we dont add rootcluster
+					emptyCluster.pushBack((*it));
+			it++;
+		}//while
+	}//if checkcluster given
+	else
+	{
+		forall_clusters(cc, *this)
+		{
+			if (cc->cCount() + cc->nCount() == 0)
+				if (cc != rootCluster()) //we dont add rootcluster
+					emptyCluster.pushBack(cc);
+		}//forallclusters
+	}//else checkcluster
+	//other clusters can get empty, too, if we delete these
+	ClusterArray<int> delCount(*this, 0);
+	SList<cluster> emptyParent;
+	SListIterator<cluster> itC = emptyCluster.begin();
+	while (itC.valid())
+	{
+		//count deleted children
+		cluster runc = (*itC)->parent();
+		if (runc)  //is always the case as long as root was not inserted to list
+		{
+			delCount[runc]++;
+			while ((runc->nCount() == 0) && (runc->cCount() == delCount[runc]))
+			{
+				if (runc == rootCluster()) break;
+				emptyParent.pushBack(runc);
+				runc = runc->parent();
+				delCount[runc]++;
+			}//while parent emptied
+		}//if not runc = root->parent
+
+		itC++;
+	}//while empty leaves
+
+	emptyCluster.conc(emptyParent);
+	//for reinsertion, start at emptycluster's back
+
+}//emptyClusters
+
+//---------------------------------------------------------
+// newCluster, delCluster, createCluster
+//---------------------------------------------------------
+
+// Inserts a new cluster prescribing its parent
+cluster ClusterGraph::newCluster(cluster parent, int id)
+{
+	OGDF_ASSERT(parent);
+	cluster c;
+	if (id > 0)
+		c = newCluster(id);
+	else
+		c = newCluster();
+	parent->m_children.pushBack(c);
+	c->m_it = parent->m_children.rbegin();
+	c->m_parent = parent;
+	c->depth() = parent->depth() + 1;
+
+	return c;
+}
+
+//Insert a new cluster with given ID, precondition: id not used
+//has to be updated in the same way as newcluster()
+cluster ClusterGraph::newCluster(int id)
+{
+	m_nClusters++;
+	m_adjAvailable = false;
+	m_postOrderStart = 0;
+	if (id >= m_clusterIdCount) m_clusterIdCount = id+1;
+	if (m_clusterIdCount >= m_clusterArrayTableSize)
+	{
+		m_clusterArrayTableSize =
+			m_pGraph->nextPower2(m_clusterArrayTableSize, id);
+		for(ListIterator<ClusterArrayBase*> it = m_regClusterArrays.begin();
+			it.valid(); ++it)
+		{
+			(*it)->enlargeTable(m_clusterArrayTableSize);
+		}
+	}
+	#ifdef OGDF_DEBUG
+	cluster c = OGDF_NEW ClusterElement(this,id);
+	#else
+	cluster c = OGDF_NEW ClusterElement(id);
+	#endif
+	m_clusters.pushBack(c);
+	// notify observers
+	for(ListIterator<ClusterGraphObserver*> it = m_regObservers.begin();
+			it.valid(); ++it) (*it)->clusterAdded(c);
+	return c;
+}
+
+// Inserts a new cluster
+//has to be updated in the same way as newcluster(id)
+cluster ClusterGraph::newCluster()
+{
+	m_nClusters++;
+	m_adjAvailable = false;
+	m_postOrderStart = 0;
+	if (m_clusterIdCount == m_clusterArrayTableSize)
+	{
+		m_clusterArrayTableSize <<= 1;
+		for(ListIterator<ClusterArrayBase*> it = m_regClusterArrays.begin();
+			it.valid(); ++it)
+		{
+			(*it)->enlargeTable(m_clusterArrayTableSize);
+		}
+	}
+	#ifdef OGDF_DEBUG
+	cluster c = OGDF_NEW ClusterElement(this,m_clusterIdCount++);
+	#else
+	cluster c = OGDF_NEW ClusterElement(m_clusterIdCount++);
+	#endif
+	m_clusters.pushBack(c);
+	// notify observers
+	for(ListIterator<ClusterGraphObserver*> it = m_regObservers.begin();
+			it.valid(); ++it) (*it)->clusterAdded(c);
+	return c;
+}
+
+cluster ClusterGraph::createEmptyCluster(const cluster parent, int clusterId)
+{
+	//if no id given, use next free id
+	if (clusterId < 0) clusterId = m_clusterIdCount;
+	//create the new cluster
+	cluster cnew;
+	if (parent)
+		cnew = newCluster(parent, clusterId);
+	else
+		cnew = newCluster(m_rootCluster, clusterId);
+	return cnew;
+}//createemptycluster
+
+cluster ClusterGraph::createCluster(SList<node>& nodes, const cluster parent)
+{
+	cluster c;
+	if (m_allowEmptyClusters)
+	{
+		c = doCreateCluster(nodes, parent);
+		return c;
+	}
+	else
+	{
+		SList<cluster> emptyCluster;
+
+		c = doCreateCluster(nodes, emptyCluster, parent);
+
+		SListIterator<cluster> sIt = emptyCluster.begin();
+		while (sIt.valid())
+		{
+			delCluster((*sIt));
+
+			//root cluster can never be empty, as we deleted a node
+			sIt++;
+		}//While
+	}
+	return c;
+}
+
+cluster ClusterGraph::doCreateCluster(SList<node>& nodes,
+		const cluster parent,
+		int clusterId)
+{
+
+	if (nodes.empty()) return 0;
+
+	//if no id given, use next free id
+	if (clusterId < 0) clusterId = m_clusterIdCount;
+	//create the new cluster
+	cluster cnew;
+	if (parent)
+		cnew = newCluster(parent, clusterId);
+	else
+		cnew = newCluster(m_rootCluster, clusterId);
+
+	//insert nodes in new cluster
+	SListIterator<node> it = nodes.begin();
+	while (it.valid())
+	{
+		reassignNode((*it), cnew);
+		it++;
+	}//while
+
+	return cnew;
+}//createcluster
+
+cluster ClusterGraph::doCreateCluster(SList<node>& nodes,
+		SList<cluster>& emptyCluster,
+		const cluster parent,
+		int clusterId)
+{
+	// Even if m_allowEmptyClusters is set we check if a cluster
+	// looses all of its nodes and has
+	// no more entries and childs. This can be used for special cluster
+	// object handling or for deletion if m_allowEmptyClusters is not set
+	// if it is not the new parent, it can be deleted
+	// running time max(#cluster, length(nodelist))
+	// TODO: Parameter, der dies auslaesst, da hohe Laufzeit
+	// hier macht das nur Sinn, wenn es schneller ist als forallclusters,
+	// sonst koennte man es ja auch aussen testen, aber bisher ist es nicht
+	// schneller implementiert
+	// Vorgehen: hash auf cluster index, falls nicht gesetzt, in liste einfuegen
+	// und als checkcluster an emptycluster uebergeben
+
+	if (nodes.empty()) return 0;
+
+	//if no id given, use next free id
+	if (clusterId < 0) clusterId = m_clusterIdCount;
+	//create the new cluster
+	cluster cnew;
+	if (parent)
+		cnew = newCluster(parent, clusterId);
+	else
+		cnew = newCluster(m_rootCluster, clusterId);
+
+	//insert nodes in new cluster
+	SListIterator<node> it = nodes.begin();
+	while (it.valid())
+	{
+		reassignNode((*it), cnew);
+		it++;
+	}//while
+
+	//should be: only for changed clusters (see comment above)
+	//it is important to save the cluster in an order
+	//that allows deletion as well as reinsertion
+	emptyClusters(emptyCluster);
+	//for reinsertion, start at emptycluster's back
+
+	return cnew;
+}//createcluster
+
+// Deletes cluster c
+// All subclusters become children of parent cluster
+// Precondition: c is not the root cluster
+// updating of cluster depth information pumps running time
+// up to worst case O(#C)
+void ClusterGraph::delCluster(cluster c)
+{
+	OGDF_ASSERT(c != 0 && c->graphOf() == this && c != m_rootCluster)
+
+	// notify observers
+	for(ListIterator<ClusterGraphObserver*> it = m_regObservers.begin();
+			it.valid(); ++it) (*it)->clusterDeleted(c);
+
+	--m_nClusters;
+	m_adjAvailable = false;
+
+	c->m_parent->m_children.del(c->m_it);
+	c->m_it = 0;
+
+	while (!c->m_children.empty())
+	{
+		cluster trace = c->m_children.popFrontRet();
+		trace->m_parent =  c->m_parent;
+		trace->m_parent->m_children.pushBack(trace);
+		trace->m_it = trace->m_parent->m_children.rbegin();
+
+		//only recompute depth if option set and it makes sense
+		if (m_updateDepth && m_depthUpToDate)
+		{
+			//update depth for all children in subtree
+			OGDF_ASSERT(trace->depth() == trace->parent()->depth()+2)
+			pullUpSubTree(trace);
+			//could just set depth-1 here
+			//trace->depth() = trace->parent()->depth()+1;
+
+		}///if depth update
+		else m_depthUpToDate = false;
+	}
+	while (!c->m_entries.empty())
+	{
+		node v = c->m_entries.popFrontRet();
+		m_nodeMap[v] = 0;
+		reassignNode(v,c->m_parent);
+	}
+
+	m_clusters.del(c);
+}
+
+//pulls up depth of subtree located at c by one
+//precondition: depth is consistent
+//we dont ask for depthuptodate since the caller needs
+//to know for himself if he wants the tree to be pulled
+//for any special purpose
+void ClusterGraph::pullUpSubTree(cluster c)
+{
+	c->depth() = c->depth() - 1;
+	ListConstIterator<cluster> it = c->getChildren().begin();
+	while (it.valid())
+	{
+		pullUpSubTree(*it);
+		it++;
+	}
+
+}
+
+//---------------------------------------------------------
+// clear, clearClusterTree
+//---------------------------------------------------------
+
+void ClusterGraph::clear()
+{
+	//split condition
+	if (m_lcaSearch)
+	{
+		delete m_lcaSearch;
+		delete m_vAncestor;
+		delete m_wAncestor;
+	}
+	if (m_nClusters != 0)
+	{
+		clearClusterTree(m_rootCluster);
+		m_clusters.del(m_rootCluster);
+	}
+	//no clusters, so we can restart at 0
+	m_clusterIdCount = 0;
+	m_nClusters = 0;
+}
+
+
+// Removes the Clustering of a Tree and frees the allocated memory
+void ClusterGraph::clearClusterTree(cluster c)
+{
+	cluster trace = 0;
+	cluster parent = c->parent();
+	m_postOrderStart = 0;
+	m_adjAvailable = false;
+
+	List<cluster>  children = c->getChildren();
+	List<node>     attached;
+
+	while (!children.empty())
+	{
+		trace = children.popFrontRet();
+		clearClusterTree(trace,attached);
+	}
+
+	if (parent != 0)
+	{
+		ListIterator<node> it;
+		for (it = attached.begin();it.valid();it++)
+		{
+			m_nodeMap[(*it)] = parent;
+			parent->m_entries.pushBack((*it));
+			m_itMap[(*it)] = parent->m_entries.rbegin();
+		}
+		m_clusters.del(c);
+	}
+	else if (c == m_rootCluster)
+	{
+		ListIterator<node> it;
+		for (it = attached.begin();it.valid();it++)
+		{
+			m_nodeMap[(*it)] = m_rootCluster;
+			m_rootCluster->m_entries.pushBack((*it));
+			m_itMap[(*it)] = m_rootCluster->m_entries.rbegin();
+		}
+		m_rootCluster->m_children.clear();
+	}
+}
+
+void ClusterGraph::clearClusterTree(cluster c,List<node> &attached)
+{
+	cluster trace;
+	List<cluster>  children = c->getChildren();
+	attached.conc(c->m_entries);
+	m_adjAvailable = false;
+
+	while (!children.empty())
+	{
+		trace = children.popFrontRet();
+		clearClusterTree(trace,attached);
+	}
+	m_clusters.del(c);
+}
+
+//don't delete root cluster
+void ClusterGraph::semiClear()
+{
+	//split condition
+	if (m_lcaSearch)
+	{
+		delete m_lcaSearch;
+		delete m_vAncestor;
+		delete m_wAncestor;
+	}
+	if (m_nClusters != 0)
+	{
+		//clear the cluster structure under root cluster
+		clearClusterTree(m_rootCluster);
+		//now delete all rootcluster entries
+		while (!m_rootCluster->m_entries.empty())
+		{
+			node v = m_rootCluster->m_entries.popFrontRet();
+			m_nodeMap[v] = 0;
+		}
+	}
+	//no child clusters, so we can restart at 1
+	m_clusterIdCount = 1;
+	m_nClusters = 1;
+}
+
+//reassign cluster depth for clusters in subtree rooted at c
+void ClusterGraph::computeSubTreeDepth(cluster c) const
+{
+	if (c == rootCluster()) m_depthUpToDate = true;
+	if (!(c->parent())) c->depth() = 1;
+	else c->depth() = c->parent()->depth() + 1;
+	ListConstIterator<cluster> it = c->getChildren().begin();
+	while (it.valid())
+	{
+		computeSubTreeDepth(*it);
+		it++;
+	}
+
+}
+
+//move cluster from old parent to an other
+void ClusterGraph::moveCluster(cluster c, cluster newParent)
+{
+	if (c == rootCluster()) return;
+	if ((c == 0) || (newParent == 0)) return; //no cheap tricks
+	if (c->parent() == newParent) return;     //no work to do
+
+	cluster oldParent = c->parent();
+	//we dont move root
+	OGDF_ASSERT(oldParent)
+
+	//check if we move to a descendant
+	cluster crun = newParent->parent();
+	bool descendant = false;
+	while (crun)
+	{
+		if (crun == c)
+		{
+			descendant = true;
+			break;
+		}
+		crun = crun->parent();
+	}//while running upwards
+
+	//do not allow to move empty clusters to descendants
+	if (descendant && (c->nCount() == 0))
+		return;
+
+	// save postorder for old parent
+	bool newOrder = false;
+	if (!m_postOrderStart)
+	{
+		newOrder = true;
+	}
+
+	//temporarily only recompute postorder for all clusters
+
+	oldParent->m_children.del(c->m_it);
+	newParent->m_children.pushBack(c);
+	c->m_it = newParent->m_children.rbegin();
+	c->m_parent = newParent;
+
+	//update the cluster depth information in the subtree
+	//If moved to descendant, recompute
+	//depth for parent (including all brother trees)
+	if (descendant)
+	{
+		//how do we move:
+		//only entries with c? => may be empty
+		//we currently dont allow this, because it makes
+		//no sense, you could just delete the cluster or move
+		//the children
+		//move all children to oldparent
+
+		while (!c->m_children.empty())
+		{
+			cluster child = c->m_children.popFrontRet();
+			child->m_parent =  oldParent;
+			child->m_parent->m_children.pushBack(child);
+			child->m_it = child->m_parent->m_children.rbegin();
+			//child++;
+		}
+
+		//recompute depth only if option set AND it makes sense at that point
+		if (m_updateDepth && m_depthUpToDate)
+			computeSubTreeDepth(oldParent);
+		else m_depthUpToDate = false;
+	}//moved to descendant
+	else
+	{
+		if (m_updateDepth && m_depthUpToDate)
+			computeSubTreeDepth(c);
+		else m_depthUpToDate = false;
+	}
+
+	// update postorder for new parent
+	// we only recompute postorder for all clusters
+	// because of special cases like move to descendant...
+	if (newOrder) postOrder();
+	else postOrder();
+
+	m_adjAvailable = false;
+
+	//checkPostOrder();
+}//move cluster
+
+
+//*****************
+//postorder updates
+
+//leftmostcluster in subtree rooted at c, has postorderpred for subtree
+cluster ClusterGraph::leftMostCluster(cluster c) const
+{
+	cluster result = c;
+	if (!c) return 0;
+	while (!result->m_children.empty())
+	{
+		result = result->m_children.front();
+	}
+	return result;
+}//leftMostCluster
+
+//searches for predecessor of SUBTREE at c
+cluster ClusterGraph::postOrderPredecessor(cluster c) const
+{
+	//all clusters on a path from root to leftmost cluster in tree
+	//have no predecessor for their subtree
+	cluster run = c;
+	ListConstIterator<cluster> it;
+	do
+	{
+		//predecessor of clustertree is	0
+		if (run == m_rootCluster) return 0;
+		it = run->m_it;
+		//a child to the left is the immediate predecessor,
+		//otherwise we go one level up
+		if (it == (run->m_parent)->m_children.begin())
+			run = run->parent();
+		else return (*(it.pred()));
+
+	} while (run);
+
+	return 0;
+}//postorderpredecessor
+
+//***************
+//node assignment
+//Assigns a node to a new cluster
+void ClusterGraph::assignNode(node v, cluster c)
+{
+	m_adjAvailable = false;
+	m_postOrderStart = 0;
+	m_nodeMap[v] = c;
+	c->m_entries.pushBack(v);
+	m_itMap[v] = c->m_entries.rbegin();
+}
+
+
+//Reassigns a node to a new cluster
+void ClusterGraph::reassignNode(node v, cluster c)
+{
+	OGDF_ASSERT(v->graphOf() == m_pGraph);
+	OGDF_ASSERT(c->graphOf() == this);
+
+	unassignNode(v);
+	m_nodeMap[v] = c;
+	c->m_entries.pushBack(v);
+	m_itMap[v] = c->m_entries.rbegin();
+}
+
+
+//Unassigns a node of cluster
+//Note: Nodes can already be unassigned by the nodeDeleted function.
+void ClusterGraph::unassignNode(node v)
+{
+	m_adjAvailable = false;
+	m_postOrderStart = 0;
+
+	removeNodeAssignment(v);
+}
+
+
+//---------------------------------------------------------
+// Sort clusters in post order
+//---------------------------------------------------------
+
+// Start function for post order
+void ClusterGraph::postOrder() const
+{
+	SListPure<cluster> L;
+	postOrder(m_rootCluster,L);
+	cluster c = 0;
+	cluster prev = L.popFrontRet();
+	prev->m_pPrev = 0;
+	m_postOrderStart = prev;
+	while (!L.empty())
+	{
+		c = L.popFrontRet();
+		prev->m_pNext = c;
+		c->m_pPrev = prev;
+		prev = c;
+	}
+	if (c != 0)
+		c->m_pNext = 0;
+	else
+		m_postOrderStart->m_pNext = 0;
+#ifdef OGDF_DEBUG
+	forall_clusters(c, *this)
+	{
+		cluster cp = leftMostCluster(c);
+		OGDF_ASSERT(cp->pPred() == postOrderPredecessor(c))
+	}
+#endif
+}
+
+//void ClusterGraph::checkPostOrder() const
+//{
+//	SListPure<cluster> L;
+//	postOrder(m_rootCluster,L);
+//	cluster c = 0;
+//    cluster prev = L.popFrontRet();
+//    OGDF_ASSERT(prev->m_pPrev == 0);
+
+//	while (!L.empty())
+//	{
+//		c = L.popFrontRet();
+//        OGDF_ASSERT(prev->m_pNext == c)
+//        OGDF_ASSERT(c->m_pPrev == prev)
+//		prev = c;
+//	}
+//	if (c != 0)
+//	{
+//		OGDF_ASSERT(c->m_pNext == 0)
+//	}
+//	else
+//	{
+//		OGDF_ASSERT(m_postOrderStart->m_pNext == 0);
+//	}
+//}
+// Recursive function for post order
+void ClusterGraph::postOrder(cluster c,SListPure<cluster> &L) const
+{
+	ListIterator<cluster> it;
+	for (it = c->m_children.begin(); it.valid(); it++)
+		postOrder((*it),L);
+	L.pushBack(c);
+}
+
+
+
+
+//---------------------------------------------------------
+// Methods for debugging
+//---------------------------------------------------------
+
+
+// checks the consistency of the data structure
+// (for debugging only)
+bool ClusterGraph::consistencyCheck()
+{
+
+	ClusterArray<bool> visitedClusters((*this),false);
+	NodeArray<bool> visitedNodes((*m_pGraph),false);
+
+
+	cluster c = 0;
+	forall_postOrderClusters(c,(*this))
+	{
+		visitedClusters[c] = true;
+		ListIterator<node> itn;
+		for (itn = c->m_entries.begin(); itn.valid(); itn++)
+		{
+			node v = *itn;
+			if (m_nodeMap[v] != c)
+				return false;
+			visitedNodes[v] = true;
+		}
+	}
+	forall_clusters(c,(*this))
+		if (!visitedClusters[c])
+			return false;
+	node v;
+	forall_nodes(v,(*m_pGraph))
+		if (!visitedNodes[v])
+			return false;
+	return true;
+}
+
+
+
+bool ClusterGraph::representsCombEmbedding()
+{
+
+	if (!m_adjAvailable)
+		return false;
+
+	if (!consistencyCheck())
+		return false;
+
+
+	cluster c = 0;
+	forall_postOrderClusters(c,(*this))
+	{
+
+		#ifdef OGDF_DEBUG
+		if (int(ogdf::debugLevel) >= int(dlHeavyChecks)){
+			cout << "__________________________________________________________________"
+				 << endl << endl
+				 << "Testing cluster " << c << endl
+				 << "Check on AdjList of c" << endl;
+			adjEntry adjDD;
+			forall_cluster_adj(adjDD,c)
+				cout << adjDD << ";  ";
+			cout << endl;
+		}
+		#endif
+
+		if (c != m_rootCluster)
+		{
+
+			ListIterator<adjEntry> it;
+			it = c->firstAdj();
+			adjEntry start = *it;
+
+			#ifdef OGDF_DEBUG
+			if (int(ogdf::debugLevel) >= int(dlHeavyChecks)){
+				cout << "firstAdj " << start << endl; }
+			#endif
+
+			while (it.valid())
+			{
+				AdjEntryArray<bool> visitedAdjEntries((*m_pGraph),false);
+
+				ListIterator<adjEntry> succ = it.succ();
+				adjEntry adj = *it;
+				adjEntry succAdj;
+
+				if (succ.valid())
+					succAdj = *succ;
+				else
+					succAdj = start;  // reached the last outgoing edge
+
+				#ifdef OGDF_DEBUG
+				if (int(ogdf::debugLevel) >= int(dlHeavyChecks)){
+					cout << "Check next " << endl;
+					cout << "current in adj list of" << adj << endl;
+					cout << "succ in adj list of c " << succAdj << endl;
+					cout << "cyclic succ in outer face " << adj->cyclicSucc() << endl;
+				}
+				#endif
+
+
+
+				if (adj->cyclicSucc() != succAdj)
+					// run along the outer face of the cluster
+					// until you find the next outgoing edge
+				{
+					adjEntry next = adj->cyclicSucc();
+					adjEntry twin = next->twin();
+
+					#ifdef OGDF_DEBUG
+					if (int(ogdf::debugLevel) >= int(dlHeavyChecks)){
+						cout << "Running along the outer face ... " << endl;
+						cout << "next adj " << next << endl;
+						cout << "twin adj " << twin << endl;
+					}
+					#endif
+
+					if (visitedAdjEntries[twin])
+						return false;
+					visitedAdjEntries[twin] = true;
+					while ( next != succAdj)
+					{
+						next = twin->cyclicSucc();
+						twin = next->twin();
+						#ifdef OGDF_DEBUG
+						if (int(ogdf::debugLevel) >= int(dlHeavyChecks)){
+							cout << "Running along the outer face ... " << endl;
+							cout << "next adj " << next << endl;
+							cout << "twin adj " << twin << endl;
+						}
+						#endif
+						if (visitedAdjEntries[twin])
+							return false;
+						visitedAdjEntries[twin] = true;
+					}
+
+				}
+				// else
+				// next edge is also outgoing
+
+				it = succ;
+			}
+		}
+	}
+
+
+	return true;
+
+}
+
+
+
+
+// registers a cluster array
+ListIterator<ClusterArrayBase*> ClusterGraph::registerArray(
+	ClusterArrayBase *pClusterArray) const
+{
+	return m_regClusterArrays.pushBack(pClusterArray);
+}
+
+// unregisters a cluster array
+void ClusterGraph::unregisterArray(ListIterator<ClusterArrayBase*> it) const
+{
+	m_regClusterArrays.del(it);
+}
+
+//! Registers a ClusterGraphObserver.
+ListIterator<ClusterGraphObserver*> ClusterGraph::registerObserver(ClusterGraphObserver *pObserver) const
+{
+	return m_regObservers.pushBack(pObserver);
+}
+
+//! Unregisters a ClusterGraphObserver.
+void ClusterGraph::unregisterObserver(ListIterator<ClusterGraphObserver*> it) const
+{
+	m_regObservers.del(it);
+}
+//---------------------------------------------------------
+// Methods for printing
+//---------------------------------------------------------
+
+
+// writes graph in GML format to file fileName
+void ClusterGraph::writeGML(const char *fileName)
+{
+	ofstream os(fileName);
+	writeGML(os);
+}
+
+// writes graph in GML format to output stream os
+void ClusterGraph::writeGML(ostream &os)
+{
+	NodeArray<int>    nId(*m_pGraph);
+	ClusterArray<int> cId(*this);
+	int nextId = 0;
+
+	os << "Creator \"ogdf::ClusterGraph::writeGML\"\n";
+	os << "graph [\n";
+	os << "  directed 1\n";
+
+	node v;
+	forall_nodes(v,*m_pGraph) {
+		os << "  node [\n";
+		os << "    id " << (nId[v] = nextId++) << "\n";
+		os << "  ]\n"; // node
+	}
+
+	edge e;
+	forall_edges(e,*m_pGraph) {
+		os << "  edge [\n";
+		os << "    source " << nId[e->source()] << "\n";
+		os << "    target " << nId[e->target()] << "\n";
+		os << "  ]\n"; // edge
+	}
+
+	String scip = "  ";
+	nextId = 0;
+	writeCluster(os,nId,cId,nextId,m_rootCluster,scip);
+
+	os << "]\n"; // graph
+}
+
+
+// recursively write the cluster structure in GML
+void ClusterGraph::writeCluster(ostream &os,
+								NodeArray<int> &nId,
+								ClusterArray<int> & cId,
+								int &nextId,
+								cluster c,
+								String scip)
+{
+	String newScip = scip;
+	newScip+="  ";
+	os << scip << "cluster [\n";
+	os << scip << "  id " << (cId[c] = nextId++) << "\n";
+	ListIterator<cluster> it;
+	for (it = c->m_children.begin(); it.valid(); it++)
+		writeCluster(os,nId,cId,nextId,*it,newScip);
+	ListIterator<node> itn;
+	for (itn = c->m_entries.begin(); itn.valid(); itn++)
+		os << scip << "  node " << nId[*itn] << "\n";
+	os << scip << "]\n"; // cluster
+}
+
+
+// recursively write the cluster structure in GraphWin GML
+void ClusterGraph::writeGraphWinCluster(ostream &os,
+								NodeArray<int> &nId,
+								NodeArray<String> &nStr,
+								ClusterArray<int> & cId,
+								ClusterArray<String> & cStr,
+								int &nextId,
+								cluster c,
+								String scip)
+{
+	String newScip = scip;
+	newScip+="  ";
+	if (c == m_rootCluster)
+		os << scip << "rootcluster [\n";
+	else
+	{
+		os << scip << "cluster [\n";
+//		os << scip << "  id " << (cId[c] = nextId++) << "\n";
+		os << scip << "  id " << c->index() << "\n";
+		char newLabel[124];
+//		sprintf(newLabel,"C%d",cId[c]);
+		ogdf::sprintf(newLabel,124,"C%d",c->index());
+		cStr[c] = newLabel;
+		os << scip << "  label \"" << cStr[c] << "\"\n";
+
+	}
+	ListIterator<cluster> it;
+	for (it = c->m_children.begin(); it.valid(); it++)
+		writeGraphWinCluster(os,nId,nStr,cId,cStr,nextId,*it,newScip);
+	ListIterator<node> itn;
+	for (itn = c->m_entries.begin(); itn.valid(); itn++)
+		os << scip << "  vertex \"v" << nId[*itn] << "\"\n";
+	os << scip << "]\n"; // cluster
+}
+
+
+//++++++++++++++++++++++++++++++++++++++++++++
+//reading graph,  cluster structure
+bool ClusterGraph::readClusterGML(const char* fileName,
+								Graph& G)
+{
+	ifstream is(fileName);
+	if (!is)
+		return false; // couldn't open file
+
+	return readClusterGML(is, G);
+}
+
+bool ClusterGraph::readClusterGML(istream& is,
+								Graph& G)
+{
+	bool result;
+	GmlParser gml(is);
+	if (gml.error())
+		return false;
+
+	result = gml.read(G);
+
+	if (!result) return false;
+
+	return gml.readCluster(G, *this);
+}
+
+
+// read Cluster Graph from OGML file
+//bool ClusterGraph::readClusterGraphOGML(const char* fileName,
+//												 ClusterGraph& CG,
+//												 Graph& G)
+//{
+//	ifstream is(fileName);
+//	// not able to open file
+//	if (!is) return false;
+//
+//	OgmlParser *op = new OgmlParser();
+//	// build graph
+//	// method read contains the validation
+//	if (!op->read(fileName, G, CG, *this)){
+//		delete(op);
+//		cerr << "ERROR occured while reading. Aborting." << endl << flush;
+//		return false;
+//	}
+//
+//	delete(op);
+//	return true;
+//};
+
+
+} // end namespace ogdf
+
+//****************************************************************
+ostream &operator<<(ostream &os, ogdf::cluster c)
+{
+	if (c) os << c->index(); else os << "nil";
+	return os;
+}
diff --git a/ogdf/cluster/ClusterGraph.h b/ogdf/cluster/ClusterGraph.h
new file mode 100644
index 0000000..7f9cd7a
--- /dev/null
+++ b/ogdf/cluster/ClusterGraph.h
@@ -0,0 +1,825 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Derived class of GraphObserver providing additional functionality
+ * to handle clustered graphs.
+ *
+ * \author Sebastian Leipert, Karsten Klein
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+
+#ifndef OGDF_CLUSTER_GRAPH_H
+#define OGDF_CLUSTER_GRAPH_H
+
+#include "../basic/NodeArray.h"
+#include "../basic/Stack.h"
+#include "../basic/GraphObserver.h"
+
+
+namespace ogdf {
+
+class OGDF_EXPORT ClusterGraph;
+class OGDF_EXPORT ClusterGraphObserver;
+
+//! Representation of clusters in a clustered graph.
+/**
+ * \see ClusterGraph
+ */
+class OGDF_EXPORT ClusterElement : private GraphElement {
+
+	friend class OGDF_EXPORT ClusterGraph;
+	friend class GraphList<ClusterElement>;
+
+	int						m_id;         //!< The index of this cluster.
+	int						m_depth;      //!< The depth of this cluster in the cluster tree.
+	List<node>				m_entries;    //!< The nodes in this cluster.
+	List<ClusterElement*>	m_children;   //!< The child clusters of this cluster.
+	ClusterElement			*m_parent;    //!< The parent of this cluster.
+	ClusterElement			*m_pPrev;     //!< The postorder predecessor of this cluster.
+	ClusterElement			*m_pNext;     //!< The postorder successor of this cluster.
+	ListIterator<ClusterElement*> m_it;   //!< The position of this cluster within children list of its parent.
+
+	List<adjEntry>			m_adjEntries;	//!< The adjacency list.
+											// Don't use a GraphList !
+											// This messes with the adjacency
+											// list of the underlying graph
+
+	#ifdef OGDF_DEBUG
+	// we store the graph containing this cluster for debugging purposes
+	const ClusterGraph *m_pClusterGraph;
+	#endif
+
+
+	void init(List<node> &nodes) {
+		while (!nodes.empty())
+			m_entries.pushBack(nodes.popFrontRet());
+	}
+
+	List<ClusterElement*> &getChildren(){
+		return m_children;
+	}
+
+	List<node> &getNodes(){
+		return m_entries;
+	}
+
+	//! Traverses the inclusion tree and adds nodes to \a clusterNodes.
+	/**
+	 * Invoked by public function getClusterNodes(List<node> &clusterNodes).
+	 */
+	void getClusterInducedNodes(List<node> &clusterNodes);
+	void getClusterInducedNodes(NodeArray<bool> &clusterNode, int& num);
+
+
+public:
+
+	//! Creates a new cluster element.
+	#ifdef OGDF_DEBUG
+	ClusterElement(const ClusterGraph *pClusterGraph,int id):
+		m_id(id),m_depth(0),m_parent(0),m_pPrev(0),m_pNext(0),m_it(0),
+		m_pClusterGraph(pClusterGraph) { }
+	#else
+	ClusterElement(int id):
+		m_id(id), m_depth(0),m_parent(0),m_pPrev(0),m_pNext(0),m_it(0) { }
+	#endif
+
+
+	#ifdef OGDF_DEBUG
+	const ClusterGraph *graphOf() const { return m_pClusterGraph; }
+	#endif
+
+
+	//! Returns the (unique) index of the cluster.
+	int index() const { return m_id; }
+	//! Returns the depth of the cluster in the cluster tree.
+	int depth() const { return m_depth; }
+	int& depth()	  { return m_depth; }
+	//! Returns the successor of the cluster in the list of all clusters.
+	ClusterElement* succ() const { return (ClusterElement*)m_next; }
+	//! Returns the predecessor of the cluster in the list of all clusters.
+	ClusterElement* pred() const { return (ClusterElement*)m_prev; }
+
+	//! Returns the postorder successor of the cluster in the list of all clusters.
+	ClusterElement* pSucc() const { return m_pNext; }
+	//! Returns the postorder predecessor of the cluster in the list of all clusters.
+	ClusterElement* pPred() const { return m_pPrev; }
+
+	// Iteration over tree structures.
+
+	//! Returns the first element in the list of child clusters.
+	ListConstIterator<ClusterElement*> cBegin() const{ return m_children.begin();}
+	//! Returns the last element in the list of child clusters.
+	ListConstIterator<ClusterElement*> crBegin() const{ return m_children.rbegin();}
+	//! Returns the number of child clusters.
+	int cCount(){ return m_children.size();}
+	//! Returns the first element in list of child nodes.
+	ListIterator<node> nBegin(){ return m_entries.begin();}
+	//! Returns the first element in list of child nodes.
+	ListConstIterator<node> nBegin() const{ return m_entries.begin();}
+	//! Returns the number of child nodes.
+	int nCount(){ return m_entries.size();}
+
+	//! Returns the parent of the cluster.
+	ClusterElement* parent(){return m_parent;}
+
+
+	//! Returns the first adjacency entry in the list of outgoing edges.
+	ListConstIterator<adjEntry> firstAdj() const { return m_adjEntries.begin();  }
+	//! Returns the first adjacency entry in the list of outgoing edges.
+	ListIterator<adjEntry> firstAdj() { return m_adjEntries.begin();  }
+	//! Returns the last adjacency entry in the list of outgoing edges.
+	ListConstIterator<adjEntry> lastAdj () const { return m_adjEntries.rbegin(); }
+	//! Returns the last adjacency entry in the list of outgoing edges.
+	ListIterator<adjEntry> lastAdj () { return m_adjEntries.rbegin(); }
+
+	//! Returns the list of nodes in the cluster, i.e., all nodes in the subtree rooted at this cluster.
+	/**
+	 * Recursively traverses the cluster tree starting at this cluster.
+	 */
+	void getClusterNodes(List<node> &clusterNodes);
+	//! Sets the entry for each node v to true if v is a member of
+	//! the subgraph induced by the ClusterElement.
+	//! All other entries remain unchanged!
+	//! Returns the number of entries set to true.
+	//! Precondition: clusterNode is a NodeArray initialized on the clustergraph
+	//! the ClusterElement belongs to.
+	int getClusterNodes(NodeArray<bool> &clusterNode);
+
+	OGDF_NEW_DELETE
+
+};// class ClusterElement
+
+
+
+
+typedef ClusterElement *cluster; //!< The type of clusters.
+
+
+#define forall_cluster_adj(adj,c)\
+for(ogdf::ListIterator<adjEntry> ogdf_loop_var=(c)->firstAdj();\
+	ogdf::test_forall_adj_entries_of_cluster(ogdf_loop_var,(adj));\
+	ogdf_loop_var=ogdf_loop_var.succ())
+
+#define forall_cluster_rev_adj(adj,c)\
+for(ogdf::ListIterator<adjEntry> ogdf_loop_var=(c)->lastAdj();\
+	ogdf::test_forall_adj_entries_of_cluster(ogdf_loop_var,(adj));\
+	ogdf_loop_var=ogdf_loop_var.pred())
+
+#define forall_cluster_adj_edges(e,c)\
+for(ogdf::ListIterator<adjEntry> ogdf_loop_var=(c)->firstAdj();\
+	ogdf::test_forall_adj_edges_of_cluster(ogdf_loop_var,(e));\
+	ogdf_loop_var=ogdf_loop_var.succ())
+
+
+
+inline bool test_forall_adj_entries_of_cluster(ListIterator<adjEntry> &it, adjEntry &adj)
+{
+	if (it.valid()) { adj = (*it);return true; }
+	else return false;
+}
+
+inline bool test_forall_adj_edges_of_cluster(ListIterator<adjEntry> &it, edge &e)
+{
+	adjEntry adj = (*it);
+	if (adj) { e = adj->theEdge(); return true; }
+	else return false;
+}
+
+inline bool test_forall_adj_edges_of_cluster(adjEntry &adj, edge &e)
+{
+	if (adj) { e = adj->theEdge(); return true; }
+	else return false;
+}
+
+
+class ClusterArrayBase;
+template<class T>class ClusterArray;
+
+//---------------------------------------------------------
+// iteration macros
+//---------------------------------------------------------
+
+//! Iteration over all clusters \a c of cluster graph \a C.
+#define forall_clusters(c,C) for((c)=(C).firstCluster(); (c); (c)=(c)->succ())
+//! Iteration over all clusters \a c of cluster graph \a C (in postorder).
+#define forall_postOrderClusters(c,C)\
+for((c)=(C).firstPostOrderCluster(); (c); (c)=(c)->pSucc())
+
+
+
+
+//! Representation of clustered graphs.
+/**
+ * This class is derived from GraphObserver and handles hierarchical
+ * clustering of the nodes in a graph, providing additional functionality.
+ */
+class OGDF_EXPORT ClusterGraph : public GraphObserver
+{
+	GraphList<ClusterElement> m_clusters; //!< The list of all clusters.
+
+	const Graph *m_pGraph;			  //!< The associated graph.
+
+	int		m_nClusters;			  //!< The number of clusters.
+	int		m_clusterIdCount;		  //!< The index assigned to the next created cluster.
+	int		m_clusterArrayTableSize;  //!< The current table size of cluster arrays.
+
+	mutable cluster m_postOrderStart; //!< The first cluster in postorder.
+	cluster	m_rootCluster;			  //!< The root cluster.
+
+	bool    m_adjAvailable;		  //! True if the adjacency list for each cluster is available.
+	bool    m_allowEmptyClusters; //! Defines if empty clusters are deleted immediately if generated by operations.
+
+	NodeArray<cluster> m_nodeMap; //!< Stores the cluster of each node.
+	//! Stories for every node its position within the children list of its cluster.
+	NodeArray<ListIterator<node> >  m_itMap;
+
+	mutable ListPure<ClusterArrayBase*> m_regClusterArrays; //!< The registered cluster arrays.
+	mutable ListPure<ClusterGraphObserver*> m_regObservers; //!< The registered graph observers.
+
+public:
+
+	//! Creates a cluster graph associated with no graph.
+	ClusterGraph();
+
+	//! Creates a cluster graph associated with graph \a G.
+	/**
+	 * All nodes in \a G are assigned to the root cluster.
+	 */
+	ClusterGraph(const Graph &G);
+
+	//! Copy constructor.
+	ClusterGraph(const ClusterGraph &C);
+
+	//! Constructs a clustered graph that is a copy of clustered graph C.
+	/**
+	 * The underlying graph \a G is made a copy of C.getGraph().
+	 */
+	ClusterGraph(const ClusterGraph &C,Graph &G);
+
+	//! Constructs a clustered graph that is a copy of clustered graph C.
+	/**
+	 * The underlying graph \a G is made a copy of C.getGraph(). Stores the
+	 * new copies of the original nodes and clusters in the arrays
+	 * \a originalNodeTable and \a originalClusterTable.
+	 */
+	ClusterGraph(
+		const ClusterGraph &C,
+		Graph &G,
+		ClusterArray<cluster> &originalClusterTable,
+		NodeArray<node> &originalNodeTable);
+
+	//! Constructs a clustered graph that is a copy of clustered graph C.
+	/**
+	 * The underlying graph \a G is made a copy of C.getGraph(). Stores the
+	 * new copies of the original nodes, edges, and clusters in the arrays
+	 * \a originalNodeTable, \a edgeCopy, and \a originalClusterTable.
+	 */
+	ClusterGraph(
+		const ClusterGraph &C,
+		Graph &G,
+		ClusterArray<cluster> &originalClusterTable,
+		NodeArray<node> &originalNodeTable,
+		EdgeArray<edge> &edgeCopy);
+
+	virtual ~ClusterGraph();
+
+	//! Returns the maximal used cluster index.
+	int maxClusterIndex() const { return m_clusterIdCount-1; }
+
+	//! Clears all cluster data.
+	void clear();
+
+	//! Clears all data but does not delete root cluster.
+	void semiClear();
+
+	//! Clears all cluster data and then reinitializes the instance with underlying graph \a G.
+	void init(const Graph &G);
+
+	//! Conversion to const Graph reference.
+	operator const Graph &() const { return *m_pGraph; }
+
+	//! Assignment operator.
+	ClusterGraph &operator=(const ClusterGraph &C);
+
+	//! Removes all clusters from the cluster subtree rooted at cluster C except for cluster C itself.
+	void clearClusterTree(cluster C);
+
+	//! Returns a reference to the underlying graph.
+	//TODO should be named getConstGraph
+	const Graph & getGraph() const {return *m_pGraph;}
+
+	//! Inserts a new cluster; makes it a child of the cluster \a parent.
+	cluster newCluster(cluster parent, int id = -1);
+
+	//! Creates an empty cluster with index \a clusterId and parent \a parent.
+	cluster createEmptyCluster(const cluster parent = 0, int clusterId = -1);
+
+	//! Creates a new cluster containing the nodes given by \a nodes; makes it a child of the cluster \a parent.
+	/**
+	 * The nodes are reassigned to the new cluster. If you turn off
+	 * \a m_allowEmptyclusters, an emptied cluster is deleted except if all
+	 * nodes are put into the same cluster.
+	 * @param nodes are the nodes that will be reassigned to the new cluster.
+	 * @param parent is the parent of the new cluster.
+	 * \return the created cluster.
+	 */
+	cluster createCluster(SList<node>& nodes, const cluster parent = 0);
+
+	//! Deletes cluster \a c.
+	/**
+	 * All subclusters become children of parent cluster of \a c.
+	 * \pre \a c is not the root cluster.
+	 */
+	void delCluster(cluster c);
+
+	//! Returns the root cluster.
+	cluster rootCluster() const { return m_rootCluster; }
+
+	//! Returns the cluster to which a node belongs.
+	inline cluster clusterOf(node v) const{
+		OGDF_ASSERT(v->graphOf() == m_pGraph)
+		return m_nodeMap[v];
+	}
+
+	//! Returns number of clusters.
+	int numberOfClusters() const { return m_nClusters; }
+	//! Returns upper bound for cluster indices.
+	int clusterIdCount() const { return m_clusterIdCount;}
+
+	//! Returns table size of cluster arrays associated with this graph.
+	int clusterArrayTableSize() const { return m_clusterArrayTableSize; }
+
+	//! Moves cluster \a c to a new parent \a newParent.
+	void moveCluster(cluster c, cluster newParent);
+
+
+	//! Reassigns node \a v to cluster \ c.
+	void reassignNode(node v, cluster c);
+
+	//! Clear cluster info structure, reinitializes with underlying graph \a G.
+	//inserted mainly for use in gmlparser.
+	void reInit(Graph& G)
+	{
+		reinitGraph(G);
+	}
+
+	//---------------------------
+	//tree queries / depth issues
+
+	//! Turns automatic update of node depth values on or off.
+	void setUpdateDepth(bool b) const
+	{
+		m_updateDepth = b;
+		//make sure that depth cant be used anymore
+		//(even if it may still be valid a little while)
+		if (!b) m_depthUpToDate = false;
+	}
+
+	//! Updates depth information in subtree after delCluster.
+	void pullUpSubTree(cluster c);
+
+	//! Computes depth of cluster tree, running time O(C).
+	//maybe later we should provide a permanent depth member update
+	int treeDepth() const
+	{
+		//initialize depth at first call
+		if (m_updateDepth && !m_depthUpToDate)
+			computeSubTreeDepth(rootCluster());
+		if (!m_updateDepth) OGDF_THROW(AlgorithmFailureException);
+		int l_depth = 1;
+		cluster c;
+		forall_clusters(c, *this)
+		{
+			if (c->depth() > l_depth) l_depth = c->depth();
+		}
+
+		return l_depth;
+	}
+	//! Computes depth of cluster tree hanging at \a c.
+	void computeSubTreeDepth(cluster c) const;
+	//! Returns depth of cluster c in cluster tree, starting with root depth 1.
+	//should be called instead of direct c->depth call to assure
+	//valid depth
+	int& clusterDepth(cluster c) const
+	{
+		// updateDepth must be set to true if depth info shall be used
+		OGDF_ASSERT(m_updateDepth);
+
+		//initialize depth at first call
+		if (!m_depthUpToDate)
+			computeSubTreeDepth(rootCluster());
+		OGDF_ASSERT(c->depth() != 0)
+		return c->depth();
+	}
+
+	//! Returns lowest common cluster of nodes in list \a nodes.
+	cluster commonCluster(SList<node>& nodes);
+
+	//! Returns the lowest common cluster of \a v and \a w in the cluster tree
+	/**
+	 * \pre \a v  and \a w are nodes in the graph.
+	 */
+	cluster commonCluster(node v, node w) const;
+
+	//! Returns the lowest common cluster lca and the highest ancestors on the path to lca.
+	cluster commonClusterLastAncestors(
+		node v,
+		node w,
+		cluster& c1,
+		cluster& c2) const;
+	//! Returns lca of \a v and \a w and stores corresponding path in \a eL.
+
+	cluster commonClusterPath(
+		node v,
+		node w,
+		List<cluster>& eL) const;
+
+	//! Returns lca of \a v and \a w, stores corresponding path in \a eL and ancestors in \a c1, \a c2.
+	cluster commonClusterAncestorsPath(
+		node v,
+		node w,
+		cluster& c1,
+		cluster& c2,
+		List<cluster>& eL) const;
+
+	//! Registers a cluster array.
+	ListIterator<ClusterArrayBase*> registerArray(ClusterArrayBase *pClusterArray) const;
+
+	//! Unregisters a cluster array.
+	void unregisterArray(ListIterator<ClusterArrayBase*> it) const;
+
+	//! Registers a ClusterGraphObserver.
+	ListIterator<ClusterGraphObserver*> registerObserver(ClusterGraphObserver *pObserver) const;
+
+	//! Unregisters a ClusterGraphObserver.
+	void unregisterObserver(ListIterator<ClusterGraphObserver*> it) const;
+
+	//! Returns the list of clusters that are empty or only contain empty clusters.
+	/**
+	 * The list is constructed in an order that allows deletion and reinsertion.
+	 * We never set rootcluster to be one of the empty clusters!!
+	 * if checkClusters is given, only list elements are checked
+	 * to allow efficient checking in the case
+	 * that you know which clusters were recently changed (e.g. node reass.)
+	 */
+	void emptyClusters(SList<cluster>& emptyCluster, SList<cluster>* checkCluster = 0);
+
+	//! Returns true if cluster \a c has only one node and no children.
+	inline bool emptyOnNodeDelete(cluster c) //virtual?
+	{
+		//if (!c) return false; //Allows easy use in loops
+		return (c->nCount() == 1) && (c->cCount() == 0);
+	}
+
+	//! Returns true if cluster \a c has only one child and no nodes.
+	inline bool emptyOnClusterDelete(cluster c) //virtual?
+	{
+		//if (!c) return false; //Allows easy use in loops
+		return (c->nCount() == 0) && (c->cCount() == 1);
+	}
+
+	//! Returns the first cluster in the list of all clusters.
+	cluster firstCluster() const { return m_clusters.begin (); }
+	//! Returns the last cluster in the list of all cluster.
+	cluster lastCluster () const { return m_clusters.rbegin(); }
+	//! Returns the first cluster in the list of post ordered clusters.
+	cluster firstPostOrderCluster() const {
+		if (!m_postOrderStart) postOrder();
+		return m_postOrderStart;
+	}
+
+	//! Returns the list of all clusters in \a clusters.
+	template<class CLUSTERLIST>
+	void allClusters(CLUSTERLIST &clusters) const {
+		clusters.clear();
+		for (cluster c = m_clusters.begin(); c; c = c->succ())
+			clusters.pushBack(c);
+	}
+
+	//! Collapses all nodes in the list \a nodes to the first node; multi-edges are removed.
+	template<class NODELIST>
+	void collaps(NODELIST &nodes,Graph &G){
+		OGDF_ASSERT(&G == m_pGraph);
+		m_adjAvailable = false;
+
+		m_postOrderStart = 0;
+		node v = nodes.popFrontRet();
+		while (!nodes.empty())
+		{
+			node w = nodes.popFrontRet();
+			adjEntry adj = w->firstAdj();
+			while (adj !=0)
+			{
+				adjEntry succ = adj->succ();
+				edge e = adj->theEdge();
+				if (e->source() == v || e->target() == v)
+					G.delEdge(e);
+				else if (e->source() == w)
+					G.moveSource(e,v);
+				else
+					G.moveTarget(e,v);
+				adj = succ;
+			}
+			//because nodes can already be unassigned (they are always
+			//unassigned if deleted), we have to check this
+			/*
+			if (m_nodeMap[w])
+			{
+				cluster c = m_nodeMap[w];
+				c->m_entries.del(m_itMap[w]);
+			}
+			*/
+			//removeNodeAssignment(w);
+			G.delNode(w);
+		}
+	}
+
+	//! Returns the list of all edges adjacent to cluster \a c in \a edges.
+	template<class EDGELIST>
+	void adjEdges(cluster c, EDGELIST &edges) const {
+		edges.clear();
+		edge e;
+		if (m_adjAvailable)
+		{
+			forall_cluster_adj_edges(e,c)
+				edges.pushBack(e);
+		}
+	}
+
+	//! Returns the list of all adjacency entries adjacent to cluster \a c in \a entries.
+	template<class ADJLIST>
+	void adjEntries(cluster c, ADJLIST &entries) const {
+		entries.clear();
+		adjEntry adj;
+		if (m_adjAvailable)
+		{
+			forall_cluster_adj(adj,c)
+				entries.pushBack(adj);
+		}
+	}
+
+	//! Computes the adjacency entry list for cluster \a c.
+	template<class LISTITERATOR>
+	void makeAdjEntries(cluster c,LISTITERATOR start){
+		adjEntry adj;
+		c->m_adjEntries.clear();
+		LISTITERATOR its;
+		for (its = start; its.valid(); its++)
+		{
+			adj = (*its);
+			c->m_adjEntries.pushBack(adj);
+		}
+	}
+
+	//**************************
+	//file output
+
+	//! Writes the cluster graph in GML format to file \a fileName.
+	void writeGML(const char *fileName);
+
+	//! Writes the cluster graph in GML format to output stream \a os.
+	void writeGML(ostream &os);
+
+
+	//**************************
+	//file input
+	//! reading graph, attributes, cluster structure from file
+	bool readClusterGML(const char* fileName, Graph& G);
+	//! reading graph, attributes, cluster structure from stream
+	bool readClusterGML(istream& is, Graph& G);
+
+	// read Cluster Graph from OGML file
+	//bool readClusterGraphOGML(const char* fileName, ClusterGraph& CG, Graph& G);
+
+	//! Checks the consistency of the data structure.
+	// (for debugging purposes only)
+	bool consistencyCheck();
+
+	//! Checks the combinatorial cluster planar embedding.
+	// (for debugging purposes only)
+	bool representsCombEmbedding();
+
+	//! Sets the availability status of the adjacency entries.
+	void adjAvailable(bool val){ m_adjAvailable = val; }
+
+protected:
+	//! Creates new cluster containing nodes in parameter list
+	//! with index \a clusterid.
+	cluster doCreateCluster(SList<node>& nodes,
+		const cluster parent, int clusterId = -1);
+	//! Creates new cluster containing nodes in parameter list and
+	//! stores resulting empty clusters in list, cluster has index \a clusterid.
+	cluster doCreateCluster(SList<node>& nodes,
+		SList<cluster>& emptyCluster,
+		const cluster parent, int clusterId = -1);
+
+	mutable ClusterArray<int>* m_lcaSearch; //!< Used to save last search run number for commoncluster.
+	mutable int m_lcaNumber;//!< Used to save last search run number for commoncluster.
+	mutable ClusterArray<cluster>* m_vAncestor;//!< Used to save last search run number for commoncluster.
+	mutable ClusterArray<cluster>* m_wAncestor;//!< Used to save last search run number for commoncluster.
+
+	//! Copies lowest common ancestor info to copy of clustered graph.
+	void copyLCA(const ClusterGraph &C, ClusterArray<cluster>* clusterCopy=0);
+	//int m_treeDepth; //should be implemented and updated in operations?
+
+	mutable bool m_updateDepth; //!< Depth of clusters is always updated if set to true.
+	mutable bool m_depthUpToDate; //!< Status of cluster depth information.
+
+	//! Adjusts the post order structure for moved clusters.
+	//we assume that c is inserted via pushback in newparent->children
+	void updatePostOrder(cluster c, cluster oldParent, cluster newParent);
+
+	//! Computes new predecessor for SUBTREE at moved cluster c.
+	//0 if c==root
+	cluster postOrderPredecessor(cluster c) const;
+	//! Leftmost cluster in subtree rooted at c, gets predecessor of subtree.
+	cluster leftMostCluster(cluster c) const;
+
+	//---------------------------------------
+	//functions inherited from GraphObserver:
+	//define how to cope with graph changes
+
+	//! Implementation of inherited method: Updates data if node deleted.
+	virtual void nodeDeleted(node v)
+	{
+		bool cRemove = false;
+		cluster c = clusterOf(v);
+		if (!c) return;
+		//never allow totally empty cluster
+		//if ((emptyOnNodeDelete(c)) &&
+		//	(c != rootCluster()) ) cRemove = true;
+		unassignNode(v);
+		if (cRemove && !m_allowEmptyClusters) //parent exists
+		{
+			cluster nonEmpty = c->parent();
+			cluster cRun = nonEmpty;
+			delCluster(c);
+			while ((cRun != rootCluster()) && (cRun->nCount() + cRun->cCount() == 0))
+			{
+				nonEmpty = cRun->parent();
+				delCluster(cRun);
+				cRun = nonEmpty;
+			}
+
+		}
+	}
+	//! Implementation of inherited method: Updates data if node added.
+	virtual void nodeAdded(node v)
+	{
+		assignNode(v, rootCluster());
+	}
+	//! Implementation of inherited method: Updates data if edge deleted.
+	virtual void edgeDeleted(edge /* e */) { }
+	//! Implementation of inherited method: Updates data if edge added.
+	virtual void edgeAdded(edge /* e */)   { }
+	//! Currently does nothing.
+	virtual void reInit()            { }
+	//! Clears cluster data without deleting root when underlying graphs' clear method is called.
+	virtual void cleared()
+	{
+		//we don't want a complete clear, as the graph still exists
+		//and can be updated from input stream
+		semiClear();
+	}//Graph cleared
+
+private:
+	//! Assigns node \a v to cluster \a c (\a v not yet assigned!).
+	void assignNode(node v, cluster C);
+
+	//! Unassigns node \a v from its cluster.
+	void unassignNode(node v);
+
+	//! Remove the assignment entries for nodes.
+	//! Checks if node is currently not assigned.
+	void removeNodeAssignment(node v)
+	{
+		if (m_nodeMap[v]) //iff == 0, itmap == 0 !!?
+		{
+			cluster C2 = m_nodeMap[v];
+			C2->m_entries.del(m_itMap[v]);
+			m_nodeMap[v] = 0;
+			m_itMap[v] = 0;
+		}
+	}
+
+	//! Performs a copy of the cluster structure of C,
+	//! the underlying graph stays the same.
+	void shallowCopy(const ClusterGraph &C);
+
+	//! Perform a deep copy on C, C's underlying
+	//! graph is copied into G.
+	void deepCopy(const ClusterGraph &C,Graph &G);
+
+	//! Perform a deep copy on C, C's underlying
+	//! graph is copied into G. Stores associated nodes in \a originalNodeTable.
+
+	void deepCopy(
+		const ClusterGraph &C,Graph &G,
+		ClusterArray<cluster> &originalClusterTable,
+		NodeArray<node> &originalNodeTable);
+
+	//! Perform a deep copy on C, C's underlying
+	//! graph is copied into G.  Stores associated nodes in \a originalNodeTable
+	//! and edges in \a edgeCopy.
+	void deepCopy(
+		const ClusterGraph &C,Graph &G,
+		ClusterArray<cluster> &originalClusterTable,
+		NodeArray<node> &originalNodeTable,
+		EdgeArray<edge> &edgeCopy);
+
+
+	void clearClusterTree(cluster c,List<node> &attached);
+
+	void initGraph(const Graph &G);
+
+	//! Reinitializes instance with graph \a G.
+	void reinitGraph(const Graph &G);
+
+	//! Creates new cluster with given id, precondition: id not used
+	cluster newCluster(int id);
+	//! Creates new cluster.
+	cluster newCluster();
+
+	//! Create postorder information in cluster tree.
+	void postOrder() const;
+	//! Check postorder information in cluster tree.
+//	void checkPostOrder() const;
+
+	void postOrder(cluster c,SListPure<cluster> &S) const;
+
+	void reinitArrays();
+
+
+	//! Recursively write the cluster structure in GML.
+	void writeCluster(
+		ostream &os,
+		NodeArray<int> &nId,
+		ClusterArray<int> & cId,
+		int &nextId,
+		cluster c,
+		String ttt);
+
+	//! Recursively write the cluster structure in GraphWin GML.
+	void writeGraphWinCluster(
+		ostream &os,
+		NodeArray<int> &nId,
+		NodeArray<String> &nStr,
+		ClusterArray<int> &cId,
+		ClusterArray<String> &cStr,
+		int &nextId,
+		cluster c,
+		String ttt);
+
+};
+
+
+
+
+
+ostream &operator<<(ostream &os, ogdf::cluster c);
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/cluster/ClusterGraphAttributes.cpp b/ogdf/cluster/ClusterGraphAttributes.cpp
new file mode 100644
index 0000000..c041fe4
--- /dev/null
+++ b/ogdf/cluster/ClusterGraphAttributes.cpp
@@ -0,0 +1,740 @@
+/*
+ * $Revision: 2616 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-16 15:34:43 +0200 (Mo, 16. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implement class ClusterGraphAttributes
+ *
+ * \author Karsten Klein
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "ClusterGraphAttributes.h"
+#include "ClusterArray.h"
+#include "../fileformats/GmlParser.h"
+#include "../fileformats/OgmlParser.h"
+#include <sstream>
+
+
+namespace ogdf {
+
+
+ClusterGraphAttributes::ClusterGraphAttributes(
+	ClusterGraph& cg,
+	long initAttributes)
+: GraphAttributes(cg.getGraph(), initAttributes | edgeType | nodeType |
+		nodeGraphics | edgeGraphics), m_clusterTemplate(cg), m_pClusterGraph(&cg)
+//we should initialize m__clusterinfo here
+{
+	//should we always fill the cluster infos here?
+}//constructor
+
+
+//reinitialize graph
+void ClusterGraphAttributes::init(ClusterGraph &cg, long initAttributes)
+{
+	m_pClusterGraph = &cg;
+	m_clusterInfo.clear();
+
+	//need to initialize GraphAttributes with getGraph()
+	//we only use parameter initAttributes here in constrast
+	//to the initialization in the constructor
+	GraphAttributes::init(cg.getGraph(), initAttributes );
+}
+
+
+//
+// calculates the bounding box of the graph including clusters
+const DRect ClusterGraphAttributes::boundingBox() const
+{
+	DRect bb = GraphAttributes::boundingBox();
+	double minx = bb.p1().m_x;
+	double miny = bb.p1().m_y;
+	double maxx = bb.p2().m_x;
+	double maxy = bb.p2().m_y;
+
+	cluster c;
+	forall_clusters(c,*m_pClusterGraph)
+	{
+		if(c == m_pClusterGraph->rootCluster())
+			continue;
+
+		double x1 = clusterXPos(c);
+		double y1 = clusterYPos(c);
+		double x2 = x1 + clusterWidth(c);
+		double y2 = y1 + clusterHeight(c);
+
+		if (x1 < minx) minx = x1;
+		if (x2 > maxx) maxx = x2;
+		if (y1 < miny) miny = y1;
+		if (y2 > maxy) maxy = y2;
+	}
+
+	return DRect(minx, miny, maxx, maxy);
+}
+
+
+void ClusterGraphAttributes::updateClusterPositions(double boundaryDist)
+{
+	cluster c;
+	//run through children and nodes and update size accordingly
+	//we use width, height temporarily to store max values
+	forall_postOrderClusters(c,*m_pClusterGraph)
+	{
+		ListIterator<node> nit = c->nBegin();
+		ListConstIterator<ClusterElement*> cit = c->cBegin();
+		//Initialize with first element
+		if (nit.valid())
+		{
+			clusterXPos(c->index()) = m_x[*nit] - m_width[*nit]/2;
+			clusterYPos(c->index()) = m_y[*nit] - m_height[*nit]/2;
+			clusterWidth(c->index()) = m_x[*nit] + m_width[*nit]/2;
+			clusterHeight(c->index()) = m_y[*nit] + m_height[*nit]/2;
+			nit++;
+		}
+		else
+		{
+			if (cit.valid())
+			{
+				clusterXPos(c->index()) = clusterXPos(*cit);
+				clusterYPos(c->index()) = clusterYPos(*cit);
+				clusterWidth(c->index()) = clusterXPos(*cit) + clusterWidth(*cit);
+				clusterHeight(c->index()) = clusterYPos(*cit) + clusterHeight(*cit);
+				cit++;
+			}
+			else
+			{
+				clusterXPos(c->index()) = 0.0;
+				clusterYPos(c->index()) = 0.0;
+				clusterWidth(c->index()) = 1.0;
+				clusterHeight(c->index()) = 1.0;
+			}
+		}
+		//run through elements and update
+		while (nit.valid())
+		{
+			if (clusterXPos(c->index()) > m_x[*nit] - m_width[*nit]/2)
+				clusterXPos(c->index()) = m_x[*nit] - m_width[*nit]/2;
+			if (clusterYPos(c->index()) > m_y[*nit] - m_height[*nit]/2)
+				clusterYPos(c->index()) = m_y[*nit] - m_height[*nit]/2;
+			if (clusterWidth(c->index()) < m_x[*nit] + m_width[*nit]/2)
+				clusterWidth(c->index()) = m_x[*nit] + m_width[*nit]/2;
+			if (clusterHeight(c->index()) < m_y[*nit] + m_height[*nit]/2)
+				clusterHeight(c->index()) = m_y[*nit] + m_height[*nit]/2;
+			nit++;
+		}
+		while (cit.valid())
+		{
+			if (clusterXPos(c->index()) > clusterXPos((*cit)->index()))
+				clusterXPos(c->index()) = clusterXPos((*cit)->index());
+			if (clusterYPos(c->index()) > clusterYPos((*cit)->index()))
+				clusterYPos(c->index()) = clusterYPos((*cit)->index());
+			if (clusterWidth(c->index()) < clusterXPos((*cit)->index()) + clusterWidth((*cit)->index()))
+				clusterWidth(c->index()) = clusterXPos((*cit)->index()) + clusterWidth((*cit)->index());
+			if (clusterHeight(c->index()) < clusterYPos((*cit)->index()) + clusterHeight((*cit)->index()))
+				clusterHeight(c->index()) = clusterYPos((*cit)->index()) + clusterHeight((*cit)->index());
+			cit++;
+		}
+		clusterXPos(c->index()) -= boundaryDist;
+		clusterYPos(c->index()) -= boundaryDist;
+		clusterWidth(c->index()) = clusterWidth(c->index()) - clusterXPos(c->index()) + boundaryDist;
+		clusterHeight(c->index()) = clusterHeight(c->index()) - clusterYPos(c->index()) + boundaryDist;
+	}
+}
+
+
+void ClusterGraphAttributes::writeGML(const char *fileName)
+{
+	ofstream os(fileName);
+	writeGML(os);
+}
+
+
+void ClusterGraphAttributes::writeGML(ostream &os)
+{
+	NodeArray<int>    nId(*m_pGraph);
+
+	int nextId = 0;
+
+	os.setf(ios::showpoint);
+
+	GraphAttributes::writeGML(os);
+
+	// set index string for cluster entries
+	node v;
+	forall_nodes(v,*m_pGraph)
+	{
+		nId[v] = nextId++;
+	}
+
+	// output the cluster information
+	String indent = "\0";
+	nextId = 1;
+	writeGraphWinCluster(os, nId, nextId,
+		m_pClusterGraph->rootCluster(), indent);
+}
+
+
+// recursively write the cluster structure in GML
+void ClusterGraphAttributes::writeCluster(
+	ostream &os,
+	NodeArray<int> &nId,
+	ClusterArray<int> & cId,
+	int &nextId,
+	cluster c,
+	String indent)
+{
+	String newindent = indent;
+	newindent += "  ";
+	os << indent << "cluster [\n";
+	os << indent << "  id " << (cId[c] = nextId++) << "\n";
+	ListConstIterator<cluster> it;
+	for (it = c->cBegin(); it.valid(); it++)
+		writeCluster(os,nId,cId,nextId,*it,newindent);
+	ListConstIterator<node> itn;
+	for (itn = c->nBegin(); itn.valid(); itn++)
+		os << indent << "  node " << nId[*itn] << "\n";
+	os << indent << "]\n"; // cluster
+}
+
+
+// recursively write the cluster structure in GraphWin GML
+void ClusterGraphAttributes::writeGraphWinCluster(
+	ostream        &os,
+	NodeArray<int> &nId,
+	int            &nextId,
+	cluster        c,
+	String         indent
+	)
+{
+	String newindent = indent;
+	newindent += "  ";
+
+	if (c == m_pClusterGraph->rootCluster())
+		os << indent << "rootcluster [\n";
+	else
+	{
+		os << indent << "cluster [\n";
+		os << indent << "  id " << c->index() << "\n";
+
+		const String &templStr = m_clusterTemplate[c];
+		if(templStr.length() > 0) {
+			// GDE extension: Write cluster template and custom attribute
+			os << "  template ";
+			writeLongString(os, templStr);
+			os << "\n";
+
+			os << "  label ";
+			writeLongString(os, clusterLabel(c));
+			os << "\n";
+
+		} else {
+			os << indent << "  label \"" << clusterLabel(c) << "\"\n";
+		}
+
+		os << indent << "  graphics [\n";
+
+		double shiftPos;
+		shiftPos = clusterYPos(c->index());
+
+		os << indent << "    x " << clusterXPos(c->index()) << "\n";
+		os << indent << "    y " << shiftPos/*clusterYPos(c->index())*/ << "\n";
+
+		os << indent << "    width " << clusterWidth(c->index()) << "\n";
+		os << indent << "    height " << clusterHeight(c->index()) << "\n";
+		os << indent << "    fill \""  << clusterFillColor(c->index()) << "\"\n";
+		os << indent << "    pattern "  << clusterFillPattern(c->index()) << "\n";
+
+		//border line styles
+		os << indent << "    color \"" << clusterColor(c) << "\"\n";
+		os << indent << "    lineWidth " << clusterLineWidth(c) << "\n";
+		//save space by defaulting
+		if (clusterLineStyle(c) != esSolid)
+			os << indent << "    stipple " << clusterLineStyle(c) << "\n";
+
+		os << indent << "    style \"rectangle\"\n";
+
+		os << indent << "  ]\n"; //graphics
+	}
+
+	// write contained clusters
+	ListConstIterator<cluster> it;
+	for (it = c->cBegin(); it.valid(); it++)
+		writeGraphWinCluster(os, nId, nextId, *it, newindent);
+
+	// write contained nodes
+	ListConstIterator<node> itn;
+	for (itn = c->nBegin(); itn.valid(); itn++)
+		os << indent << "vertex \"" << nId[*itn] << "\"\n";
+
+	os << indent << "]\n"; // cluster
+}
+
+
+const char NEWLINE('\n');		// newline character
+const char INDENTCHAR(' ');		// indent character
+const int  INDENTSIZE(2); 		// indent size
+
+
+class omani
+{
+	int m_n;
+	ostream& (*m_f)(ostream&, int);
+
+public:
+	omani(ostream& (*f)(ostream&, int), int n) : m_n(n), m_f(f) { }
+
+	friend ostream& operator<<(ostream& os, omani man) {
+		return man.m_f(os, man.m_n);
+	}
+};
+
+ostream& padN(ostream& os, int depth)
+{
+	int n = INDENTSIZE * depth;
+	for( ; n > 0; --n)
+		os.put(INDENTCHAR);
+
+	return os;
+}
+
+omani ind(int depth)
+{
+	return omani(&padN, depth);
+}
+
+
+ostream &ind(ostream &os, int depth)
+{
+	int n = INDENTSIZE * depth;
+	for( ; n > 0; --n)
+		os.put(INDENTCHAR);
+
+	return os;
+}
+
+void ClusterGraphAttributes::writeOGML(const char *fileName)//, GraphConstraints &GC)
+{
+	ofstream os(fileName);
+	writeOGML(os);//, GC);
+}
+
+
+void ClusterGraphAttributes::writeOGML(ostream & os) //, GraphConstraints & GC)
+{
+	int labelId = 0;						// new ID of current label
+	int pointId = 0;						// new ID of current point
+
+	int indentDepth = 0; 					// main indent depth
+	int indentDepthS = 4; 					// indent depth for styles block
+	std::ostringstream osS; 				// string output stream for buffering the styles of the handled elements
+	std::ostringstream osC; 				// string output stream for buffering constraints
+
+	// CONFIGURING OUTPUT STREAMS
+	os.setf(ios::showpoint);
+	os.precision(10);
+	osS.setf(ios::showpoint);
+	osS.precision(10);
+	osC.setf(ios::showpoint);
+	osC.precision(10);
+
+	// XML DECLARATION AND OGML TAG
+	os << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" << NEWLINE; // Latin-1
+	// Simple version
+	os << "<ogml>" << NEWLINE;
+	// Strict version
+	// os << "<ogml xmlns=\"http://www.ogdf.org\"";
+	// os << " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
+	// os << " xsi:schemaLocation=\"http://www.ogdf.org http://www.ogdf.org/ogml.xsd\">" << NEWLINE;
+
+	// WRITING GRAPH BLOCK
+	os << ind(++indentDepth) << "<graph>" << NEWLINE;
+
+	// WRITING STRUCTURE BLOCK
+	os << ind(++indentDepth) << "<structure>" << NEWLINE;
+
+	// recursive handling of clusters
+	writeClusterOGML(os, osS, labelId, m_pClusterGraph->rootCluster(), ++indentDepth, indentDepthS);
+
+	// handling of edges
+	edge e;
+	forall_edges(e, *m_pGraph)
+	{
+		// EDGE STRUCTURE
+		os << ind(indentDepth) << "<edge id=\"e" << e->index() << "\">" << NEWLINE;
+		++indentDepth;
+
+		// handling of label (if exists)
+		if (attributes() & edgeLabel) {
+			os << ind(indentDepth)   << "<label id=\"l" << labelId++ << "\">" << NEWLINE;
+			os << ind(indentDepth+1) << "<content>" << formatLabel(labelEdge(e)) << "</content>" << NEWLINE;
+			os << ind(indentDepth)   << "</label>" << NEWLINE;
+		}
+
+		os << ind(indentDepth) << "<source idRef=\"n" << e->source()->index() << "\"/>" << NEWLINE;
+		os << ind(indentDepth) << "<target idRef=\"n" << e->target()->index() << "\"/>" << NEWLINE;
+
+		/*
+		* TODO find solution for handling the edge types (app specific data?)
+		*
+		* os << "GENERALIZATION=\"" << (m_eType[e]==Graph::generalization?1:0) << "\">" << delimiter;
+		*/
+
+		os << ind(--indentDepth) << "</edge>" << NEWLINE; // edge
+
+		// EDGE LAYOUT
+		if (attributes() & edgeGraphics || attributes() & edgeColor || attributes() & edgeStyle)
+		{
+			osS << ind(indentDepthS) << "<edgeStyle idRef=\"e" << e->index() << "\">" << NEWLINE;
+
+			// handling of style information
+			if(attributes() & edgeStyle || attributes() & edgeColor)
+			{
+				osS << ind(indentDepthS+1) << "<line ";
+				if (attributes() & edgeStyle) {
+					osS << "type=\"" << edgeStyleToOGML(styleEdge(e)) << "\" width=\"" << m_edgeWidth[e] << "\" ";
+				}
+				if (attributes() & edgeColor) {
+					osS << "color=\"" << colorEdge(e) << "\" />" << NEWLINE;
+				} else 	{
+					osS << "/>" << NEWLINE;
+				}
+			}
+
+			// TODO review the handling of edge arrows
+			if(attributes() & edgeArrow)
+			{
+				++indentDepthS;
+				switch(arrowEdge(e)) {
+				case GraphAttributes::none:
+					osS << ind(indentDepthS) << "<sourceStyle type=\"none\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					osS << ind(indentDepthS) << "<targetStyle type=\"none\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					break;
+				case GraphAttributes::last:
+					osS << ind(indentDepthS) << "<sourceStyle type=\"none\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					osS << ind(indentDepthS) << "<targetStyle type=\"arrow\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					break;
+				case GraphAttributes::first:
+					osS << ind(indentDepthS) << "<sourceStyle type=\"arrow\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					osS << ind(indentDepthS) << "<targetStyle type=\"none\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					break;
+				case GraphAttributes::both:
+					osS << ind(indentDepthS) << "<sourceStyle type=\"arrow\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					osS << ind(indentDepthS) << "<targetStyle type=\"arrow\" color=\"#000000\" size=\"1\" />" << NEWLINE;
+					break;
+				case GraphAttributes::undefined:
+					// do nothing
+					break;
+				default:
+					// do nothing
+					break;
+				}
+				--indentDepthS;
+			}
+
+			// handling of points
+			const DPolyline &dpl = m_bends[e];
+			if (!dpl.empty()) {
+				++indentDepthS;
+				// handle source
+				node v = e->source();
+				if(dpl.front().m_x < m_x[v] - m_width[v]/2 ||
+					dpl.front().m_x > m_x[v] + m_width[v]/2 ||
+					dpl.front().m_y < m_y[v] - m_height[v]/2 ||
+					dpl.front().m_y > m_y[v] + m_height[v]/2)	{
+						osS << ind(indentDepthS) << "<point id=\"p" << pointId++ << "\" x=\"" << m_x[e->source()] << "\" y=\"" << m_y[e->source()] << "\"/>" << NEWLINE;
+				}
+				// handle points
+				ListConstIterator<DPoint> it;
+				for(it = dpl.begin(); it.valid(); ++it) {
+					osS << ind(indentDepthS) << "<point id=\"p" << pointId++ << "\" x=\"" << (*it).m_x << "\" y=\"" << (*it).m_y << "\"/>" << NEWLINE;
+				}
+				// handle target
+				v = e->target();
+				if(dpl.back().m_x < m_x[v] - m_width[v]/2 ||
+					dpl.back().m_x > m_x[v] + m_width[v]/2 ||
+					dpl.back().m_y < m_y[v] - m_height[v]/2 ||
+					dpl.back().m_y > m_y[v] + m_height[v]/2) {
+						osS << ind(indentDepthS) << "<point id=\"p" << pointId++ << "\" x=\"" << m_x[e->target()] << "\" y=\"" << m_y[e->target()] << "\"/>" << NEWLINE;
+				}
+				--indentDepthS;
+			}
+
+			osS << ind(indentDepthS) << "</edgeStyle>" << NEWLINE;
+		}
+	}
+
+	--indentDepth;
+	os << ind(indentDepth) << "</structure>" << NEWLINE;
+
+	// WRITING LAYOUT BLOCK
+	os << ind(indentDepth) << "<layout>" << NEWLINE;
+
+	// WRITING STYLES
+	++indentDepth;
+	os << ind(indentDepth) << "<styles>" << NEWLINE;
+	os << osS.str();
+	os << ind(indentDepth) << "</styles>" << NEWLINE;
+
+	// 2.2.2) WRITING CONSTRAINTS
+	// No constraint handling so far in OGDF
+	/*
+	List<Constraint *> * csList = GC.getConstraints();
+	ListConstIterator<Constraint *> it;
+	int constID = 0;
+	if (csList->size() > 0) {
+	os << indent << "<constraints>" << NEWLINE;
+	for (it = csList->begin(); it.valid(); ++it) {
+	(*it)->storeToOgml(constID++, os, indentDepth + indentDepthS + 1);
+	}
+	os << indent << "</constraints>" << NEWLINE;
+	cout << "Constraints written...\n" << flush;
+	}
+	*/
+
+	--indentDepth;
+	os << ind(indentDepth) << "</layout>" << NEWLINE;
+
+	--indentDepth;
+	os << ind(indentDepth) << "</graph>" << NEWLINE;
+
+	os << "</ogml>";
+}
+
+
+// recursively write the cluster structure in OGML
+void ClusterGraphAttributes::writeClusterOGML(
+	ostream & os,
+	std::ostringstream & osS,
+	int & nextLabelId,
+	cluster clust,
+	int & indentDepth,
+	int indentDepthS)
+{
+	// we handle all cluster except the root cluster
+	if (clust != m_pClusterGraph->rootCluster()) {
+		/* cluster structure infos */
+		os << ind(indentDepth) << "<node id=\"c" << clust->index() << "\">" << NEWLINE;
+
+		/*
+		* TODO What are cluster templates and how can/should they be handled?
+		*
+		const String &templStr = m_clusterTemplate[cluster];
+		if(templStr.length() > 0) {
+		// GDE extension: Write cluster template and custom attribute
+		os << "template ";
+		writeLongString(os, templStr);
+		os << "\n";
+		os << "label ";
+		writeLongString(os, clusterLabel(cluster));
+		os << "\n";
+		} else {
+		*/
+
+		++indentDepth;
+		os << ind(indentDepth)   << "<label id=\"l" << nextLabelId++ << "\">" << NEWLINE;
+		os << ind(indentDepth+1) << "<content>" << formatLabel(clusterLabel(clust)) << "</content>" << NEWLINE;
+		os << ind(indentDepth)   << "</label>" << NEWLINE;
+	}
+
+	// we handle the contained nodes first
+	ListConstIterator<node> itn;
+	for (itn = clust->nBegin(); itn.valid(); ++itn)
+	{
+		node v = *itn;
+
+		// node structure infos
+		os << ind(indentDepth) << "<node id=\"n" << v->index() << "\">" << NEWLINE;
+
+		// handling of label (if exists)
+		if (attributes() & nodeLabel) {
+			os << ind(indentDepth+1) << "<label id=\"l" << nextLabelId++ << "\">" << NEWLINE;
+			os << ind(indentDepth+2) << "<content>" << formatLabel(labelNode(v)) << "</content>" << NEWLINE;
+			os << ind(indentDepth+1) << "</label>" << NEWLINE;
+		}
+
+		os << ind(indentDepth) << "</node>" << NEWLINE;
+
+		// node layout infos
+		osS << ind(indentDepthS) << "<nodeStyle idRef=\"n" << v->index() << "\">" << NEWLINE;
+		++indentDepthS;
+		osS << ind(indentDepthS) << "<location x=\"" << x(v)-0.5*width(v) << "\" y=\""<< y(v)-0.5*height(v) << "\"/>" << NEWLINE;
+		osS << ind(indentDepthS) << "<shape type=\"";
+		switch (m_nodeShape[v]) {
+		case rectangle:
+			osS << "rect";
+			break;
+		case oval:
+			osS << "ellipse";
+			break;
+		}
+		osS << "\" width=\"" << m_width[v] << "\" height=\"" << m_height[v] << "\"/>" << NEWLINE;
+		if(attributes() & nodeColor || attributes() & nodeStyle) {
+			// fill-tag
+			osS << ind(indentDepthS) << "<fill";
+			// color-attribute of fill-tag
+			if (attributes() & nodeColor) {
+				if (m_nodeColor[v].length() > 0) {
+					osS << " color=\"" << m_nodeColor[v] << "\"";
+				}
+			}
+			if (attributes() & nodeStyle) {
+				// pattern- and patternColor-attribute of fill-tag (closing)
+				osS << " pattern=\"" << brushPatternToOGML(m_nodePattern[v]) << "\" patternColor=\"#000000\"/>" << NEWLINE;
+				// line-tag
+				osS << ind(indentDepthS) << "<line type=\"" << edgeStyleToOGML(m_nodeStyle[v]) <<  "\" width=\"" << m_nodeLineWidth[v] << "\" color=\"" << m_nodeLine[v] << "\"/>" << NEWLINE;
+			} else 	{
+				// closing fill-tag
+				osS << "/>" << NEWLINE;
+			}
+		}
+
+		--indentDepthS;
+		osS << ind(indentDepthS) << "</nodeStyle>" << NEWLINE;
+	}//for clusters
+
+	// now we recursively handle the contained clusters
+	ListConstIterator<cluster> it;
+	for (it = clust->cBegin(); it.valid(); ++it) {
+		writeClusterOGML(os, osS, nextLabelId, *it, indentDepth, indentDepthS);
+	}
+
+	// we handle all clusters except the root cluster
+	if (clust != m_pClusterGraph->rootCluster()) {
+		--indentDepth;
+		os << ind(indentDepth) << "</node>" << NEWLINE;
+
+		// cluster layout infos
+		osS << ind(indentDepthS) << "<nodeStyle idRef=\"c" << clust->index() << "\">" << NEWLINE;
+
+		++indentDepthS;
+		osS << ind(indentDepthS) << "<location x=\"" << clusterXPos(clust) << "\" y=\"" << clusterYPos(clust) << "\"/>" << NEWLINE;
+		osS << ind(indentDepthS) << "<shape type=\"rect\" width=\"" << clusterWidth(clust) << "\" height=\"" << clusterHeight(clust) << "\"/>" << NEWLINE;
+		if(clusterFillColor(clust).length() > 0) {
+			osS << ind(indentDepthS) << "<fill color=\"" << clusterFillColor(clust) << "\"";
+			osS << " pattern=\"" << brushPatternToOGML(clusterFillPattern(clust)) << "\" patternColor=\"#000000\"/>" << NEWLINE;
+		}
+		osS << ind(indentDepthS) << "<line type=\"" << edgeStyleToOGML(clusterLineStyle(clust)) << "\" width=\"" << clusterLineWidth(clust) << "\" color=\"" << clusterColor(clust) << "\"/>" << NEWLINE;
+		--indentDepthS;
+
+		osS << ind(indentDepthS) << "</nodeStyle>" << NEWLINE;
+	}
+}
+
+
+//++++++++++++++++++++++++++++++++++++++++++++
+//reading graph, attributes, cluster structure
+bool ClusterGraphAttributes::readClusterGML(
+	const char* fileName,
+	ClusterGraph& CG,
+	Graph& G)
+{
+
+	ifstream is(fileName);
+	if (!is)
+		return false; // couldn't open file
+
+	return readClusterGML(is, CG, G);
+}
+
+
+bool ClusterGraphAttributes::readClusterGML(
+	istream& is,
+	ClusterGraph& CG,
+	Graph& G)
+{
+
+	bool result;
+	GmlParser gml(is);
+	if (gml.error())
+		return false;
+
+	result = gml.read(G,*this);
+
+	if (!result) return false;
+
+	return readClusterGraphGML(CG, G, gml);
+}
+
+
+//read Cluster Graph with Attributes, base graph G, from fileName
+bool ClusterGraphAttributes::readClusterGraphGML(
+	const char* fileName,
+	ClusterGraph& CG,
+	Graph& G,
+	GmlParser& gml)
+{
+	ifstream is(fileName);
+	if (!is)
+		return false; // couldn't open file
+
+	return readClusterGraphGML(CG, G, gml);
+}
+
+
+//read from input stream
+bool ClusterGraphAttributes::readClusterGraphGML(
+	ClusterGraph& CG,
+	Graph& G,
+	GmlParser& gml)
+{
+	return gml.readAttributedCluster(G, CG, *this);
+}
+
+
+// read Cluster Graph from OGML file
+bool ClusterGraphAttributes::readClusterGraphOGML(
+	const char* fileName,
+	ClusterGraph& CG,
+	Graph& G)
+{
+	ifstream is(fileName);
+	if (!is)
+		return false;
+
+	OgmlParser op;
+	return op.read(fileName, G, CG, *this);
+};
+
+
+ostream &operator<<(ostream &os, ogdf::cluster c)
+{
+	if (c) os << c->index(); else os << "nil";
+	return os;
+}
+
+
+} // end namespace ogdf
+
diff --git a/ogdf/cluster/ClusterGraphAttributes.h b/ogdf/cluster/ClusterGraphAttributes.h
new file mode 100644
index 0000000..5cfc83e
--- /dev/null
+++ b/ogdf/cluster/ClusterGraphAttributes.h
@@ -0,0 +1,439 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declares ClusterGraphAttributes, an extension of class
+ * GraphAttributes,  to store clustergraph layout informations
+ * like cluster cage positions and sizes that can be accessed
+ * over the cluster/cluster ID
+ *
+ * \author Karsten Klein
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_CLUSTER_GRAPH_ATTRIBUTES_H
+#define OGDF_CLUSTER_GRAPH_ATTRIBUTES_H
+
+#include "../basic/HashArray.h"
+#include "ClusterArray.h"
+
+#include "ClusterGraph.h"
+#include "../basic/GraphAttributes.h"
+
+
+namespace ogdf {
+
+	class GmlParser;
+
+	/**
+	 * \brief Stores information associated with a cluster.
+	 *
+	 */
+	class OGDF_EXPORT ClusterInfo
+	{
+		public:
+			ClusterInfo()
+			{
+				//&m_fillPattern = GraphAttributes::bpNone; //NoBrush
+				m_lineStyle = GraphAttributes::esSolid;
+			}
+
+			double m_x, m_y; //position of lower left corner
+			double m_w, m_h; //width and height
+
+			double m_lineWidth; //width of rectangle border line
+
+			String m_color;  //color of rectangle
+			String m_fillColor;  //color of fill area
+			String m_backColor;  //background color
+			GraphAttributes::EdgeStyle m_lineStyle;  //rectangle line style
+			GraphAttributes::BrushPattern m_fillPattern; //brush pattern of fill area
+			String m_label;  //name label
+
+			int m_clusterID; //the ID of the cluster of which the info is stored
+	};
+
+
+	/**
+	 * \brief Stores additional attributes of a clustered graph (like layout information).
+	 *
+	 * Attributes are simply stored in node or edge arrays; for memory consumption
+ 	 * reasons, only a subset of these arrays is in fact initialized for the graph;
+ 	 * non-initialized arrays require only a few bytes of extra memory.
+ 	 *
+ 	 * Which arrays are initialized is specified by a bit vector; each bit in this
+ 	 * bit vector corresponds to one or more attributes. E.g., \a #nodeGraphics
+ 	 * corresponds to the attributes \a #m_x, \a #m_y, \a #m_width, and \a #m_height;
+ 	 * whereas \a #edgeDoubleWeight only corresponds to the attribute \a #m_doubleWeight.
+	 *
+	 */
+	class OGDF_EXPORT ClusterGraphAttributes : public GraphAttributes
+	{
+		private:
+			ClusterArray<String> m_clusterTemplate; //!< Name of cluster template.
+
+		public:
+			//! Initializes new instance of class ClusterGraphAttributes.
+			ClusterGraphAttributes() : GraphAttributes(), m_pClusterGraph(0) { }
+
+			//! Initializes new instance of class ClusterGraphAttributes.
+			//! Uses \a initAttributes, which are enriched by node and edge
+			//! graphics.
+			ClusterGraphAttributes(ClusterGraph& cg, long initAttributes = 0);
+
+			virtual ~ClusterGraphAttributes() { }
+
+			//! Initializes the instance with ClusterGraph \a cg.
+			//! Sets the attributes to \a initAttributes
+            using GraphAttributes::init;
+			virtual void init(ClusterGraph &cg, long initAttributes = 0);
+
+			//! Initializes the attributes according to \a initAttributes.
+			virtual void initAtt(long initAttributes = 0) {
+				GraphAttributes::initAttributes(initAttributes);
+			}
+
+//			operator const ClusterGraph& () const {return *m_pClusterGraph;}
+//			operator const Graph& () const {return m_pClusterGraph->getGraph();}
+
+			//! Returns the ClusterGraph.
+			const ClusterGraph& constClusterGraph() const { return *m_pClusterGraph; }
+
+			//! Returns the index of the parent cluster of node \a v.
+			int clusterID(node v) { return m_pClusterGraph->clusterOf(v)->index(); }
+
+			//! Returns the parent cluster of node \a v.
+			cluster clusterOf(node v) { return m_pClusterGraph->clusterOf(v); }
+
+			//! Returns the maximum cluster index used.
+			int maxClusterID() const { return m_pClusterGraph->clusterIdCount()-1; }
+
+			//! Updates positions of cluster boundaries wrt to children and child clusters
+			void updateClusterPositions(double boundaryDist = 1.0);
+
+			//*****************************************************************
+			//data access by ID
+
+			//! Returns x position of the cluster cages lower left corner.
+			double clusterXPos(int clusterID) const { return m_clusterInfo[clusterID].m_x; }
+
+			//! Returns x position of the cluster cages lower left corner.
+			double& clusterXPos(int clusterID) { return m_clusterInfo[clusterID].m_x; }
+
+			//! Returns y position of the cluster cages lower left corner.
+			double clusterYPos(int clusterID) const { return m_clusterInfo[clusterID].m_y; }
+
+			//! Returns y position of the cluster cages lower left corner.
+			double& clusterYPos(int clusterID) { return m_clusterInfo[clusterID].m_y; }
+
+			//! Returns cluster cage height.
+			double clusterHeight(int clusterID) const { return m_clusterInfo[clusterID].m_h; }
+
+			//! Returns cluster cage height.
+			double& clusterHeight(int clusterID) { return m_clusterInfo[clusterID].m_h; }
+
+			//! Returns cluster cage width.
+			double clusterWidth(int clusterID) const { return m_clusterInfo[clusterID].m_w; }
+
+			//! Returns cluster cage width.
+			double& clusterWidth(int clusterID) { return m_clusterInfo[clusterID].m_w; }
+
+			//! Returns cluster line width.
+			double clusterLineWidth(int clusterID) const {
+				return m_clusterInfo[clusterID].m_lineWidth;
+			}
+
+			//! Returns cluster line width.
+			double& clusterLineWidth(int clusterID) {
+				return m_clusterInfo[clusterID].m_lineWidth;
+			}
+
+			//! Returns cluster fill color.
+			const String &clusterFillColor(int clusterID) const {
+				return m_clusterInfo[clusterID].m_fillColor;
+			}
+
+			//! Returns cluster fill color.
+			String& clusterFillColor(int clusterID) {
+				return m_clusterInfo[clusterID].m_fillColor;
+			}
+
+			//! Returns cluster fill pattern.
+			GraphAttributes::BrushPattern clusterFillPattern(int clusterID) const {
+				return m_clusterInfo[clusterID].m_fillPattern;
+			}
+
+			//! Returns cluster fill pattern.
+			GraphAttributes::BrushPattern& clusterFillPattern(int clusterID) {
+				return m_clusterInfo[clusterID].m_fillPattern;
+			}
+
+			//! Returns label of cluster c.
+			const String &clusterLabel(int clusterID) const {
+				return m_clusterInfo[clusterID].m_label;
+			}
+
+			//! Returns label of cluster c.
+			String &clusterLabel(int clusterID) {
+				return m_clusterInfo[clusterID].m_label;
+			}
+
+			//! Returns structure containing information on cluster with ID \a clusterID.
+			const ClusterInfo& clusterInfo(int clusterID) const {
+				return m_clusterInfo[clusterID];
+			}
+
+			//! Returns structure containing information on cluster with ID \a clusterID.
+			ClusterInfo& clusterInfo(int clusterID) { return m_clusterInfo[clusterID]; }
+
+
+			//*****************************************************************
+			//data access by cluster
+
+			//! Returns x position of the cluster cages lower left corner.
+			double clusterXPos(cluster c) const { return m_clusterInfo[c->index()].m_x; }
+
+			//! Returns x position of the cluster cages lower left corner.
+			double& clusterXPos(cluster c) { return m_clusterInfo[c->index()].m_x; }
+
+			//! Returns y position of the cluster cages lower left corner.
+			double clusterYPos(cluster c) const { return m_clusterInfo[c->index()].m_y; }
+
+			//! Returns y position of the cluster cages lower left corner.
+			double& clusterYPos(cluster c) { return m_clusterInfo[c->index()].m_y; }
+
+			//! Returns cluster cage height.
+			double clusterHeight(cluster c) const { return m_clusterInfo[c->index()].m_h; }
+
+			//! Returns cluster cage height.
+			double& clusterHeight(cluster c) { return m_clusterInfo[c->index()].m_h; }
+
+			//! Returns cluster cage width.
+			double clusterWidth(cluster c) const { return m_clusterInfo[c->index()].m_w; }
+
+			//! Returns cluster cage width.
+			double& clusterWidth(cluster c) { return m_clusterInfo[c->index()].m_w; }
+
+			//! Returns label of cluster c.
+			const String &clusterLabel(cluster c) const {
+				return m_clusterInfo[c->index()].m_label;
+			}
+
+			//! Returns label of cluster c.
+			String &clusterLabel(cluster c) {
+				return m_clusterInfo[c->index()].m_label;
+			}
+
+			//! Returns const reference to template of cluster c.
+			const String &templateCluster(cluster c) const { return m_clusterTemplate[c]; }
+
+			//! Returns reference to template of cluster c.
+			String &templateCluster(cluster c) { return m_clusterTemplate[c]; }
+
+			//! Returns const reference to structure containing information on cluster \a c.
+			const ClusterInfo& clusterInfo(cluster c) const { return m_clusterInfo[c->index()]; }
+
+			//! Returns reference to structure containing information on cluster \a c.
+			ClusterInfo& clusterInfo(cluster c) { return m_clusterInfo[c->index()]; }
+
+			//! Returns line color stored for cluster \a c in string format.
+			const String &clusterColor(cluster c) const {
+				return  m_clusterInfo[c->index()].m_color;
+			}
+
+			//! Returns line color of cluster \a c in string format.
+			String &clusterColor(cluster c) {
+				return  m_clusterInfo[c->index()].m_color;
+			}
+
+			//Returns const reference to fill color of cluster \a c.
+			const String &clusterFillColor(cluster c) const {
+				return  m_clusterInfo[c->index()].m_fillColor;
+			}
+
+			//Returns reference to fill color of cluster \a c.
+			String &clusterFillColor(cluster c) {
+				return  m_clusterInfo[c->index()].m_fillColor;
+			}
+
+			//Returns const reference to background color of cluster \a c.
+			const String &clusterBackColor(cluster c) const {
+				return  m_clusterInfo[c->index()].m_backColor;
+			}
+
+			//Returns reference to background color of cluster \a c.
+			String &clusterBackColor(cluster c) {
+				return  m_clusterInfo[c->index()].m_backColor;
+			}
+
+
+			//pen and brush styles
+
+			//! Returns edge style of cluster \a c.
+			const GraphAttributes::EdgeStyle &clusterLineStyle(cluster c) const {
+				return  m_clusterInfo[c->index()].m_lineStyle;
+			}
+
+			//! Returns line style of cluster \a c.
+			GraphAttributes::EdgeStyle &clusterLineStyle(cluster c) {
+				return  m_clusterInfo[c->index()].m_lineStyle;
+			}
+
+			//! Returns brush pattern of cluster \a c.
+			const GraphAttributes::BrushPattern &clusterFillPattern(cluster c) const {
+				return  m_clusterInfo[c->index()].m_fillPattern;
+			}
+
+			//! Returns brush pattern of cluster c.
+			GraphAttributes::BrushPattern &clusterFillPattern(cluster c) {
+				return  m_clusterInfo[c->index()].m_fillPattern;
+			}
+
+			//! Returns line width of cluster \a c.
+			const double &clusterLineWidth(cluster c) const {
+				return  m_clusterInfo[c->index()].m_lineWidth;
+			}
+
+			//! Returns line width of cluster c.
+			double &clusterLineWidth(cluster c) {
+				return  m_clusterInfo[c->index()].m_lineWidth;
+			}
+
+			//! Set fill pattern \a i for cluster \a c.
+			void setClusterFillPattern(cluster c, int i) {
+				m_clusterInfo[c->index()].m_fillPattern = intToPattern(i);
+			}
+
+			//! Set style \a i for cluster \a c.
+			void setClusterLineStyle(cluster c, int i) {
+				m_clusterInfo[c->index()].m_lineStyle = intToStyle(i);
+			}
+
+			//! Returns bounding box.
+			const DRect boundingBox() const;
+
+			//! Writes attributed clustergraph in GML format to file fileName.
+			void writeGML(const char *fileName);
+
+			//! Writes attributed clustergraph in GML format to output stream \a os.
+			void writeGML(ostream& os);
+
+			//we don't have GraphConstraints yet
+			//! Writes attributed clustergraph in OGML format to file fileName
+			void writeOGML(const char * fileName);//, GraphConstraints & GC);
+
+			//! Writes attributed clustergraph in OGML format to output stream \a os.
+			void writeOGML(ostream & os);//, GraphConstraints & GC);
+
+			//! Reads attributed clustergraph in GML format from file fileName.
+			bool readClusterGML(
+				const char* fileName,
+				ClusterGraph& CG,
+				Graph& G);
+
+			//! Reads attributed clustergraph in GML format from input stream \a is.
+			bool readClusterGML(
+				istream& is,
+				ClusterGraph& CG,
+				Graph& G);
+
+			//! Reads clustered graph from OGML-file.
+			bool readClusterGraphOGML(
+				const char* fileName,
+				ClusterGraph& CG,
+				Graph& G);
+
+		protected:
+			const ClusterGraph* m_pClusterGraph;//!< Only points to existing graphs.
+
+		private:
+			//! Information on the cluster positions, index is cluster ID.
+			HashArray<int, ClusterInfo> m_clusterInfo;
+
+			//! Reads Cluster Graph with Attributes, base graph \a G, from \a fileName
+			//! with a given gmlparser \a gml (has objecttree).
+			//! Input stream given by parser.
+			bool readClusterGraphGML(
+				const char* fileName,
+				ClusterGraph& CG,
+				Graph& G,
+				GmlParser& gml);
+
+			//! Reads clustered graph from input stream of GmlParser.
+			bool readClusterGraphGML(
+				 ClusterGraph& CG,
+				 Graph& G,
+				 GmlParser& gml);
+
+			//! Recursively writes the cluster structure in GML format into output stream \a os.
+			void writeCluster(
+				ostream &os,
+				NodeArray<int> &nId,
+				ClusterArray<int> & cId,
+				int &nextId,
+				cluster c,
+				String indent);
+
+			//! Recursively writes the cluster structure in GraphWin GML format.
+			void writeGraphWinCluster(
+				ostream &os,
+				NodeArray<int> &nId,
+				int &nextId,
+				cluster c,
+				String indent);
+
+			//! Recursively writes the cluster structure in OGML.
+			void writeClusterOGML(
+				ostream &os,
+				std::ostringstream & osS, // string stream for styles block
+				int & nextLabelId,
+				cluster cluster,
+				int & indentDepth, // indent depth for structure block
+				int indentDepthS); // indent depth for styles block
+
+	};
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/ogdf/cluster/ClusterGraphObserver.h b/ogdf/cluster/ClusterGraphObserver.h
new file mode 100644
index 0000000..8f2a148
--- /dev/null
+++ b/ogdf/cluster/ClusterGraphObserver.h
@@ -0,0 +1,113 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Abstract base class for structures on graphs, that need
+ *        to be informed about cluster graph changes.
+ *
+ * Follows the observer pattern: cluster graphs are observable
+ * objects that can inform observers on changes made to their
+ * structure.
+ *
+ * \author Martin Gronemann
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_CLUSTER_GRAPH_OBSERVER_H
+#define OGDF_CLUSTER_GRAPH_OBSERVER_H
+
+
+#include "../basic/List.h"
+#include "ClusterGraph.h"
+
+namespace ogdf {
+
+
+//----------------------------------------------------------
+// GraphObserver
+// abstract base class
+// derived classes have to overload nodeDeleted, nodeAdded
+// edgeDeleted, edgeAdded
+// these functions should be called by Graph before (delete)
+// and after (add) its structure
+//----------------------------------------------------------
+class OGDF_EXPORT ClusterGraphObserver {
+	friend class ClusterGraph;
+
+public:
+	ClusterGraphObserver() : m_pClusterGraph(0) {}
+
+	ClusterGraphObserver(const ClusterGraph* CG) : m_pClusterGraph(CG)
+	{
+		m_itCGList = CG->registerObserver(this);
+	}//constructor
+
+	virtual ~ClusterGraphObserver()
+	{
+		if (m_pClusterGraph) m_pClusterGraph->unregisterObserver(m_itCGList);
+	}//destructor
+
+	// associates structure with different graph
+	void reregister(const ClusterGraph *pCG) {
+		//small speedup: check if == m_pGraph
+		if (m_pClusterGraph) m_pClusterGraph->unregisterObserver(m_itCGList);
+		if ((m_pClusterGraph = pCG) != 0) m_itCGList = pCG->registerObserver(this);
+	}
+
+	virtual void clusterDeleted(cluster v) = 0;
+	virtual void clusterAdded(cluster v)   = 0;
+	//virtual void reInit()            	= 0;
+	//virtual void cleared()           	= 0;//Graph cleared
+
+	const ClusterGraph*  getGraph() const {	return m_pClusterGraph;}
+
+protected:
+	const ClusterGraph* m_pClusterGraph; //underlying clustergraph
+
+	//List entry in cluster graphs list of all registered observers
+	ListIterator<ClusterGraphObserver*> m_itCGList;
+};
+
+} // end of namespace
+
+#endif
diff --git a/ogdf/energybased/Edge.h b/ogdf/energybased/Edge.h
new file mode 100644
index 0000000..f4fa845
--- /dev/null
+++ b/ogdf/energybased/Edge.h
@@ -0,0 +1,159 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class Edge.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_EDGE_H
+#define OGDF_EDGE_H
+
+
+#include "../basic/Graph.h"
+
+
+namespace ogdf {
+
+class Edge
+{
+	//helping data structure for deleting parallel edges in class FMMMLayout and
+	//Multilevel (needed for the bucket sort algorithm)
+
+	//outputstream for Edge
+	friend ostream &operator<< (ostream & output, const Edge & E)
+	{
+		output <<"edge_index " << E.e->index() << " Graph_ptr " << E.Graph_ptr << " angle"
+			<< E.angle << " cut vertex " << E.cut_vertex->index();
+		return output;
+	}
+
+	//inputstream for Edge
+	friend istream &operator>> (istream & input,  Edge & E)
+	{
+        int c = input.peek();
+        if (c != EOF)
+            input >> E;//.e>>E.Graph_ptr;
+		return input;
+	}
+
+public:
+	//constructor
+	Edge() {
+		e = NULL;
+		Graph_ptr = NULL;
+		angle = 0;
+		cut_vertex = NULL;
+	}
+
+	~Edge() { } //destructor
+
+	void set_Edge (edge f,Graph* g_ptr) {
+		Graph_ptr = g_ptr;
+		e = f;
+	}
+
+	void set_Edge(edge f,double i,node c) {
+		angle = i;
+		e = f;
+		cut_vertex = c;
+	}
+
+	Graph* get_Graph_ptr() const { return Graph_ptr; }
+	edge get_edge() const { return e; }
+	double get_angle() const { return angle; }
+	node get_cut_vertex() const { return cut_vertex; }
+
+private:
+	edge e;
+	Graph* Graph_ptr;
+	double angle;
+	node cut_vertex;
+};
+
+
+class EdgeMaxBucketFunc : public BucketFunc<Edge>
+{
+public:
+	EdgeMaxBucketFunc() {};
+
+	int getBucket(const Edge& E) { return get_max_index(E); }
+
+private:
+	//returns the maximum index of e
+	int get_max_index(const Edge& E) {
+		int source_index = E.get_edge()->source()->index();
+		int target_index = E.get_edge()->target()->index();
+		OGDF_ASSERT(source_index != target_index);
+		if(source_index < target_index) return target_index;
+		else /*if (source_index > target_index)*/ return source_index;
+		//else cout<<"Error Edge::get_max_index() The Graph has a self loop"<<endl;
+	}
+};
+
+
+class EdgeMinBucketFunc : public BucketFunc<Edge>
+{
+public:
+	EdgeMinBucketFunc() { }
+
+	int getBucket(const Edge& E) { return get_min_index(E); }
+
+private:
+
+	//returns the minimum index of e
+	int get_min_index(const Edge& E)
+	{
+		int source_index = E.get_edge()->source()->index();
+		int target_index = E.get_edge()->target()->index();
+		OGDF_ASSERT(source_index != target_index);
+		if(source_index < target_index) return source_index;
+		else /*if (source_index > target_index)*/ return target_index;
+		//else cout<<"Error Edge::get_min_index() The Graph has a self loop"<<endl;
+	}
+};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/energybased/FMMMLayout.cpp b/ogdf/energybased/FMMMLayout.cpp
new file mode 100644
index 0000000..9819acf
--- /dev/null
+++ b/ogdf/energybased/FMMMLayout.cpp
@@ -0,0 +1,1749 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of Fast Multipole Multilevel Method (FM^3).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+#include "FMMMLayout.h"
+#include "../basic/Math.h"
+#include "numexcept.h"
+#include "MAARPacking.h"
+#include "Multilevel.h"
+#include "Edge.h"
+#include "../basic/simple_graph_alg.h"
+#include "../basic/basic.h"
+
+#include "../internal/energybased/NodeAttributes.h"
+#include "../internal/energybased/EdgeAttributes.h"
+#include "Rectangle.h"
+#include <time.h>
+
+#include <QPointF>
+#include <QLineF>
+
+namespace ogdf {
+
+
+FMMMLayout::FMMMLayout()
+{
+	initialize_all_options();
+}
+
+
+//--------------------------- most important functions --------------------------------
+
+void FMMMLayout::call(GraphAttributes &GA)
+{
+	const Graph &G = GA.constGraph();
+	EdgeArray<double> edgelength(G,1.0);
+	call(GA,edgelength);
+}
+
+void FMMMLayout::call(ClusterGraphAttributes &GA)
+{
+	const Graph &G = GA.constGraph();
+	//compute depth of cluster tree, also sets cluster depth values
+	const ClusterGraph &CG = GA.constClusterGraph();
+	int cdepth = CG.treeDepth();
+	EdgeArray<double> edgeLength(G);
+	//compute lca of end vertices for each edge
+	edge e;
+	forall_edges(e, G)
+	{
+		edgeLength[e] = cdepth - CG.clusterDepth(CG.commonCluster(e->source(),e->target())) + 1;
+		OGDF_ASSERT(edgeLength[e] > 0)
+	}
+	call(GA,edgeLength);
+	GA.updateClusterPositions();
+}
+
+
+void FMMMLayout::call(GraphAttributes &GA, const EdgeArray<double> &edgeLength)
+{
+	const Graph &G = GA.constGraph();
+	NodeArray<NodeAttributes> A(G);       //stores the attributes of the nodes (given by L)
+	EdgeArray<EdgeAttributes> E(G);       //stores the edge attributes of G
+	Graph G_reduced;                      //stores a undirected simple and loopfree copy
+										//of G
+	EdgeArray<EdgeAttributes> E_reduced;  //stores the edge attributes of G_reduced
+	NodeArray<NodeAttributes> A_reduced;  //stores the node attributes of G_reduced
+
+	if(G.numberOfNodes() > 1)
+	{
+		GA.clearAllBends();//all edges are straight-line
+		if(useHighLevelOptions())
+			update_low_level_options_due_to_high_level_options_settings();
+		import_NodeAttributes(G,GA,A);
+		import_EdgeAttributes(G,edgeLength,E);
+
+		double t_total;
+		usedTime(t_total);
+		max_integer_position = pow(2.0,maxIntPosExponent());
+		init_ind_ideal_edgelength(G,A,E);
+		make_simple_loopfree(G,A,E,G_reduced,A_reduced,E_reduced);
+		call_DIVIDE_ET_IMPERA_step(G_reduced,A_reduced,E_reduced);
+		if(allowedPositions() != apAll)
+			make_positions_integer(G_reduced,A_reduced);
+		time_total = usedTime(t_total);
+
+		export_NodeAttributes(G_reduced,A_reduced,GA);
+	}
+	else //trivial cases
+	{
+		if(G.numberOfNodes() == 1 )
+		{
+			node v = G.firstNode();
+			GA.x(v) = 0;
+			GA.y(v) = 0;
+		}
+	}
+}
+
+
+void FMMMLayout::call(GraphAttributes &AG, char* ps_file)
+{
+	call(AG);
+	create_postscript_drawing(AG,ps_file);
+}
+
+
+void FMMMLayout::call(
+	GraphAttributes &AG,
+	const EdgeArray<double> &edgeLength,
+	char* ps_file)
+{
+	call(AG,edgeLength);
+	create_postscript_drawing(AG,ps_file);
+}
+
+
+void FMMMLayout::call_DIVIDE_ET_IMPERA_step(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E)
+{
+	NodeArray<int> component(G); //holds for each node the index of its component
+	number_of_components = connectedComponents(G,component);//calculate components of G
+	Graph* G_sub = new Graph[number_of_components];
+	NodeArray<NodeAttributes>* A_sub = new NodeArray<NodeAttributes>[number_of_components];
+	EdgeArray<EdgeAttributes>* E_sub = new EdgeArray<EdgeAttributes>[number_of_components];
+	create_maximum_connected_subGraphs(G,A,E,G_sub,A_sub,E_sub,component);
+
+	if(number_of_components == 1)
+		call_MULTILEVEL_step_for_subGraph(G_sub[0],A_sub[0],E_sub[0],-1);
+	else
+		for(int i = 0; i < number_of_components;i++)
+			call_MULTILEVEL_step_for_subGraph(G_sub[i],A_sub[i],E_sub[i],i);
+
+	pack_subGraph_drawings (A,G_sub,A_sub);
+	delete_all_subGraphs(G_sub,A_sub,E_sub);
+}
+
+
+void FMMMLayout::call_MULTILEVEL_step_for_subGraph(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E,
+    int /*comp_index*/)
+{
+	Multilevel Mult;
+
+	int max_level = 30;//sufficient for all graphs with upto pow(2,30) nodes!
+	//adapt mingraphsize such that no levels are created beyond input graph.
+	if (m_singleLevel) m_minGraphSize = G.numberOfNodes();
+	Array<Graph*> G_mult_ptr(max_level+1);
+	Array<NodeArray<NodeAttributes>*> A_mult_ptr (max_level+1);
+	Array<EdgeArray<EdgeAttributes>*> E_mult_ptr (max_level+1);
+
+	Mult.create_multilevel_representations(G,A,E,randSeed(),
+				galaxyChoice(),minGraphSize(),
+				randomTries(),G_mult_ptr,A_mult_ptr,
+				E_mult_ptr,max_level);
+
+	for(int i = max_level;i >= 0;i--)
+	{
+		if(i == max_level)
+			create_initial_placement(*G_mult_ptr[i],*A_mult_ptr[i]);
+		else
+		{
+			Mult.find_initial_placement_for_level(i,initialPlacementMult(),G_mult_ptr, A_mult_ptr,E_mult_ptr);
+			update_boxlength_and_cornercoordinate(*G_mult_ptr[i],*A_mult_ptr[i]);
+		}
+		call_FORCE_CALCULATION_step(*G_mult_ptr[i],*A_mult_ptr[i],*E_mult_ptr[i],
+				 i,max_level);
+	}
+	Mult.delete_multilevel_representations(G_mult_ptr,A_mult_ptr,E_mult_ptr,max_level);
+}
+
+
+void FMMMLayout::call_FORCE_CALCULATION_step(
+	Graph& G,
+	NodeArray<NodeAttributes>&A,
+	EdgeArray<EdgeAttributes>& E,
+	int act_level,
+	int max_level)
+{
+	const int ITERBOUND = 10000;//needed to guarantee termination if
+							 //stopCriterion() == scThreshold
+	if(G.numberOfNodes() > 1)
+	{
+		int iter = 1;
+		int max_mult_iter = get_max_mult_iter(act_level,max_level,G.numberOfNodes());
+		double actforcevectorlength = threshold() + 1;
+
+		NodeArray<DPoint> F_rep(G); //stores rep. forces
+		NodeArray<DPoint> F_attr(G); //stores attr. forces
+		NodeArray<DPoint> F (G); //stores resulting forces
+		NodeArray<DPoint> last_node_movement(G);//stores the force vectors F of the last
+												//iterations (needed to avoid oscillations)
+
+		set_average_ideal_edgelength(G,E);//needed for easy scaling of the forces
+		make_initialisations_for_rep_calc_classes(G);
+
+		while( ((stopCriterion() == scFixedIterations)&&(iter <= max_mult_iter)) ||
+			((stopCriterion() == scThreshold)&&(actforcevectorlength >= threshold())&&
+			(iter <= ITERBOUND)) ||
+			((stopCriterion() == scFixedIterationsOrThreshold)&&(iter <= max_mult_iter) &&
+			(actforcevectorlength >= threshold())) )
+		{//while
+			calculate_forces(G,A,E,F,F_attr,F_rep,last_node_movement,iter,0);
+			if(stopCriterion() != scFixedIterations)
+				actforcevectorlength = get_average_forcevector_length(G,F);
+			iter++;
+		}//while
+
+        if(act_level == 0) {
+            fixTwistedSplits(G, A);
+			call_POSTPROCESSING_step(G,A,E,F,F_attr,F_rep,last_node_movement);
+        }
+
+		deallocate_memory_for_rep_calc_classes();
+	}
+}
+
+
+void FMMMLayout::call_POSTPROCESSING_step(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E,
+	NodeArray<DPoint>& F,
+	NodeArray<DPoint>& F_attr,
+	NodeArray<DPoint>& F_rep,
+	NodeArray<DPoint>& last_node_movement)
+{
+	for(int i = 1; i<= 10; i++)
+		calculate_forces(G,A,E,F,F_attr,F_rep,last_node_movement,i,1);
+
+	if((resizeDrawing() == true))
+	{
+		adapt_drawing_to_ideal_average_edgelength(G,A,E);
+		update_boxlength_and_cornercoordinate(G,A);
+	}
+
+	for(int i = 1; i<= fineTuningIterations(); i++)
+		calculate_forces(G,A,E,F,F_attr,F_rep,last_node_movement,i,2);
+
+	if((resizeDrawing() == true))
+		adapt_drawing_to_ideal_average_edgelength(G,A,E);
+}
+
+
+//------------------------- functions for pre/post-processing -------------------------
+
+void FMMMLayout::initialize_all_options()
+{
+	//setting high level options
+	useHighLevelOptions(false); pageFormat(pfSquare); unitEdgeLength(100);
+	newInitialPlacement(false); qualityVersusSpeed(qvsBeautifulAndFast);
+
+	//setting low level options
+	//setting general options
+	randSeed(100);edgeLengthMeasurement(elmBoundingCircle);
+	allowedPositions(apInteger);maxIntPosExponent(40);
+
+	//setting options for the divide et impera step
+    pageRatio(1.0);stepsForRotatingComponents(10);
+    tipOverCCs(toNone);minDistCC(100);
+    presortCCs(psDecreasingArea);
+
+	//setting options for the multilevel step
+	minGraphSize(50);galaxyChoice(gcNonUniformProbLowerMass);randomTries(20);
+	maxIterChange(micLinearlyDecreasing);maxIterFactor(10);
+	initialPlacementMult(ipmAdvanced);
+	m_singleLevel = false;
+
+	//setting options for the force calculation step
+	forceModel(fmNew);springStrength(1);repForcesStrength(1);
+	repulsiveForcesCalculation(rfcNMM);stopCriterion(scFixedIterationsOrThreshold);
+	threshold(0.01);fixedIterations(30);forceScalingFactor(0.05);
+	coolTemperature(false);coolValue(0.99);initialPlacementForces(ipfRandomRandIterNr);
+
+	//setting options for postprocessing
+	resizeDrawing(true);resizingScalar(1);fineTuningIterations(20);
+	fineTuneScalar(0.2);adjustPostRepStrengthDynamically(true);
+	postSpringStrength(2.0);postStrengthOfRepForces(0.01);
+
+	//setting options for different repulsive force calculation methods
+	frGridQuotient(2);
+	nmTreeConstruction(rtcSubtreeBySubtree);nmSmallCell(scfIteratively);
+	nmParticlesInLeaves(25); nmPrecision(4);
+}
+
+
+void FMMMLayout::update_low_level_options_due_to_high_level_options_settings()
+{
+	PageFormatType pf = pageFormat();
+	double uel = unitEdgeLength();
+	bool nip = newInitialPlacement();
+	QualityVsSpeed qvs = qualityVersusSpeed();
+
+	//update
+	initialize_all_options();
+	useHighLevelOptions(true);
+	pageFormat(pf);
+	unitEdgeLength(uel);
+	newInitialPlacement(nip);
+	qualityVersusSpeed(qvs);
+
+	if(pageFormat() == pfSquare)
+		pageRatio(1.0);
+	else if(pageFormat() ==pfLandscape)
+		pageRatio(1.4142);
+	else //pageFormat() == pfPortrait
+		pageRatio(0.7071);
+
+	if(newInitialPlacement())
+		initialPlacementForces(ipfRandomTime);
+	else
+		initialPlacementForces(ipfRandomRandIterNr);
+
+	if(qualityVersusSpeed() == qvsGorgeousAndEfficient)
+	{
+		fixedIterations(60);
+		fineTuningIterations(40);
+		nmPrecision(6);
+	}
+	else if(qualityVersusSpeed() == qvsBeautifulAndFast)
+	{
+		fixedIterations(30);
+		fineTuningIterations(20);
+		nmPrecision(4);
+	}
+	else //qualityVersusSpeed() == qvsNiceAndIncredibleSpeed
+	{
+		fixedIterations(15);
+		fineTuningIterations(10);
+		nmPrecision(2);
+	}
+}
+
+
+void FMMMLayout::import_NodeAttributes(
+	const Graph& G,
+	GraphAttributes& GA,
+	NodeArray<NodeAttributes>& A)
+{
+	node v;
+	DPoint position;
+
+	forall_nodes(v,G)
+	{
+		position.m_x = GA.x(v);
+		position.m_y = GA.y(v);
+		A[v].set_NodeAttributes(GA.width(v),GA.height(v),position,NULL,NULL);
+	}
+}
+
+
+void FMMMLayout::import_EdgeAttributes(
+	const Graph& G,
+	const EdgeArray<double>& edgeLength,
+	EdgeArray<EdgeAttributes>& E)
+{
+	edge e;
+	double length;
+
+	forall_edges(e,G)
+	{
+		if(edgeLength[e] > 0) //no negative edgelength allowed
+            length = edgeLength[e];
+		else
+            length = 1;
+
+		E[e].set_EdgeAttributes(length,NULL,NULL);
+	}
+}
+
+
+void FMMMLayout::init_ind_ideal_edgelength(
+	const Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E)
+{
+	edge e;
+
+	if (edgeLengthMeasurement() == elmMidpoint)
+		forall_edges(e,G)
+			E[e].set_length(E[e].get_length() * unitEdgeLength());
+
+	else //(edgeLengthMeasurement() == elmBoundingCircle)
+	{
+		set_radii(G,A);
+		forall_edges(e,G)
+			E[e].set_length(E[e].get_length() * unitEdgeLength() + radius[e->source()]
+				+ radius[e->target()]);
+	}
+}
+
+
+void FMMMLayout::set_radii(const Graph& G, NodeArray<NodeAttributes>& A)
+{
+	node v;
+	radius.init(G);
+	double w,h;
+	forall_nodes(v,G)
+	{
+		w = A[v].get_width()/2;
+		h = A[v].get_height()/2;
+		radius[v] = sqrt(w*w+ h*h);
+	}
+}
+
+
+void FMMMLayout::export_NodeAttributes(
+	Graph& G_reduced,
+	NodeArray<NodeAttributes>& A_reduced,
+	GraphAttributes& GA)
+{
+	node v_copy;
+	forall_nodes(v_copy,G_reduced)
+	{
+		GA.x(A_reduced[v_copy].get_original_node()) =  A_reduced[v_copy].get_position().m_x;
+		GA.y(A_reduced[v_copy].get_original_node()) =  A_reduced[v_copy].get_position().m_y;
+	}
+}
+
+
+void FMMMLayout::make_simple_loopfree(
+	const Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>E,
+	Graph& G_reduced,
+	NodeArray<NodeAttributes>& A_reduced,
+	EdgeArray<EdgeAttributes>& E_reduced)
+{
+	node u_orig,v_orig,v_reduced;
+	edge e_reduced,e_orig;
+
+	//create the reduced Graph G_reduced and save in A/E links to node/edges of G_reduced
+	//create G_reduced as a copy of G without selfloops!
+
+	G_reduced.clear();
+	forall_nodes(v_orig,G)
+		A[v_orig].set_copy_node(G_reduced.newNode());
+	forall_edges(e_orig,G)
+	{
+		u_orig = e_orig->source();
+		v_orig = e_orig->target();
+		if(u_orig != v_orig)
+			E[e_orig].set_copy_edge(G_reduced.newEdge (A[u_orig].get_copy_node(),
+			A[v_orig].get_copy_node()));
+		else
+			E[e_orig].set_copy_edge(NULL);//mark this edge as deleted
+	}
+
+	//remove parallel (and reversed) edges from G_reduced
+	EdgeArray<double> new_edgelength(G_reduced);
+	List<edge> S;
+	S.clear();
+	delete_parallel_edges(G,E,G_reduced,S,new_edgelength);
+
+	//make A_reduced, E_reduced valid for G_reduced
+	A_reduced.init(G_reduced);
+	E_reduced.init(G_reduced);
+
+	//import information for A_reduced, E_reduced and links to the original nodes/edges
+	//of the copy nodes/edges
+	forall_nodes(v_orig,G)
+	{
+		v_reduced = A[v_orig].get_copy_node();
+		A_reduced[v_reduced].set_NodeAttributes(A[v_orig].get_width(), A[v_orig].
+			get_height(),A[v_orig].get_position(),
+			v_orig,NULL);
+	}
+	forall_edges(e_orig,G)
+	{
+		e_reduced = E[e_orig].get_copy_edge();
+		if(e_reduced != NULL)
+			E_reduced[e_reduced].set_EdgeAttributes(E[e_orig].get_length(),e_orig,NULL);
+	}
+
+	//update edgelength of copy edges in G_reduced associated with a set of parallel
+	//edges in G
+	update_edgelength(S,new_edgelength,E_reduced);
+}
+
+
+void FMMMLayout::delete_parallel_edges(
+	const Graph& G,
+	EdgeArray<EdgeAttributes>& E,
+	Graph& G_reduced,
+	List<edge>& S,
+	EdgeArray<double>& new_edgelength)
+{
+	EdgeMaxBucketFunc MaxSort;
+	EdgeMinBucketFunc MinSort;
+	ListIterator<Edge> EdgeIterator;
+    edge e_act = 0, e_save = 0;
+	Edge f_act;
+	List<Edge> sorted_edges;
+	EdgeArray<edge> original_edge (G_reduced); //helping array
+    int save_s_index = 0, save_t_index = 0, act_s_index, act_t_index;
+	int counter = 1;
+	Graph* Graph_ptr = &G_reduced;
+
+	//save the original edges for each edge in G_reduced
+	forall_edges(e_act,G)
+		if(E[e_act].get_copy_edge() != NULL) //e_act is no self_loops
+			original_edge[E[e_act].get_copy_edge()] = e_act;
+
+	forall_edges(e_act,G_reduced)
+	{
+		f_act.set_Edge(e_act,Graph_ptr);
+		sorted_edges.pushBack(f_act);
+	}
+
+	sorted_edges.bucketSort(0,G_reduced.numberOfNodes()-1,MaxSort);
+	sorted_edges.bucketSort(0,G_reduced.numberOfNodes()-1,MinSort);
+
+	//now parallel edges are consecutive in sorted_edges
+	for(EdgeIterator = sorted_edges.begin();EdgeIterator.valid();++EdgeIterator)
+	{//for
+		e_act = (*EdgeIterator).get_edge();
+		act_s_index = e_act->source()->index();
+		act_t_index = e_act->target()->index();
+
+		if(EdgeIterator != sorted_edges.begin())
+		{//if
+			if( (act_s_index == save_s_index && act_t_index == save_t_index) ||
+				(act_s_index == save_t_index && act_t_index == save_s_index) )
+			{
+				if(counter == 1) //first parallel edge
+				{
+					S.pushBack(e_save);
+					new_edgelength[e_save] = E[original_edge[e_save]].get_length() +
+						E[original_edge[e_act]].get_length();
+				}
+				else //more then two parallel edges
+					new_edgelength[e_save] +=E[original_edge[e_act]].get_length();
+
+				E[original_edge[e_act]].set_copy_edge(NULL); //mark copy of edge as deleted
+				G_reduced.delEdge(e_act);                    //delete copy edge in G_reduced
+				counter++;
+			}
+			else
+			{
+				if (counter > 1)
+				{
+					new_edgelength[e_save]/=counter;
+					counter = 1;
+				}
+				save_s_index = act_s_index;
+				save_t_index = act_t_index;
+				e_save = e_act;
+			}
+		}//if
+		else //first edge
+		{
+			save_s_index = act_s_index;
+			save_t_index = act_t_index;
+			e_save = e_act;
+		}
+	}//for
+
+	//treat special case (last edges were multiple edges)
+	if(counter >1)
+		new_edgelength[e_save]/=counter;
+}
+
+
+void FMMMLayout::update_edgelength(
+	List<edge>& S,
+	EdgeArray<double>& new_edgelength,
+	EdgeArray<EdgeAttributes>& E_reduced)
+{
+	edge e;
+	while (!S.empty())
+	{
+		e = S.popFrontRet();
+		E_reduced[e].set_length(new_edgelength[e]);
+	}
+}
+
+
+//inline double FMMMLayout::get_post_rep_force_strength(int n)
+//{
+//	return min(0.2,400.0/double(n));
+//}
+
+
+void FMMMLayout::make_positions_integer(Graph& G, NodeArray<NodeAttributes>& A)
+{
+	node v;
+	double new_x,new_y;
+
+	if(allowedPositions() == apInteger)
+	{//if
+		//calculate value of max_integer_position
+		max_integer_position = 100 * average_ideal_edgelength * G.numberOfNodes() *
+			G.numberOfNodes();
+	}//if
+
+	//restrict positions to lie in [-max_integer_position,max_integer_position]
+	//X [-max_integer_position,max_integer_position]
+	forall_nodes(v,G)
+		if( (A[v].get_x() > max_integer_position) ||
+			(A[v].get_y() > max_integer_position) ||
+			(A[v].get_x() < max_integer_position * (-1.0)) ||
+			(A[v].get_y() < max_integer_position * (-1.0)) )
+		{
+			DPoint cross_point;
+			DPoint nullpoint (0,0);
+			DPoint old_pos (A[v].get_x(),A[v].get_y());
+			DPoint lt ( max_integer_position * (-1.0),max_integer_position);
+			DPoint rt ( max_integer_position,max_integer_position);
+			DPoint lb ( max_integer_position * (-1.0),max_integer_position * (-1.0));
+			DPoint rb ( max_integer_position,max_integer_position * (-1.0));
+			DLine s (nullpoint,old_pos);
+			DLine left_bound (lb,lt);
+			DLine right_bound (rb,rt);
+			DLine top_bound (lt,rt);
+			DLine bottom_bound (lb,rb);
+
+			if(s.intersection(left_bound,cross_point))
+			{
+				A[v].set_x(cross_point.m_x);
+				A[v].set_y(cross_point.m_y);
+			}
+			else if(s.intersection(right_bound,cross_point))
+			{
+				A[v].set_x(cross_point.m_x);
+				A[v].set_y(cross_point.m_y);
+			}
+			else if(s.intersection(top_bound,cross_point))
+			{
+				A[v].set_x(cross_point.m_x);
+				A[v].set_y(cross_point.m_y);
+			}
+			else if(s.intersection(bottom_bound,cross_point))
+			{
+				A[v].set_x(cross_point.m_x);
+				A[v].set_y(cross_point.m_y);
+			}
+			else cout<<"Error FMMMLayout:: make_positions_integer()"<<endl;
+		}
+
+		//make positions integer
+		forall_nodes(v,G)
+		{
+			new_x = floor(A[v].get_x());
+			new_y = floor(A[v].get_y());
+			if(new_x < down_left_corner.m_x)
+			{
+				boxlength += 2;
+				down_left_corner.m_x = down_left_corner.m_x-2;
+			}
+			if(new_y < down_left_corner.m_y)
+			{
+				boxlength += 2;
+				down_left_corner.m_y = down_left_corner.m_y-2;
+			}
+			A[v].set_x(new_x);
+			A[v].set_y(new_y);
+		}
+}
+
+
+void FMMMLayout::create_postscript_drawing(GraphAttributes& AG, char* ps_file)
+{
+	ofstream out_fmmm (ps_file,ios::out);
+	if (!ps_file) cout<<ps_file<<" could not be opened !"<<endl;
+	const Graph& G = AG.constGraph();
+	node v;
+	edge e;
+	double x_min = AG.x(G.firstNode());
+	double x_max = x_min;
+	double y_min = AG.y(G.firstNode());
+	double y_max = y_min;
+	double max_dist;
+	double scale_factor;
+
+	forall_nodes(v,G)
+	{
+		if(AG.x(v) < x_min)
+			x_min = AG.x(v);
+		else if(AG.x(v) > x_max)
+			x_max = AG.x(v);
+		if(AG.y(v) < y_min)
+			y_min = AG.y(v);
+		else if(AG.y(v) > y_max)
+			y_max = AG.y(v);
+	}
+	max_dist = max(x_max -x_min,y_max-y_min);
+	scale_factor = 500.0/max_dist;
+
+	out_fmmm<<"%!PS-Adobe-2.0 "<<endl;
+	out_fmmm<<"%%Pages:  1 "<<endl;
+	out_fmmm<<"% %BoundingBox: "<<x_min<<" "<<x_max<<" "<<y_min<<" "<<y_max<<endl;
+	out_fmmm<<"%%EndComments "<<endl;
+	out_fmmm<<"%%"<<endl;
+	out_fmmm<<"%% Circle"<<endl;
+	out_fmmm<<"/ellipse_dict 4 dict def"<<endl;
+	out_fmmm<<"/ellipse {"<<endl;
+	out_fmmm<<"  ellipse_dict"<<endl;
+	out_fmmm<<"  begin"<<endl;
+	out_fmmm<<"   newpath"<<endl;
+	out_fmmm<<"   /yrad exch def /xrad exch def /ypos exch def /xpos exch def"<<endl;
+	out_fmmm<<"   matrix currentmatrix"<<endl;
+	out_fmmm<<"   xpos ypos translate"<<endl;
+	out_fmmm<<"   xrad yrad scale"<<endl;
+	out_fmmm<<"  0 0 1 0 360 arc"<<endl;
+	out_fmmm<<"  setmatrix"<<endl;
+	out_fmmm<<"  closepath"<<endl;
+	out_fmmm<<" end"<<endl;
+	out_fmmm<<"} def"<<endl;
+	out_fmmm<<"%% Nodes"<<endl;
+	out_fmmm<<"/v { "<<endl;
+	out_fmmm<<" /y exch def"<<endl;
+	out_fmmm<<" /x exch def"<<endl;
+	out_fmmm<<"1.000 1.000 0.894 setrgbcolor"<<endl;
+	out_fmmm<<"x y 10.0 10.0 ellipse fill"<<endl;
+	out_fmmm<<"0.000 0.000 0.000 setrgbcolor"<<endl;
+	out_fmmm<<"x y 10.0 10.0 ellipse stroke"<<endl;
+	out_fmmm<<"} def"<<endl;
+	out_fmmm<<"%% Edges"<<endl;
+	out_fmmm<<"/e { "<<endl;
+	out_fmmm<<" /b exch def"<<endl;
+	out_fmmm<<" /a exch def"<<endl;
+	out_fmmm<<" /y exch def"<<endl;
+	out_fmmm<<" /x exch def"<<endl;
+	out_fmmm<<"x y moveto a b lineto stroke"<<endl;
+	out_fmmm<<"} def"<<endl;
+	out_fmmm<<"%% "<<endl;
+	out_fmmm<<"%% INIT "<<endl;
+	out_fmmm<<"20  200 translate"<<endl;
+	out_fmmm<<scale_factor<<"  "<<scale_factor<<"  scale "<<endl;
+	out_fmmm<<"1 setlinewidth "<<endl;
+	out_fmmm<<"%%BeginProgram "<<endl;
+	forall_edges(e,G)
+		out_fmmm<<AG.x(e->source())<<" "<<AG.y(e->source())<<" "
+		<<AG.x(e->target())<<" "<<AG.y(e->target())<<" e"<<endl;
+	forall_nodes(v,G)
+		out_fmmm<<AG.x(v)<<" "<<AG.y(v) <<" v"<<endl;
+	out_fmmm<<"%%EndProgram "<<endl;
+	out_fmmm<<"showpage "<<endl;
+	out_fmmm<<"%%EOF "<<endl;
+}
+
+
+//------------------------- functions for divide et impera step -----------------------
+
+void FMMMLayout::create_maximum_connected_subGraphs(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>&E,
+	Graph G_sub[],
+	NodeArray<NodeAttributes> A_sub[],
+	EdgeArray<EdgeAttributes> E_sub[],
+	NodeArray<int>& component)
+{
+	node u_orig,v_orig,v_sub;
+	edge e_sub,e_orig;
+	int i;
+
+	//create the subgraphs and save links to subgraph nodes/edges in A
+	forall_nodes(v_orig,G)
+		A[v_orig].set_subgraph_node(G_sub[component[v_orig]].newNode());
+	forall_edges(e_orig,G)
+	{
+		u_orig = e_orig->source();
+		v_orig = e_orig->target();
+		E[e_orig].set_subgraph_edge( G_sub[component[u_orig]].newEdge
+			(A[u_orig].get_subgraph_node(),A[v_orig].get_subgraph_node()));
+	}
+
+	//make A_sub,E_sub valid for the subgraphs
+	for(i = 0; i< number_of_components;i++)
+	{
+		A_sub[i].init(G_sub[i]);
+		E_sub[i].init(G_sub[i]);
+	}
+
+	//import information for A_sub,E_sub and links to the original nodes/edges
+	//of the subGraph nodes/edges
+
+	forall_nodes(v_orig,G)
+	{
+		v_sub = A[v_orig].get_subgraph_node();
+		A_sub[component[v_orig]][v_sub].set_NodeAttributes(A[v_orig].get_width(),
+			A[v_orig].get_height(),A[v_orig].get_position(),
+			v_orig,NULL);
+	}
+	forall_edges(e_orig,G)
+	{
+		e_sub = E[e_orig].get_subgraph_edge();
+		v_orig = e_orig->source();
+		E_sub[component[v_orig]][e_sub].set_EdgeAttributes(E[e_orig].get_length(),
+			e_orig,NULL);
+	}
+}
+
+
+void FMMMLayout::pack_subGraph_drawings(
+	NodeArray<NodeAttributes>& A,
+	Graph G_sub[],
+	NodeArray<NodeAttributes> A_sub[])
+{
+	double aspect_ratio_area, bounding_rectangles_area;
+	MAARPacking P;
+	List<Rectangle> R;
+
+	if(stepsForRotatingComponents() == 0) //no rotation
+		calculate_bounding_rectangles_of_components(R,G_sub,A_sub);
+	else
+		rotate_components_and_calculate_bounding_rectangles(R,G_sub,A_sub);
+
+	P.pack_rectangles_using_Best_Fit_strategy(R,pageRatio(),presortCCs(),
+        aspect_ratio_area,bounding_rectangles_area);
+	export_node_positions(A,R,G_sub,A_sub);
+}
+
+
+void FMMMLayout::calculate_bounding_rectangles_of_components(
+	List<Rectangle>& R,
+	Graph G_sub[],
+	NodeArray<NodeAttributes> A_sub[])
+{
+	int i;
+	Rectangle r;
+	R.clear();
+
+	for(i=0;i<number_of_components;i++)
+	{
+		r = calculate_bounding_rectangle(G_sub[i],A_sub[i],i);
+		R.pushBack(r);
+	}
+}
+
+
+Rectangle FMMMLayout::calculate_bounding_rectangle(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	int componenet_index)
+{
+	Rectangle r;
+	node v;
+    double x_min = 0.0, x_max = 0.0, y_min = 0.0, y_max = 0.0;
+    double act_x_min, act_x_max, act_y_min, act_y_max;
+	double max_boundary;//the maximum of half of the width and half of the height of
+	//each node; (needed to be able to tipp rectangles over without
+	//having access to the height and width of each node)
+
+	forall_nodes(v,G)
+	{
+		max_boundary = max(A[v].get_width()/2, A[v].get_height()/2);
+		if(v == G.firstNode())
+		{
+			x_min = A[v].get_x() - max_boundary;
+			x_max = A[v].get_x() + max_boundary;
+			y_min = A[v].get_y() - max_boundary;
+			y_max = A[v].get_y() + max_boundary;
+		}
+		else
+		{
+			act_x_min = A[v].get_x() - max_boundary;
+			act_x_max = A[v].get_x() + max_boundary;
+			act_y_min = A[v].get_y() - max_boundary;
+			act_y_max = A[v].get_y() + max_boundary;
+			if(act_x_min < x_min) x_min = act_x_min;
+			if(act_x_max > x_max) x_max = act_x_max;
+            if(act_y_min < y_min) y_min = act_y_min;
+			if(act_y_max > y_max) y_max = act_y_max;
+		}
+	}
+
+	//add offset
+	x_min -= minDistCC()/2;
+	x_max += minDistCC()/2;
+	y_min -= minDistCC()/2;
+	y_max += minDistCC()/2;
+
+	r.set_rectangle(x_max-x_min,y_max-y_min,x_min,y_min,componenet_index);
+	return r;
+}
+
+
+void FMMMLayout::rotate_components_and_calculate_bounding_rectangles(
+	List<Rectangle>&R,
+	Graph G_sub[],
+	NodeArray<NodeAttributes> A_sub[])
+{
+	int i,j;
+	double sin_j,cos_j;
+    double angle, act_area, best_area;
+	double ratio,new_width,new_height;
+	Array<NodeArray<DPoint> > best_coords(number_of_components);
+	Array<NodeArray<DPoint> > old_coords(number_of_components);
+	node v_sub;
+	Rectangle r_act,r_best;
+	DPoint new_pos,new_dlc;
+
+	R.clear(); //make R empty
+
+	for(i=0;i<number_of_components;i++)
+	{//allcomponents
+
+		//init r_best, best_area and best_(old)coords
+		r_best = calculate_bounding_rectangle(G_sub[i],A_sub[i],i);
+        best_area =  r_best.get_width() * r_best.get_height();
+		best_coords[i].init(G_sub[i]);
+		old_coords[i].init(G_sub[i]);
+
+		forall_nodes(v_sub,G_sub[i])
+			old_coords[i][v_sub] = best_coords[i][v_sub] = A_sub[i][v_sub].get_position();
+
+        //rotate the components
+        double pi_4 = Math::pi_2 / 2.0;
+        for(j=0;j<=stepsForRotatingComponents();j++)
+		{
+			//calculate new positions for the nodes, the new rectangle and area
+            angle = Math::pi_2 * (double(j)/double(stepsForRotatingComponents()+1)) - pi_4;
+			sin_j = sin(angle);
+			cos_j = cos(angle);
+			forall_nodes(v_sub,G_sub[i])
+			{
+				new_pos.m_x =  cos_j * old_coords[i][v_sub].m_x
+					- sin_j * old_coords[i][v_sub].m_y;
+				new_pos.m_y =   sin_j * old_coords[i][v_sub].m_x
+					+ cos_j * old_coords[i][v_sub].m_y;
+				A_sub[i][v_sub].set_position(new_pos);
+			}
+
+			r_act = calculate_bounding_rectangle(G_sub[i],A_sub[i],i);
+            act_area = r_act.get_width() * r_act.get_height();
+
+            //store placement of the nodes with minimal area
+			if(act_area < best_area)
+			{
+				r_best = r_act;
+				best_area = act_area;
+				forall_nodes(v_sub,G_sub[i])
+					best_coords[i][v_sub] = A_sub[i][v_sub].get_position();
+			}
+		}
+
+        // If a component is taller than it is wide, rotate it 90 degrees.
+		ratio = r_best.get_width()/r_best.get_height();
+        if(ratio < 1)
+		{
+			forall_nodes(v_sub,G_sub[i])
+			{
+				new_pos.m_x = best_coords[i][v_sub].m_y*(-1);
+				new_pos.m_y = best_coords[i][v_sub].m_x;
+				best_coords[i][v_sub] = new_pos;
+			}
+
+			//calculate new rectangle
+			new_dlc.m_x = r_best.get_old_dlc_position().m_y*(-1)-r_best.get_height();
+			new_dlc.m_y = r_best.get_old_dlc_position().m_x;
+			new_width = r_best.get_height();
+			new_height = r_best.get_width();
+			r_best.set_width(new_width);
+			r_best.set_height(new_height);
+			r_best.set_old_dlc_position(new_dlc);
+		}
+
+		//save the computed information in A_sub and R
+		forall_nodes(v_sub,G_sub[i])
+			A_sub[i][v_sub].set_position(best_coords[i][v_sub]);
+		R.pushBack(r_best);
+
+	}//allcomponents
+}
+
+
+void FMMMLayout::export_node_positions(
+	NodeArray<NodeAttributes>& A,
+	List<Rectangle>&  R,
+	Graph G_sub[],
+	NodeArray<NodeAttributes> A_sub[])
+{
+	ListIterator<Rectangle> RectIterator;
+	Rectangle r;
+	int i;
+	node v_sub;
+	DPoint newpos,tipped_pos,tipped_dlc;
+
+	for(RectIterator = R.begin();RectIterator.valid();++RectIterator)
+	{//for
+		r = *RectIterator;
+		i = r.get_component_index();
+		if(r.is_tipped_over())
+		{//if
+			//calculate tipped coordinates of the nodes
+			forall_nodes(v_sub,G_sub[i])
+			{
+				tipped_pos.m_x = A_sub[i][v_sub].get_y()*(-1);
+				tipped_pos.m_y = A_sub[i][v_sub].get_x();
+				A_sub[i][v_sub].set_position(tipped_pos);
+			}
+		}//if
+
+		forall_nodes(v_sub,G_sub[i])
+		{
+			newpos = A_sub[i][v_sub].get_position() + r.get_new_dlc_position()
+				- r.get_old_dlc_position();
+			A[A_sub[i][v_sub].get_original_node()].set_position(newpos);
+		}
+	}//for
+}
+
+
+//----------------------- functions for multilevel step -----------------------------
+
+inline int FMMMLayout::get_max_mult_iter(int act_level, int max_level, int node_nr)
+{
+	int iter;
+	if(maxIterChange() == micConstant) //nothing to do
+		iter =  fixedIterations();
+	else if (maxIterChange() == micLinearlyDecreasing) //linearly decreasing values
+	{
+		if(max_level == 0)
+			iter = fixedIterations() +  ((maxIterFactor()-1) * fixedIterations());
+		else
+			iter = fixedIterations() + int((double(act_level)/double(max_level) ) *
+			((maxIterFactor()-1)) * fixedIterations());
+	}
+	else //maxIterChange == micRapidlyDecreasing (rapidly decreasing values)
+	{
+		if(act_level == max_level)
+			iter = fixedIterations() + int( (maxIterFactor()-1) * fixedIterations());
+		else if(act_level == max_level - 1)
+			iter = fixedIterations() + int(0.5 * (maxIterFactor()-1) * fixedIterations());
+		else if(act_level == max_level - 2)
+			iter = fixedIterations() + int(0.25 * (maxIterFactor()-1) * fixedIterations());
+		else //act_level >= max_level - 3
+			iter = fixedIterations();
+	}
+
+	//helps to get good drawings for small graphs and graphs with few multilevels
+	if((node_nr <= 500) && (iter < 100))
+		return 100;
+	else
+		return iter;
+}
+
+
+//-------------------------- functions for force calculation ---------------------------
+
+inline void FMMMLayout::calculate_forces(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E,
+	NodeArray<DPoint>& F,
+	NodeArray<DPoint>& F_attr,
+	NodeArray<DPoint>& F_rep,
+	NodeArray<DPoint>& last_node_movement,
+	int iter,
+	int fine_tuning_step)
+{
+	if(allowedPositions() != apAll)
+		make_positions_integer(G,A);
+	calculate_attractive_forces(G,A,E,F_attr);
+	calculate_repulsive_forces(G,A,F_rep);
+	add_attr_rep_forces(G,F_attr,F_rep,F,iter,fine_tuning_step);
+	prevent_oscilations(G,F,last_node_movement,iter);
+    move_nodes(G,A,F);
+	update_boxlength_and_cornercoordinate(G,A);
+}
+
+
+void FMMMLayout::init_boxlength_and_cornercoordinate (
+	Graph& G,
+	NodeArray<NodeAttributes>& A)
+{
+	//boxlength is set
+
+	const double MIN_NODE_SIZE = 10;
+	const double BOX_SCALING_FACTOR = 1.1;
+	double w=0,h=0;       //helping variables
+
+	node v;
+	forall_nodes(v,G)
+	{
+		w  += max(A[v].get_width(),MIN_NODE_SIZE);
+		h  += max(A[v].get_height(),MIN_NODE_SIZE);
+	}
+
+	boxlength = ceil(max(w,h) * BOX_SCALING_FACTOR);
+
+	//down left corner of comp. box is the origin
+	down_left_corner.m_x = 0;
+	down_left_corner.m_y = 0;
+}
+
+
+void FMMMLayout::create_initial_placement (Graph& G, NodeArray<NodeAttributes>& A)
+{
+	const int BILLION = 1000000000;
+	int i,j,k;
+	node v;
+
+	if (initialPlacementForces() == ipfKeepPositions) // don't change anything
+	{
+		init_boxlength_and_cornercoordinate(G,A);
+	}
+	else if (initialPlacementForces() == ipfUniformGrid) //set nodes to the midpoints of a  grid
+	{//(uniform on a grid)
+		init_boxlength_and_cornercoordinate(G,A);
+		int level = static_cast<int>( ceil(Math::log4(G.numberOfNodes())));
+		int m     = static_cast<int>(pow(2.0,level))-1;
+		bool finished = false;
+		double blall = boxlength/(m+1); //boxlength for boxes at the lowest level (depth)
+		Array<node> all_nodes(G.numberOfNodes());
+
+		k = 0;
+		forall_nodes(v,G)
+		{
+			all_nodes[k] = v;
+			k++;
+		}
+		v = all_nodes[0];
+		k = 0;
+		i = 0;
+		while ((!finished) && (i <= m))
+		{//while1
+			j = 0;
+			while((!finished) && (j <= m))
+			{//while2
+				A[v].set_x(boxlength*i/(m+1) + blall/2);
+				A[v].set_y(boxlength*j/(m+1) + blall/2);
+				if(k == G.numberOfNodes()-1)
+					finished = true;
+				else
+				{
+					k++;
+					v = all_nodes[k];
+				}
+				j++;
+			}//while2
+			i++;
+		}//while1
+	}//(uniform on a grid)
+	else //randomised distribution of the nodes;
+	{//(random)
+		init_boxlength_and_cornercoordinate(G,A);
+		if(initialPlacementForces() == ipfRandomTime)//(RANDOM based on actual CPU-time)
+			srand((unsigned int)time(0));
+		else if(initialPlacementForces() == ipfRandomRandIterNr)//(RANDOM based on seed)
+            srand(clock());
+
+		forall_nodes(v,G)
+		{
+			DPoint rndp;
+			rndp.m_x = double(randomNumber(0,BILLION))/BILLION;//rand_x in [0,1]
+			rndp.m_y = double(randomNumber(0,BILLION))/BILLION;//rand_y in [0,1]
+			A[v].set_x(rndp.m_x*(boxlength-2)+ 1);
+			A[v].set_y(rndp.m_y*(boxlength-2)+ 1);
+		}
+	}//(random)
+	update_boxlength_and_cornercoordinate(G,A);
+}
+
+
+inline void FMMMLayout::init_F(Graph& G, NodeArray<DPoint>& F)
+{
+	DPoint nullpoint (0,0);
+	node v;
+	forall_nodes(v,G)
+		F[v] = nullpoint;
+}
+
+
+inline void FMMMLayout::make_initialisations_for_rep_calc_classes(Graph& G)
+{
+	if(repulsiveForcesCalculation() == rfcExact)
+		FR.make_initialisations(boxlength,down_left_corner,frGridQuotient());
+	else if(repulsiveForcesCalculation() == rfcGridApproximation)
+		FR.make_initialisations(boxlength,down_left_corner,frGridQuotient());
+	else //(repulsiveForcesCalculation() == rfcNMM
+		NM.make_initialisations(G,boxlength,down_left_corner,
+		nmParticlesInLeaves(),nmPrecision(),
+		nmTreeConstruction(),nmSmallCell());
+}
+
+
+void FMMMLayout::calculate_attractive_forces(
+	Graph& G,
+	NodeArray<NodeAttributes> & A,
+	EdgeArray<EdgeAttributes> & E,
+	NodeArray<DPoint>& F_attr)
+{
+	numexcept N;
+	edge e;
+	node u,v;
+	double norm_v_minus_u,scalar;
+	DPoint vector_v_minus_u,f_u;
+	DPoint nullpoint (0,0);
+
+	//initialisation
+	init_F(G,F_attr);
+
+	//calculation
+	forall_edges (e,G)
+	{//for
+		u = e->source();
+		v = e->target();
+		vector_v_minus_u  = A[v].get_position() - A[u].get_position();
+		norm_v_minus_u = vector_v_minus_u.norm();
+		if(vector_v_minus_u == nullpoint)
+			f_u = nullpoint;
+		else if(!N.f_near_machine_precision(norm_v_minus_u,f_u))
+		{
+			scalar = f_attr_scalar(norm_v_minus_u,E[e].get_length())/norm_v_minus_u;
+			f_u.m_x = scalar * vector_v_minus_u.m_x;
+			f_u.m_y = scalar * vector_v_minus_u.m_y;
+		}
+
+		F_attr[v] = F_attr[v] - f_u;
+		F_attr[u] = F_attr[u] + f_u;
+	}//for
+}
+
+
+double FMMMLayout::f_attr_scalar(double d, double ind_ideal_edge_length)
+{
+	double s;
+
+	if(forceModel() == fmFruchtermanReingold)
+		s =  d*d/(ind_ideal_edge_length*ind_ideal_edge_length*ind_ideal_edge_length);
+	else if (forceModel() == fmEades)
+	{
+		double c = 10;
+		if (d == 0)
+			s = -1e10;
+		else
+			s =  c * Math::log2(d/ind_ideal_edge_length) /(ind_ideal_edge_length);
+	}
+	else if (forceModel() == fmNew)
+	{
+		double c =  Math::log2(d/ind_ideal_edge_length);
+		if (d > 0)
+			s =  c * d * d /
+			(ind_ideal_edge_length * ind_ideal_edge_length * ind_ideal_edge_length);
+		else
+			s = -1e10;
+	}
+    else
+    {
+        s = -1e10;
+        cout << " Error FMMMLayout:: f_attr_scalar" << endl;
+    }
+
+	return s;
+}
+
+
+void FMMMLayout::add_attr_rep_forces(
+	Graph& G,
+	NodeArray<DPoint>& F_attr,
+	NodeArray<DPoint>& F_rep,
+	NodeArray<DPoint>& F,
+	int iter,
+	int fine_tuning_step)
+{
+	numexcept N;
+	node v;
+	DPoint f,force;
+	DPoint nullpoint (0,0);
+	double norm_f,scalar;
+	double act_spring_strength,act_rep_force_strength;
+
+	//set cool_factor
+	if(coolTemperature() == false)
+		cool_factor = 1.0;
+	else if((coolTemperature() == true) && (fine_tuning_step == 0))
+	{
+		if(iter == 1)
+			cool_factor = coolValue();
+		else
+			cool_factor *= coolValue();
+	}
+
+	if(fine_tuning_step == 1)
+		cool_factor /= 10.0; //decrease the temperature rapidly
+	else if (fine_tuning_step == 2)
+	{
+		if(iter <= fineTuningIterations() -5)
+			cool_factor = fineTuneScalar(); //decrease the temperature rapidly
+		else
+			cool_factor = (fineTuneScalar()/10.0);
+	}
+
+	//set the values for the spring strength and strength of the rep. force field
+	if(fine_tuning_step <= 1)//usual case
+	{
+		act_spring_strength = springStrength();
+		act_rep_force_strength = repForcesStrength();
+	}
+	else if(!adjustPostRepStrengthDynamically())
+	{
+		act_spring_strength = postSpringStrength();
+		act_rep_force_strength = postStrengthOfRepForces();
+	}
+	else //adjustPostRepStrengthDynamically())
+	{
+		act_spring_strength = postSpringStrength();
+		act_rep_force_strength = get_post_rep_force_strength(G.numberOfNodes());
+	}
+
+	forall_nodes(v,G)
+	{
+		f.m_x = act_spring_strength * F_attr[v].m_x + act_rep_force_strength * F_rep[v].m_x;
+		f.m_y = act_spring_strength * F_attr[v].m_y + act_rep_force_strength * F_rep[v].m_y;
+		f.m_x = average_ideal_edgelength * average_ideal_edgelength * f.m_x;
+		f.m_y = average_ideal_edgelength * average_ideal_edgelength * f.m_y;
+
+		norm_f = f.norm();
+		if(f == nullpoint)
+			force = nullpoint;
+		else if(N.f_near_machine_precision(norm_f,force))
+			restrict_force_to_comp_box(force);
+		else
+		{
+			scalar = min (norm_f * cool_factor * forceScalingFactor(),
+				max_radius(iter))/norm_f;
+			force.m_x = scalar * f.m_x;
+			force.m_y = scalar * f.m_y;
+		}
+		F[v] = force;
+	}
+}
+
+
+void FMMMLayout::move_nodes(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	NodeArray<DPoint>& F)
+{
+	node v;
+
+	forall_nodes(v,G)
+		A[v].set_position(A[v].get_position() + F[v]);
+}
+
+
+void FMMMLayout::update_boxlength_and_cornercoordinate(
+	Graph& G,
+	NodeArray<NodeAttributes>&A)
+{
+	node v;
+	double xmin,xmax,ymin,ymax;
+	DPoint midpoint;
+
+
+	v = G.firstNode();
+	midpoint = A[v].get_position();
+	xmin = xmax = midpoint.m_x;
+	ymin = ymax = midpoint.m_y;
+
+	forall_nodes(v,G)
+	{
+		midpoint = A[v].get_position();
+		if (midpoint.m_x < xmin )
+			xmin = midpoint.m_x;
+		if (midpoint.m_x > xmax )
+			xmax = midpoint.m_x;
+		if (midpoint.m_y < ymin )
+			ymin = midpoint.m_y;
+		if (midpoint.m_y > ymax )
+			ymax = midpoint.m_y;
+	}
+
+	//set down_left_corner and boxlength
+
+	down_left_corner.m_x = floor(xmin - 1);
+	down_left_corner.m_y = floor(ymin - 1);
+	boxlength = ceil(max(ymax-ymin, xmax-xmin) *1.01 + 2);
+
+	//exception handling: all nodes have same x and y coordinate
+	if(boxlength <= 2 )
+	{
+		boxlength = G.numberOfNodes()* 20;
+		down_left_corner.m_x = floor(xmin) - (boxlength/2);
+		down_left_corner.m_y = floor(ymin) - (boxlength/2);
+	}
+
+	//export the boxlength and down_left_corner values to the rep. calc. classes
+
+	if(repulsiveForcesCalculation() == rfcExact ||
+		repulsiveForcesCalculation() == rfcGridApproximation)
+		FR.update_boxlength_and_cornercoordinate(boxlength,down_left_corner);
+	else //repulsiveForcesCalculation() == rfcNMM
+		NM.update_boxlength_and_cornercoordinate(boxlength,down_left_corner);
+}
+
+
+void FMMMLayout::set_average_ideal_edgelength(
+	Graph& G,
+	EdgeArray<EdgeAttributes>& E)
+{
+	double averagelength = 0;
+	edge e;
+
+	if(G.numberOfEdges() > 0)
+	{
+		forall_edges(e,G)
+			averagelength += E[e].get_length();
+		average_ideal_edgelength = averagelength/G.numberOfEdges();
+	}
+	else
+		average_ideal_edgelength = 50;
+}
+
+
+double FMMMLayout::get_average_forcevector_length (Graph& G, NodeArray<DPoint>& F)
+{
+	double lengthsum = 0;
+	node v;
+	forall_nodes(v,G)
+		lengthsum += F[v].norm();
+	lengthsum /=G.numberOfNodes();
+	return lengthsum;
+}
+
+
+void FMMMLayout::prevent_oscilations(
+	Graph& G,
+	NodeArray<DPoint>& F,
+	NodeArray<DPoint>& last_node_movement,
+	int iter)
+{
+
+	const double pi_times_1_over_6 = 0.52359878;
+	const double pi_times_2_over_6 = 2 * pi_times_1_over_6;
+	const double pi_times_3_over_6 = 3 * pi_times_1_over_6;
+	const double pi_times_4_over_6 = 4 * pi_times_1_over_6;
+	const double pi_times_5_over_6 = 5 * pi_times_1_over_6;
+	const double pi_times_7_over_6 = 7 * pi_times_1_over_6;
+	const double pi_times_8_over_6 = 8 * pi_times_1_over_6;
+	const double pi_times_9_over_6 = 9 * pi_times_1_over_6;
+	const double pi_times_10_over_6 = 10 * pi_times_1_over_6;
+	const double pi_times_11_over_6 = 11 * pi_times_1_over_6;
+
+	DPoint nullpoint (0,0);
+	double fi; //angle in [0,2pi) measured counterclockwise
+	double norm_old,norm_new,quot_old_new;
+
+	if (iter > 1) //usual case
+	{//if1
+		node v;
+		forall_nodes(v,G)
+		{
+			DPoint force_new (F[v].m_x,F[v].m_y);
+			DPoint force_old (last_node_movement[v].m_x,last_node_movement[v].m_y);
+			norm_new = F[v].norm();
+			norm_old  = last_node_movement[v].norm();
+			if ((norm_new > 0) && (norm_old > 0))
+			{//if2
+				quot_old_new =  norm_old / norm_new;
+
+				//prevent oszilations
+				fi = angle(nullpoint,force_old,force_new);
+				if(((fi <= pi_times_1_over_6)||(fi >= pi_times_11_over_6))&&
+					((norm_new > (norm_old*2.0))) )
+				{
+					F[v].m_x = quot_old_new * 2.0 * F[v].m_x;
+					F[v].m_y = quot_old_new * 2.0 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_1_over_6)&&(fi <= pi_times_2_over_6)&&
+					(norm_new > (norm_old*1.5) ) )
+				{
+					F[v].m_x = quot_old_new * 1.5 * F[v].m_x;
+					F[v].m_y = quot_old_new * 1.5 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_2_over_6)&&(fi <= pi_times_3_over_6)&&
+					(norm_new > (norm_old)) )
+				{
+					F[v].m_x = quot_old_new * F[v].m_x;
+					F[v].m_y = quot_old_new * F[v].m_y;
+				}
+				else if ((fi >= pi_times_3_over_6)&&(fi <= pi_times_4_over_6)&&
+					(norm_new > (norm_old*0.66666666)) )
+				{
+					F[v].m_x = quot_old_new * 0.66666666 * F[v].m_x;
+					F[v].m_y = quot_old_new * 0.66666666 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_4_over_6)&&(fi <= pi_times_5_over_6)&&
+					(norm_new > (norm_old*0.5)) )
+				{
+					F[v].m_x = quot_old_new * 0.5 * F[v].m_x;
+					F[v].m_y = quot_old_new * 0.5 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_5_over_6)&&(fi <= pi_times_7_over_6)&&
+					(norm_new > (norm_old*0.33333333)) )
+				{
+					F[v].m_x = quot_old_new * 0.33333333 * F[v].m_x;
+					F[v].m_y = quot_old_new * 0.33333333 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_7_over_6)&&(fi <= pi_times_8_over_6)&&
+					(norm_new > (norm_old*0.5)) )
+				{
+					F[v].m_x = quot_old_new * 0.5 * F[v].m_x;
+					F[v].m_y = quot_old_new * 0.5 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_8_over_6)&&(fi <= pi_times_9_over_6)&&
+					(norm_new > (norm_old*0.66666666)) )
+				{
+					F[v].m_x = quot_old_new * 0.66666666 * F[v].m_x;
+					F[v].m_y = quot_old_new * 0.66666666 * F[v].m_y;
+				}
+				else if ((fi >= pi_times_9_over_6)&&(fi <= pi_times_10_over_6)&&
+					(norm_new > (norm_old)) )
+				{
+					F[v].m_x = quot_old_new * F[v].m_x;
+					F[v].m_y = quot_old_new * F[v].m_y;
+				}
+				else if ((fi >= pi_times_10_over_6)&&(fi <= pi_times_11_over_6)&&
+					(norm_new > (norm_old*1.5) ) )
+				{
+					F[v].m_x = quot_old_new * 1.5 * F[v].m_x;
+					F[v].m_y = quot_old_new * 1.5 * F[v].m_y;
+				}
+			}//if2
+			last_node_movement[v]= F[v];
+		}
+	}//if1
+	else if (iter == 1)
+		init_last_node_movement(G,F,last_node_movement);
+}
+
+
+double FMMMLayout::angle(DPoint& P, DPoint& Q, DPoint& R)
+{
+	double dx1 = Q.m_x - P.m_x;
+	double dy1 = Q.m_y - P.m_y;
+	double dx2 = R.m_x - P.m_x;
+	double dy2 = R.m_y - P.m_y;
+	double fi;//the angle
+
+	if ((dx1 == 0 && dy1 == 0) || (dx2 == 0 && dy2 == 0))
+		cout<<"Multilevel::angle()"<<endl;
+
+	double norm  = (dx1*dx1+dy1*dy1)*(dx2*dx2+dy2*dy2);
+	double cosfi = (dx1*dx2+dy1*dy2) / sqrt(norm);
+
+	if (cosfi >=  1.0 ) fi = 0;
+	if (cosfi <= -1.0 ) fi = Math::pi;
+	else
+	{
+		fi = acos(cosfi);
+		if (dx1*dy2 < dy1*dx2) fi = -fi;
+		if (fi < 0) fi += 2*Math::pi;
+	}
+	return fi;
+}
+
+
+void FMMMLayout::init_last_node_movement(
+	Graph& G,
+	NodeArray<DPoint>& F,
+	NodeArray<DPoint>& last_node_movement)
+{
+	node v;
+	forall_nodes(v,G)
+		last_node_movement[v]= F[v];
+}
+
+
+void FMMMLayout::adapt_drawing_to_ideal_average_edgelength(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E)
+{
+	edge e;
+	node v;
+	double sum_real_edgelength = 0;
+	double sum_ideal_edgelength = 0;
+	double area_scaling_factor;
+	DPoint new_pos;
+
+	forall_edges(e,G)
+	{
+		sum_ideal_edgelength += E[e].get_length();
+		sum_real_edgelength += (A[e->source()].get_position() - A[e->target()].get_position()).norm();
+	}
+
+	if(sum_real_edgelength == 0) //very very unlike case
+		area_scaling_factor = 1;
+	else
+		area_scaling_factor = sum_ideal_edgelength/sum_real_edgelength;
+
+	forall_nodes(v,G)
+	{
+		new_pos.m_x = resizingScalar() * area_scaling_factor * A[v].get_position().m_x;
+		new_pos.m_y = resizingScalar() * area_scaling_factor * A[v].get_position().m_y;
+		A[v].set_position(new_pos);
+	}
+}
+
+
+
+void FMMMLayout::fixTwistedSplits(Graph &G, NodeArray<NodeAttributes>& A) {
+    node v;
+    forall_nodes(v, G) {
+
+        // In order to be a simple two-way split, this node must lead to three others, two of which merge back
+        // together in the same number of steps.
+        std::vector<node> adjacentNodes = getAdjacentNodes(v);
+        if (adjacentNodes.size() == 3) {
+            node direction1Finish;
+            std::vector<node> direction1Path;
+            int direction1Steps;
+            followNodesUntilBranch(v, adjacentNodes[0], &direction1Finish, &direction1Path, &direction1Steps);
+            node direction2Finish;
+            std::vector<node> direction2Path;
+            int direction2Steps;
+            followNodesUntilBranch(v, adjacentNodes[1], &direction2Finish, &direction2Path, &direction2Steps);
+            node direction3Finish;
+            std::vector<node> direction3Path;
+            int direction3Steps;
+            followNodesUntilBranch(v, adjacentNodes[2], &direction3Finish, &direction3Path, &direction3Steps);
+
+            std::vector<node> * path1 = 0;
+            std::vector<node> * path2 = 0;
+            if (direction1Finish == direction2Finish && direction1Steps == direction2Steps && direction1Finish != direction3Finish) {
+                path1 = &direction1Path;
+                path2 = &direction1Path;
+            }
+            else if (direction1Finish == direction3Finish && direction1Steps == direction3Steps && direction1Finish != direction2Finish) {
+                path1 = &direction1Path;
+                path2 = &direction3Path;
+            }
+            else if (direction2Finish == direction3Finish && direction2Steps == direction3Steps && direction2Finish != direction1Finish) {
+                path1 = &direction2Path;
+                path2 = &direction3Path;
+            }
+            if (path1 != 0 && path2 != 0 && path1->size() > 1 && path2->size() > 1) {
+                // If we got here, that means we've found a simple split! path1 and path2 store the nodes in order, so
+                // we check if any of them cross, and if so, we swap their positions to uncross them.
+                for (size_t i = 0; i < path1->size() - 1; ++i) {
+                    node path1Node1 = (*path1)[i];
+                    node path1Node2 = (*path1)[i+1];
+                    node path2Node1 = (*path2)[i];
+                    node path2Node2 = (*path2)[i+1];
+
+                    DPoint path1Node1Position = A[path1Node1].get_position();
+                    DPoint path1Node2Position = A[path1Node2].get_position();
+                    DPoint path2Node1Position = A[path2Node1].get_position();
+                    DPoint path2Node2Position = A[path2Node2].get_position();
+
+                    QPointF path1Node1Point(path1Node1Position.m_x, path1Node1Position.m_y);
+                    QPointF path1Node2Point(path1Node2Position.m_x, path1Node2Position.m_y);
+                    QPointF path2Node1Point(path2Node1Position.m_x, path2Node1Position.m_y);
+                    QPointF path2Node2Point(path2Node2Position.m_x, path2Node2Position.m_y);
+
+                    QLineF line1(path1Node1Point, path1Node2Point);
+                    QLineF line2(path2Node1Point, path2Node2Point);
+                    QPointF intersectionPoint;
+                    if (line1.intersect(line2, &intersectionPoint) == QLineF::BoundedIntersection) {
+                        A[path1Node2].set_position(path2Node2Position);
+                        A[path2Node2].set_position(path1Node2Position);
+                    }
+                }
+            }
+        }
+    }
+}
+
+
+std::vector<node> FMMMLayout::getAdjacentNodes(node v) {
+    std::vector<node> adjacentNodes;
+    ogdf::edge e;
+    forall_adj_edges(e, v) {
+        if (e->source() != v)
+            adjacentNodes.push_back(e->source());
+        if (e->target() != v)
+            adjacentNodes.push_back(e->target());
+    }
+    return adjacentNodes;
+}
+
+
+std::vector<node> FMMMLayout::getAdjacentNodesExcluding(node v, node ex) {
+    std::vector<node> adjacentNodes;
+    ogdf::edge e;
+    forall_adj_edges(e, v) {
+        if (e->source() != v && e->source() != ex)
+            adjacentNodes.push_back(e->source());
+        if (e->target() != v && e->source() != ex)
+            adjacentNodes.push_back(e->target());
+    }
+    return adjacentNodes;
+}
+
+void FMMMLayout::followNodesUntilBranch(node start, node first,
+                                               node * finish, std::vector<node> * path, int * steps) {
+    node prev = start;
+    node current = first;
+    *steps = 0;
+    while (true) {
+        std::vector<node> adjacentNodes = getAdjacentNodesExcluding(current, prev);
+        if (adjacentNodes.size() != 1)
+            break;
+        prev = current;
+        current = adjacentNodes[0];
+        *steps += 1;
+        path->push_back(prev);
+    }
+    *finish = current;
+}
+
+
+} //end namespace ogdf
diff --git a/ogdf/energybased/FMMMLayout.h b/ogdf/energybased/FMMMLayout.h
new file mode 100644
index 0000000..33acc38
--- /dev/null
+++ b/ogdf/energybased/FMMMLayout.h
@@ -0,0 +1,1382 @@
+/*
+ * $Revision: 2583 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-12 01:02:21 +0200 (Do, 12. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of Fast Multipole Multilevel Method (FM^3).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_FMMMLAYOUT_H
+#define OGDF_FMMMLAYOUT_H
+
+#include "../ogdf/basic/Graph.h"
+#include "../ogdf/cluster/ClusterGraphAttributes.h"
+#include "../ogdf/module/LayoutModule.h"
+#include "../ogdf/basic/geometry.h"
+#include "../ogdf/internal/energybased/FruchtermanReingold.h"
+#include "../ogdf/internal/energybased/NMM.h"
+
+
+namespace ogdf {
+
+	class Rectangle;
+
+/**
+ * \brief The fast multipole multilevel layout algorithm.
+ *
+ * The class FMMMLayout implements a force-directed graph drawing
+ * method suited also for very large graphs. It is based on a
+ * combination of an efficient multilevel scheme and a strategy for
+ * approximating the repulsive forces in the system by rapidly
+ * evaluating potential fields.
+ *
+ * The implementation is based on the following publication:
+ *
+ * Stefan Hachul, Michael J�nger: <i>Drawing Large Graphs with a
+ * Potential-Field-Based Multilevel Algorithm</i>. 12th International
+ * Symposium on %Graph Drawing 1998, New York (GD '04), LNCS 3383,
+ * pp. 285-295, 2004.
+ *
+ * <H3>Optional parameters</H3>
+ * The following options are the most important. You can set
+ * useHighLevelOptions to true and just need to adjust a few parameters.
+ * However, you can also adjust all parameters that the implementation
+ * uses (see below), but this requires good knowledge of the algorithm.
+ *
+ * <table>
+ *   <tr>
+ *     <th><i>Option</i><th><i>Type</i><th><i>Default</i><th><i>Description</i>
+ *   </tr><tr>
+ *     <td><i>useHighLevelOptions</i><td>bool<td>false
+ *     <td>Whether high-level options are used or not.
+ *   </tr><tr>
+ *     <td><i>pageFormat</i><td> #PageFormatType <td> #pfSquare
+ *     <td>The desired aspect ratio of the layout.
+ *   </tr><tr>
+ *     <td><i>unitEdgeLength</i><td>double<td>100.0
+ *     <td>The unit edge length.
+ *   </tr><tr>
+ *     <td><i>newInitialPlacement</i><td>bool<td>false
+ *     <td>Specifies if initial placement of nodes is varied.
+ *   </tr><tr>
+ *     <td><i>qualityVersusSpeed</i><td> #QualityVsSpeed <td> #qvsBeautifulAndFast
+ *     <td>Indicates if the algorithm is tuned either for best quality or best speed.
+ *   </tr>
+ * </table>
+ *
+ * If you want to do more detailed fine-tuning, you can adjust all parameters
+ * used by the algorithm. Please refer to the paper cited above for better
+ * understanding of the algorithm.
+ *
+ * <table>
+ *   <tr>
+ *     <th colspan="4" align="center"><b>General</b>
+ *   </tr><tr>
+ *     <td><i>randSeed</i><td>int<td>100
+ *     <td>The seed of the random number generator.
+ *   </tr><tr>
+ *     <td><i>edgeLengthMeasurement</i><td> #EdgeLengthMeasurement <td> #elmBoundingCircle
+ *     <td>Indicates how the length of an edge is measured.
+ *   </tr><tr>
+ *     <td><i>allowedPositions</i><td> #AllowedPositions <td> #apInteger
+ *     <td>Defines which positions for a node are allowed.
+ *   </tr><tr>
+ *     <td><i>maxIntPosExponent</i><td>int<td>40
+ *     <td>Defines the exponent used if allowedPositions == apExponent.
+ *   </tr><tr>
+ *     <th colspan="4" align="center"><b>Divide et impera step</b>
+ *   </tr><tr>
+ *     <td><i>pageRatio</i><td>double<td>1.0
+ *     <td>The desired page ratio.
+ *   </tr><tr>
+ *     <td><i>stepsForRotatingComponents</i><td>int<td>10
+ *     <td>The number of rotations per connected component.
+ *   </tr><tr>
+ *     <td><i>tipOverCCs</i><td> #TipOver <td> #toNoGrowingRow
+ *     <td>Specifies when it is allowed to tip over drawings.
+ *   </tr><tr>
+ *     <td><i>minDistCC</i><td>double<td>100
+ *     <td>The minimal distance between connected components.
+ *   </tr><tr>
+ *     <td><i>presortCCs</i><td> #PreSort <td> #psDecreasingHeight
+ *     <td>Defines if the connected components are sorted before
+ *     the packing algorithm is applied.
+ *   </tr><tr>
+ *     <th colspan="4" align="center"><b>Multilevel step</b>
+ *   </tr><tr>
+ *     <td><i>minGraphSize</i><td>int<td>50
+ *     <td>Determines the number of nodes of a graph for which
+ *     no more collapsing of galaxies is performed.
+ *   </tr><tr>
+ *     <td><i>galaxyChoice</i><td> #GalaxyChoice <td> #gcNonUniformProbLowerMass
+ *     <td>Defines how sun nodes of galaxies are selected.
+ *   </tr><tr>
+ *     <td><i>randomTries</i><td>int<td>20
+ *     <td>Defines the number of tries to get a random node with
+ *     minimal star mass.
+ *   </tr><tr>
+ *     <td><i>maxIterChange</i><td> #MaxIterChange <td> #micLinearlyDecreasing
+ *     <td>Defines how MaxIterations is changed in subsequent multilevels.
+ *   </tr><tr>
+ *     <td><i>maxIterFactor</i><td>int<td>10
+ *     <td>Defines the factor used for decreasing MaxIterations.
+ *   </tr><tr>
+ *     <td><i>initialPlacementMult</i><td> #InitialPlacementMult <td> #ipmAdvanced
+ *     <td>Defines how the initial placement is generated.
+ *   </tr><tr>
+ *     <th colspan="4" align="center"><b>Force calculation step</b>
+ *   </tr><tr>
+ *     <td><i>forceModel</i><td> #ForceModel <td> #fmNew
+ *     <td>The used force model.
+ *   </tr><tr>
+ *     <td><i>springStrength</i><td>double<td>1.0
+ *     <td>The strength of the springs.
+ *   </tr><tr>
+ *     <td><i>repForcesStrength</i><td>double<td>1.0
+ *     <td>The strength of the repulsive forces.
+ *   </tr><tr>
+ *     <td><i>repulsiveForcesCalculation</i><td> #RepulsiveForcesMethod <td> #rfcNMM
+ *     <td>Defines how to calculate repulsive forces.
+ *   </tr><tr>
+ *     <td><i>stopCriterion</i><td> #StopCriterion <td> #scFixedIterationsOrThreshold
+ *     <td>The stop criterion.
+ *   </tr><tr>
+ *     <td><i>threshold</i><td>double<td>0.01
+ *     <td>The threshold for the stop criterion.
+ *   </tr><tr>
+ *     <td><i>fixedIterations</i><td>int<td>30
+ *     <td>The fixed number of iterations for the stop criterion.
+ *   </tr><tr>
+ *     <td><i>forceScalingFactor</i><td>double<td>0.05
+ *     <td>The scaling factor for the forces.
+ *   </tr><tr>
+ *     <td><i>coolTemperature</i><td>bool<td>false
+ *     <td>Use coolValue for scaling forces.
+ *   </tr><tr>
+ *     <td><i>coolValue</i><td>double<td>0.99
+ *     <td>The value by which forces are decreased.
+ *   </tr><tr>
+ *     <td><i>initialPlacementForces</i><td> #InitialPlacementForces <td> #ipfRandomRandIterNr
+ *     <td>Defines how the initial placement is done.
+ *   </tr><tr>
+ *     <th colspan="4" align="center"><b>Force calculation step</b>
+ *   </tr><tr>
+ *     <td><i>resizeDrawing</i><td>bool<td>true
+ *     <td>Specifies if the resulting drawing is resized.
+ *   </tr><tr>
+ *     <td><i>resizingScalar</i><td>double<td>1
+ *     <td>Defines a parameter to scale the drawing if resizeDrawing is true.
+ *   </tr><tr>
+ *     <td><i>fineTuningIterations</i><td>int<td>20
+ *     <td>The number of iterations for fine tuning.
+ *   </tr><tr>
+ *     <td><i>fineTuneScalar</i><td>double<td>0.2
+ *     <td>Defines a parameter for scaling the forces in the fine-tuning iterations.
+ *   </tr><tr>
+ *     <td><i>adjustPostRepStrengthDynamically</i><td>bool<td>true
+ *     <td>If set to true, the strength of the repulsive force field is calculated.
+ *   </tr><tr>
+ *     <td><i>postSpringStrength</i><td>double<td>2.0
+ *     <td>The strength of the springs in the postprocessing step.
+ *   </tr><tr>
+ *     <td><i>postStrengthOfRepForces</i><td>double<td>0.01
+ *     <td>The strength of the repulsive forces in the postprocessing step.
+ *   </tr><tr>
+ *     <th colspan="4" align="center"><b>Repulsive force approximation methods</b>
+ *   </tr><tr>
+ *     <td><i>frGridQuotient</i><td>int<td>2
+ *     <td>The grid quotient.
+ *   </tr><tr>
+ *     <td><i>nmTreeConstruction</i><td> #ReducedTreeConstruction <td> #rtcSubtreeBySubtree
+ *     <td>Defines how the reduced bucket quadtree is constructed.
+ *   </tr><tr>
+ *     <td><i>nmSmallCell</i><td> #SmallestCellFinding <td> #scfIteratively
+ *     <td>Defines how the smallest quadratic cell that surrounds
+ *     the particles of a node in the reduced bucket quadtree is calculated.
+ *   </tr><tr>
+ *     <td><i>nmParticlesInLeaves</i><td>int<td>25
+ *     <td>The maximal number of particles that are contained in
+ *     a leaf of the reduced bucket quadtree.
+ *   </tr><tr>
+ *     <td><i>nmPrecision</i><td>int<td>4
+ *     <td>The precision \a p for the <i>p</i>-term multipole expansions.
+ *   </tr>
+ * </table>
+ *
+ * <H3>Running time</H3>
+ * The running time of the algorithm is
+ * O(<i>n</i> log <i>n</i> + <i>m</i>) for graphs with \a n nodes
+ * and \a m edges. The required space is linear in the input size.
+ */
+class OGDF_EXPORT FMMMLayout : public LayoutModule
+{
+public:
+	//! Possible page formats.
+	enum PageFormatType {
+		pfPortrait,  //!< A4 portrait page.
+		pfLandscape, //!< A4 landscape page.
+		pfSquare     //!< Square format.
+	};
+
+	//! Trade-off between run-time and quality.
+	enum QualityVsSpeed {
+		qvsGorgeousAndEfficient,  //!< Best quality.
+		qvsBeautifulAndFast,      //!< Medium quality and speed.
+		qvsNiceAndIncredibleSpeed //!< Best speed.
+	};
+
+	//! Specifies how the length of an edge is measured.
+	enum EdgeLengthMeasurement {
+		elmMidpoint,      //!< Measure from center point of edge end points.
+		elmBoundingCircle //!< Measure from border of circle s surrounding edge end points.
+	};
+
+	//! Specifies which positions for a node are allowed.
+	enum AllowedPositions {
+		apAll,
+		apInteger,
+		apExponent
+	};
+
+	//! Specifies in which case it is allowed to tip over drawings of connected components.
+	enum TipOver {
+		toNone,
+		toNoGrowingRow,
+		toAlways
+	};
+
+	//! Specifies how connected components are sorted before the packing algorithm is applied.
+	enum PreSort {
+		psNone, //!< Do not presort.
+		psDecreasingHeight, //!< Presort by decreasing height of components.
+        psDecreasingWidth,   //!< Presort by decreasing width of components.
+        psDecreasingArea   //!< Presort by decreasing area of components.
+	};
+
+	//! Specifies how sun nodes of galaxies are selected.
+	enum GalaxyChoice {
+		gcUniformProb,
+		gcNonUniformProbLowerMass,
+		gcNonUniformProbHigherMass
+	};
+
+	//! Specifies how MaxIterations is changed in subsequent multilevels.
+	enum MaxIterChange {
+		micConstant,
+		micLinearlyDecreasing,
+		micRapidlyDecreasing
+	};
+
+	//! Specifies how the initial placement is generated.
+	enum InitialPlacementMult {
+		ipmSimple,
+		ipmAdvanced
+	};
+
+	//! Specifies the force model.
+	enum ForceModel {
+		fmFruchtermanReingold, //!< The force-model by Fruchterman, Reingold.
+		fmEades,               //!< The force-model by Eades.
+		fmNew                  //!< The new force-model.
+	};
+
+	//! Specifies how to calculate repulsive forces.
+	enum RepulsiveForcesMethod {
+		rfcExact,             //!< Exact calculation.
+		rfcGridApproximation, //!< Grid approximation.
+		rfcNMM                //!< Calculation as for new multipole method.
+	};
+
+	//! Specifies the stop criterion.
+	enum StopCriterion {
+		scFixedIterations,           //!< Stop if fixedIterations() is reached.
+		scThreshold,                 //!< Stop if threshold() is reached.
+		scFixedIterationsOrThreshold //!< Stop if fixedIterations() or threshold() is reached.
+	};
+
+	//! Specifies how the initial placement is done.
+	enum InitialPlacementForces {
+		ipfUniformGrid,      //!< Uniform placement on a grid.
+		ipfRandomTime,       //!< Random placement (based on current time).
+		ipfRandomRandIterNr, //!< Random placement (based on randIterNr()).
+		ipfKeepPositions     //!< No change in placement.
+	};
+
+	//! Specifies how the reduced bucket quadtree is constructed.
+	enum ReducedTreeConstruction {
+		rtcPathByPath,      //!< Path-by-path construction.
+		rtcSubtreeBySubtree //!< Subtree-by-subtree construction.
+	};
+
+	//! Specifies how to calculate the smallest quadratic cell surrounding particles of a node in the reduced bucket quadtree.
+	enum SmallestCellFinding {
+		scfIteratively, //!< Iteratively (in constant time).
+		scfAluru        //!< According to formula by Aluru et al. (in constant time).
+	};
+
+
+	//! Creates an instance of the layout algorithm.
+	FMMMLayout();
+
+	// destructor
+	virtual ~FMMMLayout() { }
+
+
+	/**
+	 *  @name The algorithm call
+	 *  @{
+	 */
+
+	//! Calls the algorithm for graph \a GA and returns the layout information in \a AG.
+	void call(GraphAttributes &GA);
+
+	//! Calls the algorithm for clustered graph \a GA and returns the layout information in \a AG.
+	//! Models cluster by simple edge length adaption based on least common ancestor
+	//! cluster of end vertices.
+    using LayoutModule::call;
+	void call(ClusterGraphAttributes &GA);
+
+	//! Extended algorithm call: Allows to pass desired lengths of the edges.
+	/**
+	 * @param GA represents the input graph and is assigned the computed layout.
+	 * @param edgeLength is an edge array of the graph associated with \a GA
+	 *        of positive edge length.
+	 */
+	void call(
+		GraphAttributes &GA,   //graph and layout
+		const EdgeArray<double> &edgeLength); //factor for desired edge lengths
+
+	//! Extended algorithm call: Calls the algorithm for graph \a AG.
+	/**
+	 * Returns layout information in \a AG and a simple drawing is saved in file \a ps_file
+	 * in postscript format (Nodes are drawn as uniformly sized circles).
+	 */
+	void call(GraphAttributes &AG, char* ps_file);
+
+	//! Extend algorithm call: Allows to pass desired lengths of the edges.
+	/**
+	 * The EdgeArray \a edgeLength must be valid for AG.constGraph() and its values must
+	 * be positive.
+	 * A simple drawing is saved in file ps_file in postscript format (Nodes are drawn
+	 * as uniformly sized circles).
+	 */
+	void call(
+		GraphAttributes &AG,   //graph and layout
+		const EdgeArray<double> &edgeLength, //factor for desired edge lengths
+		char* ps_file);
+
+	/** @}
+	 *  @name Further information.
+	 *  @{
+	 */
+
+	//! Returns the runtime (=CPU-time) of the layout algorithm in seconds.
+	double getCpuTime() {
+		return time_total;
+	}
+
+
+	/** @}
+	 *  @name High-level options
+	 *  Allow to specify the most relevant parameters.
+	 *  @{
+	 */
+
+	//! Returns the current setting of option useHighLevelOptions.
+	/**
+	 * If set to true, the high-level options are used to set all low-level options.
+	 * Usually, it is sufficient just to set high-level options; if you want to
+	 * be more specific, set this parameter to false and set the low level options.
+	 */
+	bool useHighLevelOptions() const { return m_useHighLevelOptions; }
+
+	//! Sets the option useHighLevelOptions to \a uho.
+	void useHighLevelOptions(bool uho) { m_useHighLevelOptions = uho; }
+
+	//! Sets single level option, no multilevel hierarchy is created if b == true
+	void setSingleLevel(bool b) {m_singleLevel = b;}
+
+	//! Returns the current setting of option pageFormat.
+	/**
+	 * This option defines the desired aspect ratio of the drawing area.
+	 *  - \a pfPortrait: A4 page in portrait orientation
+	 *  - \a pfLandscape: A4 page in landscape orientation
+	 *  - \a pfSquare: square page format
+	 */
+	PageFormatType pageFormat() const { return m_pageFormat; }
+
+	//! Sets the option pageRatio to \a t.
+	void pageFormat(PageFormatType t) { m_pageFormat = t; }
+
+	//! Returns the current setting of option unitEdgeLength.
+	double unitEdgeLength() const { return m_unitEdgeLength; }
+
+	//! Sets the option unitEdgeLength to \a x.
+	void unitEdgeLength(double x) {m_unitEdgeLength = (( x > 0.0) ? x : 1);}
+
+	//! Returns the current setting of option newInitialPlacement.
+	/**
+	 * This option defines if the initial placement of the nodes at the
+	 * coarsest multilevel is varied for each distinct call of FMMMLayout
+	 * or keeps always the same.
+	 */
+	bool newInitialPlacement() const { return m_newInitialPlacement; }
+
+	//! Sets the option newInitialPlacement to \a nip.
+	void newInitialPlacement(bool nip) { m_newInitialPlacement = nip; }
+
+	//! Returns the current setting of option qualityVersusSpeed.
+	/**
+	 * Indicates if the algorithm is tuned either for best quality or best speed.
+	 *  - \a qvsGorgeousAndEfficient: gorgeous quality and efficient speed
+	 *  - \a qvsBeautifulAndFast: beautiful quality and fast speed
+	 *  - \a qvsNiceAndIncredibleSpeed: nice quality and incredible speed
+	 */
+	QualityVsSpeed qualityVersusSpeed() const { return m_qualityVersusSpeed; }
+
+	//! Sets the option qualityVersusSpeed to \a qvs.
+	void qualityVersusSpeed(QualityVsSpeed qvs) {m_qualityVersusSpeed = qvs; }
+
+
+	/** @}
+	 *  @name General low-level options
+	 * The low-level options in this and the following sections are meant for
+	 * experts or interested people only.
+	 *  @{
+	 */
+
+	//! Sets the seed of the random number generator.
+	void randSeed(int p) { m_randSeed = ((0<=p) ? p : 1);}
+
+	//! Returns the seed of the random number generator.
+	int randSeed() const {return m_randSeed;}
+
+	//! Returns the current setting of option edgeLengthMeasurement.
+	/**
+	 * This option indicates how the length of an edge is measured.
+	 * Possible values:
+	 *   - \a elmMidpoint: from center to center
+	 *   - \a elmBoundingCircle: the distance between the two tight circles bounding the
+	 *     graphics of two adjacent nodes
+	 */
+	EdgeLengthMeasurement edgeLengthMeasurement() const {
+		return m_edgeLengthMeasurement;
+	}
+
+	//! Sets the option edgeLengthMeasurement to \a elm.
+	void edgeLengthMeasurement(EdgeLengthMeasurement elm) { m_edgeLengthMeasurement = elm; }
+
+	//! Returns the current setting of option allowedPositions.
+	/**
+	 * This option defines which positions for a node are allowed.
+	 * Possibly values:
+	 *   - \a apAll: every position is allowed
+	 *   - \a apInteger: only integer positions in the range depending on the number of
+	 *     nodes
+	 *   - \a apExponent: only integer positions in the range of -2^MaxIntPosExponent to
+	 *     2^MaxIntPosExponent
+	 */
+	AllowedPositions allowedPositions() const { return m_allowedPositions; }
+
+	//! Sets the option allowedPositions to \a ap.
+	void allowedPositions(AllowedPositions ap) { m_allowedPositions = ap; }
+
+	//! Returns the current setting of option maxIntPosExponent.
+	/**
+	 * This option defines the exponent used if allowedPositions() == \a apExponent.
+	 */
+	int maxIntPosExponent() const { return m_maxIntPosExponent; }
+
+	//! Sets the option maxIntPosExponent to \a e.
+	void maxIntPosExponent(int e) {
+		m_maxIntPosExponent = (((e >= 31)&&(e<=51))? e : 31);
+	}
+
+
+	/** @}
+	 *  @name Options for the divide et impera step
+	 *  @{
+	 */
+
+	//! Returns the current setting of option pageRatio.
+	/**
+	 * This option defines the desired aspect ratio of the rectangular drawing area.
+	 */
+	double pageRatio() const { return m_pageRatio; }
+
+	//! Sets the option pageRatio to \a r.
+	void pageRatio(double r) {m_pageRatio = (( r > 0) ? r : 1);}
+
+	//! Returns the current setting of option stepsForRotatingComponents.
+	/**
+	 * This options determines the number of times each connected component is rotated with
+	 * angles between 0 and 90 degree to obtain a bounding rectangle with small area.
+	 */
+	int stepsForRotatingComponents() const { return m_stepsForRotatingComponents; }
+
+	//! Sets the option stepsForRotatingComponents to \a n.
+	void stepsForRotatingComponents(int n) {
+		m_stepsForRotatingComponents = ((0<=n) ? n : 0);
+	}
+
+	//! Returns the current setting of option tipOverCCs.
+	/**
+	 * Defines in which case it is allowed to tip over drawings of connected components.
+	 * Possible values:
+	 *   - \a toNone: not allowed at all
+	 *   - \a toNoGrowingRow: only if the height of the packing row does not grow
+	 *   - \a toAlways: always allowed
+	 */
+	TipOver tipOverCCs() const { return m_tipOverCCs; }
+
+	//! Sets the option tipOverCCs to \a to.
+	void tipOverCCs(TipOver to) { m_tipOverCCs = to; }
+
+	//! Returns the  minimal distance between connected components.
+	double minDistCC() const { return m_minDistCC; }
+
+	//! Sets the  minimal distance between connected components to \a x.
+	void minDistCC(double x) { m_minDistCC = (( x > 0) ? x : 1);}
+
+	//! Returns the current setting of option presortCCs.
+	/**
+	 * This option defines if the connected components are sorted before
+	 * the packing algorithm is applied.
+	 * Possible values:
+	 *   - \a psNone: no sorting
+	 *   - \a psDecreasingHeight: sorted by decreasing height
+	 *   - \a psDecreasingWidth: sorted by decreasing width
+     *   - \a psDecreasingArea: sorted by decreasing area
+	 */
+	PreSort presortCCs() const { return m_presortCCs; }
+
+	//! Sets the option presortCCs to \a ps.
+	void presortCCs(PreSort ps) { m_presortCCs = ps; }
+
+
+	/** @}
+	 *  @name Options for the multilevel step
+	 *  @{
+	 */
+
+	//! Returns the current setting of option minGraphSize.
+	/**
+	 * This option determines the number of nodes of a graph in the
+	 * multilevel representation for which no more collapsing of galaxies
+	 * is performed (i.e. the graph at the highest level).
+	 */
+	int minGraphSize() const { return m_minGraphSize; }
+
+	//! Sets the option minGraphSize to \a n.
+	void minGraphSize(int n) { m_minGraphSize = ((n >= 2)? n : 2);}
+
+	//! Returns the current setting of option galaxyChoice.
+	/**
+	 * This option defines how sun nodes of galaxies are selected.
+	 * Possible values:
+	 *   - \a gcUniformProb: selecting by uniform random probability
+	 *   - \a gcNonUniformProbLowerMass: selecting by non-uniform probability depending on
+	 *     the star masses (prefering nodes with lower star mass)
+	 *   - \a gcNonUniformProbHigherMass: as above but prefering nodes with higher star mass
+	 */
+	GalaxyChoice galaxyChoice() const { return m_galaxyChoice; }
+
+	//! Sets the option galaxyChoice to \a gc.
+	void galaxyChoice(GalaxyChoice gc) { m_galaxyChoice = gc; }
+
+	//! Returns the current setting of option randomTries.
+	/**
+	 * This option defines the number of tries to get a random node with
+	 * minimal star mass (used in case of galaxyChoice() == gcNonUniformProbLowerMass
+	 * and galaxyChoice() == gcNonUniformProbHigherMass).
+	 */
+	int randomTries() const { return m_randomTries; }
+
+	//! Sets the option randomTries to \a n.
+	void randomTries(int n) {m_randomTries = ((n>=1)? n: 1);}
+
+	//! Returns the current setting of option maxIterChange.
+	/**
+	 * This option defines how MaxIterations is changed in subsequent multilevels.
+	 * Possible values:
+	 *   - \a micConstant: kept constant at the force calculation step at every level
+	 *   - \a micLinearlyDecreasing: linearly decreasing from MaxIterFactor*FixedIterations
+	 *     to FixedIterations
+	 *   - \a micRapidlyDecreasing: rapdily decreasing from MaxIterFactor*FixedIterations
+	 *      to FixedIterations
+	 */
+	MaxIterChange maxIterChange() const { return m_maxIterChange; }
+
+	//! Sets the option maxIterChange to \a mic.
+	void maxIterChange(MaxIterChange mic) { m_maxIterChange = mic; }
+
+	//! Returns the current setting of option maxIterFactor.
+	/**
+	 * This option defines the factor used for decrasing MaxIterations
+	 * (in case of maxIterChange() == micLinearlyDecreasing or maxIterChange()
+	 * == micRapidlyDecreasing).
+	 */
+	int maxIterFactor() const { return m_maxIterFactor; }
+
+	//! Sets the option maxIterFactor to \a f.
+	void maxIterFactor(int f) { m_maxIterFactor = ((f>=1) ? f : 1 ); }
+
+	//! Returns the current setting of option initialPlacementMult.
+	/**
+	 * This option defines how the initial placement is generated.
+	 * Possible values:
+	 *   - \a ipmSimple: only using information about placement of nodes on higher levels
+	 *   - \a ipmAdvanced: using additional information about the placement of all inter
+	 *   - \a  solar system nodes
+	 */
+	InitialPlacementMult initialPlacementMult() const {
+		return m_initialPlacementMult;
+	}
+
+	//! Sets the option initialPlacementMult to \a ipm.
+	void initialPlacementMult(InitialPlacementMult ipm) {
+		m_initialPlacementMult = ipm;
+	}
+
+
+	/** @}
+	 *  @name Options for the force calculation step
+	 *  @{
+	 */
+
+	//! Returns the used force model.
+	/**
+	 * Possibly values:
+	 *   - \a fmFruchtermanReingold: model of Fruchterman and Reingold
+	 *   - \a fmEades: model of Eades
+	 *   - \a fmNew: new model
+	 */
+	ForceModel forceModel() const { return m_forceModel; }
+
+	//! Sets the used force model to \a fm.
+	void forceModel(ForceModel fm) { m_forceModel = fm; }
+
+	//! Returns the strength of the springs.
+	double springStrength() const { return m_springStrength; }
+
+	//! Sets the strength of the springs to \a x.
+	void springStrength(double x) { m_springStrength  = ((x > 0)? x : 1);}
+
+	//! Returns the strength of the repulsive forces.
+	double repForcesStrength() const { return m_repForcesStrength; }
+
+	//! Sets the strength of the repulsive forces to \a x.
+	void repForcesStrength(double x) { m_repForcesStrength =((x > 0)? x : 1);}
+
+	//! Returns the current setting of option repulsiveForcesCalculation.
+	/**
+	 * This option defines how to calculate repulsive forces.
+	 * Possible values:
+	 *   - \a rfcExact: exact calculation (slow)
+	 *   - \a rfcGridApproximation: grid approxiamtion (inaccurate)
+	 *   - \a rfcNMM: like in NMM (= New Multipole Method; fast and accurate)
+	 */
+	RepulsiveForcesMethod repulsiveForcesCalculation() const {
+		return m_repulsiveForcesCalculation;
+	}
+
+	//! Sets the option repulsiveForcesCalculation to \a rfc.
+	void repulsiveForcesCalculation(RepulsiveForcesMethod rfc) {
+		m_repulsiveForcesCalculation = rfc;
+	}
+
+	//! Returns the stop criterion.
+	/**
+	 * Possible values:
+	 *   - \a rscFixedIterations: stop if fixedIterations() is reached
+	 *   - \a rscThreshold: stop if threshold() is reached
+	 *   - \a rscFixedIterationsOrThreshold: stop if fixedIterations() or threshold()
+	 *     is reached
+	 */
+	StopCriterion stopCriterion() const { return m_stopCriterion; }
+
+	//! Sets the stop criterion to \a rsc.
+	void stopCriterion(StopCriterion rsc) { m_stopCriterion = rsc; }
+
+	//! Returns the threshold for the stop criterion.
+	/**
+	 * (If the average absolute value of all forces in
+	 * an iteration is less then threshold() then stop.)
+	 */
+	double threshold() const { return m_threshold; }
+
+	//! Sets the threshold for the stop criterion to \a x.
+	void threshold(double x) {m_threshold = ((x > 0) ? x : 0.1);}
+
+	//! Returns the fixed number of iterations for the stop criterion.
+	int fixedIterations() const { return m_fixedIterations; }
+
+	//! Sets the fixed number of iterations for the stop criterion to \a n.
+	void fixedIterations(int n) { m_fixedIterations = ((n >= 1) ? n : 1);}
+
+	//! Returns the scaling factor for the forces.
+	double forceScalingFactor() const { return m_forceScalingFactor; }
+
+	//! Sets the scaling factor for the forces to \ f.
+	void forceScalingFactor(double f) { m_forceScalingFactor = ((f > 0) ? f : 1);}
+
+	//! Returns the current setting of option coolTemperature.
+	/**
+	 * If set to true, forces are scaled by coolValue()^(actual iteration) *
+	 * forceScalingFactor(); otherwise forces are scaled by forceScalingFactor().
+	 */
+	bool coolTemperature() const { return m_coolTemperature; }
+
+	//! Sets the option coolTemperature to \a b.
+	void coolTemperature(bool b) { m_coolTemperature = b; }
+
+	//! Returns the current setting of option coolValue.
+	/**
+	 * This option defines the value by which forces are decreased
+	 * if coolTemperature is true.
+	 */
+	double coolValue() const { return m_coolValue; }
+
+	//! Sets the option coolValue to \a x.
+	void coolValue(double x) { m_coolValue = (((x >0 )&&(x<=1) )? x : 0.99);}
+
+
+	//! Returns the current setting of option initialPlacementForces.
+	/**
+	 * This option defines how the initial placement is done.
+	 * Possible values:
+	 *   - \a ipfUniformGrid: uniform on a grid
+	 *   - \a ipfRandomTime: random based on actual time
+	 *   - \a ipfRandomRandIterNr: random based on randIterNr()
+	 *   - \a ipfKeepPositions: no change in placement
+	 */
+	InitialPlacementForces initialPlacementForces() const {
+		return m_initialPlacementForces;
+	}
+
+	//! Sets the option initialPlacementForces to \a ipf.
+	void initialPlacementForces(InitialPlacementForces ipf) {
+		m_initialPlacementForces = ipf;
+	}
+
+
+	/** @}
+	 *  @name Options for the postprocessing step
+	 *  @{
+	 */
+
+	//! Returns the current setting of option resizeDrawing.
+	/**
+	 * If set to true, the resulting drawing is resized so that the average edge
+	 * length is the desired edge length times resizingScalar().
+	 */
+	bool resizeDrawing() const { return m_resizeDrawing; }
+
+	//! Sets the option resizeDrawing to \a b.
+	void resizeDrawing(bool b) { m_resizeDrawing = b; }
+
+	//! Returns the current setting of option resizingScalar.
+	/**
+	 * This option defines a parameter to scale the drawing if
+	 * resizeDrawing() is true.
+	 */
+	double resizingScalar() const { return m_resizingScalar; }
+
+	//! Sets the option resizingScalar to \a s.
+	void resizingScalar(double s) { m_resizingScalar = ((s > 0) ? s : 1);}
+
+	//! Returns the number of iterations for fine tuning.
+	int fineTuningIterations() const { return m_fineTuningIterations; }
+
+	//! Sets the number of iterations for fine tuning to \a n.
+	void fineTuningIterations(int n) { m_fineTuningIterations =((n >= 0) ? n : 0);}
+
+	//! Returns the curent setting of option fineTuneScalar.
+	/**
+	 * This option defines a parameter for scaling the forces in the
+	 * fine-tuning iterations.
+	 */
+	double fineTuneScalar() const { return m_fineTuneScalar; }
+
+	//! Sets the option fineTuneScalar to \a s
+	void fineTuneScalar(double s) { m_fineTuneScalar = ((s >= 0) ? s : 1);}
+
+	//! Returns the current setting of option adjustPostRepStrengthDynamically.
+	/**
+	 * If set to true, the strength of the repulsive force field is calculated
+	 * dynamically by a formula depending on the number of nodes; otherwise the
+	 * strength are scaled by PostSpringStrength and PostStrengthOfRepForces.
+	 */
+	bool adjustPostRepStrengthDynamically() const {
+		return m_adjustPostRepStrengthDynamically;
+	}
+
+	//! Sets the option adjustPostRepStrengthDynamically to \a b.
+	void adjustPostRepStrengthDynamically(bool b) {
+		m_adjustPostRepStrengthDynamically = b;
+	}
+
+	//! Returns the strength of the springs in the postprocessing step.
+	double postSpringStrength() const { return m_postSpringStrength; }
+
+	//! Sets the strength of the springs in the postprocessing step to \a x.
+	void postSpringStrength(double x) { m_postSpringStrength  = ((x > 0)? x : 1);}
+
+	//! Returns the strength of the repulsive forces in the postprocessing step.
+	double postStrengthOfRepForces() const { return m_postStrengthOfRepForces; }
+
+	//! Sets the strength of the repulsive forces in the postprocessing step to \a x.
+	void postStrengthOfRepForces(double x) {
+		m_postStrengthOfRepForces = ((x > 0)? x : 1);
+	}
+
+
+	/** @}
+	 *  @name Options for repulsive force approximation methods
+	 *  @{
+	 */
+
+	//! Returns the current setting of option frGridQuotient.
+	/**
+	 * The number k of rows and columns of the grid is sqrt(|V|) / frGridQuotient().
+	 * (Note that in [Fruchterman,Reingold] frGridQuotient is 2.)
+	 */
+	int  frGridQuotient() const {return m_frGridQuotient;}
+
+	//! Sets the option frGridQuotient to \a p.
+	void frGridQuotient(int p) { m_frGridQuotient = ((0<=p) ? p : 2);}
+
+	//! Returns the current setting of option nmTreeConstruction.
+	/**
+	 * This option defines how the reduced bucket quadtree is constructed.
+	 * Possible values:
+	 *   - \a rtcPathByPath: path by path construction
+	 *   - \a rtcSubtreeBySubtree: subtree by subtree construction
+	 */
+	ReducedTreeConstruction nmTreeConstruction() const { return m_NMTreeConstruction; }
+
+	//! Sets the option nmTreeConstruction to \a rtc.
+	void nmTreeConstruction(ReducedTreeConstruction rtc) { m_NMTreeConstruction = rtc; }
+
+	//! Returns the current setting of option nmSmallCell.
+	/**
+	 * This option defines how the smallest quadratic cell that surrounds
+	 * the particles of a node in the reduced bucket quadtree is calculated.
+	 * Possible values:
+	 *   - \a scfIteratively: iteratively (in constant time)
+	 *   - \a scfAluru: by the formula by Aluru et al. (in constant time)
+	 */
+	SmallestCellFinding nmSmallCell() const { return m_NMSmallCell; }
+
+	//! Sets the option nmSmallCell to \a scf.
+	void nmSmallCell(SmallestCellFinding scf) { m_NMSmallCell = scf; }
+
+	//! Returns the current setting of option nmParticlesInLeaves.
+	/**
+	 * Defines the maximal number of particles that are contained in
+	 * a leaf of the reduced bucket quadtree.
+	 */
+	int nmParticlesInLeaves() const { return m_NMParticlesInLeaves; }
+
+	//! Sets the option nmParticlesInLeaves to \a n.
+	void nmParticlesInLeaves(int n) { m_NMParticlesInLeaves = ((n>= 1)? n : 1);}
+
+	//! Returns the precision \a p for the <i>p</i>-term multipole expansions.
+	int nmPrecision() const { return m_NMPrecision; }
+
+	//! Sets the precision for the multipole expansions to \ p.
+	void nmPrecision(int p) { m_NMPrecision  = ((p >= 1 ) ? p : 1);}
+
+	//! @}
+
+private:
+
+	//high level options
+	bool                  m_useHighLevelOptions; //!< The option for using high-level options.
+	PageFormatType        m_pageFormat; //!< The option for the page format.
+	double                m_unitEdgeLength; //!< The unit edge length.
+	bool                  m_newInitialPlacement; //!< The option for new initial placement.
+	QualityVsSpeed        m_qualityVersusSpeed; //!< The option for quality-vs-speed trade-off.
+
+	//low level options
+	//general options
+	int                   m_randSeed; //!< The random seed.
+	EdgeLengthMeasurement m_edgeLengthMeasurement; //!< The option for edge length measurement.
+	AllowedPositions      m_allowedPositions; //!< The option for allowed positions.
+	int                   m_maxIntPosExponent; //!< The option for the used	exponent.
+
+	//options for divide et impera step
+	double                m_pageRatio; //!< The desired page ratio.
+	int                   m_stepsForRotatingComponents; //!< The number of rotations.
+	TipOver               m_tipOverCCs; //!< Option for tip-over of connected components.
+	double                m_minDistCC; //!< The separation between connected components.
+	PreSort               m_presortCCs; //!< The option for presorting connected components.
+
+	//options for multilevel step
+	bool  		          m_singleLevel; //!< Option for pure single level.
+	int                   m_minGraphSize; //!< The option for minimal graph size.
+	GalaxyChoice          m_galaxyChoice; //!< The selection of galaxy nodes.
+	int                   m_randomTries; //!< The number of random tries.
+	MaxIterChange         m_maxIterChange; //!< The option for how to change MaxIterations.
+							//!< If maxIterChange != micConstant, the iterations are decreased
+							//!< depending on the level, starting from
+							//!< ((maxIterFactor()-1) * fixedIterations())
+	int                   m_maxIterFactor; //!< The factor used for decreasing MaxIterations.
+	InitialPlacementMult m_initialPlacementMult; //!< The option for creating initial placement.
+
+	//options for force calculation step
+	ForceModel            m_forceModel; //!< The used force model.
+	double                m_springStrength; //!< The strengths of springs.
+	double                m_repForcesStrength; //!< The strength of repulsive forces.
+	RepulsiveForcesMethod m_repulsiveForcesCalculation; //!< Option for how to calculate repulsive forces.
+	StopCriterion         m_stopCriterion; //!< The stop criterion.
+	double                m_threshold; //!< The threshold for the stop criterion.
+	int                   m_fixedIterations; //!< The fixed number of iterations for the stop criterion.
+	double                m_forceScalingFactor; //!< The scaling factor for the forces.
+	bool                  m_coolTemperature; //!< The option for how to scale forces.
+	double                m_coolValue; //!< The value by which forces are decreased.
+	InitialPlacementForces m_initialPlacementForces; //!< The option for how the initial placement is done.
+
+	//options for postprocessing step
+	bool                  m_resizeDrawing; //!< The option for resizing the drawing.
+	double                m_resizingScalar; //!< Parameter for resizing the drawing.
+	int                   m_fineTuningIterations; //!< The number of iterations for fine tuning.
+	double                m_fineTuneScalar; //!< Parameter for scaling forces during fine tuning.
+	bool                  m_adjustPostRepStrengthDynamically; //!< The option adjustPostRepStrengthDynamically.
+	double                m_postSpringStrength; //!< The strength of springs during postprocessing.
+	double                m_postStrengthOfRepForces; //!< The strength of repulsive forces during postprocessing.
+
+	//options for repulsive force approximation methods
+	int                   m_frGridQuotient; //!< The grid quotient.
+	ReducedTreeConstruction m_NMTreeConstruction; //!< The option for how to construct reduced bucket quadtree.
+	SmallestCellFinding   m_NMSmallCell; //!< The option for how to calculate smallest quadtratic cells.
+	int                   m_NMParticlesInLeaves; //!< The maximal number of particles in a leaf.
+	int                   m_NMPrecision; //!< The precision for multipole expansions.
+
+	//other variables
+	double max_integer_position; //!< The maximum value for an integer position.
+	double cool_factor; //!< Needed for scaling the forces if coolTemperature is true.
+	double average_ideal_edgelength; //!< Measured from center to center.
+	double boxlength; //!< Holds the length of the quadratic comput. box.
+	int number_of_components; //!< The number of components of the graph.
+	DPoint down_left_corner; //!< Holds down left corner of the comput. box.
+	NodeArray<double> radius; //!< Holds the radius of the surrounding circle for each node.
+	double time_total; //!< The runtime (=CPU-time) of the algorithm in seconds.
+
+	FruchtermanReingold FR; //!< Class for repulsive force calculation (Fruchterman, Reingold).
+	NMM NM; //!< Class for repulsive force calculation.
+
+
+	//------------------- most important functions ----------------------------
+
+	//! Calls the divide (decomposition into connected components) and impera (drawing and packing of the componenets) step.
+	void call_DIVIDE_ET_IMPERA_step(
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>& E);
+
+	//! Calls the multilevel step for subGraph \a G.
+	void call_MULTILEVEL_step_for_subGraph(
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>& E,
+		int comp_index);
+
+	//! Calls the force calculation step for \a G, \a A, \a E.
+	/**
+	 * If act_level is 0 and resizeDrawing is true the drawing is resized.
+	 * Furthermore, the maximum number of force calc. steps is calculated
+	 * depending on MaxIterChange, act_level, and max_level.
+	 */
+	void call_FORCE_CALCULATION_step (
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>& E,
+		int act_level,
+		int max_level);
+
+	//! Calls the postprocessing step.
+	void call_POSTPROCESSING_step(
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>& E,
+		NodeArray<DPoint>& F,
+		NodeArray<DPoint>& F_attr,
+		NodeArray<DPoint>& F_rep,
+		NodeArray<DPoint>& last_node_movement);
+
+
+	//---------------- functions for pre/pos-processing -----------------------------
+
+	//! All parameter options are set to the default values.
+	void initialize_all_options();
+
+	//! Updates several low level parameter options due to the settings of the high level parameter options.
+	void update_low_level_options_due_to_high_level_options_settings();
+
+	//! Imports for each node \a v of \a G its width, height and position(given from \a GA) in \a A.
+	void import_NodeAttributes(
+		const Graph& G,
+		GraphAttributes& GA,
+		NodeArray<NodeAttributes>& A);
+
+	//! Imports for each edge e of G its desired length given via edgeLength.
+	void import_EdgeAttributes (
+		const Graph& G,
+		const EdgeArray<double>& edgeLength,
+		EdgeArray <EdgeAttributes>& E);
+
+	//! Sets the individual ideal edge length for each edge \a e.
+	void init_ind_ideal_edgelength(
+		const Graph& G,
+		NodeArray<NodeAttributes>&A,
+		EdgeArray <EdgeAttributes>& E);
+
+	//! The radii of the surrounding circles of the bounding boxes are computed.
+	void set_radii(const Graph& G,NodeArray<NodeAttributes>& A);
+
+	//! Exports for each node \a v in \a G_reduced the position of the original_node in \a G.
+	void export_NodeAttributes(
+		Graph& G_reduced,
+		NodeArray<NodeAttributes>& A_reduced,
+		GraphAttributes& GA);
+
+	//! Creates a simple and loopfree copy of \a G and stores the corresponding node / edge attributes.
+	/**
+	 * The corresponding node / edge attributes are stored in \a A_reduced and
+	 * \a E_reduced; the links to the copy_node and original node are stored in \a A,
+	 * \a A_reduced, too.
+	 */
+	void make_simple_loopfree(
+		const Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>E,
+		Graph& G_reduced,
+		NodeArray<NodeAttributes>& A_reduced,
+		EdgeArray<EdgeAttributes>& E_reduced);
+
+	//! Deletes parallel edges of \a G_reduced.
+	/**
+	 * Saves for each set of parallel edges one representative edge in \a S and
+	 * saves in \a new_edgelength the new edge length of this edge in \a G_reduced.
+	 */
+	void delete_parallel_edges(
+		const Graph& G,
+		EdgeArray<EdgeAttributes>& E,
+		Graph& G_reduced,
+		List<edge>& S,
+		EdgeArray<double>& new_edgelength);
+
+	//! Sets for each edge \a e of \a G_reduced in \a S its edgelength to \a new_edgelength[\a e].
+	/**
+	 * Also stores this information in \a E_reduced.
+	 */
+	void update_edgelength(
+		List<edge>& S,
+		EdgeArray <double>& new_edgelength,
+		EdgeArray<EdgeAttributes>& E_reduced);
+
+	//! Returns the value for the strength of the repulsive forces.
+	/**
+	 * Used in the postprocessing step; depending on \a n = G.numberOfNodes().
+	 */
+	double get_post_rep_force_strength(int n) {
+		return min(0.2,400.0/double(n));
+	}
+
+	//! Makes the node positions integers.
+	/**
+	 * If allowedPositions == apInteger the values are in a range depending on
+	 * G.number_of_nodes() and the average_ideal_edgelength. If allowed_positions
+	 * == apExponent the values are integers in a bounded integer range.
+	 */
+	void make_positions_integer(Graph& G, NodeArray<NodeAttributes>& A);
+
+	//! Creates a simple drawing of \a AG in postscript format and saves it in file \a ps_file.
+	void create_postscript_drawing(GraphAttributes& AG, char* ps_file);
+
+
+	//------------------ functions for divide et impera step -----------------------
+
+	//! Constructs the list of connected components of G.
+	/**
+	 * Also constructs the corresponding lists with the node / edge attributes
+	 * (containing a pointer to the original node in \a G for each node in a subgraph).
+	 */
+	void create_maximum_connected_subGraphs(
+		Graph& G,
+		NodeArray<NodeAttributes>&A,
+		EdgeArray<EdgeAttributes>&E,
+		Graph G_sub[],
+		NodeArray<NodeAttributes> A_sub[],
+		EdgeArray<EdgeAttributes> E_sub[],
+		NodeArray<int>& component);
+
+	//! The drawings of the subgraphs are packed.
+	/**
+	 * This is done such that the subgraphs do not overlap and fit into a small
+	 * box with the desired aspect ratio.
+	 */
+	void pack_subGraph_drawings(
+		NodeArray<NodeAttributes>& A,
+		Graph G_sub[],
+		NodeArray<NodeAttributes> A_sub[]);
+
+	//! The bounding rectangles of all connected componenents of \a G are calculated and stored in \a R.
+	void  calculate_bounding_rectangles_of_components(
+		List<Rectangle>& R,
+		Graph  G_sub[],
+		NodeArray<NodeAttributes> A_sub[]);
+
+	//! The bounding rectangle of the componenet_index-th. component of G is returned.
+	Rectangle calculate_bounding_rectangle(
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		int componenet_index);
+
+	/**
+	 * If number_of_components > 1, the subgraphs \a G_sub are rotated and skipped to
+	 * find bounding rectangles with minimum area. The information is saved in \a R and
+	 * the node positions in \a A_sub are updated. If number_of_components == 1 a rotation
+	 * with minimal aspect ratio is found instead.
+	 */
+	void rotate_components_and_calculate_bounding_rectangles(
+		List<Rectangle>&R,
+		Graph G_sub[],
+		NodeArray<NodeAttributes> A_sub[]);
+
+	/**
+	 * The positions of the nodes in the subgraphs are calculated by using the
+	 * information stored in R and are exported to A. (The coordinates of components
+	 * which surrounding rectangles have been tipped over in the packing step are
+	 * tipped over here,too)
+	 */
+	void export_node_positions(
+		NodeArray<NodeAttributes>& A,
+		List<Rectangle>& R,
+		Graph G_sub[],
+		NodeArray<NodeAttributes> A_sub[]);
+
+	//! Frees dynamically allocated memory for the connected component subgraphs.
+	void delete_all_subGraphs(
+		Graph G_sub[],
+		NodeArray<NodeAttributes> A_sub[],
+		EdgeArray<EdgeAttributes> E_sub[])
+	{
+		delete [] G_sub;
+		delete [] A_sub;
+		delete [] E_sub;
+	}
+
+
+
+	//------------------  functions for multilevel step    --------------------------
+
+	/**
+	 * Returns the maximum number of iterations for the force calc. step depending
+	 * on act_level, max_level, FixedIterations, MaxIterChange, MaxIterFactor,
+	 * and the number of nodes of the Graph in the actual mutilevel.
+	 */
+	int get_max_mult_iter(int act_level, int max_level, int node_nr);
+
+
+	//------------------  functions for force calculation ---------------------------
+
+	//! The forces are calculated here.
+	void calculate_forces(
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>& E,NodeArray<DPoint>& F,
+		NodeArray<DPoint>& F_attr,
+		NodeArray<DPoint>& F_rep,
+		NodeArray<DPoint>& last_node_movement,
+		int iter,
+		int fine_tuning_step);
+
+	//! The length of the computational box in the first iteration is set (down left corner is at (0,0).
+	void init_boxlength_and_cornercoordinate(Graph& G,NodeArray<NodeAttributes>& A);
+
+	//! The initial placements of the nodes are created by using initialPlacementForces().
+	void create_initial_placement (Graph& G,NodeArray<NodeAttributes>& A);
+
+	//! Sets all entries of \a F to (0,0).
+	void  init_F (Graph& G, NodeArray<DPoint>& F);
+
+
+	//! Make initializations for the data structures that are used in the choosen class for rep. force calculation.
+	void make_initialisations_for_rep_calc_classes(
+		Graph& G/*,
+		NodeArray<NodeAttributes> &A,
+		NodeArray<DPoint>& F_rep*/);
+
+	//! Calculates repulsive forces for each node.
+	void calculate_repulsive_forces(
+		Graph &G,
+		NodeArray<NodeAttributes>& A,
+		NodeArray<DPoint>& F_rep)
+	{
+		if(repulsiveForcesCalculation() == rfcExact )
+			FR.calculate_exact_repulsive_forces(G,A,F_rep);
+		else if(repulsiveForcesCalculation() == rfcGridApproximation )
+			FR.calculate_approx_repulsive_forces(G,A,F_rep);
+		else //repulsiveForcesCalculation() == rfcNMM
+			NM.calculate_repulsive_forces(G,A,F_rep);
+	}
+
+
+	//! Deallocates dynamically allocated memory of the choosen rep. calculation class.
+	void deallocate_memory_for_rep_calc_classes()
+	{
+		if(repulsiveForcesCalculation() == rfcNMM)
+			NM.deallocate_memory();
+	}
+
+	//! Calculates attractive forces for each node.
+	void calculate_attractive_forces(
+		Graph& G,
+		NodeArray<NodeAttributes> & A,
+		EdgeArray<EdgeAttributes>& E,
+		NodeArray<DPoint>& F_attr);
+
+	//! Returns the attractive force scalar.
+	double f_attr_scalar (double d,double ind_ideal_edge_length);
+
+	//! Add attractive and repulsive forces for each node.
+	void add_attr_rep_forces(
+		Graph& G,
+		NodeArray<DPoint>& F_attr,
+		NodeArray<DPoint>& F_rep,
+		NodeArray<DPoint>& F,
+		int iter,
+		int fine_tuning_step);
+
+	//! Move the nodes.
+	void move_nodes(Graph& G,NodeArray<NodeAttributes>& A,NodeArray<DPoint>& F);
+
+	//! Computes a new tight computational square-box.
+	/**
+	 * (Guaranteeing, that all midpoints are inside the square.)
+	 */
+	void update_boxlength_and_cornercoordinate(Graph& G,NodeArray<NodeAttributes>& A);
+
+	//! Describes the max. radius of a move in one time step, depending on the number of iterations.
+	double max_radius(int iter) {
+		return (iter == 1) ? boxlength/1000 : boxlength/5;
+	}
+
+	//! The average_ideal_edgelength for all edges is computed.
+	void set_average_ideal_edgelength(Graph& G,EdgeArray<EdgeAttributes>& E);
+
+	/**
+	 * Calculates the average force on each node in the actual iteration, which is
+	 * needed if StopCriterion is scThreshold() or scFixedIterationsOrThreshold().
+	 */
+	double get_average_forcevector_length (Graph& G, NodeArray<DPoint>& F);
+
+	/**
+	 * Depending on the direction of \a last_node_movement[\a v], the length of the next
+	 * displacement of node \a v is restricted.
+	 */
+	void prevent_oscilations(
+		Graph& G,
+		NodeArray<DPoint>& F,
+		NodeArray<DPoint>&
+		last_node_movement,
+		int iter);
+
+	//! Calculates the angle between \a PQ and \a PS in [0,2pi).
+	double angle(DPoint& P, DPoint& Q, DPoint& R);
+
+	//! \a last_node_movement is initialized to \a F (used after first iteration).
+	void init_last_node_movement(
+		Graph& G,
+		NodeArray<DPoint>& F,
+		NodeArray<DPoint>& last_node_movement);
+
+	/**
+	 * If resizeDrawing is true, the drawing is adapted to the ideal average
+	 * edge length by shrinking respectively expanding the drawing area.
+	 */
+	void adapt_drawing_to_ideal_average_edgelength(
+		Graph& G,
+		NodeArray<NodeAttributes>& A,
+		EdgeArray<EdgeAttributes>& E);
+
+	/**
+	 * The force is restricted to have values within the comp. box (needed for
+	 * exception handling, if the force is too large for further calculations).
+	 */
+	void restrict_force_to_comp_box(DPoint& force) {
+		double x_min = down_left_corner.m_x;
+		double x_max = down_left_corner.m_x+boxlength;
+		double y_min = down_left_corner.m_y;
+		double y_max = down_left_corner.m_y+boxlength;
+		if (force.m_x < x_min )
+			force.m_x = x_min;
+		else if (force.m_x > x_max )
+			force.m_x = x_max;
+		if (force.m_y < y_min )
+			force.m_y = y_min;
+		else if (force.m_y > y_max )
+			force.m_y = y_max;
+	}
+
+
+	//------------------- functions for analytic information -------------------------
+
+	//! Sets time_total to zero.
+	void init_time() { time_total = 0; }
+
+    void fixTwistedSplits(Graph &G, NodeArray<NodeAttributes>& A);
+    std::vector<ogdf::node> getAdjacentNodes(ogdf::node v);
+    std::vector<ogdf::node> getAdjacentNodesExcluding(ogdf::node v, ogdf::node ex);
+    void followNodesUntilBranch(ogdf::node start, ogdf::node first,
+                                ogdf::node * finish, std::vector<ogdf::node> * path, int * steps);
+};
+
+} //end namespace ogdf
+
+#endif
+
diff --git a/ogdf/energybased/MAARPacking.cpp b/ogdf/energybased/MAARPacking.cpp
new file mode 100644
index 0000000..cff4bba
--- /dev/null
+++ b/ogdf/energybased/MAARPacking.cpp
@@ -0,0 +1,473 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class MAARPacking (used by FMMMLayout).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "MAARPacking.h"
+#include "numexcept.h"
+#include "FMMMLayout.h"
+
+namespace ogdf {
+
+MAARPacking::MAARPacking()
+{
+	area_width = 0;
+	area_height = 0;
+}
+
+
+MAARPacking::~MAARPacking() { }
+
+
+void MAARPacking::pack_rectangles_using_Best_Fit_strategy(
+	List<Rectangle>& R,
+	double aspect_ratio,
+	int presort,
+    double& aspect_ratio_area,
+    double& bounding_rectangles_area)
+{
+	ListIterator<Rectangle> rect_item;
+	List<PackingRowInfo> P; //represents the packing of the rectangles
+	List<ListIterator <PackingRowInfo> > row_of_rectangle; //stores for each rectangle
+	//r at pos. i in R the ListIterator of the row in P
+	//where r is placed (at pos i in row_of_rectangle)
+	List<ListIterator<Rectangle> > rectangle_order;//holds the order in which the
+	//rectangles are touched
+	//in R and its total width
+
+	if(presort == FMMMLayout::psDecreasingHeight)
+		presort_rectangles_by_height(R);
+	else if (presort == FMMMLayout::psDecreasingWidth)
+		presort_rectangles_by_width(R);
+    else if (presort == FMMMLayout::psDecreasingArea)
+        presort_rectangles_by_area(R);
+
+    double fullWidth = 0;
+    double widestRect = 0.0;
+    for(rect_item = R.begin(); rect_item.valid(); ++rect_item) {
+        double rectWidth =  (*rect_item).get_width();
+        fullWidth += rectWidth;
+        widestRect = std::max(widestRect, rectWidth);
+    }
+    double secondWidestRect = 0.0;
+    for(rect_item = R.begin(); rect_item.valid(); ++rect_item) {
+        double rectWidth =  (*rect_item).get_width();
+        if (rectWidth < widestRect)
+            secondWidestRect = std::max(secondWidestRect, rectWidth);
+    }
+
+    double wrapWidth;
+
+    // If there's only one rectangle, then our job is easy: the wrap width is its width.
+    if (secondWidestRect == 0.0)
+        wrapWidth = widestRect;
+
+    // If the widest rectangle is much wider than the second widest, we again use the widest as the wrap width. This
+    // is largely for bacterial genome cases, where there will be one very large component and many small ones. In
+    // such a case, it looks weird for the rows of small ones to extend past the big one, regardless of the aspect
+    // ratio.
+    else if (widestRect / secondWidestRect > 5.0)
+        wrapWidth = widestRect;
+
+    // If neither of the above two cases apply, then we binary search our way to a wrap width which brings us closest
+    // to the desired aspect ratio.
+    else {
+        wrapWidth = fullWidth;
+        double fullWidthAspectRatio = getAspectRatio(R, fullWidth);
+        double bestAspectRatio = fullWidthAspectRatio;
+        double bestAgreement = getAspectRatioAgreement(aspect_ratio, fullWidthAspectRatio);
+
+        if (fullWidthAspectRatio > aspect_ratio) {
+            double left = 0.0;
+            double right = fullWidth;
+            while (true) {
+                double mid = (left + right) / 2.0;
+                double midAspectRatio = getAspectRatio(R, mid);
+
+                if (midAspectRatio == aspect_ratio) { // Exact match! (unlikely)
+                    bestAspectRatio = midAspectRatio;
+                    wrapWidth = mid;
+                    break;
+                }
+                else if (midAspectRatio > aspect_ratio)
+                    right = mid;
+                else // midAspectRatio < aspect_ratio
+                    left = mid;
+
+                // We can't let the wrap width become less than the widest rectangle.
+                if (wrapWidth < widestRect) {
+                    wrapWidth = widestRect;
+                    break;
+                }
+
+                double agreement = getAspectRatioAgreement(aspect_ratio, getAspectRatio(R, mid));
+
+                // If the value hasn't changed, then it's not going to get any better.
+                if (agreement == bestAgreement)
+                    break;
+
+                if (agreement > bestAgreement) {
+                    bestAspectRatio = midAspectRatio;
+                    bestAgreement = agreement;
+                    wrapWidth = mid;
+                }
+
+                // No point in continuing too long.
+                if (right - left < 1.0)
+                    break;
+            }
+        }
+    }
+
+	//init rectangle_order
+	for(rect_item = R.begin(); rect_item.valid(); ++rect_item)
+		rectangle_order.pushBack(rect_item);
+
+    // Now we know the wrapping width so we can position the rectangles in rows.
+    double widthOfCurrentRow = 0.0;
+	for(rect_item = R.begin(); rect_item.valid(); ++rect_item)
+	{
+        Rectangle r = *rect_item;
+        double rectWidth = r.get_width();
+        if (P.empty() || widthOfCurrentRow + rectWidth > wrapWidth || rectWidth > wrapWidth)
+        {
+            B_F_insert_rectangle_in_new_row(r,P,row_of_rectangle);
+            aspect_ratio_area = calculate_aspect_ratio_area(r.get_width(),r.get_height(),
+                aspect_ratio);
+            widthOfCurrentRow = rectWidth;
+		}
+        else // Insert in current row.
+        {
+            ListIterator<PackingRowInfo> B_F_item = row_of_rectangle.back();
+            B_F_insert_rectangle(r,P,row_of_rectangle,B_F_item);
+            widthOfCurrentRow += rectWidth;
+		}
+	}
+	export_new_rectangle_positions(P,row_of_rectangle,rectangle_order);
+	bounding_rectangles_area = calculate_bounding_rectangles_area(R);
+}
+
+
+double MAARPacking::getAspectRatio(List<Rectangle>& R, double wrappingWidth) {
+    double width = 0.0, height = 0.0;
+    double rowWidth = 0.0, rowHeight = 0.0;
+    for(ListIterator<Rectangle> rect_item = R.begin(); rect_item.valid(); ++rect_item) {
+        double rectWidth = (*rect_item).get_width();
+        double rectHeight = (*rect_item).get_height();
+
+        // If the rectangle fits in this row, it goes in this row.
+        if (rowWidth + rectWidth <= wrappingWidth) {
+            rowWidth += rectWidth;
+            rowHeight = std::max(rowHeight, rectHeight);
+        }
+
+        // Otherwise, it goes in a new row.
+        else {
+            width = std::max(width, rowWidth);
+            height += rowHeight;
+            rowWidth = rectWidth;
+            rowHeight = rectHeight;
+        }
+    }
+    width = std::max(width, rowWidth);
+    height += rowHeight;
+    if (height > 0.0)
+        return width / height;
+    else
+        return 1.0;
+}
+
+
+double MAARPacking::getAspectRatioAgreement(double ar1, double ar2) {
+    if (ar1 == 0.0 && ar2 == 0.0)
+        return 1.0;
+    return std::min(ar1, ar2) / std::max(ar1, ar2);
+}
+
+
+inline void MAARPacking::presort_rectangles_by_height(List<Rectangle>& R)
+{
+	RectangleComparerHeight comp_height;
+	R.quicksort(comp_height);
+}
+
+
+inline void MAARPacking::presort_rectangles_by_width(List<Rectangle>& R)
+{
+	RectangleComparerWidth comp_width;
+	R.quicksort(comp_width);
+}
+
+
+inline void MAARPacking::presort_rectangles_by_area(List<Rectangle>& R)
+{
+    RectangleComparerArea comp_area;
+    R.quicksort(comp_area);
+}
+
+
+void MAARPacking::B_F_insert_rectangle_in_new_row(
+	Rectangle r,
+	List<PackingRowInfo>& P,
+    List <ListIterator<PackingRowInfo> >&row_of_rectangle)
+{
+	PackingRowInfo p;
+
+	//create new empty row and insert r into this row of P
+	p.set_max_height(r.get_height());
+	p.set_total_width(r.get_width());
+	p.set_row_index(P.size());
+	P.pushBack(p);
+
+	//remember in which row of P r is placed by updating row_of_rectangle
+	row_of_rectangle.pushBack(P.rbegin());
+
+	//update area_height,area_width
+	area_width = max(r.get_width(),area_width);
+    area_height += r.get_height();
+}
+
+
+ListIterator<PackingRowInfo> MAARPacking::find_Best_Fit_insert_position(
+	ListIterator<Rectangle> rect_item,
+	double aspect_ratio,
+	double& aspect_ratio_area,
+	PQueue& total_width_of_row)
+{
+	numexcept N;
+	double area_2;
+	Rectangle r = *rect_item;
+
+    better_tipp_rectangle_in_new_row(r,aspect_ratio,aspect_ratio_area);
+
+	ListIterator<PackingRowInfo> B_F_item = total_width_of_row.find_min();
+	PackingRowInfo B_F_row = *B_F_item;
+    better_tipp_rectangle_in_this_row(r,aspect_ratio,B_F_row,area_2);
+
+	if((area_2 <= aspect_ratio_area) || N.nearly_equal(aspect_ratio_area,area_2))
+	{
+		aspect_ratio_area = area_2;
+        return B_F_item;
+	}
+    else
+        return NULL;
+}
+
+
+void MAARPacking::B_F_insert_rectangle(
+	Rectangle r,
+	List<PackingRowInfo>& P,
+	List<ListIterator<PackingRowInfo> >&row_of_rectangle,
+    ListIterator<PackingRowInfo> B_F_item)
+{
+	ListIterator<PackingRowInfo> null = NULL;
+	if (B_F_item == null) //insert into a new row
+        B_F_insert_rectangle_in_new_row(r,P,row_of_rectangle);
+	else //insert into an existing row
+	{
+		double old_max_height;
+
+		//update P[B_F_item]
+		PackingRowInfo p = *B_F_item;
+		old_max_height = p.get_max_height();
+		p.set_max_height(max(old_max_height,r.get_height()));
+		p.set_total_width(p.get_total_width()+r.get_width());
+		*B_F_item = p;
+
+		//updating row_of_rectangle
+		row_of_rectangle.pushBack(B_F_item);
+
+		//update area_height,area_width
+		area_width = max(area_width,p.get_total_width());
+		area_height = max(area_height,area_height-old_max_height+r.get_height());
+	}
+}
+
+
+
+void MAARPacking::export_new_rectangle_positions(
+	List<PackingRowInfo>& P,
+	List<ListIterator<PackingRowInfo> >& row_of_rectangle,
+	List<ListIterator<Rectangle> >& rectangle_order)
+{
+	int i;
+	Rectangle r;
+	PackingRowInfo p,p_pred;
+	DPoint new_dlc_pos;
+	double new_x,new_y;
+	Array<double> row_y_min (P.size()); //stores the min. y-coordinates for each row in P
+	Array<double> act_row_x_max (P.size()); //stores the actual rightmost x-coordinate
+	//for each row in P
+	//ListIterator< ListIterator<PackingRowInfo> > row_item;
+	ListIterator<PackingRowInfo>  row_item;
+	ListIterator<Rectangle> R_item;
+	ListIterator<ListIterator<Rectangle> > RR_item;
+	ListIterator<ListIterator<PackingRowInfo> > Rrow_item;
+
+	//init act_row_x_max;
+	for(i = 0; i<P.size();i++)
+		act_row_x_max[i] = 0;
+
+	//calculate minimum heights of each row
+	for(row_item = P.begin(); row_item.valid(); ++row_item)
+	{
+		if (row_item == P.begin())
+			row_y_min[0] = 0;
+		else
+		{
+			p = *row_item;
+			p_pred =  *(P.cyclicPred(row_item));
+			row_y_min[p.get_row_index()] = row_y_min[p.get_row_index()-1]+
+				p_pred.get_max_height();
+		}
+	}
+
+	//calculate for each rectangle its new down left corner coordinate
+	Rrow_item = row_of_rectangle.begin();
+
+	for(RR_item = rectangle_order.begin(); RR_item.valid(); ++RR_item)
+	{
+		R_item = *RR_item;
+		r = *R_item;
+		row_item = *Rrow_item;
+		p = *row_item;
+		new_x = act_row_x_max[p.get_row_index()];
+		act_row_x_max[p.get_row_index()] += r.get_width();
+		new_y = row_y_min[p.get_row_index()]+ (p.get_max_height()-r.get_height())/2;
+
+		new_dlc_pos.m_x = new_x;
+		new_dlc_pos.m_y = new_y;
+		r.set_new_dlc_position(new_dlc_pos);
+		*R_item = r;
+
+		if(Rrow_item != row_of_rectangle.rbegin())
+			Rrow_item = row_of_rectangle.cyclicSucc(Rrow_item);
+	}
+}
+
+
+inline double MAARPacking::calculate_bounding_rectangles_area(List<Rectangle>& R)
+{
+	double area = 0;
+	Rectangle r;
+
+	forall_listiterators(Rectangle,r_it,R)
+		area += (*r_it).get_width() * (*r_it).get_height();
+
+	return area;
+}
+
+
+inline double MAARPacking::calculate_aspect_ratio_area(
+	double width,
+	double height,
+	double aspect_ratio)
+{
+	double ratio = width/height;
+
+	if(ratio < aspect_ratio) //scale width
+		return ( width * height * (aspect_ratio/ratio));
+	else //scale height
+		return ( width * height * (ratio/aspect_ratio));
+}
+
+
+bool MAARPacking::better_tipp_rectangle_in_new_row(
+	Rectangle r,
+	double aspect_ratio,
+	double& best_area)
+{
+    double height,width;
+	bool rotate = false;
+
+	//first try: new row insert position
+	width  = max(area_width,r.get_width());
+	height = area_height + r.get_height();
+	best_area  = calculate_aspect_ratio_area(width,height,aspect_ratio);
+
+	return rotate;
+}
+
+
+bool MAARPacking::better_tipp_rectangle_in_this_row(
+	Rectangle r,
+	double aspect_ratio,
+	PackingRowInfo B_F_row,
+	double& best_area)
+{
+    double height,width;
+	bool rotate = false;
+
+	//first try: BEST_FIT insert position
+	width  = max(area_width,B_F_row.get_total_width()+r.get_width());
+	height = max(area_height, area_height-B_F_row.get_max_height()+r.get_height());
+	best_area   = calculate_aspect_ratio_area(width,height,aspect_ratio);
+
+	return rotate;
+}
+
+
+inline Rectangle MAARPacking::tipp_over(ListIterator<Rectangle> rect_item)
+{
+	Rectangle r = *rect_item;
+	Rectangle r_tipped_over = r;
+	DPoint tipped_dlc;
+
+	if(r.is_tipped_over() == false)
+	{//tipp old_dlc over
+		tipped_dlc.m_x = r.get_old_dlc_position().m_y*(-1)-r.get_height();
+		tipped_dlc.m_y = r.get_old_dlc_position().m_x;
+	}
+	else
+	{//tipp old_dlc back;
+		tipped_dlc.m_x = r.get_old_dlc_position().m_y;
+		tipped_dlc.m_y = r.get_old_dlc_position().m_x*(-1)-r.get_width();
+	}
+	r_tipped_over.set_old_dlc_position(tipped_dlc);
+	r_tipped_over.set_width(r.get_height());
+	r_tipped_over.set_height(r.get_width());
+	r_tipped_over.tipp_over();
+	*rect_item = r_tipped_over;
+
+	return r_tipped_over;
+}
+
+}//namespace ogdf
diff --git a/ogdf/energybased/MAARPacking.h b/ogdf/energybased/MAARPacking.h
new file mode 100644
index 0000000..6147540
--- /dev/null
+++ b/ogdf/energybased/MAARPacking.h
@@ -0,0 +1,162 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class MAARPacking (used by FMMMLayout).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_MAAR_PACKING_H
+#define OGDF_MAAR_PACKING_H
+
+#include "PackingRowInfo.h"
+#include "Rectangle.h"
+#include "Set.h"
+#include "../basic/List.h"
+#include "PQueue.h"
+
+namespace ogdf {
+
+	class MAARPacking
+	{
+		//data structure for packing rectangles within an area of a desired aspect ratio
+		//without overlappings; optimization goal: to minimize the used aspect ratio area
+
+	public:
+
+		MAARPacking();     //constructor
+		~MAARPacking();    //destructor
+
+		//The rectangles in R are packed using the First Fit tiling stratey (precisely the
+		//new down left corner coordinate of each rectangle is calculated and stored in R).
+		//The aspect ratio area and the area of the bounding rectangles are calculated,
+		//too.
+        void pack_rectangles_using_Best_Fit_strategy(List<Rectangle>& R, double
+            aspect_ratio, int presort, double&
+            aspect_ratio_area, double&
+            bounding_rectangles_area);
+
+	private:
+
+
+		double area_height; //total height of the packing area
+		double area_width;  //total width of the packing area
+
+
+		//Sorts elemets of R with momotonously dedreasing height.
+		void presort_rectangles_by_height(List<Rectangle>& R);
+
+		//Sorts elemets of R with momotonously decreasing width.
+		void presort_rectangles_by_width(List<Rectangle>& R);
+
+        //Sorts elemets of R with momotonously decreasing area.
+        void presort_rectangles_by_area(List<Rectangle>& R);
+
+		//Creates a new empty row in P and inserts r into this row (by updating P,
+		//row_of_rectangle and total_width_of_row).
+        void  B_F_insert_rectangle_in_new_row(Rectangle r, List<PackingRowInfo>& P, List
+            <ListIterator<PackingRowInfo> >&
+            row_of_rectangle);
+
+
+		//Finds the Best Fit insert positions of *rect_item and returns the
+		//corresp. ListIterator in P or NULL (indicating that a new row has
+		//to be created in P); aspect_ratio_area stores the used aspect ratio area of
+		//the drawing.
+		ListIterator<PackingRowInfo> find_Best_Fit_insert_position(
+			ListIterator<Rectangle> rect_item,
+			double aspect_ratio,
+			double& aspect_ratio_area,
+			PQueue& total_width_of_row);
+
+
+		//Inserts r into the row with corresponding ListIterator B_F_item and updates
+		//total_width_of_row.
+        void B_F_insert_rectangle(Rectangle r, List<PackingRowInfo>& P, List
+            <ListIterator
+            <PackingRowInfo> >& row_of_rectangle, ListIterator
+            <PackingRowInfo> B_F_item);
+
+
+		//The information in P and row_of_rectangle are used to generate the new down left
+		//coordinates of the rectangles in R (rectangle_order holds the order in which
+		//the rectangles of R have to be processed.
+		void  export_new_rectangle_positions(List<PackingRowInfo>& P,List<ListIterator
+			<PackingRowInfo> >&
+			row_of_rectangle,List<ListIterator
+			<Rectangle> >& rectangle_order);
+
+		//Returns the area of the bounding rectangles in R.
+		double calculate_bounding_rectangles_area(List<Rectangle>&R);
+
+		//Calculate the aspect ratio area of a rectangle with width w and height h and the
+		//given aspect ratio r.
+		double calculate_aspect_ratio_area(double w,double h,double r);
+
+		//Returns true if the aspect_ratio_area of the acual packing becomes better, when
+		//tipping r over bevore inserting it into the new row. best_area holds the aspect
+		//ratio area of the best of the two insertion alternatives.
+        bool better_tipp_rectangle_in_new_row(Rectangle r,double aspect_ratio,
+            double& best_area);
+
+		//Returns true if the aspect_ratio_area of the acual packing becomes better, when
+		//tipping r over bevore inserting it into the existing row B_F_row. best_area holds
+		//the aspect ratio area of the best of the two insertion alternatives.
+        bool better_tipp_rectangle_in_this_row(Rectangle r,double aspect_ratio,
+            PackingRowInfo B_F_row,double& best_area);
+
+		//Tipps *rect_item over, by newly calculatting its width, height, and old_dlc
+		//values (Coordinates of the underlying connected subgraph are not recaculated
+		//here!!!). The new values are saved in R[rect_item] and are returned.
+		Rectangle tipp_over(ListIterator<Rectangle> rect_item);
+
+        double getAspectRatio(List<Rectangle>& R, double wrappingWidth);
+        double getAspectRatioAgreement(double ar1, double ar2);
+
+	};
+
+}//namespace ogdf
+#endif
+
+
diff --git a/ogdf/energybased/Multilevel.cpp b/ogdf/energybased/Multilevel.cpp
new file mode 100644
index 0000000..7fccbae
--- /dev/null
+++ b/ogdf/energybased/Multilevel.cpp
@@ -0,0 +1,885 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class Multlevel (used by FMMMLayout).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "Multilevel.h"
+#include "Set.h"
+#include "Node.h"
+#include "../basic/Array.h"
+#include "../basic/Math.h"
+#include "../basic/simple_graph_alg.h"
+#include "FMMMLayout.h"
+
+
+namespace ogdf {
+
+void Multilevel::create_multilevel_representations(
+	Graph& G,
+	NodeArray<NodeAttributes>& A,
+	EdgeArray<EdgeAttributes>& E,
+	int rand_seed,
+	int galaxy_choice,
+	int min_Graph_size,
+	int random_tries,
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray <NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int & max_level)
+{
+	//make initialisations;
+	srand(rand_seed);
+	G_mult_ptr[0] = &G; //init graph at level 0 to the original undirected simple
+	A_mult_ptr[0] = &A; //and loopfree connected graph G/A/E
+	E_mult_ptr[0] = &E;
+
+	int bad_edgenr_counter = 0;
+	int act_level = 0;
+	Graph* act_Graph_ptr = G_mult_ptr[0];
+
+	while( (act_Graph_ptr->numberOfNodes() > min_Graph_size) &&
+		edgenumbersum_of_all_levels_is_linear(G_mult_ptr,act_level,bad_edgenr_counter) )
+	{
+		Graph* G_new = new (Graph);
+		NodeArray<NodeAttributes>* A_new = OGDF_NEW NodeArray<NodeAttributes>;
+		EdgeArray<EdgeAttributes>* E_new = OGDF_NEW EdgeArray<EdgeAttributes>;
+		G_mult_ptr[act_level+1] = G_new;
+		A_mult_ptr[act_level+1] = A_new;
+		E_mult_ptr[act_level+1] = E_new;
+
+		init_multilevel_values(G_mult_ptr,A_mult_ptr,E_mult_ptr,act_level);
+		partition_galaxy_into_solar_systems(G_mult_ptr,A_mult_ptr,E_mult_ptr,rand_seed,
+			galaxy_choice,random_tries,act_level);
+		collaps_solar_systems(G_mult_ptr,A_mult_ptr,E_mult_ptr,act_level);
+
+		act_level++;
+		act_Graph_ptr = G_mult_ptr[act_level];
+	}
+	max_level = act_level;
+}
+
+
+bool Multilevel::edgenumbersum_of_all_levels_is_linear(
+	Array<Graph*> &G_mult_ptr,
+	int act_level,
+	int& bad_edgenr_counter)
+{
+	if(act_level == 0)
+		return true;
+	else
+	{
+		if(G_mult_ptr[act_level]->numberOfEdges()<=
+			0.8 * double (G_mult_ptr[act_level-1]->numberOfEdges()))
+			return true;
+		else if(bad_edgenr_counter < 5)
+		{
+			bad_edgenr_counter++;
+			return true;
+		}
+		else
+			return false;
+	}
+}
+
+
+inline void  Multilevel::init_multilevel_values(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int level)
+{
+	node v;
+	forall_nodes(v,*G_mult_ptr[level])
+		(*A_mult_ptr[level])[v].init_mult_values();
+
+	edge e;
+	forall_edges(e,*G_mult_ptr[level])
+		(*E_mult_ptr[level])[e].init_mult_values();
+}
+
+
+inline void Multilevel::partition_galaxy_into_solar_systems(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int rand_seed,
+	int galaxy_choice,
+	int random_tries,
+	int act_level)
+{
+	create_suns_and_planets(G_mult_ptr, A_mult_ptr, E_mult_ptr, rand_seed, galaxy_choice,
+		random_tries, act_level);
+	create_moon_nodes_and_pm_nodes(G_mult_ptr, A_mult_ptr, E_mult_ptr, act_level);
+}
+
+
+void Multilevel::create_suns_and_planets(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int rand_seed,
+	int galaxy_choice,
+	int random_tries,
+	int act_level)
+{
+	Set Node_Set;
+	node v, sun_node, planet_node, newNode, pos_moon_node;
+	edge sun_edge, e;
+	double dist_to_sun;
+	List<node> planet_nodes;
+	List<node> sun_nodes;
+
+	//make initialisations
+	sun_nodes.clear();
+	Node_Set.set_seed(rand_seed); //set seed for random number generator
+	forall_nodes(v,*G_mult_ptr[act_level])
+		if(act_level == 0) (*A_mult_ptr[act_level])[v].set_mass(1);
+	if(galaxy_choice == FMMMLayout::gcUniformProb)
+		Node_Set.init_node_set(*G_mult_ptr[act_level]);
+	else //galaxy_choice != gcUniformProb in FMMMLayout
+		Node_Set.init_node_set(*G_mult_ptr[act_level],*A_mult_ptr[act_level]);
+
+
+	while (!Node_Set.empty_node_set())
+	{//while
+		//randomly select a sun node
+		planet_nodes.clear();
+		if(galaxy_choice == FMMMLayout::gcUniformProb)
+			sun_node = Node_Set.get_random_node();
+		else if (galaxy_choice == FMMMLayout::gcNonUniformProbLowerMass)
+			sun_node = Node_Set.get_random_node_with_lowest_star_mass(random_tries);
+		else //galaxy_choice == FMMMLayout::gcNonUniformProbHigherMass
+			sun_node = Node_Set.get_random_node_with_highest_star_mass(random_tries);
+		sun_nodes.pushBack(sun_node);
+
+		//create new node at higher level that represents the collapsed solar_system
+		newNode = G_mult_ptr[act_level+1]->newNode();
+
+		//update information for sun_node
+		(*A_mult_ptr[act_level])[sun_node].set_higher_level_node(newNode);
+		(*A_mult_ptr[act_level])[sun_node].set_type(1);
+		(*A_mult_ptr[act_level])[sun_node].set_dedicated_sun_node(sun_node);
+		(*A_mult_ptr[act_level])[sun_node].set_dedicated_sun_distance(0);
+
+		//update information for planet_nodes
+		forall_adj_edges(sun_edge,sun_node)
+		{
+			dist_to_sun = (*E_mult_ptr[act_level])[sun_edge].get_length();
+			if (sun_edge->source() != sun_node)
+				planet_node = sun_edge->source();
+			else
+				planet_node =  sun_edge->target();
+			(*A_mult_ptr[act_level])[planet_node].set_type(2);
+			(*A_mult_ptr[act_level])[planet_node].set_dedicated_sun_node(sun_node);
+			(*A_mult_ptr[act_level])[planet_node].set_dedicated_sun_distance(dist_to_sun);
+			planet_nodes.pushBack(planet_node);
+		}
+
+		//delete all planet_nodes and possible_moon_nodes from Node_Set
+
+		ListConstIterator<node> planet_node_ptr;
+		//forall_listiterators(node,planet_node_ptr,planet_nodes)
+		for(planet_node_ptr = planet_nodes.begin(); planet_node_ptr.valid(); ++planet_node_ptr)
+			if(!Node_Set.is_deleted(*planet_node_ptr))
+				Node_Set.delete_node(*planet_node_ptr);
+
+		for(planet_node_ptr = planet_nodes.begin(); planet_node_ptr.valid(); ++planet_node_ptr)
+			//forall_listiterators(node,planet_node_ptr,planet_nodes)
+		{
+			forall_adj_edges(e,*planet_node_ptr)
+			{
+				if(e->source() == *planet_node_ptr)
+					pos_moon_node = e->target();
+				else
+					pos_moon_node = e->source();
+				if(!Node_Set.is_deleted(pos_moon_node))
+					Node_Set.delete_node(pos_moon_node);
+			}
+		}
+	}//while
+
+	//init *A_mult_ptr[act_level+1] and set NodeAttributes information for new nodes
+	A_mult_ptr[act_level+1]->init(*G_mult_ptr[act_level+1]);
+	forall_listiterators(node, sun_node_ptr, sun_nodes)
+	{
+		newNode = (*A_mult_ptr[act_level])[*sun_node_ptr].get_higher_level_node();
+		(*A_mult_ptr[act_level+1])[newNode].set_NodeAttributes((*A_mult_ptr[act_level])
+			[*sun_node_ptr].get_width(),
+			(*A_mult_ptr[act_level])
+			[*sun_node_ptr].get_height(),
+			(*A_mult_ptr[act_level])
+			[*sun_node_ptr].get_position(),
+			*sun_node_ptr,NULL);
+		(*A_mult_ptr[act_level+1])[newNode].set_mass(0);
+	}
+}
+
+
+void Multilevel::create_moon_nodes_and_pm_nodes(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int act_level)
+{
+	edge e;
+    node v, nearest_neighbour_node = node(), neighbour_node, dedicated_sun_node;
+    double dist_to_nearest_neighbour = 0, dedicated_sun_distance;
+	bool first_adj_edge;
+	int neighbour_type;
+    edge moon_edge = edge();
+
+	forall_nodes(v,*G_mult_ptr[act_level])
+		if((*A_mult_ptr[act_level])[v].get_type() == 0) //a moon node
+		{//forall
+			//find nearest neighbour node
+			first_adj_edge = true;
+			forall_adj_edges(e,v)
+			{//forall2
+				if(v == e->source())
+					neighbour_node = e->target();
+				else
+					neighbour_node = e->source();
+				neighbour_type = (*A_mult_ptr[act_level])[neighbour_node].get_type();
+				if( (neighbour_type == 2) || (neighbour_type == 3) )
+				{//if_1
+					if(first_adj_edge)
+					{//if
+						first_adj_edge = false;
+						moon_edge = e;
+						dist_to_nearest_neighbour = (*E_mult_ptr[act_level])[e].get_length();
+						nearest_neighbour_node =  neighbour_node;
+					}//if
+					else if(dist_to_nearest_neighbour >(*E_mult_ptr[act_level])[e].get_length())
+					{//else
+						moon_edge = e;
+						dist_to_nearest_neighbour = (*E_mult_ptr[act_level])[e].get_length();
+						nearest_neighbour_node = neighbour_node;
+					}//else
+				}//if_1
+			}//forall2
+			//find dedic. solar system for v and update information in *A_mult_ptr[act_level]
+			//and *E_mult_ptr[act_level]
+
+			(*E_mult_ptr[act_level])[moon_edge].make_moon_edge(); //mark this edge
+			dedicated_sun_node = (*A_mult_ptr[act_level])[nearest_neighbour_node].
+				get_dedicated_sun_node();
+			dedicated_sun_distance = dist_to_nearest_neighbour + (*A_mult_ptr[act_level])
+				[nearest_neighbour_node].get_dedicated_sun_distance();
+			(*A_mult_ptr[act_level])[v].set_type(4);
+			(*A_mult_ptr[act_level])[v].set_dedicated_sun_node(dedicated_sun_node);
+			(*A_mult_ptr[act_level])[v].set_dedicated_sun_distance(dedicated_sun_distance);
+			(*A_mult_ptr[act_level])[v].set_dedicated_pm_node(nearest_neighbour_node);
+
+			//identify nearest_neighbour_node as a pm_node and update its information
+
+			(*A_mult_ptr[act_level])[nearest_neighbour_node].set_type(3);
+			(*A_mult_ptr[act_level])[nearest_neighbour_node].
+				get_dedicated_moon_node_List_ptr()->pushBack(v);
+		}//forall
+}
+
+
+inline void Multilevel::collaps_solar_systems(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int act_level)
+{
+	EdgeArray<double> new_edgelength;
+	calculate_mass_of_collapsed_nodes(G_mult_ptr, A_mult_ptr, act_level);
+	create_edges_edgedistances_and_lambda_Lists(G_mult_ptr, A_mult_ptr, E_mult_ptr,
+		new_edgelength, act_level);
+	delete_parallel_edges_and_update_edgelength(G_mult_ptr, E_mult_ptr, new_edgelength,
+		act_level);
+}
+
+
+inline void Multilevel::calculate_mass_of_collapsed_nodes(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray <NodeAttributes>*> &A_mult_ptr,
+	int act_level)
+{
+	node v;
+	node dedicated_sun,high_level_node;
+
+	forall_nodes(v,*G_mult_ptr[act_level])
+	{
+		dedicated_sun = (*A_mult_ptr[act_level])[v].get_dedicated_sun_node();
+		high_level_node =  (*A_mult_ptr[act_level])[dedicated_sun].get_higher_level_node();
+		(*A_mult_ptr[act_level+1])[high_level_node].set_mass((*A_mult_ptr[act_level+1])
+			[high_level_node].get_mass()+1);
+	}
+}
+
+
+void Multilevel::create_edges_edgedistances_and_lambda_Lists(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	EdgeArray<double>& new_edgelength,int
+	act_level)
+{
+	edge e, e_new;
+	node s_node, t_node;
+	node s_sun_node, t_sun_node;
+	node high_level_sun_s, high_level_sun_t;
+	double length_e, length_s_edge, length_t_edge, newlength;
+	double lambda_s, lambda_t;
+	List<edge> inter_solar_system_edges;
+
+	//create new edges at act_level+1 and create for each inter solar system edge  at
+	//act_level a link to its corresponding edge
+
+	forall_edges(e,*G_mult_ptr[act_level])
+	{//forall
+		s_node = e->source();
+		t_node = e->target();
+		s_sun_node =  (*A_mult_ptr[act_level])[s_node].get_dedicated_sun_node();
+		t_sun_node =  (*A_mult_ptr[act_level])[t_node].get_dedicated_sun_node();
+		if( s_sun_node != t_sun_node) //a inter solar system edge
+		{//if
+			high_level_sun_s = (*A_mult_ptr[act_level])[s_sun_node].get_higher_level_node();
+			high_level_sun_t = (*A_mult_ptr[act_level])[t_sun_node].get_higher_level_node();
+
+			//create new edge in *G_mult_ptr[act_level+1]
+			e_new = G_mult_ptr[act_level+1]->newEdge(high_level_sun_s,high_level_sun_t);
+			(*E_mult_ptr[act_level])[e].set_higher_level_edge(e_new);
+			inter_solar_system_edges.pushBack(e);
+		}//if
+	}//forall
+
+	//init new_edgelength calculate the values of new_edgelength and the lambda Lists
+
+	new_edgelength.init(*G_mult_ptr[act_level+1]);
+	forall_listiterators(edge, e_ptr, inter_solar_system_edges)
+	{//forall
+		s_node = (*e_ptr)->source();
+		t_node = (*e_ptr)->target();
+		s_sun_node =  (*A_mult_ptr[act_level])[s_node].get_dedicated_sun_node();
+		t_sun_node =  (*A_mult_ptr[act_level])[t_node].get_dedicated_sun_node();
+		length_e = (*E_mult_ptr[act_level])[*e_ptr].get_length();
+		length_s_edge =(*A_mult_ptr[act_level])[s_node].get_dedicated_sun_distance();
+		length_t_edge =(*A_mult_ptr[act_level])[t_node].get_dedicated_sun_distance();
+		newlength = length_s_edge + length_e + length_t_edge;
+
+		//set new edge_length in *G_mult_ptr[act_level+1]
+		e_new = (*E_mult_ptr[act_level])[*e_ptr].get_higher_level_edge();
+		new_edgelength[e_new] = newlength;
+
+		//create entries in lambda Lists
+		lambda_s = length_s_edge/newlength;
+		lambda_t = length_t_edge/newlength;
+		(*A_mult_ptr[act_level])[s_node].get_lambda_List_ptr()->pushBack(lambda_s);
+		(*A_mult_ptr[act_level])[t_node].get_lambda_List_ptr()->pushBack(lambda_t);
+		(*A_mult_ptr[act_level])[s_node].get_neighbour_sun_node_List_ptr()->pushBack(
+			t_sun_node);
+		(*A_mult_ptr[act_level])[t_node].get_neighbour_sun_node_List_ptr()->pushBack(
+			s_sun_node);
+	}//forall
+}
+
+
+void Multilevel::delete_parallel_edges_and_update_edgelength(
+	Array<Graph*> &G_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	EdgeArray<double>& new_edgelength,int
+	act_level)
+{
+	EdgeMaxBucketFunc get_max_index;
+	EdgeMinBucketFunc get_min_index;
+    edge e_act, e_save = 0;
+	Edge f_act;
+	List<Edge> sorted_edges;
+	Graph* Graph_ptr = G_mult_ptr[act_level+1];
+    int save_s_index = 0, save_t_index = 0, act_s_index, act_t_index;
+	int counter = 1;
+
+	//make *G_mult_ptr[act_level+1] undirected
+	makeSimpleUndirected(*G_mult_ptr[act_level+1]);
+
+	//sort the List sorted_edges
+	forall_edges(e_act,*Graph_ptr)
+	{
+		f_act.set_Edge(e_act,Graph_ptr);
+		sorted_edges.pushBack(f_act);
+	}
+
+	sorted_edges.bucketSort(0,Graph_ptr->numberOfNodes()-1,get_max_index);
+	sorted_edges.bucketSort(0,Graph_ptr->numberOfNodes()-1,get_min_index);
+
+	//now parallel edges are consecutive in sorted_edges
+	forall_listiterators(Edge, EdgeIterator,sorted_edges)
+	{//for
+		e_act = (*EdgeIterator).get_edge();
+		act_s_index = e_act->source()->index();
+		act_t_index = e_act->target()->index();
+
+		if(EdgeIterator != sorted_edges.begin())
+		{//if
+			if( (act_s_index == save_s_index && act_t_index == save_t_index) ||
+				(act_s_index == save_t_index && act_t_index == save_s_index) )
+			{
+				new_edgelength[e_save] += new_edgelength[e_act];
+				Graph_ptr->delEdge(e_act);
+				counter++;
+			}
+			else
+			{
+				if (counter > 1)
+				{
+					new_edgelength[e_save] /= counter;
+					counter = 1;
+				}
+				save_s_index = act_s_index;
+				save_t_index = act_t_index;
+				e_save = e_act;
+			}
+		}//if
+		else //first edge
+		{
+			save_s_index = act_s_index;
+			save_t_index = act_t_index;
+			e_save = e_act;
+		}
+	}//for
+
+	//treat special case (last edges were multiple edges)
+	if(counter >1)
+		new_edgelength[e_save] /= counter;
+
+	//init *E_mult_ptr[act_level+1] and import EdgeAttributes
+	E_mult_ptr[act_level+1]->init(*G_mult_ptr[act_level+1]);
+	forall_edges(e_act,*Graph_ptr)
+		(*E_mult_ptr[act_level+1])[e_act].set_length(new_edgelength[e_act]);
+}
+
+
+void Multilevel::find_initial_placement_for_level(
+	int level,
+	int init_placement_way,
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr)
+{
+	List<node> pm_nodes;
+	set_initial_positions_of_sun_nodes(level, G_mult_ptr, A_mult_ptr);
+	set_initial_positions_of_planet_and_moon_nodes(level, init_placement_way, G_mult_ptr,
+		A_mult_ptr, E_mult_ptr, pm_nodes);
+	set_initial_positions_of_pm_nodes(level, init_placement_way, A_mult_ptr,
+		E_mult_ptr, pm_nodes);
+}
+
+
+void Multilevel::set_initial_positions_of_sun_nodes(
+	int level,
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray <NodeAttributes>*> &A_mult_ptr)
+{
+	node v_high, v_act;
+	DPoint new_pos;
+	forall_nodes(v_high,*G_mult_ptr[level+1])
+	{
+		v_act = (*A_mult_ptr[level+1])[v_high].get_lower_level_node();
+		new_pos = (*A_mult_ptr[level+1])[v_high].get_position();
+		(*A_mult_ptr[level])[v_act].set_position(new_pos);
+		(*A_mult_ptr[level])[v_act].place();
+	}
+}
+
+
+void Multilevel::set_initial_positions_of_planet_and_moon_nodes(
+	int level,
+	int init_placement_way,
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	List<node>& pm_nodes)
+{
+	double lambda, dedicated_sun_distance;
+	int node_type;
+	node v, v_adj, dedicated_sun;
+	edge e;
+	DPoint new_pos,dedicated_sun_pos, adj_sun_pos;
+	List<DPoint> L;
+	ListIterator<double> lambdaIterator;
+
+	create_all_placement_sectors(G_mult_ptr,A_mult_ptr,E_mult_ptr,level);
+	forall_nodes(v,*G_mult_ptr[level])
+	{//for
+		node_type = (*A_mult_ptr[level])[v].get_type();
+		if(node_type == 3)
+			pm_nodes.pushBack(v);
+		else if(node_type == 2 || node_type == 4) //a planet_node or moon_node
+		{//else
+			L.clear();
+			dedicated_sun = (*A_mult_ptr[level])[v].get_dedicated_sun_node();
+			dedicated_sun_pos = (*A_mult_ptr[level])[dedicated_sun].get_position();
+			dedicated_sun_distance = (*A_mult_ptr[level])[v].get_dedicated_sun_distance();
+
+			if(init_placement_way == FMMMLayout::ipmAdvanced)
+			{
+				forall_adj_edges(e,v)
+				{
+					if(e->source() != v)
+						v_adj = e->source();
+					else
+						v_adj = e->target();
+					if( ( (*A_mult_ptr[level])[v].get_dedicated_sun_node() ==
+						(*A_mult_ptr[level])[v_adj].get_dedicated_sun_node() ) &&
+						( (*A_mult_ptr[level])[v_adj].get_type() != 1 ) &&
+						( (*A_mult_ptr[level])[v_adj].is_placed() ) )
+					{
+						new_pos = calculate_position(dedicated_sun_pos,(*A_mult_ptr[level])
+							[v_adj].get_position(),dedicated_sun_distance,
+							(*E_mult_ptr[level])[e].get_length());
+						L.pushBack(new_pos);
+					}
+				}
+			}
+			if ((*A_mult_ptr[level])[v].get_lambda_List_ptr()->empty())
+			{//special case
+				if(L.empty())
+				{
+					new_pos = create_random_pos(dedicated_sun_pos,(*A_mult_ptr[level])
+						[v].get_dedicated_sun_distance(),
+						(*A_mult_ptr[level])[v].get_angle_1(),
+						(*A_mult_ptr[level])[v].get_angle_2());
+					L.pushBack(new_pos);
+				}
+			}//special case
+			else
+			{//usual case
+				lambdaIterator = (*A_mult_ptr[level])[v].get_lambda_List_ptr()->begin();
+
+				forall_listiterators(node, adj_sun_ptr,*(*A_mult_ptr[level])[v].
+					get_neighbour_sun_node_List_ptr())
+				{
+					lambda = *lambdaIterator;
+					adj_sun_pos = (*A_mult_ptr[level])[*adj_sun_ptr].get_position();
+					new_pos = get_waggled_inbetween_position(dedicated_sun_pos,adj_sun_pos,
+						lambda);
+					L.pushBack(new_pos);
+					if(lambdaIterator != (*A_mult_ptr[level])[v].get_lambda_List_ptr()
+						->rbegin())
+						lambdaIterator = (*A_mult_ptr[level])[v].get_lambda_List_ptr()
+						->cyclicSucc(lambdaIterator);
+				}
+			}//usual case
+
+			(*A_mult_ptr[level])[v].set_position(get_barycenter_position(L));
+			(*A_mult_ptr[level])[v].place();
+		}//else
+	}//for
+}
+
+
+void Multilevel::create_all_placement_sectors(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int level)
+{
+	node v_high, w_high, sun_node, v, ded_sun;
+	edge e_high;
+	List<DPoint> adj_pos;
+    double angle_1 = 0.0, angle_2 = 0.0, act_angle_1, act_angle_2, next_angle, min_next_angle = 0.0;
+	DPoint start_pos, end_pos;
+	int MAX = 10; //the biggest of at most MAX random selected sectors is choosen
+	int steps;
+	ListIterator<DPoint> it, next_pos_ptr;
+	bool first_angle;
+
+
+	forall_nodes(v_high,(*G_mult_ptr[level+1]))
+	{//forall
+		//find pos of adjacent nodes
+		adj_pos.clear();
+		DPoint v_high_pos ((*A_mult_ptr[level+1])[v_high].get_x(),
+			(*A_mult_ptr[level+1])[v_high].get_y());
+		forall_adj_edges(e_high,v_high)
+			if(!(*E_mult_ptr[level+1])[e_high].is_extra_edge())
+			{
+				if(v_high == e_high->source())
+					w_high = e_high->target();
+				else
+					w_high = e_high->source();
+
+				DPoint w_high_pos ((*A_mult_ptr[level+1])[w_high].get_x(),
+					(*A_mult_ptr[level+1])[w_high].get_y());
+				adj_pos.pushBack(w_high_pos);
+			}
+			if(adj_pos.empty()) //easy case
+			{
+				angle_1 = 0;
+				angle_2 = 6.2831853;
+			}
+			else if(adj_pos.size() == 1) //special case
+			{
+				//create angle_1
+				start_pos = *adj_pos.begin();
+				DPoint x_parallel_pos (v_high_pos.m_x + 1, v_high_pos.m_y);
+				angle_1 = angle(v_high_pos,x_parallel_pos,start_pos);
+				//create angle_2
+				angle_2 = angle_1 + Math::pi;
+			}
+			else //usual case
+			{//else
+				steps = 1;
+				it = adj_pos.begin();
+				do
+				{
+					//create act_angle_1
+					start_pos = *it;
+					DPoint x_parallel_pos (v_high_pos.m_x + 1, v_high_pos.m_y);
+					act_angle_1 = angle(v_high_pos,x_parallel_pos,start_pos);
+					//create act_angle_2
+					first_angle = true;
+
+					for(next_pos_ptr = adj_pos.begin();next_pos_ptr.valid();++next_pos_ptr)
+					{
+						next_angle = angle(v_high_pos,start_pos,*next_pos_ptr);
+
+						if(start_pos != *next_pos_ptr && (first_angle || next_angle <
+							min_next_angle))
+						{
+							min_next_angle = next_angle;
+							first_angle = false;
+						}
+					}
+					act_angle_2 = act_angle_1 + min_next_angle;
+					if((it == adj_pos.begin())||((act_angle_2-act_angle_1)>(angle_2-angle_1)))
+					{
+						angle_1 = act_angle_1;
+						angle_2 = act_angle_2;
+					}
+					if(it != adj_pos.rbegin())
+						it = adj_pos.cyclicSucc(it);
+					steps++;
+				}
+				while((steps <= MAX) && (it != adj_pos.rbegin()));
+
+				if(angle_1 == angle_2)
+					angle_2 = angle_1 + Math::pi;
+			}//else
+
+			//import angle_1 and angle_2 to the dedicated suns at level level
+			sun_node = (*A_mult_ptr[level+1])[v_high].get_lower_level_node();
+			(*A_mult_ptr[level])[sun_node].set_angle_1(angle_1);
+			(*A_mult_ptr[level])[sun_node].set_angle_2(angle_2);
+	}//forall
+
+	//import the angle values from the values of the dedicated sun nodes
+	forall_nodes(v,*G_mult_ptr[level])
+	{
+		ded_sun = (*A_mult_ptr[level])[v].get_dedicated_sun_node();
+		(*A_mult_ptr[level])[v].set_angle_1((*A_mult_ptr[level])[ded_sun].get_angle_1());
+		(*A_mult_ptr[level])[v].set_angle_2((*A_mult_ptr[level])[ded_sun].get_angle_2());
+	}
+}
+
+
+void Multilevel::set_initial_positions_of_pm_nodes(
+	int level,
+	int init_placement_way,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	List<node>& pm_nodes)
+{
+	double moon_dist, sun_dist, lambda;
+	node v_adj, sun_node;
+	edge e;
+	DPoint sun_pos, moon_pos, new_pos, adj_sun_pos;
+	List<DPoint> L;
+	ListIterator<double> lambdaIterator;
+
+	forall_listiterators(node,v_ptr,pm_nodes)
+	{//forall
+		L.clear();
+		sun_node = (*A_mult_ptr[level])[*v_ptr].get_dedicated_sun_node();
+		sun_pos =  (*A_mult_ptr[level])[sun_node].get_position();
+		sun_dist = (*A_mult_ptr[level])[*v_ptr].get_dedicated_sun_distance();
+
+		if(init_placement_way == FMMMLayout::ipmAdvanced)
+		{//if
+			forall_adj_edges(e,*v_ptr)
+			{
+				if(e->source() != *v_ptr)
+					v_adj = e->source();
+				else
+					v_adj = e->target();
+				if( (!(*E_mult_ptr[level])[e].is_moon_edge()) &&
+					( (*A_mult_ptr[level])[*v_ptr].get_dedicated_sun_node() ==
+					(*A_mult_ptr[level])[v_adj].get_dedicated_sun_node() ) &&
+					( (*A_mult_ptr[level])[v_adj].get_type() != 1 ) &&
+					( (*A_mult_ptr[level])[v_adj].is_placed() ) )
+				{
+					new_pos = calculate_position(sun_pos,(*A_mult_ptr[level])[v_adj].
+						get_position(),sun_dist,(*E_mult_ptr[level])
+						[e].get_length());
+					L.pushBack(new_pos);
+				}
+			}
+		}//if
+		forall_listiterators(node, moon_node_ptr,*(*A_mult_ptr[level])[*v_ptr].
+			get_dedicated_moon_node_List_ptr())
+		{
+			moon_pos = (*A_mult_ptr[level])[*moon_node_ptr].get_position();
+			moon_dist =  (*A_mult_ptr[level])[*moon_node_ptr].get_dedicated_sun_distance();
+			lambda = sun_dist/moon_dist;
+			new_pos = get_waggled_inbetween_position(sun_pos,moon_pos,lambda);
+			L.pushBack(new_pos);
+		}
+
+		if (!(*A_mult_ptr[level])[*v_ptr].get_lambda_List_ptr()->empty())
+		{
+			lambdaIterator = (*A_mult_ptr[level])[*v_ptr].get_lambda_List_ptr()->begin();
+
+			forall_listiterators(node,adj_sun_ptr,*(*A_mult_ptr[level])[*v_ptr].
+				get_neighbour_sun_node_List_ptr())
+			{
+				lambda = *lambdaIterator;
+				adj_sun_pos = (*A_mult_ptr[level])[*adj_sun_ptr].get_position();
+				new_pos = get_waggled_inbetween_position(sun_pos,adj_sun_pos,lambda);
+				L.pushBack(new_pos);
+				if(lambdaIterator != (*A_mult_ptr[level])[*v_ptr].get_lambda_List_ptr()
+					->rbegin())
+					lambdaIterator = (*A_mult_ptr[level])[*v_ptr].get_lambda_List_ptr()
+					->cyclicSucc(lambdaIterator);
+			}
+		}
+
+		(*A_mult_ptr[level])[*v_ptr].set_position(get_barycenter_position(L));
+		(*A_mult_ptr[level])[*v_ptr].place();
+	}//forall
+}
+
+
+inline DPoint Multilevel::create_random_pos(DPoint center,double radius,double angle_1,
+	double angle_2)
+{
+	const int BILLION = 1000000000;
+	DPoint new_point;
+	double rnd = double(randomNumber(1,BILLION)+1)/(BILLION+2);//rand number in (0,1)
+	double rnd_angle = angle_1 +(angle_2-angle_1)*rnd;
+	double dx = cos(rnd_angle) * radius;
+	double dy = sin(rnd_angle) * radius;
+	new_point.m_x = center.m_x + dx ;
+	new_point.m_y = center.m_y + dy;
+	return new_point;
+}
+
+
+inline DPoint Multilevel::get_waggled_inbetween_position(DPoint s, DPoint t, double lambda)
+{
+	const double WAGGLEFACTOR = 0.05;
+	const int BILLION = 1000000000;
+	DPoint inbetween_point;
+	inbetween_point.m_x = s.m_x + lambda*(t.m_x - s.m_x);
+	inbetween_point.m_y = s.m_y + lambda*(t.m_y - s.m_y);
+	double radius = WAGGLEFACTOR * (t-s).norm();
+	double rnd = double(randomNumber(1,BILLION)+1)/(BILLION+2);//rand number in (0,1)
+	double rand_radius =  radius * rnd;
+	return create_random_pos(inbetween_point,rand_radius,0,6.2831853);
+}
+
+
+inline DPoint Multilevel::get_barycenter_position(List<DPoint>& L)
+{
+	DPoint sum (0,0);
+	DPoint barycenter;
+
+	forall_listiterators(DPoint, act_point_ptr,L)
+		sum = sum + (*act_point_ptr);
+	barycenter.m_x = sum.m_x/L.size();
+	barycenter.m_y = sum.m_y/L.size();
+	return barycenter;
+}
+
+
+inline DPoint Multilevel::calculate_position(DPoint P, DPoint Q, double dist_P, double dist_Q)
+{
+	double dist_PQ = (P-Q).norm();
+	double lambda = (dist_P + (dist_PQ - dist_P - dist_Q)/2)/dist_PQ;
+	return get_waggled_inbetween_position(P,Q,lambda);
+}
+
+
+void Multilevel::delete_multilevel_representations(
+	Array<Graph*> &G_mult_ptr,
+	Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+	Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+	int max_level)
+{
+	for(int i=1; i<= max_level; i++)
+	{
+		delete G_mult_ptr[i];
+		delete A_mult_ptr[i];
+		delete E_mult_ptr[i];
+	}
+}
+
+
+double Multilevel::angle(DPoint& P, DPoint& Q, DPoint& R)
+{
+	double dx1 = Q.m_x - P.m_x;
+	double dy1 = Q.m_y - P.m_y;
+	double dx2 = R.m_x - P.m_x;
+	double dy2 = R.m_y - P.m_y;
+	double fi;//the angle
+
+	if ((dx1 == 0 && dy1 == 0) || (dx2 == 0 && dy2 == 0))
+		cout<<"Multilevel::angle()"<<endl;
+
+	double norm  = (dx1*dx1+dy1*dy1)*(dx2*dx2+dy2*dy2);
+	double cosfi = (dx1*dx2+dy1*dy2) / sqrt(norm);
+
+	if (cosfi >=  1.0 ) fi = 0;
+	if (cosfi <= -1.0 ) fi = Math::pi;
+	else
+	{
+		fi = acos(cosfi);
+		if (dx1*dy2 < dy1*dx2) fi = -fi;
+		if (fi < 0) fi += 2*Math::pi;
+	}
+	return fi;
+}
+
+}//namespace ogdf
diff --git a/ogdf/energybased/Multilevel.h b/ogdf/energybased/Multilevel.h
new file mode 100644
index 0000000..ba2268d
--- /dev/null
+++ b/ogdf/energybased/Multilevel.h
@@ -0,0 +1,247 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class Multlevel (used by FMMMLayout).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_MULTILEVEL_H
+#define OGDF_MULTILEVEL_H
+
+#include "../basic/Graph.h"
+#include "../basic/NodeArray.h"
+#include "../basic/EdgeArray.h"
+#include "../basic/List.h"
+#include "Edge.h"
+#include "../internal/energybased/NodeAttributes.h"
+#include "../internal/energybased/EdgeAttributes.h"
+
+
+namespace ogdf {
+
+class Multilevel
+{
+public:
+
+	Multilevel() { }     //constructor
+	~Multilevel() { }    //destructor
+
+	//The multilevel representations *G_mult_ptr/*A_mult_ptr/*E_mult_ptr for
+	//G/A/E are created. The maximum multilevel is calculated, too.
+	void create_multilevel_representations(Graph& G,NodeArray<NodeAttributes>& A,
+		EdgeArray <EdgeAttributes>& E,
+		int rand_seed,
+		int galaxy_choice,
+		int min_Graph_size,
+		int rand_tries,
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int & max_level);
+
+	//The initial placement of the nodes at multilevel level are created by the
+	//placements of the nodes of the graphs at the lower level (if init_placement_way
+	//is 0) or additionally using information of the actual level ( if
+	//init_placement_way == 1). Precondition: level < max_level
+	void find_initial_placement_for_level(
+		int level,
+		int init_placement_way,
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray <NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr);
+
+	//Free dynamically allocated memory.
+	void delete_multilevel_representations(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int max_level);
+
+private:
+
+	//This function returns true if act_level = 0 or if act_level >0 and the
+	//number of edges at the actual level is <= 80% of the number of edges of the
+	//previous level or if the actual edgenumber is >80% of the number of edges of the
+	//previous level, but bad_edgecounter is <= 5. In this case edgecounter is
+	//incremented. In all other cases false is returned.
+	bool edgenumbersum_of_all_levels_is_linear(
+		Array<Graph*> &G_mult_ptr,
+		int act_level,
+		int&bad_edgenr_counter);
+
+	//The multilevel values of *A_mult_ptr[level][v] are set to the default values
+	//for all nodes v in *G_mult_ptr[level]
+	void init_multilevel_values(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int level);
+
+	//The nodeset(galaxy) of *G_mult_ptr[act_level] is partitioned in s,p,pm,m nodes.
+	//The dedicated s,p,pm,m nodes define a subgraph (called solar system).
+	//For each solar system a new node is created in *G_mult_ptr[act_level+1] and
+	//it is linked with the corresponding sun node at act_level; the mass of this node
+	//is set to the mass of the solar system. Additionally for each node in *G_mult_ptr
+	//[act_level] the dedicated sun node and the distance to its dedicates sun node is
+	//calculated
+	void partition_galaxy_into_solar_systems(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int rand_seed,
+		int galaxy_choice,
+		int random_tries,
+		int act_level);
+
+	//The sun and planet nodes are created by choosing the sun nodes randomly with
+	//uniform or weighted probability (depending on galaxy_choice)
+	void create_suns_and_planets(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int rand_seed,
+		int galaxy_choice,
+		int random_tries,
+		int act_level);
+
+	//Partitions the nodes of *G_mult_ptr[act_level] that have not been assigned yet,
+	//to moon nodes of a nearest planet or pm node and identify this planet as a
+	//pm-node if this has not been done before.
+	void create_moon_nodes_and_pm_nodes(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int act_level);
+
+	//Using information generated in partition_galaxy_into_solar_systems  we
+	//create the edge set of *G_mult_ptr[act_level+1] and for each node at act_level+1
+	//the list of sun nodes of neighbouring sun systems and the corresponding lambda
+	//values.
+	void collaps_solar_systems(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int act_level);
+
+	//The mass of all nodes at level act_level+1 is set to the mass of its dedicated
+	//solar_system at level act_level.
+	void calculate_mass_of_collapsed_nodes(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		int act_level);
+
+	//The edges , new_edgelength and the lambda lists at level act_level+1 are created
+	//(the graph may contain parallel edges afterwards).
+	void create_edges_edgedistances_and_lambda_Lists(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		EdgeArray<double>& new_edgelength,
+		int act_level);
+
+	//Parallel edges at level act_level+1 are deleted and the edgelength of the
+	//remaining edge is set to the average edgelength of all its parallel edges.
+	void delete_parallel_edges_and_update_edgelength(
+		Array<Graph*> &G_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		EdgeArray<double>& new_edgelength,
+		int act_level);
+
+	//The initial positions of all sun_nodes at level level are set.
+	void set_initial_positions_of_sun_nodes(
+		int level,
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr);
+
+	//The initial positions of the planet/moon_nodes at level level are calculated here
+	//and a list of all pm_nodes is returned.
+	void set_initial_positions_of_planet_and_moon_nodes(
+		int level,
+		int init_placement_way,
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		List<node> &pm_nodes);
+
+	//The values of angle_1 and angle_2 that restrict the area of the placement for
+	//all nodes that are not adjacent to other solar systems are created for all nodes
+	//at multilevel level.
+	void create_all_placement_sectors(
+		Array<Graph*> &G_mult_ptr,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		int level);
+
+	//The initial positions of the pm nodes are calculated by the position of the
+	//dedicated sun and moon_nodes.
+	void set_initial_positions_of_pm_nodes(
+		int level,
+		int init_placement_way,
+		Array<NodeArray<NodeAttributes>*> &A_mult_ptr,
+		Array<EdgeArray<EdgeAttributes>*> &E_mult_ptr,
+		List<node>& pm_nodes);
+
+	//Returns a random point with radius radius between angle_1 and angle_2.
+	DPoint create_random_pos(DPoint center, double radius, double angle_1, double angle_2);
+
+	//Returns roughtly the position s +lambda*(t-s) + some random waggling.
+	DPoint get_waggled_inbetween_position(DPoint s, DPoint t, double lambda);
+
+	//Returns the barycenter position of all points in L (the mass of all point is
+	//regarded as equal).
+	DPoint get_barycenter_position(List<DPoint>& L);
+
+	//Creates a waggled position on the line PQ, depending on dist_P and dist_Q
+	//needed in case init_placement_way() == 1.
+	DPoint calculate_position(DPoint P,DPoint Q, double dist_P, double dist_Q);
+
+	//Calculates the angle between PQ and PS in [0,2pi)
+	double angle(DPoint& P, DPoint& Q, DPoint& R);
+};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/energybased/Node.h b/ogdf/energybased/Node.h
new file mode 100644
index 0000000..f95f8a0
--- /dev/null
+++ b/ogdf/energybased/Node.h
@@ -0,0 +1,99 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Auxiliary data structure for (node,int) pair.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+//Data structure for representing nodes and an int value (needed for class ogdf/list)
+//to perform bucket sort.
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_NODE_H
+#define OGDF_NODE_H
+
+#include "../basic/Graph.h"
+#include "../basic/Graph_d.h"
+#include <iostream>
+
+namespace ogdf {
+
+	class Node
+	{
+		friend int value(const Node& A) { return A.value; }
+
+		friend ostream &operator<< (ostream & output,const Node & A)
+		{
+			output <<"node index ";
+			if(A.vertex == NULL)
+				output<<"nil";
+			else
+				output<<A.vertex->index();
+			output<<" value "<< A.value;
+			return output;
+		}
+
+		friend istream &operator>> (istream & input,Node & A) {
+			input >> A.value;
+			return input;
+		}
+
+	public:
+		Node() { vertex = NULL; value = 0; }        //constructor
+		~Node() { }    //destructor
+
+
+		void set_Node(node v,int a) { vertex = v; value = a; }
+		int  get_value() const { return value; }
+		node get_node() const { return vertex; }
+
+	private:
+		node vertex;
+		int value ;
+	};
+
+}//namespace ogdf
+#endif
+
+
diff --git a/ogdf/energybased/PQueue.h b/ogdf/energybased/PQueue.h
new file mode 100644
index 0000000..f4170b2
--- /dev/null
+++ b/ogdf/energybased/PQueue.h
@@ -0,0 +1,176 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class PQueue (priority queue).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_PQUEUE_H
+#define OGDF_PQUEUE_H
+
+#include "../basic/List.h"
+
+namespace ogdf {
+
+//Needed for storing entries of the heap.
+class HelpRecord
+{
+public:
+	HelpRecord() { }  //constructor
+	~HelpRecord(){ } //destructor
+
+	void set_ListIterator(ListIterator<PackingRowInfo>& it) { iterator = it; }
+	void set_value (double v) { value = v; }
+	ListIterator<PackingRowInfo> get_ListIterator() const { return iterator; }
+	double get_value() const { return value; }
+
+private:
+	double value;
+	ListIterator<PackingRowInfo> iterator;
+};
+
+class PQueue
+{
+	//Helping data structure that is a priority queue (heap) and holds  double values
+	//(as comparison values) and iterators of type ListIterator<PackingRowInfo>
+	//as contents. It is needed in class MAARPacking for the Best_Fit insert strategy.
+
+public:
+
+	PQueue() { P.clear(); } //constructor
+	~PQueue(){ }            //destructor
+
+	//Inserts content with value value into the priority queue and restores the heap.
+	void insert(double value, ListIterator<PackingRowInfo> iterator)
+	{
+		HelpRecord h;
+		h.set_value(value);
+		h.set_ListIterator(iterator);
+		P.pushBack(h);
+		//reheap bottom up
+		reheap_bottom_up(P.size()-1);
+	}
+
+	//Deletes the element with the minimum value from the queue and restores
+	//the heap.
+	void del_min()
+	{
+		if(P.size() < 1)
+			cout<<"Error PQueue:: del_min() ; Heap is empty"<<endl;
+		else
+		{
+			//last element becomes first element
+			P.popFront();
+			if(!P.empty())
+			{
+				P.pushFront(P.back());
+				P.popBack();
+				//reheap top down
+				reheap_top_down(0);
+			}
+		}
+	}
+
+	//Returns the content with the minimum value.
+	ListIterator<PackingRowInfo> find_min()
+	{
+		OGDF_ASSERT(P.size() >= 1);
+		//if(P.size() < 1)
+		//  cout<<"Error PQueue:: find_min() ; Heap is empty"<<endl;
+		//else
+		return P.front().get_ListIterator();
+	}
+
+private:
+	List<HelpRecord> P;//the priority queue;
+
+	//Restores the heap property in P starting from position i bottom up.
+	void reheap_bottom_up(int i)
+	{
+		int parent = (i-1)/2;
+
+		if((i != 0) && ((*P.get(parent)).get_value() > (*P.get(i)).get_value()))
+		{
+			exchange(i,parent);
+			reheap_bottom_up(parent);
+		}
+	}
+
+	//Restores the heap property in P starting from position i top down.
+	void reheap_top_down(int i)
+	{
+		int smallest = i;
+		int l = 2*i+1;
+		int r = 2*i+2;
+
+		if((l <= P.size()-1) && ((*P.get(l)).get_value() < (*P.get(i)).get_value()))
+			smallest = l;
+		else
+			smallest = i;
+		if((r <= P.size()-1) && ((*P.get(r)).get_value() < (*P.get(smallest)).get_value()))
+			smallest = r;
+		if(smallest != i)//exchange and recursion
+		{
+			exchange(i,smallest);
+			reheap_top_down(smallest);
+		}
+	}
+
+	//Exchanges heap entries at positions i and j.
+	void exchange(int i, int j)
+	{
+		HelpRecord h = *P.get(i);
+		*P.get(i) = *P.get(j);
+		*P.get(j) = h;
+	}
+};
+
+}//namespace ogdf
+#endif
+
+
+
+
diff --git a/ogdf/energybased/PackingRowInfo.h b/ogdf/energybased/PackingRowInfo.h
new file mode 100644
index 0000000..b80ce60
--- /dev/null
+++ b/ogdf/energybased/PackingRowInfo.h
@@ -0,0 +1,105 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class PackingRowInfo.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_PACKING_ROW_INFO_H
+#define OGDF_PACKING_ROW_INFO_H
+
+#include "../basic/basic.h"
+
+namespace ogdf {
+
+	class PackingRowInfo
+	{
+		//Helping data structure for MAARPacking.
+
+		//Outputstream for PackingRowInfo
+		friend ostream &operator<< (ostream & output, const PackingRowInfo & A)
+		{
+			output <<" max_height "<<A.max_height<<" total_width "<<A.total_width<<" row_index "
+				<< A.row_index;
+			return output;
+		}
+
+		//Inputstream for PackingRowInfo
+		friend istream &operator>> (istream & input,  PackingRowInfo & A)
+		{
+			input >>A.max_height>>A.total_width>>A.row_index;
+			return input;
+		}
+
+	public:
+
+		PackingRowInfo()      //constructor
+		{
+			total_width = 0;
+			max_height = 0;
+			row_index = 0;
+		}
+
+		~PackingRowInfo() { } //destructor
+
+		void set_max_height(double h) { max_height = h; }
+		void set_total_width(double w) { total_width = w; }
+		void set_row_index(int i) { row_index = i; }
+
+		double get_max_height() { return max_height; }
+		double get_total_width() { return total_width; }
+		int get_row_index() { return row_index; }
+
+	private:
+		double max_height;  //the maximum height of a rectangle placed in this row
+		double total_width; //the sum of the width of all rectsngles in this row
+		int row_index;      //the index of the row (first row in packing has index 0)
+
+	};
+
+}//namespace ogdf
+#endif
+
+
diff --git a/ogdf/energybased/Rectangle.h b/ogdf/energybased/Rectangle.h
new file mode 100644
index 0000000..f3c75ee
--- /dev/null
+++ b/ogdf/energybased/Rectangle.h
@@ -0,0 +1,240 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class Rectangle.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_RECTANGLE_H
+#define OGDF_RECTANGLE_H
+
+#include "../basic/geometry.h"
+#include <iostream>
+
+namespace ogdf {
+
+	class Rectangle
+	{
+		//Helping data structure for packing rectangles; The width, height and the position
+		//of the down left corner of the tight surroundig rectangle is represented for each
+		//connected component of the graph.
+
+		//Outputstream for Rectangle.
+		friend ostream &operator<< (ostream & output, const Rectangle & A)
+		{
+			output <<"width: "<< A.width<<" height: "<<A.height<<" old dlc_position: "
+				<<A.old_down_left_corner_position<<" new dlc_position: "
+				<<A.new_down_left_corner_position<<" coponenet_index: "<<A.component_index;
+			if(A.tipped_over == true)
+				output<<" is tipped_over";
+			return output;
+		}
+
+		//Inputstream for Rectangle.
+		friend istream &operator>> (istream & input,  Rectangle & A)
+		{
+			input >>A.width;
+			return input;
+		}
+
+	public:
+
+		Rectangle() //constructor
+		{
+			old_down_left_corner_position.m_x = 0;
+			old_down_left_corner_position.m_y = 0;
+			new_down_left_corner_position.m_x = 0;
+			new_down_left_corner_position.m_y = 0;
+			width = 0;
+			height = 0;
+			component_index = -1;
+			tipped_over = false;
+		}
+
+		~Rectangle() { }    //destructor
+
+		void set_rectangle (double w, double h, double old_dlc_x_pos,double
+			old_dlc_y_pos,int comp_index)
+		{
+			width = w;
+			height = h;
+			old_down_left_corner_position.m_x = old_dlc_x_pos;
+			old_down_left_corner_position.m_y = old_dlc_y_pos;
+			component_index = comp_index;
+			tipped_over = false;
+		}
+
+		void set_old_dlc_position(DPoint dlc_pos){old_down_left_corner_position = dlc_pos;}
+		void set_new_dlc_position(DPoint dlc_pos){new_down_left_corner_position = dlc_pos;}
+		void set_width(double w) {width = w;}
+		void set_height(double h) {height = h;}
+		void set_component_index (int comp_index) {component_index = comp_index;}
+		void tipp_over()
+		{
+			if(tipped_over == false)
+				tipped_over = true;
+			else
+				tipped_over = false;
+		}
+
+		DPoint get_old_dlc_position() const { return old_down_left_corner_position; }
+		DPoint get_new_dlc_position() const { return new_down_left_corner_position; }
+		double get_width() const {return width;}
+		double get_height() const {return height;}
+		int get_component_index() const {return component_index;}
+		bool is_tipped_over() const {return tipped_over;}
+
+	private:
+		DPoint old_down_left_corner_position;//down left corner of the tight surround. rect.
+		DPoint new_down_left_corner_position;//new calculated down left corner of ...
+		double width;                     //width of the surround. rect.
+		double height;                    //height of the surround. rect.
+		int component_index;  //the index of the related connected component
+		bool tipped_over;     //indicates if this rectangle has been tipped over in the
+		//packing step
+
+	};
+
+
+	//Needed for sorting algorithms in ogdf/List and ogdf/Array.
+	class RectangleComparerHeight
+	{
+	public:
+		RectangleComparerHeight() { }
+		~RectangleComparerHeight() { }
+
+		bool less(const Rectangle& A,const Rectangle & B) const
+		{
+			if(A.get_height() > B.get_height() )
+				return  true;
+			else
+				return false;
+		}
+
+		bool leq(const Rectangle& A,const Rectangle & B) const
+		{
+			if(A.get_height() >= B.get_height() )
+				return  true;
+			else
+				return false;
+		}
+
+		bool equal(const Rectangle& A,const Rectangle & B) const
+		{
+			if(A.get_height() == B.get_height() )
+				return  true;
+			else
+				return false;
+		}
+	};
+
+
+	class RectangleComparerWidth
+	{
+	public:
+		RectangleComparerWidth() { }
+		~RectangleComparerWidth() { }
+
+		bool less(const Rectangle& A,const Rectangle & B) const
+		{
+			if(A.get_width() > B.get_width() )
+				return  true;
+			else
+				return false;
+		}
+
+		bool leq(const Rectangle& A,const Rectangle & B) const
+		{
+			if(A.get_width() >= B.get_width() )
+				return  true;
+			else
+				return false;
+		}
+
+		bool equal(const Rectangle& A,const Rectangle & B) const
+		{
+			if(A.get_width() == B.get_width() )
+				return  true;
+			else
+				return false;
+		}
+	};
+
+
+    class RectangleComparerArea
+    {
+    public:
+        RectangleComparerArea() { }
+        ~RectangleComparerArea() { }
+
+        bool less(const Rectangle& A,const Rectangle & B) const
+        {
+            if(A.get_height() * A.get_width() > B.get_height() * B.get_width() )
+                return  true;
+            else
+                return false;
+        }
+
+        bool leq(const Rectangle& A,const Rectangle & B) const
+        {
+            if(A.get_height() * A.get_width() >= B.get_height() * B.get_width() )
+                return  true;
+            else
+                return false;
+        }
+
+        bool equal(const Rectangle& A,const Rectangle & B) const
+        {
+            if(A.get_height() * A.get_width() == B.get_height() * B.get_width() )
+                return  true;
+            else
+                return false;
+        }
+    };
+
+}//namespace ogdf
+#endif
+
+
diff --git a/ogdf/energybased/Set.cpp b/ogdf/energybased/Set.cpp
new file mode 100644
index 0000000..2640b55
--- /dev/null
+++ b/ogdf/energybased/Set.cpp
@@ -0,0 +1,241 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class Set.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "Set.h"
+
+namespace ogdf {
+
+Set::Set()
+{
+	last_selectable_index_of_S_node = -1;
+	S_node = NULL;
+	using_S_node = false;
+}
+
+
+Set::~Set()
+{
+	if (using_S_node) delete [] S_node;
+}
+
+
+void Set::set_seed(int rand_seed)
+{
+	srand(rand_seed);
+}
+
+
+void Set::init_node_set(Graph& G)
+{
+	using_S_node = true;
+	node v;
+
+	S_node = new node[G.numberOfNodes()];
+	position_in_node_set.init(G);
+
+	forall_nodes(v,G)
+	{
+		S_node[v->index()] = v;
+		position_in_node_set[v] = v->index();
+	}
+	last_selectable_index_of_S_node = G.numberOfNodes()-1;
+}
+
+
+bool Set::empty_node_set()
+{
+	if(last_selectable_index_of_S_node < 0)
+		return true;
+	else
+		return false;
+}
+
+
+bool Set::is_deleted(node v)
+{
+	if (position_in_node_set[v] > last_selectable_index_of_S_node )
+		return true;
+	else
+		return false;
+}
+
+
+void Set::delete_node(node del_node)
+{
+	int del_node_index = position_in_node_set[del_node];
+	node last_selectable_node = S_node[last_selectable_index_of_S_node];
+
+	S_node[last_selectable_index_of_S_node] = del_node;
+	S_node[del_node_index] = last_selectable_node;
+	position_in_node_set[del_node] = last_selectable_index_of_S_node;
+	position_in_node_set[last_selectable_node] = del_node_index;
+	last_selectable_index_of_S_node -=1;
+}
+
+
+//---------------- for set of nodes with uniform probability -------------------
+
+node Set::get_random_node()
+{
+	int rand_index = randomNumber(0,last_selectable_index_of_S_node);
+	node random_node =  S_node[rand_index];
+	node last_selectable_node = S_node[last_selectable_index_of_S_node];
+
+	S_node[last_selectable_index_of_S_node] = random_node;
+	S_node[rand_index] = last_selectable_node;
+	position_in_node_set[random_node] = last_selectable_index_of_S_node;
+	position_in_node_set[last_selectable_node] = rand_index;
+	last_selectable_index_of_S_node -=1;
+	return random_node;
+}
+
+
+//---------------- for set of nodes with weighted  probability ------------------
+
+void Set::init_node_set(Graph& G,NodeArray<NodeAttributes>& A)
+{
+	node v,v_adj;
+	edge e_adj;
+
+	init_node_set(G);
+	mass_of_star.init(G);
+	forall_nodes(v,G)
+	{
+		mass_of_star[v] = A[v].get_mass();
+		forall_adj_edges(e_adj, v)
+		{
+			if(e_adj->source() != v)
+				v_adj = e_adj->source();
+			else
+				v_adj = e_adj->target();
+			mass_of_star[v] += A[v_adj].get_mass();
+		}
+	}
+}
+
+//---------------- for set of nodes with ``lower mass'' probability --------------
+
+node Set::get_random_node_with_lowest_star_mass(int rand_tries)
+{
+    int rand_index = 0, new_rand_index, min_mass = 0;
+	int i = 1;
+    node random_node = node(), new_rand_node,last_trie_node,last_selectable_node;
+
+	//randomly select rand_tries distinct!!! nodes from S_node and select the one
+	//with the lowest mass
+
+	int last_trie_index = last_selectable_index_of_S_node;
+	while( (i<= rand_tries) && (last_trie_index >= 0) )
+	{//while
+		last_trie_node = S_node[last_trie_index];
+		new_rand_index = randomNumber(0,last_trie_index);
+		new_rand_node = S_node[new_rand_index];
+		S_node[last_trie_index] = new_rand_node;
+		S_node[new_rand_index] = last_trie_node;
+		position_in_node_set[new_rand_node] = last_trie_index;
+		position_in_node_set[last_trie_node] = new_rand_index;
+
+		if( (i == 1) || (min_mass > mass_of_star[S_node[last_trie_index]]) )
+		{
+			rand_index = last_trie_index;
+			random_node = S_node[last_trie_index];
+			min_mass = mass_of_star[random_node];
+		}
+		i++;
+		last_trie_index -=1;
+	}//while
+
+	//now rand_index and random_node have been fixed
+	last_selectable_node = S_node[last_selectable_index_of_S_node];
+	S_node[last_selectable_index_of_S_node] = random_node;
+	S_node[rand_index] = last_selectable_node;
+	position_in_node_set[random_node] = last_selectable_index_of_S_node;
+	position_in_node_set[last_selectable_node] = rand_index;
+	last_selectable_index_of_S_node -=1;
+	return random_node;
+}
+
+
+//---------------- for set of nodes with ``higher mass'' probability --------------
+
+node Set::get_random_node_with_highest_star_mass(int rand_tries)
+{
+    int rand_index = 0, new_rand_index, min_mass = 0;
+	int i = 1;
+    node random_node = node(), new_rand_node,last_trie_node,last_selectable_node;
+
+	//randomly select rand_tries distinct!!! nodes from S_node and select the one
+	//with the lowest mass
+
+	int last_trie_index = last_selectable_index_of_S_node;
+	while( (i<= rand_tries) && (last_trie_index >= 0) )
+	{//while
+		last_trie_node = S_node[last_trie_index];
+		new_rand_index = randomNumber(0,last_trie_index);
+		new_rand_node = S_node[new_rand_index];
+		S_node[last_trie_index] = new_rand_node;
+		S_node[new_rand_index] = last_trie_node;
+		position_in_node_set[new_rand_node] = last_trie_index;
+		position_in_node_set[last_trie_node] = new_rand_index;
+
+		if( (i == 1) || (min_mass < mass_of_star[S_node[last_trie_index]]) )
+		{
+			rand_index = last_trie_index;
+			random_node = S_node[last_trie_index];
+			min_mass = mass_of_star[random_node];
+		}
+		i++;
+		last_trie_index -=1;
+	}//while
+
+	//now rand_index and random_node have been fixed
+	last_selectable_node = S_node[last_selectable_index_of_S_node];
+	S_node[last_selectable_index_of_S_node] = random_node;
+	S_node[rand_index] = last_selectable_node;
+	position_in_node_set[random_node] = last_selectable_index_of_S_node;
+	position_in_node_set[last_selectable_node] = rand_index;
+	last_selectable_index_of_S_node -=1;
+	return random_node;
+}
+
+}//namespace ogdf
diff --git a/ogdf/energybased/Set.h b/ogdf/energybased/Set.h
new file mode 100644
index 0000000..9d637f5
--- /dev/null
+++ b/ogdf/energybased/Set.h
@@ -0,0 +1,131 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class Set.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_SET_H
+#define OGDF_SET_H
+
+#include "../basic/List.h"
+#include "../basic/Graph.h"
+#include "../basic/NodeArray.h"
+#include "../internal/energybased/NodeAttributes.h"
+
+namespace ogdf {
+
+	class Set
+	{
+		//Helping data structure that holds set S_node of nodes in the range [0,
+		//G.number_of_nodes()-1] (needed for class Multilevel) for randomly choosing nodes
+		//(with uniform or weighted probability!)
+
+	public:
+
+		Set();     //constructor
+		~Set();    //destructor
+
+		void set_seed(int rand_seed); //the the random seed to rand_seed
+
+
+		//---------------------- for set of nodes---------------------------------------
+
+		//Inits S_node[0,...,G.number_of_nodes()-1] and stores the i-th node of P
+		//at position S_node[i] and in position_in_node_set for each node its index in
+		//S_node.
+		void init_node_set(Graph& G);
+
+		//Returns whether S_node is empty or not.
+		bool empty_node_set();
+
+		//Returns true if and only if v is deleted from S_node.
+		bool is_deleted(node v);
+
+		//Deletes the node v from S_node.
+		void delete_node(node v);
+
+		//---------------- for set of nodes with uniform probability -------------------
+
+
+		//Selects a random element from S_node with uniform probability and updates S_node
+		//and position_in_node_set.
+		node get_random_node();
+
+		//---------------- for set of nodes with weighted  probability -------------------
+
+		//Same as init_node_set(G), but additionally the array mass_of_star is caculated.
+		void init_node_set(Graph& G,NodeArray<NodeAttributes>& A);
+
+		//---------------- for set of nodes with ``lower mass'' probability --------------
+
+		//Gets rand_tries random elements from S_node and selects the one with the lowest
+		//mass_of_star and updates S_node and position_in_node_set.
+		node get_random_node_with_lowest_star_mass(int rand_tries);
+
+		//---------------- for set of nodes with ``higher mass'' probability --------------
+
+		//Gets rand_tries random elements from S_node and selects the one with the highest
+		//mass_of_star and updates S_node and position_in_node_set.
+		node get_random_node_with_highest_star_mass(int rand_tries);
+
+	private:
+
+		bool using_S_node; //indicates weather S_item, or S_node is used
+
+		node* S_node;       //representation of the node set S_node[0,G.number_of_nodes()-1]
+		int last_selectable_index_of_S_node;//index of the last randomly choosable element
+		//in S_node (this value is decreased after each
+		//select operation)
+		NodeArray<int> position_in_node_set;//holds for each node of G the index of its
+		//position in S_node
+		NodeArray<int> mass_of_star; //the sum of the masses of a node and its neighbours
+
+	};
+
+}//namespace ogdf
+#endif
+
+
diff --git a/ogdf/energybased/numexcept.cpp b/ogdf/energybased/numexcept.cpp
new file mode 100644
index 0000000..9aeb95f
--- /dev/null
+++ b/ogdf/energybased/numexcept.cpp
@@ -0,0 +1,214 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class numexcept (handling of numeric problems).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "numexcept.h"
+#include "../basic/basic.h"
+
+#define epsilon 0.1
+#define POS_SMALL_DOUBLE 1e-300
+#define POS_BIG_DOUBLE   1e+300
+
+
+namespace ogdf {
+
+
+DPoint numexcept::choose_distinct_random_point_in_disque(DPoint old_point,
+	double xmin,double xmax,double ymin,double ymax)
+{
+	const int BILLION = 1000000000;
+	double mindist;//minimal distance from old_point to the boundaries of the disc
+	double mindist_to_xmin,mindist_to_xmax,mindist_to_ymin,mindist_to_ymax;
+	double rand_x,rand_y;
+	DPoint new_point;
+
+	mindist_to_xmin = old_point.m_x - xmin;
+	mindist_to_xmax = xmax -  old_point.m_x;
+	mindist_to_ymin = old_point.m_y - ymin;
+	mindist_to_ymax = ymax -  old_point.m_y;
+
+	mindist = min(min(mindist_to_xmin,mindist_to_xmax), min(mindist_to_ymin,mindist_to_ymax));
+
+	if(mindist > 0)
+	do {
+		//assign random double values in range (-1,1)
+		rand_x = 2*(double(randomNumber(1,BILLION)+1)/(BILLION+2)-0.5);
+		rand_y = 2*(double(randomNumber(1,BILLION)+1)/(BILLION+2)-0.5);
+		new_point.m_x = old_point.m_x+mindist*rand_x*epsilon;
+		new_point.m_y = old_point.m_y+mindist*rand_y*epsilon;
+	} while((old_point == new_point)||((old_point-new_point).norm() >= mindist*epsilon));
+
+	else if(mindist == 0) //old_point lies at the boundaries
+	{//else1
+		double mindist_x =0;
+		double mindist_y =0;
+
+		if (mindist_to_xmin > 0)
+			mindist_x = (-1)* mindist_to_xmin;
+		else if (mindist_to_xmax > 0)
+			mindist_x = mindist_to_xmax;
+		if (mindist_to_ymin > 0)
+			mindist_y = (-1)* mindist_to_ymin;
+		else if (mindist_to_ymax > 0)
+			mindist_y = mindist_to_ymax;
+
+		if((mindist_x != 0)||(mindist_y != 0))
+		do {
+			//assign random double values in range (0,1)
+			rand_x = double(randomNumber(1,BILLION)+1)/(BILLION+2);
+			rand_y = double(randomNumber(1,BILLION)+1)/(BILLION+2);
+			new_point.m_x = old_point.m_x+mindist_x*rand_x*epsilon;
+			new_point.m_y = old_point.m_y+mindist_y*rand_y*epsilon;
+		} while(old_point == new_point);
+	else
+		cout<<"Error DIM2:: box is equal to old_pos"<<endl;
+	}//else1
+
+	else //mindist < 0
+	{//else2
+		cout<<"Error DIM2:: choose_distinct_random_point_in_disque: old_point not ";
+		cout<<"in box"<<endl;
+	}//else2
+
+	return new_point;
+}
+
+
+DPoint numexcept::choose_distinct_random_point_in_radius_epsilon(DPoint old_pos)
+{
+	double xmin = old_pos.m_x-1*epsilon;
+	double xmax = old_pos.m_x+1*epsilon;
+	double ymin = old_pos.m_y-1*epsilon;
+	double ymax = old_pos.m_y+1*epsilon;
+
+	return choose_distinct_random_point_in_disque(old_pos,xmin,xmax,ymin,ymax);
+}
+
+
+bool numexcept::f_rep_near_machine_precision(double distance,DPoint& force )
+{
+	const double  POS_BIG_LIMIT =    POS_BIG_DOUBLE   *  1e-190;
+	const double  POS_SMALL_LIMIT =  POS_SMALL_DOUBLE *  1e190;
+	const int BILLION = 1000000000;
+
+	if(distance > POS_BIG_LIMIT)
+	{
+		//create random number in range (0,1)
+		double randx = double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		double randy = double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		int rand_sign_x = randomNumber(0,1);
+		int rand_sign_y = randomNumber(0,1);
+		force.m_x = POS_SMALL_LIMIT*(1+randx)*pow(-1.0,rand_sign_x);
+		force.m_y = POS_SMALL_LIMIT*(1+randy)*pow(-1.0,rand_sign_y);
+		return true;
+
+	} else if (distance < POS_SMALL_LIMIT)
+	{
+		//create random number in range (0,1)
+		double randx = double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		double randy = double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		int rand_sign_x = randomNumber(0,1);
+		int rand_sign_y = randomNumber(0,1);
+		force.m_x = POS_BIG_LIMIT*randx*pow(-1.0,rand_sign_x);
+		force.m_y = POS_BIG_LIMIT*randy*pow(-1.0,rand_sign_y);
+		return true;
+
+	} else
+		return false;
+}
+
+
+bool numexcept::f_near_machine_precision(double distance,DPoint& force )
+{
+	const double  POS_BIG_LIMIT =    POS_BIG_DOUBLE   *  1e-190;
+	const double  POS_SMALL_LIMIT =  POS_SMALL_DOUBLE *  1e190;
+	const int BILLION = 1000000000;
+
+	if(distance < POS_SMALL_LIMIT)
+	{
+		//create random number in range (0,1)
+		double randx =  double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		double randy =  double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		int rand_sign_x = randomNumber(0,1);
+		int rand_sign_y = randomNumber(0,1);
+		force.m_x = POS_SMALL_LIMIT*(1+randx)*pow(-1.0,rand_sign_x);
+		force.m_y = POS_SMALL_LIMIT*(1+randy)*pow(-1.0,rand_sign_y);
+		return true;
+
+	} else if (distance > POS_BIG_LIMIT)
+	{
+		//create random number in range (0,1)
+		double randx =  double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		double randy =  double(randomNumber(1,BILLION)+1)/(BILLION+2);
+		int rand_sign_x = randomNumber(0,1);
+		int rand_sign_y = randomNumber(0,1);
+		force.m_x = POS_BIG_LIMIT*randx*pow(-1.0,rand_sign_x);
+		force.m_x = POS_BIG_LIMIT*randy*pow(-1.0,rand_sign_y);
+		return true;
+
+	} else
+		return false;
+}
+
+
+bool numexcept::nearly_equal(double a,double b)
+{
+	double delta = 1e-10;
+	double small_b,big_b;
+
+	if(b > 0) {
+		small_b = b*(1-delta);
+		big_b   = b*(1+delta);
+
+	} else //b <= 0
+	{
+		small_b = b*(1+delta);
+		big_b   = b*(1-delta);
+	}
+
+	if((small_b <= a) && (a <= big_b))
+		return true;
+	else
+		return false;
+}
+
+}//namespace ogdf
diff --git a/ogdf/energybased/numexcept.h b/ogdf/energybased/numexcept.h
new file mode 100644
index 0000000..6f1b096
--- /dev/null
+++ b/ogdf/energybased/numexcept.h
@@ -0,0 +1,104 @@
+/*
+ * $Revision: 2559 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 15:04:28 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class numexcept (handling of numeric problems).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_NUMEXCEPT_H
+#define OGDF_NUMEXCEPT_H
+
+#include "../basic/geometry.h"
+
+namespace ogdf {
+
+//--------------------------------------------------------------------------
+// this class is developed for exceptions that might occure, when nodes are
+// placed at the same position and a new random position has to be found, or
+// when the calculated forces are near the machine accuracy, where no
+// reasonable numeric and logic calculations are possible any more
+//---------------------------------------------------------------------------
+
+	class numexcept
+	{
+	public:
+
+		//Returns a distinct random point within the smallest disque D with center
+		//old_point that is contained in the box defined by xmin,...,ymax; The size of
+		//D is shrunk by multiplying with epsilon = 0.1; Precondition:
+		//old_point is contained in the box and the box is not equal to old_point.
+		DPoint choose_distinct_random_point_in_disque(
+			DPoint old_point,
+			double xmin,
+			double xmax,
+			double ymin,
+			double ymax);
+
+		//A random point (distinct from old_pos) on the disque around old_pos with
+		//radius epsilon = 0.1 is computed.
+		DPoint choose_distinct_random_point_in_radius_epsilon(DPoint old_pos);
+
+		//If distance has a value near the machine precision the repulsive force calculation
+		//is not possible (calculated values exceed the machine accuracy) in this cases
+		//true is returned and force is set to a reasonable value that does
+		//not cause problems; Else false is returned and force keeps unchanged.
+		bool f_rep_near_machine_precision(double distance, DPoint& force);
+
+		//If distance has a value near the machine precision the (attractive)force
+		//calculation is not possible (calculated values exceed the machine accuracy) in
+		//this cases true is returned and force is set to a reasonable value that does
+		//not cause problems; Else false is returned and force keeps unchanged.
+		bool f_near_machine_precision(double distance, DPoint& force);
+
+		//Returns true if a is "nearly" equal to b (needed, when machine accuracy is
+		//insufficient in functions well_seperated and bordering of NMM)
+		bool nearly_equal(double a, double b);
+
+	};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/fileformats/DinoLineBuffer.cpp b/ogdf/fileformats/DinoLineBuffer.cpp
new file mode 100644
index 0000000..c2360de
--- /dev/null
+++ b/ogdf/fileformats/DinoLineBuffer.cpp
@@ -0,0 +1,424 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of a line buffer serving the class DinoXmlScanner
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "DinoLineBuffer.h"
+#include "../basic/String.h"
+#include "DinoTools.h"
+
+#include <ctype.h>
+#include <string.h>
+
+extern ofstream os;
+
+namespace ogdf {
+
+	// Initialize static variables
+	const int DinoLineBuffer::c_maxStringLength = OGDF_STRING_BUFFER_SIZE;
+	const int DinoLineBuffer::c_maxLineLength = 200;
+	const int DinoLineBuffer::c_maxNoOfLines = 20;
+
+	//
+	// ---------- D i n o L i n e B u f f e r P o s i t i o n ----------
+	//
+
+	//
+	// C o n s t r u c t o r
+	//
+	DinoLineBufferPosition::DinoLineBufferPosition(
+		int lineNumber,
+		int lineUpdateCount,
+		int linePosition)
+	{
+		set(lineNumber, lineUpdateCount, linePosition);
+	}
+
+	//
+	// C o p y C o n s t r u c t o r
+	//
+	DinoLineBufferPosition::DinoLineBufferPosition(const DinoLineBufferPosition &position)
+	{
+		m_lineNumber = position.m_lineNumber;
+		m_lineUpdateCount = position.m_lineUpdateCount;
+		m_linePosition = position.m_linePosition;
+	}
+
+	//
+	// s e t
+	//
+	void DinoLineBufferPosition::set(int lineNumber, int lineUpdateCount, int linePosition)
+	{
+		OGDF_ASSERT((lineNumber >= 0) && (lineNumber < DinoLineBuffer::c_maxNoOfLines))
+		OGDF_ASSERT(lineUpdateCount >= 0)
+		OGDF_ASSERT((linePosition >= 0) && (linePosition < DinoLineBuffer::c_maxLineLength))
+
+		m_lineNumber = lineNumber;
+		m_lineUpdateCount = lineUpdateCount;
+		m_linePosition = linePosition;
+
+	} // set
+
+	//
+	// i n c r e m e n t P o s i t i o n
+	//
+	void DinoLineBufferPosition::incrementPosition()
+	{
+		++m_linePosition;
+
+		OGDF_ASSERT((m_linePosition >= 0) && (m_linePosition < DinoLineBuffer::c_maxLineLength))
+
+	} // increasePosition
+
+	//
+	// o p e r a t o r ! =
+	//
+	bool DinoLineBufferPosition::operator!=(const DinoLineBufferPosition &position) const
+	{
+		if ((m_lineNumber != position.m_lineNumber) ||
+			(m_lineUpdateCount != position.m_lineUpdateCount) ||
+			(m_linePosition != position.m_linePosition))
+		{
+			return true;
+		}
+
+		return false;
+
+	} // operator!=
+
+	//
+	// o p e r a t o r =
+	//
+	const DinoLineBufferPosition &
+	DinoLineBufferPosition::operator=(const DinoLineBufferPosition &position)
+	{
+		if (&position != this){
+
+			m_lineNumber = position.getLineNumber();
+			m_lineUpdateCount = position.getLineUpdateCount();
+			m_linePosition = position.getLinePosition();
+
+		}
+
+		return *this;
+
+	} // operator=
+
+	//
+	// ---------- D i n o L i n e B u f f e r ----------
+	//
+
+	//
+	// C o n s t r u c t o r
+	//
+	DinoLineBuffer::DinoLineBuffer(const char *fileName) :
+		m_pIs(0),
+		m_pLinBuf(0),
+		m_numberOfMostRecentlyReadLine(0),
+		m_inputFileLineCounter(0)
+	{
+		// Open file
+		m_pIs = new ifstream(fileName, ios::in);
+		if (!(*m_pIs)) {
+			DinoTools::reportError("DinoLineBuffer::DinoLineBuffer", __LINE__, "Error opening file!");
+		}
+
+		// Create and initialize lineUpdateCountArray
+		m_lineUpdateCountArray = new int[DinoLineBuffer::c_maxNoOfLines];
+		int i;
+		for (i = 0; i < DinoLineBuffer::c_maxNoOfLines; i++){
+			m_lineUpdateCountArray[i] = 0;
+		}
+
+		// Create and initialize line buffer
+		m_pLinBuf = new char[(DinoLineBuffer::c_maxNoOfLines * DinoLineBuffer::c_maxLineLength)];
+		if (m_pLinBuf == 0)
+			OGDF_THROW(InsufficientMemoryException);
+		for (i = 0; i < DinoLineBuffer::c_maxNoOfLines * DinoLineBuffer::c_maxLineLength; i++){
+			m_pLinBuf[i] = '0';
+		}
+
+		// Read first line
+		if (!m_pIs->eof()){
+
+			// Read first line
+			m_pIs->getline(m_pLinBuf, DinoLineBuffer::c_maxLineLength);
+
+			// Increase inputFileLineCounter
+			++m_inputFileLineCounter;
+
+			// Increase updateCount
+			++(m_lineUpdateCountArray[0]);
+
+		}
+		// End of file is reached immeadiately
+		else{
+
+			// Set eof marker
+			*m_pLinBuf = EOF;
+
+		}
+
+		// Set position
+		m_currentPosition.set(0, m_lineUpdateCountArray[0], 0);
+
+	} // DinoLineBuffer::DinoLineBuffer
+
+	//
+	// D e s t r u c t o r
+	//
+	DinoLineBuffer::~DinoLineBuffer()
+	{
+		// destroy line buffer
+		delete [] m_pLinBuf;
+
+		// destroy lineUpdateCountArray
+		delete [] m_lineUpdateCountArray;
+
+		// Close file
+		delete m_pIs;
+
+	} // DinoLineBuffer::~DinoLineBuffer
+
+	//
+	// m o v e T o N e x t C h a r a c t e r
+	//
+	char DinoLineBuffer::moveToNextCharacter(){
+
+		// Return if end of file is reached
+		if (getCurrentCharacter() == EOF){
+			return EOF;
+		}
+
+		// Increment position
+		m_currentPosition.incrementPosition();
+
+		// End of line is reached, there can be some consecutive lines
+		// with only \0 in it; hence we use a while loop
+		while (getCurrentCharacter() == '\0'){
+
+			// Current line is equal to most recently read line,
+			// i.e. we have to read a new line from the file
+			if (m_currentPosition.getLineNumber() == m_numberOfMostRecentlyReadLine){
+
+				// Increment line pointer (modulo c_maxNoOfLines - 1)
+				if (m_numberOfMostRecentlyReadLine == (DinoLineBuffer::c_maxNoOfLines - 1)){
+					m_numberOfMostRecentlyReadLine = 0;
+				}
+				else {
+					++m_numberOfMostRecentlyReadLine;
+				}
+
+				// Increment update count
+				++(m_lineUpdateCountArray[m_numberOfMostRecentlyReadLine]);
+
+				// Increment inputFileLineCounter
+				++m_inputFileLineCounter;
+
+				// Set current position
+				m_currentPosition.set(
+					m_numberOfMostRecentlyReadLine,
+					m_lineUpdateCountArray[m_numberOfMostRecentlyReadLine],
+					0);
+
+				// End of file is reached
+				if (m_pIs->eof()){
+
+					// Set eof marker
+					setCurrentCharacter(EOF);
+
+				}
+				// Read next line and put it to the new position
+				else{
+
+					m_pIs->getline(getCurrentCharacterPointer(), DinoLineBuffer::c_maxLineLength);
+				}
+
+			} // Current line is equal to most recently read line
+
+			// Current line is NOT equal to most recently read line, i.e.
+			// it is not necessary to read a new line from the file but to
+			// set the currentPosition to the next line which is already in
+			// the line buffer.
+			else{
+
+				int newLine;
+
+				// Increment current line pointer (modulo c_maxNoOfLines - 1)
+				if (m_currentPosition.getLineNumber() == (DinoLineBuffer::c_maxNoOfLines - 1)){
+					newLine = 0;
+				}
+				else {
+					newLine = m_currentPosition.getLineNumber() + 1;
+				}
+
+				// Set current position
+				m_currentPosition.set(newLine, m_lineUpdateCountArray[newLine], 0);
+
+			} // Current line is NOT equal to most recently read line
+
+		} // End of line is reached
+
+		return getCurrentCharacter();
+
+	} // moveToNextCharacter
+
+	//
+	// s e t C u r r e n t P o s i t i o n
+	//
+	bool DinoLineBuffer::setCurrentPosition(const DinoLineBufferPosition &newPosition){
+
+		// Given positon is not valid
+		if (!isValidPosition(newPosition))
+		{
+			return false;
+		}
+
+		m_currentPosition = newPosition;
+
+		return true;
+
+	} // setCurrentPosition
+
+	//
+	// s k i p W h i t e s p a c e
+	//
+	void DinoLineBuffer::skipWhitespace()
+	{
+
+		if (getCurrentCharacter() == EOF) {
+			return;
+		}
+
+		while ((isspace(getCurrentCharacter())) && (!(getCurrentCharacter() == EOF)))
+		{
+			moveToNextCharacter();
+		}
+
+	} // skipWhitespace
+
+	//
+	// e x t r a c t S t r i n g
+	//
+	bool DinoLineBuffer::extractString(
+		const DinoLineBufferPosition &startPosition,
+		const DinoLineBufferPosition &endPosition,
+		char *targetString)
+	{
+
+		// StartPosition invalid, probably because the line of the startPosition
+		// has already been overwritten, i.e. the string is too long
+		if (!isValidPosition(startPosition))
+		{
+			ogdf::strcpy(targetString, DinoLineBuffer::c_maxStringLength, "String too long!");
+			return false;
+		}
+
+		// EndPosition must be valid
+		OGDF_ASSERT(isValidPosition(endPosition))
+
+		// Remember original currentPosition
+		DinoLineBufferPosition originalCurrentPosition = getCurrentPosition();
+
+		// Begin at startPosition
+		setCurrentPosition(startPosition);
+
+		// Copy characters to tempString
+		int targetStringIndex = 0;
+		while (getCurrentPosition() != endPosition)
+		{
+
+			// Check if eof
+			OGDF_ASSERT(getCurrentCharacter() != EOF)
+
+			// Put character into targetString
+			targetString[targetStringIndex] = getCurrentCharacter();
+			++targetStringIndex;
+
+			// String too long
+			if (targetStringIndex >= DinoLineBuffer::c_maxStringLength - 1){
+
+				ogdf::strcpy(targetString, DinoLineBuffer::c_maxStringLength, "String too long!");
+
+				// Set back the original current position
+				setCurrentPosition(originalCurrentPosition);
+
+				return false;
+
+			}
+
+			// Move to next character
+			moveToNextCharacter();
+
+		} // Copy characters to tempString
+
+		// Set back the original current position
+		setCurrentPosition(originalCurrentPosition);
+
+		// Terminate string
+		targetString[targetStringIndex] = '\0';
+
+		return true;
+
+	} // extractString
+
+	//
+	// i s V a l i d P o s i t i o n
+	//
+	bool DinoLineBuffer::isValidPosition(const DinoLineBufferPosition &position) const
+	{
+
+		// We can assume that the position is valid according to
+		// array ranges since these things are checked in constructor and set of
+		// class DinoLineBufferPosition
+
+		// The line of the given position has already been overwritten
+		if (position.getLineUpdateCount() !=
+			m_lineUpdateCountArray[position.getLineNumber()])
+		{
+			return false;
+		}
+
+		return true;
+
+	} // isValidPosition
+
+} // namespace ogdf
diff --git a/ogdf/fileformats/DinoLineBuffer.h b/ogdf/fileformats/DinoLineBuffer.h
new file mode 100644
index 0000000..57675ce
--- /dev/null
+++ b/ogdf/fileformats/DinoLineBuffer.h
@@ -0,0 +1,247 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of the clssses DinoLineBuffer and
+ * DinoLineBufferPosition
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_DINO_LINE_BUFFER_H
+#define OGDF_DINO_LINE_BUFFER_H
+
+#include "../basic/basic.h"
+
+
+namespace ogdf {
+
+	//---------------------------------------------------------
+	// D i n o L i n e B u f f e r P o s i t i o n
+	//---------------------------------------------------------
+	/** This class characterizes uniquely a position in the line
+	 *  buffer.
+	 *
+	 * Note that the element m_lineUpdateCount allows to check
+	 * if a position is obsolete, i.e. its content has already
+	 * been overwritten.
+	 */
+	class OGDF_EXPORT DinoLineBufferPosition {
+
+	private:
+
+		/** Contains the lineNumber; Range [0 .. c_maxNoOfLines-1] */
+		int m_lineNumber;
+
+		/** Contains the number of times line m_lineNumber has been
+		 * overwritten by new data; Range [0 .. ]
+		 */
+		int m_lineUpdateCount;
+
+		/** Contains the position in line m_lineNumber; Range [0 .. c_maxLineLength-1] */
+		int m_linePosition;
+
+	public:
+
+		/** Default Constructor */
+		DinoLineBufferPosition() :
+			m_lineNumber(0),
+			m_lineUpdateCount(0),
+			m_linePosition(0)
+		{ }
+
+		/** Constructor */
+		DinoLineBufferPosition(
+			int lineNumber,
+			int lineUpdateCount,
+			int linePosition);
+
+		/** Copy Constructor */
+		DinoLineBufferPosition(const DinoLineBufferPosition &position);
+
+		/** Get the line number */
+		inline int getLineNumber() const {
+			return m_lineNumber;
+		}
+
+		/** Get the update count of the line */
+		inline int getLineUpdateCount() const {
+			return m_lineUpdateCount;
+		}
+
+		/** Get the position in the line */
+		inline int getLinePosition() const {
+			return m_linePosition;
+		}
+
+		/** Set all values */
+		void set(int lineNumber, int lineUpdateCount, int linePosition);
+
+		/** Increments the position by 1 */
+		void incrementPosition();
+
+		/** Test if inequal */
+		bool operator!=(const DinoLineBufferPosition &position) const;
+
+		/** Assignment */
+		const DinoLineBufferPosition &operator=(const DinoLineBufferPosition &position);
+
+	}; // DinoLineBufferPosition
+
+	//---------------------------------------------------------
+	// D i n o L i n e B u f f e r
+	//---------------------------------------------------------
+	/** This class maintains the input file and provides a
+	 *  convenient interface to handle it.
+	 */
+	class OGDF_EXPORT DinoLineBuffer {
+
+	public:
+
+		// Maximal length of a string handled by extractString()
+		const static int c_maxStringLength;
+
+		// Maximal length of one line
+		const static int c_maxLineLength;
+
+		// Maximal number of lines
+		const static int c_maxNoOfLines;
+
+	private:
+
+		// Handle to the input file
+		istream *m_pIs;
+
+		// Contains for each line of the line buffer its update count
+		// Range is [0 .. c_maxNoOfLines]
+		int *m_lineUpdateCountArray;
+
+		// Pointer to the line buffer
+		char *m_pLinBuf;
+
+		// The current position in m_pLinBuf
+		DinoLineBufferPosition m_currentPosition;
+
+		// The line which has been read from the file most recently;
+		// this does not have to be equal to m_currentPosition.m_lineNumber
+		// because of the lookahead facilities.
+		// Range is [0 .. c_maxNoOfLines - 1]
+		int m_numberOfMostRecentlyReadLine;
+
+		// Contains the current line number of the input file;
+		int m_inputFileLineCounter;
+
+	public:
+
+		// construction
+		DinoLineBuffer(const char *fileName);
+
+		// destruction
+		~DinoLineBuffer();
+
+		// Returns the current position (as a copy)
+		DinoLineBufferPosition getCurrentPosition() const{
+			return m_currentPosition;
+		}
+
+		// Returns the character which is currently pointed to
+		inline char getCurrentCharacter() const {
+			return m_pLinBuf[(m_currentPosition.getLineNumber() * DinoLineBuffer::c_maxLineLength) +
+								 m_currentPosition.getLinePosition()];
+		}
+
+		// Returns line number of the most recently read line of the input file
+		inline int getInputFileLineCounter() const {
+			return m_inputFileLineCounter;
+		}
+
+		// Moves to the next position;
+		// reading of new lines and handling of eof are done internally.
+		// If end of file is reached the position will stuck to EOF character.
+		// The current character after moving is returned
+		char moveToNextCharacter();
+
+		// Sets the current position to new positon.
+		// Takes care if the given newPosition is valid.
+		// Returns false if given position is invalid
+		bool setCurrentPosition(const DinoLineBufferPosition &newPosition);
+
+		// Moves to the next character until the currentCharacter is
+		// no whitespace.
+		void skipWhitespace();
+
+		// Copys the characters which have been extracted from the
+		// line buffer starting from position startPosition (including it)
+		// to endPosition (excluding it) to targetString (terminated by '\0').
+		// The length of strings is limited to c_maxStringLength
+		//
+		// Returns false if the startPosition is not valid, i.e. the string
+		// is too long; targetString will contain the message "String too long!"
+		bool extractString(
+			const DinoLineBufferPosition &startPostion,
+			const DinoLineBufferPosition &endPosition,
+			char *targetString);
+
+	private:
+
+		// Returns a pointer to the character which is currently pointed to
+		inline char *getCurrentCharacterPointer() {
+			return &m_pLinBuf[(m_currentPosition.getLineNumber() * DinoLineBuffer::c_maxLineLength) +
+				m_currentPosition.getLinePosition()];
+		}
+
+		// Sets the given character to the current position
+		inline void setCurrentCharacter(char c) {
+			m_pLinBuf[(m_currentPosition.getLineNumber() * DinoLineBuffer::c_maxLineLength) +
+				m_currentPosition.getLinePosition()] = c;
+		}
+
+		// Checks wether the given position is valid
+		bool isValidPosition(const DinoLineBufferPosition &position) const;
+
+	}; // class DinoLineBuffer
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/fileformats/DinoTools.cpp b/ogdf/fileformats/DinoTools.cpp
new file mode 100644
index 0000000..868ac8d
--- /dev/null
+++ b/ogdf/fileformats/DinoTools.cpp
@@ -0,0 +1,114 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of some tools
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "DinoTools.h"
+#include <ctype.h>
+
+namespace ogdf {
+
+	//
+	// s t r i n g T o D o u b l e A r r a y
+	//
+	void DinoTools::stringToDoubleArray(const String &str, Array<double> &doubleArray)
+	{
+		size_t strIndex = 0;
+		char tempString[20];
+		int tempStringIndex = 0;
+
+		for (int i = 0; i < 4; i++){
+
+			tempStringIndex = 0;
+
+			// Skip whitespace
+			while (isspace(str[strIndex])){
+				++strIndex;
+			}
+
+			// Copy characters of double value
+			// values are separated by comma
+			while (str[strIndex] != ','){
+
+				tempString[tempStringIndex] = str[strIndex];
+				++tempStringIndex;
+				++strIndex;
+
+			}
+
+			// Skip over ','
+			++strIndex;
+
+			// Terminate string
+			tempString[tempStringIndex] = '\0';
+
+			// Put double value into array
+			doubleArray[i] = atof(tempString);
+
+		} // for
+
+	} // stringToDoubleArray
+
+	//
+	// r e p o r t E r r o r
+	//
+	void DinoTools::reportError(
+		const char *functionName,
+		int sourceLine,
+		const char *message,
+		int inputFileLine,
+		bool abort)
+	{
+		cerr << "Error reported!" << endl;
+		cerr << "\tFunction: " << functionName << "(), Source line: " << sourceLine << endl;
+		cerr << "\tMessage: " << message << endl;
+		if (inputFileLine != -1) {
+			cerr << "\tCurrent line of input file: " << inputFileLine;
+		}
+
+		cerr << endl;
+
+		if (abort)
+			exit(1);
+
+	} // reportError
+
+} // namespace ogdf
diff --git a/ogdf/fileformats/DinoTools.h b/ogdf/fileformats/DinoTools.h
new file mode 100644
index 0000000..6629908
--- /dev/null
+++ b/ogdf/fileformats/DinoTools.h
@@ -0,0 +1,87 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of the class DinoTools
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_DINO_TOOLS_H
+#define OGDF_DINO_TOOLS_H
+
+#include "../basic/String.h"
+#include "../basic/Array.h"
+
+
+namespace ogdf {
+
+	//---------------------------------------------------------
+	// D i n o T o o l s
+	//
+	// provides some useful tools
+	//---------------------------------------------------------
+	class OGDF_EXPORT DinoTools {
+
+	public:
+
+		// Extracts the single values of string str with format
+		// "x, y, width, height," and puts them into doubleArray
+		static void stringToDoubleArray(const String &str, Array<double> &doubleArray);
+
+		// Reports errors to cout
+		// Value -1 for inputFileLine indicates that this information is
+		// not available
+		static void reportError(const char *functionName,
+								int sourceLine,
+								const char *errorMessage,
+								int inputFileLine = -1,
+								bool abort = true);
+
+	}; // class DinoTools
+
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/fileformats/DinoXmlParser.cpp b/ogdf/fileformats/DinoXmlParser.cpp
new file mode 100644
index 0000000..938fb9b
--- /dev/null
+++ b/ogdf/fileformats/DinoXmlParser.cpp
@@ -0,0 +1,913 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of XML parser (class DinoXmlParser)
+ * (used for parsing and reading XML files)
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "DinoXmlParser.h"
+#include "DinoTools.h"
+
+#include <ctype.h>
+#include <string.h>
+
+
+namespace ogdf {
+
+	//-----------------------------------------------------
+	//Methods for handling XML objects for OGML file format
+	//-----------------------------------------------------
+	bool XmlTagObject::isLeaf() const {
+		if(this->m_pFirstSon)	return false;
+		else return true;
+	}
+
+	bool XmlTagObject::findSonXmlTagObjectByName(
+		const String sonsName,
+		XmlTagObject *&son) const
+	{
+		XmlTagObject *currentSon = this->m_pFirstSon;
+		while(currentSon && currentSon->m_pTagName->key() != sonsName)
+		{
+			currentSon = currentSon->m_pBrother;
+		}
+
+		if(currentSon) {
+			son = currentSon;
+			return true;
+		}
+
+		son = 0;
+		return false;
+	}
+
+	bool XmlTagObject::findSonXmlTagObjectByName(
+		const String sonsName,
+		List<XmlTagObject*> &sons) const
+	{
+		bool found;
+		XmlTagObject *currentSon = this->m_pFirstSon;
+		while(currentSon)
+		{
+			if(currentSon->m_pTagName->key() == sonsName) {
+				found = true;
+				sons.pushBack(currentSon);
+			}
+			currentSon = currentSon->m_pBrother;
+		}
+
+		return found;
+	}
+
+	bool XmlTagObject::hasMoreSonXmlTagObject(const List<String> &sonNamesToIgnore) const {
+		const XmlTagObject *currentSon = this->m_pFirstSon;
+		while(currentSon)
+		{
+
+			//Proof if name of currentSon is inequal to all in sonsName
+			ListConstIterator<String> it;
+			bool found = false;
+			for(it = sonNamesToIgnore.begin(); it.valid() && !found; it++) {
+					if(*it == currentSon->m_pTagName->key()) found = true;
+			}
+			if(!found) return true;
+			currentSon = currentSon->m_pBrother;
+		}
+
+		return false;
+	}
+
+	bool XmlTagObject::findXmlAttributeObjectByName(
+		const String attName,
+		XmlAttributeObject*& attribute) const
+	{
+		XmlAttributeObject *currentAttribute = this->m_pFirstAttribute;
+		while ((currentAttribute != 0) &&
+			(currentAttribute->m_pAttributeName->key() != attName))
+		{
+			currentAttribute = currentAttribute->m_pNextAttribute;
+		}
+
+		// Attribute found
+		if (currentAttribute != 0){
+			attribute = currentAttribute;
+			return true;
+		}
+
+		// Not found
+		attribute = 0;
+		return false;
+	}
+
+	bool XmlTagObject::isAttributeLess() const {
+		if(this->m_pFirstAttribute) return false;
+		else return true;
+	}
+
+
+	//
+	// ---------- D i n o X m l P a r s e r ------------------------
+	//
+
+	//
+	// C o n s t r u c t o r
+	//
+	DinoXmlParser::DinoXmlParser(const char *fileName) :
+		m_pRootTag(0),
+		m_hashTableInfoIndex(0),
+		m_recursionDepth(0)
+	{
+		// Create scanner
+		m_pScanner = new DinoXmlScanner(fileName);
+
+	} // DinoXmlParser::DinoXmlParser
+
+	//
+	// D e s t r u c t o r
+	//
+	DinoXmlParser::~DinoXmlParser()
+	{
+		// Delete parse tree
+		if (m_pRootTag)
+			destroyParseTree(m_pRootTag);
+
+		// Delete scanner
+		delete m_pScanner;
+
+	} // DinoXmlParser::~DinoXmlParser
+
+
+	//
+	//  c r e a t e P a r s e T r e e
+	//
+	void DinoXmlParser::createParseTree()
+	{
+
+		// Info
+		//cout << "Parsing..." << endl;
+
+		// create parse tree
+		m_pRootTag = parse();
+
+		// recursion depth not correct
+		if (m_recursionDepth != 0) {
+			DinoTools::reportError("DinoXmlParser::createParseTree", __LINE__, "Recursion depth not equal to zero after parsing!");
+		}
+
+	} // createParseTree
+
+	//
+	// d e s t r o y P a r s e T r e e
+	//
+	void DinoXmlParser::destroyParseTree(XmlTagObject *root)
+	{
+		// Destroy all attributes of root
+		XmlAttributeObject *currentAttribute = root->m_pFirstAttribute;
+		while (currentAttribute != 0){
+			XmlAttributeObject *nextAttribute = currentAttribute->m_pNextAttribute;
+			delete currentAttribute;
+			currentAttribute = nextAttribute;
+		}
+
+		// Traverse children of root and destroy them
+		XmlTagObject *currentChild = root->m_pFirstSon;
+		while (currentChild != 0){
+			XmlTagObject *nextChild = currentChild->m_pBrother;
+			destroyParseTree(currentChild);
+			currentChild = nextChild;
+		}
+
+		// Destroy root itself
+		delete root;
+
+	} // destroyParseTree
+
+
+	//
+	// p a r s e
+	//
+	// Take a look at the state machine of parse() to understand
+	// what is going on here.
+	//
+	// TODO: It seems to be useful that this function throws an exception
+	//       if something goes wrong.
+	XmlTagObject *DinoXmlParser::parse()
+	{
+		// Increment recursion depth
+		++m_recursionDepth;
+
+		// currentTagObject is the tag object we want to create
+		// in this invocation of parse()
+		XmlTagObject *currentTagObject = 0;
+
+		// Now we are in the start state of the state machine
+		for( ; ; )
+		{
+			XmlToken token = m_pScanner->getNextToken();
+
+			// Expect "<", otherwise failure
+			if (token != openingBracket){
+				DinoTools::reportError("DinoXmlParser::parse",
+							__LINE__,
+							"Opening Bracket expected!",
+							getInputFileLineCounter());
+			}
+
+			// Let's look what comes after "<"
+			token = m_pScanner->getNextToken();
+
+			// Read "?", i.e. we have the XML header line <? ... ?>
+			if (token == questionMark){
+
+				// Skip until we reach the matching question mark
+				if (!m_pScanner->skipUntil('?')){
+					DinoTools::reportError("DinoXmlParser::parse",
+								__LINE__,
+								"Could not found the matching '?'",
+								getInputFileLineCounter());
+				}
+
+				// Consume ">", otherwise failure
+				token = m_pScanner->getNextToken();
+				if (token != closingBracket){
+					DinoTools::reportError("DinoXmlParser::parse",
+								__LINE__,
+								"Closing Bracket expected!",
+								getInputFileLineCounter());
+				}
+
+				// Go to start state of the state machine
+				continue;
+
+			} // end of Read "?"
+
+			// Read "!", i.e. we have a XML comment <!-- bla -->
+			if (token == exclamationMark){
+
+				// A preambel comment <!lala > which could be also nested
+				if ((m_pScanner->getNextToken() != minus) ||
+					(m_pScanner->getNextToken() != minus))
+				{
+					if (!m_pScanner->skipUntilMatchingClosingBracket()){
+
+						DinoTools::reportError("DinoXmlParser::parse",
+							__LINE__,
+							"Could not find closing comment bracket!",
+							getInputFileLineCounter());
+					}
+
+					continue;
+				}
+
+				// Find end of comment
+				bool endOfCommentFound = false;
+				while (!endOfCommentFound){
+
+					// Skip until we find a - (and skip over it)
+					if (!m_pScanner->skipUntil('-', true)){
+						DinoTools::reportError("DinoXmlParser::parse",
+							__LINE__,
+							"Closing --> of comment not found!",
+							getInputFileLineCounter());
+					}
+
+					// The next characters must be -> (note that one minus is already consumed)
+					if ((m_pScanner->getNextToken() == minus) &&
+						(m_pScanner->getNextToken() == closingBracket))
+					{
+						endOfCommentFound = true;
+					}
+
+				} // while
+
+				// Go to start state of the state machine
+				continue;
+
+			} // end of Read "!"
+
+			// We have found an identifier, i.e. a tag name
+			if (token == identifier){
+
+				// Get hash element of token string
+				HashedString *tagName =
+					hashString(m_pScanner->getCurrentTokenString());
+
+				// Create new tag object
+				currentTagObject = new XmlTagObject(tagName);
+				if (currentTagObject == 0){
+					OGDF_THROW(InsufficientMemoryException);
+				}
+				//push (opening) tagName to stack
+				m_tagObserver.push(tagName->key());
+				// set depth of current tag object
+				currentTagObject->setDepth(m_recursionDepth);
+
+				// set line of the tag object in the parsed xml document
+				currentTagObject->setLine(getInputFileLineCounter());
+
+				// Next token
+				token = m_pScanner->getNextToken();
+
+				// Again we found an identifier, so it must be an attribute
+				if (token == identifier){
+
+					// Read list of attributes
+					do {
+						// Save the attribute name
+						HashedString *attributeName =
+							hashString(m_pScanner->getCurrentTokenString());
+
+						// Consume "=", otherwise failure
+						token = m_pScanner->getNextToken();
+						if (token != equalSign)
+						{
+							DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"Equal Sign expected!",
+										getInputFileLineCounter());
+						}
+
+						// Read value
+						token = m_pScanner->getNextToken();
+						if ((token != quotedValue) &&
+							(token != identifier) &&
+							(token != attributeValue))
+						{
+							DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"No valid attribute value!",
+										getInputFileLineCounter());
+						}
+
+						// Create a new XmlAttributeObject
+						XmlAttributeObject *currentAttributeObject =
+							new XmlAttributeObject(attributeName, hashString(m_pScanner->getCurrentTokenString()));
+						if (currentAttributeObject == 0){
+							OGDF_THROW(InsufficientMemoryException);
+						}
+
+						// Append attribute to attribute list of the current tag object
+						appendAttributeObject(currentTagObject, currentAttributeObject);
+
+						// Get next token
+						token = m_pScanner->getNextToken();
+
+					}
+					while (token == identifier);
+
+				} // Found an identifier of an attribute
+
+				// Read "/", i.e. the tag is ended immeadiately, e.g.
+				// <A ... /> without a closing tag </A>
+				if (token == slash){
+
+					// Consume ">", otherwise failure
+					token = m_pScanner->getNextToken();
+					if (token != closingBracket)
+					{
+						DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Closing Bracket expected!",
+									getInputFileLineCounter());
+					}
+
+					// The tag is closed and ended so we return
+					String s = m_tagObserver.pop();
+					--m_recursionDepth;
+					return currentTagObject;
+
+				} // end of Read "/"
+
+				// Read ">", i.e. the tag is closed and we
+				// expect some content
+				if (token == closingBracket){
+
+					// We read something different from "<", so we have to
+					// deal with a tag value now, i.e. a string inbetween the
+					// opening and the closing tag, e.g. <A ...> lalala </A>
+					if (m_pScanner->testNextToken() != openingBracket){
+
+						// Read the characters until "<" is reached and put them into
+						// currentTagObject
+						m_pScanner->readStringUntil('<');
+						currentTagObject->m_pTagValue = hashString(m_pScanner->getCurrentTokenString());
+
+						// We expect a closing tag now, i.e. </id>
+						token = m_pScanner->getNextToken();
+						if (token != openingBracket)
+						{
+							DinoTools::reportError("DinoXmlParser::parse",
+								__LINE__,
+								"Opening Bracket expected!",
+								getInputFileLineCounter());
+						}
+
+						token = m_pScanner->getNextToken();
+						if (token != slash)
+						{
+							DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"Slash expected!",
+										getInputFileLineCounter());
+						}
+
+						token = m_pScanner->getNextToken();
+						if (token != identifier)
+						{
+							DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"Identifier expected!",
+										getInputFileLineCounter());
+						}
+
+						// next token is the closing tag
+						String nextTag(m_pScanner->getCurrentTokenString());
+						// pop corresponding tag from stack
+						String s = m_tagObserver.pop();
+						// compare the two tags
+						if (s != nextTag)
+						{
+							// the closing tag doesn't correspond to the opening tag:
+							DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"wrong closing tag!",
+										getInputFileLineCounter());
+						}
+
+						token = m_pScanner->getNextToken();
+						if (token != closingBracket)
+						{
+							DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"Closing Bracket expected!",
+										getInputFileLineCounter());
+						}
+
+						// The tag is closed so we return
+						--m_recursionDepth;
+						return currentTagObject;
+
+					} // end of read something different from "<"
+
+					// Found "<", so a (series of) new tag begins and we have to perform
+					// recursive invocation of parse()
+					//
+					// There are two exceptions:
+					// - a slash follows afer <, i.e. we have a closing tag
+					// - an exclamation mark follows after <, i.e. we have a comment
+					while (m_pScanner->testNextToken() == openingBracket){
+
+						// Leave the while loop if a closing tag occurs
+						if (m_pScanner->testNextNextToken() == slash){
+							break;
+						}
+
+						// Ignore comments
+						if (m_pScanner->testNextNextToken() == exclamationMark){
+
+							// Comment must start with <!--
+							if ((m_pScanner->getNextToken() != openingBracket) ||
+								(m_pScanner->getNextToken() != exclamationMark) ||
+								(m_pScanner->getNextToken() != minus) ||
+								(m_pScanner->getNextToken() != minus))
+							{
+								DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Comment must start with <!--",
+									getInputFileLineCounter());
+							}
+
+							// Find end of comment
+							bool endOfCommentFound = false;
+							while (!endOfCommentFound){
+
+								// Skip until we find a - (and skip over it)
+								if (!m_pScanner->skipUntil('-', true)){
+									DinoTools::reportError("DinoXmlParser::parse",
+										__LINE__,
+										"Closing --> of comment not found!",
+										getInputFileLineCounter());
+								}
+
+								// The next characters must be -> (note that one minus is already consumed)
+								if ((m_pScanner->getNextToken() == minus) &&
+									(m_pScanner->getNextToken() == closingBracket))
+								{
+									endOfCommentFound = true;
+								}
+
+							} // while
+
+							// Proceed with outer while loop
+							continue;
+
+						} // Ignore comments
+
+						// The new tag object is a son of the current tag object
+						XmlTagObject *sonTagObject = parse();
+						appendSonTagObject(currentTagObject, sonTagObject);
+
+					} // while
+
+					// Now we have found all tags.
+					// We expect a closing tag now, i.e. </id>
+					token = m_pScanner->getNextToken();
+					if (token != openingBracket)
+					{
+						DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Opening Bracket expected!",
+									getInputFileLineCounter());
+					}
+
+					token = m_pScanner->getNextToken();
+					if (token != slash)
+					{
+						DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Slash expected!",
+									getInputFileLineCounter());
+					}
+
+					token = m_pScanner->getNextToken();
+					if (token != identifier)
+					{
+						DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Identifier expected!",
+									getInputFileLineCounter());
+					}
+
+ 					// next token is the closing tag
+					String nextTag(m_pScanner->getCurrentTokenString());
+					// pop corresponding tag from stack
+					String s = m_tagObserver.pop();
+					// compare the two tags
+					if (s != nextTag)
+					{
+						// the closing tag doesn't correspond to the opening tag:
+						DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"wrong closing tag!",
+									getInputFileLineCounter());
+					}
+
+					token = m_pScanner->getNextToken();
+					if (token != closingBracket)
+					{
+						DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Closing Bracket expected!",
+									getInputFileLineCounter());
+					}
+
+					--m_recursionDepth;
+
+					// check if Document contains code after the last closing bracket
+					if (m_recursionDepth == 0){
+						token = m_pScanner->getNextToken();
+						if (token != endOfFile){
+							DinoTools::reportError("DinoXmlParser::parse",
+									__LINE__,
+									"Document contains code after the last closing bracket!",
+									getInputFileLineCounter());
+						}
+					}
+
+					return currentTagObject;
+
+				} // end of Read ">"
+
+				OGDF_ASSERT(false)
+				//continue;
+
+			} // end of found identifier
+
+			OGDF_ASSERT(false)
+
+		} // end of while (true)
+
+	} // parse
+
+	//
+	// a p p e n d A t t r i b u t e O b j e c t
+	//
+	void DinoXmlParser::appendAttributeObject(
+		XmlTagObject *tagObject,
+		XmlAttributeObject *attributeObject)
+	{
+
+		// No attribute exists yet
+		if (tagObject->m_pFirstAttribute == 0) {
+			tagObject->m_pFirstAttribute = attributeObject;
+		}
+		// At least one attribute exists
+		else{
+
+			XmlAttributeObject *currentAttribute = tagObject->m_pFirstAttribute;
+
+			// Find the last attribute
+			while (currentAttribute->m_pNextAttribute != 0){
+				currentAttribute = currentAttribute->m_pNextAttribute;
+			}
+
+			// Append given attribute
+			currentAttribute->m_pNextAttribute = attributeObject;
+
+		}
+
+	} // appendAttributeObject
+
+	//
+	// a p p e n d S o n T a g O b j e c t
+	//
+	void DinoXmlParser::appendSonTagObject(
+		XmlTagObject *currentTagObject,
+		XmlTagObject *sonTagObject)
+	{
+		// No Son exists yet
+		if (currentTagObject->m_pFirstSon == 0) {
+			currentTagObject->m_pFirstSon = sonTagObject;
+		}
+		// At least one son exists
+		else{
+
+			XmlTagObject *currentSon = currentTagObject->m_pFirstSon;
+
+			// Find the last son
+			while (currentSon->m_pBrother != 0){
+				currentSon = currentSon->m_pBrother;
+			}
+
+			// Append given son
+			currentSon->m_pBrother = sonTagObject;
+		}
+
+	} // appendSonTagObject
+
+	//
+	// h a s h S t r i n g
+	//
+	HashedString *DinoXmlParser::hashString(const String &str)
+	{
+		// insertByNeed inserts a new element (str, -1) into the
+		// table if no element with key str exists;
+		// otherwise nothing is done
+		HashedString *key = m_hashTable.insertByNeed(str,-1);
+
+		// String str was not contained in the table
+		// --> assign a new info index to the new string
+		if(key->info() == -1){
+			key->info() = m_hashTableInfoIndex++;
+		}
+
+		return key;
+
+	} // hashString
+
+	//
+	// t r a v e r s e P a t h
+	//
+	bool DinoXmlParser::traversePath(
+		const XmlTagObject &startTag,
+		const Array<int> &infoIndexPath,
+		const XmlTagObject *&targetTag) const
+	{
+		// Traverse array
+		const XmlTagObject *currentTag = &startTag;
+		for (int i = 0; i < infoIndexPath.size(); i++){
+
+			const XmlTagObject *sonTag;
+
+			// Not found
+			if (!findSonXmlTagObject(*currentTag, infoIndexPath[i], sonTag)){
+				return false;
+			}
+
+			// Found
+			currentTag = sonTag;
+
+		} // for
+
+		targetTag = currentTag;
+		return true;
+
+	} // traversePath
+
+	//
+	// f i n d S o n X m l T a g O b j e c t
+	//
+	bool DinoXmlParser::findSonXmlTagObject(const XmlTagObject &father,
+			 								int sonInfoIndex,
+											const XmlTagObject *&son) const
+	{
+		// Traverse sons
+		const XmlTagObject *currentSon = father.m_pFirstSon;
+		while ((currentSon != 0) &&
+			(currentSon->m_pTagName->info() != sonInfoIndex))
+		{
+			currentSon = currentSon->m_pBrother;
+		}
+
+		// Son found
+		if (currentSon != 0){
+			son = currentSon;
+			return true;
+		}
+
+		// Not found
+		son = 0;
+		return false;
+
+	} // findSonXmlTagObject
+
+	//
+	// f i n d B r o t h e r X m l T a g O b j e c t
+	//
+	bool DinoXmlParser::findBrotherXmlTagObject(const XmlTagObject &currentTag,
+												int brotherInfoIndex,
+												const XmlTagObject *&brother) const
+	{
+
+		const XmlTagObject *currentBrother = currentTag.m_pBrother;
+		while ((currentBrother != 0) &&
+			(currentBrother->m_pTagName->info() != brotherInfoIndex))
+		{
+			currentBrother = currentBrother->m_pBrother;
+		}
+
+		// brother found
+		if (currentBrother != 0){
+			brother = currentBrother;
+			return true;
+		}
+
+		// Not found
+		brother = 0;
+		return false;
+
+	} // findBrotherXmlTagObject
+
+	//
+	// f i n d X m l A t t r i b u t e O b j e c t
+	//
+	bool DinoXmlParser::findXmlAttributeObject(
+		const XmlTagObject &currentTag,
+		int attributeInfoIndex,
+		const XmlAttributeObject *&attribute) const
+	{
+		const XmlAttributeObject *currentAttribute = currentTag.m_pFirstAttribute;
+		while ((currentAttribute != 0) &&
+			(currentAttribute->m_pAttributeName->info() != attributeInfoIndex))
+		{
+			currentAttribute = currentAttribute->m_pNextAttribute;
+		}
+
+		// Attribute found
+		if (currentAttribute != 0){
+			attribute = currentAttribute;
+			return true;
+		}
+
+		// Not found
+		attribute = 0;
+		return false;
+
+	} // findXmlAttributeObject
+
+	//
+	// p r i n t H a s h T a b l e
+	//
+	void DinoXmlParser::printHashTable(ostream &os)
+	{
+		// Header
+		os << "\n--- Content of Hash table: m_hashTable ---\n" << endl;
+
+		// Get iterator
+		HashConstIterator<String, int> it;
+
+		// Traverse table
+		for( it = m_hashTable.begin(); it.valid(); ++it){
+			os << "\"" << it.key() << "\" has index " << it.info() << endl;
+		}
+
+	} // printHashTable
+
+	//
+	// p r i n t X m l T a g O b j e c t T r e e
+	//
+	void DinoXmlParser::printXmlTagObjectTree(
+		ostream &outs,
+		const XmlTagObject &rootObject,
+		int indent) const
+	{
+		printSpaces(outs, indent);
+
+		// Opening tag (bracket and Tag name)
+		outs << "<" << rootObject.m_pTagName->key();
+
+		// Attributes
+		XmlAttributeObject *currentAttribute = rootObject.m_pFirstAttribute;
+		while (currentAttribute != 0){
+
+			outs << " "
+				 << currentAttribute->m_pAttributeName->key()
+				 << " = \""
+				 << currentAttribute->m_pAttributeValue->key()
+				 << "\"";
+
+			// Next attribute
+			currentAttribute = currentAttribute->m_pNextAttribute;
+
+		} // while
+
+		// Closing bracket
+		outs << ">" << endl;
+
+		// Children
+		const XmlTagObject *currentChild = rootObject.m_pFirstSon;
+		while (currentChild != 0){
+
+			// Proceed recursively
+			printXmlTagObjectTree(outs, *currentChild, indent + 2);
+
+			// Next child
+			currentChild = currentChild->m_pBrother;
+
+		} // while
+
+		// Content
+		if (rootObject.m_pTagValue != 0){
+
+			printSpaces(outs, indent + 2);
+
+			outs << rootObject.m_pTagValue->key() << endl;
+
+		}
+
+		// Closing tag
+		printSpaces(outs, indent);
+		outs << "</" << rootObject.m_pTagName->key() << ">" << endl;
+
+	} // printXmlTagObjectTree
+
+	//
+	// p r i n t S p a c e s
+	//
+	void DinoXmlParser::printSpaces(ostream &outs, int nOfSpaces) const
+	{
+		for (int i = 0; i < nOfSpaces; i++){
+			outs << " ";
+		}
+
+	} // printSpaces
+
+
+	//
+	// o u t p u t O p e r a t o r  for DinoXmlParser
+	//
+	ostream &operator<<(ostream &os, const DinoXmlParser &parser)
+	{
+		parser.printXmlTagObjectTree(os, parser.getRootTag(), 0);
+		return os;
+	}
+
+
+} // namespace ogdf
diff --git a/ogdf/fileformats/DinoXmlParser.h b/ogdf/fileformats/DinoXmlParser.h
new file mode 100644
index 0000000..51576d1
--- /dev/null
+++ b/ogdf/fileformats/DinoXmlParser.h
@@ -0,0 +1,464 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Contains the struct declarations XmlAttributeObject, XmlTagObject
+ * and the class DinoXmlParser.
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_DINO_XML_PARSER_H
+#define OGDF_DINO_XML_PARSER_H
+
+#include "../basic/Stack.h"
+#include "../basic/String.h"
+#include "../basic/Hashing.h"
+#include "../basic/GraphAttributes.h"
+#include "DinoXmlScanner.h"
+
+
+
+namespace ogdf {
+
+	//---------------------------------------------------------
+	// H a s h e d S t r i n g
+	//---------------------------------------------------------
+
+	typedef HashElement<String,int> HashedString;
+
+	//---------------------------------------------------------
+	// X m l A t t r i b u t e O b j e c t
+	//---------------------------------------------------------
+	/** This struct represents an attribute associated to a tag.
+	 */
+	struct OGDF_EXPORT XmlAttributeObject {
+
+		/** Contains the name of the attribute, i.e.
+		 *  for <A attr1="value1"> ... </A> it contains "attr1"
+		 */
+		HashedString *m_pAttributeName;
+
+		/** Contains the value assigned to this attribute without qoutes, i.e.
+		 *  for <A attr1="value1"> ... </A> it contains "value1" and not "\"value1\"".
+		 */
+		HashedString *m_pAttributeValue;
+
+		/** Pointer to the next attribute and 0 if this is the only attribute. */
+		XmlAttributeObject *m_pNextAttribute;
+
+		/** Constructor */
+		XmlAttributeObject(HashedString *name, HashedString *value) :
+			m_pAttributeName(name),
+			m_pAttributeValue(value),
+			m_pNextAttribute(0)
+			{};
+
+		/** Destructor; will be performed in destroyParseTree(). */
+		~XmlAttributeObject(){};
+
+		/** Flag denotes whether attribute is valid or not. */
+		bool m_valid;
+
+		/** Getter. */
+		const String& getName() const {
+			return m_pAttributeName->key();
+		}
+
+		const String& getValue() const {
+			return m_pAttributeValue->key();
+		}
+
+		const bool& valid() const {
+			return m_valid;
+		}
+
+		/** Setter. */
+		void setValid() {
+			m_valid = true;
+		}
+
+		void setInvalid() {
+			m_valid = false;
+		}
+
+		// Overloaded new and delete operators
+		OGDF_NEW_DELETE
+
+	}; // struct XmlAttributeObject
+
+	//---------------------------------------------------------
+	// X m l T a g O b j e c t
+	//---------------------------------------------------------
+	/** This struct represents a node in the XML parse tree.
+	 */
+	struct OGDF_EXPORT XmlTagObject {
+
+		/** The identifier of the tag,
+		 *i.e. for <A> the identifier is "A"
+		 */
+		HashedString *m_pTagName;
+
+		/** Pointer to the first attribute;
+		 *  if there is more than one attribute these are linked by
+		 * m_pNextAttribute in struct XmlAttributeObject
+		 */
+		XmlAttributeObject *m_pFirstAttribute;
+
+		/** Contains the characters inbetween the start tag and the end tag,
+		 *  i.e. for <A attr1=... attr2=...> lala </A> it contains " lala "
+		 */
+		HashedString *m_pTagValue;
+
+		/** Contains the pointer to the first son tag object,
+		 *  i.e. for <A> <B> ... </B> <C> ... </C> </A> it contains a pointer
+		 *  to the object representing B
+		 *  The other children of A are reachable via m_pBrother of the first son,
+		 *  i.e. the variable m_pBrother of the object representing B contains a
+		 * pointer to the object representing C
+		 */
+		XmlTagObject *m_pFirstSon;
+
+		/** Contains the pointer to a brother tag object or 0 if this
+		 *  object is the only child
+		 */
+		XmlTagObject *m_pBrother;
+
+		/** Constructor */
+		XmlTagObject(HashedString *name) :
+			m_pTagName(name),
+			m_pFirstAttribute(0),
+			m_pTagValue(0),
+			m_pFirstSon(0),
+			m_pBrother(0),
+			m_valid(0)
+			{};
+
+		/** Destructor; will be performed in destroyParseTree(). */
+		~XmlTagObject(){};
+
+		/** Flag denotes whether attribute is valid or not. */
+		mutable bool m_valid;
+
+		/** integer value for the depth in the xml parse tree */
+		int m_depth;
+
+		/** integer value that stores the line number
+		 *  of the tag in the parsed xml document */
+		 int m_line;
+
+		public:
+
+		/**Checks if currentNode is leaf in the parse tree.
+		 * Returns true if list of sons is empty.
+		 * Returns false otherwise.
+		 *
+		 * NEW
+		 */
+		bool isLeaf() const;
+
+		/**Searches for a son with tag name sonsName.
+		 * Returns the son via the referenced pointer son.
+		 * Returns true if son is found.
+		 * Returns false, otherwise, son is set to NULL.
+		 *
+		 * NEW
+		 */
+		bool findSonXmlTagObjectByName(	const String sonsName,
+										XmlTagObject *&son) const;
+
+		/**Searches for sons with tag name sonsName.
+		 * Returns the sons via a list with pointers to the sons.
+		 * Returns true if at least one son was found.
+		 * Returns false otherwise, sons is set to NULL.
+		 *
+		 * NEW
+		 */
+		bool findSonXmlTagObjectByName(	const String sonsName,
+										List<XmlTagObject*> &sons) const;
+
+		/**Searches for sons of father which names are inequal to those
+		 * in list sonsNames.
+		 * Returns true if at least one son of father is found whose name
+		 * doesn't match one in sonsNames.
+		 * Returns false otherwise.
+		 *
+		 * NEW
+		 */
+		bool hasMoreSonXmlTagObject(const List<String> &sonNamesToIgnore) const;
+
+		/**Searches for an attribute with name name.
+		 *
+		 * NEW
+		 */
+		bool findXmlAttributeObjectByName(
+			const String attName,
+			XmlAttributeObject*& attribute) const;
+
+		/**Checks if currentTag owns at least one attribute.
+		 * Returns true if list of attributes isn't empty.
+		 * Returns false otherwise.
+		 *
+		 * NEW
+		 */
+		bool isAttributeLess() const;
+
+		/** Getter. */
+		const bool& valid() const {
+			return m_valid;
+		}
+
+		const String& getName() const {
+			return m_pTagName->key();
+		}
+
+		const String& getValue() const {
+			return m_pTagValue->key();
+		}
+
+		/** Setter. */
+		void setValid() const {
+			m_valid = true;
+		}
+
+		void setInvalid() {
+			m_valid = false;
+		}
+
+		/* get for depth of xml-tag-object */
+		const int& getDepth() const {
+			return m_depth;
+		}
+
+		/* setter for new depth */
+		void setDepth(int newDepth){
+			m_depth = newDepth;
+		}
+
+
+		/* get for line of xml-tag-object */
+		const int& getLine() const {
+			return m_line;
+		}
+
+		/* setter for line */
+		void setLine(int line) {
+			m_line = line;
+		}
+
+		// Overloaded new and delete operators
+		OGDF_NEW_DELETE
+
+	}; // struct XmlTagObject
+
+	//---------------------------------------------------------
+	// D i n o X m l P a r s e r
+	//---------------------------------------------------------
+	/** This class parses the XML input file and builds up a
+	 *  parse tree with linked elements XMLTagObject and
+	 *  XMLAttributeObject. The class DinoXmlScanner is used to
+	 *  get the token for the parse process.
+	 */
+	 class OGDF_EXPORT DinoXmlParser {
+
+		 friend ostream &operator<<(ostream&, const DinoXmlParser &);
+
+	 private:
+
+		/** Pointer to the root element of the parse tree. */
+		XmlTagObject *m_pRootTag;
+
+		/** Pointer to the scanner. */
+		DinoXmlScanner *m_pScanner;
+
+		/** Hash table for storing names of TagObjects and
+		 *  AttributeObjects in an efficient manner.
+		 *  The key element is String.
+		 *  The info element is int.
+		 */
+		Hashing<String,int> m_hashTable;
+
+		/** The info element of the hash table is simply an integer
+		 * number which is incremented for each new element (starting at 0).
+		 * The value m_hashTableInfoIndex - 1 is the last used index.
+		 */
+		int m_hashTableInfoIndex;
+
+		/** Recursion depth of parse(). */
+		int m_recursionDepth;
+		/** stack for checking correctness of correspondent closing tags */
+		Stack<String> m_tagObserver;
+
+
+	public:
+
+		/** Constructor.
+		 *  Inside the constructor the scanner is generated.
+		 */
+		DinoXmlParser(const char *fileName);
+
+		/** Destructor; destroys the parse tree. */
+		~DinoXmlParser();
+
+		/** Creates a new hash element and inserts it into the hash table.
+		 */
+		void addNewHashElement(const String &key, int info){
+			OGDF_ASSERT(info >= m_hashTableInfoIndex)
+			m_hashTable.fastInsert(key, info);
+			m_hashTableInfoIndex = info + 1;
+		}
+
+		/** Creates the parse tree and anchors it in m_pRootTag.
+		 *  TODO: Should return a value to indicate if success.
+		 */
+		void createParseTree();
+
+		/** Allows (non modifying) access to the parse tree. */
+		const XmlTagObject &getRootTag() const {
+			return *m_pRootTag;
+		}
+
+		/** Traverses the parseTree starting at startTag using the path
+		 * description in path, which contains the infoIndices of the tags
+		 * which have to be traversed.
+		 * If the XmlTagObject associated to the last infoIndex in the path is
+		 * found, it is returned via targetTag and the return value is true
+		 * If the XmlTagObject is not found the return value is false.
+		 */
+		bool traversePath(
+			const XmlTagObject &startTag,
+			const Array<int> &infoIndexPath,
+			const XmlTagObject *&targetTag) const;
+
+		/** Searches for a specific son (identified by sonInfoIndex)
+		 *  of father.
+		 *  Returns the son via the referenced pointer son.
+		 *  Returns true if son is found.
+		 *  Returns false otherwise, son is set to NULL.
+		 */
+		bool findSonXmlTagObject(
+			const XmlTagObject &father,
+			int sonInfoIndex,
+			const XmlTagObject *&son) const;
+
+		/** Searches for a specific brother (identified by brotherInfoIndex)
+		 *  of current.
+		 *  Returns the brother via the referenced pointer brother.
+		 *  Returns true if brother is found.
+		 *  Returns false otherwise, brother is set to NULL.
+		 */
+		bool findBrotherXmlTagObject(
+			const XmlTagObject &currentTag,
+			int brotherInfoIndex,
+			const XmlTagObject *&brother) const;
+
+		/** Searches for a specific attribute (identified by attributeInfoIndex)
+		 *  of current.
+		 *  Returns the attribute via the referenced pointer attribute.
+		 *  Returns true if attribute is found.
+		 *  Returns false otherwise, attribute is set to NULL.
+		 */
+		bool findXmlAttributeObject(
+			const XmlTagObject &currentTag,
+			int attributeInfoIndex,
+			const XmlAttributeObject *&attribute) const;
+
+		/** Returns line number of the most recently read line of
+		 *  the input file.
+		 */
+		inline int getInputFileLineCounter() const {
+			return m_pScanner->getInputFileLineCounter();
+		}
+
+		/** Prints the content of the hash table to os. */
+		void printHashTable(ostream &os);
+
+	private:
+
+		/** Destroys the parse tree appended to root. */
+		void destroyParseTree(XmlTagObject *root);
+
+		/** Parses the token stream provided by the scanner until a complete
+		 *  XmlTagObject is identified which will be returned.
+		 *  This function is likely to be called recursively
+		 * due to the recursive structure of XML documents.
+		 */
+		XmlTagObject* parse();
+
+		/** Append attributeObject to list of attributes of tagObject. */
+		void appendAttributeObject(
+			XmlTagObject *tagObject,
+			XmlAttributeObject *attributeObject);
+
+		/** Appends sonTagObject to the list of sons of currentTagObject. */
+		void appendSonTagObject(
+			XmlTagObject *currentTagObject,
+			XmlTagObject *sonTagObject);
+
+		/** Returns the hash element for the given string.
+		 *  If the key str is not contained in the table yet, it is
+		 *  inserted together with a new info index and the new
+		 *  hash element is returned.
+		 *  If the key str exists, the associated hash element is returned.
+		 */
+		HashedString *hashString(const String &str);
+
+		/** Prints the given XmlTagObject and its children recursively.
+		 *  The parameter indent is used as indentation value.
+		 */
+		void printXmlTagObjectTree(
+			ostream &os,
+			const XmlTagObject &rootObject,
+			int indent = 0) const;
+
+		/** Little helper that prints nOfSpaces space characters. */
+		void printSpaces(ostream &os, int nOfSpaces) const;
+
+	}; // class DinoXmlParser
+
+	/** Output operator for DinoXmlParser. */
+	ostream &operator<<(ostream &os, const DinoXmlParser &parser);
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/fileformats/DinoXmlScanner.cpp b/ogdf/fileformats/DinoXmlScanner.cpp
new file mode 100644
index 0000000..b8d6c70
--- /dev/null
+++ b/ogdf/fileformats/DinoXmlScanner.cpp
@@ -0,0 +1,448 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of the class DinoXmlScanner serving the
+ *        class DinoXmlParser
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "DinoXmlScanner.h"
+
+#include <ctype.h>
+#include <string.h>
+
+extern ofstream os;
+
+namespace ogdf {
+
+	//
+	// C o n s t r u c t o r
+	//
+	DinoXmlScanner::DinoXmlScanner(const char *fileName)
+	{
+		// Create line buffer
+		m_pLineBuffer = new DinoLineBuffer(fileName);
+
+		// Create current token string
+		m_pCurrentTokenString = new char[DinoLineBuffer::c_maxStringLength];
+		if (m_pCurrentTokenString == 0)
+			OGDF_THROW(InsufficientMemoryException);
+		for (int i = 0; i < DinoLineBuffer::c_maxStringLength; i++){
+			m_pCurrentTokenString[i] = '0';
+		}
+
+	} // DinoXmlScanner::DinoXmlScanner
+
+	//
+	// D e s t r u c t o r
+	//
+	DinoXmlScanner::~DinoXmlScanner()
+	{
+		// Destroy current token string
+		delete [] m_pCurrentTokenString;
+
+		// Destroy line buffer
+		delete m_pLineBuffer;
+
+	} // DinoXmlScanner::~DinoXmlScanner
+
+	//
+	// g e t N e x t T o k e n
+	//
+	// Take a look at the state machine of getNextToken() to understand
+	// what is going on here.
+	//
+	// TODO: It seems to be useful that this function throws an exception
+	//       if something goes wrong.
+	XmlToken DinoXmlScanner::getNextToken(){
+
+		// First skip whitespaces
+		m_pLineBuffer->skipWhitespace();
+
+		// Let's have a look at the current character
+		char currentCharacter = m_pLineBuffer->getCurrentCharacter();
+
+		// End of file reached
+		if (currentCharacter == EOF){
+			return endOfFile;
+		}
+
+		// First we handle single characters with a switch statement
+		switch (currentCharacter){
+
+		// Opening Bracket
+		case '<':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return openingBracket;
+			}
+			break;
+
+		// Closing Bracket
+		case '>':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return closingBracket;
+			}
+			break;
+
+		// Question Mark
+		case '?':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return questionMark;
+			}
+			break;
+
+		// Exclamation Mark
+		case '!':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return exclamationMark;
+			}
+			break;
+
+		// Minus
+		case '-':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return minus;
+			}
+			break;
+
+		// Slash
+		case '/':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return slash;
+			}
+			break;
+
+		// Equal Sign
+		case '=':
+			{
+				m_pLineBuffer->moveToNextCharacter();
+				return equalSign;
+			}
+			break;
+
+		} // end of switch
+
+		// Now we handle more complex token
+
+		// Identifier
+		if (isalpha(currentCharacter)){
+
+			// Put a pointer to the beginning of the identifier
+			DinoLineBufferPosition startPosition = m_pLineBuffer->getCurrentPosition();
+
+			currentCharacter = m_pLineBuffer->moveToNextCharacter();
+
+			// Read valid identifier characters
+			while ((isalnum(currentCharacter)) ||  // a..z|A..Z|0..9
+				(currentCharacter == '.') ||
+				(currentCharacter == ':') ||
+				(currentCharacter == '_'))
+			{
+				currentCharacter = m_pLineBuffer->moveToNextCharacter();
+			}
+
+			// Copy identifier to currentTokenString
+			m_pLineBuffer->extractString(startPosition,
+										 m_pLineBuffer->getCurrentPosition(),
+										 m_pCurrentTokenString);
+
+			// Return identifier token
+			return identifier;
+
+		} // end of identifier
+
+		// Quoted characters " ... " or ' ... '
+		if ((currentCharacter == '\"') ||
+			(currentCharacter == '\''))
+		{
+			// Distinguish what kind of quote sign we have
+			bool doubleQuote;
+			if (currentCharacter == '\"')
+				doubleQuote = true;
+			else
+				doubleQuote = false;
+
+			// Skip quote sign
+			currentCharacter = m_pLineBuffer->moveToNextCharacter();
+
+			// Read until the closing quotation sign is found
+			// String is copied to m_pCurrentTokenString by readStringUntil()
+			if (doubleQuote){
+				readStringUntil('\"', false);
+			}
+			else{
+				readStringUntil('\'', false);
+			}
+
+			// Skip over the end quote character
+			m_pLineBuffer->moveToNextCharacter();
+
+			// Return token for quoted value
+			return quotedValue;
+
+		} // end of quoted characters
+
+		// An atributeValue, i.e. a sequence of characters, digits, minus - or dot .
+		if ((isalnum(currentCharacter)) ||
+			(currentCharacter == '-') ||
+			(currentCharacter == '.'))
+		{
+			// Put a pointer to the beginning of the quoted text
+			DinoLineBufferPosition startPosition = m_pLineBuffer->getCurrentPosition();;
+
+			// Read until until an invalid character occurs
+			currentCharacter = m_pLineBuffer->moveToNextCharacter();
+			while ((isalnum(currentCharacter)) ||
+				(currentCharacter == '-') ||
+				(currentCharacter == '.'))
+			{
+				currentCharacter = m_pLineBuffer->moveToNextCharacter();
+			}
+
+			// Copy attributeValue to currentTokenString
+			m_pLineBuffer->extractString(startPosition,
+										 m_pLineBuffer->getCurrentPosition(),
+										 m_pCurrentTokenString);
+
+			// Return token for attribute value
+			return attributeValue;
+
+		} // end of an attributeValue
+
+		// No valid token
+		m_pLineBuffer->moveToNextCharacter();
+		return invalidToken;
+
+	} // getNextToken
+
+	//
+	// t e s t N e x t T o k e n
+	//
+	XmlToken DinoXmlScanner::testNextToken(){
+
+		// Save pointer to the current position
+		DinoLineBufferPosition originalPosition = m_pLineBuffer->getCurrentPosition();
+
+		// Call getNextToken()
+		XmlToken returnToken = getNextToken();
+
+		// Set pointer back to the original position
+		m_pLineBuffer->setCurrentPosition(originalPosition);
+
+		// Return token
+		return returnToken;
+
+	} // testNextToken
+
+	//
+	// t e s t N e x t N e x t T o k e n
+	//
+	XmlToken DinoXmlScanner::testNextNextToken(){
+
+		// Save pointer to the current position
+		DinoLineBufferPosition originalPosition = m_pLineBuffer->getCurrentPosition();
+
+		// Call getNextToken()
+		getNextToken();
+
+		// Again Call getNextToken()
+		XmlToken returnToken = getNextToken();
+
+		// Set pointer back to the original position
+		m_pLineBuffer->setCurrentPosition(originalPosition);
+
+		// Return token
+		return returnToken;
+
+	} // testNextNextToken
+
+	//
+	// s k i p U n t i l
+	//
+	bool DinoXmlScanner::skipUntil(char searchCharacter, bool skipOverSearchCharacter){
+
+		while (m_pLineBuffer->getCurrentCharacter() != EOF){
+
+			// Search character has been found!
+			if (m_pLineBuffer->getCurrentCharacter() == searchCharacter){
+
+				// Move to the position behind the search character if desired
+				if (skipOverSearchCharacter){
+					m_pLineBuffer->moveToNextCharacter();
+				}
+
+				return true;
+
+			} // Search character has been found!
+
+			// Move to next character and proceed
+			m_pLineBuffer->moveToNextCharacter();
+
+		} // while (!EOF)
+
+		return false;
+
+	} // skipUntil
+
+	//
+	// s k i p U n t i l M a t c h i n g C l o s i n g B r a c k e t
+	//
+	bool DinoXmlScanner::skipUntilMatchingClosingBracket(){
+
+		// We assume that the opening bracket has already been read
+		int bracketParity = 1;
+
+		while ((m_pLineBuffer->getCurrentCharacter() != EOF) &&
+			(bracketParity != 0))
+		{
+			// Opening bracket has been found!
+			if (m_pLineBuffer->getCurrentCharacter() == '<'){
+
+				++bracketParity;
+			}
+
+			// Closing bracket has been found!
+			if (m_pLineBuffer->getCurrentCharacter() == '>'){
+
+				--bracketParity;
+			}
+
+			// Move to next character and proceed
+			m_pLineBuffer->moveToNextCharacter();
+
+		} // while
+
+		if (bracketParity != 0 )
+			return false;
+		else
+			return true;
+
+	} // skipUntilMatchingClosingBracket
+
+	//
+	// r e a d S t r i n g U n t i l
+	//
+	bool DinoXmlScanner::readStringUntil(char searchCharacter,
+										 bool includeSearchCharacter){
+
+		// Remember start position
+		DinoLineBufferPosition startPosition = m_pLineBuffer->getCurrentPosition();
+
+		// Use skipUntil()
+		if (skipUntil(searchCharacter, includeSearchCharacter)){
+
+			// Copy found string to m_pCurrentTokenString
+			m_pLineBuffer->extractString(startPosition,
+										 m_pLineBuffer->getCurrentPosition(),
+										 m_pCurrentTokenString);
+
+			return true;
+
+		}
+		// An error occurred
+		else{
+			return false;
+		}
+
+	} // getStringUntil
+
+	//
+	//  t e s t
+	//
+	void DinoXmlScanner::test(){
+
+		bool terminate = false;
+		XmlToken currentToken;
+
+		while (!terminate){
+
+			cout << "Line " << getInputFileLineCounter() << ": ";
+			currentToken = getNextToken();
+
+			switch (currentToken){
+			case openingBracket:
+				cout << "<" << endl;
+				break;
+			case closingBracket:
+				cout << ">" << endl;
+				break;
+			case questionMark:
+				cout << "?" << endl;
+				break;
+			case exclamationMark:
+				cout << "!" << endl;
+				break;
+			case minus:
+				cout << "-" << endl;
+				break;
+			case slash:
+				cout << "/" << endl;
+				break;
+			case equalSign:
+				cout << "<" << endl;
+				break;
+			case identifier:
+				cout << "Identifier: " << m_pCurrentTokenString << endl;
+				break;
+			case attributeValue:
+				cout << "Attribute value: " << m_pCurrentTokenString << endl;
+				break;
+			case quotedValue:
+				cout << "Quoted value: \"" << m_pCurrentTokenString << "\"" << endl;
+				break;
+			case endOfFile:
+				cout << "EOF" << endl;
+				terminate = true;
+				break;
+			default:
+				cout << "Invalid token!" << endl;
+
+			} // switch
+
+		} // while
+
+	} // testScanner
+
+} // namespace ogdf
diff --git a/ogdf/fileformats/DinoXmlScanner.h b/ogdf/fileformats/DinoXmlScanner.h
new file mode 100644
index 0000000..dbb73b6
--- /dev/null
+++ b/ogdf/fileformats/DinoXmlScanner.h
@@ -0,0 +1,166 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Contains the enum XmlToken and the class DinoXmlScanner.
+ *
+ * \author Dino Ahr
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_DINO_XML_SCANNER_H
+#define OGDF_DINO_XML_SCANNER_H
+
+#include "DinoLineBuffer.h"
+
+namespace ogdf {
+
+	//---------------------------------------------------------
+	// X m l T o k e n
+	//---------------------------------------------------------
+	/** This enum type represents the values, which are returned by
+	 *  the function DinoXmlScanner::getNextToken().
+	 *  @see DinoXmlScanner::getNextToken()
+	 */
+	enum XmlToken {
+		openingBracket,		///< <
+		closingBracket,		///< >
+		questionMark,		///< ?
+		exclamationMark,	///< !
+		minus,				///< -
+		slash,				///< /
+		equalSign,			///< =
+		identifier,			///< (a..z|A..Z){(a..z|A..Z|0..9|.|_|:)}
+		attributeValue,		///< a sequence of characters, digits, minus - and dot .
+		quotedValue,		///< all quoted content " ... " or ' ... '
+		endOfFile,			///< End of file detected
+		invalidToken,		///< No token identified
+		noToken				///< Used for the m_lookAheadToken to indicate that there
+							///< is no lookahead token
+	}; // enum XmlToken
+
+
+	//---------------------------------------------------------
+	// D i n o X m l S c a n n e r
+	//---------------------------------------------------------
+	/** This class scans the characters of the input file and
+	 *  provides the detected token.
+	 */
+	class OGDF_EXPORT DinoXmlScanner {
+
+	private:
+
+		// Pointer to the line buffer
+		DinoLineBuffer *m_pLineBuffer;
+
+		// String which contains the characters of the current token
+		// Its size is limited to DinoLineBuffer::c_maxStringLength
+		char *m_pCurrentTokenString;
+
+	public:
+		// construction
+		DinoXmlScanner(const char *fileName);
+
+		// destruction: destroys the parse tree
+		~DinoXmlScanner();
+
+		// This function represents the core of the scanner. It scans the input
+		// and returns the identified token. After performing getNextToken() the
+		// token is "consumed", i.e. the line buffer pointer already points to the
+		// next token.
+		// The scanned string is deposited in m_pCurrentTokenString, hence it is
+		// available via getCurrentTokenString()
+		XmlToken getNextToken();
+
+		// Returns the current token string
+		inline const char *getCurrentTokenString(){
+			return m_pCurrentTokenString;
+		}
+
+		// This function provides a lookahead to the next token;
+		// the token is NOT consumed like it is the case for getNextToken()
+		XmlToken testNextToken();
+
+		// This function provides a lookahead to the nextnext token;
+		// the tokens are NOT consumed like it is the case for getNextToken()
+		XmlToken testNextNextToken();
+
+		// Skips until the searchCharacter is found;
+		//
+		// If skipOverSearchCharacter is set true the currentPosition will be set
+		// BEHIND the search character
+		// otherwise the pointer currentPosition points TO the searchCharacter
+		//
+		// Returns true if the searchCharacter is found
+		// Returns false if file ends before the searchCharacter is found
+		bool skipUntil(char searchCharacter, bool skipOverSearchCharacter = true);
+
+		// Skips until '>' is found (> is consumed)
+		// Nested brackets are taken into account
+		// Returns true if matching bracket has been found; false otherwise
+		bool skipUntilMatchingClosingBracket();
+
+		// Reads until the searchCharacter is found; the string starting at the current
+		// position and ending at the position where the search character is found
+		// is deposited in m_pCurrentTokenString.
+		// If includeSearchCharacter is false (default) the search character is
+		// not contained; otherwise it is contained
+		//
+		// Returns true if the searchCharacter is found
+		// Returns false if file ends before the searchCharacter is found
+		bool readStringUntil(char searchCharacter, bool includeSearchCharacter = false);
+
+		// Returns line number of the most recently read line of the input file
+		inline int getInputFileLineCounter() const {
+			return m_pLineBuffer->getInputFileLineCounter();
+		}
+
+		// This function tests the scanner by reading the complete
+		// input file and printing the identified token to stdout
+		void test();
+
+	}; // class DinoXmlScanner
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/fileformats/GmlParser.cpp b/ogdf/fileformats/GmlParser.cpp
new file mode 100644
index 0000000..5fafa87
--- /dev/null
+++ b/ogdf/fileformats/GmlParser.cpp
@@ -0,0 +1,1315 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of GML parser (class GmlParser)
+ * (used for parsing and reading GML files)
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "GmlParser.h"
+#include <ctype.h>
+#include <string.h>
+
+extern ofstream os;
+
+namespace ogdf {
+
+GmlParser::GmlParser(const char *fileName, bool doCheck)
+{
+	ifstream is(fileName, ios::in);  // open file
+	doInit(is,doCheck);
+}
+
+
+GmlParser::GmlParser(istream &is, bool doCheck)
+{
+	doInit(is,doCheck);
+}
+
+
+void GmlParser::doInit(istream &is, bool doCheck)
+{
+	m_objectTree = 0;
+
+	if (!is) {
+		setError("Cannot open file.");
+		return;
+	}
+
+	createObjectTree(is,doCheck);
+
+	int minId, maxId;
+	m_graphObject = getNodeIdRange(minId, maxId);
+	m_mapToNode.init(minId,maxId,0);
+}
+
+
+void GmlParser::createObjectTree(istream &is, bool doCheck)
+{
+	initPredefinedKeys();
+	m_error = false;
+
+	m_is = &is;
+	m_doCheck = doCheck; // indicates more extensive checking
+
+	// initialize line buffer (note: GML specifies a maximal line length
+	// of 254 characters!)
+	m_rLineBuffer = new char[256];
+	if (m_rLineBuffer == 0) OGDF_THROW(InsufficientMemoryException);
+
+	*m_rLineBuffer = '\n';
+	m_lineBuffer = m_rLineBuffer+1;
+
+	m_pCurrent = m_pStore = m_lineBuffer;
+	m_cStore = 0; // forces getNextSymbol() to read first line
+
+	// create object tree
+	m_objectTree = parseList(gmlEOF,gmlListEnd);
+
+	delete[] m_rLineBuffer;
+}
+
+// we use predefined id constants for all relevant keys
+// this allows us to use efficient switch() statemnts in read() methods
+void GmlParser::initPredefinedKeys()
+{
+	m_hashTable.fastInsert("id",       idPredefKey);
+	m_hashTable.fastInsert("label",    labelPredefKey);
+	m_hashTable.fastInsert("Creator",  CreatorPredefKey);
+	m_hashTable.fastInsert("name",     namePredefKey);
+	m_hashTable.fastInsert("graph",    graphPredefKey);
+	m_hashTable.fastInsert("version",  versionPredefKey);
+	m_hashTable.fastInsert("directed", directedPredefKey);
+	m_hashTable.fastInsert("node",     nodePredefKey);
+	m_hashTable.fastInsert("edge",     edgePredefKey);
+	m_hashTable.fastInsert("graphics", graphicsPredefKey);
+	m_hashTable.fastInsert("x",        xPredefKey);
+	m_hashTable.fastInsert("y",        yPredefKey);
+	m_hashTable.fastInsert("w",        wPredefKey);
+	m_hashTable.fastInsert("h",        hPredefKey);
+	m_hashTable.fastInsert("type",     typePredefKey);
+	m_hashTable.fastInsert("width",    widthPredefKey);
+	m_hashTable.fastInsert("source",   sourcePredefKey);
+	m_hashTable.fastInsert("target",   targetPredefKey);
+	m_hashTable.fastInsert("arrow",    arrowPredefKey);
+	m_hashTable.fastInsert("Line",     LinePredefKey);
+	m_hashTable.fastInsert("line",     linePredefKey);
+	m_hashTable.fastInsert("point",    pointPredefKey);
+	m_hashTable.fastInsert("generalization", generalizationPredefKey);
+	m_hashTable.fastInsert("subgraph", subGraphPredefKey);
+	m_hashTable.fastInsert("fill",     fillPredefKey);
+	m_hashTable.fastInsert("cluster",     clusterPredefKey);
+	m_hashTable.fastInsert("rootcluster", rootClusterPredefKey);
+	m_hashTable.fastInsert("vertex",    vertexPredefKey);
+	m_hashTable.fastInsert("color",		colorPredefKey);
+	m_hashTable.fastInsert("height",		heightPredefKey);
+	m_hashTable.fastInsert("stipple",   stipplePredefKey);  //linestyle
+	m_hashTable.fastInsert("pattern",    patternPredefKey); //brush pattern
+	m_hashTable.fastInsert("lineWidth", lineWidthPredefKey);//line width
+	m_hashTable.fastInsert("template", templatePredefKey);//line width
+	m_hashTable.fastInsert("weight", edgeWeightPredefKey);
+
+	// further keys get id's starting with NEXTPREDEFKEY
+	m_num = NEXTPREDEFKEY;
+}
+
+
+GmlObject *GmlParser::parseList(GmlObjectType closingKey,
+	GmlObjectType /* errorKey */)
+{
+	GmlObject *firstSon = 0;
+	GmlObject **pPrev = &firstSon;
+
+	for( ; ; ) {
+		GmlObjectType symbol = getNextSymbol();
+
+		if (symbol == closingKey || symbol == gmlError)
+			return firstSon;
+
+		if (symbol != gmlKey) {
+			setError("key expected");
+			return firstSon;
+		}
+
+		GmlKey key = m_keySymbol;
+
+		symbol = getNextSymbol();
+		GmlObject *object = 0;
+
+		switch (symbol) {
+		case gmlIntValue:
+			object = OGDF_NEW GmlObject(key,m_intSymbol);
+			break;
+
+		case gmlDoubleValue:
+			object = OGDF_NEW GmlObject(key,m_doubleSymbol);
+			break;
+
+		case gmlStringValue: {
+			size_t len = strlen(m_stringSymbol)+1;
+			char *pChar = new char[len];
+			if (pChar == 0) OGDF_THROW(InsufficientMemoryException);
+
+			ogdf::strcpy(pChar,len,m_stringSymbol);
+			object = OGDF_NEW GmlObject(key,pChar); }
+			break;
+
+		case gmlListBegin:
+			object = OGDF_NEW GmlObject(key);
+			object->m_pFirstSon = parseList(gmlListEnd,gmlEOF);
+			break;
+
+		case gmlListEnd:
+			setError("unexpected end of list");
+			return firstSon;
+
+		case gmlKey:
+			setError("unexpected key");
+			return firstSon;
+
+		case gmlEOF:
+			setError("missing value");
+			return firstSon;
+
+		case gmlError:
+			return firstSon;
+
+		OGDF_NODEFAULT // one of the cases above has to occur
+		}
+
+		*pPrev = object;
+		pPrev = &object->m_pBrother;
+	}
+
+	return firstSon;
+}
+
+
+void GmlParser::destroyObjectList(GmlObject *object)
+{
+	GmlObject *nextObject;
+	for(; object; object = nextObject) {
+		nextObject = object->m_pBrother;
+
+		if (object->m_valueType == gmlStringValue)
+			delete[] const_cast<char *>(object->m_stringValue);
+
+		else if (object->m_valueType == gmlListBegin)
+			destroyObjectList(object->m_pFirstSon);
+
+		delete object;
+	}
+}
+
+
+GmlParser::~GmlParser()
+{
+	// we have to delete all objects and allocated char arrays in string values
+	destroyObjectList(m_objectTree);
+}
+
+
+bool GmlParser::getLine()
+{
+	do {
+		if (m_is->eof()) return false;
+		(*m_is) >> std::ws;  // skip whitespace like spaces for indentation
+		m_is->getline(m_lineBuffer,255);
+		if (m_is->fail())
+			return false;
+		for(m_pCurrent = m_lineBuffer;
+			*m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent) ;
+	} while (*m_pCurrent == '#' || *m_pCurrent == 0);
+
+	return true;
+}
+
+
+GmlObjectType GmlParser::getNextSymbol()
+{
+	*m_pStore = m_cStore;
+
+	// eat whitespace
+	for(; *m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent) ;
+
+	// get new line if required
+	if (*m_pCurrent == 0) {
+		if (!getLine()) return gmlEOF;
+	}
+
+	// identify start of current symbol
+	char *pStart = m_pCurrent;
+
+	// we currently do not support strings with line breaks!
+	if (*pStart == '\"')
+	{ // string
+		m_stringSymbol = ++m_pCurrent;
+		char *pWrite = m_pCurrent;
+		while(*m_pCurrent != 0 && *m_pCurrent != '\"')
+		{
+			if (*m_pCurrent == '\\')
+			{
+				// note: this block is repeated below
+				switch(*(m_pCurrent+1)) {
+				case 0:
+					*m_pCurrent = 0;
+					break;
+				case '\\':
+					*pWrite++ = '\\';
+					m_pCurrent += 2;
+					break;
+				case '\"':
+					*pWrite++ = '\"';
+					m_pCurrent += 2;
+					break;
+				default:
+					// just copy the escape sequence as is
+					*pWrite++ = *m_pCurrent++;
+					*pWrite++ = *m_pCurrent++;
+				}
+
+			} else
+				*pWrite++ = *m_pCurrent++;
+		}
+
+		if (*m_pCurrent == 0)
+		{
+			*pWrite = 0;
+			m_longString = (pStart+1);
+			while(getLine())
+			{
+				m_pCurrent = pWrite = m_lineBuffer;
+				while(*m_pCurrent != 0 && *m_pCurrent != '\"')
+				{
+					if (*m_pCurrent == '\\')
+					{
+						// (block repeated from above)
+						switch(*(m_pCurrent+1)) {
+						case 0:
+							*m_pCurrent = 0;
+							break;
+						case '\\':
+							*pWrite++ = '\\';
+							m_pCurrent += 2;
+							break;
+						case '\"':
+							*pWrite++ = '\"';
+							m_pCurrent += 2;
+							break;
+						default:
+							// just copy the escape sequence as is
+							*pWrite++ = *m_pCurrent++;
+							*pWrite++ = *m_pCurrent++;
+						}
+
+					} else
+						*pWrite++ = *m_pCurrent++;
+				}
+
+				if (*m_pCurrent == 0) {
+					*pWrite = 0;
+					m_longString += m_lineBuffer;
+
+				} else {
+					m_cStore = *(m_pStore = m_pCurrent);
+					++m_pCurrent;
+					*pWrite = 0;
+					m_longString += m_lineBuffer;
+					break;
+				}
+			}
+			m_stringSymbol = m_longString.cstr();
+
+		} else {
+			m_cStore = *(m_pStore = m_pCurrent);
+			++m_pCurrent;
+			*pWrite = 0;
+		}
+
+		return gmlStringValue;
+	}
+
+	// identify end of current symbol
+	while(*m_pCurrent != 0 && !isspace(*m_pCurrent)) ++m_pCurrent;
+
+	m_cStore = *(m_pStore = m_pCurrent);
+	*m_pCurrent = 0;
+
+	if(isalpha(*pStart)) { // key
+
+		// check if really a correct key (error if not)
+		if (m_doCheck) {
+			for (char *p = pStart+1; *p; ++p)
+				if (!(isalpha(*p) || isdigit(*p))) {
+					setError("malformed key");
+					return gmlError;
+				}
+		}
+
+		m_keySymbol = hashString(pStart);
+		return gmlKey;
+
+	} else if (*pStart == '[') {
+		return gmlListBegin;
+
+	} else if (*pStart == ']') {
+		return gmlListEnd;
+
+	} else if (*pStart == '-' || isdigit(*pStart)) { // int or double
+		char *p = pStart+1;
+		while(isdigit(*p)) ++p;
+
+		if (*p == '.') { // double
+			// check to be done
+
+			sscanf(pStart,"%lf",&m_doubleSymbol);
+			return gmlDoubleValue;
+
+		} else { // int
+			if (*p != 0) {
+				setError("malformed number");
+				return gmlError;
+			}
+
+			sscanf(pStart,"%d",&m_intSymbol);
+			return gmlIntValue;
+		}
+	}
+
+	setError("unknown symbol");
+
+	return gmlError;
+}
+
+
+GmlKey GmlParser::hashString(const String &str)
+{
+	GmlKey key = m_hashTable.insertByNeed(str,-1);
+	if(key->info() == -1) key->info() = m_num++;
+
+	return key;
+}
+
+
+GmlObject *GmlParser::getNodeIdRange(int &minId,int &maxId)
+{
+	minId = maxId = 0;
+
+	GmlObject *graphObject = m_objectTree;
+	for(; graphObject; graphObject = graphObject->m_pBrother)
+		if (id(graphObject) == graphPredefKey) break;
+
+	if (!graphObject || graphObject->m_valueType != gmlListBegin) return 0;
+
+	bool first = true;
+	GmlObject *son = graphObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother) {
+		if (id(son) == nodePredefKey && son->m_valueType == gmlListBegin) {
+
+			GmlObject *nodeSon = son->m_pFirstSon;
+			for(; nodeSon; nodeSon = nodeSon->m_pBrother) {
+				if (id(nodeSon) == idPredefKey ||
+					nodeSon->m_valueType == gmlIntValue)
+				{
+					int nodeSonId = nodeSon->m_intValue;
+					if (first) {
+						minId = maxId = nodeSonId;
+						first = false;
+					} else {
+						if (nodeSonId < minId) minId = nodeSonId;
+						if (nodeSonId > maxId) maxId = nodeSonId;
+					}
+				}
+			}
+		}
+	}
+
+	return graphObject;
+}
+
+
+bool GmlParser::read(Graph &G)
+{
+	G.clear();
+
+	int minId = m_mapToNode.low();
+	int maxId = m_mapToNode.high();
+	int notDefined = minId-1; //indicates not defined id key
+
+	GmlObject *son = m_graphObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother)
+	{
+		switch(id(son))
+		{
+		case nodePredefKey: {
+			if (son->m_valueType != gmlListBegin) break;
+
+			// set attributes to default values
+			int vId = notDefined;
+
+			// read all relevant attributes
+			GmlObject *nodeSon = son->m_pFirstSon;
+			for(; nodeSon; nodeSon = nodeSon->m_pBrother) {
+				if (id(nodeSon) == idPredefKey &&
+					nodeSon->m_valueType == gmlIntValue)
+				{
+					vId = nodeSon->m_intValue;
+				}
+			}
+
+			// check if everything required is defined correctly
+			if (vId == notDefined) {
+				setError("node id not defined");
+				return false;
+			}
+
+			// create new node if necessary
+			if (m_mapToNode[vId] == 0) m_mapToNode[vId] = G.newNode(); }
+			break;
+
+		case edgePredefKey: {
+			if (son->m_valueType != gmlListBegin) break;
+
+			// set attributes to default values
+			int sourceId = notDefined, targetId = notDefined;
+
+			// read all relevant attributes
+			GmlObject *edgeSon = son->m_pFirstSon;
+			for(; edgeSon; edgeSon = edgeSon->m_pBrother) {
+
+				switch(id(edgeSon)) {
+				case sourcePredefKey:
+					if (edgeSon->m_valueType != gmlIntValue) break;
+					sourceId = edgeSon->m_intValue;
+					break;
+
+				case targetPredefKey:
+					if (edgeSon->m_valueType != gmlIntValue) break;
+					targetId = edgeSon->m_intValue;
+					break;
+				}
+			}
+
+			// check if everything required is defined correctly
+			if (sourceId == notDefined || targetId == notDefined) {
+				setError("source or target id not defined");
+				return false;
+
+			} else if (sourceId < minId || maxId < sourceId ||
+				targetId < minId || maxId < targetId) {
+				setError("source or target id out of range");
+				return false;
+			}
+
+			// create adjacent nodes if necessary and new edge
+			if (m_mapToNode[sourceId] == 0) m_mapToNode[sourceId] = G.newNode();
+			if (m_mapToNode[targetId] == 0) m_mapToNode[targetId] = G.newNode();
+
+			G.newEdge(m_mapToNode[sourceId],m_mapToNode[targetId]);
+			}//case edge
+			break;
+		}//switch
+	}//for sons
+
+	return true;
+}
+
+
+bool GmlParser::read(Graph &G, GraphAttributes &AG)
+{
+	OGDF_ASSERT(&G == &(AG.constGraph()))
+
+		G.clear();
+
+	int minId = m_mapToNode.low();
+	int maxId = m_mapToNode.high();
+	int notDefined = minId-1; //indicates not defined id key
+
+	DPolyline bends;
+
+	GmlObject *son = m_graphObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother) {
+
+		switch(id(son)) {
+		case nodePredefKey: {
+			if (son->m_valueType != gmlListBegin) break;
+
+			// set attributes to default values
+			int vId = notDefined;
+			double x = 0, y = 0, w = 0, h = 0;
+			String label;
+			String templ;
+			String fill;  // the fill color attribute
+			String line;  // the line color attribute
+			String shape; //the shape type
+			double lineWidth = 1.0; //node line width
+			int    pattern = 1; //node brush pattern
+			int    stipple = 1; //line style pattern
+
+			// read all relevant attributes
+			GmlObject *nodeSon = son->m_pFirstSon;
+			for(; nodeSon; nodeSon = nodeSon->m_pBrother) {
+				switch(id(nodeSon)) {
+				case idPredefKey:
+					if(nodeSon->m_valueType != gmlIntValue) break;
+					vId = nodeSon->m_intValue;
+					break;
+
+				case graphicsPredefKey: {
+					if (nodeSon->m_valueType != gmlListBegin) break;
+
+					GmlObject *graphicsObject = nodeSon->m_pFirstSon;
+					for(; graphicsObject;
+						graphicsObject = graphicsObject->m_pBrother)
+					{
+						switch(id(graphicsObject)) {
+						case xPredefKey:
+							if(graphicsObject->m_valueType != gmlDoubleValue) break;
+							x = graphicsObject->m_doubleValue;
+							break;
+
+						case yPredefKey:
+							if(graphicsObject->m_valueType != gmlDoubleValue) break;
+							y = graphicsObject->m_doubleValue;
+							break;
+
+						case wPredefKey:
+							if(graphicsObject->m_valueType != gmlDoubleValue) break;
+							w = graphicsObject->m_doubleValue;
+							break;
+
+						case hPredefKey:
+							if(graphicsObject->m_valueType != gmlDoubleValue) break;
+							h = graphicsObject->m_doubleValue;
+							break;
+
+						case fillPredefKey:
+							if(graphicsObject->m_valueType != gmlStringValue) break;
+							fill = graphicsObject->m_stringValue;
+							break;
+
+						case linePredefKey:
+							if(graphicsObject->m_valueType != gmlStringValue) break;
+							line = graphicsObject->m_stringValue;
+							break;
+
+						case lineWidthPredefKey:
+							if(graphicsObject->m_valueType != gmlDoubleValue) break;
+							lineWidth = graphicsObject->m_doubleValue;
+							break;
+
+						case typePredefKey:
+							if(graphicsObject->m_valueType != gmlStringValue) break;
+							shape = graphicsObject->m_stringValue;
+							break;
+						case patternPredefKey: //fill style
+							if(graphicsObject->m_valueType != gmlIntValue) break;
+							pattern = graphicsObject->m_intValue;
+						case stipplePredefKey: //line style
+							if(graphicsObject->m_valueType != gmlIntValue) break;
+							stipple = graphicsObject->m_intValue;
+						}
+					}
+					break; }
+
+				case templatePredefKey:
+					if (nodeSon->m_valueType != gmlStringValue) break;
+
+					templ = nodeSon->m_stringValue;
+					break;
+
+				case labelPredefKey:
+					if (nodeSon->m_valueType != gmlStringValue) break;
+
+					label = nodeSon->m_stringValue;
+					break;
+				}
+			}
+
+			// check if everything required is defined correctly
+			if (vId == notDefined) {
+				setError("node id not defined");
+				return false;
+			}
+
+			// create new node if necessary and assign attributes
+			if (m_mapToNode[vId] == 0) m_mapToNode[vId] = G.newNode();
+			if (AG.attributes() & GraphAttributes::nodeGraphics)
+			{
+				AG.x(m_mapToNode[vId]) = x;
+				AG.y(m_mapToNode[vId]) = y;
+				AG.width (m_mapToNode[vId]) = w;
+				AG.height(m_mapToNode[vId]) = h;
+				if (shape == "oval")
+					AG.shapeNode(m_mapToNode[vId]) = GraphAttributes::oval;
+				else AG.shapeNode(m_mapToNode[vId]) = GraphAttributes::rectangle;
+			}
+			if ( (AG.attributes() & GraphAttributes::nodeColor) &&
+				(AG.attributes() & GraphAttributes::nodeGraphics) )
+			{
+				AG.colorNode(m_mapToNode[vId]) = fill;
+				AG.nodeLine(m_mapToNode[vId]) = line;
+			}
+			if (AG.attributes() & GraphAttributes::nodeLabel)
+				AG.labelNode(m_mapToNode[vId]) = label;
+			if (AG.attributes() & GraphAttributes::nodeTemplate)
+				AG.templateNode(m_mapToNode[vId]) = templ;
+			if (AG.attributes() & GraphAttributes::nodeId)
+				AG.idNode(m_mapToNode[vId]) = vId;
+			if (AG.attributes() & GraphAttributes::nodeStyle)
+			{
+				AG.nodePattern(m_mapToNode[vId]) =
+					GraphAttributes::intToPattern(pattern);
+				AG.styleNode(m_mapToNode[vId]) =
+					GraphAttributes::intToStyle(stipple);
+				AG.lineWidthNode(m_mapToNode[vId]) =
+					lineWidth;
+			}
+							}//node
+							//Todo: line style set stipple value
+							break;
+
+		case edgePredefKey: {
+			String arrow; // the arrow type attribute
+			String fill;  //the color fill attribute
+			int stipple = 1;  //the line style
+			double lineWidth = 1.0;
+			double edgeWeight = 1.0;
+			int subGraph = 0; //edgeSubGraph attribute
+			String label; // label attribute
+
+			if (son->m_valueType != gmlListBegin) break;
+
+			// set attributes to default values
+			int sourceId = notDefined, targetId = notDefined;
+			Graph::EdgeType umlType = Graph::association;
+
+			// read all relevant attributes
+			GmlObject *edgeSon = son->m_pFirstSon;
+			for(; edgeSon; edgeSon = edgeSon->m_pBrother) {
+
+				switch(id(edgeSon)) {
+				case sourcePredefKey:
+					if (edgeSon->m_valueType != gmlIntValue) break;
+					sourceId = edgeSon->m_intValue;
+					break;
+
+				case targetPredefKey:
+					if (edgeSon->m_valueType != gmlIntValue) break;
+					targetId = edgeSon->m_intValue;
+					break;
+
+				case subGraphPredefKey:
+					if (edgeSon->m_valueType != gmlIntValue) break;
+					subGraph = edgeSon->m_intValue;
+					break;
+
+				case labelPredefKey:
+					if (edgeSon->m_valueType != gmlStringValue) break;
+					label = edgeSon->m_stringValue;
+					break;
+
+				case graphicsPredefKey: {
+					if (edgeSon->m_valueType != gmlListBegin) break;
+
+					GmlObject *graphicsObject = edgeSon->m_pFirstSon;
+					for(; graphicsObject;
+						graphicsObject = graphicsObject->m_pBrother)
+					{
+						if(id(graphicsObject) == LinePredefKey &&
+							graphicsObject->m_valueType == gmlListBegin)
+						{
+							readLineAttribute(graphicsObject->m_pFirstSon,bends);
+						}
+						if(id(graphicsObject) == arrowPredefKey &&
+							graphicsObject->m_valueType == gmlStringValue)
+							arrow = graphicsObject->m_stringValue;
+						if(id(graphicsObject) == fillPredefKey &&
+							graphicsObject->m_valueType == gmlStringValue)
+							fill = graphicsObject->m_stringValue;
+						if (id(graphicsObject) == stipplePredefKey && //line style
+							graphicsObject->m_valueType == gmlIntValue)
+							stipple = graphicsObject->m_intValue;
+						if (id(graphicsObject) == lineWidthPredefKey && //line width
+							graphicsObject->m_valueType == gmlDoubleValue)
+							lineWidth = graphicsObject->m_doubleValue;
+						if (id(graphicsObject) == edgeWeightPredefKey &&
+							graphicsObject->m_valueType == gmlDoubleValue)
+							edgeWeight = graphicsObject->m_doubleValue;
+					}//for graphics
+										}
+
+				case generalizationPredefKey:
+					if (edgeSon->m_valueType != gmlIntValue) break;
+					umlType = (edgeSon->m_intValue == 0) ?
+						Graph::association : Graph::generalization;
+					break;
+
+				}
+			}
+
+			// check if everything required is defined correctly
+			if (sourceId == notDefined || targetId == notDefined) {
+				setError("source or target id not defined");
+				return false;
+
+			} else if (sourceId < minId || maxId < sourceId ||
+				targetId < minId || maxId < targetId) {
+					setError("source or target id out of range");
+					return false;
+			}
+
+			// create adjacent nodes if necessary and new edge
+			if (m_mapToNode[sourceId] == 0) m_mapToNode[sourceId] = G.newNode();
+			if (m_mapToNode[targetId] == 0) m_mapToNode[targetId] = G.newNode();
+
+			edge e = G.newEdge(m_mapToNode[sourceId],m_mapToNode[targetId]);
+			if (AG.attributes() & GraphAttributes::edgeGraphics)
+				AG.bends(e).conc(bends);
+			if (AG.attributes() & GraphAttributes::edgeType)
+				AG.type(e) = umlType;
+			if(AG.attributes() & GraphAttributes::edgeSubGraph)
+				AG.subGraphBits(e) = subGraph;
+			if (AG.attributes() & GraphAttributes::edgeLabel)
+				AG.labelEdge(e) = label;
+
+			if (AG.attributes() & GraphAttributes::edgeArrow) {
+				if (arrow == "none")
+					AG.arrowEdge(e) = GraphAttributes::none;
+				else if (arrow == "last")
+					AG.arrowEdge(e) = GraphAttributes::last;
+				else if (arrow == "first")
+					AG.arrowEdge(e) = GraphAttributes::first;
+				else if (arrow == "both")
+					AG.arrowEdge(e) = GraphAttributes::both;
+				else
+					AG.arrowEdge(e) = GraphAttributes::undefined;
+			}
+
+			if (AG.attributes() & GraphAttributes::edgeColor)
+				AG.colorEdge(e) = fill;
+			if (AG.attributes() & GraphAttributes::edgeStyle)
+			{
+				AG.styleEdge(e) = AG.intToStyle(stipple);
+				AG.edgeWidth(e) = lineWidth;
+			}
+
+			if (AG.attributes() & GraphAttributes::edgeDoubleWeight)
+				AG.doubleWeight(e) = edgeWeight;
+
+
+			break; }
+		case directedPredefKey: {
+			if(son->m_valueType != gmlIntValue) break;
+			AG.directed(son->m_intValue > 0);
+			break; }
+		}
+	}
+
+	return true;
+}//read
+
+
+//to be called AFTER calling read(G, AG)
+bool GmlParser::readAttributedCluster(
+    Graph &/*G*/,
+	ClusterGraph& CG,
+	ClusterGraphAttributes& ACG)
+{
+//	OGDF_ASSERT(&CG.getGraph() == &G)
+
+
+	//now we need the cluster object
+	GmlObject *rootObject = m_objectTree;
+	for(; rootObject; rootObject = rootObject->m_pBrother)
+		if (id(rootObject) == rootClusterPredefKey) break;
+
+	if(rootObject == 0)
+		return true;
+
+	if (id(rootObject) != rootClusterPredefKey)
+	{
+		setError("missing rootcluster key");
+		return false;
+	}
+
+	if (rootObject->m_valueType != gmlListBegin) return false;
+
+	attributedClusterRead(rootObject, CG, ACG);
+
+	return true;
+}//readAttributedCluster
+
+
+//the clustergraph has to be initialized on G!!,
+//no clusters other then root cluster may exist, which holds all nodes
+bool GmlParser::readCluster(Graph &/*G*/, ClusterGraph& CG)
+{
+//	OGDF_ASSERT(&CG.getGraph() == &G)
+
+	//now we need the cluster object
+	GmlObject *rootObject = m_objectTree;
+	for(; rootObject; rootObject = rootObject->m_pBrother)
+		if (id(rootObject) == rootClusterPredefKey) break;
+
+	//we have to check if the file does really contain clusters
+	//otherwise, rootcluster will suffice
+	if (rootObject == 0) return true;
+	if (id(rootObject) != rootClusterPredefKey)
+	{
+		setError("missing rootcluster key");
+		return false;
+	}
+
+	if (rootObject->m_valueType != gmlListBegin) return false;
+
+	clusterRead(rootObject, CG);
+
+	return true;
+}//read clustergraph
+
+
+//read all cluster tree information
+bool GmlParser::clusterRead(
+	GmlObject* rootCluster,
+	ClusterGraph& CG)
+{
+
+	//the root cluster is only allowed to hold child clusters and
+	//nodes in a list
+
+	if (rootCluster->m_valueType != gmlListBegin) return false;
+
+	// read all clusters and nodes
+	GmlObject *rootClusterSon = rootCluster->m_pFirstSon;
+
+	for(; rootClusterSon; rootClusterSon = rootClusterSon->m_pBrother)
+	{
+		switch(id(rootClusterSon))
+		{
+		case clusterPredefKey:
+			{
+				//we could delete this, but we aviod the call
+				if (rootClusterSon->m_valueType != gmlListBegin) return false;
+				// set attributes to default values
+				//we currently do not set any values
+				cluster c = CG.newCluster(CG.rootCluster());
+
+				//recursively read cluster
+				recursiveClusterRead(rootClusterSon, CG, c);
+
+			} //case cluster
+			break;
+		case vertexPredefKey: //direct root vertices
+			{
+				if (rootClusterSon->m_valueType != gmlStringValue) return false;
+				String vIDString = rootClusterSon->m_stringValue;
+
+				//we only allow a vertex id as string identification
+				if ((vIDString[0] != 'v') &&
+					(!isdigit(vIDString[0])))return false; //do not allow labels
+				//if old style entry "v"i
+				if (!isdigit(vIDString[0])) //should check prefix?
+					vIDString[0] = '0'; //leading zero to allow conversion
+				int vID = atoi(vIDString.cstr());
+
+				OGDF_ASSERT(m_mapToNode[vID] != 0)
+
+					//we assume that no node is already assigned ! Changed:
+					//all new nodes are assigned to root
+					//CG.reassignNode(mapToNode[vID], CG.rootCluster());
+					//it seems that this may be unnessecary, TODO check
+					CG.reassignNode(m_mapToNode[vID], CG.rootCluster());
+				//char* vIDChar = new char[vIDString.length()+1];
+				//for (int ind = 1; ind < vIDString.length(); ind++)
+				//	vIDChar
+
+			}//case vertex
+		}//switch
+	}//for all rootcluster sons
+
+	return true;
+
+}//clusterread
+
+
+//the same for attributed graphs
+//read all cluster tree information
+//make changes to this as well as the recursive function
+bool GmlParser::attributedClusterRead(
+	GmlObject* rootCluster,
+	ClusterGraph& CG,
+	ClusterGraphAttributes& ACG)
+{
+
+	//the root cluster is only allowed to hold child clusters and
+	//nodes in a list
+
+	if (rootCluster->m_valueType != gmlListBegin) return false;
+
+	// read all clusters and nodes
+	GmlObject *rootClusterSon = rootCluster->m_pFirstSon;
+
+	for(; rootClusterSon; rootClusterSon = rootClusterSon->m_pBrother)
+	{
+		switch(id(rootClusterSon))
+		{
+		case clusterPredefKey:
+			{
+				//we could delete this, but we avoid the call
+				if (rootClusterSon->m_valueType != gmlListBegin) return false;
+				// set attributes to default values
+				//we currently do not set any values
+				cluster c = CG.newCluster(CG.rootCluster());
+
+				//recursively read cluster
+				recursiveAttributedClusterRead(rootClusterSon, CG, ACG, c);
+
+			} //case cluster
+			break;
+
+		case vertexPredefKey: //direct root vertices
+			{
+				if (rootClusterSon->m_valueType != gmlStringValue) return false;
+				String vIDString = rootClusterSon->m_stringValue;
+
+				//we only allow a vertex id as string identification
+				if ((vIDString[0] != 'v') &&
+					(!isdigit(vIDString[0])))return false; //do not allow labels
+				//if old style entry "v"i
+				if (!isdigit(vIDString[0])) //should check prefix?
+					vIDString[0] = '0'; //leading zero to allow conversion
+				int vID = atoi(vIDString.cstr());
+
+				OGDF_ASSERT(m_mapToNode[vID] != 0)
+
+					//we assume that no node is already assigned
+					//CG.reassignNode(mapToNode[vID], CG.rootCluster());
+					//changed: all nodes are already assigned to root
+					//this code seems to be obsolete, todo: check
+					CG.reassignNode(m_mapToNode[vID], CG.rootCluster());
+				//char* vIDChar = new char[vIDString.length()+1];
+				//for (int ind = 1; ind < vIDString.length(); ind++)
+				//	vIDChar
+
+			}//case vertex
+		}//switch
+	}//for all rootcluster sons
+
+	return true;
+
+}//attributedclusterread
+
+
+bool GmlParser::readClusterAttributes(
+	GmlObject* cGraphics,
+	cluster c,
+	ClusterGraphAttributes& ACG)
+{
+	String label;
+	String fill;  // the fill color attribute
+	String line;  // the line color attribute
+	double lineWidth = 1.0; //node line width
+	int    pattern = 1; //node brush pattern
+	int    stipple = 1; //line style pattern
+
+	// read all relevant attributes
+	GmlObject *graphicsObject = cGraphics->m_pFirstSon;
+	for(; graphicsObject; graphicsObject = graphicsObject->m_pBrother)
+	{
+		switch(id(graphicsObject))
+		{
+		case xPredefKey:
+			if(graphicsObject->m_valueType != gmlDoubleValue) return false;
+			ACG.clusterXPos(c) = graphicsObject->m_doubleValue;
+			break;
+
+		case yPredefKey:
+			if(graphicsObject->m_valueType != gmlDoubleValue) return false;
+			ACG.clusterYPos(c) = graphicsObject->m_doubleValue;
+			break;
+
+		case widthPredefKey:
+			if(graphicsObject->m_valueType != gmlDoubleValue) return false;
+			ACG.clusterWidth(c) = graphicsObject->m_doubleValue;
+			break;
+
+		case heightPredefKey:
+			if(graphicsObject->m_valueType != gmlDoubleValue) return false;
+			ACG.clusterHeight(c) = graphicsObject->m_doubleValue;
+			break;
+		case fillPredefKey:
+			if(graphicsObject->m_valueType != gmlStringValue) return false;
+			ACG.clusterFillColor(c) = graphicsObject->m_stringValue;
+			break;
+		case patternPredefKey:
+			if(graphicsObject->m_valueType != gmlIntValue) return false;
+			pattern = graphicsObject->m_intValue;
+			break;
+			//line style
+		case colorPredefKey: // line color
+			if(graphicsObject->m_valueType != gmlStringValue) return false;
+			ACG.clusterColor(c) = graphicsObject->m_stringValue;
+			break;
+
+		case stipplePredefKey:
+			if(graphicsObject->m_valueType != gmlIntValue) return false;
+			stipple = graphicsObject->m_intValue;
+			break;
+		case lineWidthPredefKey:
+			if(graphicsObject->m_valueType != gmlDoubleValue) return false;
+			lineWidth =
+				graphicsObject->m_doubleValue;
+			break;
+			//TODO: backgroundcolor
+			//case stylePredefKey:
+			//case boderwidthPredefKey:
+		}//switch
+	}//for
+
+	//Hier eigentlich erst abfragen, ob clusterattributes setzbar in ACG,
+	//dann setzen
+	ACG.clusterLineStyle(c) = GraphAttributes::intToStyle(stipple); //defaulting 1
+	ACG.clusterLineWidth(c) = lineWidth;
+	ACG.clusterFillPattern(c) = GraphAttributes::intToPattern(pattern);
+
+	return true;
+}//readclusterattributes
+
+//recursively read cluster subtree information
+bool GmlParser::recursiveClusterRead(GmlObject* clusterObject,
+								ClusterGraph& CG,
+								cluster c)
+{
+
+	//for direct root cluster sons, this is checked twice...
+	if (clusterObject->m_valueType != gmlListBegin) return false;
+
+	GmlObject *clusterSon = clusterObject->m_pFirstSon;
+
+	for(; clusterSon; clusterSon = clusterSon->m_pBrother)
+	{
+		//we dont read the attributes, therefore look only for
+		//id and sons
+		switch(id(clusterSon))
+		{
+			case clusterPredefKey:
+				{
+					if (clusterSon->m_valueType != gmlListBegin) return false;
+
+					cluster cson = CG.newCluster(c);
+					//recursively read child cluster
+					recursiveClusterRead(clusterSon, CG, cson);
+				}
+				break;
+			case vertexPredefKey: //direct cluster vertex entries
+				{
+					if (clusterSon->m_valueType != gmlStringValue) return false;
+					String vIDString = clusterSon->m_stringValue;
+
+					//if old style entry "v"i
+					if ((vIDString[0] != 'v') &&
+						(!isdigit(vIDString[0])))return false; //do not allow labels
+					//if old style entry "v"i
+					if (!isdigit(vIDString[0])) //should check prefix?
+						vIDString[0] = '0'; //leading zero to allow conversion
+					int vID = atoi(vIDString.cstr());
+
+					OGDF_ASSERT(m_mapToNode[vID] != 0)
+
+					//we assume that no node is already assigned
+					//CG.reassignNode(mapToNode[vID], c);
+					//changed: all nodes are already assigned to root
+					CG.reassignNode(m_mapToNode[vID], c);
+					//char* vIDChar = new char[vIDString.length()+1];
+					//for (int ind = 1; ind < vIDString.length(); ind++)
+					//	vIDChar
+
+				}//case vertex
+		}//switch
+	}//for clustersons
+
+	return true;
+
+}//recursiveclusterread
+
+//recursively read cluster subtree information
+bool GmlParser::recursiveAttributedClusterRead(GmlObject* clusterObject,
+								ClusterGraph& CG,
+								ClusterGraphAttributes& ACG,
+								cluster c)
+{
+
+	//for direct root cluster sons, this is checked twice...
+	if (clusterObject->m_valueType != gmlListBegin) return false;
+
+	GmlObject *clusterSon = clusterObject->m_pFirstSon;
+
+	for(; clusterSon; clusterSon = clusterSon->m_pBrother)
+	{
+		//we dont read the attributes, therefore look only for
+		//id and sons
+		switch(id(clusterSon))
+		{
+			case clusterPredefKey:
+				{
+					if (clusterSon->m_valueType != gmlListBegin) return false;
+
+					cluster cson = CG.newCluster(c);
+					//recursively read child cluster
+					recursiveAttributedClusterRead(clusterSon, CG, ACG, cson);
+				}
+				break;
+			case labelPredefKey:
+				{
+					if (clusterSon->m_valueType != gmlStringValue) return false;
+					ACG.clusterLabel(c) = clusterSon->m_stringValue;
+				}
+				break;
+			case templatePredefKey:
+				{
+					if (clusterSon->m_valueType != gmlStringValue) return false;
+					ACG.templateCluster(c) = clusterSon->m_stringValue;
+					break;
+				}
+			case graphicsPredefKey: //read the info for cluster c
+				{
+					if (clusterSon->m_valueType != gmlListBegin) return false;
+
+					readClusterAttributes(clusterSon, c , ACG);
+				}//graphics
+				break;
+			case vertexPredefKey: //direct cluster vertex entries
+				{
+					if (clusterSon->m_valueType != gmlStringValue) return false;
+					String vIDString = clusterSon->m_stringValue;
+
+					if ((vIDString[0] != 'v') &&
+						(!isdigit(vIDString[0])))return false; //do not allow labels
+					//if old style entry "v"i
+					if (!isdigit(vIDString[0])) //should check prefix?
+						vIDString[0] = '0'; //leading zero to allow conversion
+					int vID = atoi(vIDString.cstr());
+
+					OGDF_ASSERT(m_mapToNode[vID] != 0)
+
+					//we assume that no node is already assigned
+					//changed: all nodes are already assigned to root
+					CG.reassignNode(m_mapToNode[vID], c);
+
+				}//case vertex
+		}//switch
+	}//for clustersons
+
+	return true;
+}//recursiveAttributedClusterRead
+
+void GmlParser::readLineAttribute(GmlObject *object, DPolyline &dpl)
+{
+	dpl.clear();
+	for(; object; object = object->m_pBrother) {
+		if (id(object) == pointPredefKey &&
+			object->m_valueType == gmlListBegin)
+		{
+			DPoint dp;
+
+			GmlObject *pointObject = object->m_pFirstSon;
+			for (; pointObject; pointObject = pointObject->m_pBrother) {
+				if (pointObject->m_valueType != gmlDoubleValue) continue;
+				if (id(pointObject) == xPredefKey)
+					dp.m_x = pointObject->m_doubleValue;
+				else if (id(pointObject) == yPredefKey)
+					dp.m_y = pointObject->m_doubleValue;
+			}
+
+			dpl.pushBack(dp);
+		}
+	}
+}
+
+
+void GmlParser::setError(const char *errorString)
+{
+	m_error = true;
+	m_errorString = errorString;
+}
+
+
+void GmlParser::indent(ostream &os, int d)
+{
+	for(int i = 1; i <= d; ++i)
+		os << " ";
+}
+
+void GmlParser::output(ostream &os, GmlObject *object, int d)
+{
+	for(; object; object = object->m_pBrother) {
+		indent(os,d); os << object->m_key->key();
+
+		switch(object->m_valueType) {
+		case gmlIntValue:
+			os << " " << object->m_intValue << "\n";
+			break;
+
+		case gmlDoubleValue:
+			os << " " << object->m_doubleValue << "\n";
+			break;
+
+		case gmlStringValue:
+			os << " \"" << object->m_stringValue << "\"\n";
+			break;
+
+		case gmlListBegin:
+			os << "\n";
+			output(os, object->m_pFirstSon, d+2);
+			break;
+		case gmlListEnd:
+			break;
+		case gmlKey:
+			break;
+		case gmlEOF:
+			break;
+		case gmlError:
+			break;
+		}
+	}
+}
+
+
+} // end namespace ogdf
diff --git a/ogdf/fileformats/GmlParser.h b/ogdf/fileformats/GmlParser.h
new file mode 100644
index 0000000..26052a0
--- /dev/null
+++ b/ogdf/fileformats/GmlParser.h
@@ -0,0 +1,233 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of classes GmlObject and GmlParser.
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_GML_PARSER_H
+#define OGDF_GML_PARSER_H
+
+
+#include "../basic/Hashing.h"
+#include "../basic/String.h"
+#include "../basic/GraphAttributes.h"
+#include "../cluster/ClusterGraph.h"
+#include "../cluster/ClusterGraphAttributes.h"
+
+
+namespace ogdf {
+
+
+typedef HashElement<String,int> *GmlKey;
+enum GmlObjectType { gmlIntValue, gmlDoubleValue, gmlStringValue, gmlListBegin,
+	gmlListEnd, gmlKey, gmlEOF, gmlError };
+
+
+//---------------------------------------------------------
+// GmlObject
+// represents node in GML parse tree
+//---------------------------------------------------------
+struct OGDF_EXPORT GmlObject {
+	GmlObject *m_pBrother; // brother of node in tree
+	GmlKey m_key; // tag of node
+	GmlObjectType m_valueType; // type of node
+
+	// the entry in the union is selected according to m_valueType:
+	//   gmlIntValue -> m_intValue
+	//   gmlDoubleValue -> m_doubleValue
+	//   gmlStringValue -> m_stringValue
+	//   gmlListBegin -> m_pFirstSon (in case of a list, m_pFirstSon is pointer
+	//     to first son and the sons are chained by m_pBrother)
+	union {
+		int m_intValue;
+		double m_doubleValue;
+		const char *m_stringValue;
+		GmlObject *m_pFirstSon;
+	};
+
+	// construction
+	GmlObject(GmlKey key, int intValue) : m_pBrother(0), m_key(key),
+		m_valueType(gmlIntValue), m_intValue(intValue)  { }
+
+	GmlObject(GmlKey key, double doubleValue) : m_pBrother(0), m_key(key),
+		m_valueType(gmlDoubleValue), m_doubleValue(doubleValue)  { }
+
+	GmlObject(GmlKey key, const char *stringValue) : m_pBrother(0), m_key(key),
+		m_valueType(gmlStringValue), m_stringValue(stringValue)  { }
+
+	GmlObject(GmlKey key) : m_pBrother(0), m_key(key),
+		m_valueType(gmlListBegin), m_pFirstSon(0)  { }
+
+	OGDF_NEW_DELETE
+};
+
+
+//---------------------------------------------------------
+// GmlParser
+// reads GML file and constructs GML parse tree
+//---------------------------------------------------------
+class OGDF_EXPORT GmlParser {
+	Hashing<String,int> m_hashTable; // hash table for tags
+	int m_num;
+
+	istream *m_is;
+	bool m_error;
+	String m_errorString;
+
+	char *m_rLineBuffer, *m_lineBuffer, *m_pCurrent, *m_pStore, m_cStore;
+
+	int m_intSymbol;
+	double m_doubleSymbol;
+	const char *m_stringSymbol;
+	GmlKey m_keySymbol;
+	String m_longString;
+
+	GmlObject *m_objectTree; // root node of GML parse tree
+
+	bool m_doCheck;
+	Array<node> m_mapToNode;
+	GmlObject  *m_graphObject;
+
+public:
+	// predefined id constants for all used keys
+	enum PredefinedKey { idPredefKey = 0, labelPredefKey, CreatorPredefKey,
+		namePredefKey, graphPredefKey, versionPredefKey, directedPredefKey,
+		nodePredefKey, edgePredefKey, graphicsPredefKey, xPredefKey,
+		yPredefKey, wPredefKey, hPredefKey, typePredefKey, widthPredefKey,
+		sourcePredefKey, targetPredefKey, arrowPredefKey, LinePredefKey,
+		pointPredefKey, generalizationPredefKey, subGraphPredefKey, fillPredefKey, clusterPredefKey,
+		rootClusterPredefKey, vertexPredefKey, colorPredefKey,
+		heightPredefKey, stipplePredefKey, patternPredefKey,
+		linePredefKey, lineWidthPredefKey, templatePredefKey,
+		edgeWeightPredefKey, NEXTPREDEFKEY };
+
+	// construction: creates object tree
+	// sets m_error flag if an error occured
+	GmlParser(const char *fileName, bool doCheck = false);
+	GmlParser(istream &is, bool doCheck = false);
+
+	// destruction: destroys object tree
+	~GmlParser();
+
+	// returns id of object
+	int id(GmlObject *object) const { return object->m_key->info(); }
+
+	// true <=> an error in GML files has been detected
+	bool error() const { return m_error; }
+	// returns error message
+	const String &errorString() const { return m_errorString; }
+
+	// creates graph from GML parse tree
+	bool read(Graph &G);
+	// creates attributed graph from GML parse tree
+	bool read(Graph &G, GraphAttributes &AG);
+	//creates clustergraph from GML parse tree
+	//bool read(Graph &G, ClusterGraph & CG);
+	//read only cluster part of object tree and create cluster graph structure
+	bool readCluster(Graph &G, ClusterGraph& CG);
+	//the same with attributes
+	bool readAttributedCluster(
+		Graph &G,
+		ClusterGraph& CG,
+		ClusterGraphAttributes& ACG);
+
+protected:
+
+	//read all cluster tree information
+	bool clusterRead(
+		GmlObject* rootCluster,
+		ClusterGraph& CG);
+
+	//with attributes
+	bool attributedClusterRead(
+		GmlObject* rootCluster,
+		ClusterGraph& CG,
+		ClusterGraphAttributes& ACG);
+
+	//recursively read cluster subtree information
+	bool recursiveClusterRead(
+		GmlObject* clusterObject,
+	 	ClusterGraph& CG,
+		cluster c);
+
+	bool recursiveAttributedClusterRead(
+		GmlObject* clusterObject,
+		ClusterGraph& CG,
+		ClusterGraphAttributes& ACG,
+		cluster c);
+
+	bool readClusterAttributes(
+		GmlObject* cGraphics,
+		cluster c,
+		ClusterGraphAttributes& ACG);
+
+private:
+	void doInit(istream &is, bool doCheck);
+	void createObjectTree(istream &is, bool doCheck);
+	void initPredefinedKeys();
+	void setError(const char *errorString);
+
+	GmlObject *parseList(GmlObjectType closingKey, GmlObjectType errorKey);
+	GmlObjectType getNextSymbol();
+	bool getLine();
+
+	GmlKey hashString(const String &str);
+
+	GmlObject *getNodeIdRange(int &minId,int &maxId);
+	void readLineAttribute(GmlObject *object, DPolyline &dpl);
+
+	void destroyObjectList(GmlObject *object);
+
+	void indent(ostream &os, int d);
+	void output(ostream &os, GmlObject *object, int d);
+
+};
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/fileformats/Ogml.cpp b/ogdf/fileformats/Ogml.cpp
new file mode 100644
index 0000000..6b7434a
--- /dev/null
+++ b/ogdf/fileformats/Ogml.cpp
@@ -0,0 +1,303 @@
+/*
+ * $Revision: 2597 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-15 19:26:11 +0200 (So, 15. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Contains diverse enumerations and string constants.
+ *
+ * \author Christian Wolf, Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "Ogml.h"
+
+
+namespace ogdf
+{
+
+	/// This vector contains the real names of all OGML tags
+	const String Ogml::s_tagNames[TAG_NUM] =
+	{
+		//"none"
+		"bool",
+		"composed",
+		"constraint",
+		"constraints",
+		"content",
+		"data",
+		"default",
+		"edge",
+		"edgeRef",
+		"edgeStyle",
+		"edgeStyleTemplate",
+		"template",
+		"endpoint",
+		"fill",
+		"font",
+		"graph",
+		"graphStyle",
+		"int",
+		"label",
+		"labelRef",
+		"labelStyle",
+		"labelStyleTemplate",
+		"template",
+		"layout",
+		"line",
+		"location",
+		"node",
+		"nodeRef",
+		"nodeStyle",
+		"nodeStyleTemplate",
+		"template",
+		"num",
+		"ogml",
+		"point",
+		"port",
+		"segment",
+		"shape",
+		"source",
+		"sourceStyle",
+		"string",
+		"structure",
+		"styles",
+		"styleTemplates",
+		"target",
+		"targetStyle",
+		"text",
+		"image"
+	};
+
+
+	// This vector contains the real names of all OGML attributes.
+	const String Ogml::s_attributeNames[ATT_NUM] =
+	{
+		"alignment",
+		"angle",
+		"color",
+		"decoration",
+		"defaultEdgeTemplate",
+		"defaultLabelTemplate",
+		"defaultNodeTemplate",
+		"family",
+		"height",
+		"id",			// id attribute
+		"idRef",		// attribute idRef of elements source, target, nodeRef, nodeStyle
+		"idRef",		// attribute idRef of elements edgeRef, edgeStyle
+		"idRef",		// attribute idRef of elements edgeRef, edgeStyle
+		"idRef",		// attribute idRef of element endpoint
+		"idRef",		// attribute idRef of element endpoint
+		"idRef",		// attribute idRef of subelement template of element nodeStyle
+		"idRef",		// attribute idRef of subelement template of element edgeStyle
+		"idRef",		// attribute idRef of subelement template of element labelStyle
+		"idRef",		// attribute idRef of subelement endpoint of element segment
+		"name",
+		"type",			// attribute type of subelement line of tag nodeStyleTemplate
+		"type",			// attribute type of subelement shape of tag nodeStyleTemplate
+		"pattern",
+		"patternColor",
+		"rotation",
+		"size",
+		"stretch",
+		"style",
+		"transform",
+		"type",			// attribute type of subelements source-/targetStyle of tag edgeStyleTemplate
+		"uri",
+		"value",
+		"value",
+		"value",
+		"variant",
+		"weight",
+		"width",
+		"x",
+		"y",
+		"z",
+		"uri",
+		"style",
+		"alignment",
+		"drawLine",
+		"width",
+		"height",
+		"type",
+		"disabled"
+	};
+
+
+	// This vector contains the real names of all OGML values of attributes.
+	const String Ogml::s_attributeValueNames[ATT_VAL_NUM] = {
+		"any",					// for any attributeValue
+		"blink",
+		"bold",
+		"bolder",
+		"bool",
+		"box",
+		"capitalize",
+		"center",
+		"checked",
+		"circle",
+		"condensed",
+		"cursive",
+		"dashed",
+		"esNoPen",				// values for line style
+		"esSolid",
+		"esDash",
+		"esDot",
+		"esDashdot",
+		"esDashdotdot",
+		"diamond",
+		"dotted",
+		"double",
+		"doubleSlash",
+		"ellipse",
+		"expanded",
+		"extraCondensed",
+		"extraExpanded",
+		"fantasy",
+		"filledBox",
+		"filledCircle",
+		"filledDiamond",
+		"filledHalfBox",
+		"filledHalfCircle",
+		"filledHalfDiamond",
+		"filledHalfRhomb",
+		"filledRhomb",
+		"smurf",
+		"arrow",
+		"groove",
+		"halfBox",
+		"halfCircle",
+		"halfDiamond",
+		"halfRhomb",
+		"hexagon",
+		"hex",
+		"id",
+		"nodeId",				// attribute idRef of elements source, target, nodeRef, nodeStyle
+		"edgeId",				// attribute idRef of elements edgeRef, edgeStyle
+		"labelId",				// attribute idRef of elements edgeRef, edgeStyle
+		"sourceId",				// attribute idRef of element endpoint
+		"targetId",				// attribute idRef of element endpoint
+		"nodeStyleTemplateId",	// attribute idRef of subelement template of element nodeStyle
+		"edgeStyleTemplateId",	// attribute idRef of subelement template of element edgeStyle
+		"labelStyleTemplateId",	// attribute idRef of subelement template of element labelStyle
+		"pointId",				// attribute idRef of subelement endpoint of element segment
+		"image",
+		"inset",
+		"int",
+		"italic",
+		"justify",
+		"left",
+		"lighter",
+		"line",
+		"lineThrough",
+		"lowercase",
+		"lParallelogram",
+		"monospace",
+		"narrower",
+		"none",
+		"normal",
+		"num",
+		"oblique",
+		"oct",
+		"octagon",
+		"outset",
+		"overline",
+		"pentagon",
+		"rect",
+		"rectSimple",
+		"rhomb",
+		"ridge",
+		"right",
+		"rParallelogram",
+		"sansSerif",
+		"semiCondensed",
+		"semiExpanded",
+		"serif",
+		"slash",
+		"smallCaps",
+		"solid",
+		"bpNone",				// values for node patterns
+		"bpSolid",
+		"bpDense1",
+		"bpDense2",
+		"bpDense3",
+		"bpDense4",
+		"bpDense5",
+		"bpDense6",
+		"bpDense7",
+		"bpHorizontal",
+		"bpVertical",
+		"bpCross",
+		"bpBackwardDiagonal",
+		"bpForwardDiagonal",
+		"bpDiagonalCross",
+		"string",
+		"striped",
+		"trapeze",
+		"triangle",
+		"triple",
+		"ultraCondensed",
+		"ultraExpanded",
+		"umlClass",
+		"underline",
+		"uppercase",
+		"upTrapeze",
+		"uri",
+		"wider",
+		"freeScale",   			// image-style
+		"fixScale",				// image-style
+		"topLeft",				// image-alignemnt
+		"topCenter",			// image-alignemnt
+		"topRight",				// image-alignemnt
+		"centerLeft",			// image-alignemnt
+		//	"center",			// just defined	// image-alignemnt
+		"centerRight",			// image-alignemnt
+		"bottomLeft",			// image-alignemnt
+		"bottomCenter",			// image-alignemnt
+		"bottomRight",			// image-alignemnt
+		"Alignment",
+		"Anchor",
+		"Sequence"
+	};
+
+
+	static const String s_graphTypeS[] =
+	{
+		"graph",
+		"clusterGraph",
+		"compoundGraph",
+		"corruptCompoundGraph"
+	};
+
+}; //namspace ogdf
diff --git a/ogdf/fileformats/Ogml.h b/ogdf/fileformats/Ogml.h
new file mode 100644
index 0000000..4a001b0
--- /dev/null
+++ b/ogdf/fileformats/Ogml.h
@@ -0,0 +1,368 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Contains diverse enumerations and string constants.
+ *        See comments for further information.
+ *
+ * \author Christian Wolf
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_OGML_H
+#define OGDF_OGML_H
+
+#include "../basic/String.h"
+
+
+namespace ogdf
+{
+
+class Ogml
+{
+public:
+
+	//! Max count of ogml tags (used for setting maxOccurs).
+	static const int MAX_TAG_COUNT = 4000;
+
+
+	//! This enumeration is used for identifying OGML tags.
+	enum TagId
+	{
+		t_none = -1,
+		t_bool,
+		t_composed,
+		t_constraint,
+		t_constraints,
+		t_content,
+		t_data,
+		t_default,
+		t_edge,
+		t_edgeRef,
+		t_edgeStyle,
+		t_edgeStyleTemplate,
+		t_edgeStyleTemplateRef,		//!< tag template within tag edgeStyle/-Template
+		t_endpoint,
+		t_fill,
+		t_font,
+		t_graph,
+		t_graphStyle,
+		t_int,
+		t_label,
+		t_labelRef,
+		t_labelStyle,
+		t_labelStyleTemplate,
+		t_labelStyleTemplateRef,	//!< tag template within tag labelStyle/-Template
+		t_layout,
+		t_line,
+		t_location,
+		t_node,
+		t_nodeRef,
+		t_nodeStyle,
+		t_nodeStyleTemplate,
+		t_nodeStyleTemplateRef,		//!< tag template within tag nodeStyle/-Template
+		t_num,
+		t_ogml,
+		t_point,
+		t_port,
+		t_segment,
+		t_shape,
+		t_source,
+		t_sourceStyle,
+		t_string,
+		t_structure,
+		t_styles,
+		t_styleTemplates,
+		t_target,
+		t_targetStyle,
+		t_text,
+		t_image,
+
+		TAG_NUM						//!< number of tags
+	};
+
+
+	//! Stores the names of all OGML tags.
+	static const String s_tagNames[TAG_NUM];
+
+
+	//! This enumeration is used for identifying OGML attributes.
+	enum AttributeId
+	{
+		a_none = -1,
+		a_alignment,
+		a_angle,
+		a_color,
+		a_decoration,
+		a_defaultEdgeTemplate,
+		a_defaultLabelTemplate,
+		a_defaultNodeTemplate,
+		a_family,
+		a_height,
+		a_id,						//!< id attribute
+		a_nodeIdRef,				//!< attribute idRef of elements source, target, nodeRef, nodeStyle
+		a_edgeIdRef,				//!< attribute idRef of elements edgeRef, edgeStyle
+		a_labelIdRef,				//!< attribute idRef of elements edgeRef, edgeStyle
+		a_sourceIdRef,				//!< attribute idRef of element endpoint
+		a_targetIdRef,				//!< attribute idRef of element endpoint
+		a_nodeStyleTemplateIdRef,	//!< attribute idRef of subelement template of element nodeStyle
+		a_edgeStyleTemplateIdRef,	//!< attribute idRef of subelement template of element edgeStyle
+		a_labelStyleTemplateIdRef,	//!< attribute idRef of subelement template of element labelStyle
+		a_endpointIdRef,			//!< attribute idRef of subelement endpoint of element segment
+		a_name,
+		a_nLineType,				//!< attribute type of subelement line of tag nodeStyleTemplate
+		a_nShapeType,				//!< attribute type of subelement shape of tag nodeStyleTemplate
+		a_pattern,
+		a_patternColor,
+		a_rotation,
+		a_size,
+		a_stretch,
+		a_style,
+		a_transform,
+		a_type,						//!< attribute type of subelements source-/targetStyle of tag edgeStyleTemplate
+		a_uri,
+		a_intValue,
+		a_boolValue,
+		a_numValue,
+		a_variant,
+		a_weight,
+		a_width,
+		a_x,
+		a_y,
+		a_z,
+		a_imageUri,
+		a_imageStyle,
+		a_imageAlignment,
+		a_imageDrawLine,
+		a_imageWidth,
+		a_imageHeight,
+		a_constraintType,
+		a_disabled,
+
+		ATT_NUM					//!< number of attributes
+	};
+
+
+	//! Stores the names of all OGML attributes.
+	static const String s_attributeNames[ATT_NUM];
+
+
+	//! This enumeration is used for identifying OGML attributes.
+	enum AttributeValueId
+	{
+		av_any = 0,					//!< for any attributeValue
+		av_blink,
+		av_bold,
+		av_bolder,
+		av_bool,
+		av_box,
+		av_capitalize,
+		av_center,
+		av_checked,
+		av_circle,
+		av_condensed,
+		av_cursive,
+		av_dashed,
+		av_esNoPen,					//!< values for line style
+		av_esSolid,
+		av_esDash,
+		av_esDot,
+		av_esDashdot,
+		av_esDashdotdot,
+		av_diamond,
+		av_dotted,
+		av_double,
+		av_doubleSlash,
+		av_ellipse,
+		av_expanded,
+		av_extraCondensed,
+		av_extraExpanded,
+		av_fantasy,
+		av_filledBox,
+		av_filledCircle,
+		av_filledDiamond,
+		av_filledHalfBox,
+		av_filledHalfCircle,
+		av_filledHalfDiamond,
+		av_filledHalfRhomb,
+		av_filledRhomb,
+		av_smurf,
+		av_arrow,
+		av_groove,
+		av_halfBox,
+		av_halfCircle,
+		av_halfDiamond,
+		av_halfRhomb,
+		av_hexagon,
+		av_hex,						//!< hexadecimal value
+		av_id,
+		av_nodeIdRef,				//!< attribute idRef of elements source, target, nodeRef, nodeStyle
+		av_edgeIdRef,				//!< attribute idRef of elements edgeRef, edgeStyle
+		av_labelIdRef,				//!< attribute idRef of elements edgeRef, edgeStyle
+		av_sourceIdRef,				//!< attribute idRef of element endpoint
+		av_targetIdRef,				//!< attribute idRef of element endpoint
+		av_nodeStyleTemplateIdRef,	//!< attribute idRef of subelement template of element nodeStyle
+		av_edgeStyleTemplateIdRef,	//!< attribute idRef of subelement template of element edgeStyle
+		av_labelStyleTemplateIdRef,	//!< attribute idRef of subelement template of element labelStyle
+		av_pointIdRef,				//!< attribute idRef of subelement endpoint of element segment
+		av_image,
+		av_inset,
+		av_int,						//!< integer value
+		av_italic,
+		av_justify,
+		av_left,
+		av_lighter,
+		av_line,
+		av_lineThrough,
+		av_lowercase,
+		av_lParallelogram,
+		av_monospace,
+		av_narrower,
+		av_none,
+		av_normal,
+		av_num,						//!< real value
+		av_oblique,
+		av_oct,
+		av_octagon,
+		av_outset,
+		av_overline,
+		av_pentagon,
+		av_rect,
+		av_rectSimple,
+		av_rhomb,
+		av_ridge,
+		av_right,
+		av_rParallelogram,
+		av_sansSerif,
+		av_semiCondensed,
+		av_semiExpanded,
+		av_serif,
+		av_slash,
+		av_smallCaps,
+		av_solid,
+		av_bpNone,					//!< values for node patterns
+		av_bpSolid,
+		av_bpDense1,
+		av_bpDense2,
+		av_bpDense3,
+		av_bpDense4,
+		av_bpDense5,
+		av_bpDense6,
+		av_bpDense7,
+		av_bpHorizontal,
+		av_bpVertical,
+		av_bpCross,
+		av_bpBackwardDiagonal,
+		av_bpForwardDiagonal,
+		av_bpDiagonalCross,
+		av_string,
+		av_striped,
+		av_trapeze,
+		av_triangle,
+		av_triple,
+		av_ultraCondensed,
+		av_ultraExpanded,
+		av_umlClass,
+		av_underline,
+		av_uppercase,
+		av_upTrapeze,
+		av_uri,
+		av_wider,
+		av_freeScale,				//!< image-style
+		av_fixScale,				//!< image-style
+		av_topLeft,					//!< image-alignemnt
+		av_topCenter,				//!< image-alignemnt
+		av_topRight,				//!< image-alignemnt
+		av_centerLeft,				//!< image-alignemnt
+		//	av_center,				// just defined	// image-alignemnt
+		av_centerRight,				//!< image-alignemnt
+		av_bottomLeft,				//!< image-alignemnt
+		av_bottomCenter,			//!< image-alignemnt
+		av_bottomRight,				//!< image-alignemnt
+		// Constraint-Types:
+		av_constraintAlignment,
+		av_constraintAnchor,
+		av_constraintSequence,
+
+		ATT_VAL_NUM					//!< number of attribute values
+	};
+
+
+	//! Stores the names of all OGML values of attributes.
+	static const String s_attributeValueNames[ATT_VAL_NUM];
+
+
+	//! This enumeration is used for encoding diverse validity stati of tags and attributes after parsing and validating a Xml file.
+	enum ValidityState
+	{
+		vs_tagEmptIncl = -10,	//!< empty tag inclusion
+		vs_idNotUnique = -9,	//!< id already exhausted
+		vs_idRefErr = -8,		//!< referenced id wasn't found or wrong type of referenced tag
+		vs_unexpTag = -7,		//!< tag unexpected
+		vs_unexpAtt = -6,		//!< attribute unexpected
+		vs_expTagNotFound = -5,	//!< expected tag not found
+		vs_expAttNotFound = -4,	//!< expected attribute not found
+		vs_attValueErr = -3,	//!< attribute-value error
+		vs_cardErr = -2,		//!< tag/attribute cardinality error
+		vs_invalid = -1,		//!< tag/attribute is invalid (no detailled information)
+		vs_valid = 1			//!< tag/attribute is valid
+	};
+
+
+	//! This enumeration is used for indentifying graph types.
+	enum GraphType
+	{
+		graph,
+		clusterGraph,
+		compoundGraph,
+		corruptCompoundGraph
+	};
+
+
+	//! Stores the names of graph types.
+	static const String s_graphTypeS[];
+};
+
+}; //namspace ogdf
+
+#endif
diff --git a/ogdf/fileformats/OgmlParser.cpp b/ogdf/fileformats/OgmlParser.cpp
new file mode 100644
index 0000000..6b5f480
--- /dev/null
+++ b/ogdf/fileformats/OgmlParser.cpp
@@ -0,0 +1,3939 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of OGML parser.
+ *
+ * \author Christian Wolf and Bernd Zey
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+#include "OgmlParser.h"
+#include "Ogml.h"
+
+
+namespace ogdf {
+
+
+//---------------------------------------------------------
+// OgmlParser::OgmlNodeTemplate
+//---------------------------------------------------------
+
+// struct definitions for mapping of templates
+struct OgmlParser::OgmlNodeTemplate
+{
+	String  m_id;
+	int     m_shapeType;
+	double  m_width;
+	double  m_height;
+	String  m_color;
+	GraphAttributes::BrushPattern m_pattern;
+	String  m_patternColor;
+	GraphAttributes::EdgeStyle m_lineType;
+	double  m_lineWidth;
+	String  m_lineColor;
+	// nodeTemplate stores the graphical type
+	// e.g. rectangle, ellipse, hexagon, ...
+	String  m_nodeTemplate;
+
+	//Constructor:
+	OgmlNodeTemplate(const String &id): m_id(id) { }
+};
+
+
+//---------------------------------------------------------
+// OgmlParser::OgmlEdgeTemplate
+//---------------------------------------------------------
+
+struct OgmlParser::OgmlEdgeTemplate
+{
+	String m_id;
+	GraphAttributes::EdgeStyle m_lineType;
+	double m_lineWidth;
+	String m_color;
+	int m_sourceType; // actually this is only a boolean value 0 or 1
+	// ogdf doesn't support source-arrow-color and size
+	//		String m_sourceColor;
+	//		double m_sourceSize;
+	int m_targetType; // actually this is only a boolean value 0 or 1
+	// ogdf doesn't support target-arrow-color and size
+	//		String m_targetColor;
+	//		double m_targetSize;
+
+	//Constructor:
+	OgmlEdgeTemplate(const String &id): m_id(id) { }
+};
+
+
+//	struct  OgmlParser::OgmlLabelTemplate{
+//		String m_id;
+//	};
+
+
+//---------------------------------------------------------
+// OgmlParser::OgmlSegment
+//---------------------------------------------------------
+
+struct OgmlParser::OgmlSegment
+{
+	DPoint point1, point2;
+};
+
+
+//---------------------------------------------------------
+// OgmlParser::OgmlAttributeValue
+//---------------------------------------------------------
+
+//! Objects of this class represent a value set of an attribute in Ogml.
+class OgmlParser::OgmlAttributeValue
+{
+	int id; //!< Id of the attribute value; for possible ones see Ogml.h.
+
+public:
+	// Construction
+	OgmlAttributeValue() : id(Ogml::av_any) { }
+
+	OgmlAttributeValue(int id) {
+		if(id >= 0 && id < Ogml::ATT_VAL_NUM) this->id = id;
+		else id = Ogml::av_any;
+	}
+
+	// Destruction
+	~OgmlAttributeValue() { }
+
+	// Getter
+	const int& getId() const { return id; }
+	const String& getValue() const { return Ogml::s_attributeValueNames[id]; }
+
+	// Setter
+	void setId(int id) {
+		if(id >= 0 && id < Ogml::ATT_VAL_NUM) this->id = id;
+		else id = Ogml::av_any;
+	}
+
+
+	/**
+	 * Checks the type of the input given in string
+	 * and returns an OgmlAttributeValueId defined in Ogml.h
+	 */
+	Ogml::AttributeValueId getTypeOfString(const String& input) const
+	{
+		// |--------------------|
+		// | char | ascii-value |
+		// |--------------------|
+		// | '.'  |     46      |
+		// | '-'  |     45      |
+		// | '+'  |     43      |
+		// | '#'  |		35		|
+
+		// bool values
+		bool isInt = true;
+		bool isNum = true;
+		bool isHex = true;
+
+		// value for point seperator
+		bool numPoint = false;
+
+		// input is a boolean value
+		if (input == "true" || input == "false" /*|| input == "0" || input == "1"*/)
+			return Ogml::av_bool;
+
+		if (input.length() > 0){
+			char actChar = input[0];
+			int actCharInt = static_cast<int>(actChar);
+			//check the first char
+			if (!isalnum(actChar)){
+
+				if (actCharInt == 35){
+					// support hex values with starting "#"
+					isInt = false;
+					isNum = false;
+				}
+				else
+				{
+
+					// (actChar != '-') and (actChar != '+')
+					if (!(actCharInt == 45) && !(actChar == 43)){
+						isInt = isNum = false;
+					}
+					else
+					{
+						// input[0] == '-' or '+'
+						if (input.length() > 1){
+							// 2nd char have to be a digit or xdigit
+							actChar = input[1];
+							actCharInt = static_cast<int>(actChar);
+							if (!isdigit(actChar)){
+								isInt = false;
+								isNum = false;
+								if (!isxdigit(actChar))
+									return Ogml::av_string;
+							}
+						}
+						else
+							return Ogml::av_string;
+					} // else... (input[0] == '-')
+				}
+			}
+			else{
+				if (!isdigit(actChar)){
+					isInt = false;
+					isNum = false;
+				}
+				if (!isxdigit(actChar)){
+					isHex = false;
+				}
+			}
+
+			// check every input char
+			// and set bool value to false if char-type is wrong
+			for(size_t it=1; ( (it<input.length()) && ((isInt) || (isNum) || (isHex)) ); it++)
+			{
+				actChar = input[it];
+				actCharInt = static_cast<int>(actChar);
+
+				// actChar == '.'
+				if (actChar == 46){
+					isInt = false;
+					isHex = false;
+					if (!numPoint){
+						numPoint = true;
+					}
+					else
+						isNum = false;
+				}// if (actChar == '.')
+				else {
+					if (!(isdigit(actChar))){
+						isInt = false;
+						isNum = false;
+					}
+					if (!(isxdigit(actChar)))
+						isHex = false;
+				}//else... (actChar != '.')
+			}//for
+		}//if (input.length() > 0)
+		else{
+			// input.length() == 0
+			return Ogml::av_none;
+		}
+		// return correct value
+		if (isInt) return Ogml::av_int;
+		if (isNum) return Ogml::av_num;
+		if (isHex) return Ogml::av_hex;
+		// if all bool values are false return av_string
+		return Ogml::av_string;
+
+	}//getTypeOfString
+
+
+	/**
+	 * According to id this method proofs whether s is a valid value
+	 * of the value set.
+	 * E.g. if id=av_int s should contain an integer value.
+	 * It returns the following validity states:
+	 * 		vs_idNotUnique    =-10, //id already exhausted
+	 * 		vs_idRefErr       = -9, //referenced id wasn't found or wrong type of referenced tag
+	 * 		vs_idRefErr       = -8, //referenced id wrong
+	 *		vs_attValueErr    = -3, //attribute-value error
+	 * 		Ogml::vs_valid		  =  1  //attribute-value is valid
+	 *
+	 * TODO: Completion of the switch-case statement.
+	 */
+	int validValue(
+		const String &attributeValue,
+		const XmlTagObject* xmlTag,		        //owns an attribute with attributeValue
+		Hashing<String,
+		const XmlTagObject*>& ids) const //hashtable with id-tagName pairs
+	{
+		//get attribute value type of string
+		Ogml::AttributeValueId stringType = getTypeOfString(attributeValue);
+
+		HashElement<String, const XmlTagObject*>* he;
+
+		int valid = Ogml::vs_attValueErr;
+
+		switch(id) {
+		case Ogml::av_any:
+			valid = Ogml::vs_valid;
+			break;
+
+		case Ogml::av_int:
+			if (stringType == Ogml::av_int) valid = Ogml::vs_valid;
+			break;
+
+		case Ogml::av_num:
+			if (stringType == Ogml::av_num) valid = Ogml::vs_valid;
+			if (stringType == Ogml::av_int) valid = Ogml::vs_valid;
+			break;
+
+		case Ogml::av_bool:
+			if (stringType == Ogml::av_bool) valid = Ogml::vs_valid;
+			break;
+
+		case Ogml::av_string:
+			valid = Ogml::vs_valid;
+			break;
+
+		case Ogml::av_hex:
+			if (stringType == Ogml::av_hex) valid = Ogml::vs_valid;
+			if (stringType == Ogml::av_int) valid = Ogml::vs_valid;
+			break;
+
+		case Ogml::av_oct:
+			valid = Ogml::vs_attValueErr;
+			break;
+
+		case Ogml::av_id:
+			// id mustn't exist
+			if( !(he = ids.lookup(attributeValue)) ) {
+				ids.fastInsert(attributeValue, xmlTag);
+				valid = Ogml::vs_valid;
+			}
+			else valid = Ogml::vs_idNotUnique;
+			break;
+
+		// attribute idRef of elements source, target, nodeRef, nodeStyle
+		case Ogml::av_nodeIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_node]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of elements edgeRef, edgeStyle
+		case Ogml::av_edgeIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_edge]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of elements labelRef, labelStyle
+		case Ogml::av_labelIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_label]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of element endpoint
+		case Ogml::av_sourceIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_source]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of element endpoint
+		case Ogml::av_targetIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_target]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of subelement template of element nodeStyle
+		case Ogml::av_nodeStyleTemplateIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_nodeStyleTemplate]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of subelement template of element edgeStyle
+		case Ogml::av_edgeStyleTemplateIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_edgeStyleTemplate]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		// attribute idRef of subelement template of element labelStyle
+		case Ogml::av_labelStyleTemplateIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_labelStyleTemplate]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		case Ogml::av_pointIdRef:
+			// element exists && is tagname expected
+			if( (he = ids.lookup(attributeValue)) && (he->info()->getName() == Ogml::s_tagNames[Ogml::t_point]) ) valid = Ogml::vs_valid;
+			else valid = Ogml::vs_idRefErr;
+			break;
+
+		default:
+			// Proof string for equality
+			if(getValue() == attributeValue) valid = Ogml::vs_valid;
+			break;
+		}
+
+		return valid;
+	}
+
+};//class OgmlAttributeValue
+
+
+//---------------------------------------------------------
+// OgmlParser::OgmlAttribute
+//---------------------------------------------------------
+
+/** Objects of this class represent an attribute and its value set in Ogml.
+*/
+class OgmlParser::OgmlAttribute
+{
+	/**
+	*/
+	int id;  //!< Integer identifier of object; for possible ids see Ogml.h.
+	List<OgmlAttributeValue*> values; //!< Represents the value set of this attribute.
+
+public:
+
+	// Construction
+	OgmlAttribute() : id(Ogml::a_none), values() { }
+
+	OgmlAttribute(int id) : values() {
+		if(id >= 0 && id < Ogml::ATT_NUM) this->id = id;
+		else this->id = Ogml::a_none;
+	}
+
+	// Destruction
+	~OgmlAttribute() { }
+
+	// Getter
+	const int& getId() const { return id; }
+	const String& getName() const { return Ogml::s_attributeNames[id]; }
+	const List<OgmlAttributeValue*>& getValueList() const { return values; }
+
+	// Setter
+	void setId(int id) {
+		if(id >= 0 && id < Ogml::ATT_NUM) this->id = id;
+		else this->id = Ogml::a_none;
+	}
+
+	/**
+	 * Pushes pointers to OgmlAttributeValue objects back to list values.
+	 * These value objects are looked up in hashtable values.
+	 *
+	 * NOTE: This method uses a variable parameter list. The last parameter
+	 *       need to be -1!
+	 */
+	void pushValues(Hashing<int, OgmlAttributeValue> *val, int key, ...) {
+		va_list argp;
+		int arg = key;
+		HashElement<int, OgmlAttributeValue>* he;
+		va_start(argp, key);
+		while(arg!=-1) {
+			if((he = val->lookup(arg))) values.pushBack( &(he->info()) );
+			arg = va_arg(argp,int);
+		}
+		va_end(argp);
+	}
+
+	// Prints the value set of the attribute.
+	void print(ostream &os) const {
+		ListConstIterator<OgmlAttributeValue*> it;
+		os << "\"" << getName() << "\"={ ";
+		for(it = values.begin(); it.valid(); it++) {
+			os << (**it).getValue() << " ";
+		}
+		os << "}\n";
+	}
+
+	/**This method proofs whether o is a valid attribute in comparison
+	* to this object.
+	* That means if the name of o and this object are equal and if
+	* o has a valid value.
+	* It returns a validity state code (see Ogml.h).
+	**/
+	int validAttribute(const XmlAttributeObject &xmlAttribute,
+		const XmlTagObject* xmlTag,
+		Hashing<String, const XmlTagObject*>& ids) const
+	{
+		int valid = Ogml::vs_expAttNotFound;
+
+		if( xmlAttribute.getName() == getName() ) {
+			ListConstIterator<OgmlAttributeValue*> it;
+			for(it = values.begin(); it.valid(); it++) {
+				if ( (valid = (**it).validValue( xmlAttribute.getValue(), xmlTag, ids )) == Ogml::vs_valid ) break;
+			}
+		}
+
+		return valid;
+	}
+};//class OgmlAttribute
+
+
+
+//---------------------------------------------------------
+// OgmlParser::OgmlTag
+//---------------------------------------------------------
+
+/**Objects of this class represent a tag in Ogml with attributes.
+*/
+class OgmlParser::OgmlTag
+{
+	int id; //!< Integer identifier of object; for possible ids see Ogml.h.
+
+	int minOccurs, maxOccurs; // Min. occurs and max. occurs of this tag.
+
+	/**
+	 * Flag denotes whether tag content can be ignored.
+	 * It is possible to exchange this flag by a list of contents for more
+	 * complex purposes ;-)
+	 */
+	bool ignoreContent;
+
+	List<OgmlParser::OgmlAttribute*> compulsiveAttributes; //!< Represents the compulsive attributes of this object.
+	List<OgmlAttribute*> choiceAttributes; //!< Represents the attributes of this object of which at least one needs to exist.
+	List<OgmlAttribute*> optionalAttributes; //!< Represents the optional attributes of this object.
+
+	List<OgmlTag*> compulsiveTags;
+	List<OgmlTag*> choiceTags;
+	List<OgmlTag*> optionalTags;
+
+
+	void printOwnedTags(ostream &os, int mode) const
+	{
+		String s;
+        const List<OgmlTag*> *list = 0;
+
+		switch(mode) {
+		case 0:
+			list = &compulsiveTags;
+			s += "compulsive";
+			break;
+
+		case 1:
+			list = &choiceTags;
+			s += "selectable";
+			break;
+
+		case 2:
+			list = &optionalTags;
+			s += "optional";
+			break;
+
+		}
+
+		if(list->empty())
+			os << "Tag \"<" << getName() <<">\" doesn't include " << s << " tag(s).\n";
+		else {
+			os << "Tag \"<" << getName() <<">\" includes the following " << s << " tag(s): \n";
+			ListConstIterator<OgmlTag*> currTag;
+			for(currTag = list->begin(); currTag.valid(); currTag++)
+				os << "\t<" << (**currTag).getName() << ">\n";
+		}
+	}
+
+	void printOwnedAttributes(ostream &os, int mode) const
+	{
+		String s;
+        const List<OgmlAttribute*> *list = 0;
+
+		switch(mode)
+		case 0: {
+			list = &compulsiveAttributes;
+			s += "compulsive";
+			break;
+
+		case 1:
+			list = &choiceAttributes;
+			s += "selectable";
+			break;
+
+		case 2:
+			list = &optionalAttributes;
+			s += "optional";
+			break;
+
+		}
+
+		if(list->empty())
+			os << "Tag \"<" << getName() <<">\" doesn't include " << s << " attribute(s).\n";
+		else {
+			cout << "Tag \"<" << getName() <<">\" includes the following " << s << " attribute(s): \n";
+			ListConstIterator<OgmlAttribute*> currAtt;
+			for(currAtt = list->begin(); currAtt.valid(); currAtt++)
+				os << "\t"  << (**currAtt);
+		}
+	}
+
+
+public:
+
+	bool ownsCompulsiveTags() {
+		return !compulsiveTags.empty();
+	}
+
+	bool ownsChoiceTags() {
+		return !choiceTags.empty();
+	}
+
+	bool ownsOptionalTags() {
+		return !optionalTags.empty();
+	}
+
+	const List<OgmlTag*>& getCompulsiveTags() const { return compulsiveTags; }
+
+	const List<OgmlTag*>& getChoiceTags() const { return choiceTags; }
+
+	const List<OgmlTag*>& getOptionalTags() const { return optionalTags; }
+
+
+	const int& getMinOccurs() const { return minOccurs; }
+
+	const int& getMaxOccurs() const { return maxOccurs; }
+
+	const bool& ignoresContent() const { return ignoreContent; }
+
+	void setMinOccurs(int occurs) { minOccurs = occurs; }
+
+	void setMaxOccurs(int occurs) { maxOccurs = occurs; }
+
+	void setIgnoreContent(bool ignore) { ignoreContent = ignore; }
+
+	//Construction
+	OgmlTag() : id(Ogml::t_none), ignoreContent(0) { }
+
+	OgmlTag(int id) : id(Ogml::t_none), ignoreContent(0) {
+		if(id >= 0 && id < Ogml::TAG_NUM) this->id = id;
+		else id = Ogml::a_none;
+	}
+
+	//Destruction
+	~OgmlTag() {}
+
+	//Getter
+	const int& getId() const { return id; }
+	const String& getName() const { return Ogml::s_tagNames[id]; }
+
+	//Setter
+	void setId(int id){
+		if(id >= 0 && id < Ogml::TAG_NUM) this->id = id;
+		else id = Ogml::a_none;
+	}
+
+
+	void printOwnedTags(ostream& os) const {
+		printOwnedTags(os, 0);
+		printOwnedTags(os, 1);
+		printOwnedTags(os, 2);
+	}
+
+	void printOwnedAttributes(ostream& os) const {
+		printOwnedAttributes(os, 0);
+		printOwnedAttributes(os, 1);
+		printOwnedAttributes(os, 2);
+	}
+
+	/**Pushes pointers to OgmlAttribute objects back to list reqAttributes.
+	* These value objects are looked up in hashtable attrib.
+	*
+	* NOTE: This method uses a variable parameter list. The last parameter
+	*       need to be -1!
+	*/
+	void pushAttributes(int mode, Hashing<int, OgmlAttribute> *attrib, int key, ...)
+	{
+		List<OgmlAttribute*>* list;
+
+		if(mode==0) list = &compulsiveAttributes;
+		else if(mode==1) list = &choiceAttributes;
+		else list = &optionalAttributes;
+
+		va_list argp;
+		int arg = key;
+		HashElement<int, OgmlAttribute>* he;
+		va_start(argp, key);
+		while(arg!=-1) {
+			if((he = attrib->lookup(arg)))
+				(*list).pushBack( &(he->info()) );
+			arg = va_arg(argp,int);
+		}
+		va_end(argp);
+	}
+
+	/**Pushes pointers to OgmlAttribute objects back to list reqAttributes.
+	* These value objects are looked up in hashtable tag.
+	*
+	* NOTE: This method uses a variable parameter list. The last parameter
+	*       need to be -1!
+	*/
+	void pushTags(int mode, Hashing<int, OgmlTag> *tag, int key, ...)
+	{
+		List<OgmlTag*>* list;
+
+		if(mode==0) list = &compulsiveTags;
+		else if(mode==1) list = &choiceTags;
+		else list = &optionalTags;
+
+		va_list argp;
+		int arg = key;
+		HashElement<int, OgmlTag>* he;
+		va_start(argp, key);
+
+		while(arg!=-1) {
+			if((he = tag->lookup(arg)))
+				(*list).pushBack( &(he->info()) );
+			arg = va_arg(argp,int);
+		}
+		va_end(argp);
+	}
+
+	/**This method proofs whether o is a valid tag in comparison
+	* to this object.
+	* That means if the name of o and this object are equal and if
+	* the attribute list of o is valid (see also validAttribute(...)
+	* in OgmlAttribute.h). Otherwise false.
+	*/
+	int validTag(const XmlTagObject &o,
+		Hashing<String, const XmlTagObject*>& ids) const
+	{
+		int valid = Ogml::vs_unexpTag;
+
+		if( o.getName() == getName() ) {
+
+			ListConstIterator<OgmlAttribute*> it;
+			XmlAttributeObject* att;
+
+			//Tag requires attributes
+			if(!compulsiveAttributes.empty()) {
+
+				for(it = compulsiveAttributes.begin(); it.valid(); it++) {
+					//Att not found or invalid
+					if(!o.findXmlAttributeObjectByName((**it).getName(), att) )
+						return valid = Ogml::vs_expAttNotFound;
+					if( (valid = (**it).validAttribute(*att, &o, ids) ) <0 )
+						return valid;
+					//Att is valid
+					att->setValid();
+				}
+			}
+
+			//Choice attributes
+			if(!choiceAttributes.empty()) {
+
+				bool tookChoice = false;
+
+				for(it = choiceAttributes.begin(); it.valid(); it++) {
+					//Choice att found
+					if( o.findXmlAttributeObjectByName((**it).getName(), att) ) {
+						//Proof if valid
+						if( (valid = (**it).validAttribute(*att, &o, ids)) <0 )
+							return valid;
+						tookChoice = true;
+						att->setValid();
+					}
+				}
+
+				if(!tookChoice)
+					return valid = Ogml::vs_expAttNotFound;
+
+			}
+
+			if(!optionalAttributes.empty() && !o.isAttributeLess()) {
+
+				//Check optional attributes
+				for(it = optionalAttributes.begin(); it.valid(); it++) {
+					if( o.findXmlAttributeObjectByName((**it).getName(), att) ) {
+						if( (valid = (**it).validAttribute(*att, &o, ids)) <0 )
+							return valid;
+						att->setValid();
+					}
+				}
+			}
+
+			//Are there still invalid attributes?
+			att = o.m_pFirstAttribute;
+			while(att) {
+				if(!att->valid())
+					return valid = Ogml::vs_unexpAtt;
+				att = att->m_pNextAttribute;
+			}
+
+			valid = Ogml::vs_valid;
+		}
+
+		return valid;
+	}
+
+};//class OgmlTag
+
+
+
+//---------------------------------------------------------
+// OgmlParser
+//---------------------------------------------------------
+
+// Definition of Hashtables
+Hashing < int, OgmlParser::OgmlTag >            *OgmlParser::s_tags = 0;
+Hashing < int, OgmlParser::OgmlAttribute >      *OgmlParser::s_attributes = 0;
+Hashing < int, OgmlParser::OgmlAttributeValue > *OgmlParser::s_attValues = 0;
+
+
+// ***********************************************************
+//
+// b u i l d H a s h T a b l e s
+//
+// ***********************************************************
+void OgmlParser::buildHashTables()
+{
+	if(s_tags != 0)  // hash tables already built?
+		return;
+
+	s_tags       = new Hashing < int, OgmlParser::OgmlTag >;
+	s_attributes = new Hashing < int, OgmlParser::OgmlAttribute >;
+	s_attValues  = new Hashing < int, OgmlParser::OgmlAttributeValue >;
+
+	// Create OgmlAttributeValue objects and fill hashtable s_attValues.
+
+	for (int i = 0; i < Ogml::ATT_VAL_NUM; i++)
+		s_attValues->fastInsert(i, OgmlAttributeValue(i));
+
+	for (int i = 0; i < Ogml::ATT_NUM; i++)
+		s_attributes->fastInsert(i, OgmlAttribute(i));
+
+
+	// Create OgmlAttribute objects and fill hashtable attributes.
+
+	for (int i = 0; i < Ogml::ATT_NUM; i++) {
+
+		OgmlAttribute &att = s_attributes->lookup(i)->info();
+
+		switch (i) {
+
+		case Ogml::a_alignment:
+			att.pushValues(s_attValues,
+				Ogml::av_left,
+				Ogml::av_center,
+				Ogml::av_right,
+				Ogml::av_justify,
+				-1);
+			break;
+
+		case Ogml::a_angle:
+			att.pushValues(s_attValues,
+				Ogml::av_int,
+				-1);
+			break;
+
+		case Ogml::a_color:
+			att.pushValues(s_attValues,
+				Ogml::av_hex,
+				-1);
+			break;
+
+		case Ogml::a_decoration:
+			att.pushValues(s_attValues,
+				Ogml::av_underline,
+				Ogml::av_overline,
+				Ogml::av_lineThrough,
+				Ogml::av_blink,
+				Ogml::av_none,
+				-1);
+			break;
+
+		case Ogml::a_defaultEdgeTemplate:
+			att.pushValues(s_attValues, Ogml::av_any, -1);
+			break;
+
+		case Ogml::a_defaultLabelTemplate:
+			att.pushValues(s_attValues, Ogml::av_any, -1);
+			break;
+
+		case Ogml::a_defaultNodeTemplate:
+			att.pushValues(s_attValues, Ogml::av_any, -1);
+			break;
+
+		case Ogml::a_family:
+			att.pushValues(s_attValues,
+				Ogml::av_serif,
+				Ogml::av_sansSerif,
+				Ogml::av_cursive,
+				Ogml::av_fantasy,
+				Ogml::av_monospace,
+				-1);
+			break;
+
+		case Ogml::a_height:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+			break;
+
+		case Ogml::a_id:
+			att.pushValues(s_attValues, Ogml::av_id, -1);
+			break;
+
+		case Ogml::a_nodeIdRef:
+			att.pushValues(s_attValues, Ogml::av_nodeIdRef, -1);
+			break;
+
+		case Ogml::a_edgeIdRef:
+			att.pushValues(s_attValues, Ogml::av_edgeIdRef, -1);
+			break;
+
+		case Ogml::a_labelIdRef:
+			att.pushValues(s_attValues, Ogml::av_labelIdRef, -1);
+			break;
+
+		case Ogml::a_sourceIdRef:
+			att.pushValues(s_attValues, Ogml::av_nodeIdRef, Ogml::av_edgeIdRef, -1);
+			break;
+
+		case Ogml::a_targetIdRef:
+			att.pushValues(s_attValues, Ogml::av_nodeIdRef, Ogml::av_edgeIdRef, -1);
+			break;
+
+		case Ogml::a_nodeStyleTemplateIdRef:
+			att.pushValues(s_attValues, Ogml::av_nodeStyleTemplateIdRef, -1);
+			break;
+
+		case Ogml::a_edgeStyleTemplateIdRef:
+			att.pushValues(s_attValues, Ogml::av_edgeStyleTemplateIdRef, -1);
+			break;
+
+		case Ogml::a_labelStyleTemplateIdRef:
+			att.pushValues(s_attValues, Ogml::av_labelStyleTemplateIdRef, -1);
+			break;
+
+		case Ogml::a_endpointIdRef:
+			att.pushValues(s_attValues, Ogml::av_pointIdRef, Ogml::av_sourceIdRef, Ogml::av_targetIdRef, -1);
+			break;
+
+		case Ogml::a_name:
+			att.pushValues(s_attValues, Ogml::av_any, -1);
+			break;
+
+		// attribute type of subelement line of tag nodeStyleTemplate
+		case Ogml::a_nLineType:
+			att.pushValues(s_attValues,
+				Ogml::av_solid,
+				Ogml::av_dotted,
+				Ogml::av_dashed,
+				Ogml::av_double,
+				Ogml::av_triple,
+				Ogml::av_groove,
+				Ogml::av_ridge,
+				Ogml::av_inset,
+				Ogml::av_outset,
+				Ogml::av_none,
+				Ogml::av_esNoPen,
+				Ogml::av_esSolid,
+				Ogml::av_esDash,
+				Ogml::av_esDot,
+				Ogml::av_esDashdot,
+				Ogml::av_esDashdotdot,
+				-1);
+			break;
+
+		// attribute type of subelement shape of tag nodeStyleTemplate
+		case Ogml::a_nShapeType:
+			att.pushValues(s_attValues,
+				Ogml::av_rect,
+				Ogml::av_rectSimple,
+				Ogml::av_triangle,
+				Ogml::av_circle,
+				Ogml::av_ellipse,
+				Ogml::av_hexagon,
+				Ogml::av_rhomb,
+				Ogml::av_trapeze,
+				Ogml::av_upTrapeze,
+				Ogml::av_lParallelogram,
+				Ogml::av_rParallelogram,
+				Ogml::av_pentagon,
+				Ogml::av_octagon,
+				Ogml::av_umlClass,
+				Ogml::av_image,
+				-1);
+			break;
+
+		case Ogml::a_pattern:
+			att.pushValues(s_attValues,
+				Ogml::av_solid,
+				Ogml::av_striped,
+				Ogml::av_checked,
+				Ogml::av_dotted,
+				Ogml::av_none,
+				Ogml::av_bpNone,
+				Ogml::av_bpSolid,
+				Ogml::av_bpDense1,
+				Ogml::av_bpDense2,
+				Ogml::av_bpDense3,
+				Ogml::av_bpDense4,
+				Ogml::av_bpDense5,
+				Ogml::av_bpDense6,
+				Ogml::av_bpDense7,
+				Ogml::av_bpHorizontal,
+				Ogml::av_bpVertical,
+				Ogml::av_bpCross,
+				Ogml::av_bpBackwardDiagonal,
+				Ogml::av_bpForwardDiagonal,
+				Ogml::av_bpDiagonalCross, -1);
+			break;
+
+		case Ogml::a_patternColor:
+			att.pushValues(s_attValues, Ogml::av_hex, -1);
+			break;
+
+		case Ogml::a_rotation:
+			att.pushValues(s_attValues, Ogml::av_int, -1);
+			break;
+
+		case Ogml::a_size:
+			att.pushValues(s_attValues, Ogml::av_int, -1);
+			break;
+
+		case Ogml::a_stretch:
+			att.pushValues(s_attValues,
+				Ogml::av_normal,
+				Ogml::av_wider,
+				Ogml::av_narrower,
+				Ogml::av_ultraCondensed,
+				Ogml::av_extraCondensed,
+				Ogml::av_condensed,
+				Ogml::av_semiCondensed,
+				Ogml::av_semiExpanded,
+				Ogml::av_expanded,
+				Ogml::av_extraExpanded,
+				Ogml::av_ultraExpanded, -1);
+			break;
+
+		case Ogml::a_style:
+			att.pushValues(s_attValues, Ogml::av_normal, Ogml::av_italic, Ogml::av_oblique, -1);
+			break;
+
+		case Ogml::a_transform:
+			att.pushValues(s_attValues, Ogml::av_capitalize, Ogml::av_uppercase, Ogml::av_lowercase, Ogml::av_none, -1);
+			break;
+
+		// attribute type of subelements source-/targetStyle of tag edgeStyleTemplate
+		case Ogml::a_type:
+			att.pushValues(s_attValues,
+				Ogml::av_circle,
+				Ogml::av_halfCircle,
+				Ogml::av_filledCircle,
+				Ogml::av_filledHalfCircle,
+				Ogml::av_box,
+				Ogml::av_halfBox,
+				Ogml::av_filledBox,
+				Ogml::av_filledHalfBox,
+				Ogml::av_rhomb,
+				Ogml::av_halfRhomb,
+				Ogml::av_filledRhomb,
+				Ogml::av_filledHalfRhomb,
+				Ogml::av_diamond,
+				Ogml::av_halfDiamond,
+				Ogml::av_filledDiamond,
+				Ogml::av_filledHalfDiamond,
+				Ogml::av_smurf,
+				Ogml::av_arrow,
+				Ogml::av_slash,
+				Ogml::av_doubleSlash,
+				Ogml::av_solid,
+				Ogml::av_line,
+				Ogml::av_none, -1);
+			break;
+
+		case Ogml::a_uri:
+			att.pushValues(s_attValues, Ogml::av_uri, -1);
+			break;
+
+		case Ogml::a_intValue:
+			att.pushValues(s_attValues, Ogml::av_int, -1);
+			break;
+
+		case Ogml::a_numValue:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+			break;
+
+		case Ogml::a_boolValue:
+			att.pushValues(s_attValues, Ogml::av_bool, -1);
+			break;
+
+		case Ogml::a_variant:
+			att.pushValues(s_attValues, Ogml::av_normal, Ogml::av_smallCaps, -1);
+			break;
+
+		case Ogml::a_weight:
+			att.pushValues(s_attValues,
+				Ogml::av_normal,
+				Ogml::av_bold,
+				Ogml::av_bolder,
+				Ogml::av_lighter,
+				Ogml::av_int,
+				-1);
+			break;
+
+		case Ogml::a_width:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+			break;
+
+		case Ogml::a_x:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+			break;
+
+		case Ogml::a_y:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+			break;
+
+		case Ogml::a_z:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+
+		case Ogml::a_imageUri:
+			att.pushValues(s_attValues, Ogml::av_string, -1);
+
+		case Ogml::a_imageStyle:
+			att.pushValues(s_attValues, Ogml::av_freeScale, Ogml::av_fixScale, -1);
+
+		case Ogml::a_imageAlignment:
+			att.pushValues(s_attValues, Ogml::av_topLeft,
+				Ogml::av_topCenter,
+				Ogml::av_topRight,
+				Ogml::av_centerLeft,
+				Ogml::av_center,
+				Ogml::av_centerRight,
+				Ogml::av_bottomLeft,
+				Ogml::av_bottomCenter,
+				Ogml::av_bottomRight, -1);
+
+		case Ogml::a_imageDrawLine:
+			att.pushValues(s_attValues, Ogml::av_bool, -1);
+
+		case Ogml::a_imageWidth:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+
+		case Ogml::a_imageHeight:
+			att.pushValues(s_attValues, Ogml::av_num, -1);
+
+		case Ogml::a_constraintType:
+			att.pushValues(s_attValues, Ogml::av_constraintAlignment, Ogml::av_constraintAnchor, Ogml::av_constraintSequence, -1);
+
+		case Ogml::a_disabled:
+			att.pushValues(s_attValues, Ogml::av_bool, -1);
+
+		}
+	}
+
+
+	// Create OgmlTag objects and fill hashtable tags.
+
+	for (int i = 0; i < Ogml::TAG_NUM; i++)
+		s_tags->fastInsert(i, OgmlTag(i));
+
+
+	enum Mode { compMode = 0, choiceMode, optMode };
+
+	// Create tag relations.
+
+	for (int i = 0; i < Ogml::TAG_NUM; i++)
+	{
+		OgmlTag &tag = s_tags->lookup(i)->info();
+
+		switch (i) {
+		case Ogml::t_bool:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_boolValue, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			break;
+
+		case Ogml::t_composed:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_num, Ogml::t_int, Ogml::t_bool,
+				Ogml::t_string, Ogml::t_nodeRef, Ogml::t_edgeRef, Ogml::t_labelRef, Ogml::t_composed, -1);
+			break;
+
+		case Ogml::t_constraint:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_constraintType, -1);
+			tag.pushAttributes(choiceMode, s_attributes, Ogml::a_id, Ogml::a_name, Ogml::a_disabled, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_num, Ogml::t_int, Ogml::t_bool,
+				Ogml::t_string, Ogml::t_nodeRef, Ogml::t_edgeRef, Ogml::t_labelRef, Ogml::t_composed, Ogml::t_constraint, -1);
+			break;
+
+		case Ogml::t_constraints:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushTags(compMode, s_tags, Ogml::t_constraint, -1);
+			break;
+
+		case Ogml::t_content:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.setIgnoreContent(true);
+			break;
+
+		case Ogml::t_data:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_int, Ogml::t_bool, Ogml::t_num, Ogml::t_string, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_default:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			break;
+
+		case Ogml::t_edge:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_source, Ogml::t_target, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_label, -1);
+			break;
+
+		case Ogml::t_edgeRef:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_edgeIdRef, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			break;
+
+		case Ogml::t_edgeStyle:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_edgeIdRef, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_edgeStyleTemplateRef,
+				Ogml::t_line, Ogml::t_sourceStyle, Ogml::t_targetStyle, Ogml::t_point, Ogml::t_segment, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_edgeStyleTemplate:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_line, Ogml::t_sourceStyle, Ogml::t_targetStyle, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_edgeStyleTemplateRef, -1);
+			break;
+
+		case Ogml::t_endpoint:
+			tag.setMinOccurs(2);
+			tag.setMaxOccurs(2);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_endpointIdRef, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_type, Ogml::a_color, Ogml::a_size, -1);
+			break;
+
+		case Ogml::t_fill:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_color, Ogml::a_pattern, Ogml::a_patternColor, -1);
+			break;
+
+		case Ogml::t_font:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_family, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_style,
+				Ogml::a_variant, Ogml::a_weight, Ogml::a_stretch, Ogml::a_size, Ogml::a_color, -1);
+			break;
+
+		case Ogml::t_graph:
+			tag.setMinOccurs(1);
+			tag.setMaxOccurs(1);
+			tag.pushTags(compMode, s_tags, Ogml::t_structure, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_layout, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_graphStyle:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(choiceMode, s_attributes,
+				Ogml::a_defaultNodeTemplate,
+				Ogml::a_defaultEdgeTemplate, Ogml::a_defaultLabelTemplate, -1);
+			break;
+
+		case Ogml::t_int:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_intValue, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			break;
+
+		case Ogml::t_label:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(compMode, s_tags, Ogml::t_content, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_labelRef:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_labelIdRef, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			break;
+
+		case Ogml::t_labelStyle:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_labelIdRef, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_labelStyleTemplateRef,
+				Ogml::t_data, Ogml::t_text, Ogml::t_font, Ogml::t_location, -1);
+			break;
+
+		case Ogml::t_labelStyleTemplate:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(compMode, s_tags, Ogml::t_text, Ogml::t_font, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_labelStyleTemplateRef, -1);
+			break;
+
+		case Ogml::t_layout:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_styleTemplates, Ogml::t_styles, Ogml::t_constraints, -1);
+			break;
+
+		case Ogml::t_line:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(choiceMode, s_attributes, Ogml::a_nLineType, Ogml::a_width, Ogml::a_color, -1);
+			break;
+
+		case Ogml::t_location:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_x, Ogml::a_y, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_z, -1);
+			break;
+
+		case Ogml::t_node:
+			tag.setMinOccurs(1);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_label, Ogml::t_node, -1);
+			break;
+
+		case Ogml::t_nodeRef:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_nodeIdRef, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			break;
+
+		case Ogml::t_nodeStyle:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_nodeIdRef, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_location, Ogml::t_shape, Ogml::t_fill, Ogml::t_line, Ogml::t_image, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_nodeStyleTemplateRef, -1);
+			break;
+
+
+		case Ogml::t_nodeStyleTemplate:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_shape, Ogml::t_fill, Ogml::t_line, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_nodeStyleTemplateRef, -1);
+			break;
+
+		case Ogml::t_num:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_numValue, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			break;
+
+		case Ogml::t_ogml:
+			tag.setMinOccurs(1);
+			tag.setMaxOccurs(1);
+			tag.pushTags(compMode, s_tags, Ogml::t_graph, -1);
+			break;
+
+		case Ogml::t_point:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, Ogml::a_x, Ogml::a_y, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_z, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_port:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_id, Ogml::a_x, Ogml::a_y, -1);
+			break;
+
+		case Ogml::t_segment:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushTags(compMode, s_tags, Ogml::t_endpoint, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_line, -1);
+			break;
+
+		case Ogml::t_shape:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(choiceMode, s_attributes, Ogml::a_nShapeType, Ogml::a_width, Ogml::a_height, /*a_uri,*/ -1);
+			// comment (BZ): uri is obsolete, images got an own tag
+			break;
+
+		case Ogml::t_source:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_sourceIdRef, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_label, -1);
+			break;
+
+		case Ogml::t_sourceStyle:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(choiceMode, s_attributes, Ogml::a_type, Ogml::a_color, Ogml::a_size, -1);
+			break;
+
+		case Ogml::t_string:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_name, -1);
+			tag.setIgnoreContent(true);
+			break;
+
+		case Ogml::t_structure:
+			tag.setMinOccurs(1);
+			tag.setMaxOccurs(1);
+			tag.pushTags(compMode, s_tags, Ogml::t_node, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_edge, Ogml::t_label, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_styles:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_nodeStyle, Ogml::t_edgeStyle, Ogml::t_labelStyle, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_graphStyle, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_styleTemplates:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushTags(choiceMode, s_tags, Ogml::t_nodeStyleTemplate,
+				Ogml::t_edgeStyleTemplate, Ogml::t_labelStyleTemplate, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, -1);
+			break;
+
+		case Ogml::t_target:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(Ogml::MAX_TAG_COUNT);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_targetIdRef, -1);
+			tag.pushAttributes(optMode, s_attributes, Ogml::a_id, -1);
+			tag.pushTags(optMode, s_tags, Ogml::t_data, Ogml::t_label, -1);
+			break;
+
+		case Ogml::t_targetStyle:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(choiceMode, s_attributes, Ogml::a_type, Ogml::a_color, Ogml::a_size, -1);
+			break;
+
+		case Ogml::t_labelStyleTemplateRef:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_labelStyleTemplateIdRef, -1);
+			break;
+
+		case Ogml::t_nodeStyleTemplateRef:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_nodeStyleTemplateIdRef, -1);
+			break;
+
+		case Ogml::t_edgeStyleTemplateRef:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_edgeStyleTemplateIdRef, -1);
+			break;
+
+		case Ogml::t_text:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(choiceMode, s_attributes, Ogml::a_alignment,
+				Ogml::a_decoration, Ogml::a_transform, Ogml::a_rotation, -1);
+			break;
+
+		case Ogml::t_image:
+			tag.setMinOccurs(0);
+			tag.setMaxOccurs(1);
+			tag.pushAttributes(compMode, s_attributes, Ogml::a_imageUri, -1);
+			tag.pushAttributes(optMode, s_attributes,
+				Ogml::a_imageStyle,
+				Ogml::a_imageAlignment,
+				Ogml::a_imageDrawLine,
+				Ogml::a_imageWidth,
+				Ogml::a_imageHeight, -1);
+			break;
+		}
+	}
+}
+
+
+// ********************************************************
+//
+// v a l i d a t e
+//
+// ********************************************************
+int OgmlParser::validate(const XmlTagObject * xmlTag, int ogmlTagId)
+{
+
+	OgmlTag *ogmlTag = &s_tags->lookup(ogmlTagId)->info();
+	ListConstIterator < OgmlTag * > it;
+	XmlTagObject *sonTag;
+	int valid;
+
+	// Perhaps xmlTag is already valid
+	if(xmlTag->valid())
+		return valid = Ogml::vs_valid;
+
+	if(!ogmlTag) {
+		cerr << "Didn't found tag with id \"" << ogmlTagId << "\" in hashtable in OgmlParser::validate! Aborting.\n";
+		return false;
+	}
+
+	if((valid = ogmlTag->validTag(*xmlTag, m_ids)) < 0) {
+		this->printValidityInfo(*ogmlTag, *xmlTag, valid, __LINE__);
+		return valid;
+	}
+
+	// if tag ignores its content simply return
+	if(ogmlTag->ignoresContent()) {
+		xmlTag->setValid();
+#ifdef OGDF_DEBUG
+		this->printValidityInfo(*ogmlTag, *xmlTag, valid = Ogml::vs_valid, __LINE__);
+#endif
+		return valid = Ogml::vs_valid;
+	}
+
+	// Check if all required son tags exist
+	if(ogmlTag->ownsCompulsiveTags())
+	{
+		// find all obligatoric sons: all obligatoric sons
+		for (it = ogmlTag->getCompulsiveTags().begin(); it.valid(); it++)
+		{
+			int cnt = 0;
+
+			// search for untested sons
+			sonTag = xmlTag->m_pFirstSon;
+			while(sonTag) {
+				if(sonTag->getName() == (**it).getName()) {
+					cnt++;
+					if((valid = validate(sonTag, (**it).getId())) < 0)
+						return valid;
+				}
+				sonTag = sonTag->m_pBrother;
+			}
+
+			// Exp. son not found
+			if(cnt == 0) {
+				this->printValidityInfo(*ogmlTag, *xmlTag, valid = Ogml::vs_expTagNotFound, __LINE__);
+				return valid;
+			}
+
+			// Check cardinality
+			if(cnt < (**it).getMinOccurs() || cnt > (**it).getMaxOccurs()) {
+				this->printValidityInfo((**it), *xmlTag, valid = Ogml::vs_cardErr, __LINE__);
+				return valid;
+			}
+		}
+	}
+
+	// Check if choice son tags exist
+	if(ogmlTag->ownsChoiceTags())
+	{
+		bool tookChoice = false;
+
+		// find all obligatoric sons: all obligatoric sons
+		for (it = ogmlTag->getChoiceTags().begin(); it.valid(); it++)
+		{
+			int cnt = 0;
+
+			// search for untested sons
+			sonTag = xmlTag->m_pFirstSon;
+			while(sonTag) {
+				if(sonTag->getName() == (**it).getName()) {
+					if((valid = validate(sonTag, (**it).getId())) < 0)
+						return valid;
+					tookChoice = true;
+					cnt++;
+				}
+				sonTag = sonTag->m_pBrother;
+			}
+
+			// Check cardinality
+			if(cnt > 0 && (cnt < (**it).getMinOccurs()
+				|| cnt > (**it).getMaxOccurs())) {
+					this->printValidityInfo((**it), *xmlTag, valid = Ogml::vs_cardErr, __LINE__);
+					return valid;
+			}
+
+		}
+		if ((!tookChoice) && (xmlTag->m_pFirstSon)) {
+			this->printValidityInfo((**it), *xmlTag, valid = Ogml::vs_tagEmptIncl, __LINE__);
+			return valid;
+		}
+
+	}	//Check choice son tags
+
+	// Check if opt son tags exist
+	if(ogmlTag->ownsOptionalTags())
+	{
+		// find all obligatoric sons: all obligatoric sons
+		for (it = ogmlTag->getOptionalTags().begin(); it.valid(); ++it)
+		{
+			int cnt = 0;
+
+			// search for untested sons
+			sonTag = xmlTag->m_pFirstSon;
+			while(sonTag) {
+
+				if(sonTag->getName() == (**it).getName()) {
+					if((valid = validate(sonTag, (**it).getId())) < 0)
+						return valid;
+					cnt++;
+				}
+				sonTag = sonTag->m_pBrother;
+			}
+
+			// Check cardinality
+			// if( (cnt<(**it).getMinOccurs() || cnt>(**it).getMaxOccurs()) ) {
+			if(cnt > (**it).getMaxOccurs()) {
+				this->printValidityInfo((**it), *xmlTag, valid = Ogml::vs_cardErr, __LINE__);
+				return valid;
+			}
+		}
+	}
+
+	// Are there invalid son tags left?
+	sonTag = xmlTag->m_pFirstSon;
+	while(sonTag) {
+		// tag already valid
+		if(!sonTag->valid()) {
+			this->printValidityInfo(*ogmlTag, *xmlTag, valid = Ogml::vs_unexpTag, __LINE__);
+			return valid;
+		}
+		sonTag = sonTag->m_pBrother;
+	}
+
+	// Finally xmlTag is valid :-)
+	xmlTag->setValid();
+
+#ifdef OGDF_DEBUG
+	this->printValidityInfo(*ogmlTag, *xmlTag, valid = Ogml::vs_valid, __LINE__);
+#endif
+
+	return Ogml::vs_valid;
+}
+
+
+//
+// v a l i d a t e
+//
+void OgmlParser::validate(const char *fileName)
+{
+	DinoXmlParser p(fileName);
+	p.createParseTree();
+
+	const XmlTagObject *root = &p.getRootTag();
+	buildHashTables();
+	validate(root, Ogml::t_ogml);
+}
+
+
+//
+// o p e r a t o r < <
+//
+ostream& operator<<(ostream& os, const OgmlParser::OgmlAttribute& oa)
+{
+	oa.print(os);
+	return os;
+}
+
+//
+// o p e r a t o r < <
+//
+ostream& operator<<(ostream& os, const OgmlParser::OgmlTag& ot)
+{
+	ot.printOwnedTags(os);
+	ot.printOwnedAttributes(os);
+	return os;
+}
+
+
+// ***********************************************************
+//
+// p r i n t V a l i d i t y I n f o
+//
+// ***********************************************************
+void OgmlParser::printValidityInfo(const OgmlTag & ot, const XmlTagObject & xto, int valStatus, int /*line*/)
+{
+	const String &ogmlTagName = ot.getName();
+
+	switch (valStatus) {
+
+	case Ogml::vs_tagEmptIncl:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" expects tag(s) to include! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		ot.printOwnedTags(cerr);
+		break;
+
+	case Ogml::vs_idNotUnique:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" owns already assigned id! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		break;
+
+	case Ogml::vs_idRefErr:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" references unknown or wrong id! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		break;
+
+	case Ogml::vs_unexpTag:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" owns unexpected tag! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		ot.printOwnedTags(cerr);
+		break;
+
+	case Ogml::vs_unexpAtt:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" owns unexpected attribute(s)! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		ot.printOwnedAttributes(cerr);
+		break;
+
+	case Ogml::vs_expTagNotFound:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" doesn't own compulsive tag(s)! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		ot.printOwnedTags(cerr);
+		break;
+
+	case Ogml::vs_expAttNotFound:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" doesn't own compulsive attribute(s)! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		ot.printOwnedAttributes(cerr);
+		break;
+
+	case Ogml::vs_attValueErr:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" owns attribute with wrong value! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		ot.printOwnedAttributes(cerr);
+		break;
+
+	case Ogml::vs_cardErr:
+		cerr << "ERROR: tag \"<" << ogmlTagName <<
+			">\" occurence exceeds the number of min. (" << ot.
+			getMinOccurs() << ") or max. (" << ot.getMaxOccurs() << ") occurences in its context! ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		break;
+
+	case Ogml::vs_invalid:
+		cerr << "ERROR: tag \"<" << ogmlTagName << ">\" is invalid! No further information available. ";
+		cerr << "(Input source line: " << xto.
+			getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		cerr << ot;
+		break;
+
+	case Ogml::vs_valid:
+		//cout << "INFO: tag \"<" << ogmlTagName << ">\" is valid :-) ";
+		//cout << "(Input source line: " << xto.
+		//	getLine() << ", recursion depth: " << xto.getDepth() << ")\n";
+		break;
+	}
+
+//#ifdef OGDF_DEBUG
+//	if(valStatus != Ogml::vs_valid)
+//		cout << "(Line OgmlParser::validate: " << line << ")\n";
+//#endif
+}
+
+
+
+// ***********************************************************
+//
+// i s G r a p h H i e r a r c h i c a l
+//
+// ***********************************************************
+bool OgmlParser::isGraphHierarchical(const XmlTagObject *xmlTag) const
+{
+	if(xmlTag->getName() == Ogml::s_tagNames[Ogml::t_node] && isNodeHierarchical(xmlTag))
+		return true;
+
+	// Depth-Search only if ret!=true
+	if(xmlTag->m_pFirstSon && isGraphHierarchical(xmlTag->m_pFirstSon))
+		return true;
+
+	// Breadth-Search only if ret!=true
+	if(xmlTag->m_pBrother && isGraphHierarchical(xmlTag->m_pBrother))
+		return true;
+
+	return false;
+}
+
+
+
+// ***********************************************************
+//
+// i s N o d e H i e r a r c h i c a l
+//
+// ***********************************************************
+bool OgmlParser::isNodeHierarchical(const XmlTagObject *xmlTag) const
+{
+	bool ret = false;
+	if(xmlTag->getName() == Ogml::s_tagNames[Ogml::t_node]) {
+
+		XmlTagObject* dum;
+		// check if an ancestor is a node
+		ret = xmlTag->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_node], dum);
+	}
+
+	return ret;
+}
+
+
+
+// ***********************************************************
+//
+// c h e c k G r a p h T y p e
+//
+// ***********************************************************
+bool OgmlParser::checkGraphType(const XmlTagObject *xmlTag) const
+{
+	if(xmlTag->getName() != Ogml::s_tagNames[Ogml::t_ogml]) {
+		cerr << "ERROR: Expecting root tag \"" << Ogml::s_tagNames[Ogml::t_ogml]	<< "\" in OgmlParser::checkGraphType!\n";
+		return false;
+	}
+
+	// Normal graph present
+	if(!isGraphHierarchical(xmlTag)) {
+		m_graphType = Ogml::graph;
+		return true;
+	}
+
+	// Cluster-/Compound graph present
+	m_graphType = Ogml::clusterGraph;
+
+	// Traverse the parse tree and collect all edge tags
+	List<const XmlTagObject*> edges;
+	if(xmlTag->getName() == Ogml::s_tagNames[Ogml::t_edge]) edges.pushBack(xmlTag);
+	XmlTagObject* son = xmlTag->m_pFirstSon;
+	while(son) {
+		if(son->getName() == Ogml::s_tagNames[Ogml::t_edge]) edges.pushBack(son);
+		son = son->m_pBrother;
+	}
+
+	// Cluster graph already present
+	if(edges.empty()) return true;
+
+	// Traverse edges
+	ListConstIterator<const XmlTagObject*> edgeIt;
+	for(edgeIt = edges.begin(); edgeIt.valid() && m_graphType != Ogml::compoundGraph; edgeIt++)
+	{
+		// Traverse the sources/targets
+		son = (*edgeIt)->m_pFirstSon;
+
+		// Parse tree is valid so one edge contains at least one source/target
+		// with idRef attribute
+		while(son) {
+			XmlAttributeObject* att;
+			if(son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeIdRef], att)) {
+				const XmlTagObject *refTag = m_ids.lookup(att->getValue())->info();
+				if(isNodeHierarchical(refTag)) {
+					m_graphType = Ogml::compoundGraph;
+					break;
+				}
+			}
+			son = son->m_pBrother;
+		}
+	}
+
+	return true;
+}
+
+
+
+// ***********************************************************
+//
+// a u x i l i a r y    m e t h o d s
+//
+// ***********************************************************
+//   => Mapping of OGML to OGDF <=
+
+
+// Mapping Brush Pattern
+int OgmlParser::getBrushPatternAsInt(String s)
+{
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpNone])
+		return 0;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpSolid])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense1])
+		return 2;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense2])
+		return 3;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense3])
+		return 4;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense4])
+		return 5;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense5])
+		return 6;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense6])
+		return 7;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDense7])
+		return 8;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpHorizontal])
+		return 9;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpVertical])
+		return 10;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpCross])
+		return 11;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpBackwardDiagonal])
+		return 12;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpForwardDiagonal])
+		return 13;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bpDiagonalCross])
+		return 14;
+	// default return bpSolid
+	return 1;
+}
+
+
+// Mapping Shape to Integer
+int OgmlParser::getShapeAsInt(String s)
+{
+	//TODO: has to be completed if other shape types are implemented!!!
+	// SMALL PROBLEM: OGML DOESN'T SUPPORT SHAPES
+	// -> change XSD, if necessary
+
+	if (s=="rect" || s=="rectangle")
+		return GraphAttributes::rectangle;
+	// default return rectangle
+
+	return GraphAttributes::rectangle;
+}
+
+
+// Mapping OgmlNodeShape to OGDF::NodeTemplate
+String OgmlParser::getNodeTemplateFromOgmlValue(String s)
+{
+	// Mapping OGML-Values to ogdf
+	// rect | triangle | circle | ellipse | hexagon | rhomb
+	//	    | trapeze | upTrapeze | lParallelogram | rParallelogram | pentagon
+	//		| octagon | umlClass | image
+	if (s == Ogml::s_attributeValueNames[Ogml::av_rect])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_rectSimple])
+		return "ogdf:std:rect simple";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_triangle])
+		s = "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_circle])
+		return "ogdf:std:ellipse";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_ellipse])
+		return "ogdf:std:ellipse";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_hexagon])
+		return "ogdf:std:hexagon";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_rhomb])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_trapeze])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_upTrapeze])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_lParallelogram])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_rParallelogram])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_pentagon])
+		return "ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_octagon])
+		return"ogdf:std:rect";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_umlClass])
+		return "ogdf:std:UML class";
+	if (s == Ogml::s_attributeValueNames[Ogml::av_image])
+		return "ogdf:std:rect";
+	// default
+	return "ogdf:std:rect";
+}
+
+
+// Mapping Line type to Integer
+int OgmlParser::getLineTypeAsInt(String s)
+{
+	if (s == Ogml::s_attributeValueNames[Ogml::av_esNoPen])
+		return 0;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_esSolid])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_esDash])
+		return 2;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_esDot])
+		return 3;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_esDashdot])
+		return 4;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_esDashdotdot])
+		return 5;
+	// Mapping OGML-Values to ogdf
+	// solid | dotted | dashed | double | triple
+	//		 | groove | ridge | inset | outset | none
+	if (s == Ogml::s_attributeValueNames[Ogml::av_solid])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_dotted])
+		return 3;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_dashed])
+		return 2;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_double])
+		return 4;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_triple])
+		return 5;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_groove])
+		return 5;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_ridge])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_inset])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_outset])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_none])
+		return 0;
+	//default return bpSolid
+	return 1;
+}
+
+
+// Mapping ArrowStyles to Integer
+int OgmlParser::getArrowStyleAsInt(String s, String /*sot*/)
+{
+	// sot = "source" or "target", actually not necessary
+	// TODO: Complete, if new arrow styles are implemented in ogdf
+	if (s == "none")
+		return 0;
+	else
+		return 1;
+	// default return 0
+	return 0;
+}
+
+
+// Mapping ArrowStyles to EdgeArrow
+GraphAttributes::EdgeArrow OgmlParser::getArrowStyle(int i)
+{
+	switch (i){
+	case 0:
+		return GraphAttributes::none;
+		break;
+	case 1:
+		return GraphAttributes::last;
+		break;
+	case 2:
+		return GraphAttributes::first;
+		break;
+	case 3:
+		return GraphAttributes::both;
+		break;
+	default:
+		return GraphAttributes::last;
+	}
+}
+
+
+// Mapping Image Style to Integer
+int OgmlParser::getImageStyleAsInt(String s)
+{
+	if (s == Ogml::s_attributeValueNames[Ogml::av_freeScale])
+		return 0;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_fixScale])
+		return 1;
+	//default return freeScale
+	return 0;
+}
+
+
+// Mapping Image Alignment to Integer
+int OgmlParser::getImageAlignmentAsInt(String s)
+{
+	if (s == Ogml::s_attributeValueNames[Ogml::av_topLeft])
+		return 0;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_topCenter])
+		return 1;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_topRight])
+		return 2;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_centerLeft])
+		return 3;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_center])
+		return 4;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_centerRight])
+		return 5;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bottomLeft])
+		return 6;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bottomCenter])
+		return 7;
+	if (s == Ogml::s_attributeValueNames[Ogml::av_bottomRight])
+		return 8;
+	//default return center
+	return 4;
+}
+
+
+// returns the string with "<" substituted for "<"
+//  and ">" substituted for ">"
+String OgmlParser::getLabelCaptionFromString(String str)
+{
+	String output;
+	size_t i=0;
+	while (i<str.length())
+	{
+		if (str[i] == '&')
+		{
+			if (i+3 < str.length())
+			{
+				if ((str[i+1] == 'l') && (str[i+2] == 't') && (str[i+3] == ';')){
+					// found char sequence "<"
+					output += "<";
+				} else {
+					if ((str[i+1] == 'g') && (str[i+2] == 't') && (str[i+3] == ';')){
+						// found char sequence ">"
+						// \n newline is required!!!
+						output += ">\n";
+					}
+				}
+				i = i + 4;
+			}
+		} else {
+			char c = str[i];
+			output += c;
+			i++;
+		}
+	}
+	str += "\n";
+	return output;
+}
+
+
+// returns the integer value of the id at the end of the string - if existent
+// the return value is 'id', the boolean return value is for checking existance of an integer value
+//
+// why do we need such a function?
+// in OGML every id is globally unique, so we write a char-prefix
+// to the ogdf-id's ('n' for node, 'e' for edge, ...)
+bool OgmlParser::getIdFromString(String str, int &id)
+{
+	if (str.length() == 0)
+		return false;
+
+	String strId;
+	size_t i=0;
+	while (i<str.length()) {
+		// if act char is a digit append it to the strId
+		if (isdigit(str[i]))
+			strId += str[i];
+		i++;
+	}
+
+	if (strId.length() == 0)
+		return false;
+
+	// transform str to int
+	id = atoi(strId.cstr());
+	return true;
+}
+
+
+// ***********************************************************
+//
+// B U I L D    A T T R I B U T E D    C L U S T E R -- G R A P H
+//
+//
+// ***********************************************************
+bool OgmlParser::buildAttributedClusterGraph(
+	Graph &G,
+	ClusterGraphAttributes &CGA,
+	const XmlTagObject *root)
+{
+	HashConstIterator<String, const XmlTagObject*> it;
+
+	if(!root) {
+		cout << "WARNING: can't determine layout information, no parse tree available!\n";
+
+	} else {
+		// root tag isn't a NULL pointer... let's start...
+		XmlTagObject* son = root->m_pFirstSon;
+		// first traverse to the structure- and the layout block
+		if (son->getName() != Ogml::s_tagNames[Ogml::t_graph]){
+			while (son->getName() != Ogml::s_tagNames[Ogml::t_graph]){
+				son = son->m_pFirstSon;
+				if (!son){
+					// wrong rootTag given or graph tag wasn't found
+					return false;
+				}
+			} //while
+		} //if
+
+		// now son is the graph tag which first child is structure
+		XmlTagObject* structure = son->m_pFirstSon;
+		if (structure->getName() != Ogml::s_tagNames[Ogml::t_structure]){
+			return false;
+		}
+		// now structure is what it is meant to be
+		// traverse the children of structure
+		// and set the labels
+		son = structure->m_pFirstSon;
+		while(son)
+		{
+			//Set labels of nodes
+			if ((son->getName() == Ogml::s_tagNames[Ogml::t_node]) && (CGA.attributes() & GraphAttributes::nodeLabel))
+			{
+				if (!isNodeHierarchical(son))
+				{
+					// get the id of the actual node
+					XmlAttributeObject *att;
+					if(son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att))
+					{
+						// lookup for node
+						node actNode = (m_nodes.lookup(att->getValue()))->info();
+						// find label tag
+						XmlTagObject* label;
+						if (son->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_label], label))
+						{
+							// get content tag
+							XmlTagObject* content = label->m_pFirstSon;
+							// get the content as string
+							if (content->m_pTagValue) {
+								String str = content->getValue();
+								String labelStr = getLabelCaptionFromString(str);
+								// now set the label of the node
+								CGA.labelNode(actNode) = labelStr;
+							}
+						}
+					}
+				}// "normal" nodes
+				else
+				{
+					// get the id of the actual cluster
+					XmlAttributeObject *att;
+					if(son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att))
+					{
+						// lookup for cluster
+						cluster actCluster = (m_clusters.lookup(att->getValue()))->info();
+						// find label tag
+						XmlTagObject* label;
+						if (son->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_label], label))
+						{
+							// get content tag
+							XmlTagObject* content = label->m_pFirstSon;
+							// get the content as string
+							if (content->m_pTagValue) {
+								String str = content->getValue();
+								String labelStr = getLabelCaptionFromString(str);
+								// now set the label of the node
+								CGA.clusterLabel(actCluster) = labelStr;
+							}
+						}
+					}
+					// hierSon = hierarchical Son
+					XmlTagObject *hierSon;
+					if (son->m_pFirstSon)
+					{
+						hierSon = son->m_pFirstSon;
+						while(hierSon) {
+							// recursive call for setting labels of child nodes
+							if (!setLabelsRecursive(G, CGA, hierSon))
+								return false;
+							hierSon = hierSon->m_pBrother;
+						}
+					}
+				}//cluster nodes
+			}// node labels
+
+			//Set labels of edges
+			if ((son->getName() == Ogml::s_tagNames[Ogml::t_edge]) && (CGA.attributes() & GraphAttributes::edgeLabel))
+			{
+				// get the id of the actual edge
+				XmlAttributeObject *att;
+				if (son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att))
+				{
+					// lookup for edge
+					//  0, if (hyper)edge not read from file
+					if(m_edges.lookup(att->getValue())){
+						edge actEdge = (m_edges.lookup(att->getValue()))->info();
+						// find label tag
+						XmlTagObject* label;
+						if(son->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_label], label))
+						{
+							// get content tag
+							XmlTagObject* content = label->m_pFirstSon;
+							// get the content as string
+							if (content->m_pTagValue) {
+								String str = content->getValue();
+								String labelStr = getLabelCaptionFromString(str);
+								// now set the label of the node
+								CGA.labelEdge(actEdge) = labelStr;
+							}
+						}
+					}
+				}
+			}// edge labels
+
+			// Labels
+			// ACTUALLY NOT IMPLEMENTED IN OGDF
+			//if (son->getName() == Ogml::s_tagNames[t_label]) {
+			// get the id of the actual edge
+			//XmlAttributeObject *att;
+			//if (son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att)){
+			// lookup for label
+			//label actLabel = (labels.lookup(att->getValue()))->info();
+			// get content tag
+			//XmlTagObject* content = son->m_pFirstSon;
+			// get the content as string
+			//if (content->m_pTagValue){
+			//String str = content->getValue();
+			//String labelStr = getLabelCaptionFromString(str);
+			//now set the label of the node
+			//	CGA.labelLabel(actLabel) = labelStr;
+			//}
+			//}
+			//}// Labels
+
+			// go to the next brother
+			son = son->m_pBrother;
+		}// while(son) // son <=> children of structure
+
+		// get the layout tag
+		XmlTagObject* layout;
+		if (structure->m_pBrother != NULL) {
+			layout = structure->m_pBrother;
+		}
+        else
+            layout = 0;
+
+		if ((layout) && (layout->getName() == Ogml::s_tagNames[Ogml::t_layout]))
+		{
+			// layout exists
+
+			// first get the styleTemplates
+			XmlTagObject *layoutSon;
+			if (layout->m_pFirstSon)
+			{
+				// layout has at least one child-tag
+				layoutSon = layout->m_pFirstSon;
+				// ->loop through all of them
+				while (layoutSon)
+				{
+					// style templates
+					if (layoutSon->getName() == Ogml::s_tagNames[Ogml::t_styleTemplates])
+					{
+						// has children data, nodeStyleTemplate, edgeStyleTemplate, labelStyleTemplate
+						XmlTagObject *styleTemplatesSon;
+						if (layoutSon->m_pFirstSon)
+						{
+							styleTemplatesSon = layoutSon->m_pFirstSon;
+
+							while (styleTemplatesSon)
+							{
+								// nodeStyleTemplate
+								if (styleTemplatesSon->getName() == Ogml::s_tagNames[Ogml::t_nodeStyleTemplate])
+								{
+									XmlAttributeObject *actAtt;
+									if (styleTemplatesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], actAtt))
+									{
+										const String &actKey = actAtt->getValue();
+										OgmlNodeTemplate *actTemplate = new OgmlNodeTemplate(actKey); // when will this be deleted?
+
+										XmlTagObject *actTag;
+
+										// template inheritance
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_nodeStyleTemplateRef], actTag))
+										{
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeStyleTemplateIdRef], actAtt)) {
+												// actual template references another
+												// get it from the hash table
+												OgmlNodeTemplate *refTemplate = m_ogmlNodeTemplates.lookup(actAtt->getValue())->info();
+												if (refTemplate) {
+													// the referenced template was inserted into the hash table
+													// so copy the values
+													String actId = actTemplate->m_id;
+													*actTemplate = *refTemplate;
+													actTemplate->m_id = actId;
+												}
+											}
+										}// template inheritance
+
+										//				// data
+										//				if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[t_data], actTag)){
+										//					// found data for nodeStyleTemplate
+										//					// no implementation required for ogdf
+										//				}// data
+
+										// shape tag
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_shape], actTag))
+										{
+											// type
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nShapeType], actAtt)) {
+												// TODO: change, if shapes are expanded
+												// actually shape and template are calculated from the same value!!!
+												actTemplate->m_nodeTemplate = getNodeTemplateFromOgmlValue(actAtt->getValue());
+												actTemplate->m_shapeType = getShapeAsInt(actAtt->getValue());
+											}
+											// width
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+												actTemplate->m_width = atof(actAtt->getValue().cstr());
+											// height
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_height], actAtt))
+												actTemplate->m_height = atof(actAtt->getValue().cstr());
+											// uri
+											//ACTUALLY NOT SUPPORTED
+											//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_uri], actAtt))
+											//	CGA.uri(actNode) = actAtt->getValue();
+										}// shape
+
+										// fill tag
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_fill], actTag))
+										{
+											// fill color
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+												actTemplate->m_color = actAtt->getValue();
+											// fill pattern
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_pattern], actAtt))
+												actTemplate->m_pattern = GraphAttributes::intToPattern(getBrushPatternAsInt(actAtt->getValue()));
+											// fill patternColor
+											//TODO: check if pattern color exists
+											//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_patternColor], actAtt));
+											//	actTemplate->m_patternColor = actAtt->getValue());
+										}// fill
+
+										// line tag
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_line], actTag))
+										{
+											// type
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nLineType], actAtt))
+												actTemplate->m_lineType = GraphAttributes::intToStyle(getLineTypeAsInt(actAtt->getValue()));
+											// width
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+												actTemplate->m_lineWidth = atof(actAtt->getValue().cstr());
+											// color
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+												actTemplate->m_lineColor = actAtt->getValue();
+										}// line
+
+										//insert actual template into hash table
+										m_ogmlNodeTemplates.fastInsert(actKey, actTemplate);
+									}
+								}//nodeStyleTemplate
+
+								// edgeStyleTemplate
+								if (styleTemplatesSon->getName() == Ogml::s_tagNames[Ogml::t_edgeStyleTemplate])
+								{
+									XmlAttributeObject *actAtt;
+									if (styleTemplatesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], actAtt))
+									{
+										const String &actKey = actAtt->getValue();
+										OgmlEdgeTemplate *actTemplate = new OgmlEdgeTemplate(actKey); // when will this be deleted?
+
+										XmlTagObject *actTag;
+
+										// template inheritance
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_edgeStyleTemplateRef], actTag)){
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_edgeStyleTemplateIdRef], actAtt)){
+												// actual template references another
+												// get it from the hash table
+												OgmlEdgeTemplate *refTemplate = m_ogmlEdgeTemplates.lookup(actAtt->getValue())->info();
+												if (refTemplate){
+													// the referenced template was inserted into the hash table
+													// so copy the values
+													String actId = actTemplate->m_id;
+													*actTemplate = *refTemplate;
+													actTemplate->m_id = actId;
+												}
+											}
+										}// template inheritance
+
+										//	// data
+										//	if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[t_data], actTag)){
+										//		// found data for edgeStyleTemplate
+										//		// no implementation required for ogdf
+										//	}// data
+
+										// line tag
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_line], actTag))
+										{
+											// type
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_type], actAtt))
+												actTemplate->m_lineType = GraphAttributes::intToStyle(getLineTypeAsInt(actAtt->getValue()));
+											// width
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+												actTemplate->m_lineWidth = atof(actAtt->getValue().cstr());
+											// color
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+												actTemplate->m_color = actAtt->getValue();
+										}// line
+
+										// sourceStyle tag
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_sourceStyle], actTag))
+										{
+											// type
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_type], actAtt))
+												actTemplate->m_sourceType = getArrowStyleAsInt(actAtt->getValue(), Ogml::s_tagNames[Ogml::t_source]);
+											// color
+											//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_color], actAtt))
+											//	actTemplate->m_sourceColor = actAtt->getValue();
+											// size
+											//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_size], actAtt))
+											//	actTemplate->m_sourceSize = atof(actAtt->getValue());
+										}
+
+										// targetStyle tag
+										if (styleTemplatesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_targetStyle], actTag)){
+											// type
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_type], actAtt))
+												actTemplate->m_targetType = getArrowStyleAsInt(actAtt->getValue(), Ogml::s_tagNames[Ogml::t_target]);
+											// color
+											//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_color], actAtt))
+											//	actTemplate->m_targetColor = actAtt->getValue();
+											// size
+											//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_size], actAtt))
+											//	actTemplate->m_targetSize = atof(actAtt->getValue());
+										}
+
+										//insert actual template into hash table
+										m_ogmlEdgeTemplates.fastInsert(actKey, actTemplate);
+									}
+
+								}//edgeStyleTemplate
+
+								// labelStyleTemplate
+								if (styleTemplatesSon->getName() == Ogml::s_tagNames[Ogml::t_labelStyleTemplate]){
+									// ACTUALLY NOT SUPPORTED
+								}//labelStyleTemplate
+
+								styleTemplatesSon = styleTemplatesSon->m_pBrother;
+							}
+						}
+					}// styleTemplates
+
+					//STYLES
+					if (layoutSon->getName() == Ogml::s_tagNames[Ogml::t_styles])
+					{
+						// has children graphStyle, nodeStyle, edgeStyle, labelStyle
+						XmlTagObject *stylesSon;
+						if (layoutSon->m_pFirstSon)
+						{
+							stylesSon = layoutSon->m_pFirstSon;
+
+							while (stylesSon)
+							{
+								// GRAPHSTYLE
+								if (stylesSon->getName() == Ogml::s_tagNames[Ogml::t_graphStyle])
+								{
+									XmlAttributeObject *actAtt;
+									// defaultNodeTemplate
+									if (stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_defaultNodeTemplate], actAtt))
+									{
+										OgmlNodeTemplate* actTemplate = m_ogmlNodeTemplates.lookup(actAtt->getValue())->info();
+
+										//	XmlTagObject *actTag;
+										//	// data
+										//	if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[t_data], actTag)){
+										//		// found data for graphStyle
+										//		// no implementation required for ogdf
+										//	}// data
+
+										// set values for ALL nodes
+										node v;
+										forall_nodes(v, G){
+
+											if (CGA.attributes() & GraphAttributes::nodeType){
+												CGA.templateNode(v) = actTemplate->m_nodeTemplate;
+												CGA.shapeNode(v) = actTemplate->m_shapeType;
+											}
+											if (CGA.attributes() & GraphAttributes::nodeGraphics){
+												CGA.width(v) = actTemplate->m_width;
+												CGA.height(v) = actTemplate->m_height;
+											}
+											if (CGA.attributes() & GraphAttributes::nodeColor)
+												CGA.colorNode(v) = actTemplate->m_color;
+											if (CGA.attributes() & GraphAttributes::nodeStyle){
+												CGA.nodePattern(v) = actTemplate->m_pattern;
+												//CGA.nodePatternColor(v) = actTemplate->m_patternColor;
+												CGA.styleNode(v) = actTemplate->m_lineType;
+												CGA.lineWidthNode(v) = actTemplate->m_lineWidth;
+												CGA.nodeLine(v) = actTemplate->m_lineColor;
+											}
+										}// forall_nodes
+									}// defaultNodeTemplate
+
+									//		// defaultClusterTemplate
+									//		if (stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_defaultCompoundTemplate], actAtt)){
+									//			//										OgmlNodeTemplate* actTemplate = m_ogmlNodeTemplates.lookup(actAtt->getValue())->info();
+									//			//										// set values for ALL Cluster
+									//			cluster c;
+									//			forall_clusters(c, G){
+									//
+									//				if (CGA.attributes() & GraphAttributes::nodeType){
+									//					CGA.templateCluster(c) = actTemplate->m_nodeTemplate;
+									//					// no shape definition for clusters
+									//					//CGA.shapeNode(c) = actTemplate->m_shapeType;
+									//				}
+									//				if (CGA.attributes() & GraphAttributes::nodeGraphics){
+									//						CGA.clusterWidth(c) = actTemplate->m_width;
+									//						CGA.clusterHeight(c) = actTemplate->m_height;
+									//				}
+									//				if (CGA.attributes() & GraphAttributes::nodeColor)
+									//					CGA.clusterFillColor(c) = actTemplate->m_color;
+									//				if (CGA.attributes() & GraphAttributes::nodeStyle){
+									//					CGA.clusterFillPattern(c) = actTemplate->m_pattern;
+									//					CGA.clusterBackColor(c) = actTemplate->m_patternColor;
+									//					CGA.clusterLineStyle(c) = actTemplate->m_lineType;
+									//					CGA.clusterLineWidth(c) = actTemplate->m_lineWidth;
+									//					CGA.clusterColor(c) = actTemplate->m_lineColor;
+									//				}
+									//			}// forall_clusters
+									//		}// defaultClusterTemplate
+
+
+									// defaultEdgeTemplate
+									if (stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_defaultEdgeTemplate], actAtt))
+									{
+										OgmlEdgeTemplate* actTemplate = m_ogmlEdgeTemplates.lookup(actAtt->getValue())->info();
+
+										// set values for ALL edges
+										edge e;
+										forall_edges(e, G)
+										{
+											if (CGA.attributes() & GraphAttributes::edgeStyle) {
+												CGA.styleEdge(e) = actTemplate->m_lineType;
+												CGA.edgeWidth(e) = actTemplate->m_lineWidth;
+											}
+											if (CGA.attributes() & GraphAttributes::edgeColor) {
+												CGA.colorEdge(e) = actTemplate->m_color;
+											}
+
+											//edgeArrow
+											if ((CGA.attributes()) & (GraphAttributes::edgeArrow))
+											{
+												if (actTemplate->m_sourceType == 0) {
+													if (actTemplate->m_targetType == 0) {
+														// source = no_arrow, target = no_arrow // =>none
+														CGA.arrowEdge(e) = GraphAttributes::none;
+													}
+													else {
+														// source = no_arrow, target = arrow // =>last
+														CGA.arrowEdge(e) = GraphAttributes::last;
+													}
+												}
+												else {
+													if (actTemplate->m_targetType == 0){
+														// source = arrow, target = no_arrow // =>first
+														CGA.arrowEdge(e) = GraphAttributes::first;
+													}
+													else {
+														// source = arrow, target = arrow // =>both
+														CGA.arrowEdge(e) = GraphAttributes::both;
+													}
+												}
+											}//edgeArrow
+										}//forall_edges
+									}//defaultEdgeTemplate
+
+									// defaultLabelTemplate
+									//if (stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_defaultLabelTemplate], actAtt)){
+									//	// set values for ALL labels
+									//	// ACTUALLY NOT IMPLEMENTED
+									//  label l;
+									//  forall_labels(l, G){
+									//
+									//	}
+									//}//defaultLabelTemplate
+								}// graphStyle
+
+								// NODESTYLE
+								if (stylesSon->getName() == Ogml::s_tagNames[Ogml::t_nodeStyle])
+								{
+									// get the id of the actual node
+									XmlAttributeObject *att;
+									if(stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeIdRef], att))
+									{
+										// check if referenced id is a node or a cluster/compound
+										if (m_nodes.lookup(att->getValue()))
+										{
+											// lookup for node
+											node actNode = (m_nodes.lookup(att->getValue()))->info();
+
+											// actTag is the actual tag that is considered
+											XmlTagObject* actTag;
+											XmlAttributeObject *actAtt;
+
+											//			// data
+											//			if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[t_data], actTag)){
+											//				// found data for nodeStyle
+											//				// no implementation required for ogdf
+											//			}// data
+
+											// check if actual nodeStyle references a template
+											if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_nodeStyleTemplateRef], actTag))
+											{
+												// get referenced template id
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeStyleTemplateIdRef], actAtt))
+												{
+													// actual nodeStyle references a template
+													OgmlNodeTemplate* actTemplate = m_ogmlNodeTemplates.lookup(actAtt->getValue())->info();
+													if (CGA.attributes() & GraphAttributes::nodeType) {
+														CGA.templateNode(actNode) = actTemplate->m_nodeTemplate;
+														CGA.shapeNode(actNode) = actTemplate->m_shapeType;
+													}
+													if (CGA.attributes() & GraphAttributes::nodeGraphics) {
+														CGA.width(actNode) = actTemplate->m_width;
+														CGA.height(actNode) = actTemplate->m_height;
+													}
+													if (CGA.attributes() & GraphAttributes::nodeColor)
+														CGA.colorNode(actNode) = actTemplate->m_color;
+													if (CGA.attributes() & GraphAttributes::nodeStyle) {
+														CGA.nodePattern(actNode) = actTemplate->m_pattern;
+														//CGA.nodePatternColor(actNode) = actTemplate->m_patternColor;
+														CGA.styleNode(actNode) = actTemplate->m_lineType;
+														CGA.lineWidthNode(actNode) = actTemplate->m_lineWidth;
+														CGA.nodeLine(actNode) = actTemplate->m_lineColor;
+													}
+												}
+											}//template
+
+											// Graph::nodeType
+											//TODO: COMPLETE, IF NECESSARY
+											CGA.type(actNode) = Graph::vertex;
+
+											// location tag
+											if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_location], actTag))
+												&& (CGA.attributes() & GraphAttributes::nodeGraphics))
+											{
+												// set location of node
+												// x
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_x], actAtt))
+													CGA.x(actNode) = atof(actAtt->getValue().cstr());
+												// y
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_y], actAtt))
+													CGA.y(actNode) = atof(actAtt->getValue().cstr());
+												// z
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_x], actAtt))
+												//CGA.z(actNode) = atof(actAtt->getValue());
+											}// location
+
+											// shape tag
+											if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_shape], actTag))
+												&& (CGA.attributes() & GraphAttributes::nodeType))
+											{
+												// set shape of node
+												// type
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nShapeType], actAtt)) {
+													CGA.templateNode(actNode) = getNodeTemplateFromOgmlValue(actAtt->getValue());
+													// TODO: change, if shapes are expanded
+													// actually shape and template are calculated from the same value!!!
+													CGA.shapeNode(actNode) = getShapeAsInt(actAtt->getValue());
+												}
+												// width
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+													CGA.width(actNode) = atof(actAtt->getValue().cstr());
+												// height
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_height], actAtt))
+													CGA.height(actNode) = atof(actAtt->getValue().cstr());
+												// uri
+												//ACTUALLY NOT SUPPORTED
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_uri], actAtt))
+												//	CGA.uri(actNode) = actAtt->getValue();
+											}// shape
+
+											// fill tag
+											if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_fill], actTag))
+												&& (CGA.attributes() & GraphAttributes::nodeStyle))
+											{
+												// fill color
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+													CGA.colorNode(actNode) = actAtt->getValue();
+												// fill pattern
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_pattern], actAtt))
+													CGA.nodePattern(actNode) = GraphAttributes::intToPattern(getBrushPatternAsInt(actAtt->getValue()));
+												// fill patternColor
+												//TODO: check if pattern color exists
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_patternColor], actAtt))
+												//	CGA.nodePatternColor(actNode) = actAtt->getValue());
+											}// fill
+
+											// line tag
+											if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_line], actTag))
+												&& (CGA.attributes() & GraphAttributes::nodeStyle))
+											{
+												// type
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nLineType], actAtt))
+													CGA.styleNode(actNode) = GraphAttributes::intToStyle(getLineTypeAsInt(actAtt->getValue()));
+												// width
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+													CGA.lineWidthNode(actNode) = atof(actAtt->getValue().cstr());
+												// color
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+													CGA.nodeLine(actNode) = actAtt->getValue().cstr();
+											}// line
+
+											//			// ports
+											//			// go through all ports with dummy tagObject port
+											//			XmlTagObject* port = stylesSon->m_pFirstSon;
+											//			while(port){
+											//				if (port->getName() == ogmlTagObjects[t_port]){
+											//					// TODO: COMPLETE
+											//					// ACTUALLY NOT IMPLEMENTED IN OGDF
+											//				}
+											//
+											//				// go to next tag
+											//				port = port->m_pBrother;
+											//			}
+
+										}
+										else
+
+											// CLUSTER NODE STYLE
+										{
+											// get the id of the cluster/compound
+											XmlAttributeObject *att;
+											if(stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeIdRef], att))
+											{
+												// lookup for node
+												cluster actCluster = (m_clusters.lookup(att->getValue()))->info();
+												// actTag is the actual tag that is considered
+												XmlTagObject* actTag;
+												XmlAttributeObject *actAtt;
+
+												//				// data
+												//				if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[t_data], actTag)){
+												//					// found data for nodeStyle (CLuster/Compound)
+												//					// no implementation required for ogdf
+												//				}// data
+
+												// check if actual nodeStyle (equal to cluster) references a template
+												if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_nodeStyleTemplateRef], actTag))
+												{
+													// get referenced template id
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeStyleTemplateIdRef], actAtt))
+													{
+														// actual nodeStyle references a template
+														OgmlNodeTemplate* actTemplate = m_ogmlNodeTemplates.lookup(actAtt->getValue())->info();
+														if (CGA.attributes() & GraphAttributes::nodeType) {
+															CGA.templateCluster(actCluster) = actTemplate->m_nodeTemplate;
+															// no shape definition for clusters
+															//CGA.shapeNode(actCluster) = actTemplate->m_shapeType;
+														}
+														if (CGA.attributes() & GraphAttributes::nodeGraphics) {
+															CGA.clusterWidth(actCluster) = actTemplate->m_width;
+															CGA.clusterHeight(actCluster) = actTemplate->m_height;
+														}
+														if (CGA.attributes() & GraphAttributes::nodeColor)
+															CGA.clusterFillColor(actCluster) = actTemplate->m_color;
+														if (CGA.attributes() & GraphAttributes::nodeStyle) {
+															CGA.clusterFillPattern(actCluster) = actTemplate->m_pattern;
+															CGA.clusterBackColor(actCluster) = actTemplate->m_patternColor;
+															CGA.clusterLineStyle(actCluster) = actTemplate->m_lineType;
+															CGA.clusterLineWidth(actCluster) = actTemplate->m_lineWidth;
+															CGA.clusterColor(actCluster) = actTemplate->m_lineColor;
+														}
+													}
+												}//template
+
+												// Graph::nodeType
+												//TODO: COMPLETE, IF NECESSARY
+												// not supported for clusters!!!
+												//CGA.type(actCluster) = Graph::vertex;
+
+												// location tag
+												if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_location], actTag))
+													&& (CGA.attributes() & GraphAttributes::nodeGraphics))
+												{
+													// set location of node
+													// x
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_x], actAtt))
+														CGA.clusterXPos(actCluster) = atof(actAtt->getValue().cstr());
+													// y
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_y], actAtt))
+														CGA.clusterYPos(actCluster) = atof(actAtt->getValue().cstr());
+													// z
+													//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_x], actAtt))
+													//CGA.clusterZPos(actCluster) = atof(actAtt->getValue());
+												}// location
+
+												// shape tag
+												if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_shape], actTag))
+													&& (CGA.attributes() & GraphAttributes::nodeType))
+												{
+													// set shape of node
+													// type
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nShapeType], actAtt)) {
+														CGA.templateCluster(actCluster) = getNodeTemplateFromOgmlValue(actAtt->getValue().cstr());
+														// no shape definition for clusters
+														//CGA.shapeNode(actCluster) = getShapeAsInt(actAtt->getValue());
+													}
+													// width
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+														CGA.clusterWidth(actCluster) = atof(actAtt->getValue().cstr());
+													// height
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_height], actAtt))
+														CGA.clusterHeight(actCluster) = atof(actAtt->getValue().cstr());
+													// uri
+													//ACTUALLY NOT SUPPORTED
+													//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_uri], actAtt))
+													//	CGA.uriCluster(actCluster) = actAtt->getValue();
+												}// shape
+
+												// fill tag
+												if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_fill], actTag))
+													&& (CGA.attributes() & GraphAttributes::nodeStyle))
+												{
+													// fill color
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+														CGA.clusterFillColor(actCluster) = actAtt->getValue().cstr();
+													// fill pattern
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_pattern], actAtt))
+														CGA.clusterFillPattern(actCluster) = GraphAttributes::intToPattern(getBrushPatternAsInt(actAtt->getValue()));
+													// fill patternColor
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_patternColor], actAtt))
+														CGA.clusterBackColor(actCluster) = actAtt->getValue().cstr();
+												}// fill
+
+												// line tag
+												if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_line], actTag))
+													&& (CGA.attributes() & GraphAttributes::nodeStyle))
+												{
+													// type
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nLineType], actAtt))
+														CGA.clusterLineStyle(actCluster) = GraphAttributes::intToStyle(getLineTypeAsInt(actAtt->getValue()));
+													// width
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+														CGA.clusterLineWidth(actCluster) = atof(actAtt->getValue().cstr());
+													// color
+													if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+														CGA.clusterColor(actCluster) = actAtt->getValue();
+												}// line
+
+
+												//				// ports
+												//				// go through all ports with dummy tagObject port
+												//				XmlTagObject* port = stylesSon->m_pFirstSon;
+												//				while(port){
+												//					if (port->getName() == ogmlTagObjects[t_port]){
+												//						// TODO: COMPLETE
+												//						// no implementation required for ogdf
+												//					}
+												//
+												//					// go to next tag
+												//					port = port->m_pBrother;
+												//				}
+
+											}//nodeIdRef (with cluster)
+
+										}// nodeStyle for cluster
+									}//nodeIdRef
+
+								}//nodeStyle
+
+								// EDGESTYLE
+								if (stylesSon->getName() == Ogml::s_tagNames[Ogml::t_edgeStyle])
+								{
+									// get the id of the actual edge
+									XmlAttributeObject *att;
+									if(stylesSon->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_edgeIdRef], att))
+									{
+										// lookup for edge
+										edge actEdge = (m_edges.lookup(att->getValue()))->info();
+
+										// actTag is the actual tag that is considered
+										XmlTagObject* actTag;
+										XmlAttributeObject *actAtt;
+
+										//		// data
+										//		if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[t_data], actTag)){
+										//			// found data for edgeStyle
+										//			// no implementation required for ogdf
+										//		}// data
+
+										// check if actual edgeStyle references a template
+										if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_edgeStyleTemplateRef], actTag))
+										{
+											// get referenced template id
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_edgeStyleTemplateIdRef], actAtt))
+											{
+												// actual edgeStyle references a template
+												OgmlEdgeTemplate* actTemplate = m_ogmlEdgeTemplates.lookup(actAtt->getValue())->info();
+												if (CGA.attributes() & GraphAttributes::edgeStyle) {
+													CGA.styleEdge(actEdge) = actTemplate->m_lineType;
+													CGA.edgeWidth(actEdge) = actTemplate->m_lineWidth;
+												}
+												if (CGA.attributes() & GraphAttributes::edgeColor) {
+													CGA.colorEdge(actEdge) = actTemplate->m_color;
+												}
+
+												//edgeArrow
+												if ((CGA.attributes()) & (GraphAttributes::edgeArrow))
+												{
+													if (actTemplate->m_sourceType == 0) {
+														if (actTemplate->m_targetType == 0) {
+															// source = no_arrow, target = no_arrow // =>none
+															CGA.arrowEdge(actEdge) = GraphAttributes::none;
+														}
+														else {
+															// source = no_arrow, target = arrow // =>last
+															CGA.arrowEdge(actEdge) = GraphAttributes::last;
+														}
+													}
+													else {
+														if (actTemplate->m_targetType == 0) {
+															// source = arrow, target = no_arrow // =>first
+															CGA.arrowEdge(actEdge) = GraphAttributes::first;
+														}
+														else {
+															// source = arrow, target = arrow // =>both
+															CGA.arrowEdge(actEdge) = GraphAttributes::both;
+														}
+													}
+												}//edgeArrow
+
+											}
+										}//template
+
+										// Graph::edgeType
+										//TODO: COMPLETE, IF NECESSARY
+										CGA.type(actEdge) = Graph::association;
+
+										// line tag
+										if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_line], actTag))
+											&& (CGA.attributes() & GraphAttributes::edgeType))
+										{
+											// type
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nLineType], actAtt))
+												CGA.styleEdge(actEdge) = GraphAttributes::intToStyle(getLineTypeAsInt(actAtt->getValue()));
+											// width
+											if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_width], actAtt))
+												CGA.edgeWidth(actEdge) = atof(actAtt->getValue().cstr());
+											// color
+											if ((actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_color], actAtt))
+												&& (CGA.attributes() & GraphAttributes::edgeType))
+												CGA.colorEdge(actEdge) = actAtt->getValue();
+										}// line
+
+										// mapping of arrows
+										if (CGA.attributes() & GraphAttributes::edgeArrow)
+										{
+											// values for mapping edge arrows to GDE
+											// init to -1 for a simple check
+											int sourceInt = -1;
+											int targetInt = -1;
+
+											// sourceStyle tag
+											if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_sourceStyle], actTag))
+											{
+												// type
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_type], actAtt))
+													sourceInt = getArrowStyleAsInt((actAtt->getValue()), Ogml::s_attributeNames[Ogml::t_source]);
+												// color
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_color], actAtt))
+												//	;
+												// size
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_size], actAtt))
+												//	;
+											}// sourceStyle
+
+											// targetStyle tag
+											if (stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_targetStyle], actTag))
+											{
+												// type
+												if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_type], actAtt))
+													targetInt = getArrowStyleAsInt((actAtt->getValue()), Ogml::s_attributeNames[Ogml::t_target]);
+												// color
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_color], actAtt))
+												//	;
+												// size
+												//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_size], actAtt))
+												//	;
+											}// targetStyle
+
+											// map edge arrows
+											if ((sourceInt != -1) || (targetInt != -1))
+											{
+												if (sourceInt <= 0) {
+													if (targetInt <= 0) {
+														//source=no arrow, target=no arrow // => none
+														CGA.arrowEdge(actEdge) = GraphAttributes::none;
+													}
+													else {
+														// source=no arrow, target=arrow // => last
+														CGA.arrowEdge(actEdge) = GraphAttributes::last;
+													}
+												}
+												else {
+													if (targetInt <= 0) {
+														//source=arrow, target=no arrow // => first
+														CGA.arrowEdge(actEdge) = GraphAttributes::first;
+													}
+													else {
+														//source=target=arrow // => both
+														CGA.arrowEdge(actEdge) = GraphAttributes::both;
+													}
+												}
+											}
+										}//arrow
+
+										// points & segments
+										// bool value for checking if segments exist
+										bool segmentsExist = stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_segment], actTag);
+										if ((stylesSon->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_point], actTag))
+											&& (CGA.attributes() & GraphAttributes::edgeGraphics))
+										{
+											// at least one point exists
+											XmlTagObject *pointTag = stylesSon->m_pFirstSon;
+											DPolyline dpl;
+											dpl.clear();
+											// traverse all points in the order given in the ogml file
+											while (pointTag)
+											{
+												if (pointTag->getName() == Ogml::s_tagNames[Ogml::t_point])
+												{
+
+													if (pointTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], actAtt)) {
+														DPoint dp;
+														// here we have a point
+														if (pointTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_x], actAtt)) {
+															dp.m_x = atof(actAtt->getValue().cstr());
+														}
+														if (pointTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_y], actAtt)) {
+															dp.m_y = atof(actAtt->getValue().cstr());
+														}
+														//if (actTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_z], actAtt))
+														//	dp.m_z = atof(actAtt->getValue());
+														// insert point into hash table
+														pointTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], actAtt);
+														m_points.fastInsert(actAtt->getValue(), dp);
+														//insert point into polyline
+														if (!segmentsExist)
+															dpl.pushBack(dp);
+													}
+												}
+												// go to next tag
+												pointTag = pointTag->m_pBrother;
+											}// while (pointTag)
+											//concatenate polyline
+											if (!segmentsExist) {
+												CGA.bends(actEdge).conc(dpl);
+											}
+											else{
+												// work with segments
+												// one error can occur:
+												// if a segments is going to be inserted,
+												// which doesn't match with any other,
+												// the order can be not correct at the end
+												// then the edge is relly corrupted!!
+
+												// TODO: this implementation doesn't work with hyperedges
+												//       cause hyperedges have more than one source/target
+
+												// segmentsUnsorted stores all found segments
+												List<OgmlSegment> segmentsUnsorted;
+												XmlTagObject *segmentTag = stylesSon->m_pFirstSon;
+												while (segmentTag)
+												{
+													if (segmentTag->getName() == Ogml::s_tagNames[Ogml::t_segment])
+													{
+														XmlTagObject *endpointTag = segmentTag->m_pFirstSon;
+														OgmlSegment actSeg;
+														int endpointsSet = 0;
+														while ((endpointTag) && (endpointsSet <2)) {
+															if (endpointTag->getName() == Ogml::s_tagNames[Ogml::t_endpoint]) {
+																// get the referenced point
+																endpointTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_endpointIdRef], actAtt);
+																DPoint dp = (m_points.lookup(actAtt->getValue()))->info();
+
+																if (endpointsSet == 0)
+																	actSeg.point1 = dp;
+																else
+																	actSeg.point2 = dp;
+																endpointsSet++;
+															}
+															endpointTag = endpointTag->m_pBrother;
+														}// while
+														// now we created a segment
+														// we can insert this easily into in segmentsUnsorted
+														if (actSeg.point1 != actSeg.point2) {
+															segmentsUnsorted.pushBack(actSeg);
+														} // point1 != point2
+													}// if (segment)
+													// go to next tag
+													segmentTag = segmentTag->m_pBrother;
+												}// while (segmentTag)
+												// now are the segments stored in the segmentsUnsorted list
+												//  but we have to sort it in segments list while inserting
+												List<OgmlSegment> segments;
+												ListIterator<OgmlSegment> segIt;
+												// check the number of re-insertions
+												int checkNumOfSegReInserts = segmentsUnsorted.size()+2;
+												while ((segmentsUnsorted.size() > 0) && (checkNumOfSegReInserts > 0))
+												{
+													OgmlSegment actSeg = segmentsUnsorted.front();
+													segmentsUnsorted.popFront();
+													// actSeg has to be inserted in correct order
+													//  and then being deleted
+													//  OR waiting in list until it can be inserted
+													// size == 0 => insert
+													if (segments.size() == 0) {
+														segments.pushFront(actSeg);
+													}
+													else {
+														// segments contains >1 segment
+														segIt = segments.begin();
+														bool inserted = false;
+														while (segIt.valid() && !inserted)
+														{
+															if ((actSeg.point1 == (*segIt).point1) ||
+																(actSeg.point1 == (*segIt).point2) ||
+																(actSeg.point2 == (*segIt).point1) ||
+																(actSeg.point2 == (*segIt).point2))
+															{
+																// found two matching segments
+																// now we can insert
+																// there are some cases to check
+																if (actSeg.point1 == (*segIt).point1) {
+																	DPoint dumP = actSeg.point1;
+																	actSeg.point1 = actSeg.point2;
+																	actSeg.point2 = dumP;
+																	segments.insertBefore(actSeg, segIt);
+																}
+																else
+																	if (actSeg.point2 == (*segIt).point1) {
+																		segments.insertBefore(actSeg, segIt);
+																	}
+																	else
+																		if ((actSeg.point2 == (*segIt).point2)) {
+																			DPoint dumP = actSeg.point1;
+																			actSeg.point1 = actSeg.point2;
+																			actSeg.point2 = dumP;
+																			segments.insertAfter(actSeg, segIt);
+																		}
+																		else {
+																			segments.insertAfter(actSeg, segIt);
+																		}
+																		inserted = true;
+															} // first if
+															segIt++;
+														} //while
+														if (!inserted) {
+															// segment doesn't found matching segment,
+															//  so insert it again into unsorted segments list
+															//  so it will be inserted later
+															segmentsUnsorted.pushBack(actSeg);
+															checkNumOfSegReInserts--;
+														}
+													}//else
+												}//while segmentsUnsorted.size() > 0
+
+
+												if (checkNumOfSegReInserts==0){
+													cout << "WARNING! Segment definition is not correct" << endl << flush;
+													cout << "Not able to work with #"<< segmentsUnsorted.size() << " segments" << endl << flush;
+													cout << "Please check connection and sorting of segments!" << endl << flush;
+													//				// inserting the bends although there might be an error
+													//				// I commented this, because in this case in ogdf the edge will
+													//				//   be a straight edge and there will not be any artefacts
+													//				// TODO: uncomment if desired
+													// 				for (segIt = segments.begin(); segIt.valid(); segIt++){
+													//					dpl.pushBack((*segIt).point1);
+													//					dpl.pushBack((*segIt).point2);
+												}
+												else {
+													// the segments are now ordered (perhaps in wrong way)...
+													// so we have to check if the first and last point
+													//  are graphically laying in the source- and target- node
+													bool invertSegments = false;
+													segIt = segments.begin();
+													node target = actEdge->target();
+													node source = actEdge->source();
+													// check if source is a normal node or a cluster
+													//if (...){
+
+													//}
+													//else{
+													// big if-check: if (first point is in target
+													//                   and not in source)
+													//                   AND
+													//                   (last point is in source
+													//                   and not in target)
+													if (( ( (CGA.x(target) + CGA.width(target))>= (*segIt).point1.m_x )
+														&&   (CGA.x(target)                      <= (*segIt).point1.m_x )
+														&& ( (CGA.y(target) + CGA.height(target))>= (*segIt).point1.m_y )
+														&&   (CGA.y(target)                      <= (*segIt).point1.m_y ) )
+														&&
+														(!( ( (CGA.x(source) + CGA.width(source))>= (*segIt).point1.m_x )
+														&&   (CGA.x(source)                      <= (*segIt).point1.m_x )
+														&& ( (CGA.y(source) + CGA.height(source))>= (*segIt).point1.m_y )
+														&&   (CGA.y(source)                      <= (*segIt).point1.m_y ) )))
+													{
+														segIt = segments.rbegin();
+														if (( ( (CGA.x(source) + CGA.width(source))>= (*segIt).point2.m_x )
+															&&   (CGA.x(source)                      <= (*segIt).point2.m_x )
+															&& ( (CGA.y(source) + CGA.height(source))>= (*segIt).point2.m_y )
+															&&   (CGA.y(source)                      <= (*segIt).point2.m_y ) )
+															&&
+															(!( ( (CGA.x(target) + CGA.width(source))>= (*segIt).point2.m_x )
+															&&   (CGA.x(target)                      <= (*segIt).point2.m_x )
+															&& ( (CGA.y(target) + CGA.height(source))>= (*segIt).point2.m_y )
+															&&   (CGA.y(target)                      <= (*segIt).point2.m_y ) ))) {
+																// invert the segment-line
+																invertSegments = true;
+														}
+													}
+													//}
+													if (!invertSegments){
+														for (segIt = segments.begin(); segIt.valid(); segIt++) {
+															dpl.pushBack((*segIt).point1);
+															dpl.pushBack((*segIt).point2);
+														}
+													}
+													else {
+														for (segIt = segments.rbegin(); segIt.valid(); segIt--) {
+															dpl.pushBack((*segIt).point2);
+															dpl.pushBack((*segIt).point1);
+														}
+													}
+													// unify bends = delete superfluous points
+													dpl.unify();
+													// finally concatenate/set the bends
+													CGA.bends(actEdge).conc(dpl);
+												}// else (checkNumOfSegReInserts==0)
+											}// else (segments exist)
+										}// points & segments
+
+									}//edgeIdRef
+
+								}// edgeStyle
+
+								//			// LABELSTYLE
+								//			if (stylesSon->getName() == Ogml::s_tagNames[t_labelStyle]){
+								//				// labelStyle
+								//				// ACTUALLY NOT SUPPORTED
+								//			}// labelStyle
+
+								stylesSon = stylesSon->m_pBrother;
+							} // while
+
+						}
+					} //styles
+
+					// CONSTRAINTS
+					if (layoutSon->getName() == Ogml::s_tagNames[Ogml::t_constraints]) {
+
+						// this code is encapsulated in the method
+						// OgmlParser::buildConstraints
+						// has to be called by read methods after building
+
+						// here we only set the pointer,
+						//  so we don't have to traverse the parse tree
+						//  to the constraints tag later
+						m_constraintsTag = layoutSon;
+
+					}// constraints
+
+
+					// go to next brother
+					layoutSon = layoutSon->m_pBrother;
+				}// while(layoutSon)
+			}//if (layout->m_pFirstSon)
+		}// if ((layout) && (layout->getName() == Ogml::s_tagNames[t_layout]))
+
+
+	}// else
+
+
+
+
+
+	//	cout << "buildAttributedClusterGraph COMPLETE. Check... " << endl << flush;
+	//	edge e;
+	//	forall_edges(e, G){
+	//		//cout << "CGA.labelEdge" << e << " = " << CGA.labelEdge(e) << endl << flush;
+	//		cout << "CGA.arrowEdge" << e << " = " << CGA.arrowEdge(e) << endl << flush;
+	//		cout << "CGA.styleEdge" << e << " = " << CGA.styleEdge(e) << endl << flush;
+	//		cout << "CGA.edgeWidth" << e << " = " << CGA.edgeWidth(e) << endl << flush;
+	//		cout << "CGA.colorEdge" << e << " = " << CGA.colorEdge(e) << endl << flush;
+	//		cout << "CGA.type     " << e << " = " << CGA.type(e) << endl << flush;
+	//		ListConstIterator<DPoint> it;
+	//		for(it = CGA.bends(e).begin(); it!=CGA.bends(e).end(); ++it) {
+	//			cout << "point " << " x=" << (*it).m_x << " y=" << (*it).m_y << endl << flush;
+	//		}
+	//
+	//	}
+	//
+	//	node n;
+	//	forall_nodes(n, G){
+	//		cout << "CGA.labelNode(" << n << ")     = " << CGA.labelNode(n) << endl << flush;
+	//		cout << "CGA.templateNode(" << n << ")  = " << CGA.templateNode(n) << endl << flush;
+	//		cout << "CGA.shapeNode(" << n << ")     = " << CGA.shapeNode(n) << endl << flush;
+	//		cout << "CGA.width(" << n << ")         = " << CGA.width(n) << endl << flush;
+	//		cout << "CGA.height(" << n << ")        = " << CGA.height(n) << endl << flush;
+	//		cout << "CGA.colorNode(" << n << ")     = " << CGA.colorNode(n) << endl << flush;
+	//		cout << "CGA.nodePattern(" << n << ")   = " << CGA.nodePattern(n) << endl << flush;
+	//		cout << "CGA.styleNode(" << n << ")     = " << CGA.styleNode(n) << endl << flush;
+	//		cout << "CGA.lineWidthNode(" << n << ") = " << CGA.lineWidthNode(n) << endl << flush;
+	//		cout << "CGA.nodeLine(" << n << ")      = " << CGA.nodeLine(n) << endl << flush;
+	//		cout << "CGA.x(" << n << ")             = " << CGA.x(n) << endl << flush;
+	//		cout << "CGA.y(" << n << ")             = " << CGA.y(n) << endl << flush;
+	//		cout << "CGA.type(" << n << ")          = " << CGA.type(n) << endl << flush;
+	//	}
+	//
+	//	cluster c;
+	//	forall_clusters(c, CGA.constClusterGraph()){
+	//		cout << "CGA.templateCluster(" << c << ")    = " << CGA.templateCluster(c) << endl << flush;
+	//		cout << "CGA.clusterWidth(" << c << ")       = " << CGA.clusterWidth(c) << endl << flush;
+	//		cout << "CGA.clusterHeight(" << c << ")      = " << CGA.clusterHeight(c) << endl << flush;
+	//		cout << "CGA.clusterFillColor(" << c << ")   = " << CGA.clusterFillColor(c) << endl << flush;
+	//		cout << "CGA.clusterFillPattern(" << c << ") = " << CGA.clusterFillPattern(c) << endl << flush;
+	//		cout << "CGA.clusterBackColor(" << c << ")   = " << CGA.clusterBackColor(c) << endl << flush;
+	//		cout << "CGA.clusterLineStyle(" << c << ")   = " << CGA.clusterLineStyle(c) << endl << flush;
+	//		cout << "CGA.clusterLineWidth(" << c << ")   = " << CGA.clusterLineWidth(c) << endl << flush;
+	//		cout << "CGA.clusterColor(" << c << ")       = " << CGA.clusterColor(c) << endl << flush;
+	//		cout << "CGA.clusterXPos(" << c << ")        = " << CGA.clusterXPos(c) << endl << flush;
+	//		cout << "CGA.clusterYPos(" << c << ")        = " << CGA.clusterYPos(c) << endl << flush;
+	//	}
+
+	//	cout << "buildAttributedClusterGraph COMPLETE... Check COMPLETE... Let's have fun in GDE ;) " << endl << flush;
+
+	// building terminated, so return true
+	return true;
+
+}//buildAttributedClusterGraph
+
+
+
+// ***********************************************************
+//
+// s e t    l a b e l s    r e c u r s i v e     f o r     c l u s t e r s
+//
+// ***********************************************************
+// sets the labels of hierarchical nodes => cluster
+bool OgmlParser::setLabelsRecursive(Graph &G, ClusterGraphAttributes &CGA, XmlTagObject *root)
+{
+	if ((root->getName() == Ogml::s_tagNames[Ogml::t_node]) && (CGA.attributes() & GraphAttributes::nodeLabel))
+	{
+		if (!isNodeHierarchical(root))
+		{
+			// get the id of the actual node
+			XmlAttributeObject *att;
+			if(root->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att))
+			{
+				// lookup for node
+				node actNode = (m_nodes.lookup(att->getValue()))->info();
+				// find label tag
+				XmlTagObject* label;
+				if (root->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_label], label)) {
+					// get content tag
+					XmlTagObject* content = label->m_pFirstSon;
+					// get the content as string
+					if (content->m_pTagValue){
+						String str = content->getValue();
+						String labelStr = getLabelCaptionFromString(str);
+						// now set the label of the node
+						CGA.labelNode(actNode) = labelStr;
+					}
+				}
+			}
+		}// "normal" nodes
+		else
+		{
+			// get the id of the actual cluster
+			XmlAttributeObject *att;
+			if(root->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att))
+			{
+				// lookup for cluster
+				cluster actCluster = (m_clusters.lookup(att->getValue()))->info();
+				// find label tag
+				XmlTagObject* label;
+				if (root->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_label], label)) {
+					// get content tag
+					XmlTagObject* content = label->m_pFirstSon;
+					// get the content as string
+					if (content->m_pTagValue) {
+						String str = content->getValue();
+						String labelStr = getLabelCaptionFromString(str);
+						// now set the label of the node
+						CGA.clusterLabel(actCluster) = labelStr;
+					}
+				}
+			}
+			// hierSon = hierarchical Son
+			XmlTagObject *hierSon;
+			if (root->m_pFirstSon)
+			{
+				hierSon = root->m_pFirstSon;
+				while(hierSon) {
+					// recursive call for setting labels of child nodes
+					if (!setLabelsRecursive(G, CGA, hierSon))
+						return false;
+					hierSon = hierSon->m_pBrother;
+				}
+			}
+
+		}//cluster nodes
+	}
+	return true;
+}// setLabelsRecursive
+
+
+
+// ***********************************************************
+//
+// b u i l d     g r a p h
+//
+// ***********************************************************
+bool OgmlParser::buildGraph(Graph &G)
+{
+	G.clear();
+
+	int id = 0;
+
+	//Build nodes first
+	HashConstIterator<String, const XmlTagObject*> it;
+
+	for(it = m_ids.begin(); it.valid(); ++it)
+	{
+		if( it.info()->getName() == Ogml::s_tagNames[Ogml::t_node] && !isNodeHierarchical(it.info()))
+		{
+			// get id string from xmlTag
+			XmlAttributeObject *idAtt;
+			if ( (it.info())->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], idAtt)
+				&& (getIdFromString(idAtt->getValue(), id)) )
+			{
+				// now we got an id from the id-string
+				// we have to check, if this id was assigned
+				if (m_nodeIds.lookup(id)) {
+					// new id was assigned to another node
+					id = G.maxNodeIndex() + 1;
+				}
+			}
+			else {
+				// default id setting
+				id = G.maxNodeIndex() + 1;
+			}
+			m_nodes.fastInsert(it.key(), G.newNode(id));
+			m_nodeIds.fastInsert(id, idAtt->getValue());
+		}
+	}//for nodes
+
+	id = 0;
+
+	//Build edges second
+	for(it = m_ids.begin(); it.valid(); ++it)
+	{
+		if( it.info()->getName() == Ogml::s_tagNames[Ogml::t_edge] )
+		{
+			//Check sources/targets
+			Stack<node> srcTgt;
+			const XmlTagObject* son = it.info()->m_pFirstSon;
+			while(son) {
+				if( son->getName() == Ogml::s_tagNames[Ogml::t_source] ||
+					son->getName() == Ogml::s_tagNames[Ogml::t_target] )
+				{
+					XmlAttributeObject *att;
+					son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_nodeIdRef], att);
+					//Validate if source/target is really a node
+					if(m_ids.lookup(att->getValue())->info()->getName() != Ogml::s_tagNames[Ogml::t_node]) {
+						cout << "WARNING: edge relation between graph elements of none type node " <<
+							"are temporarily not supported!\n";
+					}
+					else {
+						srcTgt.push(m_nodes.lookup(att->getValue())->info());
+					}
+				}
+				son = son->m_pBrother;
+			}
+			if(srcTgt.size() != 2) {
+				cout << "WARNING: hyperedges are temporarily not supported! Discarding edge.\n";
+			}
+			else {
+				// create edge
+
+				// get id string from xmlTag
+				XmlAttributeObject *idAtt;
+				if ( (it.info())->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], idAtt)
+					&& (getIdFromString(idAtt->getValue(), id)) )
+				{
+					if (m_edgeIds.lookup(id)) {
+						// new id was assigned to another edge
+						id = G.maxEdgeIndex() + 1;
+					}
+				}
+				else {
+					// default id setting
+					id = G.maxEdgeIndex() + 1;
+				}
+				m_edges.fastInsert(it.key(), G.newEdge(srcTgt.pop(), srcTgt.pop(), id));
+				m_edgeIds.fastInsert(id, idAtt->getValue());
+			}
+		}
+	}//for edges
+
+	//Structure data determined, so building the graph was successfull.
+	return true;
+}//buildGraph
+
+
+
+// ***********************************************************
+//
+// b u i l d    c l u s t e r -- g r a p h
+//
+// ***********************************************************
+bool OgmlParser::buildClusterRecursive(
+	const XmlTagObject *xmlTag,
+	cluster parent,
+	Graph &G,
+	ClusterGraph &CG)
+{
+	// create new cluster
+
+	// first get the id
+	int id = -1;
+
+	XmlAttributeObject *idAtt;
+	if (  (xmlTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], idAtt))
+		&& (getIdFromString(idAtt->getValue(), id)) )
+	{
+		if (m_clusterIds.lookup(id)) {
+			// id was assigned to another cluster
+			id = CG.maxClusterIndex() + 1;
+		}
+	}
+	else {
+		// default id setting
+		id = CG.maxClusterIndex() + 1;
+	}
+	// create cluster and insert into hash tables
+	cluster actCluster = CG.newCluster(parent, id);
+	m_clusters.fastInsert(idAtt->getValue(), actCluster);
+	m_clusterIds.fastInsert(id, idAtt->getValue());
+
+	// check children of cluster tag
+	XmlTagObject *son = xmlTag->m_pFirstSon;
+
+	while(son)
+	{
+		if (son->getName() == Ogml::s_tagNames[Ogml::t_node]) {
+			if (isNodeHierarchical(son))
+				// recursive call
+				buildClusterRecursive(son, actCluster, G, CG);
+			else {
+				// the actual node tag is a child of the cluster
+				XmlAttributeObject *att;
+				//parse tree is valid so tag owns id attribute
+				son->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], att);
+				// get node from lookup table with the id in att
+				node v = m_nodes.lookup(att->getValue())->info();
+				// assign node to actual cluster
+				CG.reassignNode(v, actCluster);
+			}
+		}
+
+		son = son->m_pBrother;
+	}//while
+
+	return true;
+}//buildClusterRecursive
+
+
+
+bool OgmlParser::buildCluster(
+	const XmlTagObject *rootTag,
+	Graph &G,
+	ClusterGraph &CG)
+{
+	CG.clear();
+	CG.init(G);
+
+	if(rootTag->getName() != Ogml::s_tagNames[Ogml::t_ogml]) {
+		cerr << "ERROR: Expecting root tag \"" << Ogml::s_tagNames[Ogml::t_ogml]	<< "\" in OgmlParser::buildCluster!\n";
+		return false;
+	}
+
+	//Search for first node tag
+	XmlTagObject *nodeTag;
+	rootTag->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_graph], nodeTag);
+	nodeTag->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_structure], nodeTag);
+	nodeTag->findSonXmlTagObjectByName(Ogml::s_tagNames[Ogml::t_node], nodeTag);
+
+	while (nodeTag)
+	{
+		if(nodeTag->getName() == Ogml::s_tagNames[Ogml::t_node] && isNodeHierarchical(nodeTag)) {
+			if (!buildClusterRecursive(nodeTag, CG.rootCluster(), G, CG))
+				return false;
+		}
+
+		nodeTag = nodeTag->m_pBrother;
+	}
+
+	return true;
+}//buildCluster
+
+
+
+
+// ***********************************************************
+//
+// b u i l d     c o n s t r a i n t s
+//
+// ***********************************************************
+//Commented out due to missing graphconstraints in OGDF
+/*
+bool OgmlParser::buildConstraints(Graph& G, GraphConstraints &GC) {
+
+	// constraints-tag was already set
+	// if not, then return... job's done
+	if (!m_constraintsTag)
+		return true;
+
+	if (m_constraintsTag->getName() != Ogml::s_tagNames[t_constraints]){
+		cerr << "Error: constraints tag is not the required tag!" << endl;
+		return false;
+	}
+
+	XmlTagObject* constraintTag;
+	if(! m_constraintsTag->findSonXmlTagObjectByName(Ogml::s_tagNames[t_constraint], constraintTag) ) {
+		cerr << "Error: no constraint block in constraints block of valid parse tree found!" << endl;
+		return false;
+	}
+
+
+	while(constraintTag) {
+
+//		// found data
+//		if (constraintTag->getName() == Ogml::s_tagNames[t_data]){
+//			// found data for constraints in general
+//			// no implementation required for ogdf
+//		}//data
+
+		if(constraintTag->getName() == Ogml::s_tagNames[t_constraint]) {
+
+			XmlAttributeObject* actAtt;
+			String cId;
+			String cType;
+
+			if (constraintTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[Ogml::a_id], actAtt))
+				// set id of the constraint
+				cId = actAtt->getValue();
+
+			if (constraintTag->findXmlAttributeObjectByName(Ogml::s_attributeNames[a_type], actAtt))
+				cType = actAtt->getValue();
+			else {
+			 	cerr << "Error: constraint doesn't own compulsive attribute \'type\' in valid parse tree!" << endl;
+				return false;
+			}
+			// now we need a constraint manager to create a constraint
+			//  with the type of the name stored in cType
+			// create the constraint
+			Constraint* c = ConstraintManager::createConstraintByName(G, &cType);
+			// check if the constraintManager doesn't return a null pointer
+			//  that occurs if cM doesn't know the constraint name
+			if (c) {
+				// let the constraint load itself
+				if (c->buildFromOgml(constraintTag, &m_nodes)){
+					// add constraint if true is returned
+					GC.addConstraint(c);
+				}
+				else
+					cerr << "Error while building constraint with name \""<<cType<<"\"!" << endl;
+			}
+			else
+				cerr << "Error: constraint type \""<<cType<<"\" is unknown!" << endl;
+
+		}//constraint
+
+		// go to next constraint tag
+		constraintTag = constraintTag->m_pBrother;
+	}//while
+
+	// terminated, so return true
+	return true;
+
+}
+*/
+
+
+
+// ***********************************************************
+//
+// p u b l i c    r e a d     m e t h o d s
+//
+// ***********************************************************
+bool OgmlParser::read(
+	const char* fileName,
+	Graph &G,
+	ClusterGraph &CG)
+{
+	try {
+		// DinoXmlParser for parsing the ogml file
+		DinoXmlParser p(fileName);
+		p.createParseTree();
+
+		// get root object of the parse tree
+		const XmlTagObject *root = &p.getRootTag();
+
+		// build the required hash tables
+		buildHashTables();
+
+		// valide the document
+		if ( validate(root, Ogml::t_ogml) == Ogml::vs_valid )
+		{
+			checkGraphType(root);
+			// build graph
+			if (buildGraph(G))
+			{
+				Ogml::GraphType gt = getGraphType();
+				// switch GraphType
+				switch (gt){
+				//normal graph
+				case Ogml::graph:
+					break;
+
+				// cluster graph
+				case Ogml::clusterGraph:
+					// build cluster
+					if (!buildCluster(root, G, CG))
+						return false;
+					break;
+
+				// compound graph
+				case Ogml::compoundGraph:
+					// build cluster because we got a cluster graph variable
+					//  although we have a compound graph in the ogml file
+					if (!buildCluster(root, G, CG))
+						return false;
+					break;
+
+				// corrupt compound graph
+				case Ogml::corruptCompoundGraph:
+					// build cluster because we got a cluster graph variable
+					//  although we have a corrupted compound graph in the ogml file
+					if (!buildCluster(root, G, CG))
+						return false;
+					break;
+				}
+			} else
+				return false;
+		} else
+			return false;
+
+	} catch(const char *error) {
+		cout << error << endl << flush;
+		return false;
+	}
+
+	return true;
+};
+
+
+bool OgmlParser::read(
+	const char* fileName,
+	Graph &G,
+	ClusterGraph &CG,
+	ClusterGraphAttributes &CGA)
+{
+	try {
+		// DinoXmlParser for parsing the ogml file
+		DinoXmlParser p(fileName);
+		p.createParseTree();
+
+		// get root object of the parse tree
+		const XmlTagObject *root = &p.getRootTag();
+
+		// build the required hash tables
+		buildHashTables();
+
+		// valide the document
+		if ( validate(root, Ogml::t_ogml) == Ogml::vs_valid )
+		{
+			checkGraphType(root);
+
+			// build graph
+			if (buildGraph(G))
+			{
+				Ogml::GraphType gt = getGraphType();
+				// switch GraphType
+				switch (gt){
+				// normal graph
+				case Ogml::graph:
+					if (!buildAttributedClusterGraph(G, CGA, root))
+						return false;
+					break;
+
+				// cluster graph
+				case Ogml::clusterGraph:
+					if (!buildCluster(root, G, CG))
+						return false;
+					if (!buildAttributedClusterGraph(G, CGA, root))
+						return false;
+					break;
+
+				// compound graph
+				case Ogml::compoundGraph:
+					// build cluster because we got a cluster graph variable
+					//  although we have a compound graph in the ogml file
+					if (!buildCluster(root, G, CG))
+						return false;
+					if (!buildAttributedClusterGraph(G, CGA, root))
+						return false;
+					break;
+
+				// corrupt compound graph
+				case Ogml::corruptCompoundGraph:
+					// build cluster because we got a cluster graph variable
+					//  although we have a corrupted compound graph in the ogml file
+					if (!buildCluster(root, G, CG))
+						return false;
+					if (!buildAttributedClusterGraph(G, CGA, root))
+						return false;
+				}
+
+			} else
+				return false;
+
+		} else
+			return false;
+
+	} catch(const char *error) {
+		cout << error << endl << flush;
+		return false;
+	}
+
+	return true;
+};
+
+
+}//namespace ogdf
+
diff --git a/ogdf/fileformats/OgmlParser.h b/ogdf/fileformats/OgmlParser.h
new file mode 100644
index 0000000..ca4e128
--- /dev/null
+++ b/ogdf/fileformats/OgmlParser.h
@@ -0,0 +1,290 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of auxiliary classes OgmlAttributeValue,
+ *        OgmlAttribute and OgmlTag.
+ *
+ * \author Christian Wolf and Bernd Zey
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+//KK: Commented out the constraint stuff using //o
+//CG: compound graph stuff has been removed with commit 2465
+
+#ifndef OGDF_OGML_PARSER_H
+#define OGDF_OGML_PARSER_H
+
+#include "Ogml.h"
+#include "DinoXmlParser.h"
+#include "../basic/Hashing.h"
+#include "../basic/String.h"
+#include "../cluster/ClusterGraph.h"
+#include "../cluster/ClusterGraphAttributes.h"
+
+// constraints
+//o#include <ogdf/Constraints.h>
+
+
+namespace ogdf {
+
+//
+// ---------- O g m l P a r s e r ------------------------
+//
+
+/**Objects of this class represent a validating parser for files in Ogml.
+*/
+class OgmlParser
+{
+private:
+
+	// struct definitions for mapping of templates
+	struct OgmlNodeTemplate;
+	struct OgmlEdgeTemplate;
+	//struct OgmlLabelTemplate;
+
+	struct OgmlSegment;
+
+	class OgmlAttributeValue;
+	class OgmlAttribute;
+	class OgmlTag;
+
+	friend ostream& operator<<(ostream& os, const OgmlParser::OgmlAttribute& oa);
+	friend ostream& operator<<(ostream& os, const OgmlParser::OgmlTag& ot);
+
+	static Hashing<int, OgmlTag>            *s_tags;       //!< Hashtable for saving all ogml tags.
+	static Hashing<int, OgmlAttribute>      *s_attributes; //!< Hashtable for saving all ogml attributes.
+	static Hashing<int, OgmlAttributeValue> *s_attValues;  //!< Hashtable for saving all values of ogml attributes.
+
+
+	//! Builds hashtables for tags and attributes.
+	static void buildHashTables();
+
+	mutable Ogml::GraphType m_graphType; //!< Saves a graph type. Is set by checkGraphType.
+
+	Hashing<String, const XmlTagObject*> m_ids; //!< Saves all ids of an ogml-file.
+
+	/**
+	 * Checks if all tags (XmlTagObject), their attributes (XmlAttributeObject) and
+	 * their values are valid (are tags expected, do they own the rigth attributes...)
+	 * and sets a valid flag to these. Furthermore it checks if ids of tags are
+	 * unique and if id references are valid.
+	 * See OgmlTag.h for semantics of the encodings.
+	 * Returns the validity state of the current processed tag.
+	 */
+	int validate(const XmlTagObject *xmlTag, int ogmlTag);
+
+	/**
+	 * Wrapper method for validate method above.
+	 * Returns true when validation is successfull, false otherwise.
+	 */
+	//bool validate(const char* fileName);
+
+	//! Prints some useful information about un-/successful validation.
+	void printValidityInfo(const OgmlTag &ot,
+		const XmlTagObject &xto,
+		int valStatus,
+		int line);
+
+	/**
+	 * Finds the OGML-tag in the parse tree with the specified id,
+	 * stores the tag in xmlTag
+	 * recTag is the tag for recursive calls
+	 * returns false if something goes wrong
+	 */
+	//bool getXmlTagObjectById(XmlTagObject *recTag, String id, XmlTagObject *&xmlTag);
+
+	/**
+	 * Checks the graph type and stores it in the member variable m_graphType
+	 * xmlTag has to be the root or the graph or the structure Ogml-tag
+	 * returns false if something goes wrong
+	 */
+	bool checkGraphType(const XmlTagObject *xmlTag) const;
+
+	//! Returns true iff subgraph is an hierarchical graph.
+	bool isGraphHierarchical(const XmlTagObject *xmlTag) const;
+
+	//! Returns true iff node contains other nodes.
+	bool isNodeHierarchical(const XmlTagObject *xmlTag) const;
+
+	Ogml::GraphType getGraphType() { return m_graphType; };
+
+
+	// id hash tables
+	// required variables for building
+	// hash table with id from file and node
+	Hashing<String, node> m_nodes;
+	Hashing<String, edge> m_edges;
+	Hashing<String, cluster> m_clusters;
+	// hash table for bend-points
+	Hashing<String, DPoint> m_points;
+
+	// hash table for checking uniqueness of ids
+	// (key:) int = id in the created graph
+	// (info:) String = id in the ogml file
+	Hashing<int, String> m_nodeIds;
+	Hashing<int, String> m_edgeIds;
+	Hashing<int, String> m_clusterIds;
+
+	// build methods
+
+	//! Builds a graph; ignores nodes which have hierarchical structure.
+	bool buildGraph(Graph &G);
+
+	//! Builds a cluster graph.
+	bool buildCluster(
+		const XmlTagObject *rootTag,
+		Graph &G,
+		ClusterGraph &CG);
+
+	//! Recursive part of buildCluster.
+	bool buildClusterRecursive(
+		const XmlTagObject *xmlTag,
+		cluster parent,
+		Graph &G,
+		ClusterGraph &CG);
+
+	//! Build a cluster graph with style/layout attributes.
+	bool buildAttributedClusterGraph(
+		Graph &G,
+		ClusterGraphAttributes &CGA,
+		const XmlTagObject *root);
+
+	//! Method for setting labels of clusters.
+	bool setLabelsRecursive(
+		Graph &G,
+		ClusterGraphAttributes &CGA,
+		XmlTagObject *root);
+
+	// helping pointer for constraints-loading
+	// this pointer is set in the building methods
+	// so we don't have to traverse the tree in buildConstraints
+	XmlTagObject* m_constraintsTag;
+
+	// hashing lists for templates
+	//  string = id
+	Hashing<String, OgmlNodeTemplate*> m_ogmlNodeTemplates;
+	Hashing<String, OgmlEdgeTemplate*> m_ogmlEdgeTemplates;
+	//Hashing<String, OgmlLabelTemplate> m_ogmlLabelTemplates;
+
+	// auxiliary methods for mapping graph attributes
+
+	//! Returns int value for the pattern.
+	int getBrushPatternAsInt(String s);
+
+	//! Returns the shape as an integer value.
+	int getShapeAsInt(String s);
+
+	//! Maps the OGML attribute values to corresponding GDE values.
+	String getNodeTemplateFromOgmlValue(String s);
+
+	//! Returns the line type as an integer value.
+	int getLineTypeAsInt(String s);
+
+	//! Returns the image style as an integer value.
+	int getImageStyleAsInt(String s);
+
+	//! Returns the alignment of image as an integer value.
+	int getImageAlignmentAsInt(String s);
+
+	// arrow style, actually a "boolean" function
+	// because it returns only 0 or 1 according to GDE
+	// sot <=> source or target
+	int getArrowStyleAsInt(String s, String sot);
+
+	// the matching method to getArrowStyleAsInt
+	GraphAttributes::EdgeArrow getArrowStyle(int i);
+
+	// function that operates on a string
+	// the input string contains "<" instead of "<"
+	//  and ">" instead of ">"
+	//  to disable interpreting the string as xml-tags (by DinoXmlParser)
+	// so this function substitutes  "<" for "<"
+	String getLabelCaptionFromString(String str);
+
+	//! Returns the integer value of the id at the end of the string (if it exists).
+	bool getIdFromString(String str, int &id);
+
+	//! Validiation method.
+	void validate(const char* fileName);
+
+public:
+
+	//! Constructs an OGML parser.
+	OgmlParser() { }
+
+	~OgmlParser() { }
+
+
+	//! Reads a cluster graph \a CG from file \a fileName in OGML format.
+	/**
+	 * @param fileName is the name of the file to be parsed as OGML file.
+	 * @param G is the graph to be build from the OGML file; must be the graph associated with \a CG.
+	 * @param CG is the cluster graph to be build from the OGML file.
+	 * @return true if succesfull, false otherwise.
+	 */
+	bool read(
+		const char* fileName,
+		Graph &G,
+		ClusterGraph &CG);
+
+	//! Reads a cluster graph \a CG with attributes \a CGA from file \a fileName in OGML format.
+	/**
+	 * @param fileName is the name of the file to be parsed as OGML file.
+	 * @param G is the graph to be build from the OGML file; must be the graph associated with \a CG.
+	 * @param CG is the cluster graph to be build from the OGML file.
+	 * @param CGA are the cluster graph attributes (associated with CG) in which layout and style information are stored.
+	 * @return true if succesfull, false otherwise.
+	 */
+	bool read(
+		const char* fileName,
+		Graph &G,
+		ClusterGraph &CG,
+		ClusterGraphAttributes &CGA);
+
+};//end class OGMLParser
+
+}//end namespace ogdf
+
+#endif
+
diff --git a/ogdf/fileformats/XmlObject.h b/ogdf/fileformats/XmlObject.h
new file mode 100644
index 0000000..351eb8d
--- /dev/null
+++ b/ogdf/fileformats/XmlObject.h
@@ -0,0 +1,132 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class XmlObject.
+ *
+ * \author Sebastian Leipert and Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_XML_OBJECT_H
+#define OGDF_XML_OBJECT_H
+
+
+
+namespace ogdf {
+
+
+typedef HashElement<String,int> *XmlKey;
+enum XmlObjectType { xmlIntValue, xmlDoubleValue, xmlStringValue, xmlListBegin,
+	xmlListEnd, xmlKey, xmlEOF, xmlError };
+
+
+//---------------------------------------------------------
+// XmlObject
+// represents node in XML parse tree
+//---------------------------------------------------------
+struct OGDF_EXPORT XmlObject {
+
+	XmlObject *m_pBrother; // brother of node in tree
+	XmlKey m_key; // tag of node
+	XmlObjectType m_valueType; // type of node
+
+	// the entry in the union is selected according to m_valueType:
+	//   xmlIntValue -> m_intValue
+	//   xmlDoubleValue -> m_doubleValue
+	//   xmlStringValue -> m_stringValue
+	//   xmlListBegin -> m_pFirstSon (in case of a list, m_pFirstSon is pointer
+	//     to first son and the sons are chained by m_pBrother)
+	union {
+		int m_intValue;
+		double m_doubleValue;
+		const char *m_stringValue;
+		XmlObject *m_pFirstSon;
+	};
+
+	// construction
+
+	// Some Reference on the XML notation:
+	// XML consists of one or more elements.
+	// An element is marked with the following form:
+	//		<body>
+	//		elementinformation
+	//		</body>
+	// The opening <body> and the closing </body> are the tags
+	// of the element. The text between the two tags is considered
+	// part of the element.
+	// Elemets can have attributes applied, e.g.
+	//		<body style="bold">blablabla</body>
+	// The attribute is specified inside the opening tag
+	// and is called "style". It is given a value "bold" which is expressed
+	// inside quotation marks.
+
+
+
+	// Stores the "tag" of an XML element
+	XmlObject(XmlKey key) : m_pBrother(0), m_key(key),
+		m_valueType(xmlListBegin), m_pFirstSon(0)  { }
+
+	// Stores an integer "attribute" of an XML element
+	XmlObject(XmlKey key, int intValue) : m_pBrother(0), m_key(key),
+		m_valueType(xmlIntValue), m_intValue(intValue)  { }
+
+	// Stores a double "attribute" of an XML element
+	XmlObject(XmlKey key, double doubleValue) : m_pBrother(0), m_key(key),
+		m_valueType(xmlDoubleValue), m_doubleValue(doubleValue)  { }
+
+	// Stores a string "attribute" of an XML element
+	XmlObject(XmlKey key, const char *stringValue) : m_pBrother(0), m_key(key),
+		m_valueType(xmlStringValue), m_stringValue(stringValue)  { }
+
+	// Stores the body of the element
+	XmlObject(const char *stringValue) : m_pBrother(0), m_key(0),
+		m_valueType(xmlStringValue), m_stringValue(stringValue)  { }
+
+
+	OGDF_NEW_DELETE
+};
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/fileformats/XmlParser.cpp b/ogdf/fileformats/XmlParser.cpp
new file mode 100644
index 0000000..d7cf5da
--- /dev/null
+++ b/ogdf/fileformats/XmlParser.cpp
@@ -0,0 +1,1204 @@
+/*
+ * $Revision: 2565 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 17:14:54 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of XML parser (class XmlParser)
+ * (used for parsing and reading XML files)
+ *
+ * \author Sebastian Leipert
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "XmlParser.h"
+#include <ctype.h>
+#include <string.h>
+
+extern ofstream os;
+
+namespace ogdf {
+
+
+#define BUFFERLENGTH 8192
+
+XmlParser::XmlParser(const char *fileName, bool doCheck)
+{
+	// open file
+	ifstream is(fileName, ios::in);// | ios::nocreate); // not accepted by gnu 3.02
+	if (!is) {
+		setError("Cannot open file."); return;
+	}
+
+	createObjectTree(is, doCheck);
+}
+
+
+XmlParser::XmlParser(istream &is, bool doCheck)
+{
+	createObjectTree(is,doCheck);
+}
+
+
+void XmlParser::createObjectTree(istream &is, bool doCheck)
+{
+	initPredefinedKeys();
+	m_error = false;
+	m_objectTree = 0;
+
+	m_is = &is;
+	m_doCheck = doCheck; // indicates more extensive checking
+
+	// initialize line buffer (note: XML specifies a maximal line length
+	// of 254 characters!)
+	// See als the  workaround for Get2Chip in function getLine()
+
+	m_rLineBuffer = new char[BUFFERLENGTH]; // get2Chip special:
+											// XML Standard: char[256];
+	*m_rLineBuffer = '\n';
+	m_lineBuffer = m_rLineBuffer+1;
+
+	m_pCurrent = m_pStore = m_lineBuffer;
+	m_cStore = 0; // forces getNextSymbol() to read first line
+	m_keyName = 0;
+
+	// create object tree
+	m_objectTree = parseList(xmlEOF,xmlListEnd,"");
+
+	delete[] m_rLineBuffer;
+}
+
+
+// we use predefined id constants for all relevant keys
+// this allows us to use efficient switch() statemnts in read() methods
+void XmlParser::initPredefinedKeys()
+{
+
+	m_hashTable.fastInsert("NAME",      namePredefKey);
+	m_hashTable.fastInsert("GRAPH",     graphPredefKey);
+	m_hashTable.fastInsert("NODE",      nodePredefKey);
+	m_hashTable.fastInsert("TRANSITION",edgePredefKey);
+	m_hashTable.fastInsert("EDGE",		edgePredefKey);
+
+	m_hashTable.fastInsert("POSITION",	positionPredefKey);
+	m_hashTable.fastInsert("X",         xPredefKey);
+	m_hashTable.fastInsert("Y",         yPredefKey);
+
+	m_hashTable.fastInsert("SIZE",		sizePredefKey);
+	m_hashTable.fastInsert("W",         wPredefKey);
+	m_hashTable.fastInsert("H",         hPredefKey);
+	m_hashTable.fastInsert("WIDTH",     widthPredefKey);
+	m_hashTable.fastInsert("HEIGHT",    heightPredefKey);
+
+	m_hashTable.fastInsert("NODETYPE",  nodetypePredefKey);
+	m_hashTable.fastInsert("EDGETYPE",  edgetypePredefKey);
+	m_hashTable.fastInsert("TYPE",      typePredefKey);
+
+	m_hashTable.fastInsert("FROM",      sourcePredefKey);
+	m_hashTable.fastInsert("SOURCE",	sourcePredefKey);
+	m_hashTable.fastInsert("TO",        targetPredefKey);
+	m_hashTable.fastInsert("TARGET",	targetPredefKey);
+	m_hashTable.fastInsert("SENSE",     sensePredefKey);
+	m_hashTable.fastInsert("PATH",      pathPredefKey);
+
+
+	// further keys get id's starting with NEXTPREDEFKEY
+	m_num = NEXTPREDEFKEY;
+}
+
+
+XmlObject *XmlParser::parseList(XmlObjectType closingKey,
+								XmlObjectType /* errorKey */,
+								const char *objectBodyName)
+{
+	XmlObject *firstSon = 0;
+	XmlObject **pPrev = &firstSon;
+
+	for( ; ; ) {
+		XmlObjectType symbol = getNextSymbol();
+
+		if (symbol == closingKey || symbol == xmlError)
+			return firstSon;
+
+		XmlObject *object = 0;
+
+		if (symbol == xmlListBegin) {
+			symbol = getNextSymbol();
+			if (symbol != xmlKey) {
+				setError("key expected");
+				return firstSon;
+			}
+			XmlKey key = m_keySymbol;
+			object = OGDF_NEW XmlObject(key);
+
+			size_t len = strlen(m_keyName)+1;
+			char* newObjectBodyName = new char[len];
+			m_objectBody.pushBack(newObjectBodyName);
+			ogdf::strcpy(newObjectBodyName,len,m_keyName);
+
+			// Recursive call for building the tree.
+			object->m_pFirstSon = parseList(xmlListEnd,xmlEOF,newObjectBodyName);
+		}
+
+		else if (m_eoTag)
+		{ // must be the body of an element
+			if (symbol != xmlStringValue) {
+				setError("String expected");
+				return firstSon;
+			}
+			size_t len = strlen(m_stringSymbol)+1;
+			char *pChar = new char[len];
+			ogdf::strcpy(pChar,len,m_stringSymbol);
+
+			object = OGDF_NEW XmlObject(hashString(objectBodyName),pChar);
+		}
+		else
+		{ // must be a symbol
+			if (symbol != xmlKey) {
+				setError("key expected");
+				return firstSon;
+			}
+
+			XmlKey key = m_keySymbol;
+
+			symbol = getNextSymbol();
+			switch (symbol) {
+			case xmlIntValue:
+				object = OGDF_NEW XmlObject(key,m_intSymbol);
+				break;
+
+			case xmlDoubleValue:
+				object = OGDF_NEW XmlObject(key,m_doubleSymbol);
+				break;
+
+			case xmlStringValue: {
+				size_t len = strlen(m_stringSymbol)+1;
+				char *pChar = new char[len];
+				ogdf::strcpy(pChar,len,m_stringSymbol);
+				object = OGDF_NEW XmlObject(key,pChar); }
+				break;
+
+			case xmlListBegin:
+				setError("unexpected begin of list");
+				break;
+
+			case xmlListEnd:
+				setError("unexpected end of list");
+				return firstSon;
+
+			case xmlKey:
+				setError("unexpected key");
+				return firstSon;
+
+			case xmlEOF:
+				setError("missing value");
+				return firstSon;
+
+			case xmlError:
+				return firstSon;
+			}
+		}
+
+		*pPrev = object;
+		pPrev = &object->m_pBrother;
+
+	}
+	return firstSon;
+}
+
+
+void XmlParser::destroyObjectList(XmlObject *object)
+{
+	XmlObject *nextObject;
+	for(; object; object = nextObject) {
+		nextObject = object->m_pBrother;
+
+		if (object->m_valueType == xmlStringValue)
+			delete[] const_cast<char *>(object->m_stringValue);
+
+		else if (object->m_valueType == xmlListBegin)
+			destroyObjectList(object->m_pFirstSon);
+
+		delete object;
+	}
+}
+
+
+XmlParser::~XmlParser()
+{
+	// we have to delete all objects and allocated char arrays in string values
+	destroyObjectList(m_objectTree);
+	while (!m_objectBody.empty())
+		delete[] m_objectBody.popFrontRet();
+	delete[] m_keyName;
+}
+
+
+bool XmlParser::getLine()
+{
+	do {
+//              Standard XML needs only this
+//    	        if (m_is->eof()) return false;
+//		m_is->getline(m_lineBuffer,255);
+
+// Workaround for Get2Chip. XML-Information may exceed 254 signs per line.
+// Moreover, XML signs may be longer than 254 signs. Cut information at '>'.
+// Workaround starts here.
+		char c;
+		int count = 0;
+		while ( ((c = m_is->get() ) != '>') && (count <= (BUFFERLENGTH - 2))){
+			if (m_is->eof()) return false;
+			m_lineBuffer[count++] = c;
+		}
+		if ( (c == '>') && (count <= (BUFFERLENGTH - 2)))
+			m_lineBuffer[count++] = c;
+		m_lineBuffer[count] = '\0';
+// Workaround stops here.
+
+		// Eat Whitespaces.
+		for(m_pCurrent = m_lineBuffer; *m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent) ;
+	} while (*m_pCurrent == '#' || *m_pCurrent == 0);
+
+	return true;
+}
+
+/*****************************************************************************
+								getNextSymbol
+******************************************************************************/
+
+
+
+XmlObjectType XmlParser::getNextSymbol()
+{
+	*m_pStore = m_cStore;
+	m_eoTag = false;
+	bool digit = false;
+
+	// eat whitespace
+	for(; *m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent) ;
+	if (*m_pCurrent == '>')
+	{
+		m_pCurrent++;
+		m_eoTag = true; // end of a tag reached.
+	}
+	for(; *m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent) ;
+	// get new line if required
+	if (*m_pCurrent == 0) {
+		if (!getLine()) return xmlEOF;
+	}
+
+
+	// identify start of current symbol
+	char *pStart = m_pCurrent;
+
+	// we currently do not support strings with line breaks!
+
+	if (*pStart == '=')
+	{	// attribute value
+		// string or int or double expected
+
+		// again: eat whitespace
+		pStart++;m_pCurrent++;
+		for(; *m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent) ;
+		// again: get new line if required
+		if (*m_pCurrent == 0) {
+			if (!getLine()) return xmlEOF;
+		}
+		// again: identify start of current symbol
+		char *pStart = m_pCurrent;
+
+		bool quotation = (*pStart == '\"' ? 1 : 0);
+		if (quotation)
+		{
+			pStart++;
+			m_pCurrent++;
+		}
+		if (*pStart == '-' || isdigit(*pStart)) // Check if int or double
+		{
+			digit = true;
+			char *pCheck = m_pCurrent;
+			pCheck++;
+			while(isdigit(*pCheck))  ++pCheck;	// int or double
+			if (*pCheck == '.')
+				pCheck++;						// only double
+			else if (quotation && *pCheck != '\"')
+				digit = false;                  // must be string
+			else if (!quotation && !isspace(*pCheck) && *pCheck != '>')
+				digit = false;                  // must be string
+			if (digit)
+			{
+				while(isdigit(*pCheck))  ++pCheck;
+				if (quotation && *pCheck != '\"')
+					digit = false;                  // must be string
+				else if (!quotation && !isspace(*pCheck) && *pCheck != '>')
+					digit = false;                  // must be string
+			}
+		}
+
+//		if (!isdigit(*pStart) &&  (*pStart != '-')) { // string
+		if (!digit) // string
+		{
+			m_stringSymbol = m_pCurrent;
+			if (quotation){
+				for(; *m_pCurrent != 0 && *m_pCurrent != '\"'; ++m_pCurrent)
+					if (*m_pCurrent == '\\')
+						++m_pCurrent; // No quotation mark found yet. Drop the line.
+			}
+			else {
+				for(; *m_pCurrent != 0 && !isspace(*m_pCurrent) && *m_pCurrent != '>'; ++m_pCurrent)
+					if (*m_pCurrent == '\\') ++m_pCurrent;
+			}
+			if (quotation && *m_pCurrent == 0) {
+				m_longString = (pStart);
+				while(getLine()) {
+					for(m_pCurrent = m_lineBuffer; *m_pCurrent != 0 && *m_pCurrent != '\"'; ++m_pCurrent)
+						if (*m_pCurrent == '\\') ++m_pCurrent;
+					if (*m_pCurrent == 0)
+						m_longString += m_lineBuffer;
+					else {
+						m_cStore = *(m_pStore = m_pCurrent);
+						*m_pCurrent++ = 0;  // Drop quotation mark.
+						m_longString += m_lineBuffer;
+						break;
+					}
+				}
+				m_stringSymbol = m_longString.cstr();
+
+			}
+			else {
+				m_cStore = *(m_pStore = m_pCurrent);
+				if (quotation)
+					*m_pCurrent++ = 0;  // Drop quotation mark.
+				else
+					*m_pCurrent = 0;
+			}
+
+			return xmlStringValue;
+		}
+//		else if (*pStart == '-' || isdigit(*pStart))
+		else  // int or double
+		{
+			m_pCurrent++;
+			while(isdigit(*m_pCurrent)) ++m_pCurrent;
+
+			if (*m_pCurrent == '.')  // double
+			{
+				// check to be done
+
+				sscanf(pStart,"%lf",&m_doubleSymbol);
+				m_pCurrent++;
+				while (isdigit(*m_pCurrent)) ++m_pCurrent;
+				if (quotation){
+					for(; *m_pCurrent != 0 && *m_pCurrent != '\"' && isdigit(*m_pCurrent); ++m_pCurrent) ;
+
+					if (*m_pCurrent == '\"')
+						m_pCurrent++;
+					else
+					{
+						setError("malformed number");
+						return xmlError;
+					}
+				}
+				return xmlDoubleValue;
+
+			}
+
+			else // int
+			{
+				if (isalpha(*m_pCurrent)) {
+					setError("malformed number");
+					return xmlError;
+				}
+				if (quotation){
+					for(; *m_pCurrent != 0 && *m_pCurrent != '\"'; ++m_pCurrent);
+					if (*m_pCurrent == '\"')
+						m_pCurrent++;
+					else{
+						setError("malformed number");
+						return xmlError;
+					}
+				}
+				sscanf(pStart,"%d",&m_intSymbol);
+				return xmlIntValue;
+			}
+
+		}
+	}
+
+	if (*pStart == '<') {
+		//check if end of list
+		m_pCurrent++;
+		for (; *m_pCurrent && isspace(*m_pCurrent); ++m_pCurrent);
+		if (*m_pCurrent  == '/'){
+			for (; *m_pCurrent && *m_pCurrent != '>'; ++m_pCurrent);
+			m_cStore = *(m_pStore = m_pCurrent);
+			return xmlListEnd;
+		}
+		else {
+			m_cStore = *(m_pStore = m_pCurrent);
+			return xmlListBegin;
+		}
+	}
+	else if (*pStart == '/') {
+		m_pCurrent++;
+		for (; *m_pCurrent && *m_pCurrent == '>'; ++m_pCurrent);
+		m_cStore = *(m_pStore = m_pCurrent);
+		return xmlListEnd;
+
+	}
+
+	else	// Invalid clause: if(isalpha(*pStart)). May contain numbers
+	{
+		// Tag name, Attribute Name (both are said to be keys)
+		// or body name (element)
+
+		// check if really a correct key (error if not)
+		if (m_doCheck) {
+			m_pCurrent++;
+			for (;*m_pCurrent; ++m_pCurrent)
+				if (!(isalpha(*m_pCurrent) || isdigit(*m_pCurrent))) {
+					setError("malformed key");
+					return xmlError;
+				}
+		}
+		if (m_eoTag)  // its the body of an element
+		{
+			// Do not ignore whitespace, quotation marks etc.
+			// They belong to the element.
+			// Only search for the '<' of the next tag.
+			// The element is considered as string.
+
+			// Get new line if required
+			if (*m_pCurrent == 0) {
+				if (!getLine()) return xmlEOF;
+			}
+			// again: identify start of current symbol
+			//char *pStart = m_pCurrent;
+
+
+			m_stringSymbol = m_pCurrent;
+
+			while(*m_pCurrent != 0 && *m_pCurrent != '<' )
+				++m_pCurrent;
+			m_cStore = *(m_pStore = m_pCurrent);
+			*m_pCurrent = 0;
+
+			return xmlStringValue;
+		}
+		else  // it is a key
+		{
+			while(*m_pCurrent != 0 &&
+				*m_pCurrent != '=' &&
+				*m_pCurrent != '>' &&
+				*m_pCurrent != '/' &&
+				*m_pCurrent != '<' &&
+				!isspace(*m_pCurrent)
+			)
+				++m_pCurrent;
+			m_cStore = *(m_pStore = m_pCurrent);
+			*m_pCurrent = 0;
+
+			if (m_keyName != 0)
+				delete[] m_keyName;
+			size_t len = strlen(pStart)+6;
+			m_keyName = new char[len];
+			ogdf::strcpy(m_keyName,len,pStart);
+
+			m_keySymbol = hashString(pStart);
+			return xmlKey;
+		}
+	}
+
+	//
+	//setError("unknown symbol");
+
+	//return xmlError;
+}
+
+
+
+
+XmlKey XmlParser::hashString(const String &str)
+{
+	XmlKey key = m_hashTable.insertByNeed(str,-1);
+	if(key->info() == -1) key->info() = m_num++;
+
+	return key;
+}
+
+/*****************************************************************************
+								getNodeIdRange
+******************************************************************************/
+
+
+XmlObject *XmlParser::getNodeIdRange(int &minId,int &maxId,
+										 int &nodetypeCount,
+										 XmlObject *graphObject)
+
+{
+	nodetypeCount = minId = maxId = -1;
+
+	if (graphObject == 0)
+		graphObject = m_objectTree;
+	XmlObject *scanObject = graphObject;
+
+	for(; scanObject; scanObject = scanObject->m_pBrother)
+		if (id(scanObject) == graphPredefKey) break;
+
+	if (!scanObject || id(scanObject) != graphPredefKey)
+	{
+		scanObject = graphObject;
+		for(; scanObject; scanObject = scanObject->m_pBrother)
+		{
+			graphObject = getNodeIdRange(minId,maxId,nodetypeCount,scanObject->m_pFirstSon);
+			if (graphObject && id(graphObject) == graphPredefKey)
+				return graphObject;
+		}
+	}
+
+	if (!scanObject || scanObject->m_valueType != xmlListBegin) return 0;
+
+	XmlObject *son = scanObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother) {
+		if (id(son) == nodePredefKey && son->m_valueType == xmlListBegin)
+			maxId++;
+		else if (id(son) == nodetypePredefKey && son->m_valueType == xmlListBegin)
+			nodetypeCount++;
+	}
+
+	if (maxId >= 0)
+		minId = 0;
+
+	return scanObject;
+}
+
+
+
+
+/*****************************************************************************
+									makeIdMap
+******************************************************************************/
+
+
+bool XmlParser::makeIdMap(
+	int maxId,
+	Array<char*> & idMap,
+	int nodetypeCount,
+	Array<char*> & typeName,
+	Array<double> & typeWidth,
+	Array<double> & typeHeight,
+	XmlObject *graphObject)
+{
+	int idCount = 0;
+	int typeCount = 0;
+	for(; graphObject; graphObject = graphObject->m_pBrother)
+		if (id(graphObject) == graphPredefKey) break;
+
+	if (!graphObject || graphObject->m_valueType != xmlListBegin) return 0;
+
+	XmlObject *son = graphObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother) {
+		if (id(son) == nodePredefKey && son->m_valueType == xmlListBegin) {
+			XmlObject *nodeSon = son->m_pFirstSon;
+			for(; nodeSon; nodeSon = nodeSon->m_pBrother)
+				if (id(nodeSon) == namePredefKey && nodeSon->m_valueType == xmlStringValue){
+					if (idCount >= maxId+1)
+						return 0;
+					size_t len = strlen(nodeSon->m_stringValue)+1;
+					idMap[idCount] = new char[len];
+					ogdf::strcpy(idMap[idCount++],len,nodeSon->m_stringValue);
+				}
+		}
+		else if (id(son) == nodetypePredefKey && son->m_valueType == xmlListBegin){
+			XmlObject *nodeSon = son->m_pFirstSon;
+			if (typeCount <= nodetypeCount){
+				for(; nodeSon; nodeSon = nodeSon->m_pBrother) {
+					if (id(nodeSon) == namePredefKey && nodeSon->m_valueType == xmlStringValue){
+						size_t len = strlen(nodeSon->m_stringValue)+1;
+						typeName[typeCount] = new char[len];
+						ogdf::strcpy(typeName[typeCount],len,nodeSon->m_stringValue);
+					}
+					else if (id(nodeSon) == widthPredefKey ){
+						if (nodeSon->m_valueType == xmlIntValue)
+							typeWidth[typeCount] = (int) nodeSon->m_intValue;
+						else if	(nodeSon->m_valueType == xmlDoubleValue)
+							typeWidth[typeCount] = nodeSon->m_doubleValue;
+					}
+					else if (id(nodeSon) == heightPredefKey ){
+						if (nodeSon->m_valueType == xmlIntValue)
+							typeHeight[typeCount] = (int) nodeSon->m_intValue;
+						else if	(nodeSon->m_valueType == xmlDoubleValue)
+							typeHeight[typeCount] = nodeSon->m_doubleValue;
+					}
+				}
+				typeCount++;
+			}
+		}
+
+	}
+	if (idCount != maxId+1)
+		return 0;
+	else
+		return 1;
+}
+
+
+/*****************************************************************************
+										read
+******************************************************************************/
+
+
+bool XmlParser::read(Graph &G)
+{
+	G.clear();
+
+	int minId, maxId, nodetypeCount;
+	XmlObject *graphObject = getNodeIdRange(minId, maxId, nodetypeCount,0);
+
+	//cout << endl << minId << " " << maxId << endl;
+	if (!graphObject) {
+		setError("missing graph key");
+		return false;
+	}
+
+	Array<double> typeWidth(0,nodetypeCount,0);
+	Array<double> typeHeight(0,nodetypeCount,0);
+	Array<char*>  typeName(nodetypeCount+1);
+	Array<char*>  idMap(maxId+1);
+	if (!makeIdMap(maxId,idMap,nodetypeCount,typeName,typeWidth,typeHeight,graphObject)) {
+		setError("wrong name identifier");
+		return false;
+	}
+
+	Array<node> mapToNode(minId,maxId,0);
+	int notDefined = minId-1; //indicates not defined id key
+	int idCount = minId;
+
+	XmlObject *son = graphObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother) {
+
+		switch(id(son)) {
+		case nodePredefKey: {
+			if (son->m_valueType != xmlListBegin) break;
+
+			// set attributes to default values
+			int vId = idCount++;
+
+			// create new node if necessary and assign attributes
+			if (mapToNode[vId] == 0)
+				mapToNode[vId] = G.newNode();
+			break;
+		}
+		case edgePredefKey:
+			if (son->m_valueType != xmlListBegin) break;
+
+			// set attributes to default values
+			int sourceId = notDefined, targetId = notDefined;
+			// read all relevant attributes
+			XmlObject *edgeSon = son->m_pFirstSon;
+			for(; edgeSon; edgeSon = edgeSon->m_pBrother) {
+				int i = 0;
+				switch(id(edgeSon)) {
+				case sourcePredefKey:
+					if (edgeSon->m_valueType != xmlStringValue) break;
+					for (i = 0; i<= maxId;i++)
+						if (!strcmp(idMap[i],edgeSon->m_stringValue))
+							sourceId = i;
+					break;
+
+				case targetPredefKey:
+					if (edgeSon->m_valueType != xmlStringValue) break;
+					for (i = 0; i<= maxId;i++)
+						if (!strcmp(idMap[i],edgeSon->m_stringValue))
+							targetId = i;
+					break;
+
+				}
+			}
+
+			// check if everything required is defined correctly
+			if (sourceId == notDefined || targetId == notDefined) {
+				setError("source or target id not defined");
+				//cout << "source or target id not defined" << endl;
+				return false;
+
+			} else if (sourceId < minId || maxId < sourceId ||
+				targetId < minId || maxId < targetId) {
+				setError("source or target id out of range");
+				//cout <<  "source or target id out of range" << endl;
+				return false;
+			}
+
+			// create adjacent nodes if necessary and new edge
+			if (mapToNode[sourceId] == 0) mapToNode[sourceId] = G.newNode();
+			if (mapToNode[targetId] == 0) mapToNode[targetId] = G.newNode();
+
+
+			G.newEdge(mapToNode[sourceId],mapToNode[targetId]);
+			break;
+		}
+	}
+
+	return true;
+}
+
+
+/*****************************************************************************
+									read
+******************************************************************************/
+
+
+bool XmlParser::read(Graph &G, GraphAttributes &AG)
+{
+	OGDF_ASSERT(&G == &(const Graph &)AG)
+
+	G.clear();
+
+	int minId, maxId, nodetypeCount;
+	XmlObject *graphObject = getNodeIdRange(minId, maxId, nodetypeCount,0);
+
+	if (!graphObject) {
+		setError("missing graph key");
+		return false;
+	}
+
+	Array<double> typeWidth(0,nodetypeCount,0);
+	Array<double> typeHeight(0,nodetypeCount,0);
+	Array<char*>  typeName(nodetypeCount+1);
+	Array<char*>  idMap(maxId+1);
+	if (!makeIdMap(maxId,idMap,nodetypeCount,typeName,typeWidth,typeHeight,graphObject)) {
+		setError("wrong name identifier");
+		closeLabels(idMap,typeName);
+		return false;
+	}
+	Array<node> mapToNode(minId,maxId,0);
+	int notDefined = minId-1; //indicates not defined id key
+	int idCount = minId;
+
+	DPolyline bends;
+	String label;
+
+	XmlObject *son = graphObject->m_pFirstSon;
+	for(; son; son = son->m_pBrother) {
+
+		switch(id(son)) {
+		case nodePredefKey:
+		{
+			if (son->m_valueType != xmlListBegin) break;
+
+			// set attributes to default values
+			int vId = idCount++;;
+			double x = 0, y = 0, w = 0, h = 0;
+			bool typeDefined = 0;
+			// read all relevant attributes
+
+			XmlObject *graphicsObject = son->m_pFirstSon;
+			for(; graphicsObject; graphicsObject = graphicsObject->m_pBrother)
+			{
+				switch(id(graphicsObject))
+				{
+					case namePredefKey:
+						if (graphicsObject->m_valueType == xmlStringValue)
+							label = graphicsObject->m_stringValue;
+						break;
+					case xPredefKey:
+						if(graphicsObject->m_valueType == xmlDoubleValue)
+							x = graphicsObject->m_doubleValue;
+						else if (graphicsObject->m_valueType == xmlIntValue)
+							x = (int) graphicsObject->m_intValue;
+						break;
+					case yPredefKey:
+						if(graphicsObject->m_valueType == xmlDoubleValue)
+							y = graphicsObject->m_doubleValue;
+						else if (graphicsObject->m_valueType == xmlIntValue)
+							y = (int) graphicsObject->m_intValue;
+						break;
+					case wPredefKey:
+						if (!typeDefined)
+						{
+							if(graphicsObject->m_valueType == xmlDoubleValue)
+								w = graphicsObject->m_doubleValue;
+							else if (graphicsObject->m_valueType == xmlIntValue)
+								w = (int) graphicsObject->m_intValue;
+						}
+						break;
+					case hPredefKey:
+						if (!typeDefined)
+						{
+							if(graphicsObject->m_valueType == xmlDoubleValue)
+								h = graphicsObject->m_doubleValue;
+							else if (graphicsObject->m_valueType == xmlIntValue)
+								h = (int) graphicsObject->m_intValue;
+						}
+						break;
+					case widthPredefKey:
+						if (!typeDefined)
+						{
+							if(graphicsObject->m_valueType == xmlDoubleValue)
+								w = graphicsObject->m_doubleValue;
+							else if (graphicsObject->m_valueType == xmlIntValue)
+								w = (int) graphicsObject->m_intValue;
+						}
+						break;
+					case heightPredefKey:
+						if (!typeDefined)
+						{
+							if(graphicsObject->m_valueType == xmlDoubleValue)
+								h = graphicsObject->m_doubleValue;
+							else if (graphicsObject->m_valueType == xmlIntValue)
+								h = (int) graphicsObject->m_intValue;
+						}
+						break;
+					case typePredefKey:
+						if(graphicsObject->m_valueType == xmlStringValue)
+						{
+							int i = 0;
+							for (;i <= nodetypeCount && strcmp(typeName[i],graphicsObject->m_stringValue);i++);
+							if (i <= nodetypeCount)
+							{
+								w = typeWidth[i];
+								h = typeHeight[i];
+								typeDefined = 1;
+							}
+						}
+						break;
+
+
+					case positionPredefKey:
+					{
+						if (graphicsObject->m_valueType != xmlListBegin) break;
+
+
+						XmlObject *graphicsObjectElement = graphicsObject->m_pFirstSon;
+						for(; graphicsObjectElement; graphicsObjectElement = graphicsObjectElement->m_pBrother)
+						{
+							switch(id(graphicsObjectElement))
+							{
+								case xPredefKey:
+									if(graphicsObjectElement->m_valueType == xmlDoubleValue)
+										x = graphicsObjectElement->m_doubleValue;
+									else if (graphicsObjectElement->m_valueType == xmlIntValue)
+										x = (int) graphicsObjectElement->m_intValue;
+									break;
+								case yPredefKey:
+									if(graphicsObjectElement->m_valueType == xmlDoubleValue)
+										y = graphicsObjectElement->m_doubleValue;
+									else if (graphicsObjectElement->m_valueType == xmlIntValue)
+										y = (int) graphicsObjectElement->m_intValue;
+									break;
+							}// switch(id(graphicsObjectElement))
+						}// for(; graphicsObjectElement; graphicsObjectElement = graphicsObjectElement->m_pBrother)
+						break;
+					}// case positionPredefKey:
+					case sizePredefKey:
+					{
+						if (graphicsObject->m_valueType != xmlListBegin) break;
+
+
+						XmlObject *graphicsObjectElement = graphicsObject->m_pFirstSon;
+						for(; graphicsObjectElement; graphicsObjectElement = graphicsObjectElement->m_pBrother)
+						{
+							switch(id(graphicsObjectElement))
+							{
+								case wPredefKey:
+									if (!typeDefined)
+									{
+										if(graphicsObjectElement->m_valueType == xmlDoubleValue)
+											w = graphicsObjectElement->m_doubleValue;
+										else if (graphicsObjectElement->m_valueType == xmlIntValue)
+											w = (int) graphicsObjectElement->m_intValue;
+									}
+									break;
+								case hPredefKey:
+									if (!typeDefined)
+									{
+										if(graphicsObjectElement->m_valueType == xmlDoubleValue)
+											h = graphicsObjectElement->m_doubleValue;
+										else if (graphicsObjectElement->m_valueType == xmlIntValue)
+											h = (int) graphicsObjectElement->m_intValue;
+									}
+									break;
+								case widthPredefKey:
+									if (!typeDefined)
+									{
+										if(graphicsObjectElement->m_valueType == xmlDoubleValue)
+											w = graphicsObjectElement->m_doubleValue;
+										else if (graphicsObjectElement->m_valueType == xmlIntValue)
+											w = (int) graphicsObjectElement->m_intValue;
+									}
+									break;
+								case heightPredefKey:
+									if (!typeDefined)
+									{
+										if(graphicsObjectElement->m_valueType == xmlDoubleValue)
+											h = graphicsObjectElement->m_doubleValue;
+										else if (graphicsObjectElement->m_valueType == xmlIntValue)
+											h = (int) graphicsObjectElement->m_intValue;
+									}
+									break;
+							}// switch(id(graphicsObjectElement))
+						}// for(; graphicsObjectElement; graphicsObjectElement = graphicsObjectElement->m_pBrother)
+
+						break;
+					}// case sizePredefKey:
+
+
+
+
+				}// switch(id(graphicsObject))
+			}// for(; graphicsObject; graphicsObject = graphicsObject->m_pBrother)
+
+
+			// create new node if necessary and assign attributes
+			if (mapToNode[vId] == 0) mapToNode[vId] = G.newNode();
+			AG.x(mapToNode[vId]) = x;
+			AG.y(mapToNode[vId]) = y;
+			if (w > 0) //skip negative width
+				AG.width (mapToNode[vId]) = w;
+			if (h > 0) // skip negative height
+				AG.height(mapToNode[vId]) = h;
+			AG.labelNode(mapToNode[vId]) = label;
+			break;
+
+		}// case nodePredefKey:
+
+
+
+
+
+		case edgePredefKey:
+		{
+			if (son->m_valueType != xmlListBegin) break;
+
+			// set attributes to default values
+			int sourceId = notDefined, targetId = notDefined;
+			bool backward = false;
+			// read all relevant attributes
+			XmlObject *graphicsObject = son->m_pFirstSon;
+			for(; graphicsObject; graphicsObject = graphicsObject->m_pBrother)
+			{
+				int i = 0;
+				switch(id(graphicsObject))
+				{
+					case namePredefKey:
+						if (graphicsObject->m_valueType == xmlStringValue)
+							label = graphicsObject->m_stringValue;
+						break;
+					case sourcePredefKey:
+						if (graphicsObject->m_valueType != xmlStringValue) break;
+						for (i = 0; i<= maxId;i++)
+							if (!strcmp(idMap[i],graphicsObject->m_stringValue))
+								sourceId = i;
+						break;
+
+					case targetPredefKey:
+						if (graphicsObject->m_valueType != xmlStringValue) break;
+						for (i = 0; i<= maxId;i++)
+							if (!strcmp(idMap[i],graphicsObject->m_stringValue))
+								targetId = i;
+						break;
+					case sensePredefKey:
+						if (graphicsObject->m_valueType != xmlStringValue) break;
+							if (!strcmp("BACKWARD",graphicsObject->m_stringValue))
+								backward = true;
+					case pathPredefKey:
+					{
+						if (graphicsObject->m_valueType != xmlListBegin) break;
+						DPoint dp;
+
+						XmlObject *graphicsObjectElement = graphicsObject->m_pFirstSon;
+						for(; graphicsObjectElement; graphicsObjectElement = graphicsObjectElement->m_pBrother)
+						{
+							switch(id(graphicsObjectElement))
+							{
+								case positionPredefKey:
+								{
+									if (graphicsObjectElement->m_valueType != xmlListBegin) break;
+									DPoint dp;
+
+									XmlObject *element = graphicsObjectElement->m_pFirstSon;
+									for(; element; element = element->m_pBrother)
+									{
+										switch(id(element))
+										{
+											case xPredefKey:
+												if(element->m_valueType == xmlDoubleValue)
+													dp.m_x = element->m_doubleValue;
+												else if (element->m_valueType == xmlIntValue)
+													dp.m_x = (int) element->m_intValue;
+												break;
+											case yPredefKey:
+												if(element->m_valueType == xmlDoubleValue)
+													dp.m_y = element->m_doubleValue;
+												else if (element->m_valueType == xmlIntValue)
+													dp.m_y = (int) element->m_intValue;
+												break;
+										}// switch(id(element))
+									}// for(; element; element = element->m_pBrother)
+									bends.pushBack(dp);
+									break;
+								}// case positionPredefKey:
+							}//switch(id(graphicsObjectElement))
+						}//for(; graphicsObjectElement; graphicsObjectElement = graphicsObjectElement->m_pBrother)
+						break;
+					}// case positionPredefKey:
+/*
+					case graphicsPredefKey:
+						if (graphicsObject->m_valueType != xmlListBegin) break;
+
+						XmlObject *graphicsObject = graphicsObject->m_pFirstSon;
+						for(; graphicsObject; graphicsObject = graphicsObject->m_pBrother) {
+							if(id(graphicsObject) == LinePredefKey &&
+								graphicsObject->m_valueType == xmlListBegin)
+								readLineAttribute(graphicsObject->m_pFirstSon,bends);
+						}
+*/
+				}// switch(id(graphicsObject))
+			}// for(; graphicsObject; graphicsObject = graphicsObject->m_pBrother)
+
+			// check if everything required is defined correctly
+			if (sourceId == notDefined || targetId == notDefined)
+			{
+				setError("source or target id not defined");
+				closeLabels(idMap,typeName);
+				return false;
+
+			}
+			else if (sourceId < minId || maxId < sourceId ||
+				targetId < minId || maxId < targetId)
+			{
+				setError("source or target id out of range");
+				closeLabels(idMap,typeName);
+				return false;
+			}
+
+			// create adjacent nodes if necessary and new edge
+			if (mapToNode[sourceId] == 0) mapToNode[sourceId] = G.newNode();
+			if (mapToNode[targetId] == 0) mapToNode[targetId] = G.newNode();
+
+			edge e;
+			if (backward)
+				e = G.newEdge(mapToNode[targetId],mapToNode[sourceId]);
+			else
+				e = G.newEdge(mapToNode[sourceId],mapToNode[targetId]);
+			AG.labelEdge(e) = label;
+			AG.bends(e).conc(bends);
+			break;
+
+		}// case edgePredefKey:
+
+		}// switch(id(son)) {
+	}
+	closeLabels(idMap,typeName);
+	return true;
+}
+
+
+void XmlParser::closeLabels(Array<char*> idMap,	Array<char*>  typeName)
+{
+	int i;
+	for (i = idMap.low(); i <= idMap.high();i++)
+		if (idMap[i])
+			delete[] idMap[i];
+	for (i = typeName.low(); i <= typeName.high();i++)
+		if (typeName[i])
+			delete[] typeName[i];
+}
+
+
+void XmlParser::readLineAttribute(XmlObject *object, DPolyline &dpl)
+{
+	dpl.clear();
+	for(; object; object = object->m_pBrother) {
+		if (id(object) == pointPredefKey && object->m_valueType == xmlListBegin) {
+			DPoint dp;
+
+			XmlObject *pointObject = object->m_pFirstSon;
+			for (; pointObject; pointObject = pointObject->m_pBrother) {
+				if (pointObject->m_valueType != xmlDoubleValue) continue;
+				if (id(pointObject) == xPredefKey)
+					dp.m_x = pointObject->m_doubleValue;
+				else if (id(pointObject) == yPredefKey)
+					dp.m_y = pointObject->m_doubleValue;
+			}
+
+			dpl.pushBack(dp);
+		}
+	}
+}
+
+
+void XmlParser::setError(const char *errorString)
+{
+	m_error = true;
+	m_errorString = errorString;
+}
+
+
+
+void XmlParser::indent(ostream &os, int d)
+{
+	for(int i = 1; i <= d; ++i)
+		os << " ";
+}
+
+/*
+void XmlParser::output(ostream &os, XmlObject *object, int d)
+{
+	for(; object; object = object->m_pBrother) {
+		indent(os,d); os << object->m_key->key();
+
+		switch(object->m_valueType) {
+		case xmlIntValue:
+			os << " " << object->m_intValue << "\n";
+			break;
+
+		case xmlDoubleValue:
+			os << " " << object->m_doubleValue << "\n";
+			break;
+
+		case xmlStringValue:
+			os << " \"" << object->m_stringValue << "\"\n";
+			break;
+
+		case xmlListBegin:
+			os << "\n";
+			output(os, object->m_pFirstSon, d+2);
+			break;
+		}
+	}
+}
+*/
+
+} // end namespace ogdf
diff --git a/ogdf/fileformats/XmlParser.h b/ogdf/fileformats/XmlParser.h
new file mode 100644
index 0000000..73aedc9
--- /dev/null
+++ b/ogdf/fileformats/XmlParser.h
@@ -0,0 +1,175 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class XmlParser.
+ *
+ * \author Sebastian Leipert and Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_XML_PARSER_H
+#define OGDF_XML_PARSER_H
+
+
+#include "../basic/Hashing.h"
+#include "../basic/String.h"
+#include "../basic/GraphAttributes.h"
+#include "XmlObject.h"
+#include "../basic/SList.h"
+
+
+namespace ogdf {
+
+
+
+//---------------------------------------------------------
+// XmlParser
+// reads XML file and constructs XML parse tree
+//---------------------------------------------------------
+class OGDF_EXPORT XmlParser {
+	Hashing<String,int> m_hashTable; // hash table for tags
+	int m_num;
+
+	istream *m_is;
+	bool m_error;
+	String m_errorString;
+
+	char *m_rLineBuffer, *m_lineBuffer, *m_pCurrent, *m_pStore, m_cStore;
+
+	int         m_intSymbol;    // integer attribute
+	double      m_doubleSymbol; // double attribute
+	const char *m_stringSymbol; // string attribute
+	char	   *m_keyName;		// Tag name
+	XmlKey		m_keySymbol;	// Tag name and Attribute Name in Hash Table
+	String		m_longString;
+	bool		m_eoTag;		// end of Tag recognized
+
+	XmlObject *m_objectTree; // root node of XML parse tree
+
+	bool m_doCheck;
+
+	SList<char*> m_objectBody;
+
+public:
+	// predefined id constants for all used keys
+	enum PredefinedKey { idPredefKey = 0, labelPredefKey, CreatorPredefKey,
+		namePredefKey, graphPredefKey, versionPredefKey, directedPredefKey,
+		nodePredefKey, edgePredefKey, graphicsPredefKey, xPredefKey,
+		yPredefKey, wPredefKey, hPredefKey, nodetypePredefKey, edgetypePredefKey,
+		typePredefKey, widthPredefKey, heightPredefKey, sizePredefKey,
+		positionPredefKey, pathPredefKey,
+		sourcePredefKey, targetPredefKey, sensePredefKey, arrowPredefKey, LinePredefKey,
+		pointPredefKey, NEXTPREDEFKEY };
+
+	// construction: creates object tree
+	// sets m_error flag if an error occured
+	XmlParser(const char *fileName, bool doCheck = false);
+	XmlParser(istream &is, bool doCheck = false);
+
+	// destruction: destroys object tree
+	~XmlParser();
+
+	// returns root object
+	XmlObject *root() { return m_objectTree; }
+
+	// id of a string in hash table; -1 if not contained
+	int getId(const String &tag) const {
+		HashElement<String,int> *it = m_hashTable.lookup(tag);
+		return (it != 0) ? it->info() : -1;
+	}
+
+	// returns id of object
+	int id(XmlObject *object) const { return object->m_key->info(); }
+
+	// true <=> an error in XML files has been detected
+	bool error() const { return m_error; }
+	// returns error message
+	const String &errorString() const { return m_errorString; }
+
+	// creates graph from XML parse tree
+	bool read(Graph &G);
+	// creates attributed graph from XML parse tree
+	bool read(Graph &G, GraphAttributes &AG);
+
+private:
+	void createObjectTree(istream &is, bool doCheck);
+	void initPredefinedKeys();
+	void setError(const char *errorString);
+
+	XmlObject *parseList(XmlObjectType closingKey, XmlObjectType errorKey, const char *objectBodyName);
+	XmlObjectType getNextSymbol();
+	bool getLine();
+
+	XmlKey hashString(const String &str);
+
+	XmlObject *getNodeIdRange(
+		int &minId,
+		int &maxId,
+		int &nodetypeCount,
+		XmlObject *graphObject);
+
+	bool makeIdMap(
+		int maxId,
+		Array<char*> &idMap,
+		int nodetypeCount,
+		Array<char*> & typeName,
+		Array<double> &typeWidth,
+		Array<double> &typeHeight,
+		XmlObject *graphObject);
+
+	void closeLabels(Array<char*> idMap, Array<char*>  typeName);
+
+	void readLineAttribute(XmlObject *object, DPolyline &dpl);
+
+	void destroyObjectList(XmlObject *object);
+
+	void indent(ostream &os, int d);
+	void output(ostream &os, XmlObject *object, int d);
+
+};
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/internal/basic/MallocMemoryAllocator.h b/ogdf/internal/basic/MallocMemoryAllocator.h
new file mode 100644
index 0000000..315d474
--- /dev/null
+++ b/ogdf/internal/basic/MallocMemoryAllocator.h
@@ -0,0 +1,118 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of memory manager for allocating small
+ *        pieces of memory
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_MALLOC_MEMORY_ALLOCATOR_H
+#define OGDF_MALLOC_MEMORY_ALLOCATOR_H
+
+
+namespace ogdf {
+
+//! Implements a simple memory manager using \c malloc() and \c free().
+class OGDF_EXPORT MallocMemoryAllocator
+{
+	struct MemElem { MemElem *m_next; };
+	typedef MemElem *MemElemPtr;
+
+public:
+
+	MallocMemoryAllocator() { }
+	~MallocMemoryAllocator() { }
+
+
+	static void init() { }
+	static void initThread() { }
+	static void cleanup() { }
+
+	static bool checkSize(size_t /* nBytes */) { return true; }
+
+	//! Allocates memory of size \a nBytes.
+	static void *allocate(size_t nBytes, const char *, int) { return allocate(nBytes); }
+
+	//! Allocates memory of size \a nBytes.
+	static void *allocate(size_t nBytes)
+	{
+		void *p = malloc(nBytes);
+		if (OGDF_UNLIKELY(p == 0)) OGDF_THROW(ogdf::InsufficientMemoryException);
+		return p;
+	}
+
+
+	//! Deallocates memory at address \a p which is of size \a nBytes.
+	static void deallocate(size_t /* nBytes */, void *p) { free(p); }
+
+	//! Deallocate a complete list starting at \a pHead and ending at \a pTail.
+	/**
+	 * The elements are assumed to be chained using the first word of each element and
+	 * elements are of size \a nBytes.
+	 */
+	static void deallocateList(size_t /* nBytes */, void *pHead, void *pTail)
+	{
+		MemElemPtr q, pStop = MemElemPtr(pTail)->m_next;
+		while (pHead != pStop) {
+			q = MemElemPtr(pHead)->m_next;
+			free(pHead);
+			pHead = q;
+		}
+	}
+
+	static void flushPool() { }
+	static void flushPool(__uint16 /* nBytes */) { }
+
+	//! Always returns 0, since no blocks are allocated.
+	static size_t memoryAllocatedInBlocks() { return 0; }
+
+	//! Always returns 0, since no blocks are allocated.
+	static size_t memoryInFreelist() { return 0; }
+};
+
+} // namespace ogdf
+
+#endif
diff --git a/ogdf/internal/basic/PoolMemoryAllocator.cpp b/ogdf/internal/basic/PoolMemoryAllocator.cpp
new file mode 100644
index 0000000..e42ad87
--- /dev/null
+++ b/ogdf/internal/basic/PoolMemoryAllocator.cpp
@@ -0,0 +1,448 @@
+/*
+ * $Revision: 2549 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-04 23:09:19 +0200 (Mi, 04. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of memory manager for more efficiently
+ *        allocating small pieces of memory
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "../../basic/basic.h"
+
+
+namespace ogdf {
+
+
+struct PoolMemoryAllocator::PoolVector
+{
+	MemElemPtr m_pool[ePoolVectorLength];
+	PoolVector *m_prev;
+};
+
+struct PoolMemoryAllocator::PoolElement
+{
+	PoolVector *m_currentVector;
+	MemElemPtr m_restHead;
+	MemElemPtr m_restTail;
+	__int16 m_index;
+	__int16 m_restCount;
+};
+
+struct PoolMemoryAllocator::BlockChain
+{
+	char m_fill[eBlockSize-sizeof(void*)];
+	BlockChain *m_next;
+};
+
+
+PoolMemoryAllocator::PoolElement PoolMemoryAllocator::s_pool[eTableSize];
+PoolMemoryAllocator::MemElemPtr PoolMemoryAllocator::s_freeVectors;
+PoolMemoryAllocator::BlockChainPtr PoolMemoryAllocator::s_blocks;
+
+#ifdef OGDF_MEMORY_POOL_NTS
+PoolMemoryAllocator::MemElemPtr PoolMemoryAllocator::s_tp[eTableSize];
+#elif defined(OGDF_NO_COMPILER_TLS)
+CriticalSection *PoolMemoryAllocator::s_criticalSection;
+pthread_key_t PoolMemoryAllocator::s_tpKey;
+#else
+CriticalSection *PoolMemoryAllocator::s_criticalSection;
+OGDF_DECL_THREAD PoolMemoryAllocator::MemElemPtr PoolMemoryAllocator::s_tp[eTableSize];
+#endif
+
+
+void PoolMemoryAllocator::init()
+{
+#ifndef OGDF_MEMORY_POOL_NTS
+#ifdef OGDF_NO_COMPILER_TLS
+	pthread_key_create(&s_tpKey,NULL);
+#endif
+	s_criticalSection = new CriticalSection(500);
+#endif
+	initThread();
+}
+
+
+void PoolMemoryAllocator::initThread() {
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+		pthread_setspecific(s_tpKey,calloc(eTableSize,sizeof(MemElemPtr)));
+#endif
+}
+
+
+void PoolMemoryAllocator::cleanup()
+{
+	BlockChainPtr p = s_blocks;
+	while(p != 0) {
+		BlockChainPtr pNext = p->m_next;
+		free(p);
+		p = pNext;
+	}
+
+#ifndef OGDF_MEMORY_POOL_NTS
+#ifdef OGDF_NO_COMPILER_TLS
+	pthread_key_delete(s_tpKey);
+#endif
+	delete s_criticalSection;
+#endif
+}
+
+
+bool PoolMemoryAllocator::checkSize(size_t nBytes) {
+	return nBytes < eTableSize;
+}
+
+
+void *PoolMemoryAllocator::allocate(size_t nBytes) {
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+	MemElemPtr *pFreeBytes = ((MemElemPtr*)pthread_getspecific(s_tpKey))+nBytes;
+#else
+	MemElemPtr *pFreeBytes = s_tp+nBytes;
+#endif
+	if (OGDF_LIKELY(*pFreeBytes != 0)) {
+		MemElemPtr p = *pFreeBytes;
+		*pFreeBytes = p->m_next;
+		return p;
+	} else {
+		return fillPool(*pFreeBytes,__uint16(nBytes));
+	}
+}
+
+
+void PoolMemoryAllocator::deallocate(size_t nBytes, void *p) {
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+	MemElemPtr *pFreeBytes = ((MemElemPtr*)pthread_getspecific(s_tpKey))+nBytes;
+#else
+	MemElemPtr *pFreeBytes = s_tp+nBytes;
+#endif
+	MemElemPtr(p)->m_next = *pFreeBytes;
+	*pFreeBytes = MemElemPtr(p);
+}
+
+
+void PoolMemoryAllocator::deallocateList(size_t nBytes, void *pHead, void *pTail) {
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+	MemElemPtr *pFreeBytes = ((MemElemPtr*)pthread_getspecific(s_tpKey))+nBytes;
+#else
+	MemElemPtr *pFreeBytes = s_tp+nBytes;
+#endif
+	MemElemPtr(pTail)->m_next = *pFreeBytes;
+	*pFreeBytes = MemElemPtr(pHead);
+}
+
+
+PoolMemoryAllocator::MemElemExPtr
+PoolMemoryAllocator::collectGroups(
+	__uint16 nBytes,
+	MemElemPtr &pRestHead,
+	MemElemPtr &pRestTail,
+	int &nRest)
+{
+	int n = slicesPerBlock(nBytes);
+	pRestHead = 0;
+
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+	MemElemPtr p = ((MemElemPtr*)pthread_getspecific(s_tpKey))[nBytes];
+#else
+	MemElemPtr p = s_tp[nBytes];
+#endif
+	MemElemExPtr pStart = 0, pLast = 0;
+	while(p != 0)
+	{
+		int i = 0;
+		MemElemPtr pHead = p, pTail;
+		do {
+			pTail = p;
+			p = p->m_next;
+		} while(++i < n && p != 0);
+
+		pTail->m_next = 0;
+		if(i == n) {
+			if(pStart == 0)
+				pStart = MemElemExPtr(pHead);
+			else
+				pLast->m_down = MemElemExPtr(pHead);
+			pLast = MemElemExPtr(pHead);
+
+		} else {
+			pRestHead = pHead;
+			pRestTail = pTail;
+			nRest = i;
+		}
+	}
+	if (pLast)
+		pLast->m_down = 0;
+
+	return pStart;
+}
+
+
+void PoolMemoryAllocator::flushPoolSmall(__uint16 nBytes)
+{
+    int n = slicesPerBlock(nBytes < eMinBytes ? int(eMinBytes) : int(nBytes));
+	PoolElement &pe = s_pool[nBytes];
+
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+	MemElemPtr p = ((MemElemPtr*)pthread_getspecific(s_tpKey))[nBytes];
+#else
+	MemElemPtr p = s_tp[nBytes];
+#endif
+	if(pe.m_restHead != 0) {
+		pe.m_restTail->m_next = p;
+		p = pe.m_restHead;
+		pe.m_restHead = 0;
+	}
+
+	while(p != 0)
+	{
+		int i = 0;
+		MemElemPtr pHead = p, pTail;
+		do {
+			pTail = p;
+			p = p->m_next;
+		} while(++i < n && p != 0);
+
+		if(i == n) {
+			incVectorSlot(pe);
+			pe.m_currentVector->m_pool[pe.m_index] = pHead;
+
+		} else {
+			pe.m_restHead = pHead;
+			pe.m_restTail = pTail;
+			pe.m_restCount = i;
+		}
+	}
+}
+
+
+void PoolMemoryAllocator::incVectorSlot(PoolElement &pe)
+{
+	if(pe.m_currentVector == 0 || ++pe.m_index == ePoolVectorLength) {
+		if(s_freeVectors == 0)
+			s_freeVectors = allocateBlock(sizeof(PoolVector));
+
+		PoolVector *pv = (PoolVector *)s_freeVectors;
+		s_freeVectors = MemElemPtr(pv)->m_next;
+		pe.m_currentVector = pv;
+		pe.m_index = 0;
+	}
+}
+
+
+void PoolMemoryAllocator::flushPool(__uint16 nBytes)
+{
+#ifndef OGDF_MEMORY_POOL_NTS
+	if(nBytes >= sizeof(MemElemEx)) {
+		MemElemPtr pRestHead, pRestTail;
+		int nRest;
+		MemElemExPtr pStart = collectGroups(nBytes, pRestHead, pRestTail, nRest);
+
+		s_criticalSection->enter();
+		PoolElement &pe = s_pool[nBytes];
+
+		while(pStart != 0) {
+			incVectorSlot(pe);
+			pe.m_currentVector->m_pool[pe.m_index] = MemElemPtr(pStart);
+			pStart = pStart->m_down;
+		}
+		if(pRestHead != 0) {
+			int n = slicesPerBlock(nBytes);
+			pRestTail->m_next = pe.m_restTail;
+			int nTotal = nRest + pe.m_restCount;
+			if(nTotal >= n) {
+				MemElemPtr p = pe.m_restHead;
+				int i = n-nRest;
+				while(--i > 0)
+					p = p->m_next;
+				pe.m_restHead = p->m_next;
+				pe.m_restCount = nTotal-n;
+				incVectorSlot(pe);
+				pe.m_currentVector->m_pool[pe.m_index] = pRestHead;
+			} else {
+				pe.m_restHead = pRestHead;
+				pe.m_restCount = nTotal;
+			}
+		}
+		s_criticalSection->leave();
+
+	} else {
+		s_criticalSection->enter();
+		flushPoolSmall(nBytes);
+		s_criticalSection->leave();
+	}
+#endif
+}
+
+
+void PoolMemoryAllocator::flushPool()
+{
+#ifndef OGDF_MEMORY_POOL_NTS
+	for(__uint16 nBytes = 1; nBytes < eTableSize; ++nBytes) {
+#ifdef OGDF_NO_COMPILER_TLS
+	MemElemPtr p = ((MemElemPtr*)pthread_getspecific(s_tpKey))[nBytes];
+#else
+	MemElemPtr p = s_tp[nBytes];
+#endif
+		if(p != 0)
+			flushPool(nBytes);
+	}
+#endif
+}
+
+
+void *PoolMemoryAllocator::fillPool(MemElemPtr &pFreeBytes, __uint16 nBytes)
+{
+#ifdef OGDF_MEMORY_POOL_NTS
+	pFreeBytes = allocateBlock(nBytes);
+#else
+
+	s_criticalSection->enter();
+
+	PoolElement &pe = s_pool[nBytes];
+	if(pe.m_currentVector != 0) {
+		pFreeBytes = pe.m_currentVector->m_pool[pe.m_index];
+		if(--pe.m_index < 0) {
+			PoolVector *pV = pe.m_currentVector;
+			pe.m_currentVector = pV->m_prev;
+			pe.m_index = ePoolVectorLength-1;
+			MemElemPtr(pV)->m_next = s_freeVectors;
+			s_freeVectors = MemElemPtr(pV);
+		}
+		s_criticalSection->leave();
+
+	} else {
+		s_criticalSection->leave();
+		pFreeBytes = allocateBlock(nBytes);
+	}
+#endif
+
+	MemElemPtr p = pFreeBytes;
+	pFreeBytes = p->m_next;
+	return p;
+}
+
+
+// __asm __volatile ("":::"memory")      GLIBC
+
+
+PoolMemoryAllocator::MemElemPtr
+PoolMemoryAllocator::allocateBlock(__uint16 nBytes)
+{
+	if(nBytes < eMinBytes)
+		nBytes = eMinBytes;
+
+	MemElemPtr pBlock = (MemElemPtr) malloc(eBlockSize);
+
+	// we altogether create nSlices slices
+	int nWords;
+	int nSlices = slicesPerBlock(nBytes,nWords);
+
+	MemElemPtr pHead = MemElemPtr(pBlock);
+	BlockChainPtr(pBlock)->m_next = s_blocks;
+	s_blocks = BlockChainPtr(pBlock);
+
+	do {
+		pBlock = pBlock->m_next = pBlock+nWords;
+	} while(--nSlices > 1);
+	MemElemPtr(pBlock)->m_next = 0;
+
+	return pHead;
+}
+
+
+size_t PoolMemoryAllocator::memoryAllocatedInBlocks()
+{
+#ifndef OGDF_MEMORY_POOL_NTS
+	s_criticalSection->enter();
+#endif
+
+	size_t nBlocks = 0;
+	for (BlockChainPtr p = s_blocks; p != 0; p = p->m_next)
+		++nBlocks;
+
+#ifndef OGDF_MEMORY_POOL_NTS
+	s_criticalSection->leave();
+#endif
+
+	return nBlocks * eBlockSize;
+}
+
+
+size_t PoolMemoryAllocator::memoryInGlobalFreeList()
+{
+#ifndef OGDF_MEMORY_POOL_NTS
+	s_criticalSection->enter();
+#endif
+
+	size_t bytesFree = 0;
+	for (int sz = 1; sz < eTableSize; ++sz)
+	{
+		const PoolElement &pe = s_pool[sz];
+		PoolVector *pv = pe.m_currentVector;
+		for(; pv != 0; pv = pv->m_prev)
+			bytesFree += ePoolVectorLength*sz;
+		if(pe.m_restHead != 0)
+			bytesFree += pe.m_restCount;
+	}
+
+#ifndef OGDF_MEMORY_POOL_NTS
+	s_criticalSection->leave();
+#endif
+
+	return bytesFree;
+}
+
+
+size_t PoolMemoryAllocator::memoryInThreadFreeList()
+{
+	size_t bytesFree = 0;
+	for (int sz = 1; sz < eTableSize; ++sz)
+	{
+#if !defined(OGDF_MEMORY_POOL_NTS) && defined(OGDF_NO_COMPILER_TLS)
+		MemElemPtr p = ((MemElemPtr*)pthread_getspecific(s_tpKey))[sz];
+#else
+		MemElemPtr p = s_tp[sz];
+#endif
+		for(; p != 0; p = p->m_next)
+			bytesFree += sz;
+	}
+
+	return bytesFree;
+}
+
+
+}
diff --git a/ogdf/internal/basic/PoolMemoryAllocator.h b/ogdf/internal/basic/PoolMemoryAllocator.h
new file mode 100644
index 0000000..b112d67
--- /dev/null
+++ b/ogdf/internal/basic/PoolMemoryAllocator.h
@@ -0,0 +1,191 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of memory manager for allocating small
+ *        pieces of memory
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_POOL_MEMORY_ALLOCATOR_H
+#define OGDF_POOL_MEMORY_ALLOCATOR_H
+
+#ifndef OGDF_MEMORY_POOL_NTS
+#include "../../basic/CriticalSection.h"
+#else
+#include "../../basic/System.h"
+#endif
+
+
+namespace ogdf {
+
+
+//! The class \a PoolAllocator represents ogdf's pool memory allocator.
+/**
+ * <H3>Usage:</H3>
+ *
+ * Adding the macro \c #OGDF_NEW_DELETE in a class declaration overloads
+ * new and delete operators of that class such that they use this
+ * memory allocator. This is useful if the size of a class is less than
+ * \c PoolAllocator::eTableSize bytes.
+ *
+ * Another benefit from the OGDF memory-manager is that it throws an
+ * InsufficientMemoryException if no more memory is available. Hence
+ * it is legal to omit checking if new returned 0 as long as stack-
+ * unwinding frees all memory allocated so far.
+ * It is also possible to make the usual \c new operator behave the same
+ * way (throwing an InsufficientMemoryException) by defining the
+ * macro \c #OGDF_MALLOC_NEW_DELETE in a class declaration.
+ */
+
+class PoolMemoryAllocator
+{
+	struct MemElem {
+		MemElem *m_next;
+	};
+	struct MemElemEx {
+		MemElemEx *m_next;
+		MemElemEx *m_down;
+	};
+
+	typedef MemElem   *MemElemPtr;
+	typedef MemElemEx *MemElemExPtr;
+
+	struct PoolVector;
+	struct PoolElement;
+	struct BlockChain;
+	typedef BlockChain *BlockChainPtr;
+
+public:
+	enum {
+		eMinBytes = sizeof(MemElemPtr),
+		eTableSize = 256,
+		eBlockSize = 8192,
+		ePoolVectorLength = 15
+	};
+
+	PoolMemoryAllocator() { }
+	~PoolMemoryAllocator() { }
+
+	//! Initializes the memory manager.
+	static OGDF_EXPORT void init();
+
+	static OGDF_EXPORT void initThread();
+
+	//! Frees all memory blocks allocated by the memory manager.
+	static OGDF_EXPORT void cleanup();
+
+	static OGDF_EXPORT bool checkSize(size_t nBytes);
+
+	//! Allocates memory of size \a nBytes.
+	static OGDF_EXPORT void *allocate(size_t nBytes);
+
+	//! Deallocates memory at address \a p which is of size \a nBytes.
+	static OGDF_EXPORT void deallocate(size_t nBytes, void *p);
+
+	//! Deallocate a complete list starting at \a pHead and ending at \a pTail.
+	/**
+	 * The elements are assumed to be chained using the first word of each element and
+	 * elements are of size \a nBytes. This is much more efficient the deallocating
+	 * each element separately, since the whole chain can be concatenated with the
+	 * free list, requiring only constant effort.
+	 */
+	static OGDF_EXPORT void deallocateList(size_t nBytes, void *pHead, void *pTail);
+
+	static OGDF_EXPORT void flushPool();
+	static OGDF_EXPORT void flushPool(__uint16 nBytes);
+
+	//! Returns the total amount of memory (in bytes) allocated from the system.
+	static OGDF_EXPORT size_t memoryAllocatedInBlocks();
+
+	//! Returns the total amount of memory (in bytes) available in the global free lists.
+	static OGDF_EXPORT size_t memoryInGlobalFreeList();
+
+	//! Returns the total amount of memory (in bytes) available in the thread's free lists.
+	static OGDF_EXPORT size_t memoryInThreadFreeList();
+
+private:
+	static int slicesPerBlock(__uint16 nBytes) {
+		int nWords;
+		return slicesPerBlock(nBytes,nWords);
+	}
+
+	static int slicesPerBlock(__uint16 nBytes, int &nWords) {
+		nWords = (nBytes+sizeof(MemElemPtr)-1)/sizeof(MemElemPtr);
+		return (eBlockSize-sizeof(MemElemPtr))/(nWords*sizeof(MemElemPtr));
+	}
+
+	static void incVectorSlot(PoolElement &pe);
+
+	static void flushPoolSmall(__uint16 nBytes);
+	static MemElemExPtr collectGroups(
+		__uint16 nBytes,
+		MemElemPtr &pRestHead,
+		MemElemPtr &pRestTail,
+		int &nRest);
+
+	static void *fillPool(MemElemPtr &pFreeBytes, __uint16 nBytes);
+
+	static MemElemPtr allocateBlock(__uint16 nBytes);
+
+	static PoolElement s_pool[eTableSize];
+	static MemElemPtr s_freeVectors;
+	static BlockChainPtr s_blocks;
+
+#ifdef OGDF_MEMORY_POOL_NTS
+	static MemElemPtr s_tp[eTableSize];
+#elif defined(OGDF_NO_COMPILER_TLS)
+	static CriticalSection *s_criticalSection;
+	static pthread_key_t s_tpKey;
+#else
+	static CriticalSection *s_criticalSection;
+	static OGDF_DECL_THREAD MemElemPtr s_tp[eTableSize];
+#endif
+};
+
+
+}
+
+#endif
diff --git a/ogdf/internal/basic/list_templates.h b/ogdf/internal/basic/list_templates.h
new file mode 100644
index 0000000..89ee80e
--- /dev/null
+++ b/ogdf/internal/basic/list_templates.h
@@ -0,0 +1,101 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of algorithms as templates working with
+ *        different list types
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_LIST_TEMPLATES_H
+#define OGDF_LIST_TEMPLATES_H
+
+
+#include "../../basic/Array.h"
+
+
+namespace ogdf {
+
+// sorts list L using quicksort
+template<class LIST>
+void quicksortTemplate(LIST &L)
+{
+	const int n = L.size();
+	Array<typename LIST::value_type> A(n);
+
+	int i = 0;
+	typename LIST::iterator it;
+	for (it = L.begin(); it.valid(); ++it)
+		A[i++] = *it;
+
+	A.quicksort();
+
+	for (i = 0, it = L.begin(); i < n; i++)
+		*it++ = A[i];
+}
+
+
+// sorts list L using quicksort and compare element comp
+template<class LIST, class COMPARER>
+void quicksortTemplate(LIST &L, COMPARER &comp)
+{
+	const int n = L.size();
+	Array<typename LIST::value_type> A(n);
+
+	int i = 0;
+	typename LIST::iterator it;
+	for (it = L.begin(); it.valid(); ++it)
+		A[i++] = *it;
+
+	A.quicksort(comp);
+
+	for (i = 0, it = L.begin(); i < n; i++)
+		*it++ = A[i];
+}
+
+
+} // end namespace ogdf
+
+#endif
diff --git a/ogdf/internal/energybased/EdgeAttributes.cpp b/ogdf/internal/energybased/EdgeAttributes.cpp
new file mode 100644
index 0000000..9995406
--- /dev/null
+++ b/ogdf/internal/energybased/EdgeAttributes.cpp
@@ -0,0 +1,87 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class EdgeAttributes.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "EdgeAttributes.h"
+
+
+namespace ogdf {
+
+ostream &operator<< (ostream & output, const EdgeAttributes & A)
+{
+	output <<"length: "<< A.length;
+	output<<"  index of original edge ";
+	if (A.e_original == NULL)
+		output <<"NULL";
+	else output<<A.e_original->index();
+	output<<"  index of subgraph edge ";
+	if (A.e_subgraph == NULL)
+		output <<"NULL";
+	if (A.moon_edge)
+		output<<" is moon edge ";
+	else
+		output <<" no moon edge ";
+	if (A.extra_edge)
+		output<<" is extra edge ";
+	else
+		output <<" no extra edge ";
+	return output;
+}
+
+
+istream &operator>> (istream & input,  EdgeAttributes & A)
+{
+	input >> A.length;
+	return input;
+}
+
+
+EdgeAttributes::EdgeAttributes()
+{
+	length = 0;
+	e_original = NULL;
+	e_subgraph = NULL;
+	moon_edge = false;
+	extra_edge = false;
+}
+
+}//namespace ogdf
diff --git a/ogdf/internal/energybased/EdgeAttributes.h b/ogdf/internal/energybased/EdgeAttributes.h
new file mode 100644
index 0000000..5bf532e
--- /dev/null
+++ b/ogdf/internal/energybased/EdgeAttributes.h
@@ -0,0 +1,121 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class EdgeAttributes.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_EDGE_ATTRIBUTES_H
+#define OGDF_EDGE_ATTRIBUTES_H
+
+#include "../../basic/geometry.h"
+#include "../../basic/Graph.h"
+
+namespace ogdf {
+
+
+class OGDF_EXPORT EdgeAttributes
+{
+	//helping data structure that stores the graphical attributes of an edge
+	//that are needed for the force-directed  algorithms.
+
+	//outputstream for EdgeAttributes
+	friend ostream &operator<< (ostream &,const EdgeAttributes &);
+
+	//inputstream for EdgeAttributes
+	friend istream &operator>> (istream &,EdgeAttributes &);
+
+public:
+
+	EdgeAttributes();       //constructor
+	~EdgeAttributes() { }   //destructor
+
+	void set_EdgeAttributes(double l, edge e_orig, edge e_sub)
+	{
+		length = l;
+		e_original = e_orig;
+		e_subgraph = e_sub;
+	}
+
+	void set_length(double l) { length = l; }
+	double get_length() const { return length; }
+
+
+	//needed for the divide et impera step in FMMM
+
+	void set_original_edge (edge e) { e_original = e; }
+	void set_subgraph_edge (edge e) { e_subgraph = e; }
+	edge get_original_edge() const { return e_original; }
+	edge get_subgraph_edge() const { return e_subgraph; }
+
+	//needed for the preprocessing step in FMMM (set/get_original_edge are needed, too)
+
+	void set_copy_edge (edge e) {e_subgraph = e;}
+	edge get_copy_edge() const {return e_subgraph;}
+
+	//needed for multilevel step
+
+	void set_higher_level_edge (edge e) { e_subgraph = e; }
+	edge get_higher_level_edge() const { return e_subgraph; }
+	bool is_moon_edge() const { return moon_edge; }
+	void make_moon_edge() { moon_edge = true; }
+	bool is_extra_edge() const { return extra_edge; }
+	void make_extra_edge() { extra_edge = true; }
+	void mark_as_normal_edge() { extra_edge = false; }
+	void init_mult_values() { e_subgraph = NULL; moon_edge = false; }
+
+private:
+	double length;
+	edge e_original;
+	edge e_subgraph;
+	bool moon_edge; //indicates if this edge is associasted with a moon node
+	bool extra_edge;//indicates if this edge is an extra edge that is added to
+	//enforce few edge crossings
+};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/internal/energybased/FruchtermanReingold.cpp b/ogdf/internal/energybased/FruchtermanReingold.cpp
new file mode 100644
index 0000000..ce73cd7
--- /dev/null
+++ b/ogdf/internal/energybased/FruchtermanReingold.cpp
@@ -0,0 +1,269 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class FruchtermanReingold (computation of forces).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "FruchtermanReingold.h"
+
+#include "../../energybased/numexcept.h"
+#include "../../basic/Array2D.h"
+
+
+namespace ogdf {
+
+FruchtermanReingold::FruchtermanReingold()
+{
+	grid_quotient(2);
+}
+
+
+void FruchtermanReingold::calculate_exact_repulsive_forces(
+	const Graph &G,
+	NodeArray<NodeAttributes> &A,
+	NodeArray<DPoint>& F_rep)
+{
+	//naive algorithm by Fruchterman & Reingold
+	numexcept N;
+	node v,u;
+	DPoint f_rep_u_on_v;
+	DPoint vector_v_minus_u;
+	DPoint pos_u,pos_v;
+	DPoint nullpoint (0,0);
+	double norm_v_minus_u;
+	long node_number = G.numberOfNodes();
+	Array<node> array_of_the_nodes (node_number+1);
+	long counter = 1;
+	long i,j;
+	double scalar;
+
+	forall_nodes(v,G)
+		F_rep[v]= nullpoint;
+
+	forall_nodes(v,G)
+	{
+		array_of_the_nodes[counter]=v;
+		counter++;
+	}
+
+	for(i = 1; i<node_number;i++)
+		for(j = i+1;j<=node_number;j++)
+		{
+			u = array_of_the_nodes[i];
+			v = array_of_the_nodes[j];
+			pos_u = A[u].get_position();
+			pos_v = A[v].get_position();
+			if (pos_u == pos_v)
+			{//if2  (Exception handling if two nodes have the same position)
+				pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_u);
+		}//if2
+		vector_v_minus_u = pos_v - pos_u;
+		norm_v_minus_u = vector_v_minus_u.norm();
+		if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+		{
+			scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+			f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+			f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+		}
+		F_rep[v] = F_rep[v] + f_rep_u_on_v;
+		F_rep[u] = F_rep[u] - f_rep_u_on_v;
+	}
+}
+
+
+void FruchtermanReingold::calculate_approx_repulsive_forces(
+	const Graph &G,
+	NodeArray<NodeAttributes> &A,
+	NodeArray<DPoint>& F_rep)
+{
+	//GRID algorithm by Fruchterman & Reingold
+	numexcept N;
+	List<IPoint> neighbour_boxes;
+	List<node> neighbour_box;
+	IPoint act_neighbour_box;
+	IPoint neighbour;
+	DPoint f_rep_u_on_v;
+	DPoint vector_v_minus_u;
+	DPoint nullpoint (0,0);
+	DPoint pos_u,pos_v;
+	double norm_v_minus_u;
+	double scalar;
+
+	int i,j,act_i,act_j,k,l,length;
+	node u,v;
+	double x,y,gridboxlength;//length of a box in the GRID
+	int x_index,y_index;
+
+	//init F_rep
+	forall_nodes(v,G)
+		F_rep[v]= nullpoint;
+
+	//init max_gridindex and set contained_nodes;
+
+	max_gridindex = static_cast<int> (sqrt(double(G.numberOfNodes()))/grid_quotient())-1;
+	max_gridindex = ((max_gridindex > 0)? max_gridindex : 0);
+	Array2D<List<node> >  contained_nodes (0,max_gridindex, 0, max_gridindex);
+
+	for(i=0;i<= max_gridindex;i++)
+		for(j=0;j<= max_gridindex;j++)
+		{
+			contained_nodes(i,j).clear();
+		}
+
+		gridboxlength = boxlength/(max_gridindex+1);
+		forall_nodes(v,G)
+		{
+			x = A[v].get_x()-down_left_corner.m_x;//shift comput. box to nullpoint
+			y = A[v].get_y()-down_left_corner.m_y;
+			x_index = static_cast<int>(x/gridboxlength);
+			y_index = static_cast<int>(y/gridboxlength);
+			contained_nodes(x_index,y_index).pushBack(v);
+		}
+
+		//force calculation
+
+		for(i=0;i<= max_gridindex;i++)
+			for(j=0;j<= max_gridindex;j++)
+			{
+				//step1: calculate forces inside contained_nodes(i,j)
+
+				length = contained_nodes(i,j).size();
+				Array<node> nodearray_i_j (length+1);
+				k = 1;
+				forall_listiterators(node, v_it,contained_nodes(i,j))
+				{
+					nodearray_i_j[k]= *v_it;
+					k++;
+				}
+
+				for(k = 1; k<length;k++)
+					for(l = k+1;l<=length;l++)
+					{
+						u = nodearray_i_j[k];
+						v = nodearray_i_j[l];
+						pos_u = A[u].get_position();
+						pos_v = A[v].get_position();
+						if (pos_u == pos_v)
+						{//if2  (Exception handling if two nodes have the same position)
+							pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_u);
+						}//if2
+						vector_v_minus_u = pos_v - pos_u;
+						norm_v_minus_u = vector_v_minus_u.norm();
+
+						if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+						{
+							scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+							f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+							f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+						}
+						F_rep[v] = F_rep[v] + f_rep_u_on_v;
+						F_rep[u] = F_rep[u] - f_rep_u_on_v;
+					}
+
+					//step 2: calculated forces to nodes in neighbour boxes
+
+					//find_neighbour_boxes
+
+					neighbour_boxes.clear();
+					for(k = i -1;k <= i+1;k++)
+						for(l = j-1;l <= j+1;l++)
+							if ( (k>=0) && (l>=0) && (k<=max_gridindex) && (l<=max_gridindex))
+							{
+								neighbour.m_x = k;
+								neighbour.m_y = l;
+								if ((k != i) || (l != j) )
+									neighbour_boxes.pushBack(neighbour);
+							}
+
+
+							//forget neighbour_boxes that already had access to this box
+							forall_listiterators(IPoint, act_neighbour_box_it,neighbour_boxes)
+							{//forall
+								act_i = (*act_neighbour_box_it).m_x;
+								act_j = (*act_neighbour_box_it).m_y;
+								if((act_j == j+1)||((act_j == j)&&(act_i == i+1)))
+								{//if1
+									forall_listiterators(node,v_it,contained_nodes(i,j))
+										forall_listiterators(node,u_it,contained_nodes(act_i,act_j))
+									{//for
+										pos_u = A[*u_it].get_position();
+										pos_v = A[*v_it].get_position();
+										if (pos_u == pos_v)
+										{//if2  (Exception handling if two nodes have the same position)
+											pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_u);
+										}//if2
+										vector_v_minus_u = pos_v - pos_u;
+										norm_v_minus_u = vector_v_minus_u.norm();
+
+										if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+										{
+											scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+											f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+											f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+										}
+										F_rep[*v_it] = F_rep[*v_it] + f_rep_u_on_v;
+										F_rep[*u_it] = F_rep[*u_it] - f_rep_u_on_v;
+									}//for
+								}//if1
+							}//forall
+			}
+}
+
+
+void FruchtermanReingold::make_initialisations(double bl, DPoint d_l_c, int grid_quot)
+{
+	grid_quotient(grid_quot);
+	down_left_corner = d_l_c; //export this two values from FMMM
+	boxlength = bl;
+}
+
+
+inline double FruchtermanReingold::f_rep_scalar(double d)
+{
+	if (d > 0) {
+		return 1/d;
+
+	} else {
+		cout<<"Error FruchtermanReingold:: f_rep_scalar nodes at same position"<<endl;
+		return 0;
+	}
+}
+
+}//namespace ogdf
diff --git a/ogdf/internal/energybased/FruchtermanReingold.h b/ogdf/internal/energybased/FruchtermanReingold.h
new file mode 100644
index 0000000..c677b24
--- /dev/null
+++ b/ogdf/internal/energybased/FruchtermanReingold.h
@@ -0,0 +1,108 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class FruchtermanReingold (computation of forces).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_FRUCHTERMAN_REINGOLD_H
+#define OGDF_FRUCHTERMAN_REINGOLD_H
+
+#include "../../basic/Graph.h"
+#include "../../basic/geometry.h"
+#include "../../basic/NodeArray.h"
+#include "NodeAttributes.h"
+#include "EdgeAttributes.h"
+
+namespace ogdf {
+
+class OGDF_EXPORT FruchtermanReingold
+{
+public:
+	FruchtermanReingold();          //constructor
+	~FruchtermanReingold() { }      //destructor
+
+	//Calculate exact rep. forces for each node.
+	void calculate_exact_repulsive_forces(
+		const Graph &G,
+		NodeArray<NodeAttributes>& A,
+		NodeArray<DPoint>& F_rep);
+
+	//Grid approximation of rep.forces for each node.
+	void calculate_approx_repulsive_forces(
+		const Graph &G,
+		NodeArray<NodeAttributes>& A,
+		NodeArray<DPoint>& F_rep);
+
+	//Make all initialisations that are needed for FruchtermanReingold.
+	void make_initialisations (
+		double boxlength,
+		DPoint down_left_corner,
+		int grid_quotient);
+
+	//Import updated information of the drawing area.
+	void update_boxlength_and_cornercoordinate(double b_l, DPoint d_l_c) {
+		boxlength = b_l; down_left_corner = d_l_c;
+	}
+
+private:
+	int _grid_quotient;//for coarsening the FrRe-grid
+	int max_gridindex; //maximum index of a grid row/column
+	double boxlength;  //length of drawing box
+	DPoint down_left_corner;//down left corner of drawing box
+
+	//Returns the repulsing force_function_value of scalar d.
+	double f_rep_scalar (double d);
+
+	//The number k of rows and colums of the grid is sqrt(|V|) / frGridQuotient()
+	//(Note that in [FrRe] frGridQuotient() is 2.)
+	void grid_quotient(int p) { _grid_quotient = ((0<=p) ? p : 2);}
+	int grid_quotient() const {return _grid_quotient;}
+};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/internal/energybased/MultilevelGraph.cpp b/ogdf/internal/energybased/MultilevelGraph.cpp
new file mode 100644
index 0000000..ec3af4b
--- /dev/null
+++ b/ogdf/internal/energybased/MultilevelGraph.cpp
@@ -0,0 +1,834 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief MLG is the main data structure for ModularMultilevelMixer
+ *
+ * \author Gereon Bartel
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+#include "MultilevelGraph.h"
+#include "../../basic/simple_graph_alg.h"
+#include <algorithm>
+
+
+namespace ogdf {
+
+
+MultilevelGraph::~MultilevelGraph()
+{
+	// delete all Nodemerges!
+	while(!m_changes.empty()) {
+		delete m_changes.back();
+		m_changes.pop_back();
+	}
+
+	// only delete the Graph if it was created!
+	if (m_createdGraph)	{
+		delete m_G;
+	}
+	delete m_GA;
+}
+
+//initialize internal structures such as the GraphAttributes that store the layout
+void MultilevelGraph::initInternal()
+{
+	OGDF_ASSERT(m_G != 0);
+	m_GA = new GraphAttributes(*m_G);
+}
+
+MultilevelGraph::MultilevelGraph()
+:m_createdGraph(true)
+{
+	m_G = new Graph();
+	if(m_G == 0) {
+		OGDF_THROW(InsufficientMemoryException);
+	}
+
+	//replaces layout info stuff below
+	initInternal();
+
+	m_nodeAssociations.init(*m_G, 0);
+	m_edgeAssociations.init(*m_G, 0);
+	m_radius.init(*m_G, 1.0);
+	m_weight.init(*m_G, 1.0);
+
+	initReverseIndizes();
+}
+
+
+MultilevelGraph::MultilevelGraph(GraphAttributes &GA)
+:m_createdGraph(true)
+{
+	m_G = new Graph();
+	if(m_G == 0) {
+		OGDF_THROW(InsufficientMemoryException);
+	}
+
+	//replaces layout info stuff below
+	initInternal();
+
+	m_nodeAssociations.init(*m_G);
+	m_edgeAssociations.init(*m_G);
+	m_radius.init(*m_G);
+	m_weight.init(*m_G);
+	copyFromGraph(GA.constGraph(), m_nodeAssociations, m_edgeAssociations);
+	prepareGraphAttributes(GA);
+	importAttributes(GA);
+
+	initReverseIndizes();
+}
+
+
+MultilevelGraph::MultilevelGraph(Graph &G)
+:m_createdGraph(false), m_G(0)
+{
+	m_G = &G;
+
+	//replaces layout info stuff below
+	initInternal();
+
+	m_nodeAssociations.init(*m_G, 0);
+	m_edgeAssociations.init(*m_G, 0);
+	m_radius.init(*m_G, 1.0);
+	m_weight.init(*m_G, 1.0);
+
+	initReverseIndizes();
+}
+
+
+MultilevelGraph::MultilevelGraph(GraphAttributes &GA, Graph &G)
+:m_createdGraph(false), m_G(0)
+{
+	m_G = &G;
+	m_nodeAssociations.init(*m_G, 0);
+	m_edgeAssociations.init(*m_G, 0);
+	m_radius.init(*m_G);
+	m_weight.init(*m_G);
+
+	initInternal();
+
+	prepareGraphAttributes(GA);
+	importAttributes(GA);
+
+	initReverseIndizes();
+}
+
+
+MultilevelGraph::MultilevelGraph(istream &is)
+:m_createdGraph(true)
+{
+	m_G = new Graph();
+	if(m_G == 0) {
+		OGDF_THROW(InsufficientMemoryException);
+	}
+	m_nodeAssociations.init(*m_G);
+	m_edgeAssociations.init(*m_G);
+	m_radius.init(*m_G);
+	m_weight.init(*m_G);
+
+	initInternal();
+	//GraphAttributes tempGA(*m_G);
+	m_GA->readGML(*m_G, is);
+	prepareGraphAttributes(*m_GA);
+	importAttributesSimple(*m_GA);
+
+	initReverseIndizes();
+}
+
+
+MultilevelGraph::MultilevelGraph(const String &filename)
+:m_createdGraph(true)
+{
+	m_G = new Graph();
+	if(m_G == 0) {
+		OGDF_THROW(InsufficientMemoryException);
+	}
+	m_nodeAssociations.init(*m_G);
+	m_edgeAssociations.init(*m_G);
+	m_radius.init(*m_G);
+	m_weight.init(*m_G);
+
+	initInternal();
+	//GraphAttributes tempGA(*m_G);
+	m_GA->readGML(*m_G, filename);
+	prepareGraphAttributes(*m_GA);
+	importAttributesSimple(*m_GA);
+
+	initReverseIndizes();
+}
+
+
+void MultilevelGraph::prepareGraphAttributes(GraphAttributes &GA) const
+{
+	long additionalAttributes = 0;
+	if (!(GA.attributes() & GraphAttributes::edgeDoubleWeight)) {
+		additionalAttributes |= GraphAttributes::edgeDoubleWeight;
+	}
+	if (!(GA.attributes() & GraphAttributes::nodeWeight)) {
+		additionalAttributes |= GraphAttributes::nodeWeight;
+	}
+	GA.initAttributes(additionalAttributes);
+}
+
+
+void MultilevelGraph::copyFromGraph(const Graph &G, NodeArray<int> & /*nodeAssociations*/, EdgeArray<int> & /* edgeAssociations */)
+{
+	NodeArray<node> tempAssociations(G);
+
+	node v;
+	forall_nodes(v, G) {
+		node v_new = m_G->newNode();
+		m_nodeAssociations[v_new] = v->index();
+		tempAssociations[v] = v_new;
+	}
+
+	edge e;
+	forall_edges(e, G) {
+		edge e_new = m_G->newEdge(tempAssociations[e->source()], tempAssociations[e->target()]);
+		m_edgeAssociations[e_new] = e->index();
+	}
+
+	initReverseIndizes();
+}
+
+
+int MultilevelGraph::getLevel()
+{
+	if (m_changes.size() == 0)
+	{
+		return 0;
+	}
+	else
+	{
+		return m_changes.back()->m_level;
+	}
+}
+
+
+// assumes, that the Graphs of MultilevelGraph and GA are the same, not copies!
+void MultilevelGraph::exportAttributesSimple(GraphAttributes &GA) const
+{
+	OGDF_ASSERT(&(GA.constGraph()) == m_G);
+
+	prepareGraphAttributes(GA);
+
+	node v;
+	forall_nodes(v, *m_G) {
+		GA.x(v) =  m_GA->x(v);
+		GA.y(v) =  m_GA->y(v);
+		//TODO: Check what this w,h computation does
+		double w = GA.width(v);
+		double h = GA.height(v);
+		if(w > 0 || h > 0) {
+			double factor =  m_radius[v] / sqrt(w*w + h*h) * 2.0f;
+			w *= factor;
+			h *= factor;
+		} else {
+			w = h = m_radius[v] * sqrt(2.0f);
+		}
+		GA.width(v) = w;
+		GA.height(v) = h;
+		GA.weight(v) = m_reverseNodeMergeWeight[v->index()];
+	}
+
+	edge e;
+	forall_edges(e, *m_G) {
+		GA.doubleWeight(e) = m_weight[e];
+	}
+}
+
+
+void MultilevelGraph::exportAttributes(GraphAttributes &GA) const
+{
+	OGDF_ASSERT(GA.constGraph().numberOfNodes() == m_G->numberOfNodes());
+	OGDF_ASSERT(GA.constGraph().numberOfEdges() == m_G->numberOfEdges());
+
+	prepareGraphAttributes(GA);
+
+	std::vector<node> tempNodeAssociations;
+	node v;
+	const Graph &cG = GA.constGraph();
+	tempNodeAssociations.resize(cG.maxNodeIndex()+1, 0);
+	forall_nodes(v, cG) {
+		tempNodeAssociations[v->index()] = v;
+	}
+
+	forall_nodes(v, *m_G) {
+		GA.x(tempNodeAssociations[m_nodeAssociations[v]]) =  m_GA->x(v);
+		GA.y(tempNodeAssociations[m_nodeAssociations[v]]) =  m_GA->y(v);
+		double w = GA.width(tempNodeAssociations[m_nodeAssociations[v]]);
+		double h = GA.height(tempNodeAssociations[m_nodeAssociations[v]]);
+		if(w > 0 || h > 0) {
+			double factor =  m_radius[v] / sqrt(w*w + h*h) * 2.0f;
+			w *= factor;
+			h *= factor;
+		} else {
+			w = h = m_radius[v] * sqrt(2.0f);
+		}
+		GA.width(tempNodeAssociations[m_nodeAssociations[v]]) = w;
+		GA.height(tempNodeAssociations[m_nodeAssociations[v]]) = h;
+		GA.weight(tempNodeAssociations[m_nodeAssociations[v]]) = m_reverseNodeMergeWeight[v->index()];
+	}
+
+	std::vector<edge> tempEdgeAssociations;
+	edge e;
+	tempEdgeAssociations.resize(cG.maxEdgeIndex()+1, 0);
+	forall_edges(e, cG) {
+		tempEdgeAssociations[e->index()] = e;
+	}
+
+	forall_edges(e, *m_G) {
+		GA.doubleWeight(tempEdgeAssociations[m_edgeAssociations[e]]) = m_weight[e];
+	}
+}
+
+
+void MultilevelGraph::importAttributesSimple(const GraphAttributes &GA)
+{
+	OGDF_ASSERT(&(GA.constGraph()) == m_G);
+
+	m_avgRadius = 0.0;
+
+	node v;
+	forall_nodes(v, *m_G) {
+		double w = GA.width(v);
+		double h = GA.height(v);
+		if(w > 0 || h > 0) {
+			m_radius[v] = sqrt(w*w + h*h) / 2.0f;
+		} else {
+			m_radius[v] = 1.0f;
+		}
+		m_avgRadius += m_radius[v];
+		m_GA->x(v) = GA.x(v);
+		m_GA->y(v) = GA.y(v);
+		m_GA->width(v) = GA.width(v);
+		m_GA->height(v) = GA.height(v);
+	}
+	m_avgRadius /= m_G->numberOfNodes();
+
+	edge e;
+	forall_edges(e, *m_G) {
+		m_weight[e] = GA.doubleWeight(e);
+	}
+}
+
+
+void MultilevelGraph::importAttributes(const GraphAttributes &GA)
+{
+	OGDF_ASSERT(GA.constGraph().numberOfNodes() == m_G->numberOfNodes());
+	OGDF_ASSERT(GA.constGraph().numberOfEdges() == m_G->numberOfEdges());
+
+	m_avgRadius = 0.0;
+
+	std::vector<node> tempNodeAssociations;
+	node v;
+	const Graph &cG = GA.constGraph();
+	tempNodeAssociations.resize(cG.maxNodeIndex()+1, 0);
+	forall_nodes(v, cG) {
+		tempNodeAssociations[v->index()] = v;
+	}
+
+	forall_nodes(v, *m_G) {
+
+		double w = GA.width(tempNodeAssociations[m_nodeAssociations[v]]);
+		double h = GA.height(tempNodeAssociations[m_nodeAssociations[v]]);
+		if(w > 0 || h > 0) {
+			m_radius[v] = sqrt(w*w + h*h) / 2.0f;
+		} else {
+			m_radius[v] = 1.0f;
+		}
+
+		m_avgRadius += m_radius[v];
+
+		m_GA->x(v) = GA.x(tempNodeAssociations[m_nodeAssociations[v]]);
+		m_GA->y(v) = GA.y(tempNodeAssociations[m_nodeAssociations[v]]);
+		m_GA->width(v) = GA.width(tempNodeAssociations[m_nodeAssociations[v]]);
+		m_GA->height(v) = GA.height(tempNodeAssociations[m_nodeAssociations[v]]);
+	}
+
+	m_avgRadius /= m_G->numberOfNodes();
+
+	std::vector<edge> tempEdgeAssociations;
+	edge e;
+	tempEdgeAssociations.resize(cG.maxEdgeIndex()+1, 0);
+	forall_edges(e, cG) {
+		tempEdgeAssociations[e->index()] = e;
+	}
+
+	forall_edges(e, *m_G) {
+		m_weight[e] = GA.doubleWeight(tempEdgeAssociations[m_edgeAssociations[e]]);
+	}
+}
+
+
+void MultilevelGraph::reInsertGraph(MultilevelGraph &MLG)
+{
+	std::map<node, node> tempNodeAssociations;
+
+	node v;
+	forall_nodes(v, *(MLG.m_G)) {
+		MLG.copyNodeTo(v, *this, tempNodeAssociations, false, MLG.m_nodeAssociations[v]);
+	}
+
+	edge e;
+	forall_edges(e, *(MLG.m_G)) {
+		MLG.copyEdgeTo(e, *this, tempNodeAssociations, false, MLG.m_edgeAssociations[e]);
+	}
+
+	initReverseIndizes();
+}
+
+
+void MultilevelGraph::reInsertAll(std::vector<MultilevelGraph *> components)
+{
+	for(std::vector<MultilevelGraph *>::iterator i = components.begin();
+		i != components.end(); i++)
+	{
+		reInsertGraph(**i);
+	}
+}
+
+
+// keeps Changes
+// keeps Node and Edge Associations
+// deletes Nodes and Eges from Graph
+// deletes Attributes
+// deprecated, use componentsplitterlayout instead
+std::vector<MultilevelGraph *> MultilevelGraph::splitIntoComponents()
+{
+	std::vector<MultilevelGraph *> components;
+
+	NodeArray<int> componentNumbers(*m_G);
+	int numComponents = connectedComponents(*m_G, componentNumbers);
+	if (numComponents == 0) {
+		return components;
+	}
+
+	std::vector< std::vector<node> > componentArray;
+	componentArray.resize(numComponents);
+	node v;
+	forall_nodes(v, *m_G) {
+		componentArray[componentNumbers[v]].push_back(v);
+	}
+
+	for (unsigned int componentNumber = 0; componentNumber < componentArray.size(); componentNumber++) {
+		std::vector<node> componentSubArray = componentArray[componentNumber];
+		MultilevelGraph * component = removeOneCC(componentSubArray);
+		components.push_back(component);
+	}
+
+	OGDF_ASSERT(m_G->numberOfNodes() == 0);
+	OGDF_ASSERT(m_G->numberOfEdges() == 0);
+
+	m_radius.init(*m_G);
+	m_weight.init(*m_G);
+
+	return components;
+}
+
+
+void MultilevelGraph::copyNodeTo(node v, MultilevelGraph &MLG, std::map<node, node> &tempNodeAssociations, bool associate, int index)
+{
+	node v_new;
+	if (index == -1) {
+		v_new = MLG.m_G->newNode();
+	} else {
+		v_new = MLG.m_G->newNode(index);
+	}
+
+	tempNodeAssociations[v] = v_new;
+	if(associate) {
+		MLG.m_nodeAssociations[v_new] = v->index();
+	}
+	MLG.m_radius[v_new] = m_radius[v];
+	MLG.x(v_new, x(v));
+	MLG.y(v_new, y(v));
+}
+
+
+void MultilevelGraph::copyEdgeTo(edge e, MultilevelGraph &MLG, std::map<node, node> &tempNodeAssociations, bool associate, int index)
+{
+	node source = e->source();
+	node target = e->target();
+	edge e_new;
+	if (index == -1) {
+		e_new = MLG.m_G->newEdge(tempNodeAssociations[source], tempNodeAssociations[target]);
+	} else {
+		e_new = MLG.m_G->newEdge(tempNodeAssociations[source], tempNodeAssociations[target], index);
+	}
+
+	if(associate) {
+		MLG.m_edgeAssociations[e_new] = e->index();
+	}
+	MLG.m_weight[e_new] = m_weight[e];
+}
+
+
+MultilevelGraph * MultilevelGraph::removeOneCC(std::vector<node> &componentSubArray)
+{
+	MultilevelGraph * MLGcomponent = new MultilevelGraph();
+	std::map<node, node> tempNodeAssociations;
+
+	// copy nodes
+	for (std::vector<node>::iterator i = componentSubArray.begin(); i != componentSubArray.end(); i++) {
+		node v = *i;
+		copyNodeTo(v, *MLGcomponent, tempNodeAssociations, true);
+	}
+
+	// move edges
+	for (std::vector<node>::iterator i = componentSubArray.begin(); i != componentSubArray.end(); i++) {
+		node v = *i;
+		edge e;
+//		std::vector<edge> toDelete;
+		forall_adj_edges(e, v) {
+			if (e != 0 && e->source() == v) {
+				copyEdgeTo(e, *MLGcomponent, tempNodeAssociations, true);
+//				toDelete.push_back(e);
+			}
+		}
+/*		// Test if this is good for Performace.
+		// makes Assert Edges == 0 fail!
+		// Because of self loops!
+		for(std::vector<edge>::iterator j = toDelete.begin(); j != toDelete.end(); j++) {
+			m_G->delEdge(*j);
+		}
+*/
+	}
+
+	tempNodeAssociations.clear();
+
+	// delete nodes
+	for (std::vector<node>::iterator i = componentSubArray.begin(); i != componentSubArray.end(); i++) {
+		node v = *i;
+		m_G->delNode(v);
+	}
+
+	MLGcomponent->initReverseIndizes();
+	return MLGcomponent;
+}
+
+
+bool MultilevelGraph::postMerge(NodeMerge * NM, node merged)
+{
+	// merged has no more edges!
+	int index = merged->index();
+	if (merged->degree() == 0 && NM->m_changedNodes.size() > 0) {
+		NM->m_mergedNode = index;
+		NM->m_radius[index] = m_radius[index];
+		m_changes.push_back(NM);
+		m_G->delNode(merged);
+		m_reverseNodeIndex[index] = 0;
+		return true;
+	} else {
+		return false;
+	}
+}
+
+
+bool MultilevelGraph::changeNode(NodeMerge * NM, node theNode, double newRadius, node merged)
+{
+	int index = theNode->index();
+	//we assume that changeNode is called exactly onces when a node is merged
+	//with its parent with parameter theNode being the parent and add 1 to
+	//the parents merge weight
+	m_reverseNodeMergeWeight[index] += m_reverseNodeMergeWeight[merged->index()];
+	std::vector<int>::iterator pos = find(NM->m_changedNodes.begin(), NM->m_changedNodes.end(), index);
+
+	if (pos == NM->m_changedNodes.end()) {
+		NM->m_changedNodes.push_back(index);
+		NM->m_radius[index] = m_radius[index];
+	}
+	m_radius[index] = newRadius;
+
+	return true;
+}
+
+
+bool MultilevelGraph::changeEdge(NodeMerge * NM, edge theEdge, double newWeight, node newSource, node newTarget)
+{
+	int index = theEdge->index();
+	std::vector<int>::iterator pos = find(NM->m_changedEdges.begin(), NM->m_changedEdges.end(), index);
+
+	if (pos == NM->m_changedEdges.end()) {
+		NM->m_changedEdges.push_back(index);
+		NM->m_doubleWeight[index] = m_weight[index];
+		NM->m_source[index] = theEdge->source()->index();
+		NM->m_target[index] = theEdge->target()->index();
+	}
+	m_G->delEdge(theEdge);
+	m_reverseEdgeIndex[index] = m_G->newEdge(newSource, newTarget, index);
+	m_weight[index] = newWeight;
+
+	return true;
+}
+
+
+bool MultilevelGraph::deleteEdge(NodeMerge * NM, edge theEdge)
+{
+	int index = theEdge->index();
+
+	NM->m_deletedEdges.push_back(index);
+	NM->m_doubleWeight[index] = m_weight[index];
+	NM->m_source[index] = theEdge->source()->index();
+	NM->m_target[index] = theEdge->target()->index();
+
+	m_G->delEdge(theEdge);
+	m_reverseEdgeIndex[index] = 0;
+
+	return true;
+}
+
+
+std::vector<edge> MultilevelGraph::moveEdgesToParent(NodeMerge * NM, node theNode, node parent, bool deleteDoubleEdges, int adjustEdgeLengths)
+{
+	OGDF_ASSERT(theNode != parent);
+
+	std::vector<edge> doubleEdges;
+	std::vector<edge> adjEdges;
+	edge e;
+	forall_adj_edges(e, theNode) {
+		adjEdges.push_back(e);
+	}
+
+	double nodeToParentLen = 0.0;
+	for (std::vector<edge>::iterator i = adjEdges.begin(); i != adjEdges.end(); i++)
+	{
+		e = *i;
+		node newSource = e->source();
+		node newTarget = e->target();
+		if ((newSource == theNode && newTarget == parent)
+		|| (newSource == parent && newTarget == theNode)){
+			nodeToParentLen = m_weight[e->index()];
+			break;
+		}
+	}
+
+	for (std::vector<edge>::iterator i = adjEdges.begin(); i != adjEdges.end(); i++)
+	{
+		e = *i;
+		node newSource = e->source();
+		node newTarget = e->target();
+
+		if (newSource == theNode) {
+			newSource = parent;
+		}
+		if (newTarget == theNode) {
+			newTarget = parent;
+		}
+
+		bool exists = false;
+		edge twinEdge = 0;
+		adjEntry adj;
+		forall_adj(adj, parent) {
+			if (adj->twinNode() != parent && (adj->twinNode() == newSource || adj->twinNode() == newTarget)) {
+				exists = true;
+				twinEdge = adj->theEdge();
+				double extraLength = 0.0;
+				if(adjustEdgeLengths != 0) {
+					extraLength = m_weight[twinEdge->index()] + adjustEdgeLengths * nodeToParentLen;
+				}
+				changeEdge(NM, twinEdge, (m_weight[twinEdge->index()] + m_weight[e->index()] + extraLength) * 0.5f, twinEdge->source(), twinEdge->target());
+				break;
+			}
+		}
+
+		// has this edge already
+		if (exists || newSource == newTarget) {
+			doubleEdges.push_back(e);
+		} else {
+			changeEdge(NM, e, m_weight[e->index()], newSource, newTarget);
+		}
+	}
+
+	if (deleteDoubleEdges) {
+		while (!doubleEdges.empty()) {
+			deleteEdge(NM, doubleEdges.back());
+			doubleEdges.pop_back();
+		}
+	}
+
+	OGDF_ASSERT(theNode->degree() == doubleEdges.size());
+
+	// not deleted edges that are adjacent to theNode are returned.
+	return doubleEdges;
+}
+
+
+NodeMerge * MultilevelGraph::getLastMerge()
+{
+	return m_changes.back();
+}
+
+
+node MultilevelGraph::undoLastMerge()
+{
+	if (m_changes.empty()) {
+		return 0;
+	}
+	NodeMerge * merge = m_changes.back();
+	m_changes.pop_back();
+
+	// reinsert merged node
+	int index = merge->m_mergedNode;
+	node merged = m_G->newNode(index);
+	m_reverseNodeIndex[index] = merged;
+	m_radius[index] = merge->m_radius[index];
+
+	std::vector<int>::iterator it;
+	// add deleted edges
+	for (it = merge->m_deletedEdges.begin(); it != merge->m_deletedEdges.end(); it++) {
+		index = *it;
+		m_reverseEdgeIndex[index] = m_G->newEdge(m_reverseNodeIndex[merge->m_source[index]], m_reverseNodeIndex[merge->m_target[index]], index);
+		m_weight[index] = merge->m_doubleWeight[index];
+	}
+
+	// undo edge changes
+	for (it = merge->m_changedEdges.begin(); it != merge->m_changedEdges.end(); it++) {
+		index = *it;
+		m_G->delEdge(m_reverseEdgeIndex[index]);
+		m_reverseEdgeIndex[index] = m_G->newEdge(m_reverseNodeIndex[merge->m_source[index]], m_reverseNodeIndex[merge->m_target[index]], index);
+		m_weight[index] = merge->m_doubleWeight[index];
+	}
+
+	// undo node changes
+	for (it = merge->m_changedNodes.begin(); it != merge->m_changedNodes.end(); it++) {
+		index = *it;
+		m_radius[index] = merge->m_radius[index];
+		m_reverseNodeMergeWeight[index] -= m_reverseNodeMergeWeight[merged->index()];
+	}
+
+	delete merge;
+	return merged;
+}
+
+
+edge MultilevelGraph::getEdge(unsigned int index)
+{
+	if (index >= m_reverseEdgeIndex.size()) {
+		return 0;
+	}
+	return m_reverseEdgeIndex[index];
+}
+
+
+node MultilevelGraph::getNode(unsigned int index)
+{
+	if (index >= m_reverseNodeIndex.size()) {
+		return 0;
+	}
+	return m_reverseNodeIndex[index];
+}
+
+
+void MultilevelGraph::initReverseIndizes()
+{
+	if (m_G->numberOfNodes() > 0) {
+		m_reverseNodeIndex.resize(m_G->maxNodeIndex()+1, 0);
+	}
+	if (m_G->numberOfNodes() > 0) {
+		m_reverseNodeMergeWeight.resize(m_G->maxNodeIndex()+1, 1);
+	}
+	if (m_G->numberOfEdges() > 0) {
+		m_reverseEdgeIndex.resize(m_G->maxEdgeIndex()+1, 0);
+	}
+}
+
+
+void MultilevelGraph::updateMergeWeights()
+{
+	node v;
+	forall_nodes(v, *m_G) {
+		m_reverseNodeMergeWeight[v->index()] = 1;
+	}
+
+}
+
+
+void MultilevelGraph::updateReverseIndizes()
+{
+	if ((unsigned int)m_G->maxNodeIndex() >= m_reverseNodeIndex.size() || (unsigned int)m_G->maxEdgeIndex() >= m_reverseEdgeIndex.size()) {
+		initReverseIndizes();
+	}
+
+	node v;
+	forall_nodes(v, *m_G) {
+		m_reverseNodeIndex[v->index()] = v;
+	}
+
+	edge e;
+	forall_edges(e, *m_G) {
+		m_reverseEdgeIndex[e->index()] = e;
+	}
+}
+
+
+void MultilevelGraph::writeGML(ostream &os)
+{
+	GraphAttributes GA(*m_G);
+	exportAttributesSimple(GA);
+
+	GA.writeGML(os);
+}
+
+
+void MultilevelGraph::writeGML(const String &fileName)
+{
+	ofstream os(fileName.cstr());
+	writeGML(os);
+}
+
+
+void MultilevelGraph::moveToZero()
+{
+	// move Graph to zero
+	node v;
+	double avg_x = 0.0;
+	double avg_y = 0.0;
+	forall_nodes(v, getGraph()) {
+		avg_x += x(v);
+		avg_y += y(v);
+	}
+	avg_x /= getGraph().numberOfNodes();
+	avg_y /= getGraph().numberOfNodes();
+	forall_nodes(v, getGraph()) {
+		x(v, x(v) - avg_x);
+		y(v, y(v) - avg_y);
+	}
+}
+
+
+} // namespace ogdf
diff --git a/ogdf/internal/energybased/MultilevelGraph.h b/ogdf/internal/energybased/MultilevelGraph.h
new file mode 100644
index 0000000..d294bed
--- /dev/null
+++ b/ogdf/internal/energybased/MultilevelGraph.h
@@ -0,0 +1,180 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief MLG is the main data structure for ModularMultilevelMixer
+ *
+ * \author Gereon Bartel
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_MULTILEVEL_GRAPH_H
+#define OGDF_MULTILEVEL_GRAPH_H
+
+#include "../../basic/Graph.h"
+#include "../../basic/GraphAttributes.h"
+#include <vector>
+#include <map>
+
+namespace ogdf {
+
+//Stores info on merging for a refinement level
+struct NodeMerge
+{
+	// Node/Edge IDs instead of pointers as the nodes themselves may be nonexistent.
+	std::vector<int> m_deletedEdges;
+	std::vector<int> m_changedEdges;
+	std::map<int, double> m_doubleWeight; // for changed and deleted edges
+	std::map<int, int> m_source;
+	std::map<int, int> m_target;
+
+	int m_mergedNode;
+	std::vector< std::pair<int, double> > m_position; // optional information <target, distance>. mergedNode will be placed at average of relative distances to target.
+
+	std::vector<int> m_changedNodes; // there may be placement strategies that use more than one reference-node.
+	std::map<int, double> m_radius; // for changed nodes and the merged node
+
+	int m_level;
+
+
+	NodeMerge(int level) : m_level(level) { }
+	~NodeMerge() { }
+};
+
+
+class OGDF_EXPORT MultilevelGraph
+{
+private:
+	bool m_createdGraph; //used in destructor, TODO: check if it is needed
+	Graph * m_G;
+	GraphAttributes * m_GA; //<! Keeps layout info in replacement of information below (todo: remove them)
+	std::vector<NodeMerge *> m_changes;
+	NodeArray<double> m_radius;
+	double m_avgRadius; //stores average node radius for scaling and random layout purposes
+
+	EdgeArray<double> m_weight;
+
+	// Associations to index only as the node/edge may be nonexistent
+	NodeArray<int> m_nodeAssociations;
+	EdgeArray<int> m_edgeAssociations;
+
+	std::vector<node> m_reverseNodeIndex;
+	std::vector<int> m_reverseNodeMergeWeight;//<! Keeps number of vertices represented by vertex with given index
+	std::vector<edge> m_reverseEdgeIndex;
+
+	MultilevelGraph * removeOneCC(std::vector<node> &componentSubArray);
+	void copyFromGraph(const Graph &G, NodeArray<int> &nodeAssociations, EdgeArray<int> &edgeAssociations);
+	void prepareGraphAttributes(GraphAttributes &GA) const;
+
+	void initReverseIndizes();
+	void initInternal();
+
+public:
+	~MultilevelGraph();
+	MultilevelGraph();
+	MultilevelGraph(Graph &G);
+	MultilevelGraph(GraphAttributes &GA);
+	// if the Graph is available without const, no copy needs to be created.
+	MultilevelGraph(GraphAttributes &GA, Graph &G);
+
+	// creates MultilevelGraph directly from GML file.
+	MultilevelGraph(istream &is);
+	MultilevelGraph(const String &filename);
+
+	NodeArray<double> &getRArray() { return m_radius; }
+	EdgeArray<double> &getWArray() { return m_weight; }
+
+	edge getEdge(unsigned int index);
+	node getNode(unsigned int index);
+
+	double radius(node v) { return m_radius[v]; }
+	void radius(node v, double r) { m_radius[v] = r; }
+	double averageRadius() const { return m_avgRadius;}
+
+	double x(node v) { return m_GA->x(v); }
+	double y(node v) { return m_GA->y(v); }
+	void x(node v, double x) { m_GA->x(v) = x;}
+	void y(node v, double y) { m_GA->y(v) = y;}
+
+	void weight(edge e, double weight) { m_weight[e] = weight; }
+	double weight(edge e) { return m_weight[e]; }
+
+	//returns the merge weight, i.e. the number of nodes represented by v on the current level
+	int mergeWeight(node v) {return m_reverseNodeMergeWeight[v->index()];}
+
+	void moveToZero();
+
+	int getLevel();
+	Graph & getGraph() { return *m_G; }
+	//! Returns attributes of current level graph as GraphAttributes
+	GraphAttributes & getGraphAttributes() const { return *m_GA; }
+	void exportAttributes(GraphAttributes &GA) const;
+	void exportAttributesSimple(GraphAttributes &GA) const;
+	void importAttributes(const GraphAttributes &GA);
+	void importAttributesSimple(const GraphAttributes &GA);
+	void reInsertGraph(MultilevelGraph &MLG);
+	void reInsertAll(std::vector<MultilevelGraph *> components);
+	void copyNodeTo(node v, MultilevelGraph &MLG, std::map<node, node> &tempNodeAssociations, bool associate, int index = -1);
+	void copyEdgeTo(edge e, MultilevelGraph &MLG, std::map<node, node> &tempNodeAssociations, bool associate, int index = -1);
+	void writeGML(ostream &os);
+	void writeGML(const String &fileName);
+
+	// the original graph will be cleared to save Memory
+	std::vector<MultilevelGraph *> splitIntoComponents();
+
+	bool postMerge(NodeMerge * NM, node merged);
+	//\a merged is the node now represented by \a theNode
+	bool changeNode(NodeMerge * NM, node theNode, double newRadius, node merged);
+	bool changeEdge(NodeMerge * NM, edge theEdge, double newWeight, node newSource, node newTarget);
+	bool deleteEdge(NodeMerge * NM, edge theEdge);
+	std::vector<edge> moveEdgesToParent(NodeMerge * NM, node theNode, node parent, bool deleteDoubleEndges, int adjustEdgeLengths);
+	NodeMerge * getLastMerge();
+	node undoLastMerge();
+
+	void updateReverseIndizes();
+	//sets the merge weights back to initial values
+	void updateMergeWeights();
+};
+
+} // namespace ogdf
+
+#endif
diff --git a/ogdf/internal/energybased/NMM.cpp b/ogdf/internal/energybased/NMM.cpp
new file mode 100644
index 0000000..200824c
--- /dev/null
+++ b/ogdf/internal/energybased/NMM.cpp
@@ -0,0 +1,2867 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class NMM (New Multipole Method).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "NMM.h"
+#include "../../energybased/FMMMLayout.h"
+#include "../../basic/Math.h"
+#include "../../energybased/numexcept.h"
+#include <time.h>
+
+
+#define MIN_BOX_LENGTH   1e-300
+
+#ifdef __BORLANDC__
+	using _STL::log;
+#else
+	using std::log;
+#endif
+
+
+namespace ogdf {
+
+NMM::NMM()
+{
+	//set MIN_NODE_NUMBER and using_NMM
+	MIN_NODE_NUMBER = 175; using_NMM = true;
+
+	//setting predefined parameters
+	precision(4); particles_in_leaves(25);
+	tree_construction_way(FMMMLayout::rtcSubtreeBySubtree);
+	find_sm_cell(FMMMLayout::scfIteratively);
+}
+
+
+void NMM::calculate_repulsive_forces(
+	const Graph &G,
+	NodeArray <NodeAttributes>& A,
+	NodeArray<DPoint>& F_rep)
+{
+	if(using_NMM) //use NewMultipoleMethod
+		calculate_repulsive_forces_by_NMM(G,A,F_rep);
+	else //used the exact naive way
+		calculate_repulsive_forces_by_exact_method(G,A,F_rep);
+}
+
+
+void NMM::calculate_repulsive_forces_by_NMM(
+	const Graph &G,
+	NodeArray<NodeAttributes>& A,
+	NodeArray<DPoint>& F_rep)
+{
+	QuadTreeNM T;
+	node v;
+	DPoint nullpoint (0,0);
+	NodeArray<DPoint> F_direct(G);
+	NodeArray<DPoint> F_local_exp(G);
+	NodeArray<DPoint> F_multipole_exp(G);
+	List<QuadTreeNodeNM*> quad_tree_leaves;
+
+	//initializations
+
+	forall_nodes(v,G)
+		F_direct[v]=F_local_exp[v]=F_multipole_exp[v]=nullpoint;
+
+	quad_tree_leaves.clear();
+	if(tree_construction_way() == FMMMLayout::rtcPathByPath)
+		build_up_red_quad_tree_path_by_path(G,A,T);
+	else //tree_construction_way == FMMMLayout::rtcSubtreeBySubtree
+		build_up_red_quad_tree_subtree_by_subtree(G,A,T);
+
+	form_multipole_expansions(A,T,quad_tree_leaves);
+	calculate_local_expansions_and_WSPRLS(A,T.get_root_ptr());
+	transform_local_exp_to_forces(A,quad_tree_leaves,F_local_exp);
+	transform_multipole_exp_to_forces(A,quad_tree_leaves,F_multipole_exp);
+	calculate_neighbourcell_forces(A,quad_tree_leaves,F_direct);
+	add_rep_forces(G,F_direct,F_multipole_exp,F_local_exp,F_rep);
+
+	delete_red_quad_tree_and_count_treenodes(T);
+}
+
+
+inline void NMM::calculate_repulsive_forces_by_exact_method(
+	const Graph &G,
+	NodeArray<NodeAttributes>& A,
+	NodeArray<DPoint>& F_rep)
+{
+	ExactMethod.calculate_exact_repulsive_forces(G,A,F_rep);
+}
+
+
+void NMM::make_initialisations(
+	const Graph &G,
+	double bl,
+	DPoint d_l_c,
+	int p_i_l,
+	int p,
+	int t_c_w,
+	int f_s_c)
+{
+	if(G.numberOfNodes() >= MIN_NODE_NUMBER) //using_NMM
+	{
+		using_NMM = true; //indicate that NMM is used for force calculation
+
+		particles_in_leaves(p_i_l);
+		precision(p);
+		tree_construction_way(t_c_w);
+		find_sm_cell(f_s_c);
+		down_left_corner = d_l_c; //Export this two values from FMMM
+		boxlength = bl;
+		init_binko(2* precision());
+		init_power_of_2_array();
+	}
+	else //use exact method
+	{
+		using_NMM = false; //indicate that exact method is used for force calculation
+		ExactMethod.make_initialisations(bl,d_l_c,0);
+	}
+}
+
+
+void NMM::deallocate_memory()
+{
+	if(using_NMM) {
+		free_binko();
+		free_power_of_2_array();
+	}
+}
+
+
+void NMM::update_boxlength_and_cornercoordinate(double b_l, DPoint d_l_c)
+{
+	if(using_NMM) {
+		boxlength = b_l;
+		down_left_corner = d_l_c;
+	}
+	else
+		ExactMethod.update_boxlength_and_cornercoordinate(b_l,d_l_c);
+}
+
+
+inline void NMM::init_power_of_2_array()
+{
+	int p = 1;
+	max_power_of_2_index = 30;
+	power_of_2 = new int[max_power_of_2_index+1];
+	for(int i = 0; i<= max_power_of_2_index; i++) {
+		power_of_2[i] = p;
+		p*=2;
+	}
+}
+
+
+inline void NMM::free_power_of_2_array()
+{
+	delete [] power_of_2;
+}
+
+
+inline int NMM::power_of_two(int i)
+{
+	if(i <= max_power_of_2_index)
+		return power_of_2[i];
+	else
+		return static_cast<int>(pow(2.0,i));
+}
+
+
+inline int NMM::maxboxindex (int level)
+{
+	if ((level < 0 )) {
+		cout <<"Failure NMM::maxboxindex :wrong level "<<endl;
+		cout <<"level" <<level<<endl;
+		return -1;
+
+	} else
+		return power_of_two(level)-1;
+}
+
+
+// ************Functions needed for path by path based  tree construction**********
+
+void NMM::build_up_red_quad_tree_path_by_path(
+	const Graph& G,
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T)
+{
+	List<QuadTreeNodeNM*> act_leaf_List,new_leaf_List;
+	List<QuadTreeNodeNM*> *act_leaf_List_ptr,*new_leaf_List_ptr,*help_ptr;
+	List <ParticleInfo> act_x_List_copy,act_y_List_copy;
+	QuadTreeNodeNM *act_node_ptr;
+
+	build_up_root_node(G,A,T);
+
+	act_leaf_List.clear();
+	new_leaf_List.clear();
+	act_leaf_List.pushFront(T.get_root_ptr());
+	act_leaf_List_ptr = &act_leaf_List;
+	new_leaf_List_ptr = &new_leaf_List;
+
+	while(!act_leaf_List_ptr->empty())
+	{
+		while(!act_leaf_List_ptr->empty())
+		{
+			act_node_ptr = act_leaf_List_ptr->popFrontRet();
+			make_copy_and_init_Lists(*(act_node_ptr->get_x_List_ptr()),act_x_List_copy,
+						*(act_node_ptr->get_y_List_ptr()),act_y_List_copy);
+			T.set_act_ptr(act_node_ptr);
+			decompose_subtreenode(T,act_x_List_copy,act_y_List_copy,*new_leaf_List_ptr);
+		}
+		help_ptr = act_leaf_List_ptr;
+		act_leaf_List_ptr = new_leaf_List_ptr;
+		new_leaf_List_ptr = help_ptr;
+	}
+}
+
+
+void NMM::make_copy_and_init_Lists(
+	List<ParticleInfo>& L_x_orig,
+	List<ParticleInfo>& L_x_copy,
+	List<ParticleInfo>& L_y_orig,
+	List<ParticleInfo>& L_y_copy)
+{
+	ListIterator<ParticleInfo> origin_x_item,copy_x_item,origin_y_item,copy_y_item,
+							new_cross_ref_item;
+	ParticleInfo P_x_orig,P_y_orig,P_x_copy,P_y_copy;
+	bool L_x_orig_traversed = false;
+	bool L_y_orig_traversed = false;
+
+	L_x_copy.clear();
+	L_y_copy.clear();
+
+	origin_x_item = L_x_orig.begin();
+	while(!L_x_orig_traversed)
+	{
+		//reset values
+		P_x_orig = *origin_x_item;
+		P_x_orig.set_subList_ptr(NULL); //clear subList_ptr
+		P_x_orig.set_copy_item(NULL);   //clear copy_item
+		P_x_orig.unmark(); //unmark this element
+		P_x_orig.set_tmp_cross_ref_item(NULL);//clear tmp_cross_ref_item
+
+		//update L_x_copy
+		P_x_copy = P_x_orig;
+		L_x_copy.pushBack(P_x_copy);
+
+		//update L_x_orig
+		P_x_orig.set_copy_item(L_x_copy.rbegin());
+		*origin_x_item = P_x_orig;
+
+		if(origin_x_item != L_x_orig.rbegin())
+			origin_x_item = L_x_orig.cyclicSucc(origin_x_item);
+		else
+			L_x_orig_traversed = true;
+	}
+
+	origin_y_item = L_y_orig.begin();
+	while(!L_y_orig_traversed)
+	{
+		//reset values
+		P_y_orig = *origin_y_item;
+		P_y_orig.set_subList_ptr(NULL); //clear subList_ptr
+		P_y_orig.set_copy_item(NULL);   //clear copy_item
+		P_y_orig.set_tmp_cross_ref_item(NULL);//clear tmp_cross_ref_item
+		P_y_orig.unmark(); //unmark this element
+
+		//update L_x(y)_copy
+		P_y_copy = P_y_orig;
+		new_cross_ref_item = (*P_y_orig.get_cross_ref_item()).get_copy_item();
+		P_y_copy.set_cross_ref_item(new_cross_ref_item);
+		L_y_copy.pushBack(P_y_copy);
+		P_x_copy = *new_cross_ref_item;
+		P_x_copy.set_cross_ref_item(L_y_copy.rbegin());
+		*new_cross_ref_item = P_x_copy;
+
+		//update L_y_orig
+		P_y_orig.set_copy_item(L_y_copy.rbegin());
+		*origin_y_item = P_y_orig;
+
+		if(origin_y_item != L_y_orig.rbegin())
+			origin_y_item = L_y_orig.cyclicSucc(origin_y_item);
+		else
+			L_y_orig_traversed = true;
+	}
+}
+
+
+void NMM::build_up_root_node(
+	const Graph& G,
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T)
+{
+	T.init_tree();
+	T.get_root_ptr()->set_Sm_level(0);
+	T.get_root_ptr()->set_Sm_downleftcorner(down_left_corner);
+	T.get_root_ptr()->set_Sm_boxlength(boxlength);
+	//allocate space for L_x and L_y List of the root node
+	T.get_root_ptr()->set_x_List_ptr(OGDF_NEW List<ParticleInfo>);
+	T.get_root_ptr()->set_y_List_ptr(OGDF_NEW List<ParticleInfo>);
+	create_sorted_coordinate_Lists(G, A, *(T.get_root_ptr()->get_x_List_ptr()), *(T.get_root_ptr()->get_y_List_ptr()));
+}
+
+
+void NMM::create_sorted_coordinate_Lists(
+	const Graph& G,
+	NodeArray <NodeAttributes>& A,
+	List<ParticleInfo>& L_x,
+	List<ParticleInfo>& L_y)
+{
+	ParticleInfo P_x,P_y;
+	ListIterator<ParticleInfo> x_item,y_item;
+	node v;
+
+	//build up L_x,L_y and link the Lists
+	forall_nodes(v,G)
+	{
+		P_x.set_x_y_coord(A[v].get_x());
+		P_y.set_x_y_coord(A[v].get_y());
+		P_x.set_vertex(v);
+		P_y.set_vertex(v);
+		L_x.pushBack(P_x);
+		L_y.pushBack(P_y);
+		P_x.set_cross_ref_item(L_y.rbegin());
+		P_y.set_cross_ref_item(L_x.rbegin());
+		*L_x.rbegin() = P_x;
+		*L_y.rbegin() = P_y;
+	}
+
+
+	//sort L_x and update the links of L_y
+	ParticleInfoComparer comp;
+	L_x.quicksort(comp);//Quicksort L_x
+
+	for(x_item = L_x.begin(); x_item.valid();++x_item)
+	{
+		y_item = (*x_item).get_cross_ref_item();
+		P_y = *y_item;
+		P_y.set_cross_ref_item(x_item);
+		*y_item = P_y;
+	}
+
+	//sort L_y and update the links of L_x
+	L_y.quicksort(comp);//Quicksort L_x
+
+	for(y_item = L_y.begin(); y_item.valid();++y_item)
+	{
+		x_item = (*y_item).get_cross_ref_item();
+		P_x = *x_item;
+		P_x.set_cross_ref_item(y_item);
+		*x_item = P_x;
+	}
+}
+
+
+void NMM::decompose_subtreenode(
+	QuadTreeNM& T,
+	List<ParticleInfo>& act_x_List_copy,
+	List<ParticleInfo>& act_y_List_copy,
+	List<QuadTreeNodeNM*>& new_leaf_List)
+{
+	QuadTreeNodeNM* act_ptr = T.get_act_ptr();
+	int act_particle_number = act_ptr->get_x_List_ptr()->size();
+	double x_min,x_max,y_min,y_max;
+	List<ParticleInfo> *L_x_l_ptr,*L_x_r_ptr,*L_x_lb_ptr,*L_x_rb_ptr,*L_x_lt_ptr,
+		*L_x_rt_ptr;
+	List<ParticleInfo> *L_y_l_ptr,*L_y_r_ptr,*L_y_lb_ptr,*L_y_rb_ptr,*L_y_lt_ptr,
+		*L_y_rt_ptr;
+
+	L_x_l_ptr = L_x_r_ptr = L_x_lb_ptr = L_x_lt_ptr = L_x_rb_ptr = L_x_rt_ptr = NULL;
+	L_y_l_ptr = L_y_r_ptr = L_y_lb_ptr = L_y_lt_ptr = L_y_rb_ptr = L_y_rt_ptr = NULL;
+
+	calculate_boundaries_of_act_node(T.get_act_ptr(),x_min,x_max,y_min,y_max);
+	if(find_sm_cell() == FMMMLayout::scfIteratively)
+		find_small_cell_iteratively(T.get_act_ptr(),x_min,x_max,y_min,y_max);
+	else //find_small_cell == FMMMLayout::scfAluru
+		find_small_cell_iteratively(T.get_act_ptr(),x_min,x_max,y_min,y_max);
+
+	if( (act_particle_number > particles_in_leaves()) &&
+		((x_max-x_min >=MIN_BOX_LENGTH) || (y_max-y_min >= MIN_BOX_LENGTH )))
+	{//if0
+
+		//recursive calls for the half of the quad that contains the most particles
+
+		split_in_x_direction(act_ptr,L_x_l_ptr,L_y_l_ptr,
+			L_x_r_ptr,L_y_r_ptr);
+		if((L_x_r_ptr == NULL) ||
+			(L_x_l_ptr != NULL && L_x_l_ptr->size() > L_x_r_ptr->size()))
+		{//if1 left half contains more particles
+			split_in_y_direction(act_ptr,L_x_lb_ptr,
+				L_y_lb_ptr,L_x_lt_ptr,L_y_lt_ptr);
+			if((L_x_lt_ptr == NULL)||
+				(L_x_lb_ptr != NULL && L_x_lb_ptr->size() > L_x_lt_ptr->size()))
+			{//if2
+				T.create_new_lb_child(L_x_lb_ptr,L_y_lb_ptr);
+				T.go_to_lb_child();
+				decompose_subtreenode(T,act_x_List_copy,act_y_List_copy,new_leaf_List);
+				T.go_to_father();
+			}//if2
+			else //L_x_lt_ptr != NULL &&  L_x_lb_ptr->size() <= L_x_lt_ptr->size()
+			{//else1
+				T.create_new_lt_child(L_x_lt_ptr,L_y_lt_ptr);
+				T.go_to_lt_child();
+				decompose_subtreenode(T,act_x_List_copy,act_y_List_copy,new_leaf_List);
+				T.go_to_father();
+			}//else1
+		}//if1
+		else //L_x_r_ptr != NULL && (L_x_l_ptr->size() <= L_x_r_ptr->size())
+		{//else2 right half contains more particles
+			split_in_y_direction(act_ptr,L_x_rb_ptr,
+				L_y_rb_ptr,L_x_rt_ptr,L_y_rt_ptr);
+			if ((L_x_rt_ptr == NULL) ||
+				(L_x_rb_ptr != NULL && L_x_rb_ptr->size() > L_x_rt_ptr->size()))
+			{//if3
+				T.create_new_rb_child(L_x_rb_ptr,L_y_rb_ptr);
+				T.go_to_rb_child();
+				decompose_subtreenode(T,act_x_List_copy,act_y_List_copy,new_leaf_List);
+				T.go_to_father();
+			}//if3
+			else// L_x_rt_ptr != NULL && L_x_rb_ptr->size() <= L_x_rt_ptr->size()
+			{//else3
+				T.create_new_rt_child(L_x_rt_ptr,L_y_rt_ptr);
+				T.go_to_rt_child();
+				decompose_subtreenode(T,act_x_List_copy,act_y_List_copy,new_leaf_List);
+				T.go_to_father();
+			}//else3
+		}//else2
+
+		//build up the rest of the quad-subLists
+
+		if( L_x_l_ptr != NULL && L_x_lb_ptr == NULL && L_x_lt_ptr == NULL &&
+			!act_ptr->child_lb_exists() && !act_ptr->child_lt_exists() )
+			split_in_y_direction(act_ptr,L_x_l_ptr,L_x_lb_ptr,L_x_lt_ptr,L_y_l_ptr,
+			L_y_lb_ptr,L_y_lt_ptr);
+		else if( L_x_r_ptr != NULL && L_x_rb_ptr == NULL && L_x_rt_ptr == NULL &&
+			!act_ptr->child_rb_exists() && !act_ptr->child_rt_exists() )
+			split_in_y_direction(act_ptr,L_x_r_ptr,L_x_rb_ptr,L_x_rt_ptr,L_y_r_ptr,
+			L_y_rb_ptr,L_y_rt_ptr);
+
+		//create rest of the childnodes
+		if((!act_ptr->child_lb_exists()) && (L_x_lb_ptr != NULL))
+		{
+			T.create_new_lb_child(L_x_lb_ptr,L_y_lb_ptr);
+			T.go_to_lb_child();
+			new_leaf_List.pushBack(T.get_act_ptr());
+			T.go_to_father();
+		}
+		if((!act_ptr->child_lt_exists()) && (L_x_lt_ptr != NULL))
+		{
+			T.create_new_lt_child(L_x_lt_ptr,L_y_lt_ptr);
+			T.go_to_lt_child();
+			new_leaf_List.pushBack(T.get_act_ptr());
+			T.go_to_father();
+		}
+		if((!act_ptr->child_rb_exists()) && (L_x_rb_ptr != NULL))
+		{
+			T.create_new_rb_child(L_x_rb_ptr,L_y_rb_ptr);
+			T.go_to_rb_child();
+			new_leaf_List.pushBack(T.get_act_ptr());
+			T.go_to_father();
+		}
+		if((!act_ptr->child_rt_exists()) && (L_x_rt_ptr != NULL))
+		{
+			T.create_new_rt_child(L_x_rt_ptr,L_y_rt_ptr);
+			T.go_to_rt_child();
+			new_leaf_List.pushBack(T.get_act_ptr());
+			T.go_to_father();
+		}
+		//reset  act_ptr->set_x(y)_List_ptr to avoid multiple deleting of dynamic memory;
+		//(only if *act_ptr is a leaf of T the reserved space is freed (and this is
+		//sufficient !!!))
+		act_ptr->set_x_List_ptr(NULL);
+		act_ptr->set_y_List_ptr(NULL);
+	}//if0
+	else
+	{ //else a leaf or machineprecision is reached:
+		//The List contained_nodes is set for *act_ptr and the information of
+		//act_x_List_copy and act_y_List_copy is used to insert particles into the
+		//shorter Lists of previous touched treenodes;additionaly the dynamical allocated
+		//space for *act_ptr->get_x(y)_List_ptr() is freed.
+
+		List<node> L;
+		ListIterator<ParticleInfo> it;
+
+		//set List contained nodes
+
+		L.clear();
+		for(it = act_ptr->get_x_List_ptr()->begin();it.valid();++it)
+			L.pushBack((*it).get_vertex());
+		T.get_act_ptr()->set_contained_nodes(L);
+
+		//insert particles into previous touched Lists
+
+		build_up_sorted_subLists(act_x_List_copy,act_y_List_copy);
+
+		//free allocated space for *act_ptr->get_x(y)_List_ptr()
+		act_ptr->get_x_List_ptr()->clear();//free used space for old L_x,L_y Lists
+		act_ptr->get_y_List_ptr()->clear();
+	}//else
+}
+
+
+inline void NMM::calculate_boundaries_of_act_node(
+	QuadTreeNodeNM* act_ptr,
+	double& x_min,
+	double& x_max,
+	double& y_min,
+	double& y_max)
+{
+	List<ParticleInfo>* L_x_ptr =  act_ptr->get_x_List_ptr();
+	List<ParticleInfo>* L_y_ptr =  act_ptr->get_y_List_ptr();
+
+	x_min = (*L_x_ptr->begin()).get_x_y_coord();
+	x_max = (*L_x_ptr->rbegin()).get_x_y_coord();
+	y_min = (*L_y_ptr->begin()).get_x_y_coord();
+	y_max = (*L_y_ptr->rbegin()).get_x_y_coord();
+}
+
+
+bool NMM::in_lt_quad(
+	QuadTreeNodeNM* act_ptr,
+	double x_min,
+	double x_max,
+	double y_min,
+	double y_max)
+{
+	double l = act_ptr->get_Sm_downleftcorner().m_x;
+	double r = act_ptr->get_Sm_downleftcorner().m_x+act_ptr->get_Sm_boxlength()/2;
+	double b = act_ptr->get_Sm_downleftcorner().m_y+act_ptr->get_Sm_boxlength()/2;
+	double t = act_ptr->get_Sm_downleftcorner().m_y+act_ptr->get_Sm_boxlength();
+
+	if(l <= x_min && x_max < r && b <= y_min && y_max < t )
+		return true;
+	else if(x_min == x_max && y_min == y_max && l==r && t == b && x_min ==r && y_min ==b)
+		return true;
+	else
+		return false;
+}
+
+
+bool NMM::in_rt_quad(
+	QuadTreeNodeNM* act_ptr,
+	double x_min,
+	double x_max,
+	double y_min,
+	double y_max)
+{
+	double l = act_ptr->get_Sm_downleftcorner().m_x+act_ptr->get_Sm_boxlength()/2;
+	double r = act_ptr->get_Sm_downleftcorner().m_x+act_ptr->get_Sm_boxlength();
+	double b = act_ptr->get_Sm_downleftcorner().m_y+act_ptr->get_Sm_boxlength()/2;
+	double t = act_ptr->get_Sm_downleftcorner().m_y+act_ptr->get_Sm_boxlength();
+
+	if(l <= x_min && x_max < r && b <= y_min && y_max < t )
+		return true;
+	else if(x_min == x_max && y_min == y_max && l==r && t == b && x_min ==r && y_min ==b)
+		return true;
+	else
+		return false;
+}
+
+
+bool NMM::in_lb_quad(
+	QuadTreeNodeNM* act_ptr,
+	double x_min,
+	double x_max,
+	double y_min,
+	double y_max)
+{
+	double l = act_ptr->get_Sm_downleftcorner().m_x;
+	double r = act_ptr->get_Sm_downleftcorner().m_x+act_ptr->get_Sm_boxlength()/2;
+	double b = act_ptr->get_Sm_downleftcorner().m_y;
+	double t = act_ptr->get_Sm_downleftcorner().m_y+act_ptr->get_Sm_boxlength()/2;
+
+	if(l <= x_min && x_max < r && b <= y_min && y_max < t )
+		return true;
+	else if(x_min == x_max && y_min == y_max && l==r && t == b && x_min ==r && y_min ==b)
+		return true;
+	else
+		return false;
+}
+
+
+bool NMM::in_rb_quad(
+	QuadTreeNodeNM* act_ptr,
+	double x_min,
+	double x_max,
+	double y_min,
+	double y_max)
+{
+	double l = act_ptr->get_Sm_downleftcorner().m_x+act_ptr->get_Sm_boxlength()/2;
+	double r = act_ptr->get_Sm_downleftcorner().m_x+act_ptr->get_Sm_boxlength();
+	double b = act_ptr->get_Sm_downleftcorner().m_y;
+	double t = act_ptr->get_Sm_downleftcorner().m_y+act_ptr->get_Sm_boxlength()/2;
+
+	if(l <= x_min && x_max < r && b <= y_min && y_max < t )
+		return true;
+	else if(x_min == x_max && y_min == y_max && l==r && t == b && x_min ==r && y_min ==b)
+		return true;
+	else
+		return false;
+}
+
+
+void NMM::split_in_x_direction(
+	QuadTreeNodeNM* act_ptr,
+	List <ParticleInfo>*& L_x_left_ptr,
+	List<ParticleInfo>*& L_y_left_ptr,
+	List <ParticleInfo>*& L_x_right_ptr,
+	List<ParticleInfo>*& L_y_right_ptr)
+{
+	ListIterator<ParticleInfo> l_item = act_ptr->get_x_List_ptr()->begin();
+	ListIterator<ParticleInfo> r_item = act_ptr->get_x_List_ptr()->rbegin();
+	ListIterator<ParticleInfo> last_left_item;
+	double act_Sm_boxlength_half = act_ptr->get_Sm_boxlength()/2;
+	double x_mid_coord = act_ptr->get_Sm_downleftcorner().m_x+ act_Sm_boxlength_half;
+	double l_xcoord,r_xcoord;
+	bool last_left_item_found = false;
+	bool left_particleList_empty = false;
+	bool right_particleList_empty = false;
+	bool left_particleList_larger = true;
+
+	//traverse *act_ptr->get_x_List_ptr() from left and right
+
+	while(!last_left_item_found)
+	{//while
+		l_xcoord = (*l_item).get_x_y_coord();
+		r_xcoord = (*r_item).get_x_y_coord();
+		if(l_xcoord >= x_mid_coord)
+		{
+			left_particleList_larger = false;
+			last_left_item_found = true;
+			if(l_item != act_ptr->get_x_List_ptr()->begin())
+				last_left_item = act_ptr->get_x_List_ptr()->cyclicPred(l_item);
+			else
+				left_particleList_empty = true;
+		}
+		else if(r_xcoord < x_mid_coord)
+		{
+			last_left_item_found = true;
+			if(r_item != act_ptr->get_x_List_ptr()->rbegin())
+				last_left_item = r_item;
+			else
+				right_particleList_empty = true;
+		}
+		if(!last_left_item_found)
+		{
+			l_item = act_ptr->get_x_List_ptr()->cyclicSucc(l_item);
+			r_item = act_ptr->get_x_List_ptr()->cyclicPred(r_item);
+		}
+	}//while
+
+	//get the L_x(y) Lists of the bigger half (from *act_ptr->get_x(y)_List_ptr))
+	//and make entries in L_x_copy,L_y_copy for the smaller halfs
+
+	if(left_particleList_empty)
+	{
+		L_x_left_ptr = NULL;
+		L_y_left_ptr = NULL;
+		L_x_right_ptr = act_ptr->get_x_List_ptr();
+		L_y_right_ptr = act_ptr->get_y_List_ptr();
+	}
+	else if(right_particleList_empty)
+	{
+		L_x_left_ptr = act_ptr->get_x_List_ptr();
+		L_y_left_ptr = act_ptr->get_y_List_ptr();
+		L_x_right_ptr = NULL;
+		L_y_right_ptr = NULL;
+	}
+	else if(left_particleList_larger)
+		x_delete_right_subLists(act_ptr,L_x_left_ptr,L_y_left_ptr,
+			L_x_right_ptr,L_y_right_ptr,last_left_item);
+	else //left particleList is smaller or equal to right particleList
+		x_delete_left_subLists(act_ptr,L_x_left_ptr,L_y_left_ptr,
+			L_x_right_ptr,L_y_right_ptr,last_left_item);
+}
+
+
+void NMM::split_in_y_direction(
+	QuadTreeNodeNM* act_ptr,
+	List<ParticleInfo>*& L_x_left_ptr,
+	List<ParticleInfo>*& L_y_left_ptr,
+	List<ParticleInfo>*& L_x_right_ptr,
+	List<ParticleInfo>*& L_y_right_ptr)
+{
+	ListIterator<ParticleInfo> l_item = act_ptr->get_y_List_ptr()->begin();
+	ListIterator<ParticleInfo> r_item = act_ptr->get_y_List_ptr()->rbegin();
+	ListIterator<ParticleInfo> last_left_item;
+	double act_Sm_boxlength_half = act_ptr->get_Sm_boxlength()/2;
+	double y_mid_coord = act_ptr->get_Sm_downleftcorner().m_y+ act_Sm_boxlength_half;
+	double l_ycoord,r_ycoord;
+	bool last_left_item_found = false;
+	bool left_particleList_empty = false;
+	bool right_particleList_empty = false;
+	bool left_particleList_larger = true;
+	//traverse *act_ptr->get_y_List_ptr() from left and right
+
+	while(!last_left_item_found)
+	{//while
+		l_ycoord = (*l_item).get_x_y_coord();
+		r_ycoord = (*r_item).get_x_y_coord();
+		if(l_ycoord >= y_mid_coord)
+		{
+			left_particleList_larger = false;
+			last_left_item_found = true;
+			if(l_item != act_ptr->get_y_List_ptr()->begin())
+				last_left_item = act_ptr->get_y_List_ptr()->cyclicPred(l_item);
+			else
+				left_particleList_empty = true;
+		}
+		else if(r_ycoord < y_mid_coord)
+		{
+			last_left_item_found = true;
+			if(r_item != act_ptr->get_y_List_ptr()->rbegin())
+				last_left_item = r_item;
+			else
+				right_particleList_empty = true;
+		}
+		if(!last_left_item_found)
+		{
+			l_item = act_ptr->get_y_List_ptr()->cyclicSucc(l_item);
+			r_item = act_ptr->get_y_List_ptr()->cyclicPred(r_item);
+		}
+	}//while
+
+	//get the L_x(y) Lists of the bigger half (from *act_ptr->get_x(y)_List_ptr))
+	//and make entries in L_x_copy,L_y_copy for the smaller halfs
+
+	if(left_particleList_empty)
+	{
+		L_x_left_ptr = NULL;
+		L_y_left_ptr = NULL;
+		L_x_right_ptr = act_ptr->get_x_List_ptr();
+		L_y_right_ptr = act_ptr->get_y_List_ptr();
+	}
+	else if(right_particleList_empty)
+	{
+		L_x_left_ptr = act_ptr->get_x_List_ptr();
+		L_y_left_ptr = act_ptr->get_y_List_ptr();
+		L_x_right_ptr = NULL;
+		L_y_right_ptr = NULL;
+	}
+	else if(left_particleList_larger)
+		y_delete_right_subLists(act_ptr,L_x_left_ptr,L_y_left_ptr,
+			L_x_right_ptr,L_y_right_ptr,last_left_item);
+	else //left particleList is smaller or equal to right particleList
+		y_delete_left_subLists(act_ptr,L_x_left_ptr,L_y_left_ptr,
+			L_x_right_ptr,L_y_right_ptr,last_left_item);
+}
+
+
+void NMM::x_delete_right_subLists(
+	QuadTreeNodeNM* act_ptr,
+	List <ParticleInfo>*& L_x_left_ptr,
+	List<ParticleInfo>*& L_y_left_ptr,
+	List <ParticleInfo>*& L_x_right_ptr,
+	List<ParticleInfo>*& L_y_right_ptr,
+	ListIterator<ParticleInfo> last_left_item)
+{
+	ParticleInfo act_p_info,p_in_L_x_info,p_in_L_y_info,del_p_info;
+	ListIterator<ParticleInfo> act_item,p_in_L_x_item,p_in_L_y_item,del_item;
+	bool last_item_reached =false;
+
+	L_x_left_ptr = act_ptr->get_x_List_ptr();
+	L_y_left_ptr = act_ptr->get_y_List_ptr();
+	L_x_right_ptr = OGDF_NEW List<ParticleInfo>;
+	L_y_right_ptr = OGDF_NEW List<ParticleInfo>;
+
+	act_item = L_x_left_ptr->cyclicSucc(last_left_item);
+
+	while(!last_item_reached)
+	{//while
+		act_p_info = *act_item;
+		del_item = act_item;
+		del_p_info = act_p_info;
+
+		//save references for *L_x(y)_right_ptr in L_x(y)_copy
+		p_in_L_x_item = act_p_info.get_copy_item();
+		p_in_L_x_info = *p_in_L_x_item;
+		p_in_L_x_info.set_subList_ptr(L_x_right_ptr);
+		*p_in_L_x_item = p_in_L_x_info;
+
+		p_in_L_y_item = (*act_p_info.get_cross_ref_item()).get_copy_item();
+		p_in_L_y_info = *p_in_L_y_item;
+		p_in_L_y_info.set_subList_ptr(L_y_right_ptr);
+		*p_in_L_y_item = p_in_L_y_info;
+
+		if(act_item != L_x_left_ptr->rbegin())
+			act_item = L_x_left_ptr->cyclicSucc(act_item);
+		else
+			last_item_reached = true;
+
+		//create *L_x(y)_left_ptr
+		L_y_left_ptr->del(del_p_info.get_cross_ref_item());
+		L_x_left_ptr->del(del_item);
+	}//while
+}
+
+
+void NMM::x_delete_left_subLists(
+	QuadTreeNodeNM* act_ptr,
+	List <ParticleInfo>*& L_x_left_ptr,
+	List<ParticleInfo>*& L_y_left_ptr,
+	List <ParticleInfo>*& L_x_right_ptr,
+	List<ParticleInfo>*& L_y_right_ptr,
+	ListIterator<ParticleInfo> last_left_item)
+{
+	ParticleInfo act_p_info,p_in_L_x_info,p_in_L_y_info,del_p_info;
+	ListIterator<ParticleInfo> act_item,p_in_L_x_item,p_in_L_y_item,del_item;
+	bool last_item_reached =false;
+
+	L_x_right_ptr = act_ptr->get_x_List_ptr();
+	L_y_right_ptr = act_ptr->get_y_List_ptr();
+	L_x_left_ptr = OGDF_NEW List<ParticleInfo>;
+	L_y_left_ptr = OGDF_NEW List<ParticleInfo>;
+
+	act_item = L_x_right_ptr->begin();
+
+	while(!last_item_reached)
+	{//while
+		act_p_info = *act_item;
+		del_item = act_item;
+		del_p_info = act_p_info;
+
+		//save references for *L_x(y)_right_ptr in L_x(y)_copy
+		p_in_L_x_item = act_p_info.get_copy_item();
+		p_in_L_x_info = *p_in_L_x_item;
+		p_in_L_x_info.set_subList_ptr(L_x_left_ptr);
+		*p_in_L_x_item = p_in_L_x_info;
+
+		p_in_L_y_item =(*act_p_info.get_cross_ref_item()).get_copy_item();
+		p_in_L_y_info = *p_in_L_y_item;
+		p_in_L_y_info.set_subList_ptr(L_y_left_ptr);
+		*p_in_L_y_item = p_in_L_y_info;
+
+		if(act_item != last_left_item)
+			act_item = L_x_right_ptr->cyclicSucc(act_item);
+		else
+			last_item_reached = true;
+
+		//create *L_x(y)_right_ptr
+		L_y_right_ptr->del(del_p_info.get_cross_ref_item());
+		L_x_right_ptr->del(del_item);
+	}//while
+}
+
+
+void NMM::y_delete_right_subLists(
+	QuadTreeNodeNM* act_ptr,
+	List <ParticleInfo>*& L_x_left_ptr,
+	List<ParticleInfo>*& L_y_left_ptr,
+	List <ParticleInfo>*& L_x_right_ptr,
+	List<ParticleInfo>*& L_y_right_ptr,
+	ListIterator<ParticleInfo> last_left_item)
+{
+	ParticleInfo act_p_info,p_in_L_x_info,p_in_L_y_info,del_p_info;
+	ListIterator<ParticleInfo> act_item,p_in_L_x_item,p_in_L_y_item,del_item;
+	bool last_item_reached =false;
+
+	L_x_left_ptr = act_ptr->get_x_List_ptr();
+	L_y_left_ptr = act_ptr->get_y_List_ptr();
+	L_x_right_ptr = OGDF_NEW List<ParticleInfo>;
+	L_y_right_ptr = OGDF_NEW List<ParticleInfo>;
+
+	act_item = L_y_left_ptr->cyclicSucc(last_left_item);
+
+	while(!last_item_reached)
+	{//while
+		act_p_info = *act_item;
+		del_item = act_item;
+		del_p_info = act_p_info;
+
+		//save references for *L_x(y)_right_ptr in L_x(y)_copy
+		p_in_L_y_item = act_p_info.get_copy_item();
+		p_in_L_y_info = *p_in_L_y_item;
+		p_in_L_y_info.set_subList_ptr(L_y_right_ptr);
+		*p_in_L_y_item = p_in_L_y_info;
+
+		p_in_L_x_item = (*act_p_info.get_cross_ref_item()).get_copy_item();
+		p_in_L_x_info = *p_in_L_x_item;
+		p_in_L_x_info.set_subList_ptr(L_x_right_ptr);
+		*p_in_L_x_item = p_in_L_x_info;
+
+		if(act_item != L_y_left_ptr->rbegin())
+			act_item = L_y_left_ptr->cyclicSucc(act_item);
+		else
+			last_item_reached = true;
+
+		//create *L_x(y)_left_ptr
+		L_x_left_ptr->del(del_p_info.get_cross_ref_item());
+		L_y_left_ptr->del(del_item);
+	}//while
+}
+
+
+void NMM::y_delete_left_subLists(
+	QuadTreeNodeNM* act_ptr,
+	List<ParticleInfo>*& L_x_left_ptr,
+	List<ParticleInfo>*& L_y_left_ptr,
+	List <ParticleInfo>*& L_x_right_ptr,
+	List<ParticleInfo>*& L_y_right_ptr,
+	ListIterator<ParticleInfo> last_left_item)
+{
+	ParticleInfo act_p_info,p_in_L_x_info,p_in_L_y_info,del_p_info;
+	ListIterator<ParticleInfo> act_item,p_in_L_x_item,p_in_L_y_item,del_item;
+	bool last_item_reached =false;
+
+	L_x_right_ptr = act_ptr->get_x_List_ptr();
+	L_y_right_ptr = act_ptr->get_y_List_ptr();
+	L_x_left_ptr = OGDF_NEW List<ParticleInfo>;
+	L_y_left_ptr = OGDF_NEW List<ParticleInfo>;
+
+	act_item = L_y_right_ptr->begin();
+
+	while(!last_item_reached)
+	{//while
+		act_p_info = *act_item;
+		del_item = act_item;
+		del_p_info = act_p_info;
+
+		//save references for *L_x(y)_right_ptr in L_x(y)_copy
+		p_in_L_y_item = act_p_info.get_copy_item();
+		p_in_L_y_info = *p_in_L_y_item;
+		p_in_L_y_info.set_subList_ptr(L_y_left_ptr);
+		*p_in_L_y_item = p_in_L_y_info;
+
+		p_in_L_x_item = (*act_p_info.get_cross_ref_item()).get_copy_item();
+		p_in_L_x_info = *p_in_L_x_item;
+		p_in_L_x_info.set_subList_ptr(L_x_left_ptr);
+		*p_in_L_x_item = p_in_L_x_info;
+
+		if(act_item != last_left_item)
+			act_item = L_y_right_ptr->cyclicSucc(act_item);
+		else
+			last_item_reached = true;
+
+		//create *L_x(y)_right_ptr
+		L_x_right_ptr->del(del_p_info.get_cross_ref_item());
+		L_y_right_ptr->del(del_item);
+	}//while
+}
+
+
+void NMM::split_in_y_direction(
+	QuadTreeNodeNM* act_ptr,
+	List<ParticleInfo>*& L_x_ptr,
+	List<ParticleInfo>*& L_x_b_ptr,
+	List<ParticleInfo>*& L_x_t_ptr,
+	List<ParticleInfo>*& L_y_ptr,
+	List<ParticleInfo>*& L_y_b_ptr,
+	List<ParticleInfo>*& L_y_t_ptr)
+{
+	ListIterator<ParticleInfo> l_item = L_y_ptr->begin();
+	ListIterator<ParticleInfo> r_item = L_y_ptr->rbegin();
+	ListIterator<ParticleInfo> last_left_item;
+	double act_Sm_boxlength_half = act_ptr->get_Sm_boxlength()/2;
+	double y_mid_coord = act_ptr->get_Sm_downleftcorner().m_y+ act_Sm_boxlength_half;
+	double l_ycoord,r_ycoord;
+	bool last_left_item_found = false;
+	bool left_particleList_empty = false;
+	bool right_particleList_empty = false;
+	bool left_particleList_larger = true;
+
+	//traverse *L_y_ptr from left and right
+
+	while(!last_left_item_found)
+	{//while
+		l_ycoord = (*l_item).get_x_y_coord();
+		r_ycoord = (*r_item).get_x_y_coord();
+		if(l_ycoord >= y_mid_coord)
+		{
+			left_particleList_larger = false;
+			last_left_item_found = true;
+			if(l_item != L_y_ptr->begin())
+				last_left_item = L_y_ptr->cyclicPred(l_item);
+			else
+				left_particleList_empty = true;
+		}
+		else if(r_ycoord < y_mid_coord)
+		{
+			last_left_item_found = true;
+			if(r_item != L_y_ptr->rbegin())
+				last_left_item = r_item;
+			else
+				right_particleList_empty = true;
+		}
+		if(!last_left_item_found)
+		{
+			l_item = L_y_ptr->cyclicSucc(l_item);
+			r_item = L_y_ptr->cyclicPred(r_item);
+		}
+	}//while
+
+ //create *L_x_l(b)_ptr
+
+	if(left_particleList_empty)
+	{
+		L_x_b_ptr = NULL;
+		L_y_b_ptr = NULL;
+		L_x_t_ptr = L_x_ptr;
+		L_y_t_ptr = L_y_ptr;
+	}
+	else if(right_particleList_empty)
+	{
+		L_x_b_ptr = L_x_ptr;
+		L_y_b_ptr = L_y_ptr;
+		L_x_t_ptr = NULL;
+		L_y_t_ptr = NULL;
+	}
+	else if(left_particleList_larger)
+		y_move_right_subLists(L_x_ptr,L_x_b_ptr,L_x_t_ptr,L_y_ptr,L_y_b_ptr,L_y_t_ptr,
+			last_left_item);
+	else //left particleList is smaller or equal to right particleList
+		y_move_left_subLists(L_x_ptr,L_x_b_ptr,L_x_t_ptr,L_y_ptr,L_y_b_ptr,L_y_t_ptr,
+			last_left_item);
+}
+
+
+void NMM::y_move_left_subLists(
+	List<ParticleInfo>*& L_x_ptr,
+	List <ParticleInfo>*& L_x_l_ptr,
+	List<ParticleInfo>*& L_x_r_ptr,
+	List<ParticleInfo>*& L_y_ptr,
+	List <ParticleInfo>*& L_y_l_ptr,
+	List<ParticleInfo>*& L_y_r_ptr,
+	ListIterator<ParticleInfo> last_left_item)
+{
+	ParticleInfo p_in_L_x_info,p_in_L_y_info;
+	ListIterator<ParticleInfo> p_in_L_x_item,p_in_L_y_item,del_item;
+	bool last_item_reached =false;
+
+	L_x_r_ptr = L_x_ptr;
+	L_y_r_ptr = L_y_ptr;
+	L_x_l_ptr = OGDF_NEW List<ParticleInfo>;
+	L_y_l_ptr = OGDF_NEW List<ParticleInfo>;
+
+	p_in_L_y_item = L_y_r_ptr->begin();
+
+	//build up the L_y_Lists and update crossreferences in *L_x_l_ptr
+	while(!last_item_reached)
+	{//while
+		p_in_L_y_info = *p_in_L_y_item;
+		del_item = p_in_L_y_item;
+
+		//create *L_x(y)_l_ptr
+		L_y_l_ptr->pushBack(p_in_L_y_info);
+		p_in_L_x_item = p_in_L_y_info.get_cross_ref_item();
+		p_in_L_x_info = *p_in_L_x_item;
+		p_in_L_x_info.set_cross_ref_item(L_y_l_ptr->rbegin());
+		p_in_L_x_info.mark(); //mark this element of the List
+		*p_in_L_x_item = p_in_L_x_info;
+
+		if(p_in_L_y_item != last_left_item)
+			p_in_L_y_item = L_y_r_ptr->cyclicSucc(p_in_L_y_item);
+		else
+			last_item_reached = true;
+
+		//create *L_y_r_ptr
+		L_y_r_ptr->del(del_item);
+	}//while
+
+	//build up the L_x Lists and update crossreferences in *L_y_l_ptr
+
+	last_item_reached = false;
+	p_in_L_x_item = L_x_r_ptr->begin();
+
+	while(!last_item_reached)
+	{//while
+		del_item = p_in_L_x_item;
+
+		if((*del_item).is_marked())
+		{
+			p_in_L_x_info = *p_in_L_x_item;
+			p_in_L_x_info.unmark();
+			L_x_l_ptr->pushBack(p_in_L_x_info);
+			p_in_L_y_item = p_in_L_x_info.get_cross_ref_item();
+			p_in_L_y_info = *p_in_L_y_item;
+			p_in_L_y_info.set_cross_ref_item(L_x_l_ptr->rbegin());
+			*p_in_L_y_item = p_in_L_y_info;
+		}
+
+		if(p_in_L_x_item != L_x_r_ptr->rbegin())
+			p_in_L_x_item = L_x_r_ptr->cyclicSucc(p_in_L_x_item);
+		else
+			last_item_reached = true;
+
+		//create *L_x_r_ptr
+		if((*del_item).is_marked())
+			L_x_r_ptr->del(del_item);
+	}//while
+}
+
+
+void NMM::y_move_right_subLists(
+	List<ParticleInfo>*& L_x_ptr,
+	List <ParticleInfo>*& L_x_l_ptr,
+	List<ParticleInfo>*& L_x_r_ptr,
+	List<ParticleInfo>*& L_y_ptr,
+	List <ParticleInfo>*& L_y_l_ptr,
+	List<ParticleInfo>*& L_y_r_ptr,
+	ListIterator<ParticleInfo> last_left_item)
+{
+	ParticleInfo p_in_L_x_info,p_in_L_y_info;
+	ListIterator<ParticleInfo> p_in_L_x_item,p_in_L_y_item,del_item;
+	bool last_item_reached =false;
+
+	L_x_l_ptr = L_x_ptr;
+	L_y_l_ptr = L_y_ptr;
+	L_x_r_ptr = OGDF_NEW List<ParticleInfo>;
+	L_y_r_ptr = OGDF_NEW List<ParticleInfo>;
+
+	p_in_L_y_item = L_y_l_ptr->cyclicSucc(last_left_item);
+
+	//build up the L_y_Lists and update crossreferences in *L_x_r_ptr
+	while(!last_item_reached)
+	{//while
+		p_in_L_y_info = *p_in_L_y_item;
+		del_item = p_in_L_y_item;
+
+		//create *L_x(y)_r_ptr
+		L_y_r_ptr->pushBack(p_in_L_y_info);
+		p_in_L_x_item = p_in_L_y_info.get_cross_ref_item();
+		p_in_L_x_info = *p_in_L_x_item;
+		p_in_L_x_info.set_cross_ref_item(L_y_r_ptr->rbegin());
+		p_in_L_x_info.mark(); //mark this element of the List
+		*p_in_L_x_item = p_in_L_x_info;
+
+		if(p_in_L_y_item != L_y_l_ptr->rbegin())
+			p_in_L_y_item = L_y_l_ptr->cyclicSucc(p_in_L_y_item);
+		else
+			last_item_reached = true;
+
+		//create *L_y_l_ptr
+		L_y_l_ptr->del(del_item);
+	}//while
+
+	//build up the L_x Lists and update crossreferences in *L_y_r_ptr
+
+	last_item_reached = false;
+	p_in_L_x_item = L_x_l_ptr->begin();
+
+	while(!last_item_reached)
+	{//while
+		del_item = p_in_L_x_item;
+
+		if((*del_item).is_marked())
+		{
+			p_in_L_x_info = *p_in_L_x_item;
+			p_in_L_x_info.unmark();
+			L_x_r_ptr->pushBack(p_in_L_x_info);
+			p_in_L_y_item = p_in_L_x_info.get_cross_ref_item();
+			p_in_L_y_info = *p_in_L_y_item;
+			p_in_L_y_info.set_cross_ref_item(L_x_r_ptr->rbegin());
+			*p_in_L_y_item = p_in_L_y_info;
+		}
+
+		if(p_in_L_x_item != L_x_l_ptr->rbegin())
+			p_in_L_x_item = L_x_l_ptr->cyclicSucc(p_in_L_x_item);
+		else
+			last_item_reached = true;
+
+		//create *L_x_r_ptr
+		if((*del_item).is_marked())
+			L_x_l_ptr->del(del_item);
+	}//while
+}
+
+
+void NMM::build_up_sorted_subLists(
+	List<ParticleInfo>& L_x_copy,
+	List<ParticleInfo>& L_y_copy)
+{
+	ParticleInfo P_x,P_y;
+	List<ParticleInfo>  *L_x_ptr,*L_y_ptr;
+	ListIterator<ParticleInfo> it,new_cross_ref_item;
+
+	for(it = L_x_copy.begin();it.valid();++it)
+		if((*it).get_subList_ptr() != NULL)
+		{
+			//reset values
+			P_x = *it;
+			L_x_ptr = P_x.get_subList_ptr();
+			P_x.set_subList_ptr(NULL); //clear subList_ptr
+			P_x.set_copy_item(NULL);   //clear copy_item
+			P_x.unmark(); //unmark this element
+			P_x.set_tmp_cross_ref_item(NULL);//clear tmp_cross_ref_item
+
+			//update *L_x_ptr
+			L_x_ptr->pushBack(P_x);
+
+			//update L_x_copy
+			P_x.set_tmp_cross_ref_item(L_x_ptr->rbegin());
+			*it = P_x;
+		}
+
+	for(it = L_y_copy.begin();it.valid();++it)
+		if((*it).get_subList_ptr() != NULL)
+		{
+			//reset values
+			P_y = *it;
+			L_y_ptr = P_y.get_subList_ptr();
+			P_y.set_subList_ptr(NULL); //clear subList_ptr
+			P_y.set_copy_item(NULL);   //clear copy_item
+			P_y.unmark(); //unmark this element
+			P_y.set_tmp_cross_ref_item(NULL);//clear tmp_cross_ref_item
+
+			//update *L_x(y)_ptr
+
+			new_cross_ref_item = (*P_y.get_cross_ref_item()).get_tmp_cross_ref_item();
+			P_y.set_cross_ref_item(new_cross_ref_item);
+			L_y_ptr->pushBack(P_y);
+			P_x  = *new_cross_ref_item;
+			P_x.set_cross_ref_item(L_y_ptr->rbegin());
+			*new_cross_ref_item = P_x;
+		}
+}
+
+
+// **********Functions needed for subtree by subtree  tree construction(Begin)*********
+
+void NMM::build_up_red_quad_tree_subtree_by_subtree(
+	const Graph& G,
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T)
+{
+	List<QuadTreeNodeNM*> act_subtree_root_List,new_subtree_root_List;
+	List<QuadTreeNodeNM*> *act_subtree_root_List_ptr,*new_subtree_root_List_ptr,*help_ptr;
+	QuadTreeNodeNM *subtree_root_ptr;
+
+	build_up_root_vertex(G,T);
+
+	act_subtree_root_List.clear();
+	new_subtree_root_List.clear();
+	act_subtree_root_List.pushFront(T.get_root_ptr());
+	act_subtree_root_List_ptr = &act_subtree_root_List;
+	new_subtree_root_List_ptr = &new_subtree_root_List;
+
+	while(!act_subtree_root_List_ptr->empty())
+	{
+		while(!act_subtree_root_List_ptr->empty())
+		{
+			subtree_root_ptr = act_subtree_root_List_ptr->popFrontRet();
+			construct_subtree(A,T,subtree_root_ptr,*new_subtree_root_List_ptr);
+		}
+		help_ptr = act_subtree_root_List_ptr;
+		act_subtree_root_List_ptr = new_subtree_root_List_ptr;
+		new_subtree_root_List_ptr = help_ptr;
+	}
+}
+
+
+void NMM::build_up_root_vertex(const Graph&G, QuadTreeNM& T)
+{
+	node v;
+
+	T.init_tree();
+	T.get_root_ptr()->set_Sm_level(0);
+	T.get_root_ptr()->set_Sm_downleftcorner(down_left_corner);
+	T.get_root_ptr()->set_Sm_boxlength(boxlength);
+	T.get_root_ptr()->set_particlenumber_in_subtree(G.numberOfNodes());
+	forall_nodes(v,G)
+		T.get_root_ptr()->pushBack_contained_nodes(v);
+}
+
+
+void NMM::construct_subtree(
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T,
+	QuadTreeNodeNM *subtree_root_ptr,
+	List<QuadTreeNodeNM*>& new_subtree_root_List)
+{
+	int n = subtree_root_ptr->get_particlenumber_in_subtree();
+	int subtree_depth =  static_cast<int>(max(1.0,floor(Math::log4(n))-2.0));
+	int maxindex=1;
+
+	for(int i=1; i<=subtree_depth; i++)
+		maxindex *= 2;
+	double subtree_min_boxlength = subtree_root_ptr->get_Sm_boxlength()/maxindex;
+
+	if(subtree_min_boxlength >=  MIN_BOX_LENGTH)
+	{
+		Array2D<QuadTreeNodeNM*> leaf_ptr(0,maxindex-1,0,maxindex-1);
+		T.set_act_ptr(subtree_root_ptr);
+		if (find_smallest_quad(A,T)) //not all nodes have the same position
+		{
+			construct_complete_subtree(T,subtree_depth,leaf_ptr,0,0,0);
+			set_contained_nodes_for_leaves(A,subtree_root_ptr,leaf_ptr,maxindex);
+			T.set_act_ptr(subtree_root_ptr);
+			set_particlenumber_in_subtree_entries(T);
+			T.set_act_ptr(subtree_root_ptr);
+			construct_reduced_subtree(A,T,new_subtree_root_List);
+		}
+	}
+}
+
+
+void NMM::construct_complete_subtree(
+	QuadTreeNM& T,
+	int subtree_depth,
+	Array2D<QuadTreeNodeNM*>& leaf_ptr,
+	int act_depth,
+	int act_x_index,
+	int act_y_index)
+{
+	if(act_depth < subtree_depth)
+	{
+		T.create_new_lt_child();
+		T.create_new_rt_child();
+		T.create_new_lb_child();
+		T.create_new_rb_child();
+
+		T.go_to_lt_child();
+		construct_complete_subtree(T,subtree_depth,leaf_ptr,act_depth+1,2*act_x_index,
+						2*act_y_index+1);
+		T.go_to_father();
+
+		T.go_to_rt_child();
+		construct_complete_subtree(T,subtree_depth,leaf_ptr,act_depth+1,2*act_x_index+1,
+						2*act_y_index+1);
+		T.go_to_father();
+
+		T.go_to_lb_child();
+		construct_complete_subtree(T,subtree_depth,leaf_ptr,act_depth+1,2*act_x_index,
+						2*act_y_index);
+		T.go_to_father();
+
+		T.go_to_rb_child();
+		construct_complete_subtree(T,subtree_depth,leaf_ptr,act_depth+1,2*act_x_index+1,
+						2*act_y_index);
+		T.go_to_father();
+	}
+	else if (act_depth == subtree_depth)
+	{
+		leaf_ptr(act_x_index,act_y_index) = T.get_act_ptr();
+	}
+	else
+		cout<<"Error NMM::construct_complete_subtree()"<<endl;
+}
+
+
+void NMM::set_contained_nodes_for_leaves(
+	NodeArray<NodeAttributes> &A,
+	QuadTreeNodeNM* subtree_root_ptr,
+	Array2D<QuadTreeNodeNM*> &leaf_ptr,
+	int maxindex)
+{
+	node v;
+	QuadTreeNodeNM* act_ptr;
+	double xcoord,ycoord;
+	int x_index,y_index;
+	double minboxlength = subtree_root_ptr->get_Sm_boxlength()/maxindex;
+
+	while(!subtree_root_ptr->contained_nodes_empty())
+	{
+		v = subtree_root_ptr->pop_contained_nodes();
+		xcoord = A[v].get_x()-subtree_root_ptr->get_Sm_downleftcorner().m_x;
+		ycoord = A[v].get_y()-subtree_root_ptr->get_Sm_downleftcorner().m_y;;
+		x_index = int(xcoord/minboxlength);
+		y_index = int(ycoord/minboxlength);
+		act_ptr = leaf_ptr(x_index,y_index);
+		act_ptr->pushBack_contained_nodes(v);
+		act_ptr->set_particlenumber_in_subtree(act_ptr->get_particlenumber_in_subtree()+1);
+	}
+}
+
+
+void NMM::set_particlenumber_in_subtree_entries(QuadTreeNM& T)
+{
+	int child_nr;
+
+	if(!T.get_act_ptr()->is_leaf())
+	{//if
+		T.get_act_ptr()->set_particlenumber_in_subtree(0);
+
+		if (T.get_act_ptr()->child_lt_exists())
+		{
+			T.go_to_lt_child();
+			set_particlenumber_in_subtree_entries(T);
+			T.go_to_father();
+			child_nr = T.get_act_ptr()->get_child_lt_ptr()->get_particlenumber_in_subtree();
+			T.get_act_ptr()->set_particlenumber_in_subtree(child_nr + T.get_act_ptr()->
+				get_particlenumber_in_subtree());
+		}
+		if (T.get_act_ptr()->child_rt_exists())
+		{
+			T.go_to_rt_child();
+			set_particlenumber_in_subtree_entries(T);
+			T.go_to_father();
+			child_nr = T.get_act_ptr()->get_child_rt_ptr()->get_particlenumber_in_subtree();
+			T.get_act_ptr()->set_particlenumber_in_subtree(child_nr + T.get_act_ptr()->
+				get_particlenumber_in_subtree());
+		}
+		if (T.get_act_ptr()->child_lb_exists())
+		{
+			T.go_to_lb_child();
+			set_particlenumber_in_subtree_entries(T);
+			T.go_to_father();
+			child_nr = T.get_act_ptr()->get_child_lb_ptr()->get_particlenumber_in_subtree();
+			T.get_act_ptr()->set_particlenumber_in_subtree(child_nr + T.get_act_ptr()->
+				get_particlenumber_in_subtree());
+		}
+		if (T.get_act_ptr()->child_rb_exists())
+		{
+			T.go_to_rb_child();
+			set_particlenumber_in_subtree_entries(T);
+			T.go_to_father();
+			child_nr = T.get_act_ptr()->get_child_rb_ptr()->get_particlenumber_in_subtree();
+			T.get_act_ptr()->set_particlenumber_in_subtree(child_nr + T.get_act_ptr()->
+				get_particlenumber_in_subtree());
+		}
+	}//if
+}
+
+
+void NMM::construct_reduced_subtree(
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T,
+	List<QuadTreeNodeNM*>& new_subtree_root_List)
+{
+	do
+	{
+		QuadTreeNodeNM* act_ptr = T.get_act_ptr();
+		delete_empty_subtrees(T);
+		T.set_act_ptr(act_ptr);
+	}
+	while(check_and_delete_degenerated_node(T)== true) ;
+
+	if(!T.get_act_ptr()->is_leaf() && T.get_act_ptr()->get_particlenumber_in_subtree()
+		<=  particles_in_leaves())
+	{
+		delete_sparse_subtree(T,T.get_act_ptr());
+	}
+
+	//push leaves that contain many particles
+	if(T.get_act_ptr()->is_leaf() && T.get_act_ptr()->
+		get_particlenumber_in_subtree() > particles_in_leaves())
+		new_subtree_root_List.pushBack(T.get_act_ptr());
+
+	//find smallest quad for leaves of T
+	else if(T.get_act_ptr()->is_leaf() && T.get_act_ptr()->
+		get_particlenumber_in_subtree() <= particles_in_leaves())
+		find_smallest_quad(A,T);
+
+	//recursive calls
+	else if(!T.get_act_ptr()->is_leaf())
+	{//else
+		if(T.get_act_ptr()->child_lt_exists())
+		{
+			T.go_to_lt_child();
+			construct_reduced_subtree(A,T,new_subtree_root_List);
+			T.go_to_father();
+		}
+		if(T.get_act_ptr()->child_rt_exists())
+		{
+			T.go_to_rt_child();
+			construct_reduced_subtree(A,T,new_subtree_root_List);
+			T.go_to_father();
+		}
+		if(T.get_act_ptr()->child_lb_exists())
+		{
+			T.go_to_lb_child();
+			construct_reduced_subtree(A,T,new_subtree_root_List);
+			T.go_to_father();
+		}
+		if(T.get_act_ptr()->child_rb_exists())
+		{
+			T.go_to_rb_child();
+			construct_reduced_subtree(A,T,new_subtree_root_List);
+			T.go_to_father();
+		}
+	}//else
+}
+
+
+void NMM::delete_empty_subtrees(QuadTreeNM& T)
+{
+	int child_part_nr;
+	QuadTreeNodeNM* act_ptr = T.get_act_ptr();
+
+	if(act_ptr->child_lt_exists())
+	{
+		child_part_nr = act_ptr->get_child_lt_ptr()->get_particlenumber_in_subtree();
+		if(child_part_nr == 0)
+		{
+			T.delete_tree(act_ptr->get_child_lt_ptr());
+			act_ptr->set_child_lt_ptr(NULL);
+		}
+	}
+
+	if(act_ptr->child_rt_exists())
+	{
+		child_part_nr = act_ptr->get_child_rt_ptr()->get_particlenumber_in_subtree();
+		if(child_part_nr == 0)
+		{
+			T.delete_tree(act_ptr->get_child_rt_ptr());
+			act_ptr->set_child_rt_ptr(NULL);
+		}
+	}
+
+	if(act_ptr->child_lb_exists())
+	{
+		child_part_nr = act_ptr->get_child_lb_ptr()->get_particlenumber_in_subtree();
+		if(child_part_nr == 0)
+		{
+			T.delete_tree(act_ptr->get_child_lb_ptr());
+			act_ptr->set_child_lb_ptr(NULL);
+		}
+	}
+
+	if(act_ptr->child_rb_exists())
+	{
+		child_part_nr = act_ptr->get_child_rb_ptr()->get_particlenumber_in_subtree();
+		if(child_part_nr == 0)
+		{
+			T.delete_tree(act_ptr->get_child_rb_ptr());
+			act_ptr->set_child_rb_ptr(NULL);
+		}
+	}
+}
+
+
+bool NMM::check_and_delete_degenerated_node(QuadTreeNM& T)
+{
+	QuadTreeNodeNM* delete_ptr;
+	QuadTreeNodeNM* father_ptr;
+	QuadTreeNodeNM* child_ptr;
+
+	bool lt_child = T.get_act_ptr()->child_lt_exists();
+	bool rt_child = T.get_act_ptr()->child_rt_exists();
+	bool lb_child = T.get_act_ptr()->child_lb_exists();
+	bool rb_child = T.get_act_ptr()->child_rb_exists();
+	bool is_degenerated = false;
+
+	if(lt_child && !rt_child && !lb_child && !rb_child)
+	{//if1
+		is_degenerated = true;
+		delete_ptr = T.get_act_ptr();
+		child_ptr = T.get_act_ptr()->get_child_lt_ptr();
+		if(T.get_act_ptr() == T.get_root_ptr())//special case
+		{
+			T.set_root_ptr(child_ptr);
+			T.set_act_ptr(T.get_root_ptr());
+		}
+		else//usual case
+		{
+			father_ptr = T.get_act_ptr()->get_father_ptr();
+			child_ptr->set_father_ptr(father_ptr);
+			if(father_ptr->get_child_lt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lt_ptr(child_ptr);
+			else if(father_ptr->get_child_rt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rt_ptr(child_ptr);
+			else if(father_ptr->get_child_lb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lb_ptr(child_ptr);
+			else if(father_ptr->get_child_rb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rb_ptr(child_ptr);
+			else
+				cout<<"Error NMM::delete_degenerated_node"<<endl;
+			T.set_act_ptr(child_ptr);
+		}
+		delete delete_ptr;
+	}//if1
+	else  if(!lt_child && rt_child && !lb_child && !rb_child)
+	{//if2
+		is_degenerated = true;
+		delete_ptr = T.get_act_ptr();
+		child_ptr = T.get_act_ptr()->get_child_rt_ptr();
+		if(T.get_act_ptr() == T.get_root_ptr())//special case
+		{
+			T.set_root_ptr(child_ptr);
+			T.set_act_ptr(T.get_root_ptr());
+		}
+		else//usual case
+		{
+			father_ptr = T.get_act_ptr()->get_father_ptr();
+			child_ptr->set_father_ptr(father_ptr);
+			if(father_ptr->get_child_lt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lt_ptr(child_ptr);
+			else if(father_ptr->get_child_rt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rt_ptr(child_ptr);
+			else if(father_ptr->get_child_lb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lb_ptr(child_ptr);
+			else if(father_ptr->get_child_rb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rb_ptr(child_ptr);
+			else
+				cout<<"Error NMM::delete_degenerated_node"<<endl;
+			T.set_act_ptr(child_ptr);
+		}
+		delete delete_ptr;
+	}//if2
+	else  if(!lt_child && !rt_child && lb_child && !rb_child)
+	{//if3
+		is_degenerated = true;
+		delete_ptr = T.get_act_ptr();
+		child_ptr = T.get_act_ptr()->get_child_lb_ptr();
+		if(T.get_act_ptr() == T.get_root_ptr())//special case
+		{
+			T.set_root_ptr(child_ptr);
+			T.set_act_ptr(T.get_root_ptr());
+		}
+		else//usual case
+		{
+			father_ptr = T.get_act_ptr()->get_father_ptr();
+			child_ptr->set_father_ptr(father_ptr);
+			if(father_ptr->get_child_lt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lt_ptr(child_ptr);
+			else if(father_ptr->get_child_rt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rt_ptr(child_ptr);
+			else if(father_ptr->get_child_lb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lb_ptr(child_ptr);
+			else if(father_ptr->get_child_rb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rb_ptr(child_ptr);
+			else
+				cout<<"Error NMM::delete_degenerated_node"<<endl;
+			T.set_act_ptr(child_ptr);
+		}
+		delete delete_ptr;
+	}//if3
+	else  if(!lt_child && !rt_child && !lb_child && rb_child)
+	{//if4
+		is_degenerated = true;
+		delete_ptr = T.get_act_ptr();
+		child_ptr = T.get_act_ptr()->get_child_rb_ptr();
+		if(T.get_act_ptr() == T.get_root_ptr())//special case
+		{
+			T.set_root_ptr(child_ptr);
+			T.set_act_ptr(T.get_root_ptr());
+		}
+		else//usual case
+		{
+			father_ptr = T.get_act_ptr()->get_father_ptr();
+			child_ptr->set_father_ptr(father_ptr);
+			if(father_ptr->get_child_lt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lt_ptr(child_ptr);
+			else if(father_ptr->get_child_rt_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rt_ptr(child_ptr);
+			else if(father_ptr->get_child_lb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_lb_ptr(child_ptr);
+			else if(father_ptr->get_child_rb_ptr() == T.get_act_ptr())
+				father_ptr->set_child_rb_ptr(child_ptr);
+			else
+				cout<<"Error NMM::delete_degenerated_node"<<endl;
+			T.set_act_ptr(child_ptr);
+		}
+		delete delete_ptr;
+	}//if4
+	return is_degenerated;
+}
+
+
+void NMM::delete_sparse_subtree(QuadTreeNM& T, QuadTreeNodeNM* new_leaf_ptr)
+{
+	collect_contained_nodes(T,new_leaf_ptr);
+
+	if(new_leaf_ptr->child_lt_exists())
+	{
+		T.delete_tree(new_leaf_ptr->get_child_lt_ptr());
+		new_leaf_ptr->set_child_lt_ptr(NULL);
+	}
+	if(new_leaf_ptr->child_rt_exists())
+	{
+		T.delete_tree(new_leaf_ptr->get_child_rt_ptr());
+		new_leaf_ptr->set_child_rt_ptr(NULL);
+	}
+	if(new_leaf_ptr->child_lb_exists())
+	{
+		T.delete_tree(new_leaf_ptr->get_child_lb_ptr());
+		new_leaf_ptr->set_child_lb_ptr(NULL);
+	}
+	if(new_leaf_ptr->child_rb_exists())
+	{
+		T.delete_tree(new_leaf_ptr->get_child_rb_ptr());
+		new_leaf_ptr->set_child_rb_ptr(NULL);
+	}
+}
+
+
+void NMM::collect_contained_nodes(QuadTreeNM& T, QuadTreeNodeNM* new_leaf_ptr)
+{
+	if(T.get_act_ptr()->is_leaf())
+		while(!T.get_act_ptr()->contained_nodes_empty())
+			new_leaf_ptr->pushBack_contained_nodes(T.get_act_ptr()->pop_contained_nodes());
+	else if(T.get_act_ptr()->child_lt_exists())
+	{
+		T.go_to_lt_child();
+		collect_contained_nodes(T,new_leaf_ptr);
+		T.go_to_father();
+	}
+	if(T.get_act_ptr()->child_rt_exists())
+	{
+		T.go_to_rt_child();
+		collect_contained_nodes(T,new_leaf_ptr);
+		T.go_to_father();
+	}
+	if(T.get_act_ptr()->child_lb_exists())
+	{
+		T.go_to_lb_child();
+		collect_contained_nodes(T,new_leaf_ptr);
+		T.go_to_father();
+	}
+	if(T.get_act_ptr()->child_rb_exists())
+	{
+		T.go_to_rb_child();
+		collect_contained_nodes(T,new_leaf_ptr);
+		T.go_to_father();
+	}
+}
+
+
+bool NMM::find_smallest_quad(NodeArray<NodeAttributes>& A, QuadTreeNM& T)
+{
+	OGDF_ASSERT(!T.get_act_ptr()->contained_nodes_empty());
+	//if(T.get_act_ptr()->contained_nodes_empty())
+	//  cout<<"Error NMM :: find_smallest_quad()"<<endl;
+	//else
+	// {//else
+	List<node>L;
+	T.get_act_ptr()->get_contained_nodes(L);
+	node v = L.popFrontRet();
+	double x_min = A[v].get_x();
+	double x_max = x_min;
+	double y_min = A[v].get_y();
+	double y_max = y_min;
+
+	while(! L.empty())
+	{
+		v = L.popFrontRet();
+		if(A[v].get_x() < x_min)
+			x_min = A[v].get_x();
+		if(A[v].get_x() > x_max)
+			x_max = A[v].get_x();
+		if(A[v].get_y() < y_min)
+			y_min = A[v].get_y();
+		if(A[v].get_y() > y_max)
+			y_max = A[v].get_y();
+	}
+	if(x_min != x_max || y_min != y_max) //nodes are not all at the same position
+	{
+		if(find_sm_cell() == FMMMLayout::scfIteratively)
+			find_small_cell_iteratively(T.get_act_ptr(),x_min,x_max,y_min,y_max);
+		else //find_sm_cell == FMMMLayout::scfAluru
+			find_small_cell_iteratively(T.get_act_ptr(),x_min,x_max,y_min,y_max);
+		return true;
+	}
+	else
+		return false;
+	//}//else
+}
+
+
+// ********Functions needed for subtree by subtree  tree construction(END)************
+
+void NMM::find_small_cell_iteratively(
+	QuadTreeNodeNM* act_ptr,
+	double x_min,
+	double x_max,
+	double y_min,
+	double y_max)
+{
+	int new_level;
+	double new_boxlength;
+	DPoint new_dlc;
+	bool Sm_cell_found = false;
+
+	while ( !Sm_cell_found && ((x_max-x_min >=MIN_BOX_LENGTH) ||
+		(y_max-y_min >=MIN_BOX_LENGTH)) )
+	{
+		if(in_lt_quad(act_ptr,x_min,x_max,y_min,y_max))
+		{
+			new_level = act_ptr->get_Sm_level()+1;
+			new_boxlength = act_ptr->get_Sm_boxlength()/2;
+			new_dlc.m_x = act_ptr->get_Sm_downleftcorner().m_x;
+			new_dlc.m_y = act_ptr->get_Sm_downleftcorner().m_y+new_boxlength;
+			act_ptr->set_Sm_level(new_level);
+			act_ptr->set_Sm_boxlength(new_boxlength);
+			act_ptr->set_Sm_downleftcorner(new_dlc);
+		}
+		else if(in_rt_quad(act_ptr,x_min,x_max,y_min,y_max))
+		{
+			new_level = act_ptr->get_Sm_level()+1;
+			new_boxlength = act_ptr->get_Sm_boxlength()/2;
+			new_dlc.m_x = act_ptr->get_Sm_downleftcorner().m_x+new_boxlength;
+			new_dlc.m_y = act_ptr->get_Sm_downleftcorner().m_y+new_boxlength;
+			act_ptr->set_Sm_level(new_level);
+			act_ptr->set_Sm_boxlength(new_boxlength);
+			act_ptr->set_Sm_downleftcorner(new_dlc);
+		}
+		else if(in_lb_quad(act_ptr,x_min,x_max,y_min,y_max))
+		{
+			new_level = act_ptr->get_Sm_level()+1;
+			new_boxlength = act_ptr->get_Sm_boxlength()/2;
+			act_ptr->set_Sm_level(new_level);
+			act_ptr->set_Sm_boxlength(new_boxlength);
+		}
+		else if(in_rb_quad(act_ptr,x_min,x_max,y_min,y_max))
+		{
+			new_level = act_ptr->get_Sm_level()+1;
+			new_boxlength = act_ptr->get_Sm_boxlength()/2;
+			new_dlc.m_x = act_ptr->get_Sm_downleftcorner().m_x+new_boxlength;
+			new_dlc.m_y = act_ptr->get_Sm_downleftcorner().m_y;
+			act_ptr->set_Sm_level(new_level);
+			act_ptr->set_Sm_boxlength(new_boxlength);
+			act_ptr->set_Sm_downleftcorner(new_dlc);
+		}
+		else Sm_cell_found = true;
+	}
+}
+
+
+void NMM::find_small_cell_by_formula(
+	QuadTreeNodeNM* act_ptr,
+	double x_min,
+	double x_max,
+	double y_min,
+	double y_max)
+{
+	numexcept N;
+	int level_offset = act_ptr->get_Sm_level();
+	max_power_of_2_index = 30;//up to this level standard integer arithmetic is used
+//	DPoint nullpoint (0,0);
+	IPoint Sm_position;
+	double Sm_dlc_x_coord,Sm_dlc_y_coord;
+	double Sm_boxlength;
+	int Sm_level;
+	DPoint Sm_downleftcorner;
+	int j_x = max_power_of_2_index+1;
+	int j_y = max_power_of_2_index+1;
+	bool rectangle_is_horizontal_line = false;
+	bool rectangle_is_vertical_line = false;
+	bool rectangle_is_point = false;
+
+	//shift boundaries to the origin for easy calculations
+	double x_min_old = x_min;
+	double x_max_old = x_max;
+	double y_min_old = y_min;
+	double y_max_old = y_max;
+
+	Sm_boxlength = act_ptr->get_Sm_boxlength();
+	Sm_dlc_x_coord = act_ptr->get_Sm_downleftcorner().m_x;
+	Sm_dlc_y_coord = act_ptr->get_Sm_downleftcorner().m_y;
+
+	x_min -= Sm_dlc_x_coord;
+	x_max -= Sm_dlc_x_coord;
+	y_min -= Sm_dlc_y_coord;
+	y_max -= Sm_dlc_y_coord;
+
+	//check if iterative way has to be used
+	if (x_min == x_max && y_min == y_max)
+		rectangle_is_point = true;
+	else if(x_min == x_max && y_min != y_max)
+		rectangle_is_vertical_line = true;
+	else //x_min != x_max
+		j_x = static_cast<int>(ceil(Math::log2(Sm_boxlength/(x_max-x_min))));
+
+	if(x_min != x_max && y_min == y_max)
+		rectangle_is_horizontal_line = true;
+	else //y_min != y_max
+		j_y = static_cast<int>(ceil(Math::log2(Sm_boxlength/(y_max-y_min))));
+
+	if(rectangle_is_point)
+	{
+		;//keep the old values
+	}
+	else if ( !N.nearly_equal((x_min_old - x_max_old),(x_min-x_max)) ||
+		!N.nearly_equal((y_min_old - y_max_old),(y_min-y_max)) ||
+		x_min/Sm_boxlength < MIN_BOX_LENGTH || x_max/Sm_boxlength < MIN_BOX_LENGTH ||
+		y_min/Sm_boxlength < MIN_BOX_LENGTH || y_max/Sm_boxlength < MIN_BOX_LENGTH )
+		find_small_cell_iteratively(act_ptr,x_min_old,x_max_old,y_min_old,y_max_old);
+	else if ( ((j_x > max_power_of_2_index) && (j_y > max_power_of_2_index)) ||
+		((j_x > max_power_of_2_index) && !rectangle_is_vertical_line) ||
+		((j_y > max_power_of_2_index) && !rectangle_is_horizontal_line) )
+		find_small_cell_iteratively(act_ptr,x_min_old,x_max_old,y_min_old,y_max_old);
+	else //idea of Aluru et al.
+	{//else
+		int k,a1,a2,A,j_minus_k;
+		double h1,h2;
+        int Sm_x_level = 0, Sm_y_level = 0;
+        int Sm_x_position = 0, Sm_y_position = 0;
+
+		if(x_min != x_max)
+		{//if1
+			//calculate Sm_x_level and Sm_x_position
+			a1 = static_cast<int>(ceil((x_min/Sm_boxlength)*power_of_two(j_x)));
+			a2 = static_cast<int>(floor((x_max/Sm_boxlength)*power_of_two(j_x)));
+			h1 = (Sm_boxlength/power_of_two(j_x))* a1;
+			h2 = (Sm_boxlength/power_of_two(j_x))* a2;
+
+			//special cases: two tangents or left tangent and righ cutline
+			if(((h1 == x_min)&&(h2 == x_max)) || ((h1 == x_min) && (h2 != x_max)) )
+				A = a2;
+			else if (a1 == a2)  //only one cutline
+				A = a1;
+			else  //two cutlines or a right tangent and a left cutline (usual case)
+			{
+				if((a1 % 2) == 0)
+					A = a1;
+				else
+					A = a2;
+			}
+
+			j_minus_k = static_cast<int>(Math::log2(1+(A ^ (A-1)))-1);
+			k = j_x - j_minus_k;
+			Sm_x_level = k-1;
+			Sm_x_position = a1/ power_of_two(j_x - Sm_x_level);
+		}//if1
+
+		if(y_min != y_max)
+		{//if2
+			//calculate Sm_y_level and Sm_y_position
+			a1 = static_cast<int>(ceil((y_min/Sm_boxlength)*power_of_two(j_y)));
+			a2 = static_cast<int>(floor((y_max/Sm_boxlength)*power_of_two(j_y)));
+			h1 = (Sm_boxlength/power_of_two(j_y))* a1;
+			h2 = (Sm_boxlength/power_of_two(j_y))* a2;
+
+			//special cases: two tangents or bottom tangent and top cutline
+			if(((h1 == y_min)&&(h2 == y_max)) || ((h1 == y_min) && (h2 != y_max)) )
+				A = a2;
+			else if (a1 == a2)  //only one cutline
+				A = a1;
+			else  //two cutlines or a top tangent and a bottom cutline (usual case)
+			{
+				if((a1 % 2) == 0)
+					A = a1;
+				else
+					A = a2;
+			}
+
+			j_minus_k = static_cast<int>(Math::log2(1+(A ^ (A-1)))-1);
+			k = j_y - j_minus_k;
+			Sm_y_level = k-1;
+			Sm_y_position = a1/ power_of_two(j_y - Sm_y_level);
+		}//if2
+
+		if((x_min != x_max) &&(y_min != y_max))//a box with area > 0
+		{//if3
+			if (Sm_x_level == Sm_y_level)
+			{
+				Sm_level = Sm_x_level;
+				Sm_position.m_x = Sm_x_position;
+				Sm_position.m_y = Sm_y_position;
+			}
+			else if (Sm_x_level < Sm_y_level)
+			{
+				Sm_level = Sm_x_level;
+				Sm_position.m_x = Sm_x_position;
+				Sm_position.m_y = Sm_y_position/power_of_two(Sm_y_level-Sm_x_level);
+			}
+			else //Sm_x_level > Sm_y_level
+			{
+				Sm_level = Sm_y_level;
+				Sm_position.m_x = Sm_x_position/power_of_two(Sm_x_level-Sm_y_level);
+				Sm_position.m_y = Sm_y_position;
+			}
+		}//if3
+		else if(x_min == x_max) //a vertical line
+		{//if4
+			Sm_level = Sm_y_level;
+			Sm_position.m_x = static_cast<int> (floor((x_min*power_of_two(Sm_level))/
+				Sm_boxlength));
+			Sm_position.m_y = Sm_y_position;
+		}//if4
+		else //y_min == y_max (a horizontal line)
+		{//if5
+			Sm_level = Sm_x_level;
+			Sm_position.m_x = Sm_x_position;
+			Sm_position.m_y = static_cast<int> (floor((y_min*power_of_two(Sm_level))/
+				Sm_boxlength));
+		}//if5
+
+		Sm_boxlength = Sm_boxlength/power_of_two(Sm_level);
+		Sm_downleftcorner.m_x = Sm_dlc_x_coord + Sm_boxlength * Sm_position.m_x;
+		Sm_downleftcorner.m_y = Sm_dlc_y_coord + Sm_boxlength * Sm_position.m_y;
+		act_ptr->set_Sm_level(Sm_level+level_offset);
+		act_ptr->set_Sm_boxlength(Sm_boxlength);
+		act_ptr->set_Sm_downleftcorner(Sm_downleftcorner);
+	}//else
+}
+
+
+inline void NMM::delete_red_quad_tree_and_count_treenodes(QuadTreeNM& T)
+{
+	T.delete_tree(T.get_root_ptr());
+}
+
+
+inline void NMM::form_multipole_expansions(
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T,
+	List<QuadTreeNodeNM*>& quad_tree_leaves)
+{
+	T.set_act_ptr(T.get_root_ptr());
+	form_multipole_expansion_of_subtree(A,T,quad_tree_leaves);
+}
+
+
+void NMM::form_multipole_expansion_of_subtree(
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNM& T,
+	List<QuadTreeNodeNM*>& quad_tree_leaves)
+{
+	init_expansion_Lists(T.get_act_ptr());
+	set_center(T.get_act_ptr());
+
+	if(T.get_act_ptr()->is_leaf()) //form expansions for leaf nodes
+	{//if
+		quad_tree_leaves.pushBack(T.get_act_ptr());
+		form_multipole_expansion_of_leaf_node(A,T.get_act_ptr());
+	}//if
+	else //rekursive calls and add shifted expansions
+	{//else
+		if(T.get_act_ptr()->child_lt_exists())
+		{
+			T.go_to_lt_child();
+			form_multipole_expansion_of_subtree(A,T,quad_tree_leaves);
+			add_shifted_expansion_to_father_expansion(T.get_act_ptr());
+			T.go_to_father();
+		}
+		if(T.get_act_ptr()->child_rt_exists())
+		{
+			T.go_to_rt_child();
+			form_multipole_expansion_of_subtree(A,T,quad_tree_leaves);
+			add_shifted_expansion_to_father_expansion(T.get_act_ptr());
+			T.go_to_father();
+		}
+		if(T.get_act_ptr()->child_lb_exists())
+		{
+			T.go_to_lb_child();
+			form_multipole_expansion_of_subtree(A,T,quad_tree_leaves);
+			add_shifted_expansion_to_father_expansion(T.get_act_ptr());
+			T.go_to_father();
+		}
+		if(T.get_act_ptr()->child_rb_exists())
+		{
+			T.go_to_rb_child();
+			form_multipole_expansion_of_subtree(A,T,quad_tree_leaves);
+			add_shifted_expansion_to_father_expansion(T.get_act_ptr());
+			T.go_to_father();
+		}
+	}//else
+}
+
+
+inline void NMM::init_expansion_Lists(QuadTreeNodeNM* act_ptr)
+{
+	int i;
+	Array<complex<double> > nulList (precision()+1);
+
+	for (i = 0;i<=precision();i++)
+		nulList[i] = 0;
+
+	act_ptr->set_multipole_exp(nulList,precision());
+	act_ptr->set_locale_exp(nulList,precision());
+}
+
+
+void NMM::set_center(QuadTreeNodeNM* act_ptr)
+{
+
+	const int BILLION = 1000000000;
+	DPoint Sm_downleftcorner = act_ptr->get_Sm_downleftcorner();
+	double Sm_boxlength = act_ptr->get_Sm_boxlength();
+	double boxcenter_x_coord,boxcenter_y_coord;
+	DPoint Sm_dlc;
+	double rand_y;
+
+	boxcenter_x_coord = Sm_downleftcorner.m_x + Sm_boxlength * 0.5;
+	boxcenter_y_coord = Sm_downleftcorner.m_y + Sm_boxlength * 0.5;
+
+	//for use of complex logarithm: waggle the y-coordinates a little bit
+	//such that the new center is really inside the actual box and near the exact center
+	rand_y = double(randomNumber(1,BILLION)+1)/(BILLION+2);//rand number in (0,1)
+	boxcenter_y_coord = boxcenter_y_coord + 0.001 * Sm_boxlength * rand_y;
+
+	complex<double> boxcenter(boxcenter_x_coord,boxcenter_y_coord);
+	act_ptr->set_Sm_center(boxcenter);
+}
+
+
+void NMM::form_multipole_expansion_of_leaf_node(
+	NodeArray<NodeAttributes>& A,
+	QuadTreeNodeNM* act_ptr)
+{
+	int k;
+	complex<double> Q (0,0);
+	complex<double> z_0 = act_ptr->get_Sm_center();//center of actual box
+	complex<double> nullpoint (0,0);
+	Array<complex<double> > coef (precision()+1);
+	complex<double> z_v_minus_z_0_over_k;
+	List<node> nodes_in_box;
+	int i;
+	ListIterator<node> v_it;
+
+	act_ptr->get_contained_nodes(nodes_in_box);
+
+	for(v_it = nodes_in_box.begin();v_it.valid();++v_it)
+		Q += 1;
+	coef[0] = Q;
+
+	for(i = 1; i<=precision();i++)
+		coef[i] = nullpoint;
+
+	for(v_it = nodes_in_box.begin();v_it.valid();++v_it)
+	{
+		complex<double> z_v (A[*v_it].get_x(),A[*v_it].get_y());
+		z_v_minus_z_0_over_k = z_v - z_0;
+		for(k=1;k<=precision();k++)
+		{
+			coef[k] += ((double(-1))*z_v_minus_z_0_over_k)/double(k);
+			z_v_minus_z_0_over_k *= z_v - z_0;
+		}
+	}
+	act_ptr->replace_multipole_exp(coef,precision());
+}
+
+
+void NMM::add_shifted_expansion_to_father_expansion(QuadTreeNodeNM* act_ptr)
+{
+	QuadTreeNodeNM* father_ptr = act_ptr->get_father_ptr();
+	complex<double> sum;
+	complex<double> z_0,z_1;
+	Array<complex<double> > z_0_minus_z_1_over (precision()+1);
+
+	z_1 = father_ptr->get_Sm_center();
+	z_0 = act_ptr->get_Sm_center();
+	father_ptr->get_multipole_exp()[0] += act_ptr->get_multipole_exp()[0];
+
+	//init z_0_minus_z_1_over
+	z_0_minus_z_1_over[0] = 1;
+	for(int i = 1; i<= precision(); i++)
+		z_0_minus_z_1_over[i] = z_0_minus_z_1_over[i-1] * (z_0 - z_1);
+
+	for(int k=1; k<=precision(); k++)
+	{
+		sum = (act_ptr->get_multipole_exp()[0]*(double(-1))*z_0_minus_z_1_over[k])/
+			double(k) ;
+		for(int s=1; s<=k; s++)
+			sum +=  act_ptr->get_multipole_exp()[s]*z_0_minus_z_1_over[k-s]* binko(k-1,s-1);
+		father_ptr->get_multipole_exp()[k] += sum;
+	}
+}
+
+
+void NMM::calculate_local_expansions_and_WSPRLS(
+	NodeArray<NodeAttributes>&A,
+	QuadTreeNodeNM* act_node_ptr)
+{
+	List<QuadTreeNodeNM*> I,L,L2,E,D1,D2,M;
+    QuadTreeNodeNM *father_ptr = 0, *selected_node_ptr;
+	ListIterator<QuadTreeNodeNM*> ptr_it;
+
+	//Step 0: Initializations
+	if(! act_node_ptr->is_root())
+		father_ptr = act_node_ptr->get_father_ptr();
+	I.clear();L.clear();L2.clear();D1.clear();D2.clear();M.clear();
+
+	//Step 1: calculate Lists I (min. ill sep. set), L (interaction List of well sep.
+	//nodes , they are used to form the Local Expansions from the multipole expansions),
+	//L2 (non bordering leaves that have a larger or equal Sm-cell and  are ill separated;
+	//empty if the actual node is a leaf)
+	//calculate List D1(bordering leaves that have a larger or equal Sm-cell and are
+	//ill separated) and D2 (non bordering leaves that have a larger or equal Sm-cell and
+	//are ill separated;empty if the actual node is an interior node)
+
+	//special case: act_node is the root of T
+	if (act_node_ptr->is_root())
+	{//if
+		E.clear();
+		if(act_node_ptr->child_lt_exists())
+			E.pushBack(act_node_ptr->get_child_lt_ptr());
+		if(act_node_ptr->child_rt_exists())
+			E.pushBack(act_node_ptr->get_child_rt_ptr());
+		if(act_node_ptr->child_lb_exists())
+			E.pushBack(act_node_ptr->get_child_lb_ptr());
+		if(act_node_ptr->child_rb_exists())
+			E.pushBack(act_node_ptr->get_child_rb_ptr());
+	}//if
+
+	//usual case: act_node is an interior node of T
+	else
+	{
+		father_ptr->get_D1(E); //bordering leaves of father
+		father_ptr->get_I(I);  //min ill sep. nodes of father
+
+
+		for(ptr_it = I.begin();ptr_it.valid();++ptr_it)
+			E.pushBack(*ptr_it);
+		I.clear();
+	}
+
+
+	while (!E.empty())
+	{//while
+		selected_node_ptr = E.popFrontRet();
+		if (well_separated(act_node_ptr,selected_node_ptr))
+			L.pushBack(selected_node_ptr);
+		else if (act_node_ptr->get_Sm_level() < selected_node_ptr->get_Sm_level())
+			I.pushBack(selected_node_ptr);
+		else if(!selected_node_ptr->is_leaf())
+		{
+			if(selected_node_ptr->child_lt_exists())
+				E.pushBack(selected_node_ptr->get_child_lt_ptr());
+			if(selected_node_ptr->child_rt_exists())
+				E.pushBack(selected_node_ptr->get_child_rt_ptr());
+			if(selected_node_ptr->child_lb_exists())
+				E.pushBack(selected_node_ptr->get_child_lb_ptr());
+			if(selected_node_ptr->child_rb_exists())
+				E.pushBack(selected_node_ptr->get_child_rb_ptr());
+		}
+		else if(bordering(act_node_ptr,selected_node_ptr))
+			D1.pushBack(selected_node_ptr);
+		else if( (selected_node_ptr != act_node_ptr)&&(act_node_ptr->is_leaf()))
+			D2.pushBack(selected_node_ptr); //direct calculation (no errors produced)
+		else if((selected_node_ptr != act_node_ptr)&&!(act_node_ptr->is_leaf()))
+			L2.pushBack(selected_node_ptr);
+	}//while
+
+	act_node_ptr->set_I(I);
+	act_node_ptr->set_D1(D1);
+	act_node_ptr->set_D2(D2);
+
+	//Step 2: add local expansions from father(act_node_ptr) and calculate locale
+	//expansions for all nodes in L
+	if(!act_node_ptr->is_root())
+		add_shifted_local_exp_of_parent(act_node_ptr);
+
+	for(ptr_it = L.begin();ptr_it.valid();++ptr_it)
+		add_local_expansion(*ptr_it,act_node_ptr);
+
+	//Step 3: calculate locale expansions for all nodes in D2 (simpler than in Step 2)
+
+	for(ptr_it = L2.begin();ptr_it.valid();++ptr_it)
+		add_local_expansion_of_leaf(A,*ptr_it,act_node_ptr);
+
+	//Step 4: recursive calls if act_node is not a leaf
+	if(!act_node_ptr->is_leaf())
+	{
+		if(act_node_ptr->child_lt_exists())
+			calculate_local_expansions_and_WSPRLS(A,act_node_ptr->get_child_lt_ptr());
+		if(act_node_ptr->child_rt_exists())
+			calculate_local_expansions_and_WSPRLS(A,act_node_ptr->get_child_rt_ptr());
+		if(act_node_ptr->child_lb_exists())
+			calculate_local_expansions_and_WSPRLS(A,act_node_ptr->get_child_lb_ptr());
+		if(act_node_ptr->child_rb_exists())
+			calculate_local_expansions_and_WSPRLS(A,act_node_ptr->get_child_rb_ptr());
+	}
+
+	//Step 5: WSPRLS(Well Separateness Preserving Refinement of leaf surroundings)
+	//if act_node is a leaf than calculate the list D1,D2 and M from I and D1
+	else // *act_node_ptr is a leaf
+	{//else
+		act_node_ptr->get_D1(D1);
+		act_node_ptr->get_D2(D2);
+
+		while(!I.empty())
+		{//while
+			selected_node_ptr = I.popFrontRet();
+			if(selected_node_ptr->is_leaf())
+			{
+				//here D1 contains larger AND smaller bordering leaves!
+				if(bordering(act_node_ptr,selected_node_ptr))
+					D1.pushBack(selected_node_ptr);
+				else
+					D2.pushBack(selected_node_ptr);
+			}
+			else //!selected_node_ptr->is_leaf()
+			{
+				if(bordering(act_node_ptr,selected_node_ptr))
+				{
+					if(selected_node_ptr->child_lt_exists())
+						I.pushBack(selected_node_ptr->get_child_lt_ptr());
+					if(selected_node_ptr->child_rt_exists())
+						I.pushBack(selected_node_ptr->get_child_rt_ptr());
+					if(selected_node_ptr->child_lb_exists())
+						I.pushBack(selected_node_ptr->get_child_lb_ptr());
+					if(selected_node_ptr->child_rb_exists())
+						I.pushBack(selected_node_ptr->get_child_rb_ptr());
+				}
+				else
+					M.pushBack(selected_node_ptr);
+			}
+		}//while
+		act_node_ptr->set_D1(D1);
+		act_node_ptr->set_D2(D2);
+		act_node_ptr->set_M(M);
+	}//else
+}
+
+
+bool NMM::well_separated(QuadTreeNodeNM* node_1_ptr, QuadTreeNodeNM* node_2_ptr)
+{
+	numexcept N;
+	double boxlength_1 = node_1_ptr->get_Sm_boxlength();
+	double boxlength_2 = node_2_ptr->get_Sm_boxlength();
+	double x1_min,x1_max,y1_min,y1_max,x2_min,x2_max,y2_min,y2_max;
+	bool x_overlap,y_overlap;
+
+	if(boxlength_1 <= boxlength_2)
+	{
+		x1_min = node_1_ptr->get_Sm_downleftcorner().m_x;
+		x1_max = node_1_ptr->get_Sm_downleftcorner().m_x+boxlength_1;
+		y1_min = node_1_ptr->get_Sm_downleftcorner().m_y;
+		y1_max = node_1_ptr->get_Sm_downleftcorner().m_y+boxlength_1;
+
+		//blow the box up
+		x2_min = node_2_ptr->get_Sm_downleftcorner().m_x-boxlength_2;
+		x2_max = node_2_ptr->get_Sm_downleftcorner().m_x+2*boxlength_2;
+		y2_min = node_2_ptr->get_Sm_downleftcorner().m_y-boxlength_2;
+		y2_max = node_2_ptr->get_Sm_downleftcorner().m_y+2*boxlength_2;
+	}
+	else //boxlength_1 > boxlength_2
+	{
+		//blow the box up
+		x1_min = node_1_ptr->get_Sm_downleftcorner().m_x-boxlength_1;
+		x1_max = node_1_ptr->get_Sm_downleftcorner().m_x+2*boxlength_1;
+		y1_min = node_1_ptr->get_Sm_downleftcorner().m_y-boxlength_1;
+		y1_max = node_1_ptr->get_Sm_downleftcorner().m_y+2*boxlength_1;
+
+		x2_min = node_2_ptr->get_Sm_downleftcorner().m_x;
+		x2_max = node_2_ptr->get_Sm_downleftcorner().m_x+boxlength_2;
+		y2_min = node_2_ptr->get_Sm_downleftcorner().m_y;
+		y2_max = node_2_ptr->get_Sm_downleftcorner().m_y+boxlength_2;
+	}
+
+	//test if boxes overlap
+	if((x1_max <= x2_min)|| N.nearly_equal(x1_max,x2_min)||
+		(x2_max <= x1_min)|| N.nearly_equal(x2_max,x1_min))
+		x_overlap = false;
+	else
+		x_overlap = true;
+	if((y1_max <= y2_min)|| N.nearly_equal(y1_max,y2_min)||
+		(y2_max <= y1_min)|| N.nearly_equal(y2_max,y1_min))
+		y_overlap = false;
+	else
+		y_overlap = true;
+
+	if (x_overlap  && y_overlap)
+		return false;
+	else
+		return true;
+}
+
+
+bool NMM::bordering(QuadTreeNodeNM* node_1_ptr,QuadTreeNodeNM* node_2_ptr)
+{
+	numexcept N;
+	double boxlength_1 = node_1_ptr->get_Sm_boxlength();
+	double boxlength_2 = node_2_ptr->get_Sm_boxlength();
+	double x1_min = node_1_ptr->get_Sm_downleftcorner().m_x;
+	double x1_max = node_1_ptr->get_Sm_downleftcorner().m_x+boxlength_1;
+	double y1_min = node_1_ptr->get_Sm_downleftcorner().m_y;
+	double y1_max = node_1_ptr->get_Sm_downleftcorner().m_y+boxlength_1;
+	double x2_min = node_2_ptr->get_Sm_downleftcorner().m_x;
+	double x2_max = node_2_ptr->get_Sm_downleftcorner().m_x+boxlength_2;
+	double y2_min = node_2_ptr->get_Sm_downleftcorner().m_y;
+	double y2_max = node_2_ptr->get_Sm_downleftcorner().m_y+boxlength_2;
+
+	if( ( (x2_min <= x1_min || N.nearly_equal(x2_min,x1_min)) &&
+		(x1_max <= x2_max || N.nearly_equal(x1_max,x2_max)) &&
+		(y2_min <= y1_min || N.nearly_equal(y2_min,y1_min)) &&
+		(y1_max <= y2_max || N.nearly_equal(y1_max,y2_max))    ) ||
+		( (x1_min <= x2_min || N.nearly_equal(x1_min,x2_min)) &&
+		(x2_max <= x1_max || N.nearly_equal(x2_max,x1_max)) &&
+		(y1_min <= y2_min || N.nearly_equal(y1_min,y2_min)) &&
+		(y2_max <= y1_max || N.nearly_equal(y2_max,y1_max))    ) )
+		return false; //one box contains the other box(inclusive neighbours)
+	else
+	{//else
+		if (boxlength_1 <= boxlength_2)
+		{ //shift box1
+			if (x1_min < x2_min)
+			{ x1_min +=boxlength_1;x1_max +=boxlength_1; }
+			else if  (x1_max > x2_max)
+			{ x1_min -=boxlength_1;x1_max -=boxlength_1; }
+			if (y1_min < y2_min)
+			{ y1_min +=boxlength_1;y1_max +=boxlength_1; }
+			else if  (y1_max > y2_max)
+			{ y1_min -=boxlength_1;y1_max -=boxlength_1; }
+		}
+		else //boxlength_1 > boxlength_2
+		{//shift box2
+			if (x2_min < x1_min)
+			{ x2_min +=boxlength_2;x2_max +=boxlength_2; }
+			else if  (x2_max > x1_max)
+			{ x2_min -=boxlength_2;x2_max -=boxlength_2; }
+			if (y2_min < y1_min)
+			{ y2_min +=boxlength_2;y2_max +=boxlength_2; }
+			else if  (y2_max > y1_max)
+			{ y2_min -=boxlength_2;y2_max -=boxlength_2; }
+		}
+		if( ( (x2_min <= x1_min || N.nearly_equal(x2_min,x1_min)) &&
+			(x1_max <= x2_max || N.nearly_equal(x1_max,x2_max)) &&
+			(y2_min <= y1_min || N.nearly_equal(y2_min,y1_min)) &&
+			(y1_max <= y2_max || N.nearly_equal(y1_max,y2_max))    ) ||
+			( (x1_min <= x2_min || N.nearly_equal(x1_min,x2_min)) &&
+			(x2_max <= x1_max || N.nearly_equal(x2_max,x1_max)) &&
+			(y1_min <= y2_min || N.nearly_equal(y1_min,y2_min)) &&
+			(y2_max <= y1_max || N.nearly_equal(y2_max,y1_max))    ) )
+			return true;
+		else
+			return false;
+	}//else
+}
+
+
+void NMM::add_shifted_local_exp_of_parent(QuadTreeNodeNM* node_ptr)
+{
+	QuadTreeNodeNM* father_ptr = node_ptr->get_father_ptr();
+
+	complex<double> z_0 = father_ptr->get_Sm_center();
+	complex<double> z_1 = node_ptr->get_Sm_center();
+	Array<complex<double> > z_1_minus_z_0_over (precision()+1);
+
+	//init z_1_minus_z_0_over
+	z_1_minus_z_0_over[0] = 1;
+	for(int i = 1; i<= precision(); i++)
+		z_1_minus_z_0_over[i] = z_1_minus_z_0_over[i-1] * (z_1 - z_0);
+
+
+	for(int l = 0; l <= precision();l++)
+	{
+		complex<double> sum (0,0);
+		for(int k = l;k<=precision();k++)
+			sum += binko(k,l)*father_ptr->get_local_exp()[k]*z_1_minus_z_0_over[k-l];
+		node_ptr->get_local_exp()[l] += sum;
+	}
+}
+
+
+void NMM::add_local_expansion(QuadTreeNodeNM* ptr_0, QuadTreeNodeNM* ptr_1)
+{
+	complex<double> z_0 = ptr_0->get_Sm_center();
+	complex<double> z_1 = ptr_1->get_Sm_center();
+	complex<double> sum, z_error;
+	complex<double> factor;
+	complex<double> z_1_minus_z_0_over_k;
+	complex<double> z_1_minus_z_0_over_s;
+	complex<double> pow_minus_1_s_plus_1;
+	complex<double> pow_minus_1_s;
+
+	//Error-Handling for complex logarithm
+	if ((std::real(z_1-z_0) <=0) && (std::imag(z_1-z_0) == 0)) //no cont. compl. log fct exists !!!
+	{
+		z_error = log(z_1 -z_0 + 0.0000001);
+		sum = ptr_0->get_multipole_exp()[0] * z_error;
+	}
+	else
+		sum = ptr_0->get_multipole_exp()[0]* log(z_1-z_0);
+
+
+	z_1_minus_z_0_over_k = z_1 - z_0;
+	for(int k = 1; k<=precision(); k++)
+	{
+		sum += ptr_0->get_multipole_exp()[k]/z_1_minus_z_0_over_k;
+		z_1_minus_z_0_over_k *= z_1-z_0;
+	}
+	ptr_1->get_local_exp()[0] += sum;
+
+	z_1_minus_z_0_over_s = z_1 - z_0;
+	for (int s = 1; s <= precision(); s++)
+	{
+		pow_minus_1_s_plus_1 = (((s+1)% 2 == 0) ? 1 : -1);
+		pow_minus_1_s = ((pow_minus_1_s_plus_1 == double(1))? -1 : 1);
+		sum = pow_minus_1_s_plus_1*ptr_0->get_multipole_exp()[0]/(z_1_minus_z_0_over_s *
+			double(s));
+		factor = pow_minus_1_s/z_1_minus_z_0_over_s;
+		z_1_minus_z_0_over_s *= z_1-z_0;
+		complex<double> sum_2 (0,0);
+
+		z_1_minus_z_0_over_k = z_1 - z_0;
+		for(int k=1; k<=precision(); k++)
+		{
+			sum_2 += binko(s+k-1,k-1)*ptr_0->get_multipole_exp()[k]/z_1_minus_z_0_over_k;
+			z_1_minus_z_0_over_k *= z_1-z_0;
+		}
+		ptr_1->get_local_exp()[s] += sum + factor* sum_2;
+	}
+}
+
+
+void NMM::add_local_expansion_of_leaf(
+	NodeArray<NodeAttributes>&A,
+	QuadTreeNodeNM* ptr_0,
+	QuadTreeNodeNM* ptr_1)
+{
+	List<node> contained_nodes;
+	double multipole_0_of_v = 1;//only the first coefficient is not zero
+	complex<double> z_1 = ptr_1->get_Sm_center();
+	complex<double> z_error;
+	complex<double> z_1_minus_z_0_over_s;
+	complex<double> pow_minus_1_s_plus_1;
+
+	ptr_0->get_contained_nodes(contained_nodes);
+
+	forall_listiterators(node, v_it, contained_nodes)
+	{//forall
+		//set position of v as center ( (1,0,....,0) are the multipole coefficients at v)
+		complex<double> z_0  (A[*v_it].get_x(),A[*v_it].get_y());
+
+		//now transform multipole_0_of_v to the locale expansion around z_1
+
+		//Error-Handling for complex logarithm
+		if ((std::real(z_1-z_0) <=0) && (std::imag(z_1-z_0) == 0)) //no cont. compl. log fct exists!
+		{
+			z_error = log(z_1 -z_0 + 0.0000001);
+			ptr_1->get_local_exp()[0] += multipole_0_of_v * z_error;
+		}
+		else
+			ptr_1->get_local_exp()[0] +=  multipole_0_of_v * log(z_1-z_0);
+
+		z_1_minus_z_0_over_s = z_1 - z_0;
+		for (int s = 1;s <= precision();s++)
+		{
+			pow_minus_1_s_plus_1 = (((s+1)% 2 == 0) ? 1 : -1);
+			ptr_1->get_local_exp()[s] += pow_minus_1_s_plus_1*multipole_0_of_v/
+				(z_1_minus_z_0_over_s * double(s));
+			z_1_minus_z_0_over_s *= z_1-z_0;
+		}
+	}//forall
+}
+
+
+void NMM::transform_local_exp_to_forces(
+	NodeArray <NodeAttributes>&A,
+	List<QuadTreeNodeNM*>& quad_tree_leaves,
+	NodeArray<DPoint>& F_local_exp)
+{
+	List<node> contained_nodes;
+	complex<double> sum;
+	complex<double> complex_null (0,0);
+	complex<double> z_0;
+	complex<double> z_v_minus_z_0_over_k_minus_1;
+	DPoint force_vector;
+
+	//calculate derivative of the potential polynom (= local expansion at leaf nodes)
+	//and evaluate it for each node in contained_nodes()
+	//and transform the complex number back to the real-world, to obtain the force
+
+	forall_listiterators( QuadTreeNodeNM*, leaf_ptr_ptr,quad_tree_leaves)
+	{
+		(*leaf_ptr_ptr)->get_contained_nodes(contained_nodes);
+		z_0 = (*leaf_ptr_ptr)->get_Sm_center();
+
+		forall_listiterators(node, v_ptr,contained_nodes)
+		{
+			complex<double> z_v (A[*v_ptr].get_x(),A[*v_ptr].get_y());
+			sum = complex_null;
+			z_v_minus_z_0_over_k_minus_1 = 1;
+			for(int k=1; k<=precision(); k++)
+			{
+				sum += double(k) * (*leaf_ptr_ptr)->get_local_exp()[k] *
+					z_v_minus_z_0_over_k_minus_1;
+				z_v_minus_z_0_over_k_minus_1 *= z_v - z_0;
+			}
+			force_vector.m_x = sum.real();
+			force_vector.m_y = (-1) * sum.imag();
+			F_local_exp[*v_ptr] = force_vector;
+		}
+	}
+}
+
+
+void NMM::transform_multipole_exp_to_forces(
+	NodeArray<NodeAttributes>& A,
+	List<QuadTreeNodeNM*>& quad_tree_leaves,
+	NodeArray<DPoint>& F_multipole_exp)
+{
+	List<QuadTreeNodeNM*> M;
+	List<node> act_contained_nodes;
+	ListIterator<node> v_ptr;
+	complex<double> sum;
+	complex<double> z_0;
+	complex<double> z_v_minus_z_0_over_minus_k_minus_1;
+	DPoint force_vector;
+
+	//for each leaf u in the M-List of an actual leaf v do:
+	//calculate derivative of the multipole expansion function at u
+	//and evaluate it for each node in v.get_contained_nodes()
+	//and transform the complex number back to the real-world, to obtain the force
+
+	forall_listiterators(QuadTreeNodeNM*, act_leaf_ptr_ptr,quad_tree_leaves)
+	{
+		(*act_leaf_ptr_ptr)->get_contained_nodes(act_contained_nodes);
+		(*act_leaf_ptr_ptr)->get_M(M);
+		forall_listiterators(QuadTreeNodeNM*, M_node_ptr_ptr,M)
+		{
+			z_0 = (*M_node_ptr_ptr)->get_Sm_center();
+			forall_listiterators(node, v_ptr,act_contained_nodes)
+			{
+				complex<double> z_v (A[*v_ptr].get_x(),A[*v_ptr].get_y());
+				z_v_minus_z_0_over_minus_k_minus_1 = 1.0/(z_v-z_0);
+				sum = (*M_node_ptr_ptr)->get_multipole_exp()[0]*
+					z_v_minus_z_0_over_minus_k_minus_1;
+
+				for(int k=1; k<=precision(); k++)
+				{
+					z_v_minus_z_0_over_minus_k_minus_1 /= z_v - z_0;
+					sum -= double(k) * (*M_node_ptr_ptr)->get_multipole_exp()[k] *
+						z_v_minus_z_0_over_minus_k_minus_1;
+				}
+				force_vector.m_x = sum.real();
+				force_vector.m_y = (-1) * sum.imag();
+				F_multipole_exp[*v_ptr] =  F_multipole_exp[*v_ptr] + force_vector;
+
+			}
+		}
+	}
+}
+
+
+void NMM::calculate_neighbourcell_forces(
+	NodeArray<NodeAttributes>& A,
+	List <QuadTreeNodeNM*>& quad_tree_leaves,
+	NodeArray<DPoint>& F_direct)
+{
+	numexcept N;
+	List<node> act_contained_nodes,neighbour_contained_nodes,non_neighbour_contained_nodes;
+	List<QuadTreeNodeNM*> neighboured_leaves;
+	List<QuadTreeNodeNM*> non_neighboured_leaves;
+	double act_leaf_boxlength,neighbour_leaf_boxlength;
+	DPoint act_leaf_dlc,neighbour_leaf_dlc;
+	DPoint f_rep_u_on_v;
+	DPoint vector_v_minus_u;
+//	DPoint nullpoint(0,0);
+	DPoint pos_u,pos_v;
+	double norm_v_minus_u,scalar;
+	int length;
+	node u,v;
+
+	forall_listiterators(QuadTreeNodeNM*, act_leaf_ptr,quad_tree_leaves)
+	{//forall
+		(*act_leaf_ptr)->get_contained_nodes(act_contained_nodes);
+
+		if(act_contained_nodes.size() <= particles_in_leaves())
+		{//if (usual case)
+
+			//Step1:calculate forces inside act_contained_nodes
+
+			length = act_contained_nodes.size();
+			Array<node> numbered_nodes (length+1);
+			int k = 1;
+			forall_listiterators(node, v_ptr,act_contained_nodes)
+			{
+				numbered_nodes[k]= *v_ptr;
+				k++;
+			}
+
+			for(k = 1; k<length; k++)
+				for(int l = k+1; l<=length; l++)
+				{
+					u = numbered_nodes[k];
+					v = numbered_nodes[l];
+					pos_u = A[u].get_position();
+					pos_v = A[v].get_position();
+					if (pos_u == pos_v)
+					{//if2  (Exception handling if two nodes have the same position)
+						pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_u);
+					}//if2
+					vector_v_minus_u = pos_v - pos_u;
+					norm_v_minus_u = vector_v_minus_u.norm();
+					if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+					{
+						scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+						f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+						f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+					}
+					F_direct[v] = F_direct[v] + f_rep_u_on_v;
+					F_direct[u] = F_direct[u] - f_rep_u_on_v;
+				}
+
+				//Step 2: calculated forces to nodes in act_contained_nodes() of
+				//leaf_ptr->get_D1()
+
+				(*act_leaf_ptr)->get_D1(neighboured_leaves);
+				act_leaf_boxlength = (*act_leaf_ptr)->get_Sm_boxlength();
+				act_leaf_dlc = (*act_leaf_ptr)->get_Sm_downleftcorner();
+
+				forall_listiterators(QuadTreeNodeNM*, neighbour_leaf_ptr,neighboured_leaves)
+				{//forall2
+					//forget boxes that have already been looked at
+
+					neighbour_leaf_boxlength = (*neighbour_leaf_ptr)->get_Sm_boxlength();
+					neighbour_leaf_dlc = (*neighbour_leaf_ptr)->get_Sm_downleftcorner();
+
+					if( (act_leaf_boxlength > neighbour_leaf_boxlength) ||
+						(act_leaf_boxlength == neighbour_leaf_boxlength &&
+						act_leaf_dlc.m_x < neighbour_leaf_dlc.m_x)
+						|| (act_leaf_boxlength == neighbour_leaf_boxlength &&
+						act_leaf_dlc.m_x ==  neighbour_leaf_dlc.m_x &&
+						act_leaf_dlc.m_y < neighbour_leaf_dlc.m_y) )
+					{//if
+						(*neighbour_leaf_ptr)->get_contained_nodes(neighbour_contained_nodes);
+						forall_listiterators(node, v_ptr,act_contained_nodes)
+							forall_listiterators(node, u_ptr, neighbour_contained_nodes)
+						{//for
+							pos_u = A[*u_ptr].get_position();
+							pos_v = A[*v_ptr].get_position();
+							if (pos_u == pos_v)
+							{//if2  (Exception handling if two nodes have the same position)
+								pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_u);
+							}//if2
+							vector_v_minus_u = pos_v - pos_u;
+							norm_v_minus_u = vector_v_minus_u.norm();
+							if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+							{
+								scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+								f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+								f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+							}
+							F_direct[*v_ptr] = F_direct[*v_ptr] + f_rep_u_on_v;
+							F_direct[*u_ptr] = F_direct[*u_ptr] - f_rep_u_on_v;
+						}//for
+					}//if
+				}//forall2
+
+				//Step 3: calculated forces to nodes in act_contained_nodes() of
+				//leaf_ptr->get_D2()
+
+				(*act_leaf_ptr)->get_D2(non_neighboured_leaves);
+				forall_listiterators(QuadTreeNodeNM*, non_neighbour_leaf_ptr,
+					non_neighboured_leaves)
+				{//forall3
+					(*non_neighbour_leaf_ptr)->get_contained_nodes(
+						non_neighbour_contained_nodes);
+					forall_listiterators(node,v_ptr,act_contained_nodes)
+						forall_listiterators(node, u_ptr,non_neighbour_contained_nodes)
+					{//for
+						pos_u = A[*u_ptr].get_position();
+						pos_v = A[*v_ptr].get_position();
+						if (pos_u == pos_v)
+						{//if2  (Exception handling if two nodes have the same position)
+							pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_u);
+						}//if2
+						vector_v_minus_u = pos_v - pos_u;
+						norm_v_minus_u = vector_v_minus_u.norm();
+						if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+						{
+							scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+							f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+							f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+						}
+						F_direct[*v_ptr] = F_direct[*v_ptr] + f_rep_u_on_v;
+					}//for
+				}//forall3
+		}//if(usual case)
+		else //special case (more then particles_in_leaves() particles in this leaf)
+		{//else
+			forall_listiterators(node, v_ptr, act_contained_nodes)
+			{
+				pos_v = A[*v_ptr].get_position();
+				pos_u = N.choose_distinct_random_point_in_radius_epsilon(pos_v);
+				vector_v_minus_u = pos_v - pos_u;
+				norm_v_minus_u = vector_v_minus_u.norm();
+				if(!N.f_rep_near_machine_precision(norm_v_minus_u,f_rep_u_on_v))
+				{
+					scalar = f_rep_scalar(norm_v_minus_u)/norm_v_minus_u ;
+					f_rep_u_on_v.m_x = scalar * vector_v_minus_u.m_x;
+					f_rep_u_on_v.m_y = scalar * vector_v_minus_u.m_y;
+				}
+				F_direct[*v_ptr] =  F_direct[*v_ptr] + f_rep_u_on_v;
+			}
+		}//else
+	}//forall
+}
+
+
+inline void NMM::add_rep_forces(
+	const Graph& G,
+	NodeArray<DPoint>& F_direct,
+	NodeArray<DPoint>& F_multipole_exp,
+	NodeArray<DPoint>& F_local_exp,
+	NodeArray<DPoint>& F_rep)
+{
+	node v;
+	forall_nodes(v,G)
+	{
+		F_rep[v] = F_direct[v]+F_local_exp[v]+F_multipole_exp[v];
+	}
+}
+
+
+inline double NMM::f_rep_scalar(double d)
+{
+	if (d > 0)
+	{
+		return 1/d;
+	}
+	else
+	{
+		cout<<"Error NMM:: f_rep_scalar nodes at same position"<<endl;
+		return 0;
+	}
+}
+
+
+void NMM::init_binko(int t)
+{
+	typedef double*  double_ptr;
+
+	BK = new double_ptr[t+1];
+
+	for(int i = 0; i<= t ; i++)
+	{//for
+		BK[i] = new double[i+1];
+	}//for
+
+	//Pascal's triangle
+
+	for (int i = 0; i <= t; i++)
+		BK[i][0] = BK[i][i] = 1;
+
+	for (int i = 2; i <= t; i ++)
+		for (int j = 1; j < i; j++)
+		{
+			BK[i][j] = BK[i-1][j-1]+BK[i-1][j];
+		}
+}
+
+
+inline void NMM::free_binko()
+{
+	for(int i = 0;i<= 2*precision();i++)
+		delete [] BK[i];
+	delete [] BK;
+}
+
+
+inline double NMM::binko(int n, int k)
+{
+	return BK[n][k];
+}
+
+}//namespace ogdf
diff --git a/ogdf/internal/energybased/NMM.h b/ogdf/internal/energybased/NMM.h
new file mode 100644
index 0000000..8a3a00b
--- /dev/null
+++ b/ogdf/internal/energybased/NMM.h
@@ -0,0 +1,516 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class NMM (New Multipole Method).
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_NMM_H
+#define OGDF_NMM_H
+
+#include "../../basic/Graph.h"
+#include "../..//basic/List.h"
+#include "../..//basic/Array2D.h"
+#include "../..//basic/geometry.h"
+#include "NodeAttributes.h"
+#include "EdgeAttributes.h"
+#include "QuadTreeNM.h"
+#include "ParticleInfo.h"
+#include "FruchtermanReingold.h"
+#include <complex>
+
+
+namespace ogdf {
+
+class OGDF_EXPORT NMM
+{
+public:
+	NMM();          //constructor
+	~NMM() { }      //destructor
+
+	//Calculate rep. forces for each node.
+	void calculate_repulsive_forces(const Graph &G,
+		NodeArray<NodeAttributes>& A,
+		NodeArray<DPoint>& F_rep);
+
+	//Make all initialisations that are needed for New Multipole Method (NMM)
+	void make_initialisations (const Graph &G,
+		double boxlength,
+		DPoint down_left_corner,
+		int particles_in_leaves,
+		int precision,
+		int tree_construction_way,
+		int find_small_cell);
+
+	//Dynamically allocated memory is freed here.
+	void deallocate_memory();
+
+	//Import updated information of the drawing area.
+	void update_boxlength_and_cornercoordinate(double b_l,DPoint d_l_c);
+
+private:
+	int MIN_NODE_NUMBER; //The minimum number of nodes for which the forces are
+						 //calculated using NMM (for lower values the exact
+						 //calculation is used).
+	bool using_NMM; //Indicates whether the exact method or NMM is used for force
+					//calculation (value depends on MIN_NODE_NUMBER)
+	FruchtermanReingold ExactMethod; //needed in case that using_NMM == false
+
+	int _tree_construction_way;//1 = pathwise;2 = subtreewise
+	int _find_small_cell;//0 = iterative; 1= Aluru
+	int _particles_in_leaves;//max. number of particles for leaves of the quadtree
+	int _precision;  //precision for p-term multipole expansion
+
+	double boxlength;//length of drawing box
+	DPoint down_left_corner;//down left corner of drawing box
+
+	int* power_of_2; //holds the powers of 2 (for speed reasons to calculate the
+					 //maximal boxindex (index is from 0 to max_power_of_2_index)
+	int max_power_of_2_index;//holds max. index for power_of_2 (= 30)
+	double ** BK; //holds the binomial coefficients
+	List<DPoint> rep_forces;	//stores the rep. forces of the last iteration
+								//(needed for error calculation)
+
+	//private helping functions
+
+	//The array power_of_2 is calculated for values from 0 to max_power_of_2_index
+	//which is set here to 30.
+	void init_power_of_2_array();
+
+	//The space of power_of_2 is freed.
+	void free_power_of_2_array();
+
+	//Returns power_of_2[i] for values <= max_power_of_2_index else it returns
+	//pow(2,i).
+	int power_of_two(int i);
+
+	//Returns the maximal index of a box in level i.
+	int maxboxindex (int level);
+
+	//Use NMM for force calculation (used for large Graphs (|V| > MIN_NODE_NUMBER)).
+	void  calculate_repulsive_forces_by_NMM(const Graph &G, NodeArray
+		<NodeAttributes>& A, NodeArray<DPoint>& F_rep);
+
+	//Use the exact method for force calculation (used for small Graphs (|V| <=
+	//MIN_NODE_NUMBER) for speed reasons).
+	void  calculate_repulsive_forces_by_exact_method(const Graph &G,
+		NodeArray<NodeAttributes>& A,
+		NodeArray<DPoint>& F_rep);
+
+	// *********Functions needed for path by path tree construction***********
+
+	//The reduced quadtree is build up path by path (the Lists LE,ME, the
+	//centers, D1, D2, M, and quad_tree_leaves are not calculated here.
+	void  build_up_red_quad_tree_path_by_path(const Graph& G,
+		NodeArray<NodeAttributes>& A,
+		QuadTreeNM& T);
+
+	//Makes L_x(y)_copy a copy of L_x(y)_orig and sets p.copy_item for each element in
+	//L_x(y)_orig to the ListIterator of the corresponding element in L_x(y)_copy;
+	//Furthermore, the p.cross_ref_items in L_x(y)_copy are set and p.subList_ptr and
+	//p.tmp_cross_ref_item is reset to NULL in both lists.
+	void make_copy_and_init_Lists(List<ParticleInfo>& L_x_orig,
+		List<ParticleInfo>& L_x_copy,
+		List<ParticleInfo>& L_y_orig,
+		List<ParticleInfo>& L_y_copy);
+
+	//The root node of T is constructed.
+	void build_up_root_node(const Graph& G,NodeArray<NodeAttributes>& A, QuadTreeNM& T);
+
+	//The sorted and linked Lists L_x and L_y for the root node are created.
+	void create_sorted_coordinate_Lists(const Graph& G,NodeArray<NodeAttributes>& A,
+		List<ParticleInfo>& L_x, List<ParticleInfo>& L_y);
+
+	//T is extended by a subtree T1 rooted at the T.get_act_node().
+	//The boxlength and down_left_corner of the actual node is reduced if it is
+	//not the minimal subquad that contains all the particles in the represented area.
+	void  decompose_subtreenode(QuadTreeNM& T,
+		List<ParticleInfo>& act_x_List_copy,
+		List<ParticleInfo>& act_y_List_copy,
+		List<QuadTreeNodeNM*>& new_leaf_List);
+
+	//The extreme coordinates of the particles contained in *act_ptr are calculated.
+	void calculate_boundaries_of_act_node(QuadTreeNodeNM* act_ptr,
+		double& x_min,
+		double& x_max,
+		double& y_min,
+		double& y_max);
+
+	//Returns true if the rectangle defined by x_min,...,y_max lies within the
+	//left(right)_top(bottom) quad of the small cell of *act_ptr.
+	bool in_lt_quad(QuadTreeNodeNM* act_ptr, double x_min,double x_max, double y_min, double y_max);
+	bool in_rt_quad(QuadTreeNodeNM* act_ptr, double x_min,double x_max, double y_min, double y_max);
+	bool in_lb_quad(QuadTreeNodeNM* act_ptr, double x_min,double x_max, double y_min, double y_max);
+	bool in_rb_quad(QuadTreeNodeNM* act_ptr, double x_min,double x_max, double y_min, double y_max);
+
+	//The Lists *act_ptr->get_x(y)_List_ptr() are split into two sublists containing
+	//the particles in the left and right half of the actual quad. The list that is
+	//larger is constructed from *act_ptr->get_x(y)_List_ptr() by deleting the other
+	//elements; The smaller List stays empty at this point, but the corresponding
+	//elements in L_x(y)_copy contain a pointer to the x(y) List, where they belong to.
+	void split_in_x_direction(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_left_ptr,
+		List<ParticleInfo>*& L_y_left_ptr,
+		List<ParticleInfo>*& L_x_right_ptr,
+		List <ParticleInfo>*& L_y_right_ptr);
+
+	//The Lists *act_ptr->get_x(y)_List_ptr() are split into two subLists containing
+	//the particles in the top /bottom half ...
+	void split_in_y_direction(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_bottom_ptr,
+		List<ParticleInfo>*& L_y_bottom_ptr,
+		List<ParticleInfo>*& L_x_top_ptr,
+		List<ParticleInfo>*& L_y_top_ptr);
+
+
+	//The Lists *L_x(y)_left_ptr are constructed from *act_ptr->get_x(y)_List_ptr()
+	//by deleting all elements right from last_left_item in *act_ptr->get_x_List_ptr()
+	//the corresponding values in  *act_ptr->get_y_List_ptr() are deleted as well.
+	//The corresponding List-elements of the deleted elements in the Lists L_x(y)_copy
+	//hold the information, that they belong to the Lists *L_x(y)_left_ptr.
+	void x_delete_right_subLists(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_left_ptr,
+		List <ParticleInfo>*& L_y_left_ptr,
+		List<ParticleInfo>*& L_x_right_ptr,
+		List <ParticleInfo>*& L_y_right_ptr,
+		ListIterator<ParticleInfo> last_left_item);
+
+	//Analogue as above.
+	void x_delete_left_subLists(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_left_ptr,
+		List <ParticleInfo>*& L_y_left_ptr,
+		List<ParticleInfo>*& L_x_right_ptr,
+		List <ParticleInfo>*& L_y_right_ptr,
+		ListIterator<ParticleInfo> last_left_item);
+
+	//The Lists *L_x(y)_left_ptr are constructed from *act_ptr->get_x(y)_List_ptr()
+	//by deleting all elements right from last_left_item in *act_ptr->get_y_List_ptr()
+	//the ...
+	void y_delete_right_subLists(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_left_ptr,
+		List<ParticleInfo>*& L_y_left_ptr,
+		List<ParticleInfo>*& L_x_right_ptr,
+		List <ParticleInfo>*& L_y_right_ptr,
+		ListIterator<ParticleInfo> last_left_item);
+
+	//Analogue as above.
+	void y_delete_left_subLists(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_left_ptr,
+		List<ParticleInfo>*& L_y_left_ptr,
+		List<ParticleInfo>*& L_x_right_ptr,
+		List <ParticleInfo>*& L_y_right_ptr,
+		ListIterator<ParticleInfo> last_left_item);
+
+
+	//The Lists *L_x(y)_b_ptr and *L_x(y)_t_ptr are constructed from the Lists
+	// *L_x(y)_ptr.
+	void split_in_y_direction(
+		QuadTreeNodeNM* act_ptr,
+		List<ParticleInfo>*& L_x_ptr,
+		List<ParticleInfo>*& L_x_b_ptr,
+		List<ParticleInfo>*& L_x_t_ptr,
+		List<ParticleInfo>*& L_y_ptr,
+		List<ParticleInfo>*& L_y_b_ptr,
+		List<ParticleInfo>*& L_y_t_ptr);
+
+	//The Lists *L_x(y)_b(t)_ptr are constructed from the Lists *L_x(y)_ptr by
+	//moving all List elements from *L_x(y)_ptr that belong to *L_x(y)_l_ptr
+	//to this List. the L_x(y)_right_ptr point  to the reduced Lists L_x(y)_ptr
+	//afterwards.
+	void y_move_left_subLists(List<ParticleInfo>*& L_x_ptr,
+		List<ParticleInfo>*& L_x_b_ptr,
+		List<ParticleInfo>*& L_x_t_ptr,
+		List<ParticleInfo>*& L_y_ptr,
+		List <ParticleInfo>*& L_y_b_ptr,
+		List<ParticleInfo>*& L_y_t_ptr,
+		ListIterator<ParticleInfo> last_left_item);
+
+	//Same as above but the elements that belong to *&L_x(y)_right_ptr are moved.
+	void y_move_right_subLists(List<ParticleInfo>*& L_x_ptr,
+		List<ParticleInfo>*& L_x_b_ptr,
+		List<ParticleInfo>*& L_x_t_ptr,
+		List<ParticleInfo>*&L_y_ptr,
+		List <ParticleInfo>*& L_y_b_ptr,
+		List<ParticleInfo>*& L_y_t_ptr,
+		ListIterator<ParticleInfo> last_left_item);
+
+	//The sorted subLists, that can be accesssed by the entries in L_x(y)_copy->
+	//get_subList_ptr() are constructed.
+	void build_up_sorted_subLists(List<ParticleInfo>& L_x_copy,
+		List<ParticleInfo>& act_y_List_copy);
+
+	// ************functions needed for subtree by subtree tree construction **********
+
+	//The reduced quadtree is build up subtree by subtree (the lists LE, ME the
+	//centers, D1, D2, M, quad_tree_leaves are not calculated here.
+	void  build_up_red_quad_tree_subtree_by_subtree(const Graph& G,
+		NodeArray<NodeAttributes>& A,
+		QuadTreeNM& T);
+
+	//The root node of T is constructed and contained_nodes is set to the list of
+	//all nodes of G.
+	void build_up_root_vertex(const Graph&G, QuadTreeNM& T);
+
+	//The reduced subtree of T rooted at *subtree_root_ptr containing all the particles
+	//of subtree_root_ptr->get_contained_nodes() is constructed; Pointers to leaves
+	//of the subtree that contain more than particles_in_leaves() particles in their
+	//contained_nodes() lists are added to new_subtree_root_List_ptr; The lists
+	//contained_nodes() are nonempty only for the (actual) leaves of T.
+	void construct_subtree(NodeArray<NodeAttributes>& A,
+		QuadTreeNM& T,
+		QuadTreeNodeNM*	subtree_root_ptr,
+		List<QuadTreeNodeNM*>& new_subtree_root_List);
+
+	//A complete subtree of T and of depth subtree_depth, rooted at *T.get_act_ptr() is
+	//constructed. Furthermore leaf_ptr[i][j] points to a leaf node of the subtree
+	//that represents the quadratic subregion of *T.get_act_ptr() at subtree_depth
+	//and position [i][j] i,j in 0,...,maxindex;act_depth(x_index,y_index) are
+	//helping variables for recursive calls.
+	void construct_complete_subtree(QuadTreeNM& T,
+		int subtree_depth,
+		Array2D<QuadTreeNodeNM*>& leaf_ptr,
+		int act_depth,
+		int act_x_index,
+		int act_y_index);
+
+	//The particles in subtree_root_ptr->get_contained_nodes() are assigned to
+	//the the contained_nodes lists of the leaves of the subtree by using the
+	//information of A,leaf_ptr and maxindex. Afterwards contained_nodes of
+	// *subtree_root_ptr is empty.
+	void set_contained_nodes_for_leaves(NodeArray<NodeAttributes>& A,
+		QuadTreeNodeNM* subtree_root_ptr,
+		Array2D<QuadTreeNodeNM*>& leaf_ptr,
+		int maxindex);
+
+	//The subtree of T rooted at *T.get_act_ptr() is traversed bottom up, such that
+	//the subtreeparticlenumber of every node in this subtree is set correctly.
+	void set_particlenumber_in_subtree_entries(QuadTreeNM& T);
+
+	//The reduced subtree rooted at *T.get_act_ptr() is calculated ; A pointer to
+	//every leaf of this subtree that contains more then particles_in_leaves()
+	//particles is added to new_subtree_root_List; The lists contained_nodes are
+	//empty for all but the leaves.
+	void construct_reduced_subtree(NodeArray<NodeAttributes>& A,
+		QuadTreeNM& T,
+		List<QuadTreeNodeNM*>& new_subtree_root_List);
+
+	//All subtrees of *T.get_act_ptr() that have a child c of *T.get_act_ptr() as root
+	//and c.get_particlenumber_in_subtree() == 0 are deleted.
+	void delete_empty_subtrees(QuadTreeNM& T);
+
+	//If *T.get_act_ptr() is a degenerated node (has only one child c) *T.get_act_ptr()
+	//is deleted from T and the child c is linked with the father of *T.get_act_ptr()
+	//if *T.get_act_ptr() is the root of T than c is set to the new root of T
+	//T.get_act_ptr() points to c afterwards; Furthermore true is returned if
+	// *T.get_act_ptr() has been degenerated, else false is returned.
+	bool check_and_delete_degenerated_node(QuadTreeNM& T);
+
+	//The subtree rooted at new_leaf_ptr is deleted, *new_leaf_ptr is a leaf
+	//of T and new_leaf_ptr->get_contained_nodes() contains all the particles
+	//contained in the leaves of the deleted subtree; Precondition: T.get_act_ptr() is
+	//new_leaf_ptr.
+	void delete_sparse_subtree(QuadTreeNM& T, QuadTreeNodeNM* new_leaf_ptr);
+
+	//new_leaf_ptr->get_contained_nodes() contains all the particles contained in
+	//the leaves of its subtree afterwards; Precondition: T.get_act_ptr() is
+	//new_leaf_ptr
+	void collect_contained_nodes(QuadTreeNM& T, QuadTreeNodeNM* new_leaf_ptr);
+
+	//If all nodes in T.get_act_ptr()->get_contained_nodes() have the same position
+	//false is returned. Else true is returned and
+	//the boxlength, down_left_corner and level of *T.get_act_ptr() is updated
+	//such that this values are minimal (i.e. the smallest quad that contains all
+	//the particles of T.get_act_ptr()->get_contained_nodes(); If all this particles
+	//are placed at a point nothing is done.
+	bool find_smallest_quad(NodeArray<NodeAttributes>& A, QuadTreeNM& T);
+
+	// *********functions needed for subtree by subtree tree construction(end) ********
+
+	//Finds the small cell of the actual Node of T iteratively,and updates
+	//Sm_downleftcorner, Sm_boxlength, and level of *act_ptr.
+	void find_small_cell_iteratively(QuadTreeNodeNM* act_ptr,
+		double x_min,
+		double x_max,
+		double y_min,
+		double y_max);
+
+	//Finds the small cell of the actual Node of T by Aluru's Formula, and updates
+	//Sm_downleftcorner, Sm_boxlength, and level of *act_ptr.
+	void find_small_cell_by_formula(QuadTreeNodeNM* act_ptr,
+		double x_min,
+		double x_max,
+		double y_min,
+		double y_max);
+
+	//The reduced quad tree is deleted; Furthermore the treenode_number is calculated.
+	void delete_red_quad_tree_and_count_treenodes(QuadTreeNM& T);
+
+	//The multipole expansion terms ME are calculated for all nodes of T ( centers are
+	//initialized for each cell and quad_tree_leaves stores pointers to leaves of T).
+	void form_multipole_expansions(NodeArray<NodeAttributes>& A,
+		QuadTreeNM& T,
+		List<QuadTreeNodeNM*>& quad_tree_leaves);
+
+	//The multipole expansion List ME for the tree rooted at T.get_act_ptr() is
+	//recursively calculated.
+	void form_multipole_expansion_of_subtree(NodeArray<NodeAttributes>& A,
+		QuadTreeNM& T,
+		List<QuadTreeNodeNM*>& quad_tree_leaves);
+
+	//The Lists ME and LE are both initialized to zero entries for *act_ptr.
+	void init_expansion_Lists(QuadTreeNodeNM* act_ptr);
+
+	//The center of the box of *act_ptr is initialized.
+	void set_center(QuadTreeNodeNM* act_ptr);
+
+	//Calculate List ME for *act_ptr Precondition: *act_ptr is a leaf.
+	void form_multipole_expansion_of_leaf_node(NodeArray<NodeAttributes>& A,
+		QuadTreeNodeNM* act_ptr);
+
+	//Add the shifted ME Lists of *act_ptr to act_ptr->get_father_ptr() ; precondition
+	// *act_ptr has a father_node.
+	void add_shifted_expansion_to_father_expansion(QuadTreeNodeNM* act_ptr);
+
+	//According to NMM T is traversed recursively top-down starting from act_node_ptr
+	//== T.get_root_ptr() and thereby the lists D1, D2, M and LE are calculated for all
+	//treenodes.
+	void calculate_local_expansions_and_WSPRLS(NodeArray<NodeAttributes>&A,
+		QuadTreeNodeNM* act_node_ptr);
+
+	//If the small cell of ptr_1 and ptr_2 are well separated true is returned (else
+	//false).
+	bool well_separated(QuadTreeNodeNM* ptr_1, QuadTreeNodeNM* ptr_2);
+
+	//If ptr_1 and ptr_2 are nonequal and bordering true is returned; else false.
+	bool bordering(QuadTreeNodeNM* ptr_1, QuadTreeNodeNM* ptr_2);
+
+	//The shifted local expansion of the father of node_ptr is added to the local
+	//expansion of node_ptr;precondition: node_ptr is not the root of T.
+	void add_shifted_local_exp_of_parent(QuadTreeNodeNM* node_ptr);
+
+	//The multipole expansion of *ptr_1 is transformed into a local expansion around
+	//the center of *ptr_2 and added to *ptr_2 s local expansion list.
+	void add_local_expansion(QuadTreeNodeNM* ptr_1, QuadTreeNodeNM* ptr_2);
+
+	//The multipole expansion for every particle of leaf_ptr->contained_nodes
+	//(1,0,...) is transformed into a local expansion around the center of *ptr_2 and
+	//added to *ptr_2 s local expansion List;precondition: *leaf_ptr is a leaf.
+	void add_local_expansion_of_leaf(NodeArray<NodeAttributes>&A,
+		QuadTreeNodeNM*	leaf_ptr,
+		QuadTreeNodeNM* act_ptr);
+
+	//For each leaf v in quad_tree_leaves the force contribution defined by
+	//v.get_local_exp() is calculated and stored in F_local_exp.
+	void transform_local_exp_to_forces(NodeArray <NodeAttributes>&A,
+		List<QuadTreeNodeNM*>& quad_tree_leaves,
+		NodeArray<DPoint>& F_local_exp);
+
+	//For each leaf v in quad_tree_leaves the force contribution defined by all nodes
+	//in v.get_M() is calculated and stored in F_multipole_exp.
+	void transform_multipole_exp_to_forces(NodeArray<NodeAttributes>& A,
+		List<QuadTreeNodeNM*>& quad_tree_leaves,
+		NodeArray<DPoint>& F_multipole_exp);
+
+	//For each leaf v in quad_tree_leaves the force contributions from all leaves in
+	//v.get_D1() and v.get_D2() are calculated.
+	void calculate_neighbourcell_forces(NodeArray<NodeAttributes>& A,
+		List<QuadTreeNodeNM*>& quad_tree_leaves,
+		NodeArray<DPoint>& F_direct);
+
+	//Add repulsive force contributions for each node.
+	void add_rep_forces(const Graph& G,
+		NodeArray<DPoint>& F_direct,
+		NodeArray<DPoint>& F_multipole_exp,
+		NodeArray<DPoint>& F_local_exp,
+		NodeArray<DPoint>& F_rep);
+
+	//Returns the repulsing force_function_value of scalar d.
+	double f_rep_scalar (double d);
+
+	//Init BK -matrix for values n, k in 0 to t.
+	void init_binko(int t);
+
+	//Free space for BK.
+	void free_binko();
+
+	//Returns n over k.
+	double binko(int n, int k);
+
+	//The way to construct the reduced tree (0) = level by level (1) path by path
+	//(2) subtree by subtree
+	int tree_construction_way() const { return _tree_construction_way; }
+
+	void tree_construction_way(int a) {
+		_tree_construction_way = (((0<=a)&&(a<=2)) ? a : 0);
+	}
+
+	//(0) means that the smallest quadratic cell that surrounds a node of the
+	//quadtree is calculated iteratively in constant time (1) means that it is
+	//calculated by the formula of Aluru et al. in constant time
+	int find_sm_cell() const { return _find_small_cell; }
+
+	void find_sm_cell(int a) {
+		_find_small_cell = (((0<=a)&&(a<=1)) ? a : 0);
+	}
+
+	//Max. number of particles that are contained in a leaf of the red. quadtree.
+	void particles_in_leaves (int b) { _particles_in_leaves = ((b>= 1)? b : 1); }
+	int particles_in_leaves () const { return _particles_in_leaves; }
+
+	//The precision p for the p-term multipole expansions.
+	void precision (int p) { _precision  = ((p >= 1 ) ? p : 1); }
+	int  precision () const { return _precision; }
+};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/internal/energybased/NodeAttributes.cpp b/ogdf/internal/energybased/NodeAttributes.cpp
new file mode 100644
index 0000000..73c5a44
--- /dev/null
+++ b/ogdf/internal/energybased/NodeAttributes.cpp
@@ -0,0 +1,143 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class NodeAttributes.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "NodeAttributes.h"
+
+namespace ogdf{
+
+ostream &operator<< (ostream & output, const NodeAttributes & A)
+{
+	output <<"width: "<< A.width<<" height: "<<A.height<<" position: "<<A.position ;
+	output<<" index of lower level node ";
+	if (A.v_lower_level == NULL)
+		output <<"NULL";
+	else output<<A.v_lower_level->index();
+	output<<" index of higher level node ";
+	if (A.v_higher_level == NULL)
+		output <<"NULL";
+	else output<<A.v_higher_level->index();
+	output<<" mass "<<A.mass<<" type "<<A.type;
+	if(A.type == 3)
+	{
+		output<<" dedic_moon_nodes ";
+		if(A.moon_List.empty())
+			output<<" is empty";
+		else forall_listiterators(node,it,A.moon_List) output<<(*it)->index()<<" ";
+	}
+	if(A.type == 4)
+		output<<" dedic_pm_node "<<A.dedicated_pm_node;
+	output<<" index of dedicated sun_node ";
+	if (A.get_dedicated_sun_node() == NULL)
+		output<<"NULL";
+	else
+		output<<A.dedicated_sun_node->index();
+	output<<" distance to dedicated sun "<<A.dedicated_sun_distance;
+	output<<" lambda_List ";
+	if(A.lambda.empty())
+		output<<" is empty";
+	else forall_listiterators(double, l,A.lambda) output<<*l<<" ";
+	output<<" neighbour_sun_node_List ";
+	if(A.neighbour_s_node.empty())
+		output<<" is empty";
+	else forall_listiterators(node, it,A.neighbour_s_node) output<<(*it)->index()<<" ";
+	if(A.placed == true)
+		output<<" is placed";
+	else
+		output<<" is not placed";
+	cout<<" angle_1 "<<A.angle_1<<" angle_2 "<<A.angle_2<<endl;
+	return output;
+}
+
+
+istream &operator>> (istream & input,  NodeAttributes & /* A */)
+{
+	//input >> A.l;
+	return input;
+}
+
+
+void NodeAttributes::init_mult_values()
+{
+	type = 0;
+	dedicated_sun_node = NULL;
+	dedicated_sun_distance = 0;
+	dedicated_pm_node = NULL;
+	lambda.clear();
+	neighbour_s_node.clear();
+	lambda_List_ptr = λ
+	neighbour_s_node_List_ptr = &neighbour_s_node;
+	moon_List.clear();
+	moon_List_ptr = &moon_List;
+	placed = false;
+	angle_1 = 0;
+	angle_2 = 6.2831853;
+}
+
+
+NodeAttributes::NodeAttributes()
+{
+	position.m_x = 0;
+	position.m_y = 0;
+	width = 0;
+	height = 0;
+	v_lower_level = NULL;
+	v_higher_level = NULL;
+
+	//for multilevel step
+	mass = 0;
+	type = 0;
+	dedicated_sun_node = NULL;
+	dedicated_sun_distance = 0;
+	dedicated_pm_node = NULL;
+	lambda.clear();
+	neighbour_s_node.clear();
+	lambda_List_ptr = λ
+	neighbour_s_node_List_ptr = &neighbour_s_node;
+	moon_List.clear();
+	moon_List_ptr = &moon_List;
+	placed = false;
+	angle_1 = 0;
+	angle_2 = 6.2831853;
+}
+
+}//namespace ogdf
diff --git a/ogdf/internal/energybased/NodeAttributes.h b/ogdf/internal/energybased/NodeAttributes.h
new file mode 100644
index 0000000..2318e6e
--- /dev/null
+++ b/ogdf/internal/energybased/NodeAttributes.h
@@ -0,0 +1,184 @@
+/*
+ * $Revision: 2555 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 12:12:10 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class NodeAttributes.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_NODE_ATTRIBUTES_H
+#define OGDF_NODE_ATTRIBUTES_H
+
+#include "../../basic/geometry.h"
+#include "../../basic/Graph.h"
+#include "../../basic/List.h"
+
+namespace ogdf {
+
+class OGDF_EXPORT NodeAttributes
+{
+	//helping data structure that stores the graphical attributes of a node
+	//that are needed for the force-directed algorithms.
+
+
+	//outputstream for NodeAttributes
+	friend ostream &operator<< (ostream &,const NodeAttributes &);
+
+	//inputstream for NodeAttributes
+	friend istream &operator>> (istream &,NodeAttributes &);
+
+public:
+
+	NodeAttributes();       //constructor
+	~NodeAttributes() { }   //destructor
+
+	void set_NodeAttributes(double w, double h, DPoint pos,node v_low,node
+		v_high)
+	{
+		width = w;
+		height = h;
+		position = pos;
+		v_lower_level = v_low;
+		v_higher_level = v_high;
+	}
+
+	void set_position(DPoint pos) {position = pos;}
+	void set_width(double w) {width = w;}
+	void set_height(double h) {height = h;}
+	void set_x(double x) {position.m_x = x;}
+	void set_y(double y) {position.m_y = y;}
+
+	DPoint get_position() const { return position; }
+	double get_x() const {return position.m_x;}
+	double get_y() const {return position.m_y;}
+	double get_width() const {return width;}
+	double get_height() const {return height;}
+
+
+	//for preprocessing step in FMMM
+
+	void set_original_node (node v) {v_lower_level = v;}
+	void set_copy_node (node v) {v_higher_level = v;}
+	node get_original_node() const {return v_lower_level;}
+	node get_copy_node() const {return v_higher_level;}
+
+	//for divide et impera step in FMMM (set/get_original_node() are needed, too)
+
+	void set_subgraph_node (node v) {v_higher_level = v;}
+	node get_subgraph_node() const {return v_higher_level;}
+
+	//for the multilevel step in FMMM
+
+	void set_lower_level_node (node v) {v_lower_level = v;}
+	void set_higher_level_node (node v) {v_higher_level = v;}
+	node get_lower_level_node() const {return v_lower_level;}
+	node get_higher_level_node() const {return v_higher_level;}
+	void set_mass(int m) {mass = m;}
+	void set_type(int t) {type = t;}
+	void set_dedicated_sun_node(node v){dedicated_sun_node = v;}
+	void set_dedicated_sun_distance(double d) {dedicated_sun_distance = d;}
+	void set_dedicated_pm_node(node v) {dedicated_pm_node = v;}
+	void place(){placed = true;}
+	void set_angle_1(double a) {angle_1 = a;}
+	void set_angle_2(double a) {angle_2 = a;}
+
+	int get_mass() const {return mass;}
+	int get_type() const {return type;}
+	node get_dedicated_sun_node() const {return dedicated_sun_node;}
+	double get_dedicated_sun_distance() const {return dedicated_sun_distance;}
+	node get_dedicated_pm_node() const {return dedicated_pm_node;}
+	bool is_placed() const {return placed;}
+	double get_angle_1() const {return angle_1;}
+	double get_angle_2() const {return angle_2;}
+
+
+	List<double>* get_lambda_List_ptr() {return lambda_List_ptr;}
+	List<node>* get_neighbour_sun_node_List_ptr() {return neighbour_s_node_List_ptr;}
+	List<node>* get_dedicated_moon_node_List_ptr() {return moon_List_ptr;}
+
+
+	//initialzes all values needed for multilevel representations
+	void init_mult_values();
+
+private:
+
+	DPoint position;
+	double width;
+	double height;
+
+	//for the multilevel and divide et impera and preprocessing step
+
+	node v_lower_level; //the corresponding node in the lower level graph
+	node v_higher_level;//the corresponding node in the higher level graph
+	//for divide et impera v_lower_level is the original graph and
+	//v_higher_level is the copy of the copy of this node in the
+	//maximum connected subraph
+
+	//for the multilevel step
+
+	int mass; //the mass (= number of previously collapsed nodes) of this node
+	int type; //1 = sun node (s_node); 2 = planet node (p_node) without a dedicate moon
+	//3 = planet node with dedicated moons (pm_node);4 = moon node (m_node)
+	node dedicated_sun_node; //the dedicates s_node of the solar system of this node
+	double dedicated_sun_distance;//the distance to the dedicated sun node of the galaxy
+	//of this node
+	node dedicated_pm_node;//if type == 4 the dedicated_pm_node is saved here
+	List<double> lambda; //the factors lambda for scaling the length of this edge
+	//relative to the pass between v's sun and the sun of a
+	//neighbour solar system
+	List<node> neighbour_s_node;//this is the list of the neighbour solar systems suns
+	//lambda[i] corresponds to neighbour_s_node[i]
+	List<double>* lambda_List_ptr; //a pointer to the lambda list
+	List<node>* neighbour_s_node_List_ptr; //a pointer to to the neighbour_s_node list
+	List<node>  moon_List;//the list of all dedicated moon nodes (!= nil if type == 3)
+	List<node>* moon_List_ptr;//a pointer to the moon_List
+	bool placed;   //indicates weather an initial position has been assigned to this
+	//node or not
+	double angle_1;//describes the sector where nodes that are not adjacent to other
+	double angle_2;//solar systems have to be placed
+};
+
+}//namespace ogdf
+#endif
diff --git a/ogdf/internal/energybased/ParticleInfo.h b/ogdf/internal/energybased/ParticleInfo.h
new file mode 100644
index 0000000..f1c41b7
--- /dev/null
+++ b/ogdf/internal/energybased/ParticleInfo.h
@@ -0,0 +1,155 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class ParticleInfo.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_PARTICLE_INFO_H
+#define OGDF_PARTICLE_INFO_H
+
+#include "../../basic/Graph.h"
+#include "../../basic/List.h"
+
+namespace ogdf {
+
+class OGDF_EXPORT ParticleInfo
+{
+	//Helping data structure for building up the reduced quad tree by NMM.
+
+	//Outputstream for ParticleInfo.
+	friend ostream &operator<< (ostream & output, const ParticleInfo & A)
+	{
+		output <<" node_index "<<A.vertex->index()<<" x_y_coord "<<A.x_y_coord;
+		if(A.marked == true)
+			output<<" marked ";
+		else
+			output<<" unmarked ";
+		output<<" sublist_ptr ";
+		if (A.subList_ptr == NULL)
+			output<<"NULL";
+		else
+			output<<A.subList_ptr;
+		return output;
+	}
+
+	//inputstream for ParticleInfo
+	friend istream &operator>> (istream & input,  ParticleInfo & A)
+	{
+        int c = input.peek();
+        if (c != EOF)
+            input >> A;
+		return input;
+	}
+
+public:
+
+	ParticleInfo()    //constructor
+	{
+		vertex = NULL;
+		x_y_coord = 0;
+		cross_ref_item = NULL;
+		copy_item = NULL;
+		subList_ptr = NULL;
+		marked = false;
+		tmp_item = NULL;
+	}
+
+	~ParticleInfo() { }   //destructor
+
+	void set_vertex(node v) { vertex = v; }
+	void set_x_y_coord(double c) { x_y_coord = c; }
+	void set_cross_ref_item (ListIterator<ParticleInfo> it) { cross_ref_item = it; }
+	void set_subList_ptr(List<ParticleInfo>* ptr) { subList_ptr = ptr; }
+	void set_copy_item (ListIterator<ParticleInfo> it) { copy_item = it; }
+	void mark() { marked = true; }
+	void unmark() { marked = false; }
+	void set_tmp_cross_ref_item(ListIterator<ParticleInfo> it) { tmp_item = it; }
+
+	node get_vertex() const { return vertex; }
+	double get_x_y_coord() const { return x_y_coord; }
+	ListIterator<ParticleInfo> get_cross_ref_item() const { return cross_ref_item; }
+	List<ParticleInfo>* get_subList_ptr() const { return subList_ptr; }
+	ListIterator<ParticleInfo> get_copy_item() const{return copy_item;}
+	bool is_marked() const { return marked; }
+	ListIterator<ParticleInfo> get_tmp_cross_ref_item() const { return tmp_item; }
+
+private:
+	node vertex;      //the vertex of G that is associated with this attributes
+	double x_y_coord; //the x (resp. y) coordinate of the actual position of the vertex
+	ListIterator<ParticleInfo> cross_ref_item;	//the Listiterator of the
+												//ParticleInfo-Element that
+												//containes the vertex in the List storing the other
+												//coordinates (a cross reference)
+	List<ParticleInfo>*  subList_ptr;	//points to the subList of L_x(L_y) where the
+										//actual entry of ParticleInfo has to be stored
+	ListIterator<ParticleInfo>  copy_item;  //the item of this entry in the copy List
+	bool marked; //indicates if this ParticleInfo object is marked or not
+	ListIterator<ParticleInfo> tmp_item;	//a temporily item that is used to construct
+											//the cross references for the copy_Lists
+											//and the subLists
+};
+
+
+//Needed for sorting algorithms in ogdf/List and ogdf/Array.
+class ParticleInfoComparer {
+public:
+	//Returns -1(1) if height of a <(>) height of b. If they are equal 0 is
+	//returned.
+	static int compare(const ParticleInfo& a,const ParticleInfo & b)
+	{
+		double p = a.get_x_y_coord();
+		double q = b.get_x_y_coord();
+		if(p < q ) return  -1;
+		else if(p > q ) return 1;
+		else return 0;
+	}
+	OGDF_AUGMENT_STATICCOMPARER(ParticleInfo)
+};
+
+}//namespace ogdf
+
+#endif
diff --git a/ogdf/internal/energybased/QuadTreeNM.cpp b/ogdf/internal/energybased/QuadTreeNM.cpp
new file mode 100644
index 0000000..94741ad
--- /dev/null
+++ b/ogdf/internal/energybased/QuadTreeNM.cpp
@@ -0,0 +1,288 @@
+/*
+ * $Revision: 2552 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-05 16:45:20 +0200 (Do, 05. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class QuadTreeNM.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "QuadTreeNM.h"
+
+namespace ogdf {
+
+QuadTreeNM::QuadTreeNM()
+{
+	root_ptr = act_ptr =NULL;
+}
+
+
+void QuadTreeNM::create_new_lt_child(
+	List<ParticleInfo>* L_x_ptr,
+	List<ParticleInfo>* L_y_ptr)
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y+act_ptr->get_Sm_boxlength()/2;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_x_List_ptr(L_x_ptr);
+	new_ptr->set_y_List_ptr(L_y_ptr);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_lt_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_lt_child()
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y+act_ptr->get_Sm_boxlength()/2;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_lt_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_rt_child(
+	List<ParticleInfo>* L_x_ptr,
+	List<ParticleInfo>* L_y_ptr)
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x+act_ptr->get_Sm_boxlength()/2;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y+act_ptr->get_Sm_boxlength()/2;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_x_List_ptr(L_x_ptr);
+	new_ptr->set_y_List_ptr(L_y_ptr);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_rt_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_rt_child()
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x+act_ptr->get_Sm_boxlength()/2;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y+act_ptr->get_Sm_boxlength()/2;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_rt_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_lb_child(
+	List<ParticleInfo>* L_x_ptr,
+	List<ParticleInfo>* L_y_ptr)
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_x_List_ptr(L_x_ptr);
+	new_ptr->set_y_List_ptr(L_y_ptr);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_lb_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_lb_child()
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_lb_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_rb_child(
+	List<ParticleInfo>* L_x_ptr,
+	List<ParticleInfo>* L_y_ptr)
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x+act_ptr->get_Sm_boxlength()/2;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_x_List_ptr(L_x_ptr);
+	new_ptr->set_y_List_ptr(L_y_ptr);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_rb_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::create_new_rb_child()
+{
+	QuadTreeNodeNM* new_ptr = new QuadTreeNodeNM();
+
+	DPoint old_Sm_dlc = act_ptr->get_Sm_downleftcorner();
+	DPoint new_Sm_dlc;
+	new_Sm_dlc.m_x = old_Sm_dlc.m_x+act_ptr->get_Sm_boxlength()/2;
+	new_Sm_dlc.m_y = old_Sm_dlc.m_y;
+
+	new_ptr->set_Sm_level(act_ptr->get_Sm_level()+1);
+	new_ptr->set_Sm_downleftcorner(new_Sm_dlc);
+	new_ptr->set_Sm_boxlength((act_ptr->get_Sm_boxlength())/2);
+	new_ptr->set_father_ptr(act_ptr);
+	act_ptr->set_child_rb_ptr(new_ptr);
+}
+
+
+void QuadTreeNM::delete_tree(QuadTreeNodeNM* node_ptr)
+{
+	if(node_ptr != NULL)
+	{
+		if(node_ptr->get_child_lt_ptr() != NULL)
+			delete_tree(node_ptr->get_child_lt_ptr());
+		if(node_ptr->get_child_rt_ptr() != NULL)
+			delete_tree(node_ptr->get_child_rt_ptr());
+		if(node_ptr->get_child_lb_ptr() != NULL)
+			delete_tree(node_ptr->get_child_lb_ptr());
+		if(node_ptr->get_child_rb_ptr() != NULL)
+			delete_tree(node_ptr->get_child_rb_ptr());
+		delete node_ptr;
+		if (node_ptr == root_ptr)
+			root_ptr = NULL;
+	}
+}
+
+
+void QuadTreeNM::delete_tree_and_count_nodes(QuadTreeNodeNM* node_ptr, int& nodecounter)
+{
+	if(node_ptr != NULL)
+	{
+		nodecounter++;
+		if(node_ptr->get_child_lt_ptr() != NULL)
+			delete_tree_and_count_nodes(node_ptr->get_child_lt_ptr(),nodecounter);
+		if(node_ptr->get_child_rt_ptr() != NULL)
+			delete_tree_and_count_nodes(node_ptr->get_child_rt_ptr(),nodecounter);
+		if(node_ptr->get_child_lb_ptr() != NULL)
+			delete_tree_and_count_nodes(node_ptr->get_child_lb_ptr(),nodecounter);
+		if(node_ptr->get_child_rb_ptr() != NULL)
+			delete_tree_and_count_nodes(node_ptr->get_child_rb_ptr(),nodecounter);
+		delete node_ptr;
+		if (node_ptr == root_ptr)
+			root_ptr = NULL;
+	}
+}
+
+
+void QuadTreeNM::cout_preorder(QuadTreeNodeNM* node_ptr)
+{
+	if(node_ptr != NULL)
+	{
+		cout<< *node_ptr <<endl;
+		if(node_ptr->get_child_lt_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_lt_ptr());
+		if(node_ptr->get_child_rt_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_rt_ptr());
+		if(node_ptr->get_child_lb_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_lb_ptr());
+		if(node_ptr->get_child_rb_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_rb_ptr());
+	}
+}
+
+
+void QuadTreeNM::cout_preorder(QuadTreeNodeNM* node_ptr, int precision)
+{
+	int i;
+	if(node_ptr != NULL)
+	{
+		complex<double>* L =node_ptr->get_local_exp();
+		complex<double>* M =node_ptr->get_multipole_exp();
+		cout<< *node_ptr <<endl;
+		cout<<" ME: ";
+		for(i = 0; i<= precision;i++)
+			cout<<M[i]<<" ";cout<<endl;
+		cout<<" LE: ";
+		for(i = 0; i<= precision;i++)
+			cout<<L[i]<<" ";cout<<endl<<endl;
+
+		if(node_ptr->get_child_lt_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_lt_ptr(),precision);
+		if(node_ptr->get_child_rt_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_rt_ptr(),precision);
+		if(node_ptr->get_child_lb_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_lb_ptr(),precision);
+		if(node_ptr->get_child_rb_ptr() != NULL)
+			cout_preorder(node_ptr->get_child_rb_ptr(),precision);
+	}
+}
+
+}//namespace ogdf
diff --git a/ogdf/internal/energybased/QuadTreeNM.h b/ogdf/internal/energybased/QuadTreeNM.h
new file mode 100644
index 0000000..714846c
--- /dev/null
+++ b/ogdf/internal/energybased/QuadTreeNM.h
@@ -0,0 +1,162 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class QuadTreeNM.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_QUAD_TREE_NM_H
+#define OGDF_QUAD_TREE_NM_H
+
+#include "QuadTreeNodeNM.h"
+#include "ParticleInfo.h"
+
+
+namespace ogdf {
+
+class QuadTreeNM
+{
+	//Helping data structure that stores the information needed to represent
+	//the modified quadtree in the New Multipole Merthod (NMM)
+
+public:
+	QuadTreeNM();      //constructor
+	~QuadTreeNM() { }  //destructor
+
+	//Deletes the tree starting at node_ptr.
+	void delete_tree(QuadTreeNodeNM* node_ptr);
+
+	//Deletes the tree starting at node_ptr and counts the nodes of the subtree.
+	void delete_tree_and_count_nodes(QuadTreeNodeNM* node_ptr,int& nodecounter);
+
+	//Pre_order traversal of the tree rooted at node_ptr (with or without
+	//output of the M,L-lists from 0 to precision).
+	void cout_preorder(QuadTreeNodeNM* node_ptr);
+	void cout_preorder(QuadTreeNodeNM* node_ptr,int precision);
+
+	//Creates the root node and lets act_ptr and root_ptr point to the root node.
+	void init_tree() {
+		root_ptr = new QuadTreeNodeNM();
+		act_ptr = root_ptr;
+	}
+
+	//Sets act_ptr to the root_ptr.
+	void start_at_root()
+	{
+		act_ptr = root_ptr;
+	}
+
+	//Sets act_ptr to the father_ptr.
+	void go_to_father()
+	{
+		if (act_ptr->get_father_ptr() != NULL)
+			act_ptr = act_ptr->get_father_ptr();
+		else
+			cout<<"Error QuadTreeNM: No father Node exists";
+	}
+
+	//Sets act_ptr to the left_top_child_ptr.
+	void go_to_lt_child()
+	{
+		act_ptr = act_ptr->get_child_lt_ptr();
+	}
+
+	//Sets act_ptr to the right_top_child_ptr.
+	void go_to_rt_child()
+	{
+		act_ptr = act_ptr->get_child_rt_ptr();
+	}
+
+	//Sets act_ptr to the left_bottom_child_ptr.
+	void go_to_lb_child()
+	{
+		act_ptr = act_ptr->get_child_lb_ptr();
+	}
+
+	//Sets act_ptr to the right_bottom_child_ptr.
+	void go_to_rb_child()
+	{
+		act_ptr = act_ptr->get_child_rb_ptr();
+	}
+
+	//Creates a new left_top_child of the actual node (importing L_x(y)_ptr).
+	void create_new_lt_child(List<ParticleInfo>* L_x_ptr, List<ParticleInfo>* L_y_ptr);
+	void create_new_lt_child();
+
+	//Creates a new right_top_child of the actual node (importing L_x(y)_ptr).
+	void create_new_rt_child(List<ParticleInfo>* L_x_ptr, List<ParticleInfo>* L_y_ptr);
+	void create_new_rt_child();
+
+	//Creates a new left_bottom_child of the actual node (importing L_x(y)_ptr).
+	void create_new_lb_child(List<ParticleInfo>* L_x_ptr, List<ParticleInfo>* L_y_ptr);
+	void create_new_lb_child();
+
+	//Creates a new right_bottom_child of the actual node(importing L_x(y)_ptr).
+	void create_new_rb_child(List<ParticleInfo>* L_x_ptr, List<ParticleInfo>* L_y_ptr);
+	void create_new_rb_child();
+
+	//Returns the actual/root node pointer of the tree.
+	QuadTreeNodeNM*  get_act_ptr() { return act_ptr; }
+	QuadTreeNodeNM*  get_root_ptr() { return root_ptr; }
+
+	//Sets root_ptr to r_ptr.
+	void set_root_ptr(QuadTreeNodeNM* r_ptr) { root_ptr = r_ptr; }
+
+	//Sets act_ptr to a_ptr.
+	void set_act_ptr(QuadTreeNodeNM* a_ptr) { act_ptr = a_ptr; }
+
+	//Sets the content of *root_ptr to r.
+	void set_root_node(QuadTreeNodeNM& r) { *root_ptr = r; }
+
+private:
+	QuadTreeNodeNM* root_ptr; //points to the root node
+	QuadTreeNodeNM* act_ptr;  //points to the actual node
+
+};
+
+}//namespace ogdf
+#endif
+
diff --git a/ogdf/internal/energybased/QuadTreeNodeNM.cpp b/ogdf/internal/energybased/QuadTreeNodeNM.cpp
new file mode 100644
index 0000000..b6bd606
--- /dev/null
+++ b/ogdf/internal/energybased/QuadTreeNodeNM.cpp
@@ -0,0 +1,193 @@
+/*
+ * $Revision: 2555 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-06 12:12:10 +0200 (Fr, 06. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Implementation of class QuadTreeNodeNM.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+#include "QuadTreeNodeNM.h"
+
+
+namespace ogdf {
+
+ostream &operator<< (ostream & output, const QuadTreeNodeNM & A)
+{
+	output <<" Sm_level: "<<A.Sm_level<<" Sm_downleftcorner: "<<A.Sm_downleftcorner
+		<<" Sm boxlength: "<<A.Sm_boxlength<<" Sm_center: "<<A.Sm_center
+		<<"spnumber: "<<A.subtreeparticlenumber;
+	if(A.father_ptr == NULL)
+		output <<" is root ";
+	if((A.child_lt_ptr == NULL) ||(A.child_rt_ptr == NULL) || (A.child_lb_ptr == NULL)||
+		(A.child_rb_ptr == NULL))
+	{
+		output <<" (no child in ";
+		if(A.child_lt_ptr == NULL)
+			output <<" lt";
+		if(A.child_rt_ptr == NULL)
+			output <<" rt";
+		if(A.child_lb_ptr == NULL)
+			output <<" lb";
+		if(A.child_rb_ptr == NULL)
+			output <<" rb";
+		output<<" quad) ";
+	}
+
+	output<<" L_x: ";
+	if(A.L_x_ptr == NULL)
+		output<<"no list specified";
+	else if(A.L_x_ptr->empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(ParticleInfo, it,*A.L_x_ptr)
+			output<<"  "<<*it;
+	}
+
+	output<<" L_y: ";
+	if(A.L_y_ptr == NULL)
+		output<<"no list specified";
+	else if(A.L_y_ptr->empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(ParticleInfo, it,*A.L_y_ptr)
+			output<<"  "<<*it;
+	}
+
+	output<<" I: ";
+	if(A.I.empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(QuadTreeNodeNM*, v_ptr,A.I)
+			output<<" ["<<(*v_ptr)->get_Sm_level()<<" , "
+			<<(*v_ptr)->get_Sm_downleftcorner()<<","
+			<<(*v_ptr)->get_Sm_boxlength()<<"]";
+	}
+
+	output<<" D1: ";
+	if(A.D1.empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(QuadTreeNodeNM*, v_ptr,A.D1)
+			output<<" ["<<(*v_ptr)->get_Sm_level()<<" , "
+			<<(*v_ptr)->get_Sm_downleftcorner()<<","
+			<<(*v_ptr)->get_Sm_boxlength()<<"]";
+	}
+
+	output<<" D2: ";
+	if(A.D2.empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(QuadTreeNodeNM*, v_ptr,A.D2)
+			output<<" ["<<(*v_ptr)->get_Sm_level()<<" , "
+			<<(*v_ptr)->get_Sm_downleftcorner()<<","
+			<<(*v_ptr)->get_Sm_boxlength()<<"]";
+	}
+
+	output<<" M: ";
+	if(A.M.empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(QuadTreeNodeNM*, v_ptr,A.M)
+			output<<" ["<<(*v_ptr)->get_Sm_level()<<" , "
+			<<(*v_ptr)->get_Sm_downleftcorner()<<","
+			<<(*v_ptr)->get_Sm_boxlength()<<"]";
+	}
+	output<<" contained_nodes ";
+	if(A.contained_nodes.empty())
+		output <<"is empty";
+	else
+	{
+		forall_listiterators(node,v_it,A.contained_nodes)
+			output<<(*v_it)->index()<<" ";
+	}
+	return output;
+}
+
+
+istream &operator>> (istream & input,  QuadTreeNodeNM & A)
+{
+	input >> A.Sm_level;
+	return input;
+}
+
+
+QuadTreeNodeNM::QuadTreeNodeNM()
+{
+	DPoint double_null(0,0);
+	complex<double> comp_null(0,0);
+
+	L_x_ptr = NULL; ;L_y_ptr = NULL;
+	subtreeparticlenumber = 0;
+	Sm_level = 0;
+	Sm_downleftcorner = double_null;
+	Sm_boxlength = 0;
+	Sm_center = comp_null;
+	ME = NULL;
+	LE = NULL;
+	contained_nodes.clear();
+	I.clear();D1.clear();D2.clear();M.clear();
+	father_ptr = NULL;
+	child_lt_ptr = child_rt_ptr = child_lb_ptr = child_rb_ptr = NULL;
+}
+
+
+QuadTreeNodeNM::~QuadTreeNodeNM()
+{
+	if(L_x_ptr != NULL)
+	{
+		delete L_x_ptr;
+		L_x_ptr = NULL;
+	}
+	if(L_y_ptr != NULL)
+	{
+		delete L_y_ptr;
+		L_y_ptr = NULL;
+	}
+	contained_nodes.clear();
+	I.clear();D1.clear();D2.clear();M.clear();
+	delete [] ME;
+	delete [] LE;
+}
+
+}//namespace ogdf
diff --git a/ogdf/internal/energybased/QuadTreeNodeNM.h b/ogdf/internal/energybased/QuadTreeNodeNM.h
new file mode 100644
index 0000000..16f3df2
--- /dev/null
+++ b/ogdf/internal/energybased/QuadTreeNodeNM.h
@@ -0,0 +1,191 @@
+/*
+ * $Revision: 2564 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-07 00:03:48 +0200 (Sa, 07. Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of class QuadTreeNodeNM.
+ *
+ * \author Stefan Hachul
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_QUAD_TREE_NODE_NM_H
+#define OGDF_QUAD_TREE_NODE_NM_H
+
+
+#include "../../basic/Graph.h"
+#include "../../basic/List.h"
+#include "../../basic/geometry.h"
+#include "ParticleInfo.h"
+#include <complex>
+
+
+using std::complex;
+
+namespace ogdf {
+
+class QuadTreeNodeNM
+{
+	//Helping data structure that stores the information needed to represent
+	//a node of the reduced quad tree in the New Multipole Method (NMM).
+
+	//Outputstream for QuadTreeNodeNM.
+	friend ostream &operator<< (ostream &,const QuadTreeNodeNM &);
+
+	//Inputstream for QuadTreeNodeNM.
+	friend istream &operator>> (istream &,QuadTreeNodeNM &);
+
+public:
+
+	QuadTreeNodeNM();     //constructor
+	~QuadTreeNodeNM();    //destructor
+
+	void set_Sm_level(int l) { Sm_level = l;}
+	void set_Sm_downleftcorner(DPoint dlc) {Sm_downleftcorner = dlc;}
+	void set_Sm_boxlength(double l) {Sm_boxlength = l;}
+	void set_x_List_ptr(List<ParticleInfo>* x_ptr) {L_x_ptr = x_ptr;}
+	void set_y_List_ptr(List<ParticleInfo>* y_ptr) {L_y_ptr = y_ptr;}
+	void set_particlenumber_in_subtree(int p){ subtreeparticlenumber = p;}
+	void set_Sm_center(complex<double> c) {Sm_center = c;}
+	void set_contained_nodes(List<node>&  L) {contained_nodes = L;}
+	void pushBack_contained_nodes(node v) {contained_nodes.pushBack(v);}
+	node pop_contained_nodes() {return contained_nodes.popFrontRet();}
+	bool contained_nodes_empty() {return contained_nodes.empty();}
+
+	void set_I(List<QuadTreeNodeNM*>& l) {I = l;}
+	void set_D1(List<QuadTreeNodeNM*>& l)  {D1 = l;}
+	void set_D2(List<QuadTreeNodeNM*>& l)  {D2 = l;}
+	void set_M(List<QuadTreeNodeNM*>& l)  {M = l;}
+
+	//LE[i] is set to local[i] for i = 0 to precision and space for LE is reserved.
+	void set_locale_exp(Array<complex<double> > &local,int precision)
+	{
+		int i;
+		LE = new complex<double> [precision+1];
+		for (i = 0 ; i<= precision; i++)
+			LE[i] = local[i];
+	}
+
+	//ME[i] is set to multi[i] for i = 0 to precision and space for LE is reserved.
+	void set_multipole_exp(Array<complex<double> > &multi,int precision)
+	{
+		int i;
+		ME = new complex<double> [precision+1];
+		for (i = 0 ; i<= precision; i++)
+			ME[i] = multi[i];
+	}
+
+	//ME[i] is set to multi[i] for i = 0 to precision and no space for LE is reserved.
+	void replace_multipole_exp(Array<complex<double> > &multi,int precision)
+	{
+		int i;
+		for (i = 0 ; i<= precision; i++)
+			ME[i] = multi[i];
+	}
+
+	void set_father_ptr (QuadTreeNodeNM* f) { father_ptr = f;}
+	void set_child_lt_ptr(QuadTreeNodeNM* c) {child_lt_ptr = c;}
+	void set_child_rt_ptr(QuadTreeNodeNM* c) {child_rt_ptr = c;}
+	void set_child_lb_ptr(QuadTreeNodeNM* c) {child_lb_ptr = c;}
+	void set_child_rb_ptr(QuadTreeNodeNM* c) {child_rb_ptr = c;}
+
+	bool is_root() {if(father_ptr == NULL) return true; else return false;}
+	bool is_leaf(){if ((child_lt_ptr == NULL) &&(child_rt_ptr == NULL) &&(child_lb_ptr
+		== NULL) && (child_rb_ptr == NULL))
+		return true; else return false;}
+	bool child_lt_exists() { if (child_lt_ptr != NULL) return true; else return false;}
+	bool child_rt_exists() { if (child_rt_ptr != NULL) return true; else return false;}
+	bool child_lb_exists() { if (child_lb_ptr != NULL) return true; else return false;}
+	bool child_rb_exists() { if (child_rb_ptr != NULL) return true; else return false;}
+
+	int get_Sm_level () const {return Sm_level;}
+	DPoint get_Sm_downleftcorner () const {return Sm_downleftcorner;}
+	double get_Sm_boxlength () const {return Sm_boxlength; }
+	List<ParticleInfo>*  get_x_List_ptr()  {return L_x_ptr;}
+	List<ParticleInfo>*  get_y_List_ptr()  {return L_y_ptr;}
+	int get_particlenumber_in_subtree()const { return subtreeparticlenumber;}
+	complex<double> get_Sm_center() const {return Sm_center;}
+	complex<double>* get_local_exp () const {return LE;}
+	complex<double>* get_multipole_exp () const {return ME;}
+	void get_contained_nodes(List<node>& L) const {L =  contained_nodes;}
+	void get_I (List <QuadTreeNodeNM*>& l){l = I;}
+	void get_D1 (List <QuadTreeNodeNM*>& l){l = D1;}
+	void get_D2 (List <QuadTreeNodeNM*>& l){l = D2;}
+	void get_M (List <QuadTreeNodeNM*>& l){l = M;}
+
+	QuadTreeNodeNM* get_father_ptr ()   const {return father_ptr;}
+	QuadTreeNodeNM* get_child_lt_ptr () const {return child_lt_ptr;}
+	QuadTreeNodeNM* get_child_rt_ptr () const {return child_rt_ptr;}
+	QuadTreeNodeNM* get_child_lb_ptr () const {return child_lb_ptr;}
+	QuadTreeNodeNM* get_child_rb_ptr () const {return child_rb_ptr;}
+
+private:
+
+	int  Sm_level;                     //level of the small cell
+	DPoint Sm_downleftcorner;          //coords of the down left corner of the small cell
+	double Sm_boxlength;               //length of small cell
+	List<ParticleInfo>* L_x_ptr;       //points to the lists that contain each Particle
+	//of G with its x(y)coordinate in increasing order
+	List<ParticleInfo>* L_y_ptr;       //and a cross reference to the list_item in the
+	//list  with the other coordinate
+	int subtreeparticlenumber;         //the number of particles in the subtree rooted
+	//at this node
+	complex<double>  Sm_center;        //center of the small cell
+	complex<double>* ME;               //Multipole Expansion terms
+	complex<double>* LE;               //Locale Expansion terms
+	List <node>  contained_nodes;      //list of nodes of G that are contained in this
+	//QuadTreeNode  (emty if it is not a leave of
+	//the ModQuadTree
+	List <QuadTreeNodeNM*> I;          //the list of min. ill sep. nodes in DIM2
+	List <QuadTreeNodeNM*> D1,D2;      //list of neighbouring(=D1) and not adjacent(=D2)
+	//leaves for direct force calculation in DIM2
+	List<QuadTreeNodeNM*>  M;          //list of nodes with multipole force contribution
+	//like in DIM2
+	QuadTreeNodeNM*  father_ptr;   //points to the father node
+	QuadTreeNodeNM*  child_lt_ptr; //points to left top child
+	QuadTreeNodeNM*  child_rt_ptr; //points to right bottom child
+	QuadTreeNodeNM*  child_lb_ptr; //points to left bottom child
+	QuadTreeNodeNM*  child_rb_ptr; //points to right bottom child
+};
+
+}//namespace ogdf
+
+#endif
diff --git a/ogdf/module/LayoutModule.h b/ogdf/module/LayoutModule.h
new file mode 100644
index 0000000..54bcbd4
--- /dev/null
+++ b/ogdf/module/LayoutModule.h
@@ -0,0 +1,104 @@
+/*
+ * $Revision: 2523 $
+ *
+ * last checkin:
+ *   $Author: gutwenger $
+ *   $Date: 2012-07-02 20:59:27 +0200 (Mon, 02 Jul 2012) $
+ ***************************************************************/
+
+/** \file
+ * \brief Declaration of interface for layout algorithms (class
+ *        LayoutModule)
+ *
+ * \author Carsten Gutwenger
+ *
+ * \par License:
+ * This file is part of the Open Graph Drawing Framework (OGDF).
+ *
+ * \par
+ * Copyright (C)<br>
+ * See README.txt in the root directory of the OGDF installation for details.
+ *
+ * \par
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 or 3 as published by the Free Software Foundation;
+ * see the file LICENSE.txt included in the packaging of this file
+ * for details.
+ *
+ * \par
+ * 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.
+ *
+ * \par
+ * 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., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * \see  http://www.gnu.org/copyleft/gpl.html
+ ***************************************************************/
+
+
+
+
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+#ifndef OGDF_LAYOUT_MODULE_H
+#define OGDF_LAYOUT_MODULE_H
+
+
+
+#include "../basic/GraphAttributes.h"
+#include "../basic/Constraints.h"
+#include "../internal/energybased/MultilevelGraph.h"
+
+namespace ogdf {
+
+
+/**
+ * \brief Interface of general layout algorithms.
+ *
+ */
+class OGDF_EXPORT LayoutModule {
+public:
+	//! Initializes a layout module.
+	LayoutModule() { }
+
+	virtual ~LayoutModule() { }
+
+	/**
+	 * \brief Computes a layout of graph \a GA.
+	 *
+	 * This method is the actual algorithm call and must be implemented by
+	 * derived classes.
+	 * @param GA is the input graph and will also be assigned the layout information.
+	 */
+	virtual void call(GraphAttributes &GA) = 0;
+
+	/**
+	 * \brief Computes a layout of graph \a GA wrt the constraints in \a GC
+	 * (if applicable).
+	 */
+        virtual void call(GraphAttributes &GA, GraphConstraints & /*GC*/) { call(GA); }
+
+	/**
+	 * \brief Computes a layout of graph \a GA.
+	 *
+	 * @param GA is the input graph and will also be assigned the layout information.
+	 */
+	void operator()(GraphAttributes &GA) { call(GA); }
+
+	OGDF_MALLOC_NEW_DELETE
+};
+
+
+} // end namespace ogdf
+
+
+#endif
diff --git a/program/globals.cpp b/program/globals.cpp
new file mode 100644
index 0000000..c1f3998
--- /dev/null
+++ b/program/globals.cpp
@@ -0,0 +1,453 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "globals.h"
+#include <QLocale>
+#include <QDir>
+#include <QStringList>
+#include <QFile>
+#include <QTextStream>
+#include <QApplication>
+#include <QProcess>
+#include <math.h>
+
+QSharedPointer<Settings> g_settings;
+QSharedPointer<Memory> g_memory;
+MyGraphicsView * g_graphicsView;
+double g_absoluteZoom;
+QSharedPointer<BlastSearch> g_blastSearch;
+QString m_tempDirectory;
+QSharedPointer<AssemblyGraph> g_assemblyGraph;
+
+
+QString formatIntForDisplay(int num)
+{
+    QLocale locale;
+    return locale.toString(num);
+}
+
+QString formatIntForDisplay(long long num)
+{
+    QLocale locale;
+    return locale.toString(num);
+}
+
+QString formatDoubleForDisplay(double num, int decimalPlacesToDisplay)
+{
+    //Add a bit for rounding
+    double addValue = 0.5 / pow(10, decimalPlacesToDisplay);
+    num += addValue;
+
+    QLocale locale;
+    QString withCommas = locale.toString(num, 'f');
+
+    QString final;
+    bool pastDecimalPoint = false;
+    int numbersPastDecimalPoint = 0;
+    for (int i = 0; i < withCommas.length(); ++i)
+    {
+        final += withCommas[i];
+
+        if (pastDecimalPoint)
+            ++numbersPastDecimalPoint;
+
+        if (numbersPastDecimalPoint >= decimalPlacesToDisplay)
+            return final;
+
+        if (withCommas[i] == locale.decimalPoint())
+            pastDecimalPoint = true;
+    }
+    return final;
+}
+
+
+QString formatDepthForDisplay(double depth)
+{
+    if (depth == 0.0)
+        return "0.0x";
+
+    int decimals = 1;
+    double multipliedDepth = fabs(depth);
+    while (multipliedDepth < 10.0)
+    {
+        multipliedDepth *= 10.0;
+        decimals += 1;
+    }
+    return formatDoubleForDisplay(depth, decimals) + "x";
+}
+
+
+
+std::vector<QColor> getPresetColours()
+{
+    std::vector<QColor> presetColours;
+
+    presetColours.push_back(QColor("#306FF8"));
+    presetColours.push_back(QColor("#86BB18"));
+    presetColours.push_back(QColor("#DF123A"));
+    presetColours.push_back(QColor("#181E2A"));
+    presetColours.push_back(QColor("#F91BBD"));
+    presetColours.push_back(QColor("#3CB2A4"));
+    presetColours.push_back(QColor("#D29AC1"));
+    presetColours.push_back(QColor("#E2922E"));
+    presetColours.push_back(QColor("#22501B"));
+    presetColours.push_back(QColor("#57297D"));
+    presetColours.push_back(QColor("#3FA0E6"));
+    presetColours.push_back(QColor("#770739"));
+    presetColours.push_back(QColor("#6A390C"));
+    presetColours.push_back(QColor("#25AB5D"));
+    presetColours.push_back(QColor("#ACAF61"));
+    presetColours.push_back(QColor("#F0826F"));
+    presetColours.push_back(QColor("#E94A80"));
+    presetColours.push_back(QColor("#C187F2"));
+    presetColours.push_back(QColor("#7E5764"));
+    presetColours.push_back(QColor("#037290"));
+    presetColours.push_back(QColor("#D65114"));
+    presetColours.push_back(QColor("#08396A"));
+    presetColours.push_back(QColor("#99ABBE"));
+    presetColours.push_back(QColor("#F270C0"));
+    presetColours.push_back(QColor("#F056F9"));
+    presetColours.push_back(QColor("#8E8D00"));
+    presetColours.push_back(QColor("#70010F"));
+    presetColours.push_back(QColor("#9C1E9A"));
+    presetColours.push_back(QColor("#471B1F"));
+    presetColours.push_back(QColor("#A00B6D"));
+    presetColours.push_back(QColor("#38C037"));
+    presetColours.push_back(QColor("#282C16"));
+    presetColours.push_back(QColor("#15604D"));
+    presetColours.push_back(QColor("#2E75D6"));
+    presetColours.push_back(QColor("#A09DEB"));
+    presetColours.push_back(QColor("#8454D7"));
+    presetColours.push_back(QColor("#301745"));
+    presetColours.push_back(QColor("#A45704"));
+    presetColours.push_back(QColor("#4D8C0E"));
+    presetColours.push_back(QColor("#C09860"));
+    presetColours.push_back(QColor("#009C73"));
+    presetColours.push_back(QColor("#FD6453"));
+    presetColours.push_back(QColor("#C11C4B"));
+    presetColours.push_back(QColor("#183B8B"));
+    presetColours.push_back(QColor("#5E6706"));
+    presetColours.push_back(QColor("#E42005"));
+    presetColours.push_back(QColor("#4873AF"));
+    presetColours.push_back(QColor("#6CA563"));
+    presetColours.push_back(QColor("#5E0F54"));
+    presetColours.push_back(QColor("#FE2065"));
+    presetColours.push_back(QColor("#5BB4D2"));
+    presetColours.push_back(QColor("#3F4204"));
+    presetColours.push_back(QColor("#521839"));
+    presetColours.push_back(QColor("#9A7706"));
+    presetColours.push_back(QColor("#77AB8C"));
+    presetColours.push_back(QColor("#105E04"));
+    presetColours.push_back(QColor("#98290F"));
+    presetColours.push_back(QColor("#B849D4"));
+    presetColours.push_back(QColor("#FC8426"));
+    presetColours.push_back(QColor("#341B03"));
+    presetColours.push_back(QColor("#E3278C"));
+    presetColours.push_back(QColor("#F28F93"));
+    presetColours.push_back(QColor("#D1A21F"));
+    presetColours.push_back(QColor("#277E46"));
+    presetColours.push_back(QColor("#285C60"));
+    presetColours.push_back(QColor("#76B945"));
+    presetColours.push_back(QColor("#E75D65"));
+    presetColours.push_back(QColor("#84ADDC"));
+    presetColours.push_back(QColor("#153C2B"));
+    presetColours.push_back(QColor("#FD10D9"));
+    presetColours.push_back(QColor("#C095D5"));
+    presetColours.push_back(QColor("#052B48"));
+    presetColours.push_back(QColor("#B365FC"));
+    presetColours.push_back(QColor("#97AA75"));
+    presetColours.push_back(QColor("#C78C9C"));
+    presetColours.push_back(QColor("#FD4838"));
+    presetColours.push_back(QColor("#F181E2"));
+    presetColours.push_back(QColor("#815A1A"));
+    presetColours.push_back(QColor("#BB2093"));
+    presetColours.push_back(QColor("#691822"));
+    presetColours.push_back(QColor("#C41A12"));
+    presetColours.push_back(QColor("#728A1F"));
+    presetColours.push_back(QColor("#375B73"));
+    presetColours.push_back(QColor("#97022C"));
+    presetColours.push_back(QColor("#95B44D"));
+    presetColours.push_back(QColor("#EB8DBB"));
+    presetColours.push_back(QColor("#83ACAB"));
+    presetColours.push_back(QColor("#E37D51"));
+    presetColours.push_back(QColor("#D78A68"));
+    presetColours.push_back(QColor("#4A41A2"));
+    presetColours.push_back(QColor("#8A0C79"));
+    presetColours.push_back(QColor("#133102"));
+    presetColours.push_back(QColor("#237A78"));
+    presetColours.push_back(QColor("#ADB03B"));
+    presetColours.push_back(QColor("#289E26"));
+    presetColours.push_back(QColor("#7683EC"));
+    presetColours.push_back(QColor("#4E1E04"));
+    presetColours.push_back(QColor("#BB17B2"));
+    presetColours.push_back(QColor("#EB6A81"));
+    presetColours.push_back(QColor("#47B4E8"));
+    presetColours.push_back(QColor("#0A6191"));
+    presetColours.push_back(QColor("#4EADB2"));
+    presetColours.push_back(QColor("#442965"));
+    presetColours.push_back(QColor("#FE784B"));
+    presetColours.push_back(QColor("#55BD8D"));
+    presetColours.push_back(QColor("#742B03"));
+    presetColours.push_back(QColor("#8C38AA"));
+    presetColours.push_back(QColor("#F758A6"));
+    presetColours.push_back(QColor("#A32526"));
+    presetColours.push_back(QColor("#442C2E"));
+    presetColours.push_back(QColor("#F06A97"));
+    presetColours.push_back(QColor("#3A1527"));
+    presetColours.push_back(QColor("#503509"));
+    presetColours.push_back(QColor("#2A67B4"));
+    presetColours.push_back(QColor("#243644"));
+    presetColours.push_back(QColor("#A74006"));
+    presetColours.push_back(QColor("#335900"));
+    presetColours.push_back(QColor("#A07484"));
+    presetColours.push_back(QColor("#490216"));
+    presetColours.push_back(QColor("#B19BCB"));
+    presetColours.push_back(QColor("#75B75A"));
+    presetColours.push_back(QColor("#BE71EB"));
+    presetColours.push_back(QColor("#024A2E"));
+    presetColours.push_back(QColor("#A097AB"));
+    presetColours.push_back(QColor("#7A287E"));
+    presetColours.push_back(QColor("#6A1444"));
+    presetColours.push_back(QColor("#212449"));
+    presetColours.push_back(QColor("#B07017"));
+    presetColours.push_back(QColor("#227D57"));
+    presetColours.push_back(QColor("#1B8CAF"));
+    presetColours.push_back(QColor("#016438"));
+    presetColours.push_back(QColor("#EA64CF"));
+    presetColours.push_back(QColor("#B5310E"));
+    presetColours.push_back(QColor("#B00765"));
+    presetColours.push_back(QColor("#5F42B3"));
+    presetColours.push_back(QColor("#EF9649"));
+    presetColours.push_back(QColor("#25717F"));
+    presetColours.push_back(QColor("#BCA309"));
+    presetColours.push_back(QColor("#FA35A6"));
+    presetColours.push_back(QColor("#F63D54"));
+    presetColours.push_back(QColor("#E83D6C"));
+    presetColours.push_back(QColor("#8362F2"));
+    presetColours.push_back(QColor("#33BC4A"));
+    presetColours.push_back(QColor("#194A85"));
+    presetColours.push_back(QColor("#E24215"));
+    presetColours.push_back(QColor("#6D71FE"));
+    presetColours.push_back(QColor("#3E52AF"));
+    presetColours.push_back(QColor("#1E9E89"));
+    presetColours.push_back(QColor("#740860"));
+    presetColours.push_back(QColor("#4B7BEE"));
+    presetColours.push_back(QColor("#8742C0"));
+    presetColours.push_back(QColor("#DD8EC6"));
+    presetColours.push_back(QColor("#CD202C"));
+    presetColours.push_back(QColor("#FD82C2"));
+    presetColours.push_back(QColor("#3C2874"));
+    presetColours.push_back(QColor("#F9742B"));
+    presetColours.push_back(QColor("#013B10"));
+    presetColours.push_back(QColor("#D12867"));
+    presetColours.push_back(QColor("#F743C3"));
+    presetColours.push_back(QColor("#B98EEC"));
+    presetColours.push_back(QColor("#D260EC"));
+    presetColours.push_back(QColor("#671C06"));
+    presetColours.push_back(QColor("#37A968"));
+    presetColours.push_back(QColor("#3B9529"));
+    presetColours.push_back(QColor("#2A0E33"));
+    presetColours.push_back(QColor("#51B237"));
+    presetColours.push_back(QColor("#95B61B"));
+    presetColours.push_back(QColor("#B195E2"));
+    presetColours.push_back(QColor("#68B49A"));
+    presetColours.push_back(QColor("#182339"));
+    presetColours.push_back(QColor("#FC4822"));
+    presetColours.push_back(QColor("#D79621"));
+    presetColours.push_back(QColor("#90761B"));
+    presetColours.push_back(QColor("#777315"));
+    presetColours.push_back(QColor("#E389E9"));
+    presetColours.push_back(QColor("#35BD64"));
+    presetColours.push_back(QColor("#C17910"));
+    presetColours.push_back(QColor("#3386ED"));
+    presetColours.push_back(QColor("#E82C2E"));
+    presetColours.push_back(QColor("#AC925F"));
+    presetColours.push_back(QColor("#F227C8"));
+    presetColours.push_back(QColor("#F43E67"));
+    presetColours.push_back(QColor("#55AEEB"));
+    presetColours.push_back(QColor("#F518E3"));
+    presetColours.push_back(QColor("#AB0643"));
+    presetColours.push_back(QColor("#8DA1F3"));
+    presetColours.push_back(QColor("#5C9C14"));
+    presetColours.push_back(QColor("#381F27"));
+    presetColours.push_back(QColor("#6BB7B5"));
+    presetColours.push_back(QColor("#9842BE"));
+    presetColours.push_back(QColor("#4897D6"));
+    presetColours.push_back(QColor("#8958E4"));
+    presetColours.push_back(QColor("#8F0065"));
+    presetColours.push_back(QColor("#A10A5E"));
+    presetColours.push_back(QColor("#076315"));
+    presetColours.push_back(QColor("#FA5EF9"));
+    presetColours.push_back(QColor("#A33402"));
+    presetColours.push_back(QColor("#A0ABC4"));
+    presetColours.push_back(QColor("#2B6EFE"));
+    presetColours.push_back(QColor("#9A9EE7"));
+
+    return presetColours;
+}
+
+
+
+//This function will convert a colour to its SVG name, if one exists, or the hex value otherwise.
+QString getColourName(QColor colour)
+{
+    if (colour == QColor(240, 248, 255)) return "aliceblue";
+    if (colour == QColor(250, 235, 215)) return "antiquewhite";
+    if (colour == QColor(  0, 255, 255)) return "aqua";
+    if (colour == QColor(127, 255, 212)) return "aquamarine";
+    if (colour == QColor(240, 255, 255)) return "azure";
+    if (colour == QColor(245, 245, 220)) return "beige";
+    if (colour == QColor(255, 228, 196)) return "bisque";
+    if (colour == QColor(  0,   0,   0)) return "black";
+    if (colour == QColor(255, 235, 205)) return "blanchedalmond";
+    if (colour == QColor(  0,   0, 255)) return "blue";
+    if (colour == QColor(138,  43, 226)) return "blueviolet";
+    if (colour == QColor(165,  42,  42)) return "brown";
+    if (colour == QColor(222, 184, 135)) return "burlywood";
+    if (colour == QColor( 95, 158, 160)) return "cadetblue";
+    if (colour == QColor(127, 255,   0)) return "chartreuse";
+    if (colour == QColor(210, 105,  30)) return "chocolate";
+    if (colour == QColor(255, 127,  80)) return "coral";
+    if (colour == QColor(100, 149, 237)) return "cornflowerblue";
+    if (colour == QColor(255, 248, 220)) return "cornsilk";
+    if (colour == QColor(220,  20,  60)) return "crimson";
+    if (colour == QColor(  0, 255, 255)) return "cyan";
+    if (colour == QColor(  0,   0, 139)) return "darkblue";
+    if (colour == QColor(  0, 139, 139)) return "darkcyan";
+    if (colour == QColor(184, 134,  11)) return "darkgoldenrod";
+    if (colour == QColor(  0, 100,   0)) return "darkgreen";
+    if (colour == QColor(169, 169, 169)) return "darkgrey";
+    if (colour == QColor(189, 183, 107)) return "darkkhaki";
+    if (colour == QColor(139,   0, 139)) return "darkmagenta";
+    if (colour == QColor( 85, 107,  47)) return "darkolivegreen";
+    if (colour == QColor(255, 140,   0)) return "darkorange";
+    if (colour == QColor(153,  50, 204)) return "darkorchid";
+    if (colour == QColor(139,   0,   0)) return "darkred";
+    if (colour == QColor(233, 150, 122)) return "darksalmon";
+    if (colour == QColor(143, 188, 143)) return "darkseagreen";
+    if (colour == QColor( 72,  61, 139)) return "darkslateblue";
+    if (colour == QColor( 47,  79,  79)) return "darkslategrey";
+    if (colour == QColor(  0, 206, 209)) return "darkturquoise";
+    if (colour == QColor(148,   0, 211)) return "darkviolet";
+    if (colour == QColor(255,  20, 147)) return "deeppink";
+    if (colour == QColor(  0, 191, 255)) return "deepskyblue";
+    if (colour == QColor(105, 105, 105)) return "dimgrey";
+    if (colour == QColor( 30, 144, 255)) return "dodgerblue";
+    if (colour == QColor(178,  34,  34)) return "firebrick";
+    if (colour == QColor(255, 250, 240)) return "floralwhite";
+    if (colour == QColor( 34, 139,  34)) return "forestgreen";
+    if (colour == QColor(255,   0, 255)) return "fuchsia";
+    if (colour == QColor(220, 220, 220)) return "gainsboro";
+    if (colour == QColor(248, 248, 255)) return "ghostwhite";
+    if (colour == QColor(255, 215,   0)) return "gold";
+    if (colour == QColor(218, 165,  32)) return "goldenrod";
+    if (colour == QColor(128, 128, 128)) return "grey";
+    if (colour == QColor(  0, 128,   0)) return "green";
+    if (colour == QColor(173, 255,  47)) return "greenyellow";
+    if (colour == QColor(240, 255, 240)) return "honeydew";
+    if (colour == QColor(255, 105, 180)) return "hotpink";
+    if (colour == QColor(205,  92,  92)) return "indianred";
+    if (colour == QColor( 75,   0, 130)) return "indigo";
+    if (colour == QColor(255, 255, 240)) return "ivory";
+    if (colour == QColor(240, 230, 140)) return "khaki";
+    if (colour == QColor(230, 230, 250)) return "lavender";
+    if (colour == QColor(255, 240, 245)) return "lavenderblush";
+    if (colour == QColor(124, 252,   0)) return "lawngreen";
+    if (colour == QColor(255, 250, 205)) return "lemonchiffon";
+    if (colour == QColor(173, 216, 230)) return "lightblue";
+    if (colour == QColor(240, 128, 128)) return "lightcoral";
+    if (colour == QColor(224, 255, 255)) return "lightcyan";
+    if (colour == QColor(250, 250, 210)) return "lightgoldenrodyellow";
+    if (colour == QColor(144, 238, 144)) return "lightgreen";
+    if (colour == QColor(211, 211, 211)) return "lightgrey";
+    if (colour == QColor(255, 182, 193)) return "lightpink";
+    if (colour == QColor(255, 160, 122)) return "lightsalmon";
+    if (colour == QColor( 32, 178, 170)) return "lightseagreen";
+    if (colour == QColor(135, 206, 250)) return "lightskyblue";
+    if (colour == QColor(119, 136, 153)) return "lightslategrey";
+    if (colour == QColor(176, 196, 222)) return "lightsteelblue";
+    if (colour == QColor(255, 255, 224)) return "lightyellow";
+    if (colour == QColor(  0, 255,   0)) return "lime";
+    if (colour == QColor( 50, 205,  50)) return "limegreen";
+    if (colour == QColor(250, 240, 230)) return "linen";
+    if (colour == QColor(255,   0, 255)) return "magenta";
+    if (colour == QColor(128,   0,   0)) return "maroon";
+    if (colour == QColor(102, 205, 170)) return "mediumaquamarine";
+    if (colour == QColor(  0,   0, 205)) return "mediumblue";
+    if (colour == QColor(186,  85, 211)) return "mediumorchid";
+    if (colour == QColor(147, 112, 219)) return "mediumpurple";
+    if (colour == QColor( 60, 179, 113)) return "mediumseagreen";
+    if (colour == QColor(123, 104, 238)) return "mediumslateblue";
+    if (colour == QColor(  0, 250, 154)) return "mediumspringgreen";
+    if (colour == QColor( 72, 209, 204)) return "mediumturquoise";
+    if (colour == QColor(199,  21, 133)) return "mediumvioletred";
+    if (colour == QColor( 25,  25, 112)) return "midnightblue";
+    if (colour == QColor(245, 255, 250)) return "mintcream";
+    if (colour == QColor(255, 228, 225)) return "mistyrose";
+    if (colour == QColor(255, 228, 181)) return "moccasin";
+    if (colour == QColor(255, 222, 173)) return "navajowhite";
+    if (colour == QColor(  0,   0, 128)) return "navy";
+    if (colour == QColor(253, 245, 230)) return "oldlace";
+    if (colour == QColor(128, 128,   0)) return "olive";
+    if (colour == QColor(107, 142,  35)) return "olivedrab";
+    if (colour == QColor(255, 165,   0)) return "orange";
+    if (colour == QColor(255,  69,   0)) return "orangered";
+    if (colour == QColor(218, 112, 214)) return "orchid";
+    if (colour == QColor(238, 232, 170)) return "palegoldenrod";
+    if (colour == QColor(152, 251, 152)) return "palegreen";
+    if (colour == QColor(175, 238, 238)) return "paleturquoise";
+    if (colour == QColor(219, 112, 147)) return "palevioletred";
+    if (colour == QColor(255, 239, 213)) return "papayawhip";
+    if (colour == QColor(255, 218, 185)) return "peachpuff";
+    if (colour == QColor(205, 133,  63)) return "peru";
+    if (colour == QColor(255, 192, 203)) return "pink";
+    if (colour == QColor(221, 160, 221)) return "plum";
+    if (colour == QColor(176, 224, 230)) return "powderblue";
+    if (colour == QColor(128,   0, 128)) return "purple";
+    if (colour == QColor(255,   0,   0)) return "red";
+    if (colour == QColor(188, 143, 143)) return "rosybrown";
+    if (colour == QColor( 65, 105, 225)) return "royalblue";
+    if (colour == QColor(139,  69,  19)) return "saddlebrown";
+    if (colour == QColor(250, 128, 114)) return "salmon";
+    if (colour == QColor(244, 164,  96)) return "sandybrown";
+    if (colour == QColor( 46, 139,  87)) return "seagreen";
+    if (colour == QColor(255, 245, 238)) return "seashell";
+    if (colour == QColor(160,  82,  45)) return "sienna";
+    if (colour == QColor(192, 192, 192)) return "silver";
+    if (colour == QColor(135, 206, 235)) return "skyblue";
+    if (colour == QColor(106,  90, 205)) return "slateblue";
+    if (colour == QColor(112, 128, 144)) return "slategrey";
+    if (colour == QColor(255, 250, 250)) return "snow";
+    if (colour == QColor(  0, 255, 127)) return "springgreen";
+    if (colour == QColor( 70, 130, 180)) return "steelblue";
+    if (colour == QColor(210, 180, 140)) return "tan";
+    if (colour == QColor(  0, 128, 128)) return "teal";
+    if (colour == QColor(216, 191, 216)) return "thistle";
+    if (colour == QColor(255,  99,  71)) return "tomato";
+    if (colour == QColor( 64, 224, 208)) return "turquoise";
+    if (colour == QColor(238, 130, 238)) return "violet";
+    if (colour == QColor(245, 222, 179)) return "wheat";
+    if (colour == QColor(255, 255, 255)) return "white";
+    if (colour == QColor(245, 245, 245)) return "whitesmoke";
+    if (colour == QColor(255, 255,   0)) return "yellow";
+    if (colour == QColor(154, 205,  50)) return "yellowgreen";
+
+    return colour.name();
+}
+
+
diff --git a/program/globals.h b/program/globals.h
new file mode 100644
index 0000000..11ca7b7
--- /dev/null
+++ b/program/globals.h
@@ -0,0 +1,82 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef GLOBALS_H
+#define GLOBALS_H
+
+#include <vector>
+#include <QString>
+#include <QProcess>
+#include <QSharedPointer>
+#include <QColor>
+
+class Settings;
+class Memory;
+class MyGraphicsView;
+class BlastSearch;
+class AssemblyGraph;
+
+enum NodeColourScheme {UNIFORM_COLOURS, RANDOM_COLOURS, DEPTH_COLOUR,
+                       BLAST_HITS_RAINBOW_COLOUR, BLAST_HITS_SOLID_COLOUR,
+                       CONTIGUITY_COLOUR, CUSTOM_COLOURS};
+enum GraphScope {WHOLE_GRAPH, AROUND_NODE, AROUND_BLAST_HITS, DEPTH_RANGE};
+enum ContiguityStatus {STARTING, CONTIGUOUS_STRAND_SPECIFIC,
+                       CONTIGUOUS_EITHER_STRAND, MAYBE_CONTIGUOUS,
+                       NOT_CONTIGUOUS};
+enum NodeDragging {ONE_PIECE, NEARBY_PIECES, ALL_PIECES, NO_DRAGGING};
+enum ZoomSource {MOUSE_WHEEL, SPIN_BOX, KEYBOARD, GESTURE};
+enum UiState {NO_GRAPH_LOADED, GRAPH_LOADED, GRAPH_DRAWN};
+enum NodeLengthMode {AUTO_NODE_LENGTH, MANUAL_NODE_LENGTH};
+enum GraphFileType {LAST_GRAPH, FASTG, GFA, TRINITY, ASQG, PLAIN_FASTA, ANY_FILE_TYPE,
+                    UNKNOWN_FILE_TYPE};
+enum SequenceType {NUCLEOTIDE, PROTEIN, EITHER_NUCLEOTIDE_OR_PROTEIN};
+enum BlastUiState {BLAST_DB_NOT_YET_BUILT, BLAST_DB_BUILD_IN_PROGRESS,
+                   BLAST_DB_BUILT_BUT_NO_QUERIES,
+                   READY_FOR_BLAST_SEARCH, BLAST_SEARCH_IN_PROGRESS,
+                   BLAST_SEARCH_COMPLETE};
+enum CommandLineCommand {NO_COMMAND, BANDAGE_LOAD, BANDAGE_INFO, BANDAGE_IMAGE,
+                         BANDAGE_DISTANCE, BANDAGE_QUERY_PATHS, BANDAGE_REDUCE};
+enum EdgeOverlapType {UNKNOWN_OVERLAP, EXACT_OVERLAP,
+                      AUTO_DETERMINED_EXACT_OVERLAP};
+enum NodeNameStatus {NODE_NAME_OKAY, NODE_NAME_TAKEN, NODE_NAME_CONTAINS_TAB,
+                     NODE_NAME_CONTAINS_NEWLINE, NODE_NAME_CONTAINS_COMMA,
+                     NODE_NAME_CONTAINS_SPACE};
+enum SequencesLoadedFromFasta {NOT_READY, NOT_TRIED, TRIED};
+
+
+//Some of the program's common components are made global so they don't have
+//to be passed around as parameters.
+extern QSharedPointer<Settings> g_settings;
+extern QSharedPointer<Memory> g_memory;
+extern MyGraphicsView * g_graphicsView;
+extern double g_absoluteZoom;
+extern QSharedPointer<BlastSearch> g_blastSearch;
+extern QSharedPointer<AssemblyGraph> g_assemblyGraph;
+
+
+//Functions for formatting numbers are used in many places, and are made global.
+QString formatIntForDisplay(int num);
+QString formatIntForDisplay(long long num);
+QString formatDoubleForDisplay(double num, int decimalPlacesToDisplay);
+QString formatDepthForDisplay(double depth);
+
+std::vector<QColor> getPresetColours();
+QString getColourName(QColor colour);
+
+
+#endif // GLOBALS_H
diff --git a/program/graphlayoutworker.cpp b/program/graphlayoutworker.cpp
new file mode 100644
index 0000000..b53660b
--- /dev/null
+++ b/program/graphlayoutworker.cpp
@@ -0,0 +1,83 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "graphlayoutworker.h"
+#include <time.h>
+#include "ogdf/basic/geometry.h"
+#include <QLineF>
+
+GraphLayoutWorker::GraphLayoutWorker(ogdf::FMMMLayout * fmmm, ogdf::GraphAttributes * graphAttributes,
+                                     ogdf::EdgeArray<double> * edgeArray, int graphLayoutQuality, bool linearLayout,
+                                     double graphLayoutComponentSeparation, double aspectRatio) :
+    m_fmmm(fmmm), m_graphAttributes(graphAttributes), m_edgeArray(edgeArray), m_graphLayoutQuality(graphLayoutQuality),
+    m_linearLayout(linearLayout), m_graphLayoutComponentSeparation(graphLayoutComponentSeparation),
+    m_aspectRatio(aspectRatio)
+{
+}
+
+
+void GraphLayoutWorker::layoutGraph()
+{
+    m_fmmm->randSeed(clock());
+    m_fmmm->useHighLevelOptions(false);
+    m_fmmm->initialPlacementForces(ogdf::FMMMLayout::ipfRandomRandIterNr);
+    m_fmmm->unitEdgeLength(1.0);
+    m_fmmm->allowedPositions(ogdf::FMMMLayout::apAll);
+    m_fmmm->pageRatio(m_aspectRatio);
+    m_fmmm->minDistCC(m_graphLayoutComponentSeparation);
+    m_fmmm->stepsForRotatingComponents(50); // Helps to make linear graph components more horizontal.
+
+    if (m_linearLayout)
+        m_fmmm->initialPlacementForces(ogdf::FMMMLayout::ipfKeepPositions);
+    else
+        m_fmmm->initialPlacementForces(ogdf::FMMMLayout::ipfRandomTime);
+
+    switch (m_graphLayoutQuality)
+    {
+    case 0:
+        m_fmmm->fixedIterations(3);
+        m_fmmm->fineTuningIterations(1);
+        m_fmmm->nmPrecision(2);
+        break;
+    case 1:
+        m_fmmm->fixedIterations(12);
+        m_fmmm->fineTuningIterations(8);
+        m_fmmm->nmPrecision(2);
+        break;
+    case 2:
+        m_fmmm->fixedIterations(30);
+        m_fmmm->fineTuningIterations(20);
+        m_fmmm->nmPrecision(4);
+        break;
+    case 3:
+        m_fmmm->fixedIterations(60);
+        m_fmmm->fineTuningIterations(20);
+        m_fmmm->nmPrecision(6);
+        break;
+    case 4:
+        m_fmmm->fixedIterations(120);
+        m_fmmm->fineTuningIterations(20);
+        m_fmmm->nmPrecision(8);
+        break;
+    }
+
+    m_fmmm->call(*m_graphAttributes, *m_edgeArray);
+
+    emit finishedLayout();
+}
+
diff --git a/program/graphlayoutworker.h b/program/graphlayoutworker.h
new file mode 100644
index 0000000..c86b4a2
--- /dev/null
+++ b/program/graphlayoutworker.h
@@ -0,0 +1,51 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef GRAPHLAYOUTWORKER_H
+#define GRAPHLAYOUTWORKER_H
+
+#include <QObject>
+#include "../ogdf/energybased/FMMMLayout.h"
+#include "../ogdf/basic/GraphAttributes.h"
+
+
+class GraphLayoutWorker : public QObject
+{
+    Q_OBJECT
+
+public:
+    GraphLayoutWorker(ogdf::FMMMLayout * fmmm, ogdf::GraphAttributes * graphAttributes,
+                      ogdf::EdgeArray<double> * edgeArray, int graphLayoutQuality, bool linearLayout,
+                      double graphLayoutComponentSeparation, double aspectRatio = 1.333333);
+
+    ogdf::FMMMLayout * m_fmmm;
+    ogdf::GraphAttributes * m_graphAttributes;
+    ogdf::EdgeArray<double> * m_edgeArray;
+    int m_graphLayoutQuality;
+    bool m_linearLayout;
+    double m_graphLayoutComponentSeparation;
+    double m_aspectRatio;
+
+public slots:
+    void layoutGraph();
+
+signals:
+    void finishedLayout();
+};
+
+#endif // GRAPHLAYOUTWORKER_H
diff --git a/program/main.cpp b/program/main.cpp
new file mode 100644
index 0000000..8e99321
--- /dev/null
+++ b/program/main.cpp
@@ -0,0 +1,198 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "../ui/mainwindow.h"
+#include <QApplication>
+#include <QStringList>
+#include <QString>
+#include <QCommandLineParser>
+#include <QTextStream>
+#include "../command_line/load.h"
+#include "../command_line/info.h"
+#include "../command_line/image.h"
+#include "../command_line/querypaths.h"
+#include "../command_line/reduce.h"
+#include "../command_line/commoncommandlinefunctions.h"
+#include "../program/settings.h"
+#include "../program/memory.h"
+#include "../program/globals.h"
+#include "../blast/blastsearch.h"
+#include "../graph/assemblygraph.h"
+#include "../ui/mygraphicsview.h"
+
+#ifndef Q_OS_WIN32
+#include <sys/ioctl.h>
+#endif //Q_OS_WIN32
+
+void printUsage(QTextStream * out, bool all)
+{
+    QStringList text;
+
+    text << "";
+    text << "Usage:    Bandage <command> [options]";
+    text << "";
+    text << "Commands: <blank>      Launch the Bandage GUI";
+    text << "load         Launch the Bandage GUI and load a graph file";
+    text << "info         Display information about a graph";
+    text << "image        Generate an image file of a graph";
+    text << "querypaths   Output graph paths for BLAST queries";
+    text << "reduce       Save a subgraph of a larger graph";
+    text << "";
+    text << "Options:  --help       View this help message";
+    text << "--helpall    View all command line settings";
+    text << "--version    View Bandage version number";
+    text << "";
+
+    if (all)
+        getSettingsUsage(&text);
+    getOnlineHelpMessage(&text);
+
+    outputText(text, out);
+}
+
+int main(int argc, char *argv[])
+{
+    QStringList arguments = getArgumentList(argc, argv);
+
+    QString first;
+    if (arguments.size() > 0)
+        first = arguments[0];
+
+    //When launched from the app bundle, OS X can pass a process serial number
+    //as the first argument. If so, we throw it out.
+    if (first.contains("-psn_"))
+    {
+        arguments.pop_front();
+        first = "";
+        if (arguments.size() > 0)
+            first = arguments[0];
+    }
+
+    // Create the application. Some ways of running Bandage require the normal platform while other command line only
+    // ways use the minimal platform. Frustratingly, Bandage image cannot render text properly with the minimal
+    // platform, so we need to use the full platform if Bandage image is run with text labels.
+    bool imageWithText = (first.toLower() == "image") &&
+                         (arguments.contains("--names") || arguments.contains("--lengths") ||
+                          arguments.contains("--depth") || arguments.contains("--blasthits"));
+    bool guiNeeded = (first == "") || (first.toLower() == "load") || imageWithText;
+    if (checkForHelp(arguments) || checkForHelpAll(arguments))
+        guiNeeded = false;
+    if (!guiNeeded)
+        qputenv("QT_QPA_PLATFORM", QByteArrayLiteral("minimal"));
+    new QApplication(argc, argv);
+
+    //Create the important global objects.
+    g_settings.reset(new Settings());
+    g_memory.reset(new Memory());
+    g_blastSearch.reset(new BlastSearch());
+    g_assemblyGraph.reset(new AssemblyGraph());
+    g_graphicsView = new MyGraphicsView();
+
+    //Save the terminal width (useful for displaying help text neatly).
+    #ifndef Q_OS_WIN32
+    struct winsize ws;
+    ioctl(0, TIOCGWINSZ, &ws);
+    g_memory->terminalWidth = ws.ws_col;
+    if (g_memory->terminalWidth < 50) g_memory->terminalWidth = 50;
+    if (g_memory->terminalWidth > 300) g_memory->terminalWidth = 300;
+    #endif //Q_OS_WIN32
+
+    QApplication::setApplicationName("Bandage");
+    QApplication::setApplicationVersion("0.8.1");
+
+    QTextStream out(stdout);
+    QTextStream err(stderr);
+
+    //If the first argument was a recognised command, move to that command's function.
+    if (arguments.size() > 0)
+    {
+        if (checkForVersion(arguments))
+        {
+            out << "Version: " << QApplication::applicationVersion() << endl;
+            return 0;
+        }
+        if (first.toLower() == "load")
+        {
+            arguments.pop_front();
+            g_memory->commandLineCommand = BANDAGE_LOAD;
+            return bandageLoad(arguments);
+        }
+        else if (first.toLower() == "info")
+        {
+            arguments.pop_front();
+            g_memory->commandLineCommand = BANDAGE_INFO;
+            return bandageInfo(arguments);
+        }
+        else if (first.toLower() == "image")
+        {
+            arguments.pop_front();
+            g_memory->commandLineCommand = BANDAGE_IMAGE;
+            return bandageImage(arguments);
+        }
+        else if (first.toLower() == "querypaths")
+        {
+            arguments.pop_front();
+            g_memory->commandLineCommand = BANDAGE_QUERY_PATHS;
+            return bandageQueryPaths(arguments);
+        }
+        else if (first.toLower() == "reduce")
+        {
+            arguments.pop_front();
+            g_memory->commandLineCommand = BANDAGE_REDUCE;
+            return bandageReduce(arguments);
+        }
+
+        //Since a recognised command was not seen, we now check to see if the user
+        //was looking for help information.
+        else if (checkForHelp(arguments))
+        {
+            out << endl;
+            out << getBandageTitleAsciiArt() << endl;
+            out << "Version: " << QApplication::applicationVersion();
+            printUsage(&out, false);
+            return 0;
+        }
+        else if (checkForHelpAll(arguments))
+        {
+            out << endl;
+            out << getBandageTitleAsciiArt() << endl;
+            out << "Version: " << QApplication::applicationVersion();
+            printUsage(&out, true);
+            return 0;
+        }
+    }
+
+    //If the code got here, we assume the user is simply launching Bandage,
+    //with or without some options to specify settings.
+
+    //Check the settings.
+    QStringList argumentsCopy = arguments;
+    QString error = checkForInvalidOrExcessSettings(&argumentsCopy);
+    if (error.length() > 0)
+    {
+        outputText("Bandage error: " + error, &err);
+        return 1;
+    }
+
+    //If the code got here, then the settings are good.  Parse them now and
+    //run the program.
+    parseSettings(arguments);
+    MainWindow w;
+    w.show();
+    return QApplication::exec();
+}
diff --git a/program/memory.cpp b/program/memory.cpp
new file mode 100644
index 0000000..e6346a5
--- /dev/null
+++ b/program/memory.cpp
@@ -0,0 +1,60 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "memory.h"
+
+#include <QDir>
+
+Memory::Memory()
+{
+    rememberedPath = QDir::homePath();
+
+    commandLineCommand = NO_COMMAND;
+
+    pathDialogIsVisible = false;
+    queryPathDialogIsVisible = false;
+
+    userSpecifiedPath = Path();
+    userSpecifiedPathString = "";
+    userSpecifiedPathCircular = false;
+
+    distancePathSearchQuery1 = "";
+    distancePathSearchQuery2 = "";
+    distancePathSearchQuery1Path = "";
+    distancePathSearchQuery2Path = "";
+
+    terminalWidth = 80;
+}
+
+
+
+//This function clears all memory that is particular to a graph.  It should be
+//called whenever a new graph is loaded.
+void Memory::clearGraphSpecificMemory()
+{
+    userSpecifiedPath = Path();
+    userSpecifiedPathString = "";
+    userSpecifiedPathCircular = false;
+
+    distanceSearchResults.clear();
+    distancePathSearchQuery1 = "";
+    distancePathSearchQuery2 = "";
+    distancePathSearchQuery1Path = "";
+    distancePathSearchQuery2Path = "";
+}
+
diff --git a/program/memory.h b/program/memory.h
new file mode 100644
index 0000000..2291fc4
--- /dev/null
+++ b/program/memory.h
@@ -0,0 +1,61 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef MEMORY_H
+#define MEMORY_H
+
+#include "../program/globals.h"
+#include <QList>
+#include <QStringList>
+#include "../graph/querydistance.h"
+
+class Memory
+{
+public:
+    Memory();
+    void clearGraphSpecificMemory();
+
+    QString rememberedPath;
+
+    CommandLineCommand commandLineCommand;
+
+    bool pathDialogIsVisible;
+    bool queryPathDialogIsVisible;
+
+    //These store the user input in the 'Specify exact path...' dialog so it is
+    //retained between uses.
+    Path userSpecifiedPath;
+    QString userSpecifiedPathString;
+    bool userSpecifiedPathCircular;
+
+    //These store the results of a distance search between two queries.
+    QList<QueryDistance> distanceSearchResults;
+
+    //These store the last used distance path search queries/paths.
+    QString distancePathSearchQuery1;
+    QString distancePathSearchQuery2;
+    QString distancePathSearchQuery1Path;
+    QString distancePathSearchQuery2Path;
+
+    //This stores the currently selected query path in a query path dialog.
+    QList<Path> queryPaths;
+
+    int terminalWidth;
+};
+
+#endif // MEMORY_H
diff --git a/program/scinot.cpp b/program/scinot.cpp
new file mode 100644
index 0000000..b1ad77c
--- /dev/null
+++ b/program/scinot.cpp
@@ -0,0 +1,185 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "QStringList"
+#include "scinot.h"
+#include "math.h"
+
+SciNot::SciNot() :
+    m_coefficient(0.0), m_exponent(0)
+{
+    normalise();
+}
+
+SciNot::SciNot(double coefficient, int exponent) :
+    m_coefficient(coefficient), m_exponent(exponent)
+{
+    normalise();
+}
+
+
+SciNot::SciNot(QString sciNotString) :
+    m_coefficient(0.0), m_exponent(0)
+{
+    QStringList parts = sciNotString.split('e');
+    if (parts.size() < 1)
+        return;
+    if (parts.size() < 2)
+        m_coefficient = parts[0].toDouble();
+    else
+    {
+        bool ok;
+        double coefficient = parts[0].toDouble(&ok);
+        if (!ok)
+            return;
+
+        double exponent = parts[1].toInt(&ok);
+        if (!ok)
+            return;
+
+        m_coefficient = coefficient;
+        m_exponent = exponent;
+    }
+
+    normalise();
+}
+
+
+SciNot::SciNot(double num) :
+    m_coefficient(num), m_exponent(0)
+{
+    normalise();
+}
+
+
+void SciNot::normalise()
+{
+    if (m_coefficient == 0.0)
+    {
+        m_exponent = 0;
+        return;
+    }
+
+    while (fabs(m_coefficient) >= 10.0)
+    {
+        m_coefficient /= 10.0;
+        ++m_exponent;
+    }
+    while (fabs(m_coefficient) < 1.0)
+    {
+        m_coefficient *= 10.0;
+        --m_exponent;
+    }
+}
+
+
+bool SciNot::operator<(SciNot const &other) const
+{
+    if (isZero())
+        return other.isPositive();
+
+    if (isPositive())
+    {
+        if (other.isNegative() || other.isZero())
+            return false;
+        else //Both are positive
+        {
+            if (m_exponent < other.m_exponent) return true;
+            if (m_exponent > other.m_exponent) return false;
+            return m_coefficient < other.m_coefficient;
+        }
+    }
+
+    else //It's negative
+    {
+        if (other.isPositive() || other.isZero())
+            return true;
+        else //Both are negative
+        {
+            if (m_exponent > other.m_exponent) return true;
+            if (m_exponent < other.m_exponent) return false;
+            return m_coefficient < other.m_coefficient;
+        }
+    }
+}
+
+bool SciNot::operator>(SciNot const &other) const
+{
+    return !(*this < other) && (*this != other);
+}
+bool SciNot::operator<=(SciNot const &other) const
+{
+    return (*this < other) || (*this == other);
+}
+bool SciNot::operator>=(SciNot const &other) const
+{
+    return (*this > other) || (*this == other);
+}
+bool SciNot::operator==(SciNot const &other) const
+{
+    return m_coefficient == other.m_coefficient && m_exponent == other.m_exponent;
+}
+bool SciNot::operator!=(SciNot const &other) const
+{
+    return !(*this == other);
+}
+
+
+QString SciNot::asString(bool alwaysInSciNot) const
+{
+    if (!alwaysInSciNot)
+    {
+        if (isZero())
+            return "0";
+        if (m_exponent < 3 && m_exponent > -3)
+            return QString::number(toDouble());
+    }
+
+    return QString::number(m_coefficient) + "e" + QString::number(m_exponent);
+}
+
+
+double SciNot::toDouble() const
+{
+    return m_coefficient * pow(10.0, m_exponent);
+}
+
+bool SciNot::isValidSciNotString(QString sciNotString)
+{
+    QStringList parts = sciNotString.split('e');
+    if (parts.size() != 2)
+        return false;
+
+    bool coefficientOk;
+    parts[0].toDouble(&coefficientOk);
+
+    bool exponentOk;
+    parts[1].toInt(&exponentOk);
+
+    return coefficientOk && exponentOk;
+}
+
+void SciNot::power(double p) {
+    double newCoefficient = pow(m_coefficient, p);
+    double newExponent = m_exponent * p;
+    int wholePart = int(newExponent);
+    double fractionalPart = newExponent - wholePart;
+    m_coefficient = newCoefficient * pow(10.0, fractionalPart);
+    m_exponent = wholePart;
+    normalise();
+}
diff --git a/program/scinot.h b/program/scinot.h
new file mode 100644
index 0000000..cc9bc98
--- /dev/null
+++ b/program/scinot.h
@@ -0,0 +1,65 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef SCINOT_H
+#define SCINOT_H
+
+//This class defines a number in scientific notation.  It is needed because
+//some numbers in Bandage (BLAST e-values and their products) can potentially
+//exceed the limits of the C++ double type.
+
+#include <QString>
+
+class SciNot
+{
+public:
+    // CREATORS
+    SciNot();
+    SciNot(double coefficient, int exponent);
+    SciNot(QString sciNotString);
+    SciNot(double num);
+
+    // ACCESSORS
+    bool operator<(SciNot const &other) const;
+    bool operator>(SciNot const &other) const;
+    bool operator<=(SciNot const &other) const;
+    bool operator>=(SciNot const &other) const;
+    bool operator==(SciNot const &other) const;
+    bool operator!=(SciNot const &other) const;
+    double getCoefficient() const {return m_coefficient;}
+    int getExponent() const {return m_exponent;}
+    QString asString(bool alwaysInSciNot) const;
+    double toDouble() const;
+    bool isPositive() const {return m_coefficient > 0.0;}
+    bool isNegative() const {return m_coefficient < 0.0;}
+    bool isZero() const {return m_coefficient == 0.0;}
+
+    // MANIPULATORS
+    void power(double p);
+
+    // STATIC
+    static bool isValidSciNotString(QString sciNotString);
+
+private:
+    double m_coefficient;
+    int m_exponent;
+
+    void normalise();
+};
+
+#endif // SCINOT_H
diff --git a/program/settings.cpp b/program/settings.cpp
new file mode 100644
index 0000000..c08c8e0
--- /dev/null
+++ b/program/settings.cpp
@@ -0,0 +1,144 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "settings.h"
+#include <QDir>
+
+Settings::Settings()
+{
+    doubleMode = false;
+
+    nodeLengthMode = AUTO_NODE_LENGTH;
+    autoNodeLengthPerMegabase = 1000.0;
+    manualNodeLengthPerMegabase = FloatSetting(1000.0, 0, 1000000.0);
+    meanNodeLength = 40.0;
+    minTotalGraphLength = 500.0;
+    graphLayoutQuality = IntSetting(2, 0, 4);
+    linearLayout = false;
+    minimumNodeLength = FloatSetting(5.0, 1.0, 100.0);
+    edgeLength = FloatSetting(5.0, 0.1, 100.0);
+    doubleModeNodeSeparation = FloatSetting(2.0, 0.0, 100.0);
+    nodeSegmentLength = FloatSetting(20.0, 1.0, 1000.0);
+    componentSeparation = FloatSetting(50.0, 0, 1000.0);
+
+    averageNodeWidth = FloatSetting(5.0, 0.5, 1000.0);
+    depthEffectOnWidth = FloatSetting(0.5, 0.0, 1.0);
+    depthPower = FloatSetting(0.5, 0.0, 1.0);
+
+    edgeWidth = FloatSetting(1.5, 0.1, 100);
+    outlineThickness = FloatSetting(0.0, 0.0, 100.0);
+    selectionThickness = 1.0;
+    arrowheadSize = 0.01;
+    arrowheadsInSingleMode = false;
+    textOutlineThickness = FloatSetting(1.5, 0.0, 10.0);
+
+    blastRainbowPartsPerQuery = 100;
+
+    graphScope = WHOLE_GRAPH;
+    nodeDistance = IntSetting(0, 0, 100);
+    startingNodesExactMatch = true;
+    startingNodes = "";
+    blastQueryFilename = "";
+    unnamedQueryDefaultName = "unnamed";
+
+    minZoom = 0.01;
+    minZoomOnGraphDraw = 0.2;
+    maxZoom = 100.0;
+    maxAutomaticZoom = 10.0;
+    zoomFactor = 1.0005;
+    textZoomScaleFactor = 0.7;
+
+    dragStrength = 100.0;
+
+    displayNodeCustomLabels = false;
+    displayNodeNames = false;
+    displayNodeLengths = false;
+    displayNodeDepth = false;
+    displayNodeCsvData = false;
+    displayNodeCsvDataCol = 0;
+    displayBlastHits = false;
+    labelFont = QFont();
+    textOutline = false;
+    antialiasing = true;
+    positionTextNodeCentre = false;
+
+    nodeDragging = NEARBY_PIECES;
+
+    nodeColourScheme = RANDOM_COLOURS;
+    uniformPositiveNodeColour = QColor(178, 34, 34);
+    uniformNegativeNodeColour = QColor(128, 0, 0);
+    uniformNodeSpecialColour = QColor(0, 128, 0);
+
+    randomColourPositiveOpacity = IntSetting(255, 0, 255);
+    randomColourNegativeOpacity = IntSetting(255, 0, 255);
+    randomColourPositiveSaturation = IntSetting(127, 0, 255);
+    randomColourNegativeSaturation = IntSetting(127, 0, 255);
+    randomColourPositiveLightness = IntSetting(150, 0, 255);
+    randomColourNegativeLightness = IntSetting(90, 0, 255);
+
+    edgeColour = QColor(0, 0, 0, 180);
+    outlineColour = QColor(0, 0, 0);
+    selectionColour = QColor(0, 0, 255);
+    textColour = QColor(0, 0, 0);
+    textOutlineColour = QColor(255, 255, 255);
+
+    contiguitySearchSteps = IntSetting(15, 1, 50);
+    contiguousStrandSpecificColour = QColor(0, 155, 0);
+    contiguousEitherStrandColour = QColor(0, 155, 0);
+    maybeContiguousColour = QColor(190, 240, 190);
+    notContiguousColour = QColor(220, 220, 220);
+    contiguityStartingColour = QColor(0, 255, 0);
+
+    noBlastHitsColour = QColor(220, 220, 220);
+
+    autoDepthValue = true;
+    lowDepthValue = FloatSetting(5.0, 0.0, 1000000.0);
+    lowDepthColour = QColor(0, 0, 0);
+    highDepthValue = FloatSetting(50.0, 0.0, 1000000.0);
+    highDepthColour = QColor(255, 0, 0);
+
+    pathHighlightShadingColour = QColor(0, 0, 0, 60);
+    pathHighlightOutlineColour = QColor(0, 0, 0);
+
+    defaultCustomNodeColour = QColor(190, 190, 190);
+
+    minAutoFindEdgeOverlap = 10;
+    maxAutoFindEdgeOverlap = 200;
+
+    maxHitsForQueryPath = IntSetting(100, 0, 1000000);
+    maxQueryPathNodes = IntSetting(6, 1, 50);
+    minQueryCoveredByPath = FloatSetting(0.9, 0.3, 1.0);
+    minQueryCoveredByHits = FloatSetting(0.9, 0.3, 1.0, true);
+    minMeanHitIdentity = FloatSetting(0.5, 0.0, 1.0, true);
+    maxEValueProduct = SciNotSetting(SciNot(1.0, -10), SciNot(1.0, -999), SciNot(9.9, 1), true);
+    minLengthPercentage = FloatSetting(0.95, 0.0, 10000.0, true);
+    maxLengthPercentage = FloatSetting(1.05, 0.0, 10000.0, true);
+    minLengthBaseDiscrepancy = IntSetting(-100, -1000000, 1000000, false);
+    maxLengthBaseDiscrepancy = IntSetting(100, -1000000, 1000000, false);
+
+    blastSearchParameters = "";
+
+    blastAlignmentLengthFilter = IntSetting(100, 1, 1000000, false);
+    blastQueryCoverageFilter = FloatSetting(50.0, 0.0, 100.0, false);
+    blastIdentityFilter = FloatSetting(90.0, 0.0, 100.0, false);
+    blastEValueFilter = SciNotSetting(SciNot(1.0, -10), SciNot(1.0, -999), SciNot(9.9, 1), false);
+    blastBitScoreFilter = FloatSetting(1000.0, 0.0, 1000000.0, false);
+
+    minDepthRange = FloatSetting(10.0, 0.0, 1000000.0);
+    maxDepthRange = FloatSetting(100.0, 0.0, 1000000.0);
+}
diff --git a/program/settings.h b/program/settings.h
new file mode 100644
index 0000000..b106186
--- /dev/null
+++ b/program/settings.h
@@ -0,0 +1,207 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#include <QColor>
+#include <QFont>
+#include "globals.h"
+#include <QString>
+#include "../graph/path.h"
+#include "scinot.h"
+
+class DeBruijnNode;
+
+
+
+class IntSetting
+{
+public:
+    IntSetting(int v, int minimum, int maximum, bool isOn = true) {val = v; min = minimum; max = maximum; on = isOn;}
+    IntSetting() {val = 0; min = 0; max = 0;}
+    int val, min, max;
+    bool on;
+    operator int() const {return val;}
+    IntSetting & operator=(int newVal) {val = newVal; return *this;}
+    bool inRange(int v) const {return v >= min && v <= max;}
+};
+
+class FloatSetting
+{
+public:
+    FloatSetting(double v, double minimum, double maximum, bool isOn = true) {val = v; min = minimum; max = maximum; on = isOn;}
+    FloatSetting() {val = 0.0; min = 0.0; max = 0.0;}
+    double val, min, max;
+    bool on;
+    operator double() const {return val;}
+    FloatSetting & operator=(double newVal) {val = newVal; return *this;}
+    bool inRange(double v) const {return v >= min && v <= max;}
+};
+
+class SciNotSetting
+{
+public:
+    SciNotSetting(SciNot v, SciNot minimum, SciNot maximum, bool isOn = true) {val = v; min = minimum; max = maximum; on = isOn;}
+    SciNotSetting() {val = 0.0; min = 0.0; max = 0.0;}
+    SciNot val, min, max;
+    bool on;
+    operator SciNot() const {return val;}
+    SciNotSetting & operator=(SciNot newVal) {val = newVal; return *this;}
+    bool inRange(SciNot v) const {return v >= min && v <= max;}
+};
+
+
+class Settings
+{
+public:
+    Settings();
+
+    bool doubleMode;
+
+    NodeLengthMode nodeLengthMode;
+    double autoNodeLengthPerMegabase;
+    FloatSetting manualNodeLengthPerMegabase;
+    double meanNodeLength;
+    double minTotalGraphLength;
+    IntSetting graphLayoutQuality;
+    bool linearLayout;
+    FloatSetting minimumNodeLength;
+    FloatSetting edgeLength;
+    FloatSetting doubleModeNodeSeparation;
+    FloatSetting nodeSegmentLength;
+    FloatSetting componentSeparation;
+
+    FloatSetting averageNodeWidth;
+    FloatSetting depthEffectOnWidth;
+    FloatSetting depthPower;
+
+    FloatSetting edgeWidth;
+    FloatSetting outlineThickness;
+    double selectionThickness;
+    double arrowheadSize;
+    double arrowheadsInSingleMode;
+    FloatSetting textOutlineThickness;
+
+    int blastRainbowPartsPerQuery;
+
+    GraphScope graphScope;
+    IntSetting nodeDistance;
+    bool startingNodesExactMatch;
+    QString startingNodes;
+    QString blastQueryFilename;
+    QString unnamedQueryDefaultName;
+
+    double minZoom;
+    double minZoomOnGraphDraw;
+    double maxZoom;
+    double maxAutomaticZoom;
+    double zoomFactor;
+    double textZoomScaleFactor; // 1.0 = text size constant, regardless of zoom.  0.0 = text size changes exactly with zoom.
+
+    double dragStrength;
+
+    bool displayNodeCustomLabels;
+    bool displayNodeNames;
+    bool displayNodeLengths;
+    bool displayNodeDepth;
+    bool displayNodeCsvData;
+    int  displayNodeCsvDataCol;
+    bool displayBlastHits;
+    QFont labelFont;
+    bool textOutline;
+    bool antialiasing;
+    bool positionTextNodeCentre;
+
+    NodeDragging nodeDragging;
+
+    QColor edgeColour;
+    QColor outlineColour;
+    QColor selectionColour;
+    QColor textColour;
+    QColor textOutlineColour;
+
+    NodeColourScheme nodeColourScheme;
+    QColor uniformPositiveNodeColour;
+    QColor uniformNegativeNodeColour;
+    QColor uniformNodeSpecialColour;
+
+    IntSetting randomColourPositiveOpacity;
+    IntSetting randomColourNegativeOpacity;
+    IntSetting randomColourPositiveSaturation;
+    IntSetting randomColourNegativeSaturation;
+    IntSetting randomColourPositiveLightness;
+    IntSetting randomColourNegativeLightness;
+
+    IntSetting contiguitySearchSteps;
+    QColor contiguousStrandSpecificColour;
+    QColor contiguousEitherStrandColour;
+    QColor maybeContiguousColour;
+    QColor notContiguousColour;
+    QColor contiguityStartingColour;
+
+    QColor noBlastHitsColour;
+
+    bool autoDepthValue;
+    FloatSetting lowDepthValue;
+    QColor lowDepthColour;
+    FloatSetting highDepthValue;
+    QColor highDepthColour;
+
+    QColor pathHighlightShadingColour;
+    QColor pathHighlightOutlineColour;
+
+    QColor defaultCustomNodeColour;
+
+    //These specify the range of overlaps to look for when Bandage determines
+    //edge overlaps automatically.
+    int minAutoFindEdgeOverlap;
+    int maxAutoFindEdgeOverlap;
+
+    //These control how Bandage finds the best path in the graph to represent
+    //each BLAST query.  Some of these settings can be turned on and off and
+    //therefore have a corresponding bool value.
+    IntSetting maxHitsForQueryPath;
+    IntSetting maxQueryPathNodes;
+    FloatSetting minQueryCoveredByPath;
+    FloatSetting minQueryCoveredByHits;
+    FloatSetting minMeanHitIdentity;
+    SciNotSetting maxEValueProduct;
+    FloatSetting minLengthPercentage;
+    FloatSetting maxLengthPercentage;
+    IntSetting minLengthBaseDiscrepancy;
+    IntSetting maxLengthBaseDiscrepancy;
+
+    //This holds the BLAST search parameters that a user can change before
+    //running a BLAST search.
+    QString blastSearchParameters;
+
+    //These are the optional BLAST hit filters: whether or not they are used and
+    //what their values are.
+    IntSetting blastAlignmentLengthFilter;
+    FloatSetting blastQueryCoverageFilter;
+    FloatSetting blastIdentityFilter;
+    SciNotSetting blastEValueFilter;
+    FloatSetting blastBitScoreFilter;
+
+    //These are used for the 'Depth range' graph scope.
+    FloatSetting minDepthRange;
+    FloatSetting maxDepthRange;
+};
+
+#endif // SETTINGS_H
diff --git a/tests/bandage_command_line_tests.sh b/tests/bandage_command_line_tests.sh
new file mode 100755
index 0000000..5e06b2d
--- /dev/null
+++ b/tests/bandage_command_line_tests.sh
@@ -0,0 +1,212 @@
+#!/bin/bash
+
+# Change this variable to point to the Bandage executable.
+bandagepath="../../build-Bandage-Desktop_Qt_5_6_0_clang_64bit-Release/Bandage.app/Contents/MacOS/Bandage"
+
+# This function tests the exit code, stdout and stderr of a command.
+function test_all {
+    command=$1
+    expected_exit_code=$2
+    expected_std_out=$3
+    expected_std_err=$4
+
+    $command 1> tmp/std_out 2> tmp/std_err
+    exit_code=$?
+    std_out="$(echo $(cat tmp/std_out))"
+    std_err="$(echo $(cat tmp/std_err))"
+
+    if [ $exit_code == $expected_exit_code ]; then correct_exit_code=true; else correct_exit_code=false; fi
+    if [ "$std_out" == "$expected_std_out" ]; then correct_std_out=true; else correct_std_out=false; fi
+    if [ "$std_err" == "$expected_std_err" ]; then correct_std_err=true; else correct_std_err=false; fi
+
+    if $correct_exit_code && $correct_std_out && $correct_std_err;
+        then echo "PASS: $command";
+    else
+        echo "FAIL: $command"
+        if ! $correct_exit_code; then echo "   expected exit code: $expected_exit_code"; echo "   actual exit code: $exit_code"; fi
+        if ! $correct_std_out; then echo "   expected std out: $expected_std_out"; echo "   actual std out: $std_out"; fi
+        if ! $correct_std_err; then echo "   expected std err: $expected_std_err"; echo "   actual std err: $std_err"; fi
+    fi
+
+    rm tmp/std_out
+    rm tmp/std_err
+}
+
+# This function only tests the exit code of a command.
+function test_exit_code {
+    command=$1
+    expected_exit_code=$2
+
+    $command 1> tmp/std_out 2> tmp/std_err
+    exit_code=$?
+
+    if [ $exit_code == $expected_exit_code ]; then correct_exit_code=true; else correct_exit_code=false; fi
+
+    if $correct_exit_code && $correct_std_out && $correct_std_err;
+        then echo "PASS: $command";
+    else
+        echo "FAIL: $command"
+        if ! $correct_exit_code; then echo "   expected exit code: $expected_exit_code"; echo "   actual exit code: $exit_code"; fi
+    fi
+
+    rm tmp/std_out
+    rm tmp/std_err
+}
+
+# This function tests only the width of an image.
+function test_image_height {
+    image=$1
+    height=$2
+
+    size=`convert $image -print "Size: %wx%h\n" /dev/null`
+
+    if [[ $size == *"x$height"* ]]
+        then echo "PASS: $size";
+    else
+        echo "FAIL:"
+        echo "   expected height: $height"
+        echo "   actual: $size"
+    fi
+}
+
+# This function tests only the width of an image.
+function test_image_width {
+    image=$1
+    width=$2
+
+    size=`convert $image -print "Size: %wx%h\n" /dev/null`
+
+    if [[ $size == *"$width""x"* ]]
+        then echo "PASS: $size";
+    else
+        echo "FAIL:"
+        echo "   expected width: $width"
+        echo "   actual: $size"
+    fi
+}
+
+# This function tests the height and width of an image.
+function test_image_width_and_height {
+    image=$1
+    width=$2
+    height=$3
+    
+    size=`convert $image -print "Size: %wx%h\n" /dev/null`
+    expected_size="Size: $width""x""$height"
+
+    if [ "$size" == "$expected_size" ]
+        then echo "PASS: $size";
+    else
+        echo "FAIL:"
+        echo "   expected: $expected_size"
+        echo "   actual: $size"
+    fi
+}
+
+
+# The tmp directory is used to store files that hold stdout and stderr as well as anything else made by the commands.
+mkdir tmp
+
+# Bandage image tests
+test_all "$bandagepath image test.fastg tmp/test.png" 0 "" ""
+test_image_height tmp/test.png 1000; rm tmp/test.png
+test_all "$bandagepath image test.fastg tmp/test.jpg" 0 "" "";
+test_image_height tmp/test.jpg 1000; rm tmp/test.jpg
+test_all "$bandagepath image test.fastg tmp/test.svg" 0 "" ""; rm tmp/test.svg
+test_all "$bandagepath image test.fastg tmp/test.png --height 500" 0 "" ""
+test_image_height tmp/test.png 500; rm tmp/test.png
+test_all "$bandagepath image test.fastg tmp/test.png --height 50" 0 "" ""
+test_image_height tmp/test.png 50; rm tmp/test.png
+test_all "$bandagepath image test.fastg tmp/test.png --width 500" 0 "" ""
+test_image_width tmp/test.png 500; rm tmp/test.png
+test_all "$bandagepath image test.fastg tmp/test.png --width 50" 0 "" ""
+test_image_width tmp/test.png 50; rm tmp/test.png
+test_all "$bandagepath image test.fastg tmp/test.png  --width 400 --height 500" 0 "" ""
+test_image_width_and_height tmp/test.png 400 500; rm tmp/test.png
+test_all "$bandagepath image test.fastg tmp/test.png  --width 500 --height 400" 0 "" ""
+test_image_width_and_height tmp/test.png 500 400; rm tmp/test.png
+test_all "$bandagepath image abc.fastg test.png" 1 "" "Bandage error: abc.fastg does not exist"
+test_all "$bandagepath image test.fastg test.abc" 1 "" "Bandage error: the output filename must end in .png, .jpg or .svg"
+test_all "$bandagepath image test.csv tmp/test.png" 1 "" "Bandage error: could not load test.csv"
+test_all "$bandagepath image test.fastg test.png --query abc.fasta" 1 "" "Bandage error: --query must be followed by a valid filename"
+
+# Bandage load tests
+test_all "$bandagepath load abc.fastg" 1 "" "Bandage error: abc.fastg does not exist"
+test_all "$bandagepath load test.fastg --query abc.fasta" 1 "" "Bandage error: --query must be followed by a valid filename"
+
+# Bandage help tests
+test_exit_code "$bandagepath --help" 0
+test_exit_code "$bandagepath --helpall" 0
+test_exit_code "$bandagepath --version" 0
+
+# Bandage incorrect settings tests
+test_all "$bandagepath --abc" 1 "" "Bandage error: Invalid option: --abc"
+test_all "$bandagepath --scope" 1 "" "Bandage error: --scope must be followed by entire, aroundnodes, aroundblast or depthrange"
+test_all "$bandagepath --scope abc" 1 "" "Bandage error: --scope must be followed by entire, aroundnodes, aroundblast or depthrange"
+test_all "$bandagepath --nodes" 1 "" "Bandage error: --nodes must be followed by a list of node names"
+test_all "$bandagepath --distance" 1 "" "Bandage error: --distance must be followed by an integer"
+test_all "$bandagepath --distance abc" 1 "" "Bandage error: --distance must be followed by an integer"
+test_all "$bandagepath --mindepth" 1 "" "Bandage error: --mindepth must be followed by a number"
+test_all "$bandagepath --mindepth abc" 1 "" "Bandage error: --mindepth must be followed by a number"
+test_all "$bandagepath --maxdepth" 1 "" "Bandage error: --maxdepth must be followed by a number"
+test_all "$bandagepath --nodelen" 1 "" "Bandage error: --nodelen must be followed by a number"
+test_all "$bandagepath --minnodlen" 1 "" "Bandage error: --minnodlen must be followed by a number"
+test_all "$bandagepath --edgelen" 1 "" "Bandage error: --edgelen must be followed by a number"
+test_all "$bandagepath --edgewidth" 1 "" "Bandage error: --edgewidth must be followed by a number"
+test_all "$bandagepath --doubsep" 1 "" "Bandage error: --doubsep must be followed by a number"
+test_all "$bandagepath --nodseglen" 1 "" "Bandage error: --nodseglen must be followed by a number"
+test_all "$bandagepath --iter" 1 "" "Bandage error: --iter must be followed by an integer"
+test_all "$bandagepath --nodewidth" 1 "" "Bandage error: --nodewidth must be followed by a number"
+test_all "$bandagepath --depwidth" 1 "" "Bandage error: --depwidth must be followed by a number"
+test_all "$bandagepath --deppower" 1 "" "Bandage error: --deppower must be followed by a number"
+test_all "$bandagepath --fontsize" 1 "" "Bandage error: --fontsize must be followed by an integer"
+test_all "$bandagepath --edgecol" 1 "" "Bandage error: --edgecol must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --edgecol abc" 1 "" "Bandage error: --edgecol must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --outcol" 1 "" "Bandage error: --outcol must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --outline" 1 "" "Bandage error: --outline must be followed by a number"
+test_all "$bandagepath --selcol" 1 "" "Bandage error: --selcol must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --textcol" 1 "" "Bandage error: --textcol must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --toutcol" 1 "" "Bandage error: --toutcol must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --toutline" 1 "" "Bandage error: --toutline must be followed by a number"
+test_all "$bandagepath --colour" 1 "" "Bandage error: --colour must be followed by random, uniform, depth, blastsolid or blastrainbow"
+test_all "$bandagepath --colour abc" 1 "" "Bandage error: --colour must be followed by random, uniform, depth, blastsolid or blastrainbow"
+test_all "$bandagepath --ransatpos" 1 "" "Bandage error: --ransatpos must be followed by an integer"
+test_all "$bandagepath --ransatneg" 1 "" "Bandage error: --ransatneg must be followed by an integer"
+test_all "$bandagepath --ranligpos" 1 "" "Bandage error: --ranligpos must be followed by an integer"
+test_all "$bandagepath --ranligneg" 1 "" "Bandage error: --ranligneg must be followed by an integer"
+test_all "$bandagepath --ranopapos" 1 "" "Bandage error: --ranopapos must be followed by an integer"
+test_all "$bandagepath --ranopaneg" 1 "" "Bandage error: --ranopaneg must be followed by an integer"
+test_all "$bandagepath --unicolpos" 1 "" "Bandage error: --unicolpos must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --unicolneg" 1 "" "Bandage error: --unicolneg must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --unicolspe" 1 "" "Bandage error: --unicolspe must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --depcollow" 1 "" "Bandage error: --depcollow must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --depcolhi" 1 "" "Bandage error: --depcolhi must be followed by a 6-digit hex colour (e.g. #FFB6C1), an 8-digit hex colour (e.g. #7FD2B48C) or a standard colour name (e.g. skyblue)"
+test_all "$bandagepath --depvallow" 1 "" "Bandage error: --depvallow must be followed by a number"
+test_all "$bandagepath --depvalhi" 1 "" "Bandage error: --depvalhi must be followed by a number"
+test_all "$bandagepath --query" 1 "" "Bandage error: A graph must be given (e.g. via Bandage load) to use the --query option"
+test_all "$bandagepath --blastp" 1 "" "Bandage error: --blastp must be followed by blastn/tblastn parameters"
+test_all "$bandagepath --alfilter" 1 "" "Bandage error: --alfilter must be followed by an integer"
+test_all "$bandagepath --qcfilter" 1 "" "Bandage error: --qcfilter must be followed by a number"
+test_all "$bandagepath --ifilter" 1 "" "Bandage error: --ifilter must be followed by a number"
+test_all "$bandagepath --evfilter" 1 "" "Bandage error: --evfilter must be followed by a number in scientific notation"
+test_all "$bandagepath --evfilter abc" 1 "" "Bandage error: --evfilter must be followed by a number in scientific notation"
+test_all "$bandagepath --evfilter 1" 1 "" "Bandage error: --evfilter must be followed by a number in scientific notation"
+test_all "$bandagepath --evfilter 1.0" 1 "" "Bandage error: --evfilter must be followed by a number in scientific notation"
+test_all "$bandagepath --evfilter e1" 1 "" "Bandage error: --evfilter must be followed by a number in scientific notation"
+test_all "$bandagepath --bsfilter" 1 "" "Bandage error: --bsfilter must be followed by a number"
+test_all "$bandagepath --pathnodes" 1 "" "Bandage error: --pathnodes must be followed by an integer"
+test_all "$bandagepath --minpatcov" 1 "" "Bandage error: --minpatcov must be followed by a number"
+test_all "$bandagepath --minhitcov" 1 "" "Bandage error: --minhitcov must be followed by a number"
+test_all "$bandagepath --minmeanid" 1 "" "Bandage error: --minmeanid must be followed by a number"
+test_all "$bandagepath --minpatlen" 1 "" "Bandage error: --minpatlen must be followed by a number"
+test_all "$bandagepath --maxpatlen" 1 "" "Bandage error: --maxpatlen must be followed by a number"
+test_all "$bandagepath --minlendis" 1 "" "Bandage error: --minlendis must be followed by an integer"
+test_all "$bandagepath --maxlendis" 1 "" "Bandage error: --maxlendis must be followed by an integer"
+test_all "$bandagepath --maxevprod" 1 "" "Bandage error: --maxevprod must be followed by a number in scientific notation"
+
+
+
+
+
+
+rmdir tmp
\ No newline at end of file
diff --git a/tests/bandagetests.cpp b/tests/bandagetests.cpp
new file mode 100644
index 0000000..388cd42
--- /dev/null
+++ b/tests/bandagetests.cpp
@@ -0,0 +1,1589 @@
+//Copyright 2015 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include <QtTest/QtTest>
+#include <QDebug>
+#include "ogdf/basic/Graph.h"
+#include "ogdf/basic/GraphAttributes.h"
+#include "../graph/assemblygraph.h"
+#include "../program/settings.h"
+#include "../blast/blastsearch.h"
+#include "../ui/mygraphicsview.h"
+#include "../program/memory.h"
+#include "../graph/debruijnnode.h"
+#include "../graph/debruijnedge.h"
+#include "../program/globals.h"
+#include "../command_line/commoncommandlinefunctions.h"
+
+class BandageTests : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void loadFastg();
+    void loadLastGraph();
+    void loadTrinity();
+    void pathFunctionsOnLastGraph();
+    void pathFunctionsOnFastg();
+    void pathFunctionsOnGfaSequencesInGraph();
+    void pathFunctionsOnGfaSequencesInFasta();
+    void graphLocationFunctions();
+    void loadCsvData();
+    void loadCsvDataTrinity();
+    void blastSearch();
+    void blastSearchFilters();
+    void graphScope();
+    void commandLineSettings();
+    void sciNotComparisons();
+    void graphEdits();
+    void velvetToGfa();
+    void spadesToGfa();
+    void mergeNodesOnGfa();
+    void changeNodeNames();
+    void changeNodeDepths();
+    void blastQueryPaths();
+    void bandageInfo();
+
+
+private:
+    void createGlobals();
+    bool createBlastTempDirectory();
+    void deleteBlastTempDirectory();
+    QString getTestDirectory();
+    DeBruijnEdge * getEdgeFromNodeNames(QString startingNodeName,
+                                        QString endingNodeName);
+    bool doCircularSequencesMatch(QByteArray s1, QByteArray s2);
+};
+
+
+
+
+void BandageTests::loadFastg()
+{
+    createGlobals();
+    bool fastgGraphLoaded = g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    //Check that the graph loaded properly.
+    QCOMPARE(fastgGraphLoaded, true);
+
+    //Check that the appropriate number of nodes/edges are present.
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 88);
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphEdges.size(), 118);
+
+    //Check the length of a couple nodes.
+    DeBruijnNode * node1 = g_assemblyGraph->m_deBruijnGraphNodes["1+"];
+    DeBruijnNode * node28 = g_assemblyGraph->m_deBruijnGraphNodes["28-"];
+    QCOMPARE(node1->getLength(), 6070);
+    QCOMPARE(node28->getLength(), 79);
+}
+
+
+void BandageTests::loadLastGraph()
+{
+    createGlobals();
+    bool lastGraphLoaded = g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.LastGraph");
+
+    //Check that the graph loaded properly.
+    QCOMPARE(lastGraphLoaded, true);
+
+    //Check that the appropriate number of nodes/edges are present.
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 34);
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphEdges.size(), 32);
+
+    //Check the length of a couple nodes.
+    DeBruijnNode * node1 = g_assemblyGraph->m_deBruijnGraphNodes["1+"];
+    DeBruijnNode * node14 = g_assemblyGraph->m_deBruijnGraphNodes["14-"];
+    QCOMPARE(node1->getLength(), 2000);
+    QCOMPARE(node14->getLength(), 60);
+}
+
+
+
+void BandageTests::loadTrinity()
+{
+    createGlobals();
+    bool trinityLoaded = g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.Trinity.fasta");
+
+    //Check that the graph loaded properly.
+    QCOMPARE(trinityLoaded, true);
+
+    //Check that the appropriate number of nodes/edges are present.
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 1170);
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphEdges.size(), 1056);
+
+    //Check the length of a couple nodes.
+    DeBruijnNode * node10241 = g_assemblyGraph->m_deBruijnGraphNodes["4|c4_10241+"];
+    DeBruijnNode * node3901 = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3901-"];
+    QCOMPARE(node10241->getLength(), 1186);
+    QCOMPARE(node3901->getLength(), 1);
+}
+
+
+//LastGraph files have no overlap in the edges, so these tests look at paths
+//where the connections are simple.
+void BandageTests::pathFunctionsOnLastGraph()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.LastGraph");
+
+    QString pathStringFailure;
+    Path testPath1 = Path::makeFromString("(1996) 9+, 13+ (5)", false, &pathStringFailure);
+    Path testPath2 = Path::makeFromString("(1996) 9+, 13+ (5)", false, &pathStringFailure);
+    Path testPath3 = Path::makeFromString("(1996) 9+, 13+ (6)", false, &pathStringFailure);
+    Path testPath4 = Path::makeFromString("9+, 13+, 14-", false, &pathStringFailure);
+
+    DeBruijnNode * node4Minus = g_assemblyGraph->m_deBruijnGraphNodes["4-"];
+    DeBruijnNode * node9Plus = g_assemblyGraph->m_deBruijnGraphNodes["9+"];
+    DeBruijnNode * node13Plus = g_assemblyGraph->m_deBruijnGraphNodes["13+"];
+    DeBruijnNode * node14Minus = g_assemblyGraph->m_deBruijnGraphNodes["14+"];
+    DeBruijnNode * node7Plus = g_assemblyGraph->m_deBruijnGraphNodes["7+"];
+
+    QCOMPARE(testPath1.getLength(), 10);
+    QCOMPARE(testPath1.getPathSequence(), QByteArray("GACCTATAGA"));
+    QCOMPARE(testPath1.isEmpty(), false);
+    QCOMPARE(testPath1.isCircular(), false);
+    QCOMPARE(testPath1 == testPath2, true);
+    QCOMPARE(testPath1 == testPath3, false);
+    QCOMPARE(testPath1.haveSameNodes(testPath3), true);
+    QCOMPARE(testPath1.hasNodeSubset(testPath4), true);
+    QCOMPARE(testPath4.hasNodeSubset(testPath1), false);
+    QCOMPARE(testPath1.getString(true), QString("(1996) 9+, 13+ (5)"));
+    QCOMPARE(testPath1.getString(false), QString("(1996)9+,13+(5)"));
+    QCOMPARE(testPath4.getString(true), QString("9+, 13+, 14-"));
+    QCOMPARE(testPath4.getString(false), QString("9+,13+,14-"));
+    QCOMPARE(testPath1.containsEntireNode(node13Plus), false);
+    QCOMPARE(testPath4.containsEntireNode(node13Plus), true);
+    QCOMPARE(testPath4.isInMiddleOfPath(node13Plus), true);
+    QCOMPARE(testPath4.isInMiddleOfPath(node14Minus), false);
+    QCOMPARE(testPath4.isInMiddleOfPath(node9Plus), false);
+
+    Path testPath4Extended;
+    QCOMPARE(testPath4.canNodeFitOnEnd(node7Plus, &testPath4Extended), true);
+    QCOMPARE(testPath4Extended.getString(true), QString("9+, 13+, 14-, 7+"));
+    QCOMPARE(testPath4.canNodeFitAtStart(node4Minus, &testPath4Extended), true);
+    QCOMPARE(testPath4Extended.getString(true), QString("4-, 9+, 13+, 14-"));
+}
+
+
+
+//FASTG files have overlaps in the edges, so these tests look at paths where
+//the overlap has to be removed from the path sequence.
+void BandageTests::pathFunctionsOnFastg()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    QString pathStringFailure;
+    Path testPath1 = Path::makeFromString("(50234) 6+, 26+, 23+, 26+, 24+ (200)", false, &pathStringFailure);
+    Path testPath2 = Path::makeFromString("26+, 23+", true, &pathStringFailure);
+    QCOMPARE(testPath1.getLength(), 1764);
+    QCOMPARE(testPath2.getLength(), 1387);
+    QCOMPARE(testPath1.isCircular(), false);
+    QCOMPARE(testPath2.isCircular(), true);
+}
+
+
+//This function tests paths on a GFA file which keeps its sequences in the GFA
+//file.
+void BandageTests::pathFunctionsOnGfaSequencesInGraph()
+{
+    createGlobals();
+    bool gfaLoaded = g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test_plasmids.gfa");
+    QCOMPARE(gfaLoaded, true);
+
+    //Check that the number of nodes/edges.
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 18);
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphEdges.size(), 24);
+
+    //Check a couple short paths.
+    QString pathStringFailure;
+
+    Path testPath1 = Path::makeFromString("232+, 277+", false, &pathStringFailure);
+    QByteArray testPath1Sequence = "CCTTATACGAAGCCCAGGTTAATCCTGGGCTTTTTGTTGAATCTGATCATTGGTAGCAAACAGATCAGGATTGGTAATTTTGATGTTTTCCTGACAACTCCTGCAAAGCATCAGCCCAGCAAAAAGTTGTACATGTTCCGTTGATTCACAGAAGGCACATGGCTTAGGAAAAGAGATGATATTGGCTGAATTGACTAATTCTGTTGACATAAGAAGTAACCTTGGATTGTACATATTTATTTTTAATAAATTTCAATACTTTATACCTAATTTAGCCACTAAAATTTGTACATTATTGTATAATCCATGTGTACATATTATTTTTTATAATTTTCATTCACTTAGACCCAAAATAGTATTTATTTTTGTACAACACCATGTACAGAACAATAATCATATAAATCAAATTTTTAGCATAAAAAAGTCCATTAATTTTGTACACAATTCTGAAACTTA [...]
+    Path testPath2 = Path::makeFromString("277-, 232-", false, &pathStringFailure);
+    QByteArray testPath2Sequence = "GCCCTTGGTTTTCGCTTCGCTCAAACTCTATTGAACTTCGCTTTCGCTCAGTTCGTCGGGGCAATTTTTTGGTTAATACTTGCGTGACTTTAAGAAAAAGCAAAAGCAACTCGGAATTCGCTTCGCTCATGAGCTTTTTTTCTCGCTACGCTCGGTCCAGGAGCAAATTTCTGCATGAAAATTAAGCTTTCTTAGGCTAAAGAGGGCAAAAAAATGTTTTTCAGAGAGTCTAGACGCAAATTTTGATAGTTCGCTCGTAGACACTCGCTCTATGCAGCTATCTAAAGTCAAAACATCTCTTTACTTCACTCTCTTTTGCGTTTTTTGAGCTGTTTTCTGTTTTTCGCTATAAGATCTATGTTTTTTAGATAAAGGCTCTTAAATCGCATTTGAATGCTTTCTGTGAAGCTTTTCATAATTAAAGTTTTAGGTTGAAATTTTTAACCTGGATGAATG [...]
+    QCOMPARE(testPath1.getPathSequence(), testPath1Sequence);
+    QCOMPARE(testPath2.getPathSequence(), testPath2Sequence);
+}
+
+
+//This function tests paths on a GFA file which keeps its sequences in a
+//separate FASTA file.
+void BandageTests::pathFunctionsOnGfaSequencesInFasta()
+{
+    createGlobals();
+    bool gfaLoaded = g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test_plasmids_separate_sequences.gfa");
+    QCOMPARE(gfaLoaded, true);
+
+    //Check that the number of nodes/edges.
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 18);
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphEdges.size(), 24);
+
+    //Since a node sequence hasn't be required yet, the nodes should still have
+    //just '*' for their sequence. But they should still report the correct
+    //length.
+    DeBruijnNode * node282Plus = g_assemblyGraph->m_deBruijnGraphNodes["282+"];
+    DeBruijnNode * node282Minus = g_assemblyGraph->m_deBruijnGraphNodes["282-"];
+    QCOMPARE(node282Plus->sequenceIsMissing(), true);
+    QCOMPARE(node282Minus->sequenceIsMissing(), true);
+    QCOMPARE(node282Plus->getLength(), 1819);
+    QCOMPARE(node282Minus->getLength(), 1819);
+
+    //Check a couple short paths.
+    QString pathStringFailure;
+    Path testPath1 = Path::makeFromString("232+, 277+", false, &pathStringFailure);
+    QByteArray testPath1Sequence = "CCTTATACGAAGCCCAGGTTAATCCTGGGCTTTTTGTTGAATCTGATCATTGGTAGCAAACAGATCAGGATTGGTAATTTTGATGTTTTCCTGACAACTCCTGCAAAGCATCAGCCCAGCAAAAAGTTGTACATGTTCCGTTGATTCACAGAAGGCACATGGCTTAGGAAAAGAGATGATATTGGCTGAATTGACTAATTCTGTTGACATAAGAAGTAACCTTGGATTGTACATATTTATTTTTAATAAATTTCAATACTTTATACCTAATTTAGCCACTAAAATTTGTACATTATTGTATAATCCATGTGTACATATTATTTTTTATAATTTTCATTCACTTAGACCCAAAATAGTATTTATTTTTGTACAACACCATGTACAGAACAATAATCATATAAATCAAATTTTTAGCATAAAAAAGTCCATTAATTTTGTACACAATTCTGAAACTTA [...]
+    Path testPath2 = Path::makeFromString("277-, 232-", false, &pathStringFailure);
+    QByteArray testPath2Sequence = "GCCCTTGGTTTTCGCTTCGCTCAAACTCTATTGAACTTCGCTTTCGCTCAGTTCGTCGGGGCAATTTTTTGGTTAATACTTGCGTGACTTTAAGAAAAAGCAAAAGCAACTCGGAATTCGCTTCGCTCATGAGCTTTTTTTCTCGCTACGCTCGGTCCAGGAGCAAATTTCTGCATGAAAATTAAGCTTTCTTAGGCTAAAGAGGGCAAAAAAATGTTTTTCAGAGAGTCTAGACGCAAATTTTGATAGTTCGCTCGTAGACACTCGCTCTATGCAGCTATCTAAAGTCAAAACATCTCTTTACTTCACTCTCTTTTGCGTTTTTTGAGCTGTTTTCTGTTTTTCGCTATAAGATCTATGTTTTTTAGATAAAGGCTCTTAAATCGCATTTGAATGCTTTCTGTGAAGCTTTTCATAATTAAAGTTTTAGGTTGAAATTTTTAACCTGGATGAATG [...]
+
+    //Check the paths sequences. Doing so will trigger the loading of node
+    //sequences from the FASTA file.
+    QCOMPARE(testPath1.getPathSequence(), testPath1Sequence);
+    QCOMPARE(testPath2.getPathSequence(), testPath2Sequence);
+
+    //Now that the paths have been accessed, the node sequences should be
+    //loaded (even the ones not in the path).
+    QCOMPARE(node282Plus->sequenceIsMissing(), false);
+    QCOMPARE(node282Minus->sequenceIsMissing(), false);
+    QCOMPARE(node282Plus->getLength(), 1819);
+    QCOMPARE(node282Minus->getLength(), 1819);
+}
+
+
+void BandageTests::graphLocationFunctions()
+{
+    //First do some tests with a FASTG, where the overlap results in a simpler
+    //sitations: all positions have a reverse complement position in the
+    //reverse complement node.
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+    DeBruijnNode * node12Plus = g_assemblyGraph->m_deBruijnGraphNodes["12+"];
+    DeBruijnNode * node3Plus = g_assemblyGraph->m_deBruijnGraphNodes["3+"];
+
+    GraphLocation location1(node12Plus, 1);
+    GraphLocation revCompLocation1 = location1.reverseComplementLocation();
+
+    QCOMPARE(location1.getBase(), 'C');
+    QCOMPARE(revCompLocation1.getBase(), 'G');
+    QCOMPARE(revCompLocation1.getPosition(), 394);
+
+    GraphLocation location2 = GraphLocation::endOfNode(node3Plus);
+    QCOMPARE(location2.getPosition(), 5869);
+
+    location2.moveLocation(-1);
+    QCOMPARE(location2.getPosition(), 5868);
+
+    location2.moveLocation(2);
+    QCOMPARE(location2.getNode()->getName(), QString("38-"));
+    QCOMPARE(location2.getPosition(), 1);
+
+    GraphLocation location3;
+    QCOMPARE(location2.isNull(), false);
+    QCOMPARE(location3.isNull(), true);
+
+    //Now look at a LastGraph file which is more complex.  Because of the
+    //offset, reverse complement positions can be in different nodes and may
+    //not even exist.
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.LastGraph");
+    int kmer = g_assemblyGraph->m_kmer;
+    DeBruijnNode * node13Plus = g_assemblyGraph->m_deBruijnGraphNodes["13+"];
+    DeBruijnNode * node8Minus = g_assemblyGraph->m_deBruijnGraphNodes["8-"];
+
+    GraphLocation location4 = GraphLocation::startOfNode(node13Plus);
+    QCOMPARE(location4.getBase(), 'A');
+    QCOMPARE(location4.getPosition(), 1);
+
+    GraphLocation revCompLocation4 = location4.reverseComplementLocation();
+    QCOMPARE(revCompLocation4.getBase(), 'T');
+    QCOMPARE(revCompLocation4.getNode()->getName(), QString("13-"));
+    QCOMPARE(revCompLocation4.getPosition(), node13Plus->getLength() - kmer + 1);
+
+    GraphLocation location5 = GraphLocation::endOfNode(node8Minus);
+    GraphLocation location6 = location5;
+    location6.moveLocation(-60);
+    GraphLocation revCompLocation5 = location5.reverseComplementLocation();
+    GraphLocation revCompLocation6 = location6.reverseComplementLocation();
+    QCOMPARE(revCompLocation5.isNull(), true);
+    QCOMPARE(revCompLocation6.isNull(), false);
+    QCOMPARE(revCompLocation6.getNode()->getName(), QString("8+"));
+    QCOMPARE(revCompLocation6.getPosition(), 1);
+}
+
+
+
+void BandageTests::loadCsvData()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    QString errormsg;
+    QStringList columns;
+    bool coloursLoaded = false;
+    g_assemblyGraph->loadCSV(getTestDirectory() + "test.csv", &columns, &errormsg, &coloursLoaded);
+
+    DeBruijnNode * node6Plus = g_assemblyGraph->m_deBruijnGraphNodes["6+"];
+    DeBruijnNode * node6Minus = g_assemblyGraph->m_deBruijnGraphNodes["6-"];
+    DeBruijnNode * node7Plus = g_assemblyGraph->m_deBruijnGraphNodes["7+"];
+    DeBruijnNode * node4Plus = g_assemblyGraph->m_deBruijnGraphNodes["4+"];
+    DeBruijnNode * node4Minus = g_assemblyGraph->m_deBruijnGraphNodes["4-"];
+    DeBruijnNode * node3Plus = g_assemblyGraph->m_deBruijnGraphNodes["3+"];
+    DeBruijnNode * node5Minus = g_assemblyGraph->m_deBruijnGraphNodes["5-"];
+    DeBruijnNode * node8Plus = g_assemblyGraph->m_deBruijnGraphNodes["8+"];
+    DeBruijnNode * node9Plus = g_assemblyGraph->m_deBruijnGraphNodes["9+"];
+
+    QCOMPARE(columns.size(), 3);
+    QCOMPARE(errormsg, QString("There were 2 unmatched entries in the CSV."));
+
+    QCOMPARE(node6Plus->getCsvLine(0), QString("SIX_PLUS"));
+    QCOMPARE(node6Plus->getCsvLine(1), QString("6plus"));
+    QCOMPARE(node6Plus->getCsvLine(2), QString("plus6"));
+    QCOMPARE(node9Plus->getCsvLine(3), QString(""));
+    QCOMPARE(node9Plus->getCsvLine(25), QString(""));
+
+    QCOMPARE(node6Minus->getCsvLine(0), QString("SIX_MINUS"));
+    QCOMPARE(node6Minus->getCsvLine(1), QString("6minus"));
+    QCOMPARE(node6Minus->getCsvLine(2), QString("minus6"));
+
+    QCOMPARE(node7Plus->getCsvLine(0), QString("SEVEN_PLUS"));
+    QCOMPARE(node7Plus->getCsvLine(1), QString("7plus"));
+    QCOMPARE(node7Plus->getCsvLine(2), QString("plus7"));
+
+    QCOMPARE(node4Plus->getCsvLine(0), QString("FOUR_PLUS"));
+    QCOMPARE(node4Plus->getCsvLine(1), QString("4plus"));
+    QCOMPARE(node4Plus->getCsvLine(2), QString("plus4"));
+
+    QCOMPARE(node4Minus->getCsvLine(0), QString("FOUR_MINUS"));
+    QCOMPARE(node4Minus->getCsvLine(1), QString("4minus"));
+    QCOMPARE(node4Minus->getCsvLine(2), QString("minus4"));
+
+    QCOMPARE(node3Plus->getCsvLine(0), QString("THREE_PLUS"));
+    QCOMPARE(node3Plus->getCsvLine(1), QString("3plus"));
+    QCOMPARE(node3Plus->getCsvLine(2), QString("plus3"));
+
+    QCOMPARE(node5Minus->getCsvLine(0), QString("FIVE_MINUS"));
+    QCOMPARE(node5Minus->getCsvLine(1), QString(""));
+    QCOMPARE(node5Minus->getCsvLine(2), QString(""));
+
+    QCOMPARE(node8Plus->getCsvLine(0), QString("EIGHT_PLUS"));
+    QCOMPARE(node8Plus->getCsvLine(1), QString("8plus"));
+    QCOMPARE(node8Plus->getCsvLine(2), QString("plus8"));
+
+    QCOMPARE(node9Plus->getCsvLine(0), QString("NINE_PLUS"));
+    QCOMPARE(node9Plus->getCsvLine(1), QString("9plus"));
+    QCOMPARE(node9Plus->getCsvLine(2), QString("plus9"));
+    QCOMPARE(node9Plus->getCsvLine(3), QString(""));
+    QCOMPARE(node9Plus->getCsvLine(4), QString(""));
+    QCOMPARE(node9Plus->getCsvLine(5), QString(""));
+}
+
+
+void BandageTests::loadCsvDataTrinity()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.Trinity.fasta");
+
+    QString errormsg;
+    QStringList columns;
+    bool coloursLoaded = false;
+    g_assemblyGraph->loadCSV(getTestDirectory() + "test.Trinity.csv", &columns, &errormsg, &coloursLoaded);
+
+    DeBruijnNode * node3912Plus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3912+"];
+    DeBruijnNode * node3912Minus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3912-"];
+    DeBruijnNode * node3914Plus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3914+"];
+    DeBruijnNode * node3915Plus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3915+"];
+    DeBruijnNode * node3923Plus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3923+"];
+    DeBruijnNode * node3924Plus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3924+"];
+    DeBruijnNode * node3940Plus = g_assemblyGraph->m_deBruijnGraphNodes["19|c0_3940+"];
+
+    QCOMPARE(columns.size(), 1);
+
+    QCOMPARE(node3912Plus->getCsvLine(0), QString("3912PLUS"));
+    QCOMPARE(node3912Minus->getCsvLine(0), QString("3912MINUS"));
+    QCOMPARE(node3914Plus->getCsvLine(0), QString("3914PLUS"));
+    QCOMPARE(node3915Plus->getCsvLine(0), QString("3915PLUS"));
+    QCOMPARE(node3923Plus->getCsvLine(0), QString("3923PLUS"));
+    QCOMPARE(node3924Plus->getCsvLine(0), QString("3924PLUS"));
+    QCOMPARE(node3940Plus->getCsvLine(0), QString("3940PLUS"));
+}
+
+void BandageTests::blastSearch()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+    g_settings->blastQueryFilename = getTestDirectory() + "test_queries1.fasta";
+    createBlastTempDirectory();
+
+    g_blastSearch->doAutoBlastSearch();
+
+    BlastQuery * exact = g_blastSearch->m_blastQueries.getQueryFromName("test_query_exact");
+    BlastQuery * one_mismatch = g_blastSearch->m_blastQueries.getQueryFromName("test_query_one_mismatch");
+    BlastQuery * one_insertion = g_blastSearch->m_blastQueries.getQueryFromName("test_query_one_insertion");
+    BlastQuery * one_deletion = g_blastSearch->m_blastQueries.getQueryFromName("test_query_one_deletion");
+
+    QCOMPARE(exact->getLength(), 100);
+    QCOMPARE(one_mismatch->getLength(), 100);
+    QCOMPARE(one_insertion->getLength(), 101);
+    QCOMPARE(one_deletion->getLength(), 99);
+
+    QSharedPointer<BlastHit> exactHit = exact->getHits().at(0);
+    QSharedPointer<BlastHit> one_mismatchHit = one_mismatch->getHits().at(0);
+    QSharedPointer<BlastHit> one_insertionHit = one_insertion->getHits().at(0);
+    QSharedPointer<BlastHit> one_deletionHit = one_deletion->getHits().at(0);
+
+    QCOMPARE(exactHit->m_numberMismatches, 0);
+    QCOMPARE(exactHit->m_numberGapOpens, 0);
+    QCOMPARE(one_mismatchHit->m_numberMismatches, 1);
+    QCOMPARE(one_mismatchHit->m_numberGapOpens, 0);
+    QCOMPARE(one_insertionHit->m_numberMismatches, 0);
+    QCOMPARE(one_insertionHit->m_numberGapOpens, 1);
+    QCOMPARE(one_deletionHit->m_numberMismatches, 0);
+    QCOMPARE(one_deletionHit->m_numberGapOpens, 1);
+
+    QCOMPARE(exactHit->m_percentIdentity < 100.0, false);
+    QCOMPARE(one_mismatchHit->m_percentIdentity < 100.0, true);
+    QCOMPARE(one_insertionHit->m_percentIdentity < 100.0, true);
+    QCOMPARE(one_deletionHit->m_percentIdentity < 100.0, true);
+
+    deleteBlastTempDirectory();
+}
+
+
+
+void BandageTests::blastSearchFilters()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+    g_settings->blastQueryFilename = getTestDirectory() + "test_queries2.fasta";
+    createBlastTempDirectory();
+
+    //First do the search with no filters
+    g_blastSearch->doAutoBlastSearch();
+    int unfilteredHitCount = g_blastSearch->m_allHits.size();
+
+    //Now filter by e-value.
+    g_settings->blastEValueFilter.on = true;
+    g_settings->blastEValueFilter = SciNot(1.0, -5);
+    g_blastSearch->doAutoBlastSearch();
+    QCOMPARE(g_blastSearch->m_allHits.size(), 14);
+    QCOMPARE(g_blastSearch->m_allHits.size() < unfilteredHitCount, true);
+
+    //Now add a bit score filter.
+    g_settings->blastBitScoreFilter.on = true;
+    g_settings->blastBitScoreFilter = 100.0;
+    g_blastSearch->doAutoBlastSearch();
+    QCOMPARE(g_blastSearch->m_allHits.size(), 9);
+
+    //Now add an alignment length filter.
+    g_settings->blastAlignmentLengthFilter.on = true;
+    g_settings->blastAlignmentLengthFilter = 100;
+    g_blastSearch->doAutoBlastSearch();
+    QCOMPARE(g_blastSearch->m_allHits.size(), 8);
+
+    //Now add an identity filter.
+    g_settings->blastIdentityFilter.on = true;
+    g_settings->blastIdentityFilter = 50.0;
+    g_blastSearch->doAutoBlastSearch();
+    QCOMPARE(g_blastSearch->m_allHits.size(), 7);
+
+    //Now add a query coverage filter.
+    g_settings->blastQueryCoverageFilter.on = true;
+    g_settings->blastQueryCoverageFilter = 90.0;
+    g_blastSearch->doAutoBlastSearch();
+    QCOMPARE(g_blastSearch->m_allHits.size(), 5);
+
+    deleteBlastTempDirectory();
+}
+
+
+
+void BandageTests::graphScope()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    QString errorTitle;
+    QString errorMessage;
+    int drawnNodes;
+    std::vector<DeBruijnNode *> startingNodes;
+
+    g_settings->graphScope = WHOLE_GRAPH;
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 44);
+
+    g_settings->graphScope = WHOLE_GRAPH;
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = true;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 88);
+
+    g_settings->graphScope = AROUND_NODE;
+    g_settings->startingNodes = "1";
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 1);
+
+    g_settings->graphScope = AROUND_NODE;
+    g_settings->startingNodes = "1";
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = true;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 2);
+
+    g_settings->graphScope = AROUND_NODE;
+    g_settings->startingNodes = "1+";
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = true;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 1);
+
+    g_settings->graphScope = AROUND_NODE;
+    g_settings->startingNodes = "1";
+    g_settings->nodeDistance = 1;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 3);
+
+    g_settings->graphScope = AROUND_NODE;
+    g_settings->startingNodes = "1";
+    g_settings->nodeDistance = 2;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 10);
+
+    g_settings->graphScope = DEPTH_RANGE;
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = false;
+    g_settings->minDepthRange = 0.0;
+    g_settings->maxDepthRange = 211.0;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 43);
+
+    g_settings->graphScope = DEPTH_RANGE;
+    g_settings->nodeDistance = 10;
+    g_settings->doubleMode = false;
+    g_settings->minDepthRange = 0.0;
+    g_settings->maxDepthRange = 211.0;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 43);
+
+    g_settings->graphScope = DEPTH_RANGE;
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = false;
+    g_settings->minDepthRange = 211.0;
+    g_settings->maxDepthRange = 1000.0;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 1);
+
+    g_settings->graphScope = DEPTH_RANGE;
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = false;
+    g_settings->minDepthRange = 40.0;
+    g_settings->maxDepthRange = 211.0;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 42);
+
+    createBlastTempDirectory();
+
+    g_settings->blastQueryFilename = getTestDirectory() + "test_queries1.fasta";
+    g_blastSearch->doAutoBlastSearch();
+
+    g_settings->graphScope = AROUND_BLAST_HITS;
+    g_settings->nodeDistance = 0;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "all");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 1);
+
+    g_settings->graphScope = AROUND_BLAST_HITS;
+    g_settings->nodeDistance = 1;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "all");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 3);
+
+    g_settings->graphScope = AROUND_BLAST_HITS;
+    g_settings->nodeDistance = 2;
+    g_settings->doubleMode = false;
+    startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage, g_settings->doubleMode, g_settings->startingNodes, "all");
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    g_assemblyGraph->layoutGraph();
+    drawnNodes = g_assemblyGraph->getDrawnNodeCount();
+    QCOMPARE(drawnNodes, 9);
+
+    deleteBlastTempDirectory();
+}
+
+void BandageTests::commandLineSettings()
+{
+    createGlobals();
+    QStringList commandLineSettings;
+
+    commandLineSettings = QString("--scope entire").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->graphScope, WHOLE_GRAPH);
+
+    commandLineSettings = QString("--scope aroundnodes").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->graphScope, AROUND_NODE);
+
+    commandLineSettings = QString("--scope aroundblast").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->graphScope, AROUND_BLAST_HITS);
+
+    commandLineSettings = QString("--scope depthrange").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->graphScope, DEPTH_RANGE);
+
+    commandLineSettings = QString("--nodes 5+").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->startingNodes, QString("5+"));
+
+    commandLineSettings = QString("--nodes 1,2,3").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->startingNodes, QString("1,2,3"));
+
+    QCOMPARE(g_settings->startingNodesExactMatch, true);
+    commandLineSettings = QString("--partial").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->startingNodesExactMatch, false);
+
+    commandLineSettings = QString("--distance 12").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeDistance.val, 12);
+
+    commandLineSettings = QString("--mindepth 1.2").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minDepthRange.val, 1.2);
+
+    commandLineSettings = QString("--maxdepth 2.1").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxDepthRange.val, 2.1);
+
+    QCOMPARE(g_settings->doubleMode, false);
+    commandLineSettings = QString("--double").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->doubleMode, true);
+
+    QCOMPARE(g_settings->nodeLengthMode, AUTO_NODE_LENGTH);
+    commandLineSettings = QString("--nodelen 10000").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeLengthMode, MANUAL_NODE_LENGTH);
+    QCOMPARE(g_settings->manualNodeLengthPerMegabase.val, 10000.0);
+
+    commandLineSettings = QString("--iter 1").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->graphLayoutQuality.val, 1);
+
+    commandLineSettings = QString("--nodewidth 4.2").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->averageNodeWidth.val, 4.2);
+
+    commandLineSettings = QString("--depwidth 0.222").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->depthEffectOnWidth.val, 0.222);
+
+    commandLineSettings = QString("--deppower 0.72").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->depthPower.val, 0.72);
+
+    QCOMPARE(g_settings->displayNodeNames, false);
+    commandLineSettings = QString("--names").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->displayNodeNames, true);
+
+    QCOMPARE(g_settings->displayNodeLengths, false);
+    commandLineSettings = QString("--lengths").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->displayNodeLengths, true);
+
+    QCOMPARE(g_settings->displayNodeDepth, false);
+    commandLineSettings = QString("--depth").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->displayNodeDepth, true);
+
+    QCOMPARE(g_settings->displayBlastHits, false);
+    commandLineSettings = QString("--blasthits").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->displayBlastHits, true);
+
+    commandLineSettings = QString("--fontsize 5").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->labelFont.pointSize(), 5);
+
+    commandLineSettings = QString("--edgecol #00ff00").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->edgeColour.name(), QString("#00ff00"));
+
+    commandLineSettings = QString("--edgewidth 5.5").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->edgeWidth.val, 5.5);
+
+    commandLineSettings = QString("--outcol #ff0000").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->outlineColour.name(), QString("#ff0000"));
+
+    commandLineSettings = QString("--outline 0.123").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->outlineThickness.val, 0.123);
+
+    commandLineSettings = QString("--selcol tomato").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->selectionColour.name(), QString("#ff6347"));
+
+    QCOMPARE(g_settings->antialiasing, true);
+    commandLineSettings = QString("--noaa").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->antialiasing, false);
+
+    commandLineSettings = QString("--textcol #550000ff").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->textColour.name(), QString("#0000ff"));
+    QCOMPARE(g_settings->textColour.alpha(), 85);
+
+    commandLineSettings = QString("--toutcol steelblue").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(getColourName(g_settings->textOutlineColour), QString("steelblue"));
+
+    commandLineSettings = QString("--toutline 0.321").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->textOutlineThickness.val, 0.321);
+
+    QCOMPARE(g_settings->positionTextNodeCentre, false);
+    commandLineSettings = QString("--centre").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->positionTextNodeCentre, true);
+
+    commandLineSettings = QString("--colour random").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeColourScheme, RANDOM_COLOURS);
+
+    commandLineSettings = QString("--colour uniform").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeColourScheme, UNIFORM_COLOURS);
+
+    commandLineSettings = QString("--colour depth").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeColourScheme, DEPTH_COLOUR);
+
+    commandLineSettings = QString("--colour blastsolid").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeColourScheme, BLAST_HITS_SOLID_COLOUR);
+
+    commandLineSettings = QString("--colour blastrainbow").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->nodeColourScheme, BLAST_HITS_RAINBOW_COLOUR);
+
+    commandLineSettings = QString("--ransatpos 12").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->randomColourPositiveSaturation.val, 12);
+
+    commandLineSettings = QString("--ransatneg 23").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->randomColourNegativeSaturation.val, 23);
+
+    commandLineSettings = QString("--ranligpos 34").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->randomColourPositiveLightness.val, 34);
+
+    commandLineSettings = QString("--ranligneg 45").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->randomColourNegativeLightness.val, 45);
+
+    commandLineSettings = QString("--ranopapos 56").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->randomColourPositiveOpacity.val, 56);
+
+    commandLineSettings = QString("--ranopaneg 67").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->randomColourNegativeOpacity.val, 67);
+
+    commandLineSettings = QString("--unicolpos springgreen").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(getColourName(g_settings->uniformPositiveNodeColour), QString("springgreen"));
+
+    commandLineSettings = QString("--unicolneg teal").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(getColourName(g_settings->uniformNegativeNodeColour), QString("teal"));
+
+    commandLineSettings = QString("--unicolspe papayawhip").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(getColourName(g_settings->uniformNodeSpecialColour), QString("papayawhip"));
+
+    commandLineSettings = QString("--depcollow mediumorchid").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(getColourName(g_settings->lowDepthColour), QString("mediumorchid"));
+
+    commandLineSettings = QString("--depcolhi linen").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(getColourName(g_settings->highDepthColour), QString("linen"));
+
+    QCOMPARE(g_settings->autoDepthValue, true);
+    commandLineSettings = QString("--depvallow 56.7").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->lowDepthValue.val, 56.7);
+    QCOMPARE(g_settings->autoDepthValue, false);
+
+    commandLineSettings = QString("--depvalhi 67.8").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->highDepthValue.val, 67.8);
+
+    commandLineSettings = QString("--depvalhi 67.8").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->highDepthValue.val, 67.8);
+
+    commandLineSettings = QString("--query queries.fasta").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastQueryFilename, QString("queries.fasta"));
+
+    commandLineSettings = QString("--blastp --abc").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastSearchParameters, QString("--abc"));
+
+    QCOMPARE(g_settings->blastAlignmentLengthFilter.on, false);
+    commandLineSettings = QString("--alfilter 543").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastAlignmentLengthFilter.on, true);
+    QCOMPARE(g_settings->blastAlignmentLengthFilter.val, 543);
+
+    QCOMPARE(g_settings->blastQueryCoverageFilter.on, false);
+    commandLineSettings = QString("--qcfilter 67.8").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastQueryCoverageFilter.on, true);
+    QCOMPARE(g_settings->blastQueryCoverageFilter.val, 67.8);
+
+    QCOMPARE(g_settings->blastIdentityFilter.on, false);
+    commandLineSettings = QString("--ifilter 12.3").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastIdentityFilter.on, true);
+    QCOMPARE(g_settings->blastIdentityFilter.val, 12.3);
+
+    QCOMPARE(g_settings->blastEValueFilter.on, false);
+    commandLineSettings = QString("--evfilter 8.5e-14").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastEValueFilter.on, true);
+    QCOMPARE(g_settings->blastEValueFilter.val, SciNot(8.5, -14));
+    QCOMPARE(g_settings->blastEValueFilter.val.getCoefficient(), 8.5);
+    QCOMPARE(g_settings->blastEValueFilter.val.getExponent(), -14);
+
+    QCOMPARE(g_settings->blastBitScoreFilter.on, false);
+    commandLineSettings = QString("--bsfilter 1234.5").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->blastBitScoreFilter.on, true);
+    QCOMPARE(g_settings->blastBitScoreFilter.val, 1234.5);
+
+    commandLineSettings = QString("--pathnodes 3").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxQueryPathNodes.val, 3);
+
+    commandLineSettings = QString("--minpatcov 0.543").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minQueryCoveredByPath.val, 0.543);
+
+    commandLineSettings = QString("--minhitcov 0.654").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minQueryCoveredByHits.val, 0.654);
+    QCOMPARE(g_settings->minQueryCoveredByHits.on, true);
+
+    commandLineSettings = QString("--minhitcov off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minQueryCoveredByHits.on, false);
+
+    commandLineSettings = QString("--minmeanid 0.765").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minMeanHitIdentity.val, 0.765);
+    QCOMPARE(g_settings->minMeanHitIdentity.on, true);
+
+    commandLineSettings = QString("--minmeanid off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minMeanHitIdentity.on, false);
+
+    commandLineSettings = QString("--minpatlen 0.97").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minLengthPercentage.val, 0.97);
+    QCOMPARE(g_settings->minLengthPercentage.on, true);
+
+    commandLineSettings = QString("--minpatlen off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minLengthPercentage.on, false);
+
+    commandLineSettings = QString("--maxpatlen 1.03").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxLengthPercentage.val, 1.03);
+    QCOMPARE(g_settings->maxLengthPercentage.on, true);
+
+    commandLineSettings = QString("--maxpatlen off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxLengthPercentage.on, false);
+
+    commandLineSettings = QString("--minlendis -1234").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minLengthBaseDiscrepancy.val, -1234);
+    QCOMPARE(g_settings->minLengthBaseDiscrepancy.on, true);
+
+    commandLineSettings = QString("--minlendis off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->minLengthBaseDiscrepancy.on, false);
+
+    commandLineSettings = QString("--maxlendis 4321").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxLengthBaseDiscrepancy.val, 4321);
+    QCOMPARE(g_settings->maxLengthBaseDiscrepancy.on, true);
+
+    commandLineSettings = QString("--maxlendis off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxLengthBaseDiscrepancy.on, false);
+
+    commandLineSettings = QString("--maxevprod 4e-500").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxEValueProduct.val.getCoefficient(), 4.0);
+    QCOMPARE(g_settings->maxEValueProduct.val.getExponent(), -500);
+    QCOMPARE(g_settings->maxEValueProduct.on, true);
+
+    commandLineSettings = QString("--maxevprod off").split(" ");
+    parseSettings(commandLineSettings);
+    QCOMPARE(g_settings->maxEValueProduct.on, false);
+}
+
+
+void BandageTests::sciNotComparisons()
+{
+    SciNot sn01(1.0, 10);
+    SciNot sn02(10.0, 9);
+    SciNot sn03(0.1, 11);
+    SciNot sn04(5.0, 10);
+    SciNot sn05(-5.0, 15);
+    SciNot sn06(-6.0, 15);
+    SciNot sn07(-3.0, 3);
+    SciNot sn08(-0.3, 4);
+    SciNot sn09(-3.0, -3);
+    SciNot sn10(-0.3, -2);
+    SciNot sn11(1.4, 2);
+    SciNot sn12("1.4e2");
+    SciNot sn13("140");
+
+    QCOMPARE(sn01 == sn02, true);
+    QCOMPARE(sn01 == sn03, true);
+    QCOMPARE(sn01 == sn03, true);
+    QCOMPARE(sn01 >= sn03, true);
+    QCOMPARE(sn01 <= sn03, true);
+    QCOMPARE(sn01 != sn03, false);
+    QCOMPARE(sn01 < sn04, true);
+    QCOMPARE(sn01 <= sn04, true);
+    QCOMPARE(sn01 > sn04, false);
+    QCOMPARE(sn01 >= sn04, false);
+    QCOMPARE(sn04 > sn05, true);
+    QCOMPARE(sn04 < sn05, false);
+    QCOMPARE(sn06 < sn05, true);
+    QCOMPARE(sn06 <= sn05, true);
+    QCOMPARE(sn06 > sn05, false);
+    QCOMPARE(sn06 >= sn05, false);
+    QCOMPARE(sn07 == sn08, true);
+    QCOMPARE(sn07 != sn08, false);
+    QCOMPARE(sn09 == sn10, true);
+    QCOMPARE(sn09 != sn10, false);
+    QCOMPARE(sn11 == sn12, true);
+    QCOMPARE(sn11 == sn13, true);
+    QCOMPARE(sn01.asString(true), QString("1e10"));
+    QCOMPARE(sn01.asString(false), QString("1e10"));
+    QCOMPARE(sn11.asString(true), QString("1.4e2"));
+    QCOMPARE(sn11.asString(false), QString("140"));
+}
+
+
+void BandageTests::graphEdits()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 88);
+    QCOMPARE(int(g_assemblyGraph->m_deBruijnGraphEdges.size()), 118);
+
+    //Get the path sequence now to compare to the merged node sequence at the
+    //end.
+    QString pathStringFailure;
+    Path path = Path::makeFromString("6+, 26+, 23+, 26+, 24+", false, &pathStringFailure);
+    QByteArray pathSequence = path.getPathSequence();
+
+    g_assemblyGraph->duplicateNodePair(g_assemblyGraph->m_deBruijnGraphNodes["26+"], 0);
+
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 90);
+    QCOMPARE(int(g_assemblyGraph->m_deBruijnGraphEdges.size()), 126);
+
+    std::vector<DeBruijnEdge *> edgesToRemove;
+    edgesToRemove.push_back(getEdgeFromNodeNames("26_copy+", "24+"));
+    edgesToRemove.push_back(getEdgeFromNodeNames("6+", "26+"));
+    edgesToRemove.push_back(getEdgeFromNodeNames("26+", "23+"));
+    edgesToRemove.push_back(getEdgeFromNodeNames("23+", "26_copy+"));
+    g_assemblyGraph->deleteEdges(&edgesToRemove);
+
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 90);
+    QCOMPARE(int(g_assemblyGraph->m_deBruijnGraphEdges.size()), 118);
+
+    g_assemblyGraph->mergeAllPossible();
+
+    QCOMPARE(g_assemblyGraph->m_deBruijnGraphNodes.size(), 82);
+    QCOMPARE(int(g_assemblyGraph->m_deBruijnGraphEdges.size()), 110);
+
+    DeBruijnNode * mergedNode = g_assemblyGraph->m_deBruijnGraphNodes["6_26_copy_23_26_24+"];
+    QCOMPARE(pathSequence, mergedNode->getSequence());
+}
+
+
+//Saving a Velvet graph to GFA is a bit complex because the node sequence offset
+//must be filled in.  This function tests aspects of that process.
+void BandageTests::velvetToGfa()
+{
+    //First load the graph as a LastGraph and pull out some information and a
+    //circular path sequence.
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "big_test.LastGraph");
+
+    int lastGraphNodeCount = g_assemblyGraph->m_nodeCount;
+    int lastGraphEdgeCount= g_assemblyGraph->m_edgeCount;
+    long long lastGraphTotalLength = g_assemblyGraph->m_totalLength;
+    long long lastGraphShortestContig = g_assemblyGraph->m_shortestContig;
+    long long lastGraphLongestContig = g_assemblyGraph->m_longestContig;
+
+    QString pathStringFailure;
+    Path lastGraphTestPath1 = Path::makeFromString("3176-, 3176+, 4125+, 3178-, 3283+, 3180+, 3177-", true, &pathStringFailure);
+    Path lastGraphTestPath2 = Path::makeFromString("3368+, 3369+, 3230+, 3231+, 3370-, 3143+, 3144+, 3145+, 3240+, 3241+, 3788-, 3787-, 3231+, 3252+, 3241-, 3240-, 3145-, 4164-, 4220+, 3368-, 3367+", true, &pathStringFailure);
+    QByteArray lastGraphTestPath1Sequence = lastGraphTestPath1.getPathSequence();
+    QByteArray lastGraphTestPath2Sequence = lastGraphTestPath2.getPathSequence();
+
+    //Now save the graph as a GFA and reload it and grab the same information.
+    g_assemblyGraph->saveEntireGraphToGfa(getTestDirectory() + "big_test_temp.gfa");
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "big_test_temp.gfa");
+
+    int gfaNodeCount = g_assemblyGraph->m_nodeCount;
+    int gfaEdgeCount= g_assemblyGraph->m_edgeCount;
+    long long gfaTotalLength = g_assemblyGraph->m_totalLength;
+    long long gfaShortestContig = g_assemblyGraph->m_shortestContig;
+    long long gfaLongestContig = g_assemblyGraph->m_longestContig;
+
+    Path gfaTestPath1 = Path::makeFromString("3176-, 3176+, 4125+, 3178-, 3283+, 3180+, 3177-", true, &pathStringFailure);
+    Path gfaTestPath2 = Path::makeFromString("3368+, 3369+, 3230+, 3231+, 3370-, 3143+, 3144+, 3145+, 3240+, 3241+, 3788-, 3787-, 3231+, 3252+, 3241-, 3240-, 3145-, 4164-, 4220+, 3368-, 3367+", true, &pathStringFailure);
+    QByteArray gfaTestPath1Sequence = gfaTestPath1.getPathSequence();
+    QByteArray gfaTestPath2Sequence = gfaTestPath2.getPathSequence();
+
+    //Now we compare the LastGraph info to the GFA info to make sure they are
+    //the same (or appropriately different).  The k-mer size for this graph is
+    //51, so we expect each node to get 50 base pairs longer.
+    QCOMPARE(lastGraphNodeCount, gfaNodeCount);
+    QCOMPARE(lastGraphEdgeCount, gfaEdgeCount);
+    QCOMPARE(lastGraphTotalLength + 50 * lastGraphNodeCount, gfaTotalLength);
+    QCOMPARE(lastGraphShortestContig + 50, gfaShortestContig);
+    QCOMPARE(lastGraphLongestContig + 50, gfaLongestContig);
+    QCOMPARE(lastGraphTestPath1Sequence, gfaTestPath1Sequence);
+    QCOMPARE(lastGraphTestPath2Sequence, gfaTestPath2Sequence);
+
+    //Finally, delete the gfa file.
+    QFile::remove(getTestDirectory() + "big_test_temp.gfa");
+}
+
+
+void BandageTests::spadesToGfa()
+{
+    //First load the graph as a FASTG and pull out some information and a
+    //path sequence.
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    int fastgNodeCount = g_assemblyGraph->m_nodeCount;
+    int fastgEdgeCount= g_assemblyGraph->m_edgeCount;
+    long long fastgTotalLength = g_assemblyGraph->m_totalLength;
+    long long fastgShortestContig = g_assemblyGraph->m_shortestContig;
+    long long fastgLongestContig = g_assemblyGraph->m_longestContig;
+
+    QString pathStringFailure;
+    Path fastgTestPath1 = Path::makeFromString("24+, 14+, 39-, 43-, 42-, 2-, 4+, 33+, 35-, 31-, 44-, 27+, 9-, 28-, 44+, 31+, 36+", false, &pathStringFailure);
+    Path fastgTestPath2 = Path::makeFromString("16+, 7+, 13+, 37+, 41-, 40-, 42+, 43+, 39+, 14-, 22-, 20+, 7-, 25-, 32-, 38+, 3-", false, &pathStringFailure);
+    QByteArray fastgTestPath1Sequence = fastgTestPath1.getPathSequence();
+    QByteArray fastgTestPath2Sequence = fastgTestPath2.getPathSequence();
+
+    //Now save the graph as a GFA and reload it and grab the same information.
+    g_assemblyGraph->saveEntireGraphToGfa(getTestDirectory() + "test_temp.gfa");
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test_temp.gfa");
+
+    int gfaNodeCount = g_assemblyGraph->m_nodeCount;
+    int gfaEdgeCount= g_assemblyGraph->m_edgeCount;
+    long long gfaTotalLength = g_assemblyGraph->m_totalLength;
+    long long gfaShortestContig = g_assemblyGraph->m_shortestContig;
+    long long gfaLongestContig = g_assemblyGraph->m_longestContig;
+
+    Path gfaTestPath1 = Path::makeFromString("24+, 14+, 39-, 43-, 42-, 2-, 4+, 33+, 35-, 31-, 44-, 27+, 9-, 28-, 44+, 31+, 36+", false, &pathStringFailure);
+    Path gfaTestPath2 = Path::makeFromString("16+, 7+, 13+, 37+, 41-, 40-, 42+, 43+, 39+, 14-, 22-, 20+, 7-, 25-, 32-, 38+, 3-", false, &pathStringFailure);
+    QByteArray gfaTestPath1Sequence = gfaTestPath1.getPathSequence();
+    QByteArray gfaTestPath2Sequence = gfaTestPath2.getPathSequence();
+
+    //Now we compare the LastGraph info to the GFA info to make sure they are
+    //the same (or appropriately different).  The k-mer size for this graph is
+    //51, so we expect each node to get 50 base pairs longer.
+    QCOMPARE(fastgNodeCount, gfaNodeCount);
+    QCOMPARE(fastgEdgeCount, gfaEdgeCount);
+    QCOMPARE(fastgTotalLength, gfaTotalLength);
+    QCOMPARE(fastgShortestContig, gfaShortestContig);
+    QCOMPARE(fastgLongestContig, gfaLongestContig);
+    QCOMPARE(fastgTestPath1Sequence, gfaTestPath1Sequence);
+    QCOMPARE(fastgTestPath2Sequence, gfaTestPath2Sequence);
+
+    //Finally, delete the gfa file.
+    QFile::remove(getTestDirectory() + "test_temp.gfa");
+}
+
+
+void BandageTests::mergeNodesOnGfa()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test_plasmids.gfa");
+
+    DeBruijnNode * node6Plus = g_assemblyGraph->m_deBruijnGraphNodes["6+"];
+    DeBruijnNode * node280Plus = g_assemblyGraph->m_deBruijnGraphNodes["280+"];
+    DeBruijnNode * node232Minus = g_assemblyGraph->m_deBruijnGraphNodes["232-"];
+    DeBruijnNode * node333Plus = g_assemblyGraph->m_deBruijnGraphNodes["333+"];
+    DeBruijnNode * node289Plus = g_assemblyGraph->m_deBruijnGraphNodes["289+"];
+    DeBruijnNode * node283Plus = g_assemblyGraph->m_deBruijnGraphNodes["283+"];
+    DeBruijnNode * node277Plus = g_assemblyGraph->m_deBruijnGraphNodes["277+"];
+    DeBruijnNode * node297Plus = g_assemblyGraph->m_deBruijnGraphNodes["297+"];
+    DeBruijnNode * node282Plus = g_assemblyGraph->m_deBruijnGraphNodes["282+"];
+
+    //Create a path before merging the nodes.
+    QString pathStringFailure;
+    Path testPath1 = Path::makeFromString("6+, 280+, 232-, 333+, 289+, 283+", true, &pathStringFailure);
+    QByteArray path1Sequence = testPath1.getPathSequence();
+
+    int path1Length = testPath1.getLength();
+    int nodeTotalLength = node6Plus->getLength() + node280Plus->getLength() + node232Minus->getLength() +
+            node333Plus->getLength() + node289Plus->getLength() + node283Plus->getLength();
+
+    //The k-mer size in this test is 81, so the path should remove all of those overlaps.
+    QCOMPARE(path1Length, nodeTotalLength - 6 * 81);
+
+    //Now remove excess nodes.
+    std::vector<DeBruijnNode*> nodesToDelete;
+    nodesToDelete.push_back(node277Plus);
+    nodesToDelete.push_back(node297Plus);
+    nodesToDelete.push_back(node282Plus);
+    g_assemblyGraph->deleteNodes(&nodesToDelete);
+
+    //There should now be six nodes in the graph (plus complements).
+    QCOMPARE(12, g_assemblyGraph->m_deBruijnGraphNodes.size());
+
+    //After a merge, there should be only one node (and its complement).
+    g_assemblyGraph->mergeAllPossible();
+    QCOMPARE(2, g_assemblyGraph->m_deBruijnGraphNodes.size());
+
+    //That last node should have a length of its six constituent nodes, minus
+    //the overlaps.
+    DeBruijnNode * lastNode = g_assemblyGraph->m_deBruijnGraphNodes.first();
+    QCOMPARE(lastNode->getLength(), nodeTotalLength - 5 * 81);
+
+    //If we make a circular path with this node, its length should be equal to
+    //the length of the path made before.
+    Path testPath2 = Path::makeFromString(lastNode->getName(), true, &pathStringFailure);
+    QCOMPARE(path1Length, testPath2.getLength());
+
+    //The sequence of this second path should also match the sequence of the
+    //first path.
+    QByteArray path2Sequence = testPath2.getPathSequence();
+    QCOMPARE(doCircularSequencesMatch(path1Sequence, path2Sequence), true);
+}
+
+
+
+void BandageTests::changeNodeNames()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    DeBruijnNode * node6Plus = g_assemblyGraph->m_deBruijnGraphNodes["6+"];
+    DeBruijnNode * node6Minus = g_assemblyGraph->m_deBruijnGraphNodes["6-"];
+    int nodeCountBefore = g_assemblyGraph->m_deBruijnGraphNodes.size();
+
+    g_assemblyGraph->changeNodeName("6", "12345");
+
+    DeBruijnNode * node12345Plus = g_assemblyGraph->m_deBruijnGraphNodes["12345+"];
+    DeBruijnNode * node12345Minus = g_assemblyGraph->m_deBruijnGraphNodes["12345-"];
+    int nodeCountAfter = g_assemblyGraph->m_deBruijnGraphNodes.size();
+
+    QCOMPARE(node6Plus, node12345Plus);
+    QCOMPARE(node6Minus, node12345Minus);
+    QCOMPARE(nodeCountBefore, nodeCountAfter);
+}
+
+void BandageTests::changeNodeDepths()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+
+    DeBruijnNode * node6Plus = g_assemblyGraph->m_deBruijnGraphNodes["6+"];
+    DeBruijnNode * node6Minus = g_assemblyGraph->m_deBruijnGraphNodes["6-"];
+    DeBruijnNode * node7Plus = g_assemblyGraph->m_deBruijnGraphNodes["7+"];
+    DeBruijnNode * node7Minus = g_assemblyGraph->m_deBruijnGraphNodes["7-"];
+
+    std::vector<DeBruijnNode *> nodes;
+    nodes.push_back(node6Plus);
+    nodes.push_back(node7Plus);
+
+    //Complementary pairs should have the same depth.
+    QCOMPARE(node6Plus->getDepth(), node6Minus->getDepth());
+    QCOMPARE(node7Plus->getDepth(), node7Minus->getDepth());
+
+    g_assemblyGraph->changeNodeDepth(&nodes, 0.5);
+
+    //Check to make sure the change worked.
+    QCOMPARE(0.5, node6Plus->getDepth());
+    QCOMPARE(0.5, node6Minus->getDepth());
+    QCOMPARE(0.5, node7Plus->getDepth());
+    QCOMPARE(0.5, node7Minus->getDepth());
+}
+
+void BandageTests::blastQueryPaths()
+{
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test_query_paths.gfa");
+
+    Settings defaultSettings;
+    g_settings->blastQueryFilename = getTestDirectory() + "test_query_paths.fasta";
+    defaultSettings.blastQueryFilename = getTestDirectory() + "test_query_paths.fasta";
+
+    createBlastTempDirectory();
+
+    //Now filter by e-value to get only strong hits and do the BLAST search.
+    g_settings->blastEValueFilter.on = true;
+    g_settings->blastEValueFilter = SciNot(1.0, -5);
+
+    QList<BlastQueryPath> query1Paths;
+    QList<BlastQueryPath> query2Paths;
+    QList<BlastQueryPath> query3Paths;
+    QList<BlastQueryPath> query4Paths;
+    QList<BlastQueryPath> query5Paths;
+    QList<BlastQueryPath> query6Paths;
+    QList<BlastQueryPath> query7Paths;
+
+    //With the default settings, queries 1 to 5 should each have one path and
+    //queries 6 and 7 should have 0 (because of their large inserts).
+    g_blastSearch->doAutoBlastSearch();
+    query1Paths = g_blastSearch->m_blastQueries.m_queries[0]->getPaths();
+    query2Paths = g_blastSearch->m_blastQueries.m_queries[1]->getPaths();
+    query3Paths = g_blastSearch->m_blastQueries.m_queries[2]->getPaths();
+    query4Paths = g_blastSearch->m_blastQueries.m_queries[3]->getPaths();
+    query5Paths = g_blastSearch->m_blastQueries.m_queries[4]->getPaths();
+    query6Paths = g_blastSearch->m_blastQueries.m_queries[5]->getPaths();
+    query7Paths = g_blastSearch->m_blastQueries.m_queries[6]->getPaths();
+    QCOMPARE(query1Paths.size(), 1);
+    QCOMPARE(query2Paths.size(), 1);
+    QCOMPARE(query3Paths.size(), 1);
+    QCOMPARE(query4Paths.size(), 1);
+    QCOMPARE(query5Paths.size(), 1);
+    QCOMPARE(query6Paths.size(), 0);
+    QCOMPARE(query7Paths.size(), 0);
+
+    //query2 has a mean hit identity of 0.98.
+    g_settings->minMeanHitIdentity.on = true;
+    g_settings->minMeanHitIdentity = 0.979;
+    g_blastSearch->doAutoBlastSearch();
+    query2Paths = g_blastSearch->m_blastQueries.m_queries[1]->getPaths();
+    QCOMPARE(query2Paths.size(), 1);
+    g_settings->minMeanHitIdentity = 0.981;
+    g_blastSearch->doAutoBlastSearch();
+    query2Paths = g_blastSearch->m_blastQueries.m_queries[1]->getPaths();
+    QCOMPARE(query2Paths.size(), 0);
+
+    //Turning the filter off should make the path return.
+    g_settings->minMeanHitIdentity.on = false;
+    g_blastSearch->doAutoBlastSearch();
+    query2Paths = g_blastSearch->m_blastQueries.m_queries[1]->getPaths();
+    QCOMPARE(query2Paths.size(), 1);
+    *g_settings = defaultSettings;
+
+    //query3 has a length discrepancy of -20.
+    g_settings->minLengthBaseDiscrepancy.on = true;
+    g_settings->minLengthBaseDiscrepancy = -20;
+    g_blastSearch->doAutoBlastSearch();
+    query3Paths = g_blastSearch->m_blastQueries.m_queries[2]->getPaths();
+    QCOMPARE(query3Paths.size(), 1);
+    g_settings->minLengthBaseDiscrepancy = -19;
+    g_blastSearch->doAutoBlastSearch();
+    query3Paths = g_blastSearch->m_blastQueries.m_queries[2]->getPaths();
+    QCOMPARE(query3Paths.size(), 0);
+
+    //Turning the filter off should make the path return.
+    g_settings->minLengthBaseDiscrepancy.on = false;
+    g_blastSearch->doAutoBlastSearch();
+    query3Paths = g_blastSearch->m_blastQueries.m_queries[2]->getPaths();
+    QCOMPARE(query3Paths.size(), 1);
+    *g_settings = defaultSettings;
+
+    //query4 has a length discrepancy of +20.
+    g_settings->maxLengthBaseDiscrepancy.on = true;
+    g_settings->maxLengthBaseDiscrepancy = 20;
+    g_blastSearch->doAutoBlastSearch();
+    query4Paths = g_blastSearch->m_blastQueries.m_queries[3]->getPaths();
+    QCOMPARE(query4Paths.size(), 1);
+    g_settings->maxLengthBaseDiscrepancy = 19;
+    g_blastSearch->doAutoBlastSearch();
+    query4Paths = g_blastSearch->m_blastQueries.m_queries[3]->getPaths();
+    QCOMPARE(query4Paths.size(), 0);
+
+    //Turning the filter off should make the path return.
+    g_settings->maxLengthBaseDiscrepancy.on = false;
+    g_blastSearch->doAutoBlastSearch();
+    query4Paths = g_blastSearch->m_blastQueries.m_queries[3]->getPaths();
+    QCOMPARE(query4Paths.size(), 1);
+    *g_settings = defaultSettings;
+
+    //query5 has a path through 4 nodes.
+    g_settings->maxQueryPathNodes = 4;
+    g_blastSearch->doAutoBlastSearch();
+    query5Paths = g_blastSearch->m_blastQueries.m_queries[4]->getPaths();
+    QCOMPARE(query5Paths.size(), 1);
+    g_settings->maxQueryPathNodes = 3;
+    g_blastSearch->doAutoBlastSearch();
+    query5Paths = g_blastSearch->m_blastQueries.m_queries[4]->getPaths();
+    QCOMPARE(query5Paths.size(), 0);
+    *g_settings = defaultSettings;
+
+    //By turning off length restrictions, queries 6 and 7 should get path with
+    //a large insert in the middle.
+    g_settings->minLengthPercentage.on = false;
+    g_settings->maxLengthPercentage.on = false;
+    g_settings->minLengthBaseDiscrepancy.on = false;
+    g_settings->maxLengthBaseDiscrepancy.on = false;
+    g_blastSearch->doAutoBlastSearch();
+    query6Paths = g_blastSearch->m_blastQueries.m_queries[5]->getPaths();
+    query7Paths = g_blastSearch->m_blastQueries.m_queries[6]->getPaths();
+    QCOMPARE(query6Paths.size(), 1);
+    QCOMPARE(query7Paths.size(), 1);
+
+    //Adjusting on the max length restriction can allow query 6 to get a path
+    //and then query 7.
+    g_settings->maxLengthBaseDiscrepancy.on = true;
+    g_settings->maxLengthBaseDiscrepancy = 1999;
+    g_blastSearch->doAutoBlastSearch();
+    query6Paths = g_blastSearch->m_blastQueries.m_queries[5]->getPaths();
+    query7Paths = g_blastSearch->m_blastQueries.m_queries[6]->getPaths();
+    QCOMPARE(query6Paths.size(), 1);
+    QCOMPARE(query7Paths.size(), 0);
+    g_settings->maxLengthBaseDiscrepancy = 2000;
+    g_blastSearch->doAutoBlastSearch();
+    query6Paths = g_blastSearch->m_blastQueries.m_queries[5]->getPaths();
+    query7Paths = g_blastSearch->m_blastQueries.m_queries[6]->getPaths();
+    QCOMPARE(query6Paths.size(), 1);
+    QCOMPARE(query7Paths.size(), 1);
+}
+
+
+void BandageTests::bandageInfo()
+{
+    int n50 = 0;
+    int shortestNode = 0;
+    int firstQuartile = 0;
+    int median = 0;
+    int thirdQuartile = 0;
+    int longestNode = 0;
+    int componentCount = 0;
+    int largestComponentLength = 0;
+
+
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.LastGraph");
+    g_assemblyGraph->getNodeStats(&n50, &shortestNode, &firstQuartile, &median, &thirdQuartile, &longestNode);
+    g_assemblyGraph->getGraphComponentCountAndLargestComponentSize(&componentCount, &largestComponentLength);
+    QCOMPARE(17, g_assemblyGraph->m_nodeCount);
+    QCOMPARE(16, g_assemblyGraph->m_edgeCount);
+    QCOMPARE(29939, g_assemblyGraph->m_totalLength);
+    QCOMPARE(10, g_assemblyGraph->getDeadEndCount());
+    QCOMPARE(2000, n50);
+    QCOMPARE(59, shortestNode);
+    QCOMPARE(2000, longestNode);
+    QCOMPARE(1, componentCount);
+    QCOMPARE(29939, largestComponentLength);
+
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.fastg");
+    g_assemblyGraph->getNodeStats(&n50, &shortestNode, &firstQuartile, &median, &thirdQuartile, &longestNode);
+    g_assemblyGraph->getGraphComponentCountAndLargestComponentSize(&componentCount, &largestComponentLength);
+    QCOMPARE(44, g_assemblyGraph->m_nodeCount);
+    QCOMPARE(59, g_assemblyGraph->m_edgeCount);
+    QCOMPARE(214441, g_assemblyGraph->m_totalLength);
+    QCOMPARE(0, g_assemblyGraph->getDeadEndCount());
+    QCOMPARE(35628, n50);
+    QCOMPARE(78, shortestNode);
+    QCOMPARE(52213, longestNode);
+    QCOMPARE(1, componentCount);
+    QCOMPARE(214441, largestComponentLength);
+
+    createGlobals();
+    g_assemblyGraph->loadGraphFromFile(getTestDirectory() + "test.Trinity.fasta");
+    g_assemblyGraph->getNodeStats(&n50, &shortestNode, &firstQuartile, &median, &thirdQuartile, &longestNode);
+    g_assemblyGraph->getGraphComponentCountAndLargestComponentSize(&componentCount, &largestComponentLength);
+    QCOMPARE(149, g_assemblyGraph->getDeadEndCount());
+    QCOMPARE(66, componentCount);
+    QCOMPARE(9398, largestComponentLength);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void BandageTests::createGlobals()
+{
+    g_settings.reset(new Settings());
+    g_memory.reset(new Memory());
+    g_blastSearch.reset(new BlastSearch());
+    g_assemblyGraph.reset(new AssemblyGraph());
+    g_graphicsView = new MyGraphicsView();
+}
+
+bool BandageTests::createBlastTempDirectory()
+{
+    //Running from the command line, it makes more sense to put the temp
+    //directory in the current directory.
+    g_blastSearch->m_tempDirectory = "bandage_temp-" + QString::number(QCoreApplication::applicationPid()) + "/";
+
+    if (!QDir().mkdir(g_blastSearch->m_tempDirectory))
+        return false;
+
+    g_blastSearch->m_blastQueries.createTempQueryFiles();
+    return true;
+}
+
+void BandageTests::deleteBlastTempDirectory()
+{
+    if (g_blastSearch->m_tempDirectory != "" &&
+            QDir(g_blastSearch->m_tempDirectory).exists() &&
+            QDir(g_blastSearch->m_tempDirectory).dirName().contains("bandage_temp"))
+        QDir(g_blastSearch->m_tempDirectory).removeRecursively();
+}
+
+QString BandageTests::getTestDirectory()
+{
+    QDir directory = QDir::current();
+
+    //We want to find a directory "Bandage/tests/".  Keep backing up in the
+    //directory structure until we find it.
+    QString path;
+    while (true)
+    {
+        path = directory.path() + "/Bandage/tests/";
+        if (QDir(path).exists())
+            return path;
+        if (!directory.cdUp())
+            return "";
+    }
+
+    return "";
+}
+
+DeBruijnEdge * BandageTests::getEdgeFromNodeNames(QString startingNodeName,
+                                                  QString endingNodeName)
+{
+    DeBruijnNode * startingNode = g_assemblyGraph->m_deBruijnGraphNodes[startingNodeName];
+    DeBruijnNode * endingNode = g_assemblyGraph->m_deBruijnGraphNodes[endingNodeName];
+
+    QPair<DeBruijnNode*, DeBruijnNode*> nodePair(startingNode, endingNode);
+
+    if (g_assemblyGraph->m_deBruijnGraphEdges.contains(nodePair))
+        return g_assemblyGraph->m_deBruijnGraphEdges[nodePair];
+    else
+        return 0;
+}
+
+
+//This function checks to see if two circular sequences match.  It needs to
+//check each possible rotation, as well as reverse complements.
+bool BandageTests::doCircularSequencesMatch(QByteArray s1, QByteArray s2)
+{
+    for (int i = 0; i < s1.length() - 1; ++i)
+    {
+        QByteArray rotatedS1 = s1.right(s1.length() - i) + s1.left(i);
+        if (rotatedS1 == s2)
+            return true;
+    }
+
+    //If the code got here, then all possible rotations of s1 failed to match
+    //s2.  Now we try the reverse complement.
+    QByteArray s1Rc = AssemblyGraph::getReverseComplement(s1);
+    for (int i = 0; i < s1Rc.length() - 1; ++i)
+    {
+        QByteArray rotatedS1Rc = s1Rc.right(s1Rc.length() - i) + s1Rc.left(i);
+        if (rotatedS1Rc == s2)
+            return true;
+    }
+
+    return false;
+}
+
+
+
+QTEST_MAIN(BandageTests)
+#include "bandagetests.moc"
diff --git a/tests/big_test.LastGraph b/tests/big_test.LastGraph
new file mode 100755
index 0000000..a44544f
--- /dev/null
+++ b/tests/big_test.LastGraph
@@ -0,0 +1,19930 @@
+4618	6344180	51	1
+NODE	1	6457	309198	303335	0	0
+GAATAACAACAATGTTGACGAAAACAATGAACATCGTGATGGCCTTGACGACGTCATAGATCCACGGGGGGGCAACGTGGTTCTTCATAAATGAAAAAATACACAACACAAACCCAGGTCAGAAGGAACAGGGCCCAGAACGGAAGAGCGGTGCGGAGAAATTCCATGCTGATGTGTTTCCTCTTTTATTGTTAATGAGGTGTCATTAACGGGAAACTGTAGTGATGCCGTGTTTTAATAAACAGGAATAAATCATTCAGGATGGAATGAATTTATTTGAACAGGCCTGGAACAGCGTGATGCAGAAACTGGCAATGCTGACCGCCCCTTTATCCACCCCCGTGTATTCTCCCGTAAAAATTTTCAGTTTTGCAAATAGAGTTTATCGCTGATCCCTCCCCCTGCCTTACGCATGCTGTACGCACCCATTGATTCTGACGGAGGTGCGTATGTTTTCTCTTCCTGCATTATCCCGGAAAACGGCCGGTCTGA [...]
+CGTATTCTCACCCACGGCATTTTTCGACAGCCGGGTAAACCGCTCCTCCAGGGTGTCCTGTGGCTGTACCACAATGGTCATGCACAGCACCGTTCCTTCCGGAAACGTATCCATCAGCGCATTCACCGTTTTTTCTCCCCGGGACATCTCACCGGTAATGGCGCCCGGCTCCGGTGGCGTACGGAGCTTCTCCACCACCACGGCACAATGTGGCAGATCATCAATCCACCACACCCCGTTCTCCGGATCGGAATGAGGCGGGGTAAACCACAGGCTTTCTGCAAAGTCCGTCATCACCGGCATAACATCCGCAGCGTTCTCACGGGGATCGGCTCTTGAGGCCATCCGGTACAAATCCTCCCGGCTAATCCAGGACGGTGCCGGATTAAATAACCGGAGTAACCAGCTGTGAACCTGCAGACCGTTCATCCGGTGACAGCGCACCCCGGCGCTCCCCAGTGCCGACACAACGCGATCGCAAACCTGATTCAG [...]
+NODE	2	4908	236432	233889	0	0
+AACGGCTTTAGTTCAGCATATTTCTAATGACATAGTGCAATATGCCGTCATTCTGGTAGTAAGTCAGCTCGGTGGCGGTATCAATTCGACAGCGACAAGGCACCGTTTCTTTGCTGCCGTCCGATCTCGTTAACGTCACCGGAATGGTCGCGCCAGGGCGCAGGTTTTGCAGATCCGCGATATCAATCACCTCTTCCCCGGTCAGTCCCAGCGTTTTACGCGTTACGCCCTGTGGAAACTCCAGCGGCAGGATCCCCATCCCAATCAGGTTTGAGCGGTGGATACGTTCGAACGACTCGGCGATCACCACGCGAATACCTAACAGCCGCGGACCTTTTGCCGCCCAGTCACGGCTCGATCCCGACCCATACTCTTTCCCGGCAATCACCGCCAGCGGCGTTTTTTCCTGCTGGTAGAGCATCGCGGCATCATAAATCGACATCGCTTCCGTACCCGGCAAATGCCGCGTCATCCCACCTTCGACGCCGGGCA [...]
+CTGGTTATCTATGCTCCTGGGAACTCACTCCCTTGTCGCCTTTAAGCAACTCGAATTATTTTGAGTATAGCGGGCTTATTATTTTATCGCGCTGGCTATACAGTTCAGATATAAATGATATAGTGGTTATAGTTAACACCTTTTTTATTATTAAATCGTATTAGCAGCCAGATTAAGTCTGCAGATAAACGATGGCCTGATGGCGCTAATTTGGATGATGTATTATGAAATTGCAGCAGCTTCGTTACATTGTTGAAGTGGTTAATCATAACCTTAACGTCTCCTCTACCGCTGAGGGGTTGTATACTTCCCAGCCGGGGATCAGCAAGCAGGTTAGGATGCTGGAAGATGAGCTTGGCATCCAGATTTTCGCCCGCAGCGGTAAGCATCTGACTCAGGTGACGCCCGCAGGTCAGGAGATTATTCGTATTGCGCGTGAGGTGCTTTCCAAAGTCGATGCCATTAAGTCGGTCGCCGGCGAGCACACCTGGC [...]
+NODE	3	7432	423552	419724	0	0
+CATAGACGGCATCCGTTACGCCGCCGTCGAGCAAGGCGGCAAGACGTTCCAGATCGCTGATAAAAGCGCTGGTTAAGTCATCTGCCGCGTCGGCGGGAAGCAGCCCGCTAATCAGATCGCACTGGTAGCGGCGTAACGTCTGTAATACCTGATGCGCAGAAAGGCGATCGGTCTGGCTTAACTTGAGCCAGCTAATCAACTGGTTGGTGGTACTGCCTGCGGCGGACACTACCATCATATCGTCAGGCTGCGAATACTCCGCCATAATGCCTGCGACACGCAGGTAACACTTCACATCCGCCAGACTACTGCCGCCAAATTTATGCAGTTGACGACCTTTCGCCCCTGCCTGCGCAATCACACTCATGTTTACCCCTTGTTTGCAGCCCGGAAGCCATTTTCCAGGTCGGCAATTAAATCTTCGCCATCTTCAATACCGGTGGAGATACGCAGTAGCGTTTCGGAGATCCCGGCGGCGGCACGCGCCTGCGG [...]
+CTGCGGAAAAAAGCGCGCCATCGACATCCAGCAACGCCACCAGCGTGACATCCGGAAAGTGATGGCCTTTCGCCAGCATTTGTGTGCCTATCAGGATGCGTGCTCCGCCGCGGTGAACTTCCGCCAGATGCTGCTCCAGCGCGCCTTTACGACTGGTGGTATCACGGTCGATTCGTGAGATCGGCACGCCGGGGAAGAAGGGCGCCAGCACCTGCTCCAGCTGTTCCGTCCCTAACCCAACCGGTAACATATGTGTGGAGCCGCAGGAGGGGCACTGACGCGGTACCGGACGCTGGCTGTCGCAGTGATGACAGCGTAAATGATGCTGCGCCTGGTGCAGCGTGTAGTAGTGATCACAACGCGGGCACTCCGCAATCCAGCCGCAGTCGTGGCAAAGCAGCGCGGGCGCGAATCCCCGGCGGTTAAGAAATAAAATTACCTGATTGTCGGCCTGGAGATGTTGGCGCATACGGGCGATAAGGGCGGGCGCCA [...]
+NODE	4	690	41447	38722	0	0
+TGGTCGCTGGAAACAAGTGAAGGTGAAGGTTACATTTACGTGGTTATTGAACATCAGAGTACGCCGGACGCGCATATGGCATTTCGGCTGATGCGTTACGCAATGGCTGCAATGCAACGGCACCTGGAAGCCGGGCATAAGACGTTGCCGTTAGTGGTGCCAATGCTGTTTTATCACGGAAACCGCAGCCCGTATCCGTTCTCATTATGCTGGCTGGATGAATTTGCCGACCCGGTGATGGCGCGTAAGCTATACGCCACCGCCTTTCCTCTGGTCGATATTACGGTCGTGCCGGACGACGAGATTATGCGACACCGACGGGTCGCGCTGCTGGAACTCATACAAAAACACATCCGCCAGCGTGATCTGATGGGGCTTGTCGAACAGCTGGTCGCCCTGCTGGTTAAGGGATACGCTAATGACACCCAGCTTCAAAGTTTGTTTAATTACATGATGCACACTGGCGACGCCGCGCGCTTCAATACGTTTATC [...]
+CAATGCGCAATGCGGCGAGCCGTTGGCCTTCCTGTTTGCCTTGCTGTAGCCCTTTCTGTAACCCGTTACGATGTCCTTCCTGACGTAATCTGTCTGCGATAGTCATGATCTTCTCCTTATGCTGTGGGATACGCATAGCCACTTGGCGGATAAACGTATTGAAGCGCGCGGCGTCGCCAGTGTGCATCATGTAATTAAACAAACTTTGAAGCTGGGTGTCATTAGCGTATCCCTTAACCAGCAGGGCGACCAGCTGTTCGACAAGCCCCATCAGATCACGCTGGCGGATGTGTTTTTGTATGAGTTCCAGCAGCGCGACCCGTCGGTGTCGCATAATCTCGTCGTCCGGCACGACCGTAATATCGACCAGAGGAAAGGCGGTGGCGTATAGCTTACGCGCCATCACCGGGTCGGCAAATTCATCCAGCCAGCATAATGAGAACGGATACGGGCTGCGGTTTCCGTGATAAAACAGCATTGGCACCACTAACG [...]
+NODE	5	11710	648027	642400	0	0
+TTCACCCCAGTCACATAGTTATCTATGCTCCTGGGAACTCACTCCCTTGCCGCCTTTAAGCAACTCGAATTATTTTGGGTATATATTAGATGTCGTCAGGTGTCTGAAACAAAACGGCTTCTAAGGCATTACGGTAAATATCAAGCTGCACTACGTCTTTTTCTGTTTCCAGTTTTTCAATAAGTTTGGCGATGATATCCTTATTTGAGACATGCTGCTGCGATTGCAATAGTTCGTAAGTAATTTCCTGAATAGCTCGCTGTTCACATAACATATGTGCAGAAAAAGGATTGCCAGTACTATTTTGTTCGTTGACTAGTGTAATGGTAGTCATATTTCACCATATTCGATGTAAATTGAAGCCGATCTCCCTGAGCGGGGGAGAGAAATTAGTGACCTATTAAAATTAGACCTATATCATAAAACCGTAATAAAAAATCATAAAAACGTGATGTACATCACATTTGTGTGATTTGTTGTATATTTTATACA [...]
+TTTGAGCCGAACGTATAAGAACGTAGAAGTGGTTTATATCCGCCACCATACCCAGGCGAAGGAAGTGGACGAACATGAGTTCTTTTATTCGCAAGAGACCGGCGGGACGATTGTCTCCAGCGCGCTTAAACTCATGGATGAAGTGGTTAAAGAGCGCTACGACCCGGGGCAGTGGAACATCTATGCGGCGCAAGCGTCAGACGGTGATAACTGGGCCGACGATTCACCGCTGTGTCATGAGATTCTGGCGAAAAAACTGCTGCCGGTAGTGCGCTATTACAGCTATATCGAGATTACCCGCCGCGCCCACCAGACCTTATGGCGCGAGTATGAACATCTGCAGGCGACGTTCGATAACTTCGCCATGCAGCATATTCGCGATCAGGAGGATATTTATCCGGTATTCCGCGAATTGTTTCAGAAACAGAGCGCCAATCAAAGCGCATAAATAAATCCGCCCGTTCATATGTCGGGCGGGTTTTAATAAGCCTG [...]
+NODE	6	3984	224696	223878	0	0
+AAGCTCGCCGCGCATCGCGCGCTCCGTCACTTCAGCCACCTTCTCACCGGTACCGGCCAGCTTAGCGATTTCATCGATACACTCAATCTGGATCGCCGTGGAATCCATATCCATCACCAGCAGCCCCGGCGTGCGCAGATGCGGAATTTTACCCAGCGGCGCGACATCCAGCTGCGCCTCATGCGCCAGCCGCGTCGCACGCGGCGTCAGCGACCCCGCCAGACGAATGACCTGATAATCCTCCACGCACCAGGCGGCGACAATCACCATTGCGGCGCCCAGTTTGGTCTGATATTGAGTTAAACGCTGCTTATCCAGCCCGCGCCCATACAACAGCCAACCGCTGCGGCCTGCATGGTAATCCAGAGGCATCACCTCGTCGCCGCTTAAAGAAAGAGGCAAACCAGGCCATAAAGAGACATCTTCAGGCAGATCGCACCAGGTAATGTTAGGCATTAAAGCTCCTGTAAATCGTTCAGGCCGGTAACCGCC [...]
+GTATCCTGAATGGCCAGTGAGGTTTTCAGCGGGAAAATGGCAAGAGTATACGGAACTGGTTCGGTGGTGCCTTTTGTAGCAACGGTAAACATTTCCATATTGCCGTTTTTGATAATCCCGGTGGTGGACTTCTGCCAGACTGGGCTATCAACGGTTCCTGAGATAGCGTCAGATTTTACACCATCAGCGGTAACGTTCGCGGTATCGGTGTAAATAGAGAACGCGCCGATTTTTACACCTTCGGTTGTTTTGCCAACGCCGTAGGACATTGTGGTATCAGATACTATACCATTAGTCATATTGCCATTGGCTATGGAGATAACGGATGCGCCTGGGTGGGTGTCCGCACGGTCATCGGTAATAGTCCAGGCTGCTTTGGTTGCAGACGGACAAGAGATACTCAGAGAGACATCTTTAGTGCCCAGTTGGTTTACATCGGTTGCGGAAAGTGTGGCGAGGCGGATAGTACCGTAATCAACCACACCGCCGTCG [...]
+NODE	7	13516	714057	707243	0	0
+GGAAAACATTTGCGGCCTGTGCGAAGAGCTGGCGCAGGAGAATATTTCCGCACGGACGTTTGACAAGCTGGTCTATCAAAACCTCACGTTATATCTCGATGCCTTAATGAATAAAGAGAGCCCTCGCGCTCGTCAGGACAAGCGGCTGCGTTTTATCGAAGATGTCGGGAAAGCGATCGCTGCACATTACGATCTCGAACTGAATGCGGAATTCGCTTATCTCACCGGACGTTACCTTACCAGCCTGCCGTTAACGCCGGTGGAGGCGTCGCCATCGGTTCGCCATGTGATGCTGCGCTGGCTGGAGGAGGCGCCGGGGCTGGCGCAGCGTGTGGCGCAAAAACTGCTGGACGTGGTAAATAATAAATATGATTTGTTAATCGACACGCTCGACAGACTGGTCGTGGCGGCCATCGTCAGTAATGCCATTGACGCCACCAGCGGCGGTAAGGTAAAAGCGCTTATCATCGCGCATGGTTATTCGACCGCCAG [...]
+TATTATGAATTTTGTATATAAAAGGTGAAATATATTGATAATATTATTGATAACTATTTGCATTTGCAATAGCGTATTGTCGCGCTATGGGACGCGCGAACACAATTTCACCACCCGGCCAATGCCTTTGACGGGCGCTTTGGCTTATGTGGCTAAAGAAAAGCAGGATATACAATGAACAAGAAGATTCATTCCCTGACCTTACTGGTCAATTTAGGGATTTACGGGGCCGCTCTGCCCGTGATGGCGGAAGAAAAAACCGATAGCGCTGCGCTCACCAATGAAGACACCATCGTGGTGACCGCTGCCCAGCAAAACCTACAGGCGCCAGGCGTATCCACCATCACCGCCGATGAGATCCGCAAAAATCCGCCCGCGCGCGACGTGTCAGAAATCATCCGCACCATGCCGGGCGTAAACCTGACCGGCAACTCCACCAGCGGTCAGCGCGGGAATAACCGCCAAATCGATATTCGCGGCATGGGGCCGGAA [...]
+NODE	8	3527	203456	200534	0	0
+CAGCGGAACGCCGTGGCTCAGCGCCATGCCCATCCCGTCGCCGGTGACGATGCCGCCGTTGGTGTTATAGCGGTATACGCGGCCTGCGCCGCCTGTCGCCATGACCACGGCGTTGGCGCGGATTTGCACCAGCGTGCCTTCCATCATGTTCATTGCCACCAGGCCGCGCGCATGGTTGTCATCGACCAGAATATCCAGCACAAAATGTTCGTCAAAGCGCTGGATTTGTGGGAACTGCAGGGAAGTCTGGAACAGAGTATGCAGCATATGGAAGCCGGTTTTATCCGCGGCGAACCAGGTACGCTCGATTTTCATACCACCGAAGCGACGCACGTTAACGCTACCGTCCGGACGGCGGCTCCACGGGCAGCCCCATTGCTCCAGCTGCGTCATCTCAGTGGGACAATGGTGGACAAAGTAATCCACGACATCCTGCTCACACAGCCAGTCTCCGCCTGCTACCGTATCGTGAAAATGGTAGTCAAAGCTGTC [...]
+AGAACAAATGGCCGCTCCAGATCCTGACGCGCTTTAAAGAAGGGAAATGCCAGCGCAAGGAACAGGTATGGCAAGGTCATTGAGACGTTCGCCATCAGCGTGAGTTTGTTATAAAACGCCGATGCGGTGTCACCGCCAAAAGAGACCAGCAAAATAAACAGACTCACCAGCACGCACTGTAGCCACATAGCGATCGCCGGCATACCGTTAGCGTTCAGTGTCGTCATCGGCGCGGGCCACAACGCTTTTGGCGTCCCCTGAATAATGGCTTTCAGCGGTGAATAGCTCAACGTAAAAAACGCGCCGGTATAAGCCAGAAACATAGAAAGGCCGGTGATACGCGCAAACCAGACGCCCACCGTCATCGCTGCGTCCGGAGAAAGGTTTAACGCGTTACCTAATGTCGTGCCTAAACTCGACATCAAAATGTAGGTAATATTCCCTAAGTTAACGGCGCTATTACTTAATATCTGTTGCCAGTTAGTGCTGACG [...]
+NODE	9	4769	274232	272558	0	0
+CGCGCGCGCCGGCGTTCAACGCCTGTTCCACCAGCGCCGGGCTATCGTGAACCGAGAGCATGATCGTCGCCATCCCTTTTGGCAGTTGGCTTAGCAGCTCCAGTCCGGAAATATCCGGCATCGAGATATCGCAGATACACACCTGTACGCCGCGCCCCGGCAAGCCTGCCAACGCTTCGCGCCCGGAACCAAATTCGGCGACCACCTGCAAATCAGGTTCCAGCCCCAGTAGCTGTGCAAAGCCGGAGCGGACGATAAGGTGGTCGTCGATAAGGGCAACGGTGATCATGGGTTCTGTCCTGATGGATAAAAAAAACGCGCTTACCTTAACGATAAGCGCGCGGCTGTTCAAGCCTTGAGCGGTCAGACAATGCCTGTCGTGACGGTGAACGTCCGGGTTTGCTGCGGTTCCAGTTGAAGCAAGGTTCCATTTCGCTGCGCCGCGAGAAAACCTTCAGGCCGACAGGTCGCGGGCAGGGCAAAGGCGGCTAC [...]
+GACAGTGAACGGCATAATCTGTCGGTAATGGGCGATCGCTAATCAGGACATCAAAGGCAGAAAGCGGACCAATGCTGGCAGGCGCGACCTCATCAAACAGGGCGTGACGCGCCAGCAAAATTTTGCGCAGACCGCGCTCCATCGCTTTACGTTTGGCGGCAAGATCATCCGGGTTAAACCAGCTCACGCCAAAATGTTCATGTACGCCGCTGGCGGAAATAAACACTTTGCGCGGATTGAGCGAATCCAGCGCCGAAGGATTATTGGCATCATAAAAGGCATCGCTCTTGGCCCGATAGGTGCCGCCGCACAGAATCGCCGTGGCATTAGGCTTTTCATTCAGCGCGATAAATACCCGATGCGAGTAGCAAATCCCGGTAAAGGTAATATCATCCGGTATCATGCTGATAACTAATGGCATTTCCGGACCGTTATCAAAAAAAACCAGATCGTTTTCACGCACCAGGCCGGCGGCCAGGATCGCAACGGGAA [...]
+NODE	10	15008	797746	790734	0	0
+ATCCGGATAGAGCGACTTATCATTGGCGACCTCCGGGCTTAACAGCTTACGCGCCGCCAGGTTGGGGGTAGGGTAGCCGATGGTTTCTGCCACCTCTTTCGCGACGTCAGGACGCAGCAGGAAGTTGATTAGCTTCAGCGCGCCCTCTTTATTTTTCGCGTTCGCCGGAATAGCCAGGCTGTCCATCCAGAAAATACCGCCTTCCTTCGGCCAGACGACCTCCAGCGGCGTGCCAGCCTGACGAGCAACGAAGGCCGAACCGTTCCACACCATCCCCAGGTTGACTTCCCCTTCCATATACGGATTCGCCGGATTATCGGAGTTGAAGGCCGCTACGTTCGGCATCAGTTTTTTCAACTCTTCATATGCCGCTTCAATCTCTTTCGGATCGGTAGTGTTACCGGAATAACCTAGCTTGCGCAGCGCCATCTGGAAGACTTCTCGCGCATCGTCGGTTAAAAGCAGGCTGTTTTTATATTCCGGTTTCCACAA [...]
+TACGCCGCCTTGAAGTTCAATGTCGCGAGTATTCCAATGTCAGAAAGCCCAAAAAAAGTGATCGTCGGCATGTCCGGCGGTGTCGATTCCTCCGTTTCCGCCTGGCTGTTGCAACAACAGGGTTATCAGGTAGAAGGCCTGTTCATGAAGAACTGGGAAGAGGACGATGGTGAGGAATACTGTACCGCGGCAGCCGATCTGGCTGACGCGCAGGCCGTGTGCGACAAGCTTGGCATTGAACTGCATACCGTTAATTTTGCCGCAGAATATTGGGATAACGTCTTTGAACTGTTCCTTGAAGAGTACAAAGCGGGCCGTACGCCGAACCCGGATATTCTGTGCAATAAAGAGATCAAATTTAAAGCCTTCCTTGAATTTGCCGCAGAAGATTTAGGCGCCGACTATATCGCCACCGGTCACTACGTTCGCCGCGCGGATGTAAACGGCAAAAGCCGGTTGTTGCGCGGGCTCGACGGCAACAAAGATCAGAGC [...]
+NODE	11	3480	191784	190203	0	0
+GGTCGGACTGGGTATCGCGCTCTATTCCGGCGTTAACTGGATGGGCAACCTGCGGGAAGCGATTCGCGCCCAGTCACGGGACGTCTGGGAGCGCAAGCCGCAGGATCAGGAGAAAATCTGGCTCAAATATCTGCGCGATTTTATCTCGCTGATTGGATTATTAATCGCTTTAATCATTACGCTGTCCATTACTTCCATTGCCGGTTCCGCCCAGCAGATGATCATCTCCGCCTTGTACCTCGACAGCATCGAATGGTTAAAACCGGCCTGGCATTTGATCGGTCTGGCCATCTCTATTTTTGCCAACTATCTGCTTTTCTTCTGGATTTTCTGGCGACTGCCTCGCCATCGTCCCCGTAAAAAAGCGTTGATTCGCGGGACATTTATCGCCGCTATCGGTTTTGAGGTGATTAAAATCATTATGACCTATACGCTGCCGTCACTGGTGAAATCGCCTTCCGGCGCGGCGTTTGGCTCCGTACTCGGTCTGAT [...]
+AATTGACGCCGAAAAGTCATCGGTATTTGATTATCGTGGTTTTAACGGGCGCATTGGCGACAGTGATATCCACGGCTCCCTCACTTATACCACCGGTAAACCGCGCCCTAAACTGGAAGGCGATGTCGAATCGCGCCAGTTACGACTGGCCGATCTTGGGCCGCTGATTGGCGTGGATTCCGGGAAAGACGCTGAGCAGTCGAAACGGTCTGAACAGCGCAAAGGCGAGAAGAATGTTCAGCCGGCGGATAAAGTGTTGCCTTACGATCGCTTTGAAACCGACAAATGGGACGTTATGGACGCCGATGTCCGGTTTAAAGGCCGACGTATTGAGCATGGCGGCAGTCTACCGATTAGCGATCTTTCGACCCATATCATCCTGAAAAACGCCGACTTACGTCTACAGCCGCTGAAGTTTGGTCTGGCAGGCGGCAGTATTGTCTCCAACATCCATCTGGAAGGGGATAAAAAGCCAATGCAGGGGCGGGCGGA [...]
+NODE	12	2311	103479	102697	0	0
+GCCTGGGAATCGAAAAGCGACTGGGAAATCTACAAAGGCATTGCGAAGAAATTCTCCGAAGTCTGTGTAGGCCACCTGGGTAAAGAGACTGACGTCGTGACGCTGCCGATCCAGCACGATTCTGCCGCTGAACTGGCGCAGCCGCTGGACGTGAAAGACTGGAAAAAAGGCGAATGCGATCTGATTCCAGGGAAAACCGCGCCGCACATCATGACCGTTGAGCGCGATTACCCGGCGACTTACGAACGCTTTACCTCTATCGGCCCGCTGATGGAGAAAATCGGCAACGGCGGGAAAGGGATTGCCTGGAACACACAGAGCGAAATGGACTTGCTGCGTAAGCTTAATTACACCAAAGCGGACGGTCCGGCGAAAGGTCAGCCGATGCTCAACACGGCGATTGACGCGGCAGAGATGATCCTGACGTTAGCGCCGGAAACCAACGGTCAGGTGGCGGTGAAAGCCTGGGCGGCGCTGAGCGAGTTTACCGGT [...]
+CGCATCGATCACGCTCTGCGGCACGCCGTCCTTCAGCGCCTGCTCAATGACAGCCGGATCGTTCGGATCGAGGAACACGTCCAGTTGACGCTGGTACAGATCTTTTTCGTTTTCCGTACTGGCGGCGCTTTCAATGGCATCTGCGTCATACAGCAGTACGCCAAGGTAGCGGATACGGCCCACGCAGGTTTCGGAGCAAACGGTCGGCTGACCGGCTTCGATACGCGGGTAGCAGAAGATGCACTTCTCGGACTTGCCGCTCTTCCAGTTGAAGTAAATTTTCTTGTACGGGCAACCGGTGATACACATCCGCCAGCCGCGGCACTTGTCCTGGTCGATCAGCACGATGCCATCTTCTTCACGCTTGTAGATAGCACCGCTCGGGCAGGTCGCCACGCACGCCGGGTTGAGACAGTGCTCGCACAGGCGCGGCAGGTACATCATGAAGGTGTTTTCGAACTGGCCGTACATCGCCTTCTGCATGTTTTCGAA [...]
+NODE	13	3823	188767	188365	0	0
+TACTTCATAAGGCACCAATTTCAAATCAATCAGCACTGCCCCGTATCCTTACCCCACAGGCAGACTTCACACCATGGTGCCATAGCTTATTGGTTATCTTATCAATACTTCTTCCTGGCAATCTTTTTCGCCTCCTTTGACTGGTCAATTTTTCGCCAGATGAGATTAAAGGCGGCATATGTCTCGCTAAGTTGATCTGGGGTAAGCGTTCCCTTGAGTCGGTTTCTTTCGGCAATGAGCGCTGAACAATCATCCTTAGATTTTTCCGTATACATACTTGCCATGTAATACCAAATATAGGCCTGCTTATTATCTTTAGGCACACCCTGGCGCCCATGAGCATAAATTTCCCCAAGCGCTGATTGTGCCGGAGTAAACCCCTGCTCTGCCGCTTTGAGGTACCACTTCAGCGCATTCCGGCTATTTTCAGGCACGCCTCTTCCCGTGCTATATGCTACGCCAAGCTGATATTGCGCTTTCGCAAAATCCTGT [...]
+GCCGCTGCATCCGGAATACCGCACGCTGCCGATGGTCTGGTACGTGCCACCGCTGTCGCCGATTCAGTCTGCCGCCGACGCGGGTGAACTGGGCAGCAACGGTATTCTGCCGGATGTAGACAGTCTGCGTATCCCGGTGCAGTACCTGGCGAACCTGTTGACCGCTGGCGACACCCAGCCGGTACTGTTGGCGCTGAAACGGATGCTGGCGATGCGTCACTACAAACGTGCGGAAACCGTAGACGGTAAAGTGGATACCCGCGCGCTGGAAGAGGTGGGCTTAAGCGAAGCCCAGGCGCAGGAAATGTATCGTTACCTGGCAATTGCTAATTATGAAGATCGCTTTGTGGTGCCGAGCAGCCATCGTGAACTGGCGCGTGACGCATTCCCGGAGAAAAGCGGTTGTGGCTTTACCTTCGGCGATGGTTGCCACGGGTCTGATACCAAATTCAATCTGTTCAACAGCCGCCGCATCGACGCTGTTGATGTGAC [...]
+NODE	14	14534	750144	745165	0	0
+ACTTGAAATCAGCAGGGATTGGTTTATCGTGATGCCCATCACTTCCCGGTAGTCCTGCCGTTGAAGCAACAAATTTCTGAGACTTGTAATGAACAGAACCGACGAACTCCGTACTGCGCGTATCGACAGCCTGGTAACACCGACCGAACTCGCGCAGCGGTATCCTGTATCGTCCTCCGTCGCCAGTCACGTTACCGACTCCCGACGCCGGATAGAAAAGATTTTAAATGGTGAAGATCCACGGCTACTGGTCGTCATTGGCCCCTGTTCGATTCACGATCTGAATGCTGCCATGGAATACGCGACGCAGCTCCAGGCACAACGCCAAAAGCATCAGGCGCGTCTGGAGATCGTCATGCGCACCTATTTTGAAAAACCGCGCACCGTTGTGGGATGGAAAGGCCTGATTTCCGATCCCGACTTGAATGGAAGTTACCGCGTCAATTATGGGCTTGAACTGGCGCGTCGCTTGCTATTGCAGGTGAACGAACT [...]
+CGGACGAAAATAGCGATTTTCGTCTGTGTCGAAGGTTGTGCGCCAATTTAGCAATGGTTGGCTAGATGGATACACAACTCACTGTCAATAAATTCATTTTCTCTTTGTATGTGATCTTGCGTATGGGTCACCACTGCAAATAAGGATATTACATGCCTGTTATTACTCTTCCTGATGGCAGCCAACGCCATTATGACCATCCTGTAAGCCCGATGGATGTTGCTCTGGACATTGGTCCTGGCCTGGCGAAAGCCACCATTGCGGGCCGTGTGAATGGCGAGCTGGTTGATGCTTCCGATCTGATTGAAAATGATGCGACGCTTTCCATCATCACCGCAAAAGATGAAGAGGGTCTGGAGATCATTCGTCACTCTTGCGCGCATCTGTTAGGTCACGCTATCAAGCAACTTTGGCCGCACACGAAAATGGCGATCGGCCCGGTTGTCGACAACGGTTTTTACTATGACGTTGATCTTGACCGCACGCTAACTC [...]
+NODE	15	4520	252856	249712	0	0
+TTCAGATGTACCTTCCGGAAAACGCCATGCCACCGAAAATCCTAATTCCTGGAATTCGTCAATGTGCATTTTTTTACGCAGACGACGACTACGGTTCTTTGCCATTATTTCACCCTCTCGAACATTAAGTCCCATACGCCATGACCAAGACGATGGCCACGTTGTTCAAATTTCGTTACCGGGCGCGATTCCGGGCGCGGTACATAATCATTGCTCTCTGACAGATTTTTGTACCCGTCGATAGAAGACATGACTTCAAGCATGTGTTCCGCATACGCTTCCCAGTCGGTCGCCATATGGAAAACGCCGCCCAATTTCAGCTTGCTCAATACCAGTTCAGCAAACGGCACCTGAACGATACGGCGTTTATTATGACGCGCTTTATGCCACGGGTCAGGGAAAAAGAGCTGAACCATCGATAAAGAATTGTCAGGAATCATTGTATGCAACACTTCTACCGCGTCGTGGCACATGACGCGCAGGTTTTCAACG [...]
+TCTTTATCAAAGCTATGCAGGAAGGTGTTGCCAAACATGTTGGTGATCTGCAGTTCCGCGCCCAGCATCATGGAGAAGATGAAGAAAATCGCCATCCGCTTATTTTTAAACAGCGCAAAAGCGTCAAGGCCCAGCATTGATGTCCAGCTCTGGTTTTTCTGTTGGTTCGCCACCGGAATGTGCGGCAGGGTAAAGGTAAACAGTACCAGCAGAACGGAAAGCGTCGCGCCGATATAAAGCTGCATATGGCTCAGCTCGAAACCGGAGAAACTCACGCCCCACATCGCCAGAATAAAGCCAATGGTGCCCCAGATACGGATAGGCGGGAAGTCAGTCACAATATCCATGCCGGCAGACTGCAGGCGGTAATACGATATGGTATTGATCAAGCCCAACGTCGGCATATAGGCCAACGAGTTAAGCAGGATCACAAAGAACATCGCCCCAGGCGTAGTGACTTCCGCGGCCATGAATAGCGTGATGGCGCCGACG [...]
+NODE	16	5393	303625	299570	0	0
+GGCGAAAGCCCAGGCGCTGGGGCTGCCGGTGCTGGCGCGCATCCGCGCGTTTGCCAGCGTCGGCGTCGATCCTGCGCTAATGGGGATTGCGCCGGTATATGCTACCCGGCGCTGTCTGGAGCGTGCCGGCTGGCAACTGACGGAGGTCGACCTTATCGAAGCCAACGAAGCGTTTGCCGCCCAGGCGTTGTCGGTAGGAAAAATGCTGGAATGGGATGAGCGACGGGTAAACGTTAATGGCGGCGCGATTGCGCTGGGGCATCCCATTGGCGCTTCCGGCTGTCGAATTCTGGTTTCACTGGTGCACGAAATGGTTAAACGCGACGCGCGAAAAGGCCTGGCGACGCTGTGTATTGGTGGCGGCCAGGGCGTTGCTTTAACCATTGAACGCGATTGATCCTACGCCAGCCATCCTTTTCCTGCTTCAGTATTCCGTCATAAAAAGCCCTCTATCACGAGGGCAAAGCCAGTGACAGACCCCCTTTTTCGTTA [...]
+GAACATCAGGTGAAGCGCAGAATGGTGGTGGAAACGCATAGCGCGGCCTCCGTCTGCGCGATGGTGCGCGCCGGGGCGGGCGTTTCGATCGTTAACCCGCTGACTGCGCTTGACTATGCCGCCAGCGGCGTCACCGTTCGCCGCTTCAGCATTGACGTGCCCTTTACCGTCAGCCTGATTCGCCCGCTACACCGCCCCGCCTCCGCGCTGGTTGACGCCTTCAGTAAGCATTTACAAACGCATCTTTCGCGCCTGGTCGAACCGCTGGAGGTTATTCTGGGGCCGATGACGAAAGCATAAAGCTCACGGCATCTGCGGCATGAATTGCCGTGGTATCGAAAACCGGTAGCGCGCTTTGCGTCTGGGGAACAAGCAAACCTATTTCAGTGCAGCCAAAAATAACGCCCTGCGCGCCTTGCGCAGCCAGTTGTTCGATAACCTGTAAATAATAGTGGCGCGACGCGTCAGTGAATGTCCCCTGACAGAGCTCGT [...]
+NODE	17	3478	196948	195273	0	0
+CCTGCTGGCTGGATGTGGATGCGATTACCCGTGTGTTATTGATAGGTTCCGTTTTACTTATCATGATTGTTGAAATCCTCAACAGCGCTATTGAAGCGGTCGTGGACCGCATCGGTTCTGAATACCATGAGCTTTCCGGCCGTGCGAAAGATATGGGATCGGCTGCGGTGCTACTGTCTATTTTCGTTGCCCTGATGACCTGGGGCATCCTGTTATGGTCACATTTTCGATAAAGGTTCCAAATTTTATAAATCTCTTGTTTTTTGCGCCGTTTGTGGTTCCAAAATCACCTTTAACTGTATATACTCACAGCATGACTGTATATACACCCAGGGGGCGGAATGAAAGCGTTAACGGCCAGGCAACAAGAGGTGTTTGATCTCATCCGGGATCACATCAGCCAGACAGGTATGCCACCGACGCGTGCGGAAATCGCGCAGCGTTTGGGGTTCCGTTCCCCAAACGCGGCGGAAGAACATCTTAAAGCGCTGG [...]
+TGCCATTCGAGGTGCTACATGGAAAAGACCACAACGCAAGAGTTACTGGCGCAAGCTGAAAAACTCTGCGCGCAGCGCAACGTGCGCCTGACGCCTCAGCGCCTCGAAGTGTTGCGCCTGATGAGTCTGCAACAGGGTGCCATCAGCGCATACGATTTGCTCGATTTGCTGCGCGAAACGGAACCACAGGCCAAACCGCCCACCATTTACCGCGCGCTGGATTTTTTGCTCGAACAGGGTTTTGTCCATAAAGTGGAATCCACCAATAGTTATGTGGTTTGCCACCTGTTCGACCAGCCGACGCACAGCTCGGCCATGTTTATCTGCGATCGTTGCGGCGTGGTGAAAGAAGAGTGTGCCGAGGGCGTGGAAGACATCATGCATACGCTGGCGGCTAAAATGGGCTTTGCGCTACGACATAACGTTATTGAGGCGCACGGTCTGTGCCCTGCGTGCGTAGAAGTGGAAGCGTGTCGCCATCCGGGCGACTGT [...]
+NODE	18	1180	70151	70066	0	0
+TAGCCAATAGTCAGGAAGTAGAGAATGCCGCAGATGAGCATCGGGAGACCGATTTTTGCGTATTCAAAAAAGCCAAAGCCGCCGCCAATATTCTGTAGCGCAGACTGCGCGATAAGATTTCCCGGCGCGCCAATTAACGACAGGTTACCGCCCAACGCAGCGGCGAAAACCAGCGGCATCAGTAGACGAGAACGCGAGAAGCCCGATTTTGCCGCCACGCCGATCACCACCGGAATCAAAACCGCAGCGGTACCGGTGTTAGAGAGGACGCCAGACATCAAACCCACCACCACCATAATGGTGAAGATCAGCTGTTTTTCTGTTTTCGCGAAGCGCGTGATGACGCCGCCCACTTTGTTTGCCATACCGGTCTCGAACAACGCGCCGCCCACGATAAACATCGCGACAAAGAGGATGACGTTAGTGTCGATAAAGCCAGCAAAGGCCTGTTTGATATTCAGAACTCCGGTGATCACTAAGGCCACGCAGACA [...]
+CGGATAGCCCAGGTGCATTATGCCGCTGAAAAGGCTCTCGCGGAAAATAACTCGGCGGAATACTCCGACCTGAATCAGGCATTTCATATGGAAATATGGAATGTTGCTGGCAACGAAAAAATGAAAATGTTGCTCTGTAATATGTGGAACGGCTTGTCGATGGGCCATAAGGTCACCGAAGAAGAGTATGCCGTGATTTCCATTCAGGAACATAAAAGTATTCTGCAAGCTCTTGAACTTCATGATGAAACATTGGCACGCCAGCGCATGCGCGAACACATTATTCGCTCGATGGAGAATATGCTGACCCGCTATGTTGGTGACCCTTCTGCCTGATCTTTTCGCCTGCGTGAGCATCGCAGGCGCTTCAACCAATTCTTCAATTCTATTAATCACGTCCAGTAACGATCTAACCACGATCTTGATGTAGATCTCACTCCTGCATCTTTCCTGAGAAACGATTTGACTTAGTTTTTGTATGGGAATAATTTC [...]
+NODE	19	5480	298687	294609	0	0
+AAATATTTATTATTTAATGCTGATGATCCTTTAAATAAAAAACACTTGTCTTTGGGTTTTTAATGGAAAATACTTTGCCGCGCCTAAGGGATGTTATTTATTAACGTGTTGTTTGCTTCTTTTGAATGTTGCATCGGGAATTTCATAACTCGTCATATAATATATATCTACCCATATAAACATGGGGTATTGAGTATAGCTCCGTGTGAATAGCGTAAAAATACTCACCAACTTTTAATAAGGATGAAAAATGAATACAGCAGTAAAAGCTGCGGTTGCTGCCGCACTGGTTATGGGTGTTTCCAGCTTTGCCAATGCTGCGGGCAGTAATACTGGTACGGTGACTTTTACCGGTACTATTGAAGATTCACCGTGTTCAATCGTGGTTGGCGACGAACACCAGACCGTTAACCTGGGCCATATCGGTACCGGTTCTCTGATGGGCGGTAAAGAATCTTCAAAAGTCGATTTCCATATCGGTCTGGAAAACTG [...]
+GGCTACCGGAAAAATGCAGGTTATCTGCCGCTGAGACCGGCAATATCAGCGCCCCACAGAGGATGCAGGCCGCGCCGTGTAATAACGCCTGTCTTTTAGCCATTACTGATAATCCACCTGTAATGTTGCCGTCGCATCGAAGCCGCCTTCTTTCAGCGAAGCACCGCTCTTTTTAACCGGTATGGCTTTCAGAACAGGTATCGATTGTTCATTCACCGTAATGGTGGACCCCAACGTAAAGGGTTGGTCGTTCTGCCTGAGTTCAATCCCCAGTCCCGCCACGCTGGTGTTTACCGCCGCCGGATTAAAATCACTCACGGAACCGCTTAGCGTCAGGGTCATCGCCATCGTCTCATCGCGCACCGTTGAATCACAGGTGATCTCATACGGAACATTCTGCGCATAACGCGTACCATCTATTTTATTAATCAGCAGGTTACCGAACTCAACGTCGATCGTCTGATCATTGTTAATCGTACAATTCGGCGGTGA [...]
+NODE	20	5560	280743	275115	0	0
+CGTCGGCACCTATCAGTCGATGCGCGGCGGGCTGGAAAATGAAGATGCGGACGGGGTTTTCGACGCTCTGCCGTTCCTGATCGCCAATACGAAGCAGATCATGGGGTTTGGCGAAACCAGCGACGAACCATATGTCAGCATGGAAGGCAAACGCGTGGTGGTGCTGGGCGGCGGCGATACCGCAATGGACTGCGTACGCACTTCCATACGCCAGGGCGCAACGCACGTAACCTGTGCTTATCGTCGTGATGAAGAGAACATGCCGGGTTCCAGACGCGAAGTGAAGAACGCGCGCGAGGAAGGTGTCGAATTTCAGTTTAACGTTCAACCGCTGGGCATTGAAGTCAATGCCAACGGCAAAGTGAGCGGCGTAAAAATGGTGCGCACTGAAATGGGCGAACCGGATGCCAAAGGCCGTCGGCGGGCAGAGATCGTCGCCGGTTCCGAGCATGTGGTTCCGGCTGATGCGGTGGTGATGGCGTTTGGTTTTCG [...]
+GACGATCTGGCGGGATGCGACGCCAAAACCCTATTTATTCGCGCTGGCGAAGGTCATCAGCAGGCGCGACATCTGGTAAGCCAATCCGCGCAGGTAATAGCGCGAATGATCGCCGATGTGAAAGCGATTACCGACTGCCAGTGTGTGGTCATTGGCGGCAGCGTAGGGTTAGCTGAGGGATACCTGGAGCAGGTTCGCGCGTTTTTGATGCAAGAGCCTGCGCCTTATCACGTGGCGCTGAGCGCCGCTCGCTATCGGCATGACGCAGGATTATTAGGCGCTGCGTTGTTAGCTCAAGGAGACACATTATGATGATGGGGGAAGTACAGTCGTTGCCTTCTTGCGGGTTGCATCCGCGACTGCTGGATGCCTTGACTCTCGCGCTGGCGGCAAGGCCGCAGGAGAAAGCGCCGGGGCGCTATGAATTGCAGGGCGACAATATCTTTATGAATGTAATGCAGTTAACGACGCAAATGCCGACCGAGAAGAAAG [...]
+NODE	21	5497	303244	301326	0	0
+ACGGCGACCTGCTGGTGGTGGATAGCTCACGGAACGCTGACCACGGTGACATTGTAATTGCGGCAATTGAAGGAGAGTTCACCGTAAAACGGTTGCAGTTGCGCCCGACAGTGCAGCTAATCCCCATGAACGGCGCCTATCGACCTATACCTGTCGGCAGTGAAGACACGCTCGACATATTCGGGGTGGTGACCTTTATCATTAAAGCGGTCAGTTGATTATGTTCGCGCTCTGCGATGTTAATAGCTTTTACGCCTCCTGCGAAACGGTCTTTCGTCCTGATTTATGTGGCCGACCGGTGGTGGTGTTATCAAACAATGATGGCTGCGTTATCGCGTGTAGCGCCGAGGCGAAACAGCTCGGTATCGCACCAGGTGAGCCATACTTCAAACAGAAAGAACGCTTCCGGCGATCCGGTGTTGTTTGCTTCAGCAGTAATTACGAGCTTTACGCTGATATGTCGAACCGGGTAATGACCACACTCGAGGAGAT [...]
+CATGTACGACACCAGAAAATCCGCATTACGCTGCGCCAGGTACTTGCCCCGTTCGGTCTGCATCGTCAGCGGCAGTTTCAGCAGCTTGGTTTGAAAATGGTCGAGCGCGAATTGCTTATCGTTAAGAGGCCGTCTGTCGGCAAAGGGATCGTCGGCATCAAACAGCGCGACGCCCAGCGCGCCGGAGACCGCGAAGACCCGCGCCAGACCAATGGCGCCCAACGCCTCCAGCCTGTCTGCATCCTGCACGATTTTTGCCTCTGGCGTGGTAGGCGCAATTTTTGCGCTGAAACTATGCGCTTCGATAGCATGACAAATGCCCGTCAGTTTTTCTGCCGGAAAGTCAGGAAAATCCCGCAGAAAAATACGCCGGGTTTCTGCCGCCGCCAGAATGGAAGAACGATGCCGCTGCGGATGATTTTTCGCCAGGCTGACGATGTCATGGAAATAACATGCCGATAGCACCACCAGCCAGTCGACAGGAACGTTTTC [...]
+NODE	22	3982	211514	209357	0	0
+ATCTCGTCGATCACGTCCGCATCTTTACGGCATTCGACATGCGCGGTGGCGCGAATCTGATCGTCAACGCTAAACAGTTTCTTCGCTTTCGTTCGGCTCATCACACGCCCGGCGCCGTGGCTGCACGAACAGAACGACTCTTCGTTACCCAGCCCGCGCACGATAAAGCTTTTCGCCCCCATCGAACCGGGAATGATACCGAACTCACCGCGCCGCGCCGAAACTGCCCCTTTACGCGTCACATAGATCTCTTCGCCAAAGTGCTGCTCTTTTTGCACATAGTTATGGTGGCAGTTGATCTCGTCCATATCGAGGGCGATCGGTTTTTCCACGCAGCGCTGGAGCGCCGCCAGCGCGTTTTCCATCATCGCCTCGCGGTTCAGGCTGGCGAATTGCTGCGCCCAGTGTACCGCTTTCAGGTAATCGTCAAAATATTCGCTTCCTTCATTAAAATACGCCAGATCGCGGGACGGCAGCGTTTCTAACTGCTCC [...]
+ACGGGCCGCTGAACTGGTGGCGGGCCAGTTTTAGTTCATAGATGCGACGGGCGAGAAACGACTTGCCCGCGCCGGTCGGGCCATTGAGCAGGATTGGCGAACGGGAGCGTATCGCGACGCGCTCAATTTGCTCAATCATCCGGTTGAAACACGGGTTGCGGGTTGCAATGCCGGACTTCAGGAAGTTGAGCGTCTCCTCCCGCTCCTGGGCGAAGCGGGTGGCGATGTCATTGTAGCGGCTGAGATCGAGGTCAATGATCGTCACGTCGCCCGTGCTATGCGGTTTATCTTTTTTGCGCGGCGGCGAGGTCTGCGCTAATCGCGCCGGTAGATAGCGCGCCTCCGCCAGCAGGAACCAGCAGATCTGCGCGACGTGGGTGCCGGTGGTGATATGAATCAGATAGTCTTCATCTTCGGGATGAAAGGTATGGCTGCGGGCGAAATCGTGCAGGCAGGCGTAAACCTCTTCGAAGTCCCACGGGTTGCGGATCG [...]
+NODE	23	675	36793	36379	0	0
+TCAACAACCGATCCCATAAAATGAATCTGAGCGGTCGGTTTCGCTGTCCCTTCATGAACGATAAAGGAAAGTAAAATCACCGGTATGACGCAACGCATAGACTTCATTTTACTTTCACTCCTGTGCGTTCTCCTCTGAGCGAATATCACCCCTTCGCTTTCTGAATCGCCATTTGCAACATATCCTGAGTCGTGCTTCCCGGGATCACGGTCACCCGTTTTACATCACCGTTTTGCGTCTGAGGCATGACGACAAAAGCAGGCGTGCCGCTAAAGTCCATATGCTGCGCCAGTGCCTGGTTAGTGAGGAGCGCATCATGTACTGCACCACTGCTTTGCGCTTCTTTTACGGCGGCCAGCTGCGTCGGCGTTAGATAATGTTGCGCCAGGGTATAGACATCGTGTTCCGTTAACGCGCCTTCCACCTTCCCTGTGGCATAAAGCGCATTATGCCAGTCGAGATATTTCGCCCCACCCTGGGTAAGCCATACCT [...]
+TGGTGCAGCAAAATGGCGCCTGTGGTCGAAAACCTGATTAAGACGAACCCGGATACCCGGTTTATTTTCAAAGAGTTTCCTATTTTTTCCTCCCGCTGGCCGGTATCCGGACTGGCGGCCAGAGTTGGCGAGCAGGTATGGCTTACCCAGGGTGGGGCGAAATATCTCGACTGGCATAATGCGCTTTATGCCACAGGGAAGGTGGAAGGCGCGTTAACGGAACACGATGTCTATACCCTGGCGCAACATTATCTAACGCCGACGCAGCTGGCCGCCGTAAAAGAAGCGCAAAGCAGTGGTGCAGTACATGATGCGCTCCTCACTAACCAGGCACTGGCGCAGCATATGGACTTTAGCGGCACGCCTGCTTTTGTCGTCATGCCTCAGACGCAAAACGGTGATGTAAAACGGGTGACCGTGATCCCGGGAAGCACGACTCAGGATATGTTGCAAATGGCGATTCAGAAAGCGAAGGGGTGATATTCGCTCAGA [...]
+NODE	24	40	2259	2216	0	0
+ACCCACCCGCTAACAAACACGGTGCACAGTACCGTCAGCA
+TGGATGGAAGATGCGCAGCGTTTACCGTTATCAAAGCTGG
+NODE	25	1411	81309	80153	0	0
+ACCACCTTGCCGATCACGTCATCTTTCTTCTCTGAGATGTAAAACTGATACAGCCAGCCGATCACTTCGACCTGTTCCCAGTCTTCTGCAGGAATGGTGTCTACCAGCCCACGTAGAATGGAGTCGGTGCGGGTCAGATTATCCGGCAGCACTAGCTCAATTTCATCATTAACTGCTTCGAACAGGAAAGGCATTGCACCGTGCAACGCATGACACTGGGCAAGCAACAGTTCCCGGTACAGCTCTTCGTCACGATCGCCCGCCAGCTTCATCTCCACCAGGCGCACTTTGTCCAGCCCAAGAGCATCAGCCACTTCCGGCACATGATCCAGCACCTCAAAACCCCCTGCCAGCGTCGGGTGAGACAGCATACGGAAACCGTGCTCCAGATAGCCATGTAGCTCCATATAGCGAATAGCGCAGAAGCGGTTAAACCAGGTGTAAGCAATGTGCTCCACCAGCACGTCGTAGCCCTGCTTTTCTGCACGCTTG [...]
+AATGCGCTGGATAAAGACGAAACGGCTCAAAAGGCGTTGCAGGATTTGGAGGGCATCTACAGTAAGGCACGACCTTACGGAGAGCTGCACCGGATTATCCCGCTGATTGAAACCGTTGAAACCATCAACCAGCGTCTGGTGGAAGAATACCGAAACCATGCGCTGCAGCAGATCGATGTCCATATCAATGAACTGAAGCAAAGCATGCTAGAGATGCTCGTCCCTGCTGACTTGCAGCACTCGCTTTTGCACCCGATGCAACAATCGCGTAAGAAAGTAGAGCAGAACGGTCTGATCCCGCAAATCATGGAAGAACAGGCTGAGGTTCGGGCGCTACAATTTAAAGCAAACGAACGACTGAACGGTTGGGTTGAAGAACAGCGTAAGAAAGTGCCAGAACCCAAACCCGCCCCTCAGCCAGGGGTTATCGACCCAGTAGTTAAGCCTGAACCCAAGCTGAAAAAGACCATCTACGTGAACACGCGTAAAACG [...]
+NODE	26	3882	207784	206721	0	0
+CCCGCCGCGGACGATATTTTGATTGTCGATGACGCGCTGGAGCATACCTGGCAGGGGAGGGCGGCGGTCGTCTTTTGCCGCCGTCATATCGGGATTCCATTGGAAAGAGCGCCGGGCGAGTGGGTGCATAGTGTGGCGTCGGTGCATGAGTTGCCCGCGCTGTTGGCGCGTATCTATAGTATTGAGCTGGATAGTGAAGCGCTTTCCAGCGCATTGCCGACGACGGATAAAACCGCAGATTCAAATGACGACATGATGATTCTGGTCGTTGACGATCATCCGATCAATCGCCGTCTGCTGGCCGATCAACTGGGATCGCTGGGATATCAGTGTAAGACAGCCAATGATGGCGTGGACGCTCTGAATGTGCTGAGTAAAAATGCTATCGATATTGTTCTGAGCGATGTGAACATGCCGAACATGGACGGCTATCGCCTGACGCAGCGTATCCGTCAGCTTGGGCTGACGCTGCCTGTCGTCGGCGTGACGGCG [...]
+GCCGCGACCACTACGCCATCGACAGGTGAAGGACTTCAGGAAACGCGTCTGAAGCAGGATGTGTATTATCTTGAAAAGCCGCGACGTAAAACTGAAGCGCTGATTTTCGGTTCCCATGACAGCGCCACGCTGGAAATGACGCAGCGTATGTCAACTTATCTGGATACGCTGTGGGGCGCGGAAAACGTGCCGTGGTCCATGTATTACCTCAACGGACAGGATAACAGCCTGATTCTTATCTCTACCCTACCGTTGAAAGATCTCTCTTCCGGCTTTAAAGAGTCCACTATTGGCAATATCGTCGATTCCCGCCGGGCAGAGATGTTGCAGCAGGCGAATGCGCTGGATGAGCGCGAAAGTTTCTCCTCATTGCGAAAACTGGCCTGGCAAAACGGTCACTATTTTACGCTGCGCACGACCTTCAATCAGCCAGGACATCTGGCAACCGTGGTGGCGTTTGATCTGCCCATTAATGATTTAATCCCGCCGGGA [...]
+NODE	27	11576	615819	612398	0	0
+TATTGTGCTTCCCGGTCTGCTGGACGGACAGAAAAAGCATTATCAGGATGAATTTGCTGCGATTCCACTGGTACCGAAGCCTGGCGACCGCGATGAGCCGGATATGATGCCTGCCGCAACGCAGGCGCTGCCGACACAGCCGCCGGAAGGGGCGGCTGAAGAGGTACGGGCGGGAGATGCGGCAGCGCCGTCTCTGGACCCGTCGCGCATGGCGTCTAACAATGTCGAGCTTGATCCGATACCGGTGGAGACGCCTAAACCGAAGCCGGTTGAAAAGCCGAAGCCGCAGCCTAAACCGCAACAGCCGGTTGTCGCCGCTTCCACGCCGACGCCCGCGCCGCAACCAGTCGCCGACGATAAACCTGCGCCGACCGGCAAAGCCTATGTCGTACAGTTGGGCGCGCTGAAAAACGCGGATAAAGTCAACGAGATAGTCGGCAAGCTTCGTTCCGCCGGGTTCCGGGTTTATACTTCCCCCTCAACGCCGGTACA [...]
+AATCGGAATAGATAAGATCCTGGTTGGCATAAGCCACCACATCCACACCTTTTGTGCGCCAGTTATCATTGGCGTAAGCCTCTTGCGTGGACCCTTGCAGCACGCCGACATGCTTGCCTTTCAGCGATTCCAGCGTCGGCTGAATGGGAGACCCTTTTGCCGCAATCAGGCGTGAATCCGCCGCGTAAAGTTTGTCGGAAAACGCAATTTCTTGCTGGCGTTTATCGGTGATAGAGAGCGATGAAATAATGGCATCAATTTTTTTCGCTTTTAGTGAGGGAATAAGCGCATCAAAGTCGCTGGCGACCCAGGTACATTTCACCTGCATACGCTTACACATTTCATTACCGAGATCGATATCAAAGCCAATAAAGTCGCCTTTGGCATCTTTCGATGAGAAAGGCGCGTAGGTGGTATCTGTTCCAATACGAACCGTTTGCGGAAGCGCGGCGTAACTGGCCGCCGTCGCGCCCAGACCTATCAGCAAAGACA [...]
+NODE	28	17891	957362	942141	0	0
+AGCTGTTTGTCGCCGGTATTCGCGAACTGATGGCCAGTGAGAACTGGGAAGCTTATTTTGCCGAGTGCGATCGTGACAGCGTCTACCCTGAGCGTTTTGTAAAAGCGCTGGCGGATATGGGTATTGATAGCCTGCTGATCCCGGAGGAACACGGCGGTCTGGAAGCGGGTTTTGTTACCGTCGCCGCCGTCTGGATGGAGCTGGGACGTCTTGGCGCGCCAACTTACGTGTTGTACCAATTGCCGGGAGGTTTTAACACTTTCCTGCGTGAAGGAACTCAGGAGCAAATTGATAAAATCATGGCGTTCCGGGGCACCGGTAAGCAGATGTGGAACTCTGCTATCACTGAACCGGGAGCGGGATCGGATGTTGGTAGTCTGAAAACCACTTATACACGCAAAAATGGTAAGGTTTATCTCAATGGCAGTAAGTGCTTTATCACCAGTAGCGCCTATACCCCGTACATCGTGGTCATGGCGAGAGACGGTGCAT [...]
+ACAAACGCTGGCGAAATATGCGACGTTATTTGCTGACGGATGCAGAATAGAGTGAATCTAATATTTAAACGCATTTATTTGCAAAAGGATGTATTGCGTCGCGAGTCGGTCGCCATGTTTCTGGAGGGCGTGGGACTCGCCCTGGAAGATGATTGTGAAATCGCGGTATGCGCATATTGGCAGGGTGAGATAGTTGGATGCGGCTCGCTGGCCGGAAACGTACTGAAATGCATCGCCGTTTCCCCGGTTTTACAAGGGGAAGGGCTCAGCCTCAAACTGCTGACTGAGCTGCTTACATTGGCCTACGAGTTAAACCGCAGCGAGCTTTTCCTGTTCACTAAGCCGCAAAATCGGTTGCTGTTTTCTGGCGCGGGGTTTTGGCCCATTGCGCAGGCAGGTGAGCTGGCGGTGTTAATGGAGAACAGCAGTGAACGGTTAGCGCGCTTTTGTCGCCAACTGGCGCTTTATCGTCAACCGGGAAAAACGATCGGC [...]
+NODE	29	111	6115	6115	0	0
+CGGATTTTCGGGAACGAAAGATAAAAGATTCGTTTCCGGCAACAGAATTTGCCTGGCGGCCGTAGCGCGGTGGTCCCACCTGACCCCATGCCGAACTCAGAAGTGAAACGC
+GGCCGCCAGGCAAATTCTGTTGCCGGAAACGAATCTTTTATCTTTCGTTCCCGAAAATCCGGAATCAGTGCTGAAAATCTTCTCTCATCCGCCAAAACATCTTCGGCGTTG
+NODE	30	14	6917	6664	0	0
+CGTAGCGCCGATGG
+GACCACCGCGCTAC
+NODE	31	3	1467	1450	0	0
+TAG
+TGG
+NODE	32	4295	254069	251439	0	0
+CGCGTTATCGATCTGGTCGAATGCGCGGGCGGCACCGCCGTAGGTTTTAGCCAGTACGGTAGTAATGGCAGCGGTCAGCGTTGTTTTACCATGGTCAACGTGGCCGATAGTACCGACGTTAACGTGCGGTTTTGTACGTTCAAACTTTTCTTTAGACATCGATTGTCCCTCTAAGACACGGATAAATCGGTGATATCACCACATCAACCAGGCAACACGCCCGACTTGTTGAATGCTAATAAACAGAAGAGAAAAACAGGAAGGAGAAAGGAAGTGGTGCTGATAGGCAGATTCGAACTGCCGACCTCACCCTTACCAAGGGTGCGCTCTACCAACTGAGCTATATCAGCACATCTTGGAGCGGGCAGCGGGAATCGAACCCGCATCATCAGCTTGGAAGGCTGAGGTAATAGCCATTATACGATGCCCGCATCCTGGAACTCGGCTACCTGATTTTCATTCTGCACTGAATATCGAGAGAAACTCTCTTTA [...]
+AAAGACTGGGCCTTTTGTTTTATCTGTAGTCTGCCGGATGGCGGCTCCGCCTTATCCGGCCTACAGGGACGCGCCGATCCACCCTCAATATAACCACAAGCCTTCCCAACACAGATACGGTAAACTATTGCCGATTGAGTATCAGGAAAGCAGCCATGACCCACTCCCTAAAACCCTGGAATACCTTCGGCATTGATCATTGTGCAAAGCACATCGTATGCGCTGAAAACGAACAACAACTACTGAGCGCCTGGCAGCAAGCAACTCGTGAGGGACTGCCGGTTATGATCCTGGGTGAAGGAAGCAATGTCCTGTTTCTGGAAAATTACGCCGGCACCGTGATCCTTAACCGCCTGAAAGGCATTGAGGTCAATGAAACCGCGGACGCCTGGCACCTACACGTCGGCGCAGGCGAAAACTGGCATCAGCTGGTTCGCTACGCGCTGGATAACAACATGCCCGGCCTGGAGAATCTGGCGCTCATCCCTGGCT [...]
+NODE	33	9595	474338	470715	0	0
+CGAAATTTCACCCAATGCGACTCCATGTTGATTGGCGCGGACTGCGGCGCGCATACGTTCCCGTATGTTGAATGCCGCAATAACAGCGCGCAGCTGGAGCACGAGGCGACAACATCACGCATCGGTGAAGATCAGCTTTTCTATTGTCTGCAACGCGGCATCAGCGAAGAAGACGCTATTTCGATGATCGTCAACGGTTTCTGCAAAGACGTTTTCTCGGAACTACCGCTGGAGTTCGCCGTTGAAGCGCAAAAACTGCTGGCGATTAGCCTTGAGCACAGCGTCGGTTAATGATGAAGGAAAAACCATGTTAAGCATTAAAGATTTACAGGTCAGTGTGGAAGAAAAAGCGATTTTGCGTGGCCTGAATCTGGAGATTCGCCCCGGCGAAGTTCATGCCATTATGGGGCCGAACGGTTCCGGGAAAAGCACGCTCTCCGCCACTCTGGCGGGACGTGAAGATTATGAGGTCACCGGCGGCTCGGTTACGTT [...]
+CGGAAGAAGCCGTTCATGTTCAGCGATCTAATGCGCAGTTCGCCGCCGACCCTACGGGTTATCACATTTTATGGGGAACCAATGAACTGGCGGCAAATGGCAAACTTGCCGACTGGGATATTACGCCCCATTTATGCCAGATACGCTGTCCTGTTCTGGTATTACGCGGCGAAAACGATCAGGCAACCGAGCGCGTCGTCTCTCCGCTGCTCTCTCACATTTCAGACTGCCGCGCGGTCACTATTCCCGGCAGCAGCCATAACCCACATGAAGAAAATATCGCGCCCTGCCTCGCAGCGGTAAGCGCGTTTTTACGCGATCTGGCATAAAAAGCCATTAAGGTATTTATCATGAAAAAAGTCAAAAAATTGTCTCTTACCGATTTAGTGCTTTATGGTCTGGTGTTTATGGTGCCTATCGCGCCAGTCTCTCTTTATGGCGTCGTTTATAATCTTTCGCACGGTATGGTTGCGCTGGTTTATATTATTGGCG [...]
+NODE	34	51	2884	2836	0	0
+TATATCTTTAAGCAAAAAAAAGAGCGACCTGAGTCGCTCTTACCAATGACT
+ACCCGTCATACTTCAAGTTGCAGGTGTGTTGGCTATGCTTTCTCACCCGAA
+NODE	35	2091	114298	113020	0	0
+GTGTCATCTCAACTTATTTGGAGATGTGAGCAATCAGGTCCAGTACTTTGTTGGAGTAACCGGTTTCGTTATCGTACCAGGAGACCAGTTTCACGAAGTTGTCGTTCAGCGCGATGCCTGCTTTAGCATCGAACACGGAAGTGCATACTTCGCCGTTGAAATCGGTAGATACAACGTCGTCTTCGGTGTAACCCAGAACGCCTTTCATTTCGCCTTCGGCAGCAGCTTTAACAGCAGCTTTGATCTGCTCGTAGGTAGCCGCTTTTTCCAGACGAACGGTCAGGTCAACAACGGATACGTTCGGAGTAGGAACACGGAACGCCATACCGGTCAGTTTGCCATTCAGTTCAGGCAGTACTTTACCTACCGCTTTAGCAGCGCCAGTAGAGGACGGGATGATGTTCTGAGATGCGCCGCGGCCGCCGCGCCAGTCTTTGTGAGACGGGCCGTCAACGGTTTTCTGGGTTGCGGTAGTCGCGTGAACAGTAGTCA [...]
+AAATCCGCTTTGAGCTGCTGCTTGCTTTTCATCACCATCTGACCGTGAGTATCGATCGTCATATGTTGCGCTTCGGTATTGTGCCGCGCCTGCCATAGCATCACCAGCTGCAGGCTGTTTTCTTTCTGTTCCGGCGTCAACGCCACGCCATCCGGCCATTTACCCAGCTCAACGGCGGTGGATAAACGTTGATACACTTCCGGCGTCATGCTGTTAATGATCTCATCAAGATTCATGATGTGTCCGCTCCTGTGGAATAATTTGCTGAATCGTTTTTTCAGCCTTTCAGTTGATCGCCGTTTTTCTCGTCAGAAAAGGCCAGCGAGGCCGAATTAACGCAATAGCGCTCACCGGTTGGCTGCGGACCATCCGGGAAAACGTGTCCGAGATGCGCATCGCAGTTACCGCAACGAATTTCGACACGCTGCATGCCATGAGAAAAATCGTCTATGTAACGAATCGCCTCTTCGCTGACAGGCTGGTAAAAGCTAG [...]
+NODE	36	7116	402455	398230	0	0
+CTAATTATAACCTGTTTTAGGGGGTAATACTGTTATTTTGTACAGGCATATAACGTAAAAGCCGATATCCGCTGTAATAAAAAGTTTCGCGCAGTAAGAAGCGGGTTTGCGCCCACCAGGATTTATAGCGGGTGGATCGCGTGGGTGATGAGCGGCTATCGATACCATTATCCTGAGCGATAGTTTTCAGACGCAGCATATGCAGCGGATCGCTGACCAGTAACGCTGTGCGCCATCTTAACTCCAAAGGGTACTCCCGCCGACATAAGGCGGGAGGGGAATTTGGACGGGCTTGAAAAGCCCGAAGGATCATCAGCCACGCTGTTGTTGAATGTATTGCTTCACAACTTCCAGCGGCGCACCTCCGCACGAGCCAGCAAAGTATGACCTCGACCAGAGCACGGCTTTTCCGTATGCTCCCCGCAAATCAATAAATTCGTTTCGCAGACGGCGGGATGTCACAGCTTTCAGTGAGTTAACCAGTACCGAAAG [...]
+ATCACTCGTCTGTGCCATAAGCCAGGCAAGGTCGACTACTCCCGCTATATTGGCGGCATTTACTCCAGCGAATGGTTCTGGGCGAAGATTCTGCACGTCACCCGCCAGGATAGCGCCGTCGCGCAGGCCGCCGTCTCGTGGATTGAACTGTGTGACTGGGTGCCGGCGCTGCTTTCCGGCACCACTCGCCCGCAAGATATCCGCCGTGGCCGCTGCAGCGCCGGGCACAAAACGCTGTGGCATGAAAGCTGGGGCGGTCTGCCGCCCGCGAGCTTTTTTGATGAACTCGATCCGTGCATTAACCGTCATCTGCGCTACCCGTTATTTAGCGAAACCTTCACCGCCGATCTGCCCGTGGGCACCCTGTGCGCCGAATGGGCGCAGCGCCTCGGCTTACCGGAAAGCGTGGTGATTTCCGGCGGCGCGTTCGACTGTCACATGGGCGCGGTCGGCGCGGGCGCACAGCCCAATACGCTGGTAAAAGTCATCGGC [...]
+NODE	37	4601	325811	324435	0	0
+GTGAATAGTATGTTAACTCAAAGGTATGATATTAAGGTAGCGATTGATGCGTTCAGATTTTACGCAGGCTATTTTATACAATTATTATTCAGTACTTCTCGGTAAGCTTAATACGCACCATCTCGCCGCAAAACAACTTTCGCTGTTTTAAACAGAATGGCAATATCATTCCAAAGCGTCCAGTTTTTAACATACCAGGAATCAAAATAAACACGAGTGTCATAATCAACATCATTACGCCCACTCACTTGCCATAGACCTGTCATGCCCGGCTTTGCCATCAAATAATAATCAACATCATCACAATAACGCTCCAGTTCATCCGAAACGATAGGTCGTGGTCCAACCAGACTCATATCACCTTTTAGTACATTAAAAAGTTGTGGCAACTCATCAAGGCTAGTTTTACGTATAAATCGACCTACAGCTGTGATTCGAGGATCATTTTTCAGTTTAAAATCTTTTTCCCATTCAGCTCTGGCAATAGGATCG [...]
+CTTTGTTAATGAAAAGTGGAATCTTTTCAAAACAGAACAGATTATTAAACGTTAATTATGGTTTATTGAATGTCTAAATTAATACCAGTAATAATGGCCGGTGGGATTGGTAGCCGTTTGTGGCCACTTTCACGTGAAGAGCATCCGAAACAGTTTTTAAGCGTAGATGGTGAATTATCTATGCTGCAAAACACCATTAAAAGATTGACTCCTCTTTTGGCTGGAGAACCTTTAGTCATTTGTAATGATAGTCACCGCTTCCTTGTCGCTGAACAACTTCGAGCTATAAATAAACTAGCAAATAACATCATATTAGAGCCAGTGGGGCGTAATACAGCCCCAGCTATAGCGCTGGCCGCTTTTTGTTCACTTCAGAATGTCGTCGATGAAGACCCGCTTTTGCTTGTCCTTGCTGCGGATCATGTCATCCGCGATGAGAAAGTGTTTCTTAAAGCTATCAATCACGCTGAATTTTTTGCAACACAAGGTAAG [...]
+NODE	38	2718	148567	144958	0	0
+CGACATCAAGAACGCCAACCTCGTCGTGGTGATGGGCGGTAACGCCGCAGAAGCTCACCCGGTCGGGTTCCGCTGGGCGATGGAAGCCAAAATTCACAACGGCGCGAAGCTGATTGTGATCGATCCGCGCTTTACGCGTACCGCGTCGGTGGCCGATTTCTATGCGCCAATACGCTCTGGTACTGACATTGCCTTCTTGTCAGGCGTGATGCTGTATCTGCTGACCAACGAAAAATACAACCGTGAATACACCGAGGCCTATACCAATGCCAGCCTGATCGTGCGTGAAGATTTTGGCTTCGATGATGGTCTGTTCACCGGCTACGACGCAGATAAGCGGCAGTACGATAAAACCAGTTGGCACTATGAGCTGGACGAAAACGGTTTTGCCAAACGCGATACGACACTGCAACACCCGCGCTGTGTCTGGAATCTGTTGAAACAGCATGTCTCACGCTATACGCCGGACGTGGTAGAAAATATCTGCGGTAC [...]
+TTCCACTTCCGAGAAGCGCATCACCGTCCAGGATTTCGCGGTTAAGTCCGCCGGGTTGTCATACACCCCGACGTTATTGCCCACTTCATCACGGATGTCGTTCCACTCGGAGCACGCCACCTGACACGCTTTACAGCCGATACAGGTGGTGACGTCGATGAGTTTCGCCACCTCTTCCTGGTGGTCCCGCGCCTGGGGCGCGGGGGTGAAACCGTTAGTGGCGGAACGACGAATGATGTCTTGCGATTGATAAGCCATAGGTCGTCTCCGTTACACCTTTTCCACGTTCACAAGGAAGGATTTAAACTCCGGCGTTTGCGTGTTCGCATCACCGACGAAAGGCGTTAACGTATTGGCGATAAAGCCTTTTTTCGCCACGCCTTCGTAGCCCCAGTGAATAGGAATACCGATGGTATCGATATCCTTGCCGTCCGCTTTCAGCGTGCGAATACGCTTGGTCACCACCGCTTTGGCTTTGATATAGCCGCGGTT [...]
+NODE	39	6333	369013	367271	0	0
+TTCAGCAGCAGATTAGCCATCGCGGCCACTGCGGGGCCAAAACGAAAACTCTGTGTCATCCAGAGACGGTCGGCACCGGCCAGAGACGGATGAGACAGGGCATCATCCGCGCCACGAAAACGGTAGATCTGCTGATACCGGTCACCGACCAGCACAATCCTGCACCGCTGTCCCAGTACAAGAGCGGAAGTCACCGGATTCGCATCCTGCGCTTCATCAAACAGAATGGTGTCCCATCTGCGCGAGAGATCAGGTCCGGAGAGCTGAAACAATTTGAGATAGGTATCATGGGTGACCGGAAACGTTCCATCCGGATCGCTCATGGCCTGCCAGAGCGTCCTCACAGCACGAAGTGCCTCATCCGGAGCAACGCCTTTCATTTCGTCCTTGTCCGGCAGATGCTGCCTGCCGGGGGTTGCATCCGCTGAGCCGATAAACTGATTCAGCCCTGTCATGGCCACCCGGGCCAGTGCCCAGTATCGGGTATTCAGT [...]
+AGTTGTCTTGTGACGGAGAGAAAACGGACAGATGGCTCGCTGAAGCGCTCTGCCAGCTGGTTAGCCGGGAGTAGCGTCTGTATCTGCAGGTCATACTCTTTCCACGGTGGCTGGATGATGTTTCCGTTTTCATCAGTGAAGCTGTTATTGACTTCCTGCCAGTCAATCTGCAGTTGAACTGACTGTGCGAGTGTGGTCAGTCGTTCCTGCAGGTCACTGGTTTCCGGAAGGGAATCAACCGGGACAGGATTATCCGGGAGCCGGAATGTGACCGGCAGTGCAACACCGCCAGAGTTCCCTTCAGGCATCACAATAAACGGCCGGGTGTCTGTGAGTTCAGTGATGCGCCGGATGAAGGCTGTCACTGTCGTGCCTGCTGTATTGGTGTATGAAGCCCGCAGATTACCGCTGTTACCGTCAGTAGAACATTCAGCCAGGGTATAACGCCATCCGGCAGCAGACAGTGGCGTCTGGTTCCATGTTGTGCTGCAT [...]
+NODE	40	13448	690578	681669	0	0
+GCTGGCTATGCGCCTCACTCACCGCTGGCGCGCCATAATTCAAACGCCGCGCAATAAAACTTTCGCTTAGCGGCGATAATGCGCCGCTGTGCAGCGCCTCGGCCCACAGCAAACAGGTACGCGCGCTTGAGCCGGGAATATACAGCAACGATTCGCCATCGATATCCACCTGCTCACGCCCCTCAACCGCCATCACCAGCAGCGGGAAAAAGTCCGGTCGATGCTGACGGCACCAGCGCAGCAACAGATCGTCAAGCTGGGTAGAAGGATGCGCCCACCACTGCGCGTAAAGTTCTGGCAGCAGGCTATCGCCTTCACCGCAAAATACGCGCTGGGCTAAGTAGTAATAACCCGGCGTTGCGTTATCGGGTTCGGCTTCCTGCCATGCCAGGGCGACAGGCAGCAGCTCCGCAATACCCCAGTGCAAGGTGCTGAACCAGCGTAACAGACGTCGTTGAAAGCGTAGATTGTCCGGGATAATCCAGGCGCCGT [...]
+TTTATCAGGCGCTTTGTCAGCTCCCCCTGCTGACGGTCTATCCCGGGCGGGCAAACTATCTGTTGTTACGCTGTGAGCGAGAGGATATTGATCTGCAGCGACGGTTGCTGACGCAGCGGATTTTAATCCGTAGCTGCGCTAACTACCCGGGGCTGGACAGCCGCTATTATCGTGTGGCGATACGCAGCGCTGCGCAAAACGAGCGTCTGCTGTCGGCGCTGCGCAATGTGCTTACCGGTATAACCCCTGCTGATTGATGTAGTTCAGCACGTTTTCCGGCAACAGATCGTCGCAGGATTCGCCTTTTTCCAGCCGTTCGCGGATGAGGGTTGCGGAGATATTAAGCCAGGGCGTTTCCGCCAGGTAAATTTTACCGGCTGGCAACTGGTGCAGATCGTCCGGCGTATGGGTCAGATGCTGTTCCAGCCACTGCTGGTGTTGCGCCTGCGTCATTTCAAGGGGGTAGCCGGGACGACGACAAACGATCAGGTG [...]
+NODE	41	6087	310668	308282	0	0
+GGAAATCGCCACCACATTGCGTTGCGGATCGGCAGCACAAACTCCTAATGCCGCCGGGATTGTCCAGCCAAGAGGCCCCGCCTGGCCGCAGTTGATCCAGTGTCTGTCTTTAAACACATGCAGCATCTGCGCTGCCGCGATTTGCGACAATCCAATGGTGGTGACATAGCACACATCGCGACCAAAGGCTTTGTTCATCTCTTCATAGACGCGCTGCGGCTTCACTGGCACGTTGTCAAAGTGGGTTTTACGCAGCAAAGTCCGTTTACGCTGCTGGCATTCGTCCACCCAGGTCTTCCGGCATGGCAAACGCCCCGCTTTTTGCATCTCCTGCGCGACATCGATCAGCAACGTTAGCGCCGCTTTGGCGTCCGAAACGATGCCCAGATCCGGACACAACACGCGGCCAATTTGCGTTGGTTCAATATCGATATGGATGATTTTTCGCCCCTGAGTATATTTCTCAACGGACCCCGTATGACGGTTGGCGAA [...]
+TTGCTGAAAATTTTGTTTATCGGCGATTCGGCGGAGCAGCCGGTACTGTCGGAGGTGGCGATCAAGTTTGGCGTCGCGGTCAATATCCTGCATGGCAAGATTGAATATATCGGCGAACGCGCGTTGGGCATTCTGGTGGTGCAATTAACCGCGCCGCATAATCCAACGGCGGTGGCCGCCGCCGTGGAGCATATCCGTCAACGTACCGCACAGGTGGAGGTGATCCGTGGATGATTTATTGCCGGATTTAACGCTGGCGTTCAATGAAACTTTCCAGATGTTGAGTATTTCAACGGTGCTGGCGATTCTTGGCGGTCTACCGCTCGGTTTTCTGATTTTTGTCACCGATCGTCATCTGTTCTGGCAGAACCGTTTTATTTATCTCGTCGCCTCGGTTCTGGTGAATATTATCCGCTCGGTGCCATTTGTTATTTTACTGGTGCTGTTACTGCCGCTAACGCAGCTTTTGCTGGGTAATACGATTGGCCCGAT [...]
+NODE	42	30481	1691282	1675149	0	0
+GCTTTGGCACTAATCTCAATTTGGCTGAGCATCAAACAGTTTGGTATCAAAACACCGAAAAGCGATGCTATGATTCTGGCAGGGATAATATTATCAGGATCATTTTCAGGGGTAATGACCTTTATCTTGTTTTACCTTCTGGAGTGGGCGTTCCAATATTTGAATAAGGATGCGATAAAGAAAAAACTTCCACTGGCGCTGGTCTCATTAACCCTGTTTTTGGTTGGGGTAATTATTGCATTTCCTTATATCGCGACACGACTTGGCGATTTAGGGACGGAAGGCTCATCTTCTTATTATCGTATTGTGGGCCCGTTAGTCATGGTCGGATATTCCTTGACCCATATTGATGGTGTAGTCAGATTTGGCTCACTTTATGAATATGTTGCATCATTCGGAATCTTTAACGGTGCGGATGTCGGGAAAACCATAGACAATGGATTGTATCTGCTGATTATTTATTTTTCCTGGTTCGCAGTGCTAATGACGCTG [...]
+AATTATATAAAGTGCGTAAATAAGCGCAGCAACAAGTATTGCTCCTCTAGTAAGACTCATGCAGATCGCTATAAATAGCACAAAACTAATAATAAGCATCAATAATCTTTTATATCCTTGGGAAAAACACTCCATACATAACAAAACACCTAATGTGAGCATATATCCAAAATTGAGAGCATCACTAAAACCGCCTGTAGCCCGGACCATCCCATCATAGCTATTAATTAAGTTTAATTGTTCTCCTGCATAATGCTCATCATATCCGAGCAATTTAATGAACTCTCCATTCATTAGTACATCAATAATAGATATTGTCGCAACTATAAACATTAGAAAAATTATGTAGCAAACTATTTTTTCAATATTTAAGGATTGCGGGTATGACACTTTTAAAATCACTAATGCTATGAAAACTGCCGGGAATAAAATATAACTCCGCCCCCCCATAATTGCTTGAATTTTATCCGGTGAGAATATAGTTAACGCTAT [...]
+NODE	43	7170	345404	340152	0	0
+GACGTTGGGCTTTCGTCAACTGGCGAACAGTCGCTGGCCTGCGACCCCACTCTATTGCCTGAGCATTAATTCCGCCGAACTGGCGAAAACCATCGCTGGCGACGGCGTACTGAATGTGCGACTGAAATTACGCGGCAGTAGCAAAGATAGCGCCCCGGAATCGTTCATATTAAGTGATGCCTGGCTCCAGGACGGGACGCCGGTCGCCGCCGATGCGCTGACATTAAAATTGAATACGCTGGCTGGCCGTCGCCACAGCGGCAGCCACTACTGGATAGATAGTGGGAGTGTATACCTGAAATGACAAAACCGTTAAACACCACCCAGGCTGTTATCGAGTGGGTTAACAACACGCGCCGTTACGCAACGCGACTGGATGACGAAGCCGACGCTCTGCTGGCGCAACTTACGCTTGCCGCGGCGGATGAGTCAGCGCTCAACGCCGCCTGCGCATCACATGGCTGCGTTGGTCTGTACGGGTATGCGCAATCC [...]
+CAGGCGGCGTAATGGTCATATAAGCAAAATATAACCTCTCCGTTTGTGATAAGGCACAGATTACAGGGGGGAATGATGTTTATTTTAACCATCTGTTTAAGCGCTGTCCGCTAATCTTTACCTGCTCAAATACATAATCACCCCTGTGACTCTCGCGAGGTGTAACATATGGTAAAATGCGTATCTTCTTTCCTCCTGTTCAGCCTGTTGTCCTTTCAGGCAATGTCAGCTGAAAGCCATATTGATCTCCACCAGCCAAAAGACTTTGTCGATATTACTACGGTCGCCCCCGACGTACAGGTAGACATGCGATACTTCACTTCCCATAACTTTATTGGTCGCCCCATTAAAGGCTATAACGCGCCTGTTTGCCTGTTAACACGACCAGCCGCAAACGCAGTGAAGCAGGTCGCCGATCGTTTACGCCCCTTTGGACTTACCTTAAAAATATATGATTGCTACCGTCCGCAAAGCGCAGTGAACGACTTTATC [...]
+NODE	44	11474	633319	623000	0	0
+AGATTTTTACCGAAACCGAATCCGGGGTCGAGCAACAATTTCTCTTTTGCGATGCCGGCCTTCTCACAACGTGCTATTTGCTCAATAAAGTAGCGATTCACCTCGGCAAAGACATCGTCATATTTCGGCGCCTCCTGCATGGTTTTGGGGTTGCCCTGCATGTGCATAAGACTGACCGGCAAGCCGGTTTCCGCTGCCGCTTCCAACGCGCCGGGCTCGGAGAGCGAACGGACATCATTGATAATATGCGCGCCCGCCCTTGCCGCTTCACGGATCACCTCGGGTTTAGAGGTATCCACAGAAATCCACACTTCAAAACGTTGCGCGATTGCTTCCAGTACCGGAATAACGCGATCCAGCTCTTCTTCCACGCTCACTTCTGCCGCGCCTGGTCGCGTTGATTCCCCCCCCACATCAATAATTGTCGCCCCGGCATTCACCATTAAATTCGCATGTTTCACCGCCTCAATCAGCGTGTTATGCGCGCCGCCG [...]
+GCGATCTCTCGCGGCAAAATCCTCTGCCGTAACGCGCAACCGGACACTCTGGACGCAGTACTGGCGAAACTGCGCGATGCTGGCGCGGATATCGAAGTGGGCGAGGACTGGATTAGTCTGGACATGCACGGCAAACGACCGAAGGCGGTCAATGTCCGTACCGCGCCGCACCCGGCATTCCCGACCGATATGCAGGCGCAGTTCACGTTGCTGAACCTGGTGGCGGAAGGGACGGGCTTTATCACTGAAACCGTCTTTGAAAACCGTTTTATGCACGTGCCTGAACTCAGCCGCATGGGCGCGCGTGCGGAAATTGAAAGCAATACCGTCATATGCCATGGCGTAGAAACGCTCTCTGGCGCCCAGGTTATGGCGACAGATCTGCGGGCATCTGCGAGCCTGGTGCTGGCGGGCTGTATTGCGGAAGGCACGACGATTGTGGATCGCATTTATCACATCGATCGCGGTTATGAGCGCATCGAAGACAAACTG [...]
+NODE	45	1247	63283	59502	0	0
+AGATCGCCATACGGCAGGACCAGCGGTAGCTCAGGTCTGGCGACAGGTTATCTTTGATGTAGCCCAACGCGTCCAGTAGCGATGTTGTTTCATCATAAGGAACTTCATAGAAAGCACTGTGCGGCGCGGTATCGGTTTCCGGGTTATAGCGCACCACCTCAACTTTCAGGTTTTTCATCTCAGCCATTCGCCTTCTCCTTCTTATCGGCTGCTTCCGCTTCACCGCCGTAAACACGCTTAGCTGGCGGCAGGGTGGTGATTTTCACGTCGCTGTATTCCAGACGGGTCGTGCCATCAGCATCGCGGAAGGCGAGGGTGTGCTTGAGGAAGTTCACATCGTCGCGCTCGGTACAGCCTTCATCCAGACGCTGATGCGCGCCGCGGGACTCTTTACGCGCCAGCGCAGAGTGCGCCATACATTCCGCCACGTTCAGACCATGACCCAGTTCGATGGTATACAGCAGGTCAGTGTTGAACACGCTGGAGGTATCG [...]
+AAATGGCTACCGTTACCTGCAAGACTACGGCATGGGCCCCGAAACGCCGCTGGGCGAGCCGAAAAACAAATATATGGAACTGGGGCCGCGCGACAAAGTATCCCAGGCTTTCTGGCACGAATGGCGTAAAGGCAACACCATCTCCACGCCGCGCGGCGATGTGGTTCACCTCGACCTGCGTCATCTCGGCGAGAAGAAACTGCATGAACGTCTGCCGTTCATTTGCGAACTGGCGAAAGCCTATGTCGGCGTCGATCCGGTTAAAGAACCGATTCCAGTACGTCCGACCGCGCACTACACCATGGGCGGCATTGAAACCGACCAGAACTGTGAAAGCCGTGTCAAAGGGCTGTTTGCCGTTGGCGAATGCTCCTCTGTTGGCCTGCATGGCGCGAACCGCCTCGGTTCCAACTCACTGGCGGAACTGGTGGTATTTGGTCGTCTGGCTGGCGAACAAGCAATGGAACGCGCTGCGACGGCAGGCGCCGCAAA [...]
+NODE	46	4799	260792	258898	0	0
+GAAAAGGCGATAACGCATGGCCCTTACACCCGTTATGATTTTTACGCATAGCCGCTAATAAAACGGCATTTTTTATATACACATCAAGTTGATAGTGTGTTTCTGACCTTGACGTAAATAAGCGGGAAAAGCGATGAAACACACCATTGGGATACTGGGGGGGATGGGACCTGCGGCAACGGCGGATATGTTGGAAAAATTTGTTGAATTGCGACATGCCAGTTGTGATCAACAACACATCCCGCTCATTGTCAGCTCTATCCCTGATATTCCCGATCGTACAGCATGTCTGTTATCCGGCGGGCCTTCGCCATACCGTTATCTGGAGCGTTATCTGCATATGCTGGAAGACGCCGGGGCAGAGTGTATCGTTATCCCATGCAACACTGCGCATTATTGGTTTGATGATTTACAGAACGTCGCGAAAGCGCGAATGATCAGCATCCTGGACGCTACCCTGGGGGATATTCCGCCATCGGCGCGGTACGTTGG [...]
+CTATATATCCCATTATGATGATTATCGCGCCTTTTCAAATCATCACAATTATAAATAAATCACATCATGAAATTAATTAGATGATTCGTTTTTTATTACCTGCCCGTAGGATTCTTAGGGCGCAAACTGACCCATCAGCGGCTACTGACCTGACCGTGACAATTCCTCTTAAGGCGTGAAAAATTACAGTAAAAAGTAAAATTTAGGTTAAAAAATCCTATTTTTTAACAACGATAATTAAGTGGCGTGAAATTGACTAACGTCAAATTTATTTCTCCTTTTTCCTGCTCCCGGCTCCGGCCTGCGCCAACACCTGTTTCTTTGCTTTTTTACCTCGCGTTATACCGTCCACGGTTCCCCGCGCCTCCGGCAGTAGCGAGGATGGTGATTTTTCGCGCTACTATGCAAGAAACGCATAGCACGATACATACTTGCATTTTGTCCTTACCCTTATGGCTGATAAGGTCTTTCTGTTTCGGGCTTTTTGGCCTG [...]
+NODE	47	17578	948420	936585	0	0
+CCTGGATTCACTGAACGTGCAGAAAGCGTATGATGTAGATAGTAAGGCTGTGACAGTAGCTGCCAATTTAGATATTACTGATCTTAATAAAGACGCAGCCCTTAAAGCAGGCACTGGTGCTACAACAGGTACTGCAGCAATAAAAGATGGCAAAGTTTATTATGATAGTGCTAGCAAAAACTACTATGTTGAAGTTACCGGTCTGACCACCCCTGATGACGGTAAAAATGGCTTCTATAAAGTAAATGTCGCCGATGATGGTAAGGTGTCTATGACCGCTGGTACGGCTATGGAGGCGGGTAAACCAGCTGGTGCGGTAGAAGTAACAAAAACTCAGGAAGAAAAAAATCCATTACCATTATCAACAGATCTCAAAACCTCCCTTAAATCTGGCGGGATTACAGACCCAGAAATTGCTGCTGCCCAGGTTGTCAAAATGTCTTACACCGATAAAAATGGTAAGACGATTGATGGCGGTTACGCTGTAAAGGT [...]
+ACCGATCCCGCCGGCAATAGCGGCCAGCCTTCGGACGGTTTTACGCTGAACATTGACGCGCAGGCGCCAGATGTGCCGGTTATCACGTCCGTGATTGACGATAACAATCAACCGACCGTTCCGGTGTTACCGGGGCAATCCACCGACGATCGGCAGCCAATACTGAACGGAACTGGCGAACCTGGCGCGACAATCACCATTTTTGATAACGGTACGCCGCTTGGCACGGCTCAGGTAGGCGAAAACGGTAGCTGGACCTTCCCGGTGCCCCGCAATTTGTCAGAGGGAAGCCATAATCTGACGGTTAGCGCTACCGATCCGGCGGGCAATACCAGCGCGGTCTCCGCGCCGTGGACGATCGTGGTCGATATTACGCCTCCGGCGATCCCGGTTCTCACCTCCGTCGTGGATGACCAGCCCGGTATTACCGGCAACCTGGTTAGCGGGCAGCTAACGAACGATGCGACGCCCACCCTGAACGGGCGCGGAGAG [...]
+NODE	48	5964	342736	338066	0	0
+ACGTATGTGGTTACTTGACCAGTGGGCAGAGCGTCATATTATCGAGGCACAGCGTAAAGGCGAGTTTGATAATTTGCCTGGCCGTGGCGAGCCGCTTATTCTGGATGATGATTCTCATGTGCCGGCGGAACTTCGTGCGGGTTATCGCTTACTCAAGAATGCGGGCTGTCTTCCCCCTGAACTGGAGCAGCGCAGAGACGCTATTCAGTTACTTGATATCCTCAACAGTATCCGGGAAGATGACCCTCGATACCATCAGGTTAGTCGCCAGCTCTCGCTGCTTGAACTAAAACTTCGGCAGGCTGGGTTGAGTACCGACTTTTTACACGGTGAGTATGCAGAAAAACTGCTGCATAAAATCAACGATAATTAACGGAGCTTGTATGTATCGCATTGGTGAGCTGGCAAAGCTGGCAGACGTAACGCCTGATACCATTCGCTACTATGAAAAACAGCAGATGATGGATCATGAGGTACGTACTGAAGGCGGGT [...]
+GCTGTCAATCAGGTGGGGATTTGTCTAGAATAGAGGTAATAATCTTTTCAACTCCTGAACACAACTCTGGATAATTATGTCAGTTTTGCAAGTGTTACATATTCCGGACGAGCGCCTTCGCAAAGTCGCAAAGCCGGTTGAAGAAGTGAATGCAGAAATTCAGCGTATCGTCGATGATATGTTCGAAACGATGTACGCGGAAGAAGGTATCGGTCTGGCCGCAACGCAGGTCGATATCCACCAGCGGATCATCGTGATTGACGTTTCGGAAAACCGCGACGAGCGCCTGGTACTCATTAACCCGGAATTGCTGGAGAAAAGTGGCGAAACGGGTATAGAAGAAGGCTGTCTGTCGATTCCGGAACAGCGCGCTTTAGTGCCGCGCGCCGAGAAAGTGAAAATCCGCGCGCTGGATCGCGACGGCAACCCGTTTGAGCTTGAAGCGGATGGTTTGCTGGCAATTTGCATTCAGCATGAGATGGATCATCTGGT [...]
+NODE	49	7978	419053	415058	0	0
+CAACTAATTAAAATGTTTTTGCGCACTTTCATATGAAAATTTACTTAAGGTATTGTCTGTAAGCGTCTTGTAAGACAAGGTGAAACAGGCGATTCTATCTTCGTCGACAGGGAGTCGTACAACGAAGCGAACGTCAGGATGATGACGCTTCAGCAGGACACGCCAGGATGGTGTTACAAGGAAAGGCTTCAGGATGAAGCAAAGTGGAAAGCGCAGGATGCGTTAAAGGACACCTCCAGGACGGAGAACGAGAGCCGATCAGGATGTTCGGCGGGTCTGGATGACCAGGGACGCTTCAGGAAGAAGCTATCACATCGGGCGATGTGCGCAGGATGCAAACGTTCAGGATGAACAGGCCGTAAGGTCACAGGAAAAGTTGTCACGGATGAGCAGGGAGCACGAAAAGTAGCTGGAATGCTGCGAAACGAACCGGGAGCACTGTTTATACAGTGCTCCCTTTTTTTTGTTATTCTTCGCGCCAGATTTTCATCA [...]
+TGGATAATGTCGCGCGTGAAGCGAAGAAGATATTAGGCTGATATTCGCCGGATGGCGGCGTGACCGCCTTATCCGGCCTACAACTCAGCGTAACTGTTGCCCCGCTTTCAGCGTTGCAGCCACGTTGCGCGCGGTCATTCGTACGTTTTCACTCGCATTCTTCAGCGCGTCCTCCAGCGTGCAGATGGTATAAATCACGCTGAAAACCGCATCAAGCCCATGTTCATGAACCACGCCAACGTCCGCCGTCAGGCTACCCGCGATACCAATTACCGGCTTGTTATACCGTTTGGCGATGTTTGCCACGCCAATAGGGACTTTACCGTGAATGGTCTGGCTGTCGATGCGTCCCTCGCCGGTGATGACTAAATCAGCATCCGCAAGACACGCTTCCAGATGAAGCGCATCGGTGACAATCTCAATACCACGCCGTAGCTGCGCGCCGCAAAACGCGTATAACGCCGCCCCCATGCCGCCTGCCGCTCCGCCGCC [...]
+NODE	50	2088	120640	118316	0	0
+GGTACCACGGTGGTAGATATTGAAGGGCGTCTTGGGCAGCCCGCCAACGCGCAGGTGGCGCTGGCGCTGGATGTGGACGGTTTTCGTCAGTGGGTGGCAGAGGTGTTTGCCTGTGCGCCGTAATTACATGTTGGCGCCATAATCTCATACTTTGCCGCGATAGAGTCTCTCCGGCCTGCCCACTTTCCCGTAGCTGATCTCCGCTTCGAGAAAGTTATTTTTCACGCCTTGTTCCAGATAGCGTCGGGCAGTGGTTTTACTGCTGCCCAGAATTTGCGCCAGAGTGTCTGCTGTATGTACTGCCTGCGGGTCGGCGAATATTTGTCGTACCCGGTTGAAGGTGTTTTCATCAATTCCCCGCAGTCCGCTATTCGGTTCTGCGGTTTGTTCTTTGGCCTGGATATTAAATAAGGCATCAACGTGCGTCTGGTTTGCCTGCTCACTGGAACGTAACGAACTGCGGTAACGGGTGAACCGCTCCAGGGTATGCTG [...]
+TCATTAGGCTCTTCCCTACGTGGTAAATCCCCGATTCAGGACAGTACCGGTAAAGTCATTGGTATTGTTTCCGTCGGCTATACTCTGGAACAGTTGGATAGCTGGCTTAACTTACAAATCAGCTCGTTGCTGTTCCCGATGGCGTTACTGCTGCTGGTGCTGTTGTACTGCGCCCGCCGCTTCTCGCTGCATATTAAAAAGCAGATGCTTAACATGGAGCCGCAGCAGCTTTCACAACTATTAATTCAGCAAAGCGTGTTGTTTGAGTCGGTATTTGAAGGGTTGATCGCCATTGACTCCCATCACCGTATTACCGCCATTAACCAAACGGCTCGCCGCTTACTGAATCTGAGCCAACCGGAGTCTGAACTCATTGGCTATGCAATCCACCATATCGTGTTGCCGGAGGCCTTCTTTTACGATGCGCCGCAAAAAAACAAAAAAGATGAGATCGTCACCTTTAACCAAATGAAAGTCATCGCCAGTCGCATG [...]
+NODE	51	5185	276735	275931	0	0
+AGCCCAGGAGCAGGAACAGAAATGAGCCAGGTGATCCTCGATTTACAGTTGGCCTGTGAAAACCACGCGGGCCTGCCGGATGAAGCTCAGTTTCAACGCTGGCTGGACGGCGTTATTCCGCAGTTTCAGGAAGAGGCGGAAGTCACAATCCGTCTGGTGGATGAGGCCGAAAGCCACGACCTTAATTTGACGTACCGCGGGAAAGATAAACCCACTAATGTTCTCTCCTTCCCGTTTGAAGCGCCCCCCGGCATTGAAATGCCGCTACTGGGCGATCTGATTATTTGCCGTCAGGTCGTGGAGCAGGAAGCGCAAGAACAGAGCAAGCCGCTGGAGGCGCACTGGGCGCACATGGTCGTGCACGGTAGCCTGCATTTGCTGGGTTACGATCATATCGACGATGACGAAGCGGAAGAGATGGAGTCTCTCGAAACGGAGATTATGCTTGCTATGGGCTATGAGGATCCGTACATTGCCGAGAAGATTGCAGAA [...]
+GGCGTGCGCCGAGTAATCCAACAGTTTGCCTGCCTGCGCTGCCATATCCACCAGACCGATGGTTGACGCGATGGCCGAGTTTTTCACCAGGTTCATCATCTCTGACGTCATTGGCGGCACGATAACGCGATAGGCATTCGGCAGCAGGACATAGCGATAAGCCTGCGGCAGCGTTAGCCCCATCGCCAGCGCCGCGTTCTTCTGCCCGCGAGGCAAAGACTGAATCGCAGCGCGTACCTGTTCGCAAACACGGGCGGCGGTAAACAGTCCCAGACAGATCATTGAGGAGAGGAAAAACTGAATATTGGGATCGAGTTCCGCCTTAAACCACATGCCAAGATCTTCCGGCAACAGTTCAGGCACCACCAGGTACCAGGTGAAGAATTGCACGATCAGCGGCACGTTACGGAACAGTTCTACGTACAACGTGCCCAGTCCAGAGAGGAAACGGTTGGGAACGGTACGTAAAATGCCGAAAATAGATCCTACCAG [...]
+NODE	52	3375	206483	202202	0	0
+GCTCGCCCAGTTCGTCCTGGATTACCCGCATCTCTTCCGCCAACATTTCGCGGAAAAGCGCTTTCGTTACGGGTTTTCCATTGCTCAGTGTTTTCTCATGGTGAATCCACTGCCAGATAGAGGTTCGTGAGATTTCCGCCGTCGCGGCATCCTCCATCAGACCGTAAATCGGTACACAGCCATTGCCGGAGATCCACGCTTCAATGTACTGCACTGCCACGCGAATATTGGCGCGCATTCCCGCTTCTGTGCGTTCGCCTTCACATGGCTCCAGTAACTGTTCAGCGGTAATCGGCGCATCTTCATCACGGGTAATGAACAGCTGATTTTTGTGCTCGCCCAGTACCTCGTTAAAGACGGCCATTGCGGTATCCGCCAACCCGGGATGCGCAATCCACGTGCCGTCGTGGCCGTTGTTCGCTTCCAGCGCTTTATCCGCTTTCACTTTGGCAAGGACCTGATTGTTGCGTTCAACGTCTTTGCTCGGGATAA [...]
+TCGCCTTATCCGGCCTGCATGCACTTATCAGGCAGCGCCACTACTCACGGATAAATTAAATTCAACAATGGATACGGTTTCCCAAGATCGTCAACCTCCGAACGTCCCGTCACCTTAAATCCCATTTTCTTATAAAATCCAACAGCTTGTGTATTTTGCTCGTTAACATTGGTTGTCAACCCCGGCGCCAGTGTTAACGCATGTTCAACTAATCTCTTACCGATACCCTGACCACGCACGTCCGGATCGACAAACAGCGCATCCATATGTTCGCCGGTAAGCAGCATAAATCCTACCGGCTCATCCTGATCGGTCACGGCAACCCATAGTGGCGCTTCTGGCAGAAAATCGCTCACCAGCTCTTCCAGTTCGGCCCGATAAGCGTTTGACAGAAAATCGTGCGTGGCATCGACTGAGCGACGCCAGATCGCAATCAGTTTTTCCCCTTCCTCATGCCTTGAACGGCGAATGTTAATCATCATCTTCACTCCT [...]
+NODE	53	3872	191051	188720	0	0
+TGACCTATATGACCGGCGACGCGGTGTTATTCAGCAACGACGCCTTTGGTCAGCACTACTGCGACGAGCGCCTGTTCAATGATGAAGTGGACCAAACTGAACTGTTTGAACAATGCCAGCGCTACTACGCCAATATCCTGACGCCGTTCAGCCGTCTGGTAACGCCAAAAATTACCGAAATCCTCGGCTTCAACCTGCCGGTGGATATGATTGCCACCTCACACGGCGTGGTATGGCGCGACAACCCAACGCAAATCGTGGAGCTGTATCTGAAATGGGCGGCAGATTATCAGGAAGATCGTATCACTATTTTCTACGATACCATGTCGAACAATACTCGCATGATGGCGGATGCCATCGCGCAGGGTATCAACGAAGTGGACCCCAACGTGGCGGTCAAAATCTTTAACGTCGCCCGCAGCGATAAAAATGAAATATTGACCAACGTCTTCCGTTCGAAAGGCGTGCTGGTCGGCACTTCTACCATGAACA [...]
+TGAACGCCGGAGGCATTATTGCCGTTAAAGGGCTGGGTGGTTTTCATCTGGCCTGCGATGCGCGCAACGATAACGCAGTGGCGATGCTGCGGGCGCGTAAACATCGCCCGGCGAAACCATTGGCGGTGATGTTGCCCACGGCGCAAACGCTGCCGAGCGCGGCGCGTTCGCTGCTGACCACGCCAGCGGCCCCGATTGTGCTGGTGGATAAGCAGTATGTACCTTCGCTGAGTGAGGGCATCGCGCCAGGACTTACGGAGGTGGGTGTGATGCTGCCAGCCAACCCATTGCAACACCTCTTGTTGCAGGAGCTCAATTACCCGCTGGTGATGACATCCGGCAACCTGAGCGGCAAACCGCCCGCCATCACCAACGAACAGGCGCTGGACGATTTACACGATATTGCCGATGGTTTTCTGTTGCACAATCGCGACATTGTACAGCGCATGGACGACTCTGTTGTGCGCGATAGCGGCGAAATGCTGCGTCGTT [...]
+NODE	54	9629	479478	475374	0	0
+TCCGCCAACTTTGACACGTTACCGTGGTACCAGAAAATCACCGATTATTTGTGGCATATTACGCTACCGGTGTTGGCGACCGTCATCGGCGGTTTTGCCGCCCTGACGATGCTGACGAAAAATTCGTTTCTCGACGAGGTGCGTAAACAGTATGTCGTTACCGCTCGCGCTAAAGGCGTGAGTGAAAAAAACATTCTCTGGAAACATGTTTTTCGTAACGCCATGCTGCTGGTGATCGCCGGGTTTCCCGCCACTTTTATCAGTATGTTTTTCACCGGCTCGCTGCTAATTGAAGTCATGTTCTCGCTCAACGGCCTGGGGCTGCTGGGTTATGAAGCAACCGTTTCGCGCGACTATCCGGTGATGTTCGGCACGCTTTATATCTTTACCCTGATTGGCTTATTACTGAATATCCTGAGCGATATCAGCTATACGCTGGTCGATCCACGCATTGATTTTGAGGGACGATAATGCCGCGATTAAGCCCGGTCA [...]
+GGCGGCGACCGGACGCCTGCGTGACGAGCTGGCGAAATATCCCTTTGCGGACGGCGGCATTGTATTGTTCTGCCATTATCGCTACCTGGCGGTGGAGTATCTGCTGGTTACGGTACTGAACAACCTGAGTAGTATGCGGGTCAATGAAAATCTGGACATTGACCCGACGCATTATCTTGATATCAACCATGCGGATATCGTGGCGCGTATCGATCTTACCGAGTGGGAAACTAATCCGCAATCGACCCGCTATCTGACGTTCCTGAAAGGTCGGGTAGGGCGCAAGGTCGCTGACTTCTTTATGGATTTCCTCGGCGCCAGCGAAGGGTTGAACGCCAAAGCGCAGAATCGCGGCCTGTTGCAGGCAGTGGATGATTTCACCGCAGAAGCGCAGTTGGATAAAGCAGAACGTCAGAACGTGCGCCAGCAGGTGTACAGCTACTGCAACGAGCAGTTACAAGCCGGGGAAGAGATTGAGCTGGAGTCCCTATC [...]
+NODE	55	405	19250	19099	0	0
+GCTTTGCAGCGATCGATCGCCTGGCGCCACACTTTCGCCACCTGGCTGACATAGGCCGGGCTGCGCTGGCGACCTTCGATCTTCACCGAAGCGATGTTCGCCGCCATGAGCTCCGGCAGCAGTTCCAGCGTGTTCAGGCTGGTTGGCTCCTCCAGCGCGTGATAGCGCTCGCCGTCCACTAAATAGCGGCCTTTACACAGCGTTGGGTAGCCCGCGTTTTCGCCATCCTGGTAACGGTCAATCAGGACATCATTCAGGCGCGATTCCAGCCCCTGCGGCGTTTGCTGCCAACGGACAAAGCGGGCGGGCGAGCAGGCGCCGACGGTATTGGGCGACTCCCCCGTCAGGTAAGAAGAAAGATAGCAGCGACCTTCCGCCATAATGCACAGGCTGCCAAACGCGAAT
+CTTCTTACCTGACGGGGGAGTCGCCCAATACCGTCGGCGCCTGCTCGCCCGCCCGCTTTGTCCGTTGGCAGCAAACGCCGCAGGGGCTGGAATCGCGCCTGAATGATGTCCTGATTGACCGTTACCAGGATGGCGAAAACGCGGGCTACCCAACGCTGTGTAAAGGCCGCTATTTAGTGGACGGCGAGCGCTATCACGCGCTGGAGGAGCCAACCAGCCTGAACACGCTGGAACTGCTGCCGGAGCTCATGGCGGCGAACATCGCTTCGGTGAAGATCGAAGGTCGCCAGCGCAGCCCGGCCTATGTCAGCCAGGTGGCGAAAGTGTGGCGCCAGGCGATCGATCGCTGCAAAGCCGCCCCGCAAAACTTCGTTCCACAGCGCGACTGGATGGAGACGCTCGGCG
+NODE	56	1523	90423	89345	0	0
+GCGATAAATAGATATGGTCGGCGGCAGCGCGCACCTCCGGGTATTCCTCCGGCCAGAAGTGGGTATGCAGTCGGTTAGTATTGGATAGCACCACCACGCGATGCCCCTGCTCGCGCAGTTTATGCATGATAGCAATCACTTCGGGCCGTAATCCGACAAATACCGCCTGCCAGCCGTGCGCAAATTGTTCATAACTGAGCGATAACGCCATTTCATGACAGAAAGCTTCAGCAAACGCTTCGTCCGTTATCTCACCGCGTTCATGTTGGTGAAAAGTCTCGCCCATCGTAAATTTTTGCTTCAGCGAAGCCAGCGGTACTCGACTCAGATCGCTCCACACACCTAATACGCGGTTAAAGTCGATGTCGACAATCACATTACCTAAATCAAAGATGTAGAGCATGTCATTCTCCTTGCTAACCGGGGATGAATAACTGTAGCGGGAAAGGAGAAGTTTGACTATGTATCCCTTTATAAATCAATTAACAAAAA [...]
+TGATTGTGAGCAAACCCGATCTTTCTTGTCACTTTTTGTATAATATGAGCAGTAGGAAGCTTTTAGAGGAATGCTCATGAGTCTTACCGAACTGACCGGTAATCCGCGACACGATCGGCTGTTAATGCTTATTGATGAGCGCGGCTATATGAATATCGATGAGTTAGCCAGTTTGTTGGAGGTCTCTACCCAGACGGTTCGCCGCGATATTCGTAAATTAAGCGAGCAGGGGCTGATTACGCGTCATCACGGCGGCGCCGGCAGAGCGTCCAGTGTGGTCAATACCGCCTTTGAGCAGCGAGAGGTCTCCTGGACGCAAGAGAAAAAAGCCATTGCGGAAGCCGTGGCTGACTATATTCCGGATGGCTCCACGATATTTATCACGATTGGAACGACGGTTGAGCAGGTGGCGCGCGCGCTGCTCAACCATAATCATCTGCGCATTATCACCAATAGCCTGCGCGTCGCGCACATTCTTTATAATAACCCTCG [...]
+NODE	57	5489	272521	270966	0	0
+CAAGTTATGAATGGTATTGAGACGCGCACCTAATATTTCGTTGCAACGGTCGAGATGATGCAAGTAAGCGCGTGAATAATTGCGACAGGTGTAGCAATCGCACTCGGCGTCAAGCGGGCTGGTGTCGCTTTTATGCTTTGCATTACGAATCTTCACCACGCCGTCGGTCACAAACAGATGACCATTACGGGCATTTCGCGTTGGCATGACACAGTCAAACATGTCAATACCGCGACGCACCCCTTCCACCAGATCTTCCGGTTTACCCACGCCCATCAGGTAACGCGGTTTGTCAGCCGGGATCTGCGGGCAAACGTGCTCCAGAATGCGGTGCATATCTGCTTTCGGCTCACCGACAGCCAAACCGCCGACAGCGTAGCCATCAAAGCCAATCTCTACCAGACCTTTCACCGAGATATCGCGTAAATCTTCGTAAACGCTGCCCTGAATGATGCCAAAAAGCGCATTCTTATTGCCAAGGCTATCAAAACG [...]
+CAATATCGCGTTAGGGCAGCCCCGTCGCCGTTACAGCTTTAAATTGCTTTGGCATGACCGCCAGCTTTGGTTTACGCCGCAGGGTTTTAACCGCTTCCCACCGGCGCGGCTGGAACAGTTTGCCGTTGATGTTCCGGACAGCGGGCCGCAGTGGGTCGCCGATCAAATTTTTTATCAGATCTTCCCGGATCGTTTTGCCCGCAGCGCGACGCGTGAAGCCGATCAGGACCGGGTGTACTACCATCATGCCGCGGGTCAGGAGATTGTGCTGCGCGACTGGGACGATCCTTTAACCCCCCAGGCGGGCGGTTCCACCTTTTACGGCGGTTGTCTGAATGGCATTTGTGAGAAGCTGCCGTATCTGAAAAAACTGGGCGTCACAGCGCTATATCTGAATCCGGTATTTACCGCGCCAAGCGTCCATAAGTACGACACGGAAGATTATCGCCATGTCGATCCGCAATTTGGCGGCGATCGGGCACTGCTACGCCT [...]
+NODE	58	14583	672073	665559	0	0
+CGGCGACGTTGGTTTTTACAGACGGCGAGCTACGCGGCGCGCTCAGCGGCATTCATCCTTGGGCTGAACTGCTCACGCTGATGCGTTCGATGGTTGACACTCCCGCAGCGCAGGAGACAGTACAATGAGCAACGCCTTTTTTCATCTGCTGGGGCCAGGTACGCAGCCTGATGACGCCAGTTTCTCGATGAATCCCTTACCGCTCACCTGTCAGGTCAATGGCGACCCAAGTATGGCGGCGCTGGAGCGCTGCGCTCACAGCCCGGCGGTGATGGCATTGTTGACCGATCTGCGAGGTCAGCTTGCCCGGCGCATTCCGGAAGTCGGCGACGTGCTGGGATGGGAGTTATCTCCCCTGAATGCCGATGATCTCTCATTCCTCAATACGCTATTGGGCGAAGGCGAAGTCTCGGTACGCATTCAGCATCCGGACGGGAGTGAAAGCGAGATCCAGGAGGCCATCTTCTGCGGCCTGTGGCGGGTACGCCATCT [...]
+CAAGAAACCAGCGCGGCGAATGCCGGACAAATTTCACCGGGATATGCGGCGCCCTGGGCGGCCCCTGGCGTACCGCTGAAGGCGATAAAATGGATGTTCCAGCGCCATGCGCCGCTGGCGGTGCGTCTGGATGGCACCCCGTTTCAACTGAAGTGGATGTGGCAAATGCTGCGTAACTGCGATACCCGGCATTATATGGAAAATAAAGGCCGCATGGTGCGTCTGGCGGAATATAGTCGCGACTGTCTGAAAACGCTACGCGCCGCGACCGGTATCGAATATGAAGGCCGCCAGGGGGGAACGCTGCAACTCTTCCGCACCGCGCAACAGTATGAGAACGCCACCCGTGATATCGCCGTACTGGAAGATGCCGGGGTGCCGTATCAGCTCCTGGAAGCCAGCCGACTGGCGGAAGTTGAACCCGCTCTGGCTGAGGTTGCGCATAAATTAACCGGCGGACTGCGCTTACCGAATGATGAAACCGGGGACTGT [...]
+NODE	59	4677	249396	246719	0	0
+CGCAATCGGGATGTGTCAGCATCAGCGTCACGATGGTTTCACCCTCTGGCAGGCAGGGGCAGATGACGCGCTTGCATTGTCCAAATCGTTAATCGTCAGGAGTAATTATGTTAAGGGTCTACCACTCCAATCGTCTGGATGTGCTGGAAGCGTTGATGGAATTCATCGTCGAACGCGAGCGGCTGGATGATCCCTTTGAACCAGAAATGATTCTGGTACAAAGCACGGGTATGGCGCAGTGGCTGCAGATGACCCTTTCACAAAAGTTTGGTATTGCGGCGAATATCGCTTTTCCGTTACCGGCGAGTTTTATCTGGGAGATGTTTGTTCGCGTGTTGCCGGATATCCCCAAAGAAAGCGCTTTCAGCAAACAAAGCATGAGCTGGAAACTGATGACCTTGCTGCCGCAGTTGCTGGATAAGGATGAGTTTGTACTGCTGCGCCATTATCTGACCGACGACACCGATAAACGCAAACTCTTTCAGCTTTCCG [...]
+GAGAGCGTCCCCGGGCTACGATTGCCAATCAGATAAGAGACCAGTTCATCGGTCTTGCTACGGAACTGCGCGCTATTGTTATCAATACGAAACTCCACGCGCAGCACTTTACGCGGTAGCGCCGGCACGTAATGAATAATGATGCCCTTCTGCGCCTCGGTGATGACAGGTACGGTAATTTCCGGTTTTTTAATCTGTTTATTCGGCACGCGACCATAGGTTGCGGCGGCAATACTCGCCAGTTCCGGCAAGGGTTTATTACTGTAAATCACCGCCTTCATCAGATTAGCTGAATAGTATTTTTCATGAAAAGCGATCAACGCCTGTTGCACCGGATTGCCCGGCTTATCGCTTAGCGTTTCCAGATTGCCGCCAGAAAAGTGCGAGCCTGGATGCGCTGGGTTAATGGTTTCGGCGCTTACCTGCGCCATACGCATACCGTCGCGGGTGCGCGCCATCGTCAGCTCGGCATTCACCGCGTTTCGTTCGCGT [...]
+NODE	60	3190	154730	149799	0	0
+ATTTTCAGCAACAGACATTATCAGTAAGCATCCCGCAACTCTACATCGCCAACAACGCGCGCGGCTACGTGCCGCCGGAAAAGTGGCAGGAGGGGATTACCGCGCTGATGCTGAACTACAGCTTCAGCGGCTATAAAGAGTACGGTTCCAGCGAAGATTCCGACGATGCGGAATCGAAGTATCTCGCTCTCCAGCCGGGTTTTAACCTCGGGCCGTGGCGTTTTCGCAACTACAGTAACTGGAGTTCAAATAACGGCGAGAGCGGTAGCTGGAACAGCGTTTATAACTATTTACAGCGCGACATTATCGCGCTGAAAAGCCAGTTCACCGCCGGAGACAGCAATACGCCATCCGACGTGTTCGACAGCGTACCTTTTCGCGGCCTCCAGCTCACCTCTGACGATCAAATGCAGCCCAACAGCCAGCGTGGTTACGCCCCGACGATTCGCGGCATCGCCCGCTCAAACGCGCAGGTTATCGTGCGGCAAAACG [...]
+CGGCGGTGAACTCGGTGCTGCCTTTACCGTCTGTGTAATCTTCAATCGGCAATTCGGCGCTACCGCCGGGAACGATGGTCTTATCGTATTTATCGGAAATCCGTATCCCTAAATTCTCATTGTCGGTTTTCAGGTATTCCGGGTTGTGCGGATCGGTTTCTCCGTTCAATGACATTGACAGGTTGGTGCCGTCCGCCACGTTGCTACAGGTAAAGTTTACTTGCGTGGTGACGTGCGAGTTCTGCGGACTGTCGCCGAGATTACGAATATCTTTGCCCTCAATATCCGGCAGCCTGACCTCGATAACCTGCCCGGCGTTGATGGAACAGGACTGCGGCACGGTAATAGTTCCGGACATGGTGACGTGCGCGACAGGGGGAACGGCGGGGGGAATATTATCTCCGCTGCTGCCCGGCGTTTTTGATAAATAGAGATTCATGATCGTTGTTTGCGGGATCGAGATTTCACCGACCAAAGGATGAGTAATATAAA [...]
+NODE	61	1770	84418	83212	0	0
+ATTTTTTCATTTCCTGTTGCTGTGTGGCGGGTCTTACAGCGCTGCTTCGTCAGCTTCGCCGGTACGAATCCGAATAACGCGCATGAGCTCCGCGACGAAAATTTTGCCGTCGCCAATTTTTCCGGTGTAAGCCGCTTTACTGATGATATCGATCACCTCTTCCAGTTGGTCGTCGGCGATAGCCACATCAATTTTGACCTTCGGCAGGAAATTCACGCTGTACTCCGCGCCGCGATACAGTTCGGCGTGTCCTTTCTGACGGCCAAACCCTTTCACTTCGGTGACGGTCAGTCCCTGAATGCCAATGGAAGAAAGCGCCTCCCGCACGTCCTCCAGCTTGAACGGTTTGATAATCACGGTAACCAGCTTCATAGAACCCTCCAGTCAGAATTAGGTAACGGCTGCCGCCGCGCATGGACTCTTCAGAATGGATATTGCAAAGGATGTGCCAGAAGCTGGCGAGCGAGGAAAAGCGCGGTTAGCGGCGCGTCT [...]
+TAATTCAGCAGTTTCGCCAGCAGGCGCGCTTCGGCGAACGCATGGGCGAGGCCAGCCGCTCGCACTACATGGCTCGGATGCAGACGCTGCGCTTAGACGGCTTTTTATTGCGTCCGCTGCTTAGCCTCTTTTCCGCGCTCATTTTATGCGGTCTGTTGATGCTTTTCAGCTTTACGTCTGCCGGCACGATTGAGGTCGGGGTGCTGTATGCGTTCATTAGCTATTTGTCACGTCTGAACGAGCCGCTCATTGAACTGACCACCCAGCAATCCATGCTACAGCAGGCGGTTGTGGCGGGAGAACGTGTTTTTGAACTGATGGATCGCCCGCGCCAGCGCTATGGCAGCGACGACAGGCCGTTACAAAGCGGGGCGATTGATATTGATCATCTGTCGTTTGCTTACCGCGACGATAATCTTGTTTTACAGGACATTACGCTATCAGTACCGTCCCGTAGCTTTGTGGCGCTGGTGGGGCACACCGGCAGCGGGA [...]
+NODE	62	2580	115746	115153	0	0
+GAGCGCGGAATTTGTAGTGCGTAATGAGCATGGTCTCCATGCCCGTCCGGGCACCATGCTGGTGAATACGATTAAACAATTTAACAGTGAAATTACCGTGACAAACCTTGATGGAACCGGCAAACCGGCAAACGGACGTAGTCTGATGAAAGTGGTGGCGTTAGGCGTGAAGAAAGGCCATCGTCTGCGCTTTACCGCGCAGGGTGAAGATGCTGAACAGGCGCTGAAAGCGATTGGCGATGCGATCGCCGCCGGTCTCGGGGAGGGCGCATAATGAGCAGGCGTGTCGCCACCATTACCCTTAATCCGGCTTACGATCTGGTTGGGTTTTGCCCTGAAATCGAACGCGGCGAAGTGAACCTGGTGAAAACCACGGGTCTGCACGCGGCGGGCAAAGGCATTAACGTTGCCAAAGTGCTGAAAGACTTAGGCATCGACGTCACCGTCGGCGGTTTTCTCGGTAAAGATAACCAGGACGGTTTTCAGCAATTA [...]
+GGCCATGATCGCCGCCATCGGCGCGTAAGTTTGCGTACTCAGCAGACCAACGCCAAACGCATACGCCGCTTTGTTCACCGGGCCGCCCATGTCGGTACACATCATCCCGCCGAGAATCGCGCCCAACAGTACCGCGTTTGCGGTTCCCATGGTTTGCAGCCAGTGGGTGAGCCCTTCCAGAATCCCGGCAACCGGTTTACCGATCAGGTAAATCATCGCCAGCCCCACCACCAGACTGGAAATTAACGGGATGATCAGGATTGGCTTCAGCGCTTCCATACTTTGCGGAAGTTTCAGTTTGGTACTGATAAGCTTCGCCATATACCCGGCAAGGAAGCCGGCAATGATCCCGCCGATAAAACCGGAACCGGTGCTAACCGCCAGCATACCGCCAATCAGACCTGGCGTAAGGCCTGGGCGATCCGCGATGGAGAAAGCGATATAACCCGCCAGTACCGGCACCATCAGCGCAAACGCCGAACCGCCGCCAAT [...]
+NODE	63	5573	286572	280239	0	0
+TGGGCGACTAACAGCGGCGGTACGGAAAGCACGCATATTGCGGCAATGGGCGAGGATTTGAATGCGCAGCATCAGCAGATCACCCACACGCATGAAGGCGTATGGGCGGCCAATTCCGGCAGCATTCAGGCTGATGAAGCCGCGCTGACCAGCAACAAGCCGCCGGTACAAGGCCACCCGGAATTAATGCCGCATCAGGGCTAATGATCATGGCCTGGCGATAACGCCAGGCGCTTACGGGTTATTCGGCGACCTGCCACTGCGCGTCTGGCGCAAAACGCGTGATAGCCTGAACTTTACTCTCCGTCTCCTTGCCTAAATCCGCCTGATAAATACGATCGTCCTGGTTGACCATAAAACTCATCACCCCGGTTTCGCCGTAATGCATCGGCCAGGCCAGAAGCGCCGCGCCGTGACCGTCGTTATCGCTGATAATACGGAAATGGTAGCCGTGGTAACCCTCGTCTGGCGCTGCGGGGCTAAAGTTTGGGC [...]
+GCGTCGGCAGTTTGCCGATCAGCGCCGCCACCGCCGCCAGCTCCGCAGAAGCCAGGAAGACGTTCGCACCGGTACCTAAACGGTTCGGGAAGTTACGGGTAGAGGTAGAAACCACCGTCGCACCGTCGGCCACACGCGCCTGGTTACCCATACACAGGGAACAACCTGGAATTTCGATACGCGCGCCGCTCTTACCGAACACGCTATAGTAACCTTCTTCGGTGAGCTGCGCGGCGTCCATACGGGTTGGCGGCGCTACCCACAGGCGGGTTGGCAACTGGCCTTTGTGGCTATCCAGCAGCTTACCAGCCGCGCGGAAGTGGCCGATGTTGGTCATGCAGGAACCGATGAACACTTCGTCGATCTTCTCGCCCTGCACGTCAGACAGCAGACGCGCGTCGTCCGGATCGTTCGGCGCACAGAGGATTGGCTCTTTGATATCCGCCAGATCGATGTCGATCACCGCTGCGTATTCCGCGTCAGCATCGGCTT [...]
+NODE	64	42	3382	3333	0	0
+AGAGCTGGTCGAAGTTCAGGTAACGGTAGGTATCCACCGCCG
+ACTGAGAAAGCGGACGGCGTGATTTTCCAGACTGCGGTGTAA
+NODE	65	39	1989	1989	0	0
+TCTTATCCACCTGCGCCACGTAGGTCTGGTACTCTTCCG
+ACCTACCGTTACCTGAACTTCGACCAGCTCTCTCAGTAC
+NODE	66	13902	662746	653123	0	0
+CTGGTCGCGATGCTGCGCCTGCCCAGCAACCTGAAATCGACGCAATGGCAAATTCTTGCCGGGCCGATCCTCATTCTGCTGATTTTGTCGATGATGGTGCTGCCGCTACCTGCTTTTATCCTCGACTTATTGTTTACCTTTAATATTGCGCTATCAATTATGGTGCTGCTGGTGGCGATGTTTACCCAGCGTACTCTGGATTTTGCCGCGTTTCCGACCATTCTGCTGTTTACCACGCTACTGCGTCTGGCGCTTAACGTTGCCTCAACGCGCATTATTTTGATGGAAGGGCATACCGGCGCGGCGGCGGCGGGAAAGGTGGTAGAGGCGTTCGGTCATTTCCTGGTCGGCGGTAACTTCGCGATCGGGATTGTGGTTTTTATCATCCTCGTCATTATCAACTTCATGGTCATCACCAAAGGCGCCGGACGTATTGCCGAAGTCGGCGCGCGCTTTGTGCTGGACGGTATGCCCGGCAAGCAAATGGCGATT [...]
+TAAAACGACGCACCAGGCTGGTAATTTTGGCGCGAGTTTTCAGGCGCTGCGCCATTTCCGGGCGACGCAAATCCAGATAGCGGTACTTGAGACGCGCCTCTTCGGTATTAACGTGGTTAGCGTCAAGCGGCAGTGAGTCTGCGCGGTTGATGATAGTGAGAGAGGACGCCAGCACTTCAATTTCGCCGGTCGCCATATCCGCATTGACGTTTTTCGCGTCACGCGCACGCACGGTGCCCGTAACCTGAATGCAGAACTCATTACGCAGTTCAGAGGCCAGCTTTAACGCGTCCGCACGATCCGGATCGAAGAACACCTGCACAATACCTTCGCGGTCGCGCATATCGATAAAGATCAGGCTGCCAAGATCACGACGACGGTTGACCCAACCACACAGAGTCACCTGCTGCCCCACGTGGGACAGACGTAGCTGTCCGCAATATTCTGTACGCATGAGATATCCCTTAACTTAGCCGCAGGCGGATTGTTGCC [...]
+NODE	67	1613	92651	91426	0	0
+GTGTATGGCCAGATGAACGAGCCGCCGGGAAACCGTCTGCGCGTTGCATTGACCGGTCTGACCATGGCGGAGAAATTCCGTGACGAAGGTCGTGACGTACTGCTGTTCGTCGATAACATCTATCGTTACACCCTGGCCGGTACGGAAGTATCCGCACTGCTGGGCCGTATGCCTTCCGCAGTAGGTTACCAGCCGACTCTGGCGGAAGAGATGGGCGTTCTGCAGGAACGTATCACCTCCACCAAAACCGGTTCTATCACCTCCGTACAGGCGGTATACGTACCGGCGGATGACTTGACTGACCCGTCTCCAGCCACCACCTTTGCGCACTTAGATGCAACCGTGGTACTGAGCCGTCAGATCGCATCCCTGGGTATCTACCCGGCCGTTGACCCGCTGGACTCCACCAGCCGTCAGTTGGATCCGCTGGTTGTTGGTCAGGAACACTACGACACCGCGCGTGGCGTTCAGTCCATCCTGCAGCGTTATCAG [...]
+TGCCGCGCTCAACACGATAAAACCGACGATGGCGCCGGCGAGATGAAGATAAGCGCGACGAATAAAGGTAGTACGATCAATCCTTGAGTCGGGTTGTGGACCCGCAAAGGATGGCTGAAATGACATAGTAATAATCCCTCATTTTATGCAATAAAAACGCATCCATTCCTTCCTTCTTCGCACAATGTGCAGATGCCAATGACAGAAAGAAGGATTTAATGAAAACAGCGCTGTCGCTGAAAACGCGTCGCCTTCAGCCGCTTGTTTTTGTCGTTGCTAGTTTATCGAATAAAAATTGAGAGGATAAAAAAAAACCAGTCCGCAATCAGACTGGTTTTATGCTTTCAAGCCGGTGTTACATCGCTTTTTTGGTCAACTCGATAACGCGCAGTTTAGCGATCGCTTTGGCCAGTTCCGCAGACGCCTGAGCGTAATCCACGTCACCGTGCGAGCTCTTAATGTGCTCTTCGGCTTTACGCTTCGCTTCCAGGG [...]
+NODE	68	995	46102	44013	0	0
+CGACGTCGGCAAAAGTGTGCTGGCGGCGGGTTTATGCCGCATTTTTTATCAGGATGGTCTGCGTACCGCGCCGTTTAAATCGCAAAATATGGCGCTTAATTCTGGTATTACGCCGGATGGTAAAGAGATGGGGCGGGCGCAAATTTTTCAGGCGGAAGCCGCGGGGATCACGCCAGATGTGCGTATGAATCCGGTGCTGCTCAAACCGACCAGCGATCGCCAGGCGCAGGTCGTGCTGATGGGGAAAGTGGCGACCAATATGGATGCGGTGAGTTACCATGACTATAAACCGCGTTTGCGTGAGCAAATCCTTGCGGTCTATAACAGCCTGGCGCAGGAATATGACGTTATTGTGCTGGAAGGCGCCGGAAGCCCGGCGGAAATCAATCTGCGCGATCGCGATATCGTCAATATGGGAATGGCGGAAATGGCCCAGTGTCCGGTTATTCTGGTGGCGGATATCGACCGGGGCGGCGTATTCGCCGCTATTTA [...]
+GGCACGCCCTGCCGATGTGTCTGCAATACCGCATCCGCCATCCCGCTTTCGCGCAGCCAGGCGAGGTCGCTCAGCGTATTCTTACTGCCCGGCAGGATCACCAAATCAACGTCTGCCAACGCTTCCGGGCGGCGAATATAGCGTATGCGCACATCCGGCTGCGCCGCCAGAGCGTTAAAATCCGTAAAGTTAGAAATATGTGGCAGTTGCACAATGGCAATAGTGATATCACGGGGGGCGTTACCGCGATATTTATCGTTTTGCAGCGCGACGCCATCTTCATCTTCCAGATCCACATCCAGCCATGGCATCACTCCCAGGACCGGGACGCCGGTAAGCGATTCGATTTGTTCGATACCGGAATAGAGTAGCGCCACGTCGCCGCGGAATTTGTTGATAATGACGCCCTTTACTCTGTCACGCTCCTGTTTATGCAGCAGCGCCAGCGTGCCATAAATAGCGGCGAATACGCCGCCCCGGTCGATATCCGCC [...]
+NODE	69	5960	318167	314642	0	0
+TGGCCCGATGCGGCCGCCGCCGCCGTGAAGCTGCCGCTATCTACCACGGCGATAAACAGCGACATACGCTGCAAATTGAGCATGGCGAGCTCCTTTACTGTCAAAATTATTTTGACAGTATATCGTTGAAGCGCGGACTTATCTGGCTTTCTCCGGACGGCTACATTAGCGCCTCTGACGGAGGATGCATAATGACGTATCGCAGTAAAGTGGCAGTGGTTTACCTGCTCGGCTTCTTTCTTGATCTGATTAATCTGTTTATTGCCAGCGTGGCTTTTCCTGCGATGTCCGTGGATCTGCATACGTCCATATCGGCGCTGGCATGGGTGAGTAATGGTTATATCGCAGGATTAACGCTGATCATTCCGTTTAGCGCGTTTCTTTCACGTTATCTCGGCGCACGACGGCTGATCATATTTTCGCTCATTCTGTTTAGCGTTGCCGCCGCTGCCGCAGGTTTTGCCGATTCATTACACAGCCTTGTTTTCTGGC [...]
+TCGTAAATTCCGTTGCCATCGTTCCAGAAATCAAGGTAGATGACGTACTTCTTGCCGCCACTGTGGCGCAAGATGAGTTTGTCGGATTGGTGGAGCAGACGCATTGATTCAAGCGCATCGTAATGGATAACACGATGCCCGGCCTGCAACGCGGTTTCGGTTAACGTCATCCTGCGTGGCGTAAACAGAAACAGAACTGTGACGCTGAATTTCCAGATGATAAACAACAGGCCCACCAGTAGCGATATACCGGAAAGCCGATAATTCACGGTGGCTGTTGCTATGCTGAGAATAAAAAAACCGATCCCGATAGCAAACCATTTCAGCTCCGAAAGCGAAAGATGCCGGGTGTATTGACGACTTTCCATGATGGTATGGTATCCCTGATTTTACTGTCGGCGTATTACGTCAGGTTGAGTAAGGAAGCTATATCCGTTATGTTTTAGGTTATATACACTTCATCCTTCAGGCTGCCGGAGCAACTATTGTACG [...]
+NODE	70	4776	257093	253410	0	0
+TTCTTCCGGATGCGAAAAAATACGCTCACGCAGCGCCCGGCGGCGTAACGTGCCGTCGGCGGCGATAAGTTCAGAACCAAAATGTTCCGCTATTGCGTTCAGGGCGGGCTGCCCTGGCTCAACCATCTGGCGCGCGATAATATCCGCGTCGATGACGGTTATTCCGAGGTCAGCGAAGGCATCAGCGACGGTACTTTTACCGCTGCCAATACCGCCGGTTAAGGCTACGGTATACCTCATATCTCCAGCTTCCGGAATTTTAGTTTGACAATCAAAAGGTTAAATTTCAAGCATGCAAAGACGATACGCTCTGAGCATTAACCTACTATTCGCCAGGTAAATTTATGGGATTGTAACGTAAAAAAAGAGAATTTCGCAGTCTTGTACGGCCATGATTAGTGCGTATGATAACGTCACTGGAGTTGTGAGTTTCGATTTTTCGCCATTAACCCCAGGAATCCGCACATGCGTATTGAAGAAGATCTGAAGTTA [...]
+CGTCGTGATTCGGTAAAATATTCGTAGCGCCTCGCAATAACGTTGCCGTGTCATGTAACGCAGCAAAAATCTTCAGAATCCGCCTTCCCGTTTTACCTTTTGCCGCTCGCCCGCTCTTCCCGCGTTTGCCACAGTAGCGCCAGCTAACTCAAGGAGCGAACAATGGAAAAACAACGCGGTTTCACGCTTATCGAACTGATGGTCGTTATTGGCATCATCGCCATTTTAAGCGCCATTGGCATTCCGGCTTACCAGAACTATCTGCGTAAAGCGGCGCTGACGGATATGTTGCAAACGTTTGTCCCCTACCGTACCGCCGTCGAACTCTGCGCTCTGGAACATGGTGGGACGAGCACATGCGATGCGGGCGTCAACGGTATCCCCTCGCCCGTCATCACCCGTTATGTTTCGGGCATGAGCGTGGAAAAAGGCGTCATCACGCTTACCGGCCAGGAGAGTCTGAGCGGGCTTAGCGTCATCATGACGCCCGCC [...]
+NODE	71	22413	1326752	1314179	0	0
+ATGGAAGCGGCCTCTGCGTTGGCTCAGGACCTGGATTCATTGTTGAATCAGCATTTTCGCGGTCGCGTGGTGCGTAAGGATCTGACTAAGCAACTTAAAGAAGGGGCTAATGTTCCAGTTTACGTACTGGAATATCTACTCGGTATGTACTGTGCCTCCGATGACGGTGAGGTTGTCGAGCAGGGGCTACAGTCGGTTAAGCGTATTCTGGCTGATAACTACGTCCGCCCGGATGAAGCAGAGAAGGTGAAATCGCTCATTCGTGAGCGAGGATCCTACAAGATCATCGATAAAGTGTCGGTAAAGCTCAATCAGAAGAAAGACGTTTACGAAGCCCAGCTTTCCAACCTCGGCATTAAAGATGCACTGGTGCCGCCGCAAATGGTCAAGGACAACGAGAAGCTGTTGACCGGCGGCATCTGGTGCATGATCACCGTGAACTACTTCTTTGAGGAAGGACAAAAAACGTCGCCCTTCTCTCTGATGACGCTT [...]
+GCGGTAGGCTTTAACGGTCTGGTTGAATTCCGCCAGGATCCAGCGGTCCGCCAGCGACAGAGTCATTTCGCCGCCGTTGAAGCCGCAATCCTGCTCTTCGGTGTTCATCAGCACAAAGCGGCTGGCGTTCCACAGCTTGTTACAGAAGTTACGGTAACCTTCCAGACGCTTCATATCCCAGTTGATGTCGCGGCCGGTCGAGGCCAGCGCCGCCAGGGTAAAGCGCAGGGCGTCGGTGCCGTGCGGCTCAATGCCGTTCGGGAACTGCTTCTCGGTACGCTTGCGGATTTTCTCCGCCATCTGCGGCTGCATCATGTTGCCGGTGCGTTTTTCCAGCAGTTCCGGCAGGGAGATGCCGTCCACCATGTCCAGCGGGTCGATAACGTTACCCTTGGATTTGGACATCTTCTGGCCTTCGTCATCGCGAATCAGACCGGTCATATAGACGGTATGGAACGGCACCTGCGGCTTGCCGTTTTCATCTTTGATGAA [...]
+NODE	72	758	39938	39653	0	0
+GAGCGACAAGTTAGCCATGTCATATTTAAAGCTCACACAAAGAAAGTCAACACCAAAATAAAAAGGGCACCGTAAAAACGGTGCCCGGGGTTACCAGCCCTGAAGTTTATCTCATCAAGCTCCGGGGATCGCTCCCGACGCGGTTTTCACGGAGTATATGCGCCTTGTGATCCCGTCGGTGTGAAAAACGGATCACCGGACCTCAGAGCTGCCCGCTCTTTTTACTGTGGTCAGCAGGGTACGCATCAAAGCGTATGCACTTTAACAAATAAAAAAAAGGAAGTAATCATCATCCACGCTTTTTAATTTTTCTGCCGCCGCGTTTACTGTGTGACGTTTTCTGCTCTGAAATCACGCCTTTACACTCCGGGTAACGCTGGCAACTCCAGAACTCTCCGTTCTTACCTTTCAGCTTCCGCATTCTGCCCTGGCAAAGTGGGCATGCCGGCGTCACTGGTGCCGTAATCTGCAACTGCTGCCGTCGGGCTCCCG [...]
+TGGAGACACTGTTCACCCGCAAATATATTGAGAAACAGGGTAAGCATATCCGGGCAACACAACTGGGGGCAGAGTTGATAGCAGGATTACCTGAGGTGCTGACCAGTCCGGGAACCACGGCACTGTGGGAGCAGGCCCTGGATGATATTGCACAGGGTAAACTGTCGCTGGCATCATTTATGGAGAAGCAGAAACAGTGGCTGAATCACCTCGTCTCGGGAGCCCGACGGCAGCAGTTGCAGATTACGGCACCAGTGACGCCGGCATGCCCACTTTGCCAGGGCAGAATGCGGAAGCTGAAAGGTAAGAACGGAGAGTTCTGGAGTTGCCAGCGTTACCCGGAGTGTAAAGGCGTGATTTCAGAGCAGAAAACGTCACACAGTAAACGCGGCGGCAGAAAAATTAAAAAGCGTGGATGATGATTACTTCCTTTTTTTTATTTGTTAAAGTGCATACGCTTTGATGCGTACCCTGCTGACCACAGTAAAAAGA [...]
+NODE	73	1975	372271	368729	0	0
+GTTTGCACTTACGCTCGATGTTTGAGCAGCGCAAGAAGACAAATGGAGAGTATGATGATGGTCTGTATACTTGTTGTGTCAAATAACGGTCGGGAAGAGTTGATTGATTTTAATCCCGATCATGATTTAGCGCACATTATCAAATCATACCGGACACCAGAAAACAGGATGGTATGTATTATCCAGGATGGTAAGCGCATTCTTCGTTGGGATCGCAGTTATGCTTCCCGTGCAAAAAATCACTGGCGTAAGGTCGATCCAGACAGTTTTGAGATTTTAGGGTCTGTTGAATATCTCCGCTATGTTGGTCAGGGTTAGTTGGGGCGTTGAAAACGGAAAATACCCCACGCTAAGACTGTTTTTTAACCAGGCTATGATAATGCTATCTTTGACGGATGATGGTCATTGCTCTTTTGTTAATGCTAACGGACGCGTACATTAGCATTAACTTTTGTGTTATGTTGCACGTGAATTTTTGAGTTTTAATATTTA [...]
+AGATAGGTGAATAATAGTTCGATTGTGATGATGGGATACTGTTGTTTCTAATGCCCCGAGCTTGCGAGGGGTGCTACTTTCGAGGCGCTTGCGCCGATGTTTTTAGGTTATTCACTTGTTAAAGGGGATAACAGTAATGTTTTTCTTTTTTGCTTCTCTTTTAGTACGTAAGTAACTAAAAGAGAAGCAAAAGAGTAATTGCGGCATATCGTTTGCACTTTAAGTATGATTATCCACAACCTGTGCATAGTTTACCCAATGATACAGCTTATACCTGCTCTTTTCTGTACATGGAAAACGGAAAATAACCCACGCTAAGACTATTTTTTGTACAGTTTTTTATTATGGACGTGCCGATACACCGCCCCATAAGGCGGTAAGTTAGCCTGTATCAGAGCGGAATAGGGGTAGGTGGGTGAGCGTAATATTCTTTTTTGCGTTGTCGAGCTGCGTCGCGTTTCGCTTTCATCCGGGCTAATCCGGCTGCCGCTT [...]
+NODE	74	83	15746	15542	0	0
+GTCAGCCCCCTGCTAAGCCTGACCGCACGGAACTTACAGCTATTCAGGTGGTAGGTGGTCGTAGACCGTCGATGTTACAGCAA
+GTTCCGTGCGGTCAGGCTTAGCAGGGGGCTGACGCGGTTCCTGGCGACATGAAACTCCCTGGTTAGGGGTATCGGCGCGACCT
+NODE	75	3106	170091	169732	0	0
+TGAACAGCCTCGCAATGAAAGAGAACGCTGGTTGATGAACACCGTAGCAACGCAAGCGCGCCAGGCCGGTATCGCCATGCCGCAGGTTGCTATCTACCATGCGCCGGACATTAACGCGTTTGCGACGGGCGCACGCCGTGACGCCTCATTGGTCGCTGTAAGCACCGGTCTGTTGCAAAACATGAGCCCTGACGAAGCGGAAGCCGTCATTGCGCATGAAATCAGCCATATTGCCAATGGCGATATGGTGACGATGACGTTGATTCAGGGGGTGGTTAACACCTTCGTTATCTTTATTTCGCGCATTATCGCGCAAATTGCTGCTGGTTTTCTGGGCGGCAACCGCGATGAAGGCGAAGGAAGTAACGGTAATCCGCTAATCTATTTCGCCGTTGCGACGGTGCTGGAACTGGTCTTCGGTATTCTGGCGAGCATTATCACCATGTGGTTCTCCCGTTACCGTGAGTTTCATGCCGATGCGGGATCGGCGAA [...]
+CGTTGTAACCCATTTGTTCAGAAATTTTACGCGCGGCGGTGTGTAACATAGCCACATATTCCTGCAGGCGTTCTTCTGAAAAGCGCAGCGTCGGGAACGAAATGCTTAACCCTGCGATGACTACGCCAAAACGGTCAAATACCGGTACGCCGATACAACGTAACCCTTCTTCCTGTTCTTCGTTATCTTCACCGTAGCCTTGCGCACGTACCTCATCCAACAGCGGCAGCAACGCCTCAGTGCTGGTAATCGTGCGTCCCGTGCTTTGCTTATACTCAACGCCGTCGAGAATCTGCTTAACCTCATCACGGTCGCGCCAGGCCAGAAGCACTTTACCGATGGCCGTACTGTACAGCGGATTACGACGCCCAATACGTGAGTACATCCGCAGATTGTACATAGAGTCAATTTTATGGATATAGACAATGCTGTCTTCATCCAGCGCGCCAAGATGGATAGTTTCTTTTGTCAGACGAGACAGTTCACGCATCT [...]
+NODE	76	2200	116804	116095	0	0
+TTAAAGGCCATCATATAGAGGCCATGCCAGTTGCCTTTATCGTCCCAGCGGGACTGACCAAAACCAACGCCCCACGGCCGCTCGTTATAGCGATCCGTTTTCTCTTTATCGTAGGCAAAGCGCGCATGCCAGGTAATGGCGGGGACATACAAATCATAATGCTCAGGCTGTCGCCACGTTTCTGCGACGTTATCGGTAAACGTGTTAAACCACCCTTTATCCGCCGCAGAGACTGAAGGAATAGCCAGCCATGGCATAACAAGGAGAGCAATAATAAGAAAATACTTTCTGATAATCATCACAACAGCCATACCGTTCAAAAATTCGACTGTGATAATAACAACATTAACCTGAATAAAATCTTAACAAACTATAAACAGAGAATAATCTGAGAAAGTATCGGGTTAACGGCGTTTGATTTAGCACTCAGAACCGTCGCGCGCTCCTTAATAAGCTTTCACAAAAACACAAAACAAAGCACAACAAACAAAA [...]
+AGCGTATTTACCACGGCGGCTAAGCCTGGTTTAAGATGCCGGGGCGATGTTTTCCCTCGCCCCGGCTTACCGGCTATCAGCCGCCAGTAACGGCGGAAGAGGCGCCTGGCACCATAATTTCCGTGGCGATAATGACGATCAACAGACCGACGATGACCGGAACGGACGTGCGTTTCACCACTTCAAACGGTGATATTTTAGCCATCCCGGCGACAGCGACCACGACGCCGGAGACCGGCGAAATCGTGCGCCCCAGGTTTGAGGCTTGCAGCATTGGGATGGATAAATAGGCAGGGTTGATGCCGGAGGAGTGCGCCAGTTTAGGGATCATCTCAACAAAGGCGTAAAAAGGCGCATTGCCTGAACCGGTGGTCATCGCGGCCAGCATGGTTAAAATCACTAAGACCAGCATCAGAATAATGCTGGCGGAGCCAAAAGAAGTGGCAATCGAGATCAGACTTTGGATAAAGCCAATGGTGCTCAGCCCCTGGG [...]
+NODE	77	2850	152059	150942	0	0
+CGTCTGGGCGGTGAAACTCACGGGGATGAGTGCCTGGATGGGTATGGCGGACTGGTCGATTCTGGCACCGCCGATGATGCAGGGCTTCTTCTCCCTCGGTATCGCCTTTATGGCCGTCATCATTGTAATTGCACTGGCTTATATGTTCTTCGCTGGCCGCGCACTGCGCGCAGAAGAAGATGCAGAAAAACAACTGGCAGAACAGTCTGCTTAATAAGGAGTTTTGATTATGACCGTACGTATTCTGGCTGTGTGTGGCAACGGACAGGGCAGTTCCATGATCATGAAAATGAAAGTGGACCAGTTTTTAACCCAATCAAACATTGACCACACGGTAAACAGCTGCGCGGTTGGCGAGTACAAAAGCGAGTTGAGCGGCGCGGATATCATCATCGCTTCTACCCATATTGCAGGCGAAATCAGCGTGACCGGCAACAAATATGTGGTTGGCGTGCGTAACATGCTCTCTCCTGCTGACTTCGGCCCGAAACT [...]
+AAGCGACGGATAGCGTTGATACAGCGCCAGATGGGTAGCGGTATCGGAAGAAGGACGATAACGTCCCTCCACCACTTTGCCATCCATATCCACCACCACCATGTCATCTACCTTCATGGTTTCATAGGCGACACCGCTTGGCTTAATTACCACCAGCCCGCGTTCGCGATCGATAGCGCTGACGTTGCCCCAGGTAAACGTCACCAGTCCATAACGGGGCAAATCCATGTTAGCGTCAAATACCTGCTGCTTGAGCTTTTGCATTAGGCTGCCTCCACCAGACCGGCGCTGGCCATGCGCGCTTTCACCCAGTCACGCGCTTTCGCTACCTCTGCCGCCGGGTTCTCTGCTGTTTCACTCCACATCTCAATCAGATAGGGCCCGCAATAGCCACTCTGTTTGAGCGTTTCGAAGCAGCGTTCGAAATCGACAACGCCTTCGCCAAACGGCACATTTTTGAACACGCCGGGTTTAGTATCTTTGACGTGTACC [...]
+NODE	78	2844	155476	154161	0	0
+TTCTTTCACGGTCAGTTCAACACCAGCCTGTGGCTGGCGCTGTTAAGCGGCGGTATTAAGCCAGCTCAGTTTTACTGGCATATCTGGGGCGCGGATCTCTACGAAGTGTCCCACGGGCTGAAATTCCGCCTTTTCTACCCACTTCGTCGTATCGCGCAGGGGCGAGTAGGGGGCGTATTCGCGACGCGCGGCGATCTCAGCTATTTTGCGCGTCAGCATCCGGACGTACGCGGCGAGTTGCTCTATTTCCCGACGCGCATGGATCCTTCCCTGAATGCTATGGCAAAAGAGCGCCAACGTGCGGGGAAATTGACCATTTTGGTAGGGAACTCCGGCGATCGCAGTAACCAACATATTGCGGCGTTACGGGCGGTGTATCAGCAGTTTGGCGACACGGTAAACGTGGTGGTGCCGATGGGCTATCCGGCCAATAAGCAGGCCTATATTGATGAGGTTCGTCAGGCCGGCCTGGCGCTATTTAGCGCCGAAAAT [...]
+ACCGGTAAACACATCATAGGTACCGCCCACCCCCATATATAGCGCATGGGGATGCACTTCCCGACAATCGCGCATGAGTAATTCCTGTTTTGGCGATCCCATCGCAACGGTGACAATTTTCGCGCTGCTGGCATGGATACGCGCAAATAGCGCCTGACGCTGCTCCGGCGTAAAGTAACCGTCCTGGCTACCCACAATATTGACGTTCCACTGCGTCCGCAGTTTTGCTTCCGTCTGCGCCAGCACCTCAGGCTTGCCGCCGACAAGAAATACCGGTGTGCCTTCTTTCCCCGCGCGCGCCATTAACGCTTCCCAAAGGTCGGCACCAGCCACGCGAGAAACCTGCGCCTGCGGAAATTTTTTACGTATTGAACGCACCACGCTGATGCCATCGGCATATTTAAATTCCGCCGCCGCTATCAACGCGCGGACTTCCGGATTATCTTCCGCCGTCAGCAGTTTTTCGGCGTTGATCGCCACCAACGTGCCTTG [...]
+NODE	79	4595	939791	915565	0	0
+AAGCAACATAAAAAACGACGAAAAACGCCCAGGAAAACATGATCTTTTGAGCGGATTTTTCAGATCTGACAACGAACTGTGATCCGGTGGTGCTGATAACGTCCATTATGTTAAATAGCCCCGTTTTCCTTGAAATAATAACCCGTAACTTATATAATCATCAATAAGCTATAACTTATAGGAAAAGGGACATGTGGACTGTTTATTTTGGCAGATTATTTGATGAATGGTTTGAAGAACAGGAACTAGCCCTAAAACGAAAAGTGCTGGCTGAACTTAGACATCTTGAAGAGTTTGGCCCCTCTCTTTCACGACCACATGCAGATACTGTGAAAGGGTCACGTCATAAGAACATGAAGGAACTACGTATACAATATGAGGGACACCCAATCAGGGCATTCTTTGCATTTGATCCGATTAGGCAAGCAATCATTCTTTGCGCTGGCGACAAAAGTAATGATAAAAAATTTTATGACAGAATGATTCGTATTG [...]
+TGATATTCAGGCAGCATTTCCACTTCTTAAGTTTAATTTGAAAGAGAAACAGAAAAACCGTCTATCTCTGGTTTTGAAAAATGATGGATGGTCCGCTGAACGATAGGTAGATAAATGACGTTGCTACGTGGTCTCCCTCTTTTGCTGATTTCACGTAGCACTCTCACTCTGCCGCTACTTCTCGTTATGCTGAACAGATGATTGAAAAATAAGGATAATTAAATAATCTCTTGATTTTGTAATCCTATGATTATAAGATTATTGTGTATGAGTGTTTGGATAGAGAATTATTGTAATCAAGTGGGAGATATTATTTATGAATAATTTACGTGATAAAAAATCAAATCCTGTTATTACATTAATTGCTGTCGTGATTTCTTTATTCTTCCTTCCTGCAATCGCCGCAGGACTGGGGACTATGGGAGAAATTTACATTGATGGTCTGCGTGAATTACCGTCTTTTGGTATAAAGGCGATAAGTGTTGCAATCTG [...]
+NODE	80	6296	308062	303734	0	0
+GCATGAAAACGGCGATCGTACGGATCGCGGTATTCGCTGTCGCATTCCGGACACAAGGGAAACGCCGCCATCACCGTAAATGGCCGGTCATAGGGCATAGCGCGAATAATGGTGAAGCGTGGTCCGCAGTGGGTGCAATTGATGAAAGGATAACGGTAGCGCCGCTCGCCTGGGGTATTCATCTCGGCAAGACATGCCGGGCAGGTCGCCGCATCCGGCACGATTTGCGTGTTCATCGAACCGCCTGCGCTCTGACGAATGGTGAAATCCGTCGGTGCGCGCTCCCATACCAACGACGCGTGTTCAACGCTGTCAATGCGCGCCAGCGGCGGGCAATCCTGATAGAGCGCGGCAATAAATTGCGACGGCTCTTCCAGCAGCCGAACGACGACGCCGTCGCCGTCATTACACACGTCGCCGTGTAATCGCAACTGCTGCGCCAGCTGCCAGACAAAAGGACGAAAACCGACGCCCTGTACTTTGCCCCGAATG [...]
+TTGCGCCACTTCACGCGTGACCTGGGCCGGTTTTGGGTTTGCGTTTTTAGCCTTCGTCTCCTTGCTGGCGGCGTGATTTAAGAGAGTTTGAGCATGTCTGAAGAAAAATTAGGTCAACAATACCTTGCGGCGCTGCACCAGGCGTTTCCGGGCGTCGTGCTGGACGAAGCCTGGCAGACCAAAGATCAGCTGACTATTACGGTGAAAGTAAACTATCTGCCGGAAGTGGTGGAGTTTCTTTACTACCAGCAGGGTGGGTGGCTGTCGGTGCTGTTCGGTAATGACGAACGCCAGTTGTGCGGCCACTATGCCGTTTATTACGTACTGTCGATGGAGCAGGGCACGAAGTGCTGGATTACCGTTCGCGTTGAAGTGGATGCCAATAAGCTGGAATTCCCATCCGTTACGCCGCGCGTGCCGGCTGCCGTGTGGGGTGAGCGCGAAGTACGCGACATGTACGGTTTAATCCCGGTCGGTCTGCCGGACGAGCGC [...]
+NODE	81	2085	95009	92291	0	0
+ATGACGCCCGGCCTGACGCTTATGCAATAGCGTTTTCTTCCAGTTGCTGCATAAACTGGCGTACCCAGTCTATACGCGTTTTACGTTCGCTTAAATCCTGAATAAACTTGAGACGCGTCGGGCCATCCAGACGGAAATGCTGCGGCTGTTTTTGCAGCAACCCGATAAGCCAGGCGGGGTCAACGTGGTTTTTCTCGGCGAACTCAATCGTTCCGCCTTTCTCGTTACCCTCCAGTTTTCGGATGCCGAGCTTTTGCGCCTGTTGGCGCAGGCGTGCGATATCCAGCAGATTACGCGCCGGATCGGGCAGCAGGCCGAAGCGGTCGATCAATTCCACTTTGATCTCTTCCAGCTCGTTTTCGTTCTTCGCGCTGGCAATGCGTTTATAGAATGACAGCCGGGTATTAACATCCGGAATAAAATCATCCGGCAGTAACGACGGCATTCGCAGCTCGACTTCCGTTTGCTGACTGGTGAGATCTTCCAGCGAGG [...]
+CACGTCGGTCAACCGGTAGTGCATCTGGAGCACGGCGTCGGACGCTATGCCGGCATGACCACTCTGGAGGCTGGCGGCATCAAGGGTGAGTATCTGATGCTCACCTACGCCAATGACGCCAAACTGTATGTGCCGGTCTCCTCATTGCATCTGATTAGCCGCTATGCCGGCGGCGCGGAAGAAAGTGCGCCGCTGCATAAACTGGGCGGCGACGCCTGGTCGCGCGCCCGGCAGAAAGCGGCGGAAAAAGTGCGCGATGTCGCAGCGGAACTGTTGGATATTTATGCGCAACGGGCGGCAAAAGAGGGGTTTGCCTTTAAGCATGATCGTGAGCAGTATCAGTTATTCTGCGACAGCTTCCCGTTTGAAACGACGCCCGATCAGGCACAGGCGATTAACGCCGTATTGAGCGATATGTGCCAACCGCTGGCGATGGACAGGCTGGTGTGCGGCGACGTCGGCTTCGGCAAAACCGAAGTGGCGATGCGCGCC [...]
+NODE	82	18451	959080	950014	0	0
+CTAATGGCGATTCTCGGCCTGGGAACGGATATTGTAGAGATTGCCCGCATTGAGGCAGTGATCTCCCGTTCCGGCGAACGTCTGGCAAGGCGTGTGCTCAGTGACAACGAGTGGGCTATCTGGGAGACGCATCAGCAGCCGGTGCGTTTTCTCGCCAAGCGTTTTGCGGTCAAAGAGGCGGCAGCGAAAGCTTTTGGCACCGGCATCCGCAACGGTCTGGCGTTCAATCAGTTCGAAGTGTTTAACGATGAGCTGGGAAAACCACGTTTGCGGCTGTGGGGCGAGGCGTTAACGCTGGCGGAAAAACTCGGTGTGGCGCACATGCATGTCACGTTGGCCGATGAACGCCATTACGCCTGCGCCACGGTCATTCTGGAAAGTTAGATTTGCCGGATGGCGGCGTAAACACGTTATCTGACCTACAGGCCGATATATTGTCGGCCTGATAAGCATAGCGCCATCAGGCATTGTTGCGTTGGAAGTGCGTTAACC [...]
+GACTTCGGTGACCGTCATGCCGGTAATACCTACCTCGGCCAGCGCTTCACGGACATCGTCCAGCTTGAAGGGTTTAATAATCGCATCAATCTTTTTCATGCTATTCCTTGAAAAGGTCGCCTGTGTTTTGATCGGTTAAACGTAACATATTTCGCGCTACTTTACGGCATGAAAACTACTCTTTGAAATCATTCGCATCCAGTTCGTGACGGGAGAGTAGCTTATAGAATTCCGTGCGGTTGCGCCCCGCCATCCTTGCCGCGTGCGTCACGTTACCTTTGGTAATTTGCAGTAACTTGCGCAGATAGTTCAGTTCAAATTGGTTTCGCGCTTCGGCAAAAGTTGGCAGCGCGGTGTTTTCGCCTTCCAGCGCCTGCTCGACCAACGCATCGCTGATCACCGGCGAAGAGGTTAACGCCACGCATTGTTCAATGACGTTGACCAGTTGGCGCACGTTGCCCGGCCAGCTTGCCGTCATCAGCCGTTTCATTG [...]
+NODE	83	710	45380	45322	0	0
+CAGATGATACAGTGATAGAATCTATGAGTAGAGAGGAGAGACAATTATTTTTACAAATATGCGAGGTGATTGGTTCGAAGATGACCTGGCACCCGGAATTACTTCAGGAGTCGATTTCAACTCTACGAAAAGAAGTGACGGGCAATGCACAAATCAAAACGGCGGTTTATGAGATGATGCGTCCCGCAGAGGCTCCAGACCACCCGCTTGTCGAATGGCAGGACTTACTTACTGCAGATGAAAAATCGATGCTGGCCTGTATTAATGCCGGTAACTTTGAGCCTACAACTCAGTTTTGCAAAATAGGTTATCAGGAGGTACAAGGTGAAGTCGCTTTTAGTATGATGCATCCGTGCATCTCCTATTTACTACATAGCTATTCACCGTTTGCAGAGTTTAAACCAACAAATTCCGGTTTTTTAAAAAAACTTAATCAGGATTATAACGACTATCATGCAAAAAAAATGTTTATTGATGTAATTCTTGAAAAAA [...]
+CGAAGGGTGATTGTCCTTACGCGGTATGATTATACTTGCTGCTATGAAAAATCCGGCAGGCAGCCGGATTTTAAATTGGTTATTTTACTGACTATCTTTATGTCAGTAATATATTACGACTGCACCCATCTTTACCAATGTGCAAAGAACGTTCATGGGTTAGATATATTTTTTCAAGAATTACATCAATAAACATTTTTTTTGCATGATAGTCGTTATAATCCTGATTAAGTTTTTTTAAAAAACCGGAATTTGTTGGTTTAAACTCTGCAAACGGTGAATAGCTATGTAGTAAATAGGAGATGCACGGATGCATCATACTAAAAGCGACTTCACCTTGTACCTCCTGATAACCTATTTTGCAAAACTGAGTTGTAGGCTCAAAGTTACCGGCATTAATACAGGCCAGCATCGATTTTTCATCTGCAGTAAGTAAGTCCTGCCATTCGACAAGCGGGTGGTCTGGAGCCTCTGCGGGACGCATCATCTCAT [...]
+NODE	84	9824	521113	513853	0	0
+AAAATCATGCTTTATGTCGATTATCAGGTAAGAATATGGTCAGTATCCCCAGAAGCGGCAGGAAAGCACAGATTTTATAAACTAAATAGATACTGGTATGGTCGGCAATCAGCCCCAGCACCGCTGCGCCCAGGCCTCCCATCCCGAAGGCAAACCCGAAAAACAGGCCGGAAACCATACCGATGCGTCCTGGCAGCAGCTCCTGAGCATACACCAGAATGGCGGAAAACGCCGACGCGAGAATAAAGCCGATAATCACCGTTAAAATCCCCGTCCAGTACAGCGTGGCGTAGGGTAAAACAAGGGTAAACGGCGCGACGCCGAGAATAGAGCCCCAAATCACATATTTTCTGCCGATTTTATCGCCCACAGGCCCGCCGATTACCGTCCCGGCAGCCACCGCAAACAGGAAGGCAAACAGATGGAGCTGCGCGTTTTGTATTGATAATCCGAATTTTTGCATCAGATAAAAGGTGTAATAGCTACTGATGC [...]
+AACCTGACCATGACCAATATCCGTACGGTGCTCGGTTCGATGGAGCTGGATGAAATGCTCTCCCAGCGCGACAGCATCAACACGCGGCTGCTGCATATTGTCGATGAAGCCACCAATCCGTGGGGAATTAAAGTTACCCGTATCGAAATTCGCGATGTCCGCCCGCCCGCGGAATTGATCTCCTCTATGAACGCCCAGATGAAAGCGGAACGTACCAAACGCGCCTATATCCTTGAGGCCGAAGGGGTACGTCAGGCGGAAATCCTCAAAGCCGAGGGGGAAAAACAGTCGCAGATTCTGAAAGCCGAAGGCGAACGTCAGTCCGCTTTCCTGCAGGCGGAAGCGCGCGAACGTTCCGCCGAAGCGGAAGCCCGCGCTACGCAGATGGTATCTGAAGCCATCGCCGCCGGGGATATTCAGGCGATAAACTACTTCGTGGCGCAGAAATACACCGAAGCGTTACAGCAAATCGGCTCGGCGAATAACAGCAAA [...]
+NODE	85	9243	504191	499248	0	0
+GGCGGTCATGCTGGTACTAACGCTGGCAAGTTATCTGATTATTCGTAAAAACTACGGCTGGGCGACGGTCGGCTTTACGGTGACGGCGGTATACACCATCCAGTTACTGACGTTAAACGGAGAACAGTTTATTGTGCCGAGGCTGATCGATACGCTGATTGGCTGTTTAATTGCCTTTGGCGGCATGGTCTGGCTGTGGCCGCAATGGCAAAGCGGGCTATTACGTAAAAACGCCCATGATGCGCTGGAAGCCGATCAAGAAGCTATCCGACTGATCCTCAGTAACGATCCGCAGGCCACCCCGCTCGCTTATCAAAGAATGCGGGTCAACCAGGCGCATAACACGTTATTCAACTCGTTAAATCAGGCAATGCAGGAACCCGGATTCAATACCCACTATCTGTCGGATATGAAACTGTGGGTCACGCACAGCCAGTTTATTGTCGAGCATATCAACGCTATGACGACGCTGGCGCGGGAACACACCATGCT [...]
+TGGCTCCCATCACCAAAGGACGCACGGACGGGTCGAGCAGATTGCCGAGGGTGAAAATAAGAATGATGCCGAGACCGACATAAGCCCCGGCCATTGCTGAACTGACCCAGAAGCCGAGCGGATTATTCGCCGACAGGCGTGCGATGCGTGTAGCGTTAGCCGCACACTTATTAATAGTGTCTGTAAACATTTGATTATCCTTTTCTCACTTCATCCTTTGCACTGCCTCTTTGTTGGCTGCCCTCGCTCACCCCAGTCACATAGTGAACTATGCTCCTGGGGATTAATGAGGGACATCCTTGTCCCTCACCGAAGGCAGCCAGCGGCTGTTCAAATTCGTTCCTGACGAATTTGTTGCTCAGTTGCCGCCGCGATGCAGTACAAATGATTTTGTGATAACAATTAAAATGAAAAAAATACAAAAAAGGGGAGGCGTTGCGCCTCCCAAAAATAATTAACCGCGCAACTGCACCACGCCGTCTTTTACCCGCG [...]
+NODE	86	715	49714	49714	0	0
+ATTCCCATTCCTGAACCATGGCAACCGTTACGCCCAGCGCTCTGGCGAATTCATCTGTTTTTAGTCCCGTCCCTCTCCGTAACTGTTCAAATTCGGTAAAAGGATTGGGTTTTTGCGTCAGGGTGATCTTTCGCGTTTCATCTTTAAAAACAATTTGTTCCAGGCTGCTCAGCAGCTCAAACATCGGATCTTTATATTCCATTGAGAACTCCTGTAAATCACACAGCGGGATCGTGAAGTGCATCGAAGCCTCTTAAGAATAGTCGGGAAACTTGCGGGTGGGGGGCGACGCGCCGCCAGGAAGCGCTATCGATTCGTTTCGATGCCTTACGCTACGCGACTTTTAGGACGCTAACAATTTGATCCAGGAAGGTATATCCGTCTTTCAGAAAATAATTGTAAAGATTAAAAAAATATTACACTCCCCGCTGGAAAGCTTTCTTGCCGCGTTTTTTATCGCAGTGTCAGGCCAAAAATTAACAATAAAATAAC [...]
+GAGAGCAGGACTTACCTGTCGCCATTGTTAATACTCCTTTCACCCAAAAATGCGCACAACGACACCTGCGTGCCTGACGGCTTACAAGGATAGTCCAGGTCAGGCTTGCAGGATACCCTTTCCACGCGATCTTGTAGCGGAAAATTATGTTTATCTGCATCAATGCTTAATTTGTTATTTTATTGTTAATTTTTGGCCTGACACTGCGATAAAAAACGCGGCAAGAAAGCTTTCCAGCGGGGAGTGTAATATTTTTTTAATCTTTACAATTATTTTCTGAAAGACGGATATACCTTCCTGGATCAAATTGTTAGCGTCCTAAAAGTCGCGTAGCGTAAGGCATCGAAACGAATCGATAGCGCTTCCTGGCGGCGCGTCGCCCCCCACCCGCAAGTTTCCCGACTATTCTTAAGAGGCTTCGATGCACTTCACGATCCCGCTGTGTGATTTACAGGAGTTCTCAATGGAATATAAAGATCCGATGTTTGAGCT [...]
+NODE	87	12835	735060	722455	0	0
+GAAAGAAGCAGGGCAGAAATTAATGCCGTTTGAAAGGTGGCAACGCCCAGCGCGCTGGCGGATGCGCCTTCAGAAAATACGACCATAGCCCCGCATAATCCTGCAAACCAATTCCATAGCGGGATTTTTCTCTTTTTAATCAGAGTAGGGATTGAGGCGAATTGCTGGCGTGTTTCTTTGCGCGCAATAATAATAAAAAACATGACGACCAGACCGCTGGCAAACGAGATTACTGCGCAAGCATTACCGTCTTGTAACCAATGTCCTAACTGCCCATTAACGGCAGACTGCATCGGGGAAAGCATACCGGCTAAGATGGTGGCAAGCATCAGTAAGGGGGTTGAGTACTTATTCTTGTTCATACATCAATCCTTATATTTTATAAAAGGAGTAACTTTCGTTACTCCATTGTTTTTTATTTTCTGGCGATGAATTGAAGCGTGTTGACCCACAGGTCGGTATAAAACGGCCATGACATAAACTGCTGGGTTC [...]
+ATTGAGAATTTCACGCCAGCGTCCCGGCTGGTTGATGCCAAAGCGGTAGTCGTGGCGAGGCACGGGCGTAAAGTTGCTGGCGACGATGATCTCGTTACCGGCTTTATCACGGCGTACAAAAATCAGTACCGAGCGTTCATTGTCATCGACCACCAGCCACTCAAAGCCGTAAGCATCAAAATCCAGCTCATGCAACGCTTTATGGTGGCGATAGGTGTGGTTGAGATCGCGTACCAGACGCTGAACCCCGTGGTGCCAGTTATCGCCCCCCTCCAGCAGGTGCCAGTCGAGGCTGGCGTCATGGTTCCACTCGCGTCCCTGGGCAAACTCATTCCCCATAAACAGCAGTTTCTTGCCGGGAAAGGCCCACATCCAGCCATAATAGGCGCGCAGGTTGGCAAATTTTTGCCACGCATCGCCCGGCATACGATCGAGAATGGATTTCTTGCCGTGAACCACCTCATCGTGCGACAGCGGCAGAACAAAGTTTTC [...]
+NODE	88	10975	619026	605925	0	0
+GCCAGGCCTGGTAAGCGCTACGCCATCAGGCAAAAGTGTGAACATCTCATCCGGCCTACGATCATCTGTAGGCCGACTGTTCACCATGCGCCCTTAAAACGTTTCCCAATTATCGCTGCCGTCGGCCACTGCGGCCTTTGGTGACGACACGGCTGCCGGGGTTTTTACCGCAGCCACATCACGCGCACGCTGCTGTTGCTGGTGAATACGGAACACCGCGACGGCCTGGGTCAGACGGCTGGCTTGCTCTTCCAGCGCCGCAGCCGCGGCGGCGGACTCTTCCACCAGCGAGGCGTTCTGCTGCGTTACGCGATCCATCTCCGCTACCGCCAGGCCCACCTGGTCGATGCCACGGCTTTGCTCGTCAGACGCCGAGGCAATCTCGCCCATGATATCGGTCACGCGGGTCACTGCATTGACGATCTCATCCATGGTTTCACCGGCGCTTTCGACCAGCGTCGAACCTACATCAACACGGCTCACGGAATCCTC [...]
+GCAATACGCTCCAGAAGTACCGACGCCGGTTCGTCGTTCGGATCCTGCGGCACCAGCTTGCCGCGCACCGCCAGCTCCAGAATTAGCTCGCGCAGCTTCTTAATGCCGTACAGGTCAATCTTACCCGAGCTGCCGCGCCCCGCCGTGGAGCGGGTTTGCTGCGCCGTGGTCCAGGTGTCGATATGGTCGACAATCAGTTTTTCCACCGCCATCAGTTGGCCTCCTTACCGGAGAGCGCCGCGCCGAGGATATCGCGCAGCTGGTGGCGCAGGGTCTGAATTGCTTCCTGCTGCTTCGCGTACTGTGTGAGCAGTTCGTCCGGGTCGTGGCTGACGGTTTCCGCTTGGTGCGGGTTCTTGATATCGAGGTTAAAGTTGCGGGCAATCACCTCGTCGATGCTGACCTTCCACGCCTGTTCGTTCTCGACGCGGCTGGCGAAGCCGTCGGCCTCGTTGCCCCACCAGTCGATCTCGGCCTGGAATTCCTCAAACT [...]
+NODE	89	9935	485201	479696	0	0
+CGGAATTTGTCCCACCGAACGCGGGAAGGAGATCGGCAGCTTGCCTGACGGGTTGTAATCGCCAAACAGCACATCGGCAATGGCGTTGCCGCCTTCCGTCCCGGCAAACCAGGTCTCCAGAATCGCATCGGCCTGTTGATCTTCTTTTACCAGCGCCAGCGGTCTGCCGTTCATTAATACCAGTACCAGCGGCTTACCGGTGGCTTTCAGAGCGGTGATTAAGTCGCGCTGACTCTGCGGAATGGTGATATTGGTACGGCTGGAGGCTTCATGCGCCATCCCCTGCGACTCGCCTACCACTGCGACCACCACATCGGCCTGTTTCGCCGCCTGCACCGCCTCATCAATCATCGCCTGCGGTGAGCGCGGATCGATTTTCACTGCCTCTTCATACAGGTTTAAGAAATCGACGATATCTTTATCGTTAGTGATATTCGCCCCTTTGGCATAGAGGATCTTCGCCCCGTCGCCGACGGCATTTTGAATACCCGC [...]
+AAAAGTGTTTCATCGCATCTGCCCGGAGTTGCATCACGCCAGCCGCACGCCGTCCGGCACGCCGGTGCGTATTCAGCTTCTGGGCCAGCACCCGCAGTGGCTGGCGGAAAACGCCGCGCGGGCGACGGCGTTGGGATCGTATGGCGTGGACCTGAACTGCGGCTGTCCGTCAAAAGTGGTGAACGGCAGCGGCGGCGGCGCGACATTGCTCAAAGATCCCGAACTCATCTATCAGGGCGCGAAAGCGATGCGGGCCGCGGTACCGTCGCATCTGCCGGTGACGGTAAAAGTGCGTCTCGGCTGGGATAGCGGCGATAGAAAATTTGAAATCGCCGATGCGGTGCAGCAGGCCGGCGCCAGTGAACTGGTGGTGCATGGCCGTACCAAAGCGCAGGGCTACCGCGCCGAGCATATCGACTGGCAGGCGATCGGCGAAATACGCCAGCGTCTGACTATTCCGGTTATCGCGAATGGCGAAATCTGGGACTGGCA [...]
+NODE	90	1966	123289	122129	0	0
+TCACGCACGGTACGAACATTTTTCCCATCAGGGCGTTTATAGTTAGAGCTGGCTACACGCAGGAAGTAGTGACCGTTGGCCGCGTTATCCATTGAGTGTGAAAAATCGTTATAATTATCCGGCAGGCGGCGGTTAAAGATTTCACGCCCCATGATATCGTATTTCACATAACGCTGACCGTAGCCCCACGATAGTGCGCCATCCTGGTTTTGTTTAAAGCCCATCATAACGCCAGCACGATAAATTGACTTTAAATCATAAATTGAACTTGGATTCATAAACCAACGAATATCACCGGAGGTGTCGATAATAGCGTTAGCTGTAGTGAAGTTCCATTCTAATGCACCCCCAGTAGGGTTATTCCAGACAGTACGCGTTCCATTCCCAGACTTATCTTTCGTATTATTCAAAAGATACAAGCGATCTTTAAATTCTGGGGAAACCTTTTTAACATCGATAGTAAAGAGTGCTGATTGTTCTTCTTTTGTACCC [...]
+TTGAAAAATGTCGGTATTGACCCGACACCCGACAGAGGGAGCGCATGACAACCTTAAGCTGTAAAGTGACCTCGGTAGAAGCTATCACCGATACCGTATATCGGGTTCGTTTAGTGCCGGACGCGGCGTTTACATTCCGCGCTGGTCAGTATTTGATGGTCGTAATGGACGAGCGTGACAAACGCCCGTTTTCGATGGCCTCAACGCCGGACGAGAAAGGGTTTATTGAATTACACATTGGCGCTTCCGAGCTCAATCTGTATGCGATGGCGGTCATGGATCGAATTCTGAAAGACCGGGAAATCGTCGTCGATATTCCGCATGGCGACGCCTGGCTACGTGACGATGAAGAGCGTCCGTTGATTCTGATCGCGGGCGGTACGGGCTTTTCTTATGCGCGCTCCATCCTGTTGACGGCGTTAGCGCGCAACCCGGCCCGCGATGTTACCATTTACTGGGGCGGCCGCGAAGAAAAGCACCTCTATGATCTCT [...]
+NODE	91	9539	533453	526929	0	0
+GTCATTGGTAAATACACGATGGATCGCATCCTGACCGAAGGTCGTACCGTTATTCGTAGCGATACCCAACGCGAGCTGGAAGAGACTATCAAACCGTACAACATGGGGATTACCCTGCTGGACGTGAACTTCCAGGCTGCGCGTCCGCCGGAAGAGGTGAAAGCCGCCTTTGACGACGCGATTGCCGCACGTGAAAACGAGCAGCAGTATATTCGTGAAGCGGAAGCGTATACCAACGAAGTTCAGCCGCGCGCCAACGGTCAGGCGCAGCGTATTCTGGAAGAGGCACGCGCCTATAAAACCCAGACTATCCTGGAAGCGCAGGGTGAAGTCGCCCGGTTTGCGAAGATTTTGCCGGAATATAAAGCCGCGCCGCAGATTACACGCGAGCGTCTGTATATTGAAACGATGGAAAAAGTGCTGAGCCATACCCGTAAAGTACTGGTTAACGACAAGAGCGGTAATTTAATGGTGCTGCCGTTAGATCAGATG [...]
+AGTATATGCATAATTTCCCTGTATGTGCTTAACCAATAACCGTCAGTGAAGTGAGCGGGATATCCACGCCGAGGGCGCGTGAAAACACCCATTCAGGCTCACCGCGCTCGTTAAATGATTCTTCCCCGTTCAATAGAAGATACTCCCAGGCGTCATCCGTCACCTGGCGCTGGAAGCCCATCGTAAAATTGTGAACGTCCCATTTCTCTGCCTGCTGATTTTCAACCTTTTCCAGCATGTAGACAGGTTCAATATTGCCCGGCTCTTCATGGTTAAAAAAACGCTGCCAGCGCCGTTCTTGCCAGTTGAGCGTCATCGGCCCTATTGCCGCTGGCGCAATGGCTGAACGCCAGTGACGTTCCTCGTTAATACCGAAACTTTCCTCATATACAAAGAGTTTGATGTCATCAATGTCGTCAACATCCGTGCCGCCAGTGGTGTTAATTTGTAGAAACTCATCGCCAGAGGTGTAGTAGCGAAAAATCTGACTGC [...]
+NODE	92	3761	206140	204698	0	0
+TCGTCGCACGCGACGTTCAAATCTGCTCCCCGCAGATTTGTCGCTCCCCCCCAGTCACATCGTTATCTATGCTCCTGGGGATTCACTCCCTTGCCGCCTTTAAGCAACTCGAAATCCATAGCGTATATAGCGTATTGCGTATCTCAGTAACCGCGGTGACCCTCACGGTGGCTGACCTTATACAGAAGTGAATATTTCAGCACAATAATAGATTAACCATTCAAAAATCATCATCAGAGCTTTATGCTAAAAATAAGCCTGCAATATCTATAATTATGCTGAGAAAAGTAGAGCGCGCGCCGTTAGCCGAGAATACATCGCATCTGACAACATTTGGAATGTGGCTGAAAATCGCCAGAAAAACAATGCATTATAATACATTGATTTAAAAGTAATTAATGACTAACAACAACGAAAATCTCGCTGCGGGCAAAAAACACACAGTCACAGAGTATTTTATCGACAAAAAGCCCATAAATAAAAATATTACAC [...]
+CAGGCTAACGCCGCGCACTCTTGCTCGCTGAAATGGTGACTTACCCGCCATCCTGCCAGCGCATCTAATTTAGCTTGATTTACGCCAGCCTTACGCAGCGCTTTACTGTGCATCTCCAGGCAAAATGCACAACCATTTATTTGCGAAACACGCAGGTAAATCAGCTCCATCAGAGTGAGGTCAAGCGTGCTCTTTTCCAGCGCGTTTTTCGCCTGCACCAGAGCGCTGTAAACCTCCGGGCTCAGTTCATAATAGGGTTGGCGTAACGTCGTCATCATGTTTCTCCTCGTGTTGATGACGAGCACTGTAGCACTATAATGGTCTGTAAAAGAGAGCCATATTTTTACAGAAAAAGCAGACCATATGCCGCGCTATCAGCACATCGCTCGTCAGTTAAAAACGGCCATTGAGCAAGGAGAACTCGCGCCAGGAACGCGTTTGCCTTCCAGCCGAACGTGGGCGCAGGAACTGGGCGTTTCTCGCGCCACGGTG [...]
+NODE	93	1782	107296	107021	0	0
+AGCGCACATCCCCACGCAGCTCACATAAGATGCCCCAGGACGTCTGTCAGGTTGCGCAAACGGCGTTCCTCAACTACTACTTAATAGGTTCTCATCGCTGAAGTAAGCAGATGATCTTATGCGGGCCATCGAATGGATATTTCCCCATGGCTCTCGTTTTGTTGAGGTGGATATGACTGGTTCCGCATCATCTGTTTTAAAGACAGATACAAGACTATTGAGCGAAAACCTGTTTCTTAATTATGGTCTGGAGTCCTTATTTAAGGACGTCGCAATAATAGCTGGTAACGTAAATTATATTATTTTTGATATCGACGATTACTACACCGTACAGCAGTATATTACTTCCGCATTTAAAACGGTACTCATTGGAATTGTTACCCATAATGAATATAACTTTATTGATGAACATCATGCTATATATCGAATAAAGGTCGACGCCTCTATTGCTGAGTGGCGTGAGTTACTGATTTTGGCCGCTGCTGGCCAATT [...]
+AACAAGGGAGGGGGTTACTCCTCCCCTGTTCGTTAATAATGCAGATGCCTCAACGTGCGGTGCCTGATTTTTCGTAGCCGTTTGCATGGATTTGCGGTGCAACATGCTGCATGCTTTCTGGCATCTCATGCTGCCGATATACGGCTGGCAGTAATGTTAAGCATGAGCCATTTTTCACATGAAGACTAAATTTACCCGATTCTTTTAAAGCCTGAATAAGATTTTCCTGCGCGGGAGTTAATGTCTCATCATGCCACAGAACAATATGCTCGAAAGACGTTGATAAAAGATCGGGCATCGGCGCCTGCCAGGGGATGACTTCAACTCGCATACCTTCACTACAATATTTAATCGTTTCCAGCCATAGCTCAATGGGGTCGTTCAGCGAAAACGCAGCAATAAGCATTGTGCCTGCTGGCGCCTTTCGTACGCTACTTAGCTGGAACGTGGCGTATTCAATAATCGCAGTATCCAGTAATGCCTTTTCAAATC [...]
+NODE	94	87	24151	21026	0	0
+AGTTCCCGAAGGCACCAGTCCATCTCTGGAAAGTTCTGTGGATGTCAAGACCAGGTAAGGTTCTTCGCGTTGCATCGAATTAAACCA
+AGAACTTTCCAGAGATGGACTGGTGCCTTCGGGAACTGTGAGACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTTGTGAAATGTTGG
+NODE	95	14	5476	5326	0	0
+CATGCTCCACCGCT
+GTCTTGACATCCAC
+NODE	96	21650	1279693	1266231	0	0
+AGTTACCGATCATGGTCGCCAGGACTTCGTTATCACGTGGGTTCAGGCAATAGAGGATAGTCTTGGGCAGTTCATTAGTCACATCCATACTGTCGAGCAAACGGGAGAGCGCCCAGCTAATGTTATTATCGCCAATGGAGTCAAAGCCGGTATCCGGCCCCAGCAGGCGGAACATCCGGGTATTATTATTACGGATCGCGCCAATATGTAGCTGCATCACCCAGCCGCGCGCGGCGTACTGGCGGCCCAGCCAGACCAGCACCGCCGTGGTAAACTGGGCGATCTCAAGTTCGCTCAGCGTTTCGCCAGCCAGACGTTTGCCCAGAATGGCGTCAAGCTGCGCGTCGTCGGGCACCGGCGCAAATCGCAGCGTTTCAATGCCATGATCGGACGCGCGGCAGCCGCAGGCGGCGAAATGGTCGAGACGGCGAGTGAGCGCCTGACGTAAATCGTCGAAACGGGTAATGCTGACATCTGCCGCCGCTTCCAGTT [...]
+CTTTCCTTTTTATACTTCCTTAAAAATCCCCATGTGTTTTTAATTCAATGATTTAGCGTGGAAATCTTTTCAGGTGCGTTTTGATTTATCCCTACGTATCCGGAAAATTGTGGGTCAGATTAAGGGTTCATTCAGTTCGATGAACGGAGAGACCCTCATGTTAACTGATAGCAAGATCTGCGCCGCGCCTCCTCGAAAAACCCTACAAAAATCACCGATTCACAAATTCTGTACCTGACGGCTCTAAGCTATGGTATTTCCGCTATCGCTTCGGCGGTAAAGAAAATCGTCTGACTTTCGGCCCCTATCCGCAGGTTACGCTTGCAAAAGCCCGCGAAAAGCGCAATGCCGCGCGTAAGCTGCTGGTATCGGGTATCTGCCCTTCTCTGATGCCAGTGAGCGTCAAGGAGCGCAACGGCGTGCGGGCGGCGTATGTACATGGAGGCGCGTATGGAGATGATGCAGTGGTGGTCAGATTATCTGGACGTGAGC [...]
+NODE	97	645	33164	30853	0	0
+GCCAGTAGCTGCGCTACGATTTTGCCCACGGTCAGACAGATAGCAATCAGGGCGATGGTTTCGATTAGCACCAGAGAGGTGATCATACGGCCCACATCCGGCTTTTCAAAGGCCGTCGGCACGGCCTGATCGTCAGGCATTCCATCCGGCGTGGTGGAGTGTTTCACCAGATAACGCGCTACCGGGCCGCCAATCAACCCGCCCAGCACCAGGCCAAAGGTTGCACATGCCATCGCAACTTCGGTGGCACTGGCAAAACCATAACGTTCGACAAACAGTTTACTCCACGCCGCGCCGGTACCGTGTCCGCCGGACAGCGTAATTGACCCGGCAATCAGCCCCATTAACGGGTCCAGCCCCAACAGACTCGCCATGCCGATACCGATGGCATTCTGCATCAGCAGTAATCCGACCACGACGACCAGGAAGACGCCAACAACACGCCCCCCCTTGCGCAGGCTGGCAAGGTTAGCGTTAAGGCCGATCGTCGCG [...]
+GGGGGCTACTGGTCGCGGTTGCGCTGCTGGTGCTGAAAAAAAGCGTCGGTTGGGAGGTCAACTTTGATATGACCCTGCGCGATCCGTTGATGCTGGCGTTTTTCGCGACGATCGGCCTTAACGCTAACCTTGCCAGCCTGCGCAAGGGGGGGCGTGTTGTTGGCGTCTTCCTGGTCGTCGTGGTCGGATTACTGCTGATGCAGAATGCCATCGGTATCGGCATGGCGAGTCTGTTGGGGCTGGACCCGTTAATGGGGCTGATTGCCGGGTCAATTACGCTGTCCGGCGGACACGGTACCGGCGCGGCGTGGAGTAAACTGTTTGTCGAACGTTATGGTTTTGCCAGTGCCACCGAAGTTGCGATGGCATGTGCAACCTTTGGCCTGGTGCTGGGCGGGTTGATTGGCGGCCCGGTAGCGCGTTATCTGGTGAAACACTCCACCACGCCGGATGGAATGCCTGACGATCAGGCCGTGCCGACGGCCTTTGAAA [...]
+NODE	98	4189	229228	223033	0	0
+TGATTATCTTGATCGCCAGTACATGCTGGGAGATGCGGTCATGGTAGCGCCGGTATTTAGTGAAGCGGGCGACGTGGAGTTCTACCTGCCAGAAGGCCGCTGGACGCACCTGTGGCGCAACGATGAAGTGCAGGGCAGCCGCTGGCATAAACAGCAGCATGACTTCCTGAGCCTGCCAGTGTATGTGCGTGACAATACACTACTGGCGCTGGGCAACAATAGCCAGAAGCCCGATTACGCCTGGCATGAGGGTACGGCCTTCCAGTTATTCCATCTGGATGACGGCTGCGAAGCGGTCTGCGAAGTCCCTGCTACGGATGGTTCGACAATCTTTACGCTGCAGGCGAAACGCACAGGCAATACCATTACGGTGAGCGGCGAAGGCGAGGCGCGCAACTGGACGCTGTGTCTGCGTAATATTACGCAGATTAGCGGTACCAAATGCGGTTCATATGCGGGAAGTGAACTGGGCGTAGTGGTCACCCCGCAGGG [...]
+ACCAGCTTGCGACCCAGTAGCAGCACCAGCGTGGCGGCGACAAGGGTCGATAAGGTATCGAGTTCAAACATTTAAAGCTCCTGTAGTGCGCTGTGACATGTGCGCACAAATCATTTCCTGAGTCAGTTTTTTAGCTCTTTGCGAGTCTTCGGCATGGATTTTAAGCAGAAAAAGGCAAAAAGTTATATAAAAAGGTGCATTTATCTTTTTTAAATATTAAGAATATTCGCTCGCAATCGTTTGCTTTTACCATCTGGTCAGATAAAATCACCGCTTTTCCACCACGAGAATGTCCCTGATGTCCGTTAACGCCATCGAGCCGGCAGATGCGCAACCGGTTGCGCAGACGCAAAACAGCGAATTAATTTACCGTCTTGAAGATCGCCCGCCGCTCCCTCAAACCCTTTTTGCCGCTTGTCAGCATCTGCTGGCCATGTTTGTCGCGGTAATCACGCCAGCGCTGTTAATCTGCCAGGCGTTGGGTTTACCGGC [...]
+NODE	99	9040	465535	461158	0	0
+GGATGCTGACTGGCGCGGGATGCGCGCTGTTTACGTTGTGCTTTGTACCCGGTAAACGCGGTAGCGTACTGACGCTGATGATGGCGCAGACGCTTTTTATTGTCATGCTGTGGGGAGTCGGCAGGGCGGCGACCCAGTTGGCGCAGGAGGGCAGCCCGCTGGCGCGTACCAGTCTGGGAAGTGGACTGTGGCTGGGCCTCGGTCTGATGCTGCTGGCCTGTAGCGATGCGATCCGCCGTATTACCGTTGGGCCGCTGTGGCGCTGGTTGCTGCACGCGCAAATTGTCATTGTCCCGCTGGCGCTGCTGTTTTCAGGCACGTTCGACAACCTCTCGCTTCTGAAAGAGTATACCAATCGCCAGGATGTTTTCGATGCCGCGCTGGCGCAACATTTAATGTTACTGGCGGGCACGGTGCTGCCGGCGCTGGCGATCGGACTACCGTTGGGCGTCTGGTGTTATTTTTCCGCCTCACGCCAGGGGCCGGTGTTTA [...]
+CGCGTAACGCCGGTTTTATCAATAAGCGTTTCGACGGCGTGCTGGCGGCTGAACTGGCCGATCCGCAATTGTACAAAACCTTTACTGACGCCGCTGCGGTGATTGGCGAAGCATGGGAAAGCCGTGAATTCGGCAAAGCTATCCGTGAGATTATGGCGCTGGCCGACATCGCTAACCGTTATGTTGACGAGCAAGCGCCGTGGGTGGTGGCTAAACAAGAAGGCCGCGACGCGGATCTGCAGGCCATTTGCTCAATGGGCATCAACCTGTTCCGCGTGCTGATGACGTATCTGAAACCGGTACTGCCGACGCTTTCTGAACGCGTTGAAGCCTTCCTGAACAGCGAACTGAACTGGGATGCCATCGAACAGCCGCTGCTCGGTCACAAGGTCAACACCTTTAAGGCGCTCTACAATCGCATCGACATGAAGCAAGTTGAAGCGCTGGTTGAAGCGTCTAAAGAAGAGGTGAAAGCCGCAGCTGCGCCGGTTA [...]
+NODE	100	1706	74829	72905	0	0
+AATAGATATGAAAGAAGGATGACGACAGCCAGGAGTCCAAAGCGAACAGGCCGCCATAAGAATGTCCCCATACCCCGCGCCGTTCGGAGTTGATGGTTATTCCTTGTTCCACCTGCGGCGCGATATGTCTCTCCAGTAGCTGGCGGAACGCTGGCCCGCCGCCGGTTTTACGATGAAAACGCGGGTTATTTTCACTGTCATCGCGATCGATTCCCGGCGCCGGCGTATAGTCATAAGCTCTGCCGTTAAGATCAAACGGCAGGTTAGTCTGATAGCCAATCGCCACAATCACCGGCGGCGAGTGGTCTGCCAGCTGTTTGAGCAGCGTCTCCGGCAGCCTGTCCATCACTGCGTTGCCGTCCAGCATATATAAAACAGGATAACCCGACGGCGGGGCGGCTTTATTGGGAATAGCGGTCCATACCCGGTAATGTCTTGCGCCATCGGTAGATTGAAAGTCATTGACCCTAAAATGGTAATATCCCGAACCTT [...]
+TAAAGATAACGTGGCGAAAGGTATGATGACGCAACTGCCCACAACGGATATCTGGCATCTGACGCTTCGCTTACCGGCGTCCTACTGCGGTTCCTATACGATGGTCGAAATACCACCGGAAACCCCGGACGAGACGGTGTTGCAGCTTGGAAGCCGTTTCGCCTCCCTTGTCGGGAAGGCGGACCCGCTGAACAGCACGCCGGGAATAAATGTTCGGGGTAATACGCAGGAGTCCGTTCTAGCGTTGGATCATGCCCCGGCACAGGAGGAGTGGTCAGGCTGTCGCGCTTACGCCGGGCAGCTTTTCACCTCAGAACATCGGCTCGCCGGACAACGTCGCCGTGTGCGGCTGTATCTTCCTGACGTTCCTGTCGTACAACCGCTGGGCTTACTGGTACTCACGGATGGCGAGATCTGGTTCGACCATCTTGGGGTAAGCGCCGCCATTGACGCCGCCATCCGCAGCGGACGCATCGCGCCGGTGGCCGTACT [...]
+NODE	101	1692	92789	92136	0	0
+GGCGGCGCGCTGCTTAACCTGAACGGCGAGCTAATCGGGATTAATACCGCGATCCTCGCGCCAGGGGGCGGGAGCATCGGCATTGGCTTTGCTATTCCTTCCAATATGGCGCAGACGCTGGCGCAGCAGTTGATTCAGTTCGGCGAAATCAAACGCGGATTGCTGGGAATTAAAGGCACTGAAATGACCGCTGATATCGCTAAGGCATTCAAACTGAACGTTCAGCGTGGCGCTTTTGTCAGCGAGGTTTTACCCAATTCAGGTTCGGCGAAGGCCGGGGTGAAATCCGGAGACGTGATTATCAGTCTTAACGGTAAGCCGCTGAATAGCTTTGCCGAACTGCGTTCACGTATCGCCACCACCGAACCGGGTACGAAAGTGAAGCTGGGCCTGCTGCGCGATGGTAAGCCGCTGGAGGTGGAAGTCACGCTGGATTCCAATACCTCTTCTTCCGCCAGCGCCGAAATGATCGCCCCGGCGTTGCAAGGCGCG [...]
+CTACCCTGCTGCGCGTGCAGCGGCGCGATTTCTCGTCCGCCAATACCGATATAGCCGCGAATCACGCGACCGTCGCGGATAAGCTTATCCATAATTTTCGTGGCTAGCTGGAAGGGAATCGCAAAACCAAGGCCTTCCGGCGTTTCGCCATCGTTACTCTTATCAAAAGAGAGGGTGTTGATCCCCATCAGTTCGCCTAACGAGTTGACCAGAGCGCCGCCGGAATTACCGTGGTTAATCGAGGCGTCGGTCTGGAGAAAATTCTGTCGCCCCGTCGGGTTCAGGCCGATACGACCCGTTGCGCTGATGATCCCCTGGGTGATGGTCTGTCCCAGATTATATGGGTTGCCGATAGCCAGTACGACGTCGCCAATATGCGGTGTACGCTTTGTATTAATCGGGATGGTAGGCAGCCCGCCAGTGGCGTTGATCTTCAGCACCGCCAGGTCGGTAAGCGAATCGGAGCCAACCAGTAGCGCTTCAAAGACGCGG [...]
+NODE	102	542	26698	26026	0	0
+TATCGTAATCACTGAGAAATTAAATCATGCTTCGCTTGATTTATGGCATATCCTTAAGTTATGCCTGTGGCATTACGGTATCATCGCAGGGTTTATTTTTATGGCGGAGTATACGTTAAGTAAAAGTATACGGCAGGTTCAGCGCTTGTCCAAAAAGTTTGGGGCACAGGATTTTTCTTCACGCCCGTGATCCGCCGCTGCAGCCTGCGTTCTTACTGAATAATGGCTATGACTAGCAGACCGAATTATCTCGGTTCGAGGGGGATTCTATGTGTTTGCACAACTGCGGTGAATCGTAATTTCAGATGCATTATCGCCGACAATTGACGCGTTCCTCACTAATTGCCTTCCTGACTATATAGTGGTCTTATCTTTGACAAAACAATGTTATTTAGTTATGGAAGGCGACAACAACTGTACTACTGATTATCAAATAACCTTTCTGGTCAGGTAGACTCGCCTTTGTGAAAACACATCGTTATCTGTGTTCCT [...]
+AGGAACACAGATAACGATGTGTTTTCACAAAGGCGAGTCTACCTGACCAGAAAGGTTATTTGATAATCAGTAGTACAGTTGTTGTCGCCTTCCATAACTAAATAACATTGTTTTGTCAAAGATAAGACCACTATATAGTCAGGAAGGCAATTAGTGAGGAACGCGTCAATTGTCGGCGATAATGCATCTGAAATTACGATTCACCGCAGTTGTGCAAACACATAGAATCCCCCTCGAACCGAGATAATTCGGTCTGCTAGTCATAGCCATTATTCAGTAAGAACGCAGGCTGCAGCGGCGGATCACGGGCGTGAAGAAAAATCCTGTGCCCCAAACTTTTTGGACAAGCGCTGAACCTGCCGTATACTTTTACTTAACGTATACTCCGCCATAAAAATAAACCCTGCGATGATACCGTAATGCCACAGGCATAACTTAAGGATATGCCATAAATCAAGCGAAGCATGATTTAATTTCTCAGTGATTACGATA [...]
+NODE	103	4702	262809	257507	0	0
+TCGCTTCGCTGCGCGTTTCCGGGCTGCGCCTCAATCTGTTTGCCATTCTGATTGTGATTATGGGCGGGTTGGTCACCGCGATTCTGCATAAAATTTTCGCTATTCCGCTGCCGGTGGTGCTGGGGATTTTCTCCGGCGCAGTCACCAATACGCCTGCGTTAGGGGCGGGTCAGCAAATCCTGCGCGATCTGGGAACGCCAGTGGATCTGGTGGATCAGATGGGGATGAGCTATGCGATGGCGTATCCGTTTGGCATCTGCGGTATTTTGCTCACCATGTGGCTGATGCGGCTGATTTTTCGCGTTAACGTCGAGGCGGAAGCGCAGAAGCACGAATCCTCTCTCGCTAACGGTCATTCATTAATTCAAACAATGAATATCCGTGTCGAGAATCCGAACCTCAATAATATGGCTATTCAGGATGTGCCGATCCTGAACAGCGATAAAATCATTTGCTCACGCCTGAAACGCGACGACACGCTGATGGTGCCGT [...]
+ACGATCGTGACCGATTCCCTGTTCTGGCTGGTCAAGCAGTATTGCGGCGCTACGCTGAATGAAACGTTTAAATACTATACGACGGCCACGTTTATCGCATCTGTCGTTGCACTGGCTGGCACATTCCTGCTTTCCTTTATCATCTGATCGTAAAGAGACGTACTATGGAAAACATACAAAAGCTCATCGCCCGGTATCCTTTGGTCGAGGATCTGGTCGCCCTCAAAGAAACCACCTGGTTTAACCCGGGCGCCACCTCTCTTGCACAAGGTCTACCGTATGTCGGCCTGACGGAGCAGGACGTAAACGCCGCCCATGACCGTCTGGCGCGCTTTGCGCCGTATCTGGCGAAAGCGTTTCCGCAAACCGCTGCCGCTGGCGGCATGATCGAATCTGACGTGGTCGCTATTCCGGCCATGCAAAAACGGCTGGAAAAAGAGTATGGGCAAACGATTGACGGTGAAATGCTGTTAAAAAAAGACAGTCACCTGG [...]
+NODE	104	1696	85420	84401	0	0
+CTGCCGTTACTGGAAAAACTCACCACCGGCAGGATTGCAGAGCTGCTGGCGCCGGACTATCTGGATATGAGCGATGCGCGCCCCATTTTTGACTGGGAACAGGTGATCCGCAAAAAGGCGGTGGTTTATATCGGCCTCGATGCGCTCAGTGACAGTGAGGTGGCCAGTGCCGTGGGAAATTCGATGTTTGCGGACCTGGTGAGTGTGGCAGGGCATATATACAAACACGGTATGCATGCCGGTCTGCCCGGTCTGCCGGCTGGCGGGGCGGGTAAAAATGTGGTGAACCTGCACTGTGATGAGTTTAACGAACTGATGGGCGATGAATTCATTCCGCTCATCAACAAGGGGGGCGGCGCCGGAATGCAGGTGACCGCGTACACCCAGACGTCATCGGATATTGAAGCGCGTATTGGTAATGCGGCCAAAACGGCGCAGGTTCAGGGGAACTTTAACAACATGATCATGCTGCGCGTCAGGGAGAACCGGACG [...]
+CCTCTGTGGATTATAAATATTTCTTGAAGGATGCCATTGTCACGGTGACAGCCATACCCAGCAGCATGGCCGCCGGCCATATCAGCAGATTCGGGTACACGGCCGTCGGCCAGGAAAGATAGAGAATACAGGGAATATATATCGCCGGTTTAATGGACTTTTTCGCATGGTGATAAACAAAGCTGGATTCATACGCGGCACCATACCGGCGCAGATCACGTCTGCCCAGCCCCTCAACCACGGCCACCAGGATCACCATCACGAACAGTGGCACGGACAGCACGAGAATAATCACCCTGACCATCGTCACCACCGTCACATAAACCGTTGCCAGCAGGTAATCATGAAGATGATATGCCAGCCACTGGCTCAGCTCTCCGCTGAACTGCGACACACTACGCCCCGCCGCCGTTACCGCCTGCTGCGACTGCAGCCATGACTGCATACCACTTTCCACAAACAGCCACTGATACGCCAAGGAAATCCAGCCCG [...]
+NODE	105	105	37578	29629	0	0
+TGTGCGGGCCCCCGTCAATTCATTTGAGTTTTAACCTTGCGGCCGTACTCCCCAGGCGGTCTACTTAACGCGTTAGCTCCGGAAGCCACGCCTCAAGGGCACAAC
+CTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGATGCAACGCGAAGAACCTTACCTG
+NODE	106	3019	139603	138421	0	0
+AGGCGGTAGAGATAGAGCGGCCCTCCCGCTTTTGGCCCGGTGCCGGACAGGCCTTCGCCGCCAAACGGCTGGACGCCGACGACCGCGCCCACCATATTACGGTTAACGTACAGGTTGCCGACATGGGCGGAACCGGTGACTTGCGCAATGGTTTCATCAATACGGGTATGTACGCCCAGCGTTAGCCCGTAGCCGGAAGCGTTAATCTGTTCGATAAGCTCCGCCAGTTGGTTACGGTTATAACGCACGACGTGCAGCACGGGCCCGAAGACCTCTTTTTCCAGTTCTGCGAAGTTTTCCAGCTCAATAAGCGTGGGCATAACAAACGTACCGGTCTGCCATTCCTGCGCGTCATCGCTGTTTTCACGCGCGGCCTGGAAAACCGGGCGGCCTTTGGCGCGCATCGTCTGGATATGACGTTCAATGTTGGCTTTGGCCTCGCTATCGATCACCGGCCCGATATCGGTCGTCAGACGGCCTGGATTCCCCATC [...]
+GTCGCTGAGCAGGCGCATAAACTGGCGTATCAACTGGCGGAGAAATTGCGCAATCAAAAATCCGCCAGCGGTCGCGCGGGTATGGTGCAAGGCCTGTTGCAGGAGTTTTCCCTCTCTTCGCAAGAAGGCGTAGCGCTGATGTGTCTGGCGGAAGCGCTGCTGCGTATTCCCGACAAAGCTACGCGCGATGCGTTAATTCGCGACAAAATCAGTAATGGCAACTGGCAGTCGCATATTGGCCGTAGCCCGTCGCTGTTTGTAAACGCCGCCACCTGGGGGCTGCTCTTTACCGGCCGACTGGTCTCAACACATAACGAAGCCAATCTTTCACGCTCGCTGAACCGCATTATCGGCAAGAGCGGCGAACCGTTAATCCGCAAAGGCGTCGACATGGCGATGCGTTTAATGGGCGAGCAGTTCGTGACTGGCGAAACCATTGCTCAGGCGCTGGCGAATGCCCGAAAACTGGAAGAGAAAGGGTTCCGCTATTCT [...]
+NODE	107	6748	340303	333504	0	0
+GTGCGCGTTTCAGGGAATTAGTTGAAAAACGGCAACGGTTTGCCACGATTCTGTCGGTTATCATGCTGGCGGTTTATATCAGCTTTATTTTACTGATCGCCTTCGCGCCTGGCTGGCTGGGCACGCCTCTACATGCGGGAACCAGCGTCACCCGAGGAATTCCCATTGGCGTCGGGGTGATTGTGATTTCTTTTGTGTTGACCGGAATTTATATCTGGCGGGCGAATGGCGAATTCGATCGTCTTAATAACGCCGTACTGCATGAGGTGAAAGCATTATGAAGAGAGTTCTGACGGCGCTCGCCGCCGCACTCCCCTTCGCCGTTCATGCGGCGGATGCCATTAGCGGCGCGGTTGAACGCCAGCCCACCAACTGGCAGGCGATTATCATGTTTTTGATTTTCGTCGTGTTTACGCTCGGTATTACCTACTGGGCCTCTAAACGCGTACGTTCCCGTAGCGACTACTACACCGCAGGCGGCAATATCACCGG [...]
+GAAAAGCTGAAAGTCCCCGGCGGCATTCTGTTGACCATTATTGGCATTTCTATTGTGGGTTTGCTCTTCGATCCTAACGTCCATTTTTCCGGCATTTTCGCCATGCCTTCGTTGAGCGATGAAAACGGCAACTCGCTGATCGGCAGCCTGGATATTATGGGCGCGTTAAACCCTGTCGTTCTGCCAAGCGTACTGGCGCTGGTGATGACGGCGGTGTTTGATGCGACCGGAACGATCCGTGCGGTCGCAGGGCAGGCTAATCTGCTGGACAAAGACGGACAAATTATCGATGGCGGTAAAGCGCTAACCACCGACTCCCTGAGTAGCGTTTTCTCCGGCCTGGTCGGGGCGGCGCCCGCCGCGGTGTATATCGAGTCTGCGGCCGGTACGGCGGCGGGCGGTAAAACGGGCCTGACGGCGATTACCGTGGGCGTGCTGTTTTTGCTGATCCTGTTTCTTTCGCCGCTCTCTTATCTCGTTCCCGTCTACGCA [...]
+NODE	108	773	39470	39220	0	0
+GGGATACCCGGATTCGAACTGAATCTCCGCCAGTGTTTGAAAAAAGCCACGGGCGTTAATATAGGTTTTACGCACGTGCGGATCGGCAATTAATTCATCGTACCGTTCGCTAATGGCGATATCGCCAAACGGTTTGCCGTAGCGTCGTTGTACGTCATAGGGCGAAAAGAGCGCCATTTGCGCGTTTTCTTTCGCCAGCCGGAAGGTGATATCCGGGATCACCACGCCGAGAGAGAGCGTTTTGATCCGGATTTTTTCGTCGGCATTTTCCCGTTTGGTATCCAGAAAACGCAGAATATCCGGATGGTGCGCATGGAGATAAACCGCGCCGGCCCCCTGGCGCGCGCCAAGCTGGTTGGCATACGAAAACGCGTCTTCCAGCATTTTCATCACCGGGATCACGCCGGAAGACTGATTCTCAATGCGTTTGATCGGCGCGCCCGCCTCGCGCAGATTGGAGAGTAAAAACGCGACGCCGCCGCCGCGTTTGGA [...]
+GAACACTTTGAAGATCGGGTGACAATGGTGGCGTTGACGCTGGCGCAGGGTGACGAAACGCTGGCCACCCAACTGACCGATGAAATGCTTTCTGGTCGCTTTCAGCCCGCCACCCCGACTTTTTTAAATTGCGGCAAACAGCAGCGTGGAGAACTGGTCTCCTGCTTCCTGCTCCGTATCGAAGACAATATGGAGTCGATCGGGCGGGCGGTGAATTCGGCGCTACAACTCTCCAAACGCGGCGGCGGCGTCGCGTTTTTACTCTCCAATCTGCGCGAGGCGGGCGCGCCGATCAAACGCATTGAGAATCAGTCTTCCGGCGTGATCCCGGTGATGAAAATGCTGGAAGACGCGTTTTCGTATGCCAACCAGCTTGGCGCGCGCCAGGGGGCCGGCGCGGTTTATCTCCATGCGCACCATCCGGATATTCTGCGTTTTCTGGATACCAAACGGGAAAATGCCGACGAAAAAATCCGGATCAAAACGCTCTCT [...]
+NODE	109	6394	298141	295131	0	0
+AGACGATATCGGAAAACAGACAGGTACTGGACATACGGAAATCAAGCGTGACCAACAGATCGAGCTTGCCCTCAATCGCGGCGGACTGCCATTCCACCTCTTCAGGCTGAATTCCTTCGCTGGAACCCAGCGCTTCGCCCTGGATACCGCTGTCGGTGCCCAGCAGATATTTGAGCATGTACTCATGACCTTTCCCGGAGGAGCCGAGCAGGTTAGAGCGCCAGACAAATAAATTTCGCGGGTGATTATGACCACTGTCAGGCTGTTCGCAGGCAAAACGGATAGCGCCTGATTTCAACGCCTGCACGGTATAATCCGCCGCAGACAGCCCGGCTTTATCGGCGCTCGCTTTCACGCTGAGCGGGTTAAGATTAAGCTGCGGCGCCGAGGGTAGCCAGCCCATACGTTCCGCGCGCACGTTGAAATCGATCAGGTGTCCGGAAAATTTAGCCGGATCGGCCAGCGGCGACAGCAACTCTTGCGCAGTCAGTT [...]
+CCTTTTGGCGACTGACGGGGCAATACGCACGCCTCAGCGGTAAAGAGGTTGAGGAAATGGACTCCCCCTGCCAGCTAGCGCATTAAGCGCTTATCTCACCAGGCGTTATGTTATCGGCGTTGGGCTTTTGCCAGGCTGAACCACATCCCTACCGCCAGCAAAAGAAGCATGCTCCCGGCGCTGCTTAACGCCACGCTATGCGACCAGATAAAGGCGTGTCTGGCGGCGTCCAGTATTGTCTGCCCCAGCGTGGGCGGCAGGCTATTCGCCAACTGCACGGCTTCTCCCATTGAAGATGACGCTCTGGCAATCTCTTGCGCCTCAAGCCCGGCAGGCAGACGGATAGACGCGGAGAAGCTACGGCTTAACAACAGGCCGAAAATGGCGATGCCCAGTCCCGCGCCCAGTTCATAAGCCATCGTTTCTATCGCGCCGGCCGCCGCCGCTTTTTCTGCCGGCACAGCGGCCATAATTGCCGACGTGGAAGCCAGC [...]
+NODE	110	3024	172223	170884	0	0
+ATAGATAGGCAACCAGCTAATCATGCCAAACCGCACCATATAGACGAAGACATCCACCAGCGAAATATACCAGGCATTTTTATTGCGCAGCACATAAGTACAGAAGATTTGCCATGCGCTCATATTTTCCGGCGCTTTTGCCGTATTCTTCGTTTTCAGTATGACTTTTTCTTCCGGCATCATCTGTTCCAGGGAGGGAAGACCTTCTTCGCGCGGCGAACCTTTTCCCAAGACCAGAACAATTAAGGCAAAAATGACGGCGACGCAGGCCGGAACGATATAACTGGCGCTTTGCCAGTGTTCGTTGCCCAATATCGCAAAAGCCGCACCGACGATAGGCGCGACGATCCCGCCGCCAACGTTATGCGAGATATTCCAGAAGGCGCCTACGCGTCCGCGTTCCCGACGAGGGAACCAGTTTGCAATGGTAATAAACGAGGGGCCGACGCCCATGCCCTGAAAAAGGCCATTGAAGACCACCAGAGCGGCAAA [...]
+TGTACCAGCGAATTTAGCTCCGTGGTGAAATCATCATGGAGCCAGTCAATGCGAGCGGAAAGCTCGCTGACTTTCTCCCGCACCAAAAACATGTTGTAGAGGGCGTTGTCCAGTTCCGCCAGCAAGGTCCGGCTATCCTGTAAAATGACGGCCAGTTGCCGGCGTTCAGCAAGCTGAAGCCCCTGACTGAGACGCTCAATCTTATCCAGATGCTGAATAATCTGCGTACGTAACTGCAAACGTACTGTCGTGTTCGGCGCCAGCAAAAATTCATTGAGCTGATCCACGGCCAGATTCAGGTTCCCCTCAATTAAAAAAGCGGAGTGGATGCGAGGAAAATATTCATCAAGCGAATAGCGAACCTGCGAACTTTGCTCATGCCAGGAATAAAGGCTGACCATACTGACAATCAGCGTCAGTAATGCGCCCGTTAAAAATGCGCCCCGTAAACTGTTGCTGATGCTGAGCTGACGAAGCCGTTGCAATAATCTC [...]
+NODE	111	11549	656878	644834	0	0
+GCGATTGGCGCAGGGATCGTTTTTCTTCCTGTCCAGGTTGGCCTGATGGGACTTTGGGTCTTTTTACTCTCTTCTATTATTGGCTATCCGGCCATGTACCTGTTCCAGCGGCTGTTTATTAATACGCTGGCGGAATCCCCGGAATGTAAAGACTACCCCAGCGTGATCAGCGGCTATCTGGGCAAAAACTGGGGTATTTTATTAGGCGCGCTGTACTTTGTGATGCTCGTCATCTGGATGTTCGTCTATTCTACGGCGATTACTAACGACAGCGCCTCTTATCTGCATACTTTCGGCGTAACGGAAGGATTACTTTCCGATAGTCCATTTTATGGTCTGGTGCTGATCTGCATCCTTGTAGCGATTTCCTCACGCGGTGAAAAATTACTGTTCAAAATCTCCACCGGCATGGTGCTGACCAAGCTACTGGTAGTGGCGGCGCTGGGCGTCTCTATGGTGGGTATGTGGCATCTGTATAACATTGGCGCGCTG [...]
+GGAACGCTTCTCGATGCTGAAATATGGTCTGGCGGTCATTCTGGTCTTTATCGGCATTAAGATGCTGATCGTCGACTTCTACCATATTCCTATCGCGATTTCGCTGGGCGTAGTGTTTGGCATTCTGACCATTACGCTGGTGATTAACGCTTGGGTTAACCATCAGCGCGATAAGAAACTACGAGCGCAATAATCTTTTATCGGGGTAAACCTGCCCCGTCAAAAACGCCCGGCAGCGCACAGCTGTCGGGCGTTTTTGTTTAACATGTCACAATACTGTTAATGTAAAGTTATAAAACATGATCACAGCAAAAAATCCAGGATATTTCGCTTCCCGAACCTTCAACTTTCCTTATACTCAACCAGGCAAACACTTTGTTACATCCTGAAAGATGCGCCGTAAGAGCGTGCAGGGGATGACCAGCAACACAATACAAGGAATATGAAATGGCTACGCAACGAGCATCAGGGCTACTGCAGCGTTTAGCGCAA [...]
+NODE	112	171	9541	9541	0	0
+CAGGGATGGTGGCTTTATCCTTCACCAGAATGCTGGTGATCCCCAACTGGTTGGCCCCTTCTATATTATCGGCATTGTCGTCGAAAAAGACCGCATCGGCAGCGGAAAAACCTTCTTTCTGCAGGACGTGCTGATAAATACGCGCTTCCGGCTTACGCATTCCCAAATCCT
+CAGAAAGAAGGTTTTTCCGCTGCCGATGCGGTCTTTTTCGACGACAATGCCGATAATATAGAAGGGGCCAACCAGTTGGGGATCACCAGCATTCTGGTGAAGGATAAAGCCACCATCCCTGACTATTTCGCGAAGCTGTTATGCTAAAAACCGTTCACCAAAAAGCTGGAC
+NODE	113	8838	448642	443514	0	0
+CTTCCAGCATGGTGGAGAGGCCGGGAACATCAACGTACGTCTGGCCTTCCAGCCCCTGCGGGTAGATTTCCTCAACGGCTGGCGCAAAGACATAATCGACTTTGCGTTTGTTCAGCTTTTCACAATCTTCCTGCAGCGTGCGCGGATAACGCGCCAGATCGTCCGGCCGGTCAAACTGCATCGGGTTGACGAAAATGCTGACGATCACCACATCAGCCCGGGCTTTTGCCTCATCGACCAGCTTCATATGGCCGTCGTGCAGGTTGCCCATGGTGGGAACCAGTGCGACGCGTTGACCTTCCTGACGCAGACGACGAATATGCTGGCGCAGCAGCGGCAGGGTTTCAATGATTAGCACAACAAAACTCCTTGAGTTGCTTGATGATCCTGCCCGATGGCGCTGCGCTTATCAGGCCTACATCCGTTGAGGATCGGTAGGCCGGATAAGACGCGTCGCGTCGCCATCCGGCACGGTCAGAAAAATTAGTGAAA [...]
+TAACACGTCACGAATACTTCTTCGTGCGCCGCGTTGGGGCCGTATTCGCCGGATCGTCCGGCCAGACATGTTTGGGGTAACGGCCCTTCATCTCTTTTTGCACTTCGCGATACGCCCCCTGCCAGAAAGCGCTTAAATCGCGCGTAATCTGTAGCGGTCGCTGCGCAGGCGAAAGCAGTTCCAGCACCAGCGGCACGCGGCCCTGAGCGATGGTTGGGGTCTTCGCTTCGCCAAACATTTCCTGCATTCTGACCGCCAGAGCGGGCGGGTTATCTTCATGATAACGAATCGTTATTCGGCTTCCCGTCGGCACAGTGTAATGCCCAGGCAGTTCACTATCCAGACGTTGCAGCATGGCATAGTCAAGCAGTCCCCGTAACGCCTGAGTCACATTCAGAGATTTCAGACTCCGTAACGACTGTACGCCTGTCATGTGCGGCAGCAACCAGTTTTCCAGAGTCGCCAGCAGCGACGCCTCATCCACGGCAGGCC [...]
+NODE	114	11099	611865	604134	0	0
+TTTCGCCATGTTCATGGTTTGCTCTTCGAGCGACTCGCGTACGCCCATACGACGTCCATCAATCACCGGGCGGATACCGATTTTCGGTAAGCTGATTTTTTTCATGACAGATTCCTCACGTTATTCGGATAAATGTTCAGTTTGTCGCCGCTTGTGAACGGAAACGGGCAAAAATGAAGATGACGGCAAAGCACAATGCCGGAACCAGTTCGGCGGTCGGGATTTTGCCTGCGGCGTCGCTAACGAAGCCCATTACTGGCGTGACAATACCGCCGCCAATAATGGTCATGACGATAAAAGACGAGCCGTACTTAGTGTCCTGTCCCAGATTTTTGATACCCAACGAGAAGATGGTCGGATACTGGATTGACATAAATGCGCTACACAACGTCAGCGCCAGCAGGCCGATATGTCCGCCGCTAAAGGCGGAAATCAGACACAGGAGCATGGCAAACAGGGCGTAGGCGGCCAGCACTTTATGCGGCGCGAAGC [...]
+GAGGATTAAGTTGCGTAAGGAATTCCGCAAGCGTTGCGGCAAGAACGGTACGATTACGGGTGCCCAGCGTTTCTTTAATCACCTCGCCGGACAGATTACAGACCGAAATGACCTCAAGCTCATTTTCCTGCGTCGCAATAAAAAGCGTGGGAGGAAGCTTGAGCCGCTTTTGCGTGACCAGGTGGCCTATCAGATTTTCCTGCACGCGCCGAAAGTCATCCTGACTCCAGGTTTGCAGTAGCGTAAGCTTTTCATCCGCAAACTGCGCGGGCATGTCGCCAGCAAACTGCGTGGTGTAAAACGCGTGGAGCGCAGGTTGTACCATAATATCAAAGGCGCGTTCAACCGCGTTTACATTTTCTTCGCCTTCAAAAGGCTGCGGCTGCCAGTAAACGGCATCGCGGGTTGAAGAAATAATGCACGGAGAAGGTACGCCATACAGTTCTTCGCTCAACGGCCAGCTACCGTGTTTCTCTTGCCACGCGTCGCAGT [...]
+NODE	115	2275	117792	116717	0	0
+CCAGCCGATAAAAATGCGCCGCCGCCGACGAAAAAAGTCGATTCGCAAACGCAGTCCACGATGCCCGATAAGAACGATCGCGCAACGGGAGATGGCCCGTCCCAGGTCAATTACTGAGGATAGTTTTCTGTCCCCGCGTGAACGGAGTGAATGATGCAATTCTCTAAAATGCATGGCCTTGGCAACGATTTTATGGTCGTCGACGCGGTAACGCAGAATGTCTTTTTTTCGCCGGAACTGATTCGTCGGCTATCCGACAGACACCTGGGCGTAGGGTTCGATCAGCTGCTGGTGGTTGAGCCGCCCTATGATCCTGAGTTGGACTTTCATTACCGCATCTTCAACGCCGACGGCAGTGAAGTCTCGCAGTGCGGCAATGGCGCGCGCTGTTTCGCGCGATTTGTTCGCCTGAAAGGGCTAACCAATAAACGCGACATTCGGGTCAGTACCGCGAATGGCCGGATGGTATTGAGCGTCACGGAAGATGAACTG [...]
+TCGGCAGGCGTCGCTCTTTGCTGCCTTTACCCATTACCCACACTTCGCCGGTATCAAGATCGAGGTGCTTTATATCCAGGCCAACCAGTTCGGATAAACGCAGCCCCGCGCCGTACATGACCTCCAGCATCGCCCGATCACGTACGGCGAGCGGATCGTTAAGATCGATGTCCAGCAGGCGGTTAACGTCGTCGACATCAATATTTTTCGGCAGATGACGCGGCGCTTTCGGTGCGGAGACACCCTTCGCCGGGTTAGCTTTCAATTCGCCCTGACTGACTAACCAGTCAAAAAAGCTTCGCAATGCCGAGAGACGTAGCGCCAGACTGGCAGGGCCAAGCCCTTTGCGCCGACTGCGCACCGCAAAACTGCGCACAATCGCAGCGTCACATTGTTGCCAGCTTTTCAGCCCGGTTTCTCCGGCTAAAGCGATAATGGCATCAAGCTGACGCTGGTAGTTCAGCAGGGTAATGGGGCTAAGCTGGCGCTCCA [...]
+NODE	116	32429	1712175	1699053	0	0
+ATATCTAATACGCCAAGCCCAGATTTAACAGTTATGAGTATAGATAAGTCTGTATTATCGCCGGGTGAAAGTGCCACCATCACAACTATTGTTAAGGATATCGACGGGAATCCTGTAAATGAAGTTCACATTAATAAGACTGTAGCGCGTGAAAATTTAAAAGGCTTATGGGATTATGGCCCTCTTAAGAAAGAAAATGTTCCAGGTAAATATACACAAGTTATAACCTATCGTGGGCATAGTAATGAACGTATTGACATATCTTTTAAATATGCAATGAGTTTCACGAAAGAAATTTCCATCAGAGGAAGACTATAAACTATATTAATTATTATGTCTAATATAATTCTTTTTATCACCATCATCTTATTATGGATGTTCACCTGGTTTTTTAGCGGATTGCTAAATAATTATTATGGCTAAAATAATACAAACGTTAAAAGGAGAAGTTTTTATGACGCCAACAACAACACAGGATTATATCTCATTGGG [...]
+TTCAGATGCTCGGGCACCTGATCCCAATGCCAGTCCTCCCGGTCGACCGTGACGCCGGTCATCCGGCGCAGTTCACGCTCCAGAGCGTCCAGCAGCGGCAGCTCCAGCGGCGTTACGCGACCTAAAAAAGCTTCAGCATAGTTTGGCGCCGGAACAAAGTTGCGACGTACCGGTTTTGGCAACGATTTAATCAGCGCAATCACTAATTCACGGCGCAGCCCCGGGATCTGCCATTCAAAACCGCTCTCGTCAACCTGGTTAAGTAGCGGCAACGGAATATGGACGGTCACGCCGTCAGCATCCGCGCCCGGTTCAAACTGATAGCTCAAACGCAGCTTGAGATTGCCCTGGTGCCAGAAGTTCGGGTAATCCAGTTTGCTGATTTTTTCCGCGCCTTCTTTAATCAGCATACTTTTTTCAAAGTTGAGCAGATCCGGCGTCTCGCGGCTTATTTTTTTCCACCAACTATCAAAGTGGCGGGCGGAAATAACG [...]
+NODE	117	14067	764321	753619	0	0
+CGCTGGTGCGGGCAGGGGATGAGGTTATCTGTTTCGATCCCAGTTACGACAGCTATGCCCCGGCCGTGGCGCTTTCCGGCGGCGTGTTAAAACGCATAGCGCTTACGCCGCCGCATTTTCGCGTCGACTGGCAGGCGTTTTCGGCGTTGCTTAGCGAGCGCACGCGACTGGTGATCCTCAATACGCCGCATAATCCCACCGCTACCGTCTGGCGCCAGGCGGATATCGAGGCGCTGTGGCAGGCTATCGGCGAGCGGGAAATTTATGTATTAAGCGATGAAGTGTACGAACATATTTGTTTTGCCGCCGAAGGTCATGCCAGCGTACTGGCGCACCCTCAGTTACGAGAGCGGGCGGTTGCCGTTTCATCGTTTGGTAAAACCTTTCATATGACGGGATGGAAGATTGGTTACTGCGTTGCGCCTGCGGCCATTAGCGCCGAAATCCGCAAAGTTCACCAGTACCTGACGTTTTGCGTCAATACGCCGGCGC [...]
+ATGACTCCCGTCGCCTGTTTCTGCGCCGCTTGTGCCGACGTCGCTCCCGGCACCAGGATAACCTTCCGGCACTCTTCTTCGCGTTTTTCGAAAATTTCGTAGCCGCGCGCCGCCTCTTCAAACGGCATATAGTGCGTGACAATCTCCTCCGGCTTCAGCAACCCTTTTTCAATAAGCGGTAATAATTCCCCCAGCCACGCGTGAACATGGGTTTGACCCATTTTAAAAGTTAGCCCCTTATCAAAGGCGTCGCCGAATAAAAAGCCGTGAATAAAACCGGCATACACGCCGGGCACGCTGACCACGCCGCCGCGTCTGACCGCCGCGATACATTGTCGCAGCGCTTTGCCGCTGCTGCCTTCCAGTTTAAGGTTCGTCAGCACCGTCTCCGTCATGCTGCCTTTCGCTTCAAAGCCTACGGCATCAATTACCGCGTCCACGCCGCGGTGGCCTGCCGTCTGCTCGATGATTTTTTCCGCCGGATCGTTCTCA [...]
+NODE	118	1381	70349	69993	0	0
+ACTGAGTATATAGCAATGATGCATAAGATTTATTTTTGGTATAAATTCCATTAAAAAAATCAAAAAATGCTAAGTTACATTTTTTTTGTTTACTCGTGGCAATTAATTTATTTTAATAGAGTTGTTTTTTATTACTTCGATAAAAAAACAATATTTTATTATCGAAGTTTTATAATGAAAACTTATTATTAAATTAAAATTGATTTACGGGATGCATTAAAGATGCGGCATCTACATCTTAATATTTAAAAAGGCTTAATACCGAAACCGGTAATACTTATTATTGGATAGATCATGCCGCAATTTATCATCAACGTTTCGGGCCTGGATATGTTGAAATTAGTCACCCTGTTCAGGAGACAGCGGCGCGCCACTGAAATAGCACATGACTTATCGATACAGAAATAACACCTGCTTTTTGCTGAACATACAAGCAGAGTTCCCTCGATAAAACGTGACAGGACAGCTTTCGCACGCTGATAGCGTTCAGCT [...]
+GTAATCCAATGGCCAGTCCGGAAGTGCTGGGGATCAGTTCCGGAGCCGCGTTTGGCGTGGTGTTGATGCTGTTTTTGGTGCCGGGGAATGCTTTCGGTTGGCTACTACCTGCCGGAAGCCTGGGCGCGGCGGCGACACTGCTGATTATTATGATAGCCGCCGGGCGCGGCGGTTTCTCGCCGCAACGGATGTTGCTGGCGGGGATGGCGCTCAGCACCGCGTTTACCATGGTGCTAATGATGCTCCAGGCGAGCGGCGACCCGCGGATGGCGGAAGTGTTGACCTGGATCGCAGGATCTACCTATAACGCCACTGGCGGGCAGGTTACGCGAACCGCGATCGTAATGGTGATTTTGCTGGCCATTGTGCCGTTGTGCCGCCGCTGGTTAACGATTTTGCCTCTGGGCGGCGATGCCGCGCGCGCGGTGGGCATGGCGCTTACGCCGTCGCGTATCGCGCTGCTGGCGCTGGCGGCTTGTTTGACGGCAACCG [...]
+NODE	119	1216	71677	71157	0	0
+GAATTTGCCGCTGGTACGCATTGGCGAGGATGCCCATCGCAATCCATTAATGCTGAAAGGCGATCGCAAAAACCTGACGATTCTCATCGTTGGCGAAACCTCGCGCGGCGATGATTTCTCTCTTGGCGGCTATCCGCGCGACACCAATCCGCGGCTGGCGAAAGACGATGTGATCTACTTCCCGCATACCACCTCTTGCGGTACGGCGACCGCGATCTCCGTTCCCTGCATGTTTTCTGATATGCCGCGCAAACATTATGACGAAGAGCTGGCGCATCACCAGGAAGGGCTGCTGGATATTATCCAGCGCGCGGGGATTAACGTACTGTGGAATGATAATGACGGCGGCTGTAAAGGCGCATGCGATCGCGTTCCGCATCAAAATGTCACCGAGCTAAACCTGCCCGGACAATGTATCGACGGCGAGTGCTACGATGAAGTGTTATTTCACGGTCTGGAAGACTATATCGACCATTTGAAAGGCGATGGCGT [...]
+AGCCCTAAATCCAGCACCATCAGACTGTAATGACCAGACTCCAGACTATGCTCGGCGGCACGCGCTGTCGAAACGCCATCACACGCATAGCCTTCGGTTTGCGCGGCGAGTATTAACCCCTGTAATAATAGCGTGTCGTCTTCAACAATCAGTATCTTCATTCGCTTAGTCTCCTGCACGGTTGCAGAATATCATCTGCGGCCTGGTAATACGTCGTTTGTACGCCGGTTAATCCCAGCATGGTTGAGAAAAGATTGTCCTGTGAATAATCCAGCGTGCTCGCCCGTTTTTGCAGGCAGGCCTGATCCACCTGATAACGCTGTTGATAATCTTTAGAAAGCCAAATGAGCATCGGGACATGTTTTTGCGTATCCGGCGCAATGGAATACGGCAAACCGTGTAAATAAACGCCATTTTCACCCAATGATTCGCCGTGATCGGAAAGATAGACCAGGCTGGTGGTGAATTTATCCTGATGAGATTTCAGCAGGT [...]
+NODE	120	8767	421187	414046	0	0
+GCGCGCTACATTCGCGAGCTGAAAGCATATCCGTACGGGTGCCTGGAACAAACCACCAGCGGGTTATTCCCGGCGCTGTATACTAATGCCGCTCAATTGCAGTCGCTCGGTATTACCGGCGATAGCGATGAAAAACGGCGCGCCGCGGTGGATATCGGCATCTCCCGCATACTACAGATGCAGCGTGATAACGGCGGTTTTGCGCTATGGGATGAAAATGGGGCGGAAGAGCCCTGGCTAACGGCCTACGCGATGGATTTCCTCATTCGCTCGGGCGAGCAGGGATATAGCGTCCCGCCGGAGGCCATTAACCGGGGCAATGAGCGACTGCTGCGCTATCTGCAGGATCCCGGCACGATGCTGATGCTGATTCGTTATAGCGATAATACCCAGGCCAGTACTTTTGCCGCTCAGGCTTACGCCGCGCTGGTACTGGCGCGTCAGCAGAAAGCGCCGCTCGGCGCGCTGCGCGAAATCTGGGAGCGCCGTAGT [...]
+CAATAGCCATGTTTACCTCTGAAATATGTTCTGTTGTTATGTCAGGCGCGGATTATAAAGAGCATCCCATCAATTGCCTATGGATGCAGGTAACATTTTTTTAAAATAAAATGAGCATTAGCAACAAAAGTTAAAGGCGCACAGCAAACTCAGGGGACTGACACAGCACGCAGTGCGTGTGTTCAGGCGTGAGAGCATGGAAAGTACGTTTGCAGCTTTCGCAGGTGAGCGTATACGCCGCACTATGCCGCGTTGAGGCGGGTTCCACGTCAAACCGCAGCCGCAGCGCCTGATGCGGACATACCGCCGCACAGCCGCCGCATCCCGTACAACGCGCCGCCGCTATCGTCAGGGTATTGTCGTCAAACTGGATAACATTTTCCGGGCAGCTTCGCCAGCAGGCGCCGCACATCCTGCACTCTTGCGGACTGATTTCGGGTACGCATTCGCTGAACGCGGAAAACGCCTGTCTGAGACGCCGTTTCCCCGGCT [...]
+NODE	121	8788	489953	485496	0	0
+CCTGTCCATGACGACCACAGCCGTGTCCGTGACGGTGTTCGCCGCCGCAACTGGCGTTCTCATGCTGATGCGCGCTATGGCAGCCTTCATGCTGATGTTCTCGATCTTTACAGCAGCCGTCGTGCTTATGATCCTGGTTTTTGCAACACCCTTCATGTTGATTTTGCATCATTGCCTCCTGCTTATTTAGATATATCTAATTTATATCTAAATGATGGGTTTTAGCAAGGGTAAAAGCCATTTTTGATATAATCTATTAATTTATAACATTTTATCCTAAGGTTATAGTTAGCGACGCGTTGCCAGAACACTATCAAAAAACAGTTGCATTTTTACTGATTAACAATCATTATCATTTAAAACTTTAATTTAGATATATCGTATTACTTCACGAAGGCAAAAAATGACGACATCATCCGCACGCTATCCACAGCGTGTTCGTAATGAACTGCGTTTTCGCGAGCTGACCGTTCTGCGGGTAGAACGTATTAG [...]
+CGAACCCACGGAGAATTGAATCGGCTAAGCAGTAGATCCGCCACCTCTTCCGCCACACGCTCGACCAGAGCAAAACGCCCGCCTTCAACATGATTTATCACCGTGTCGGCGATATCCGCGTAACTTAGACAATCTGCGACATCATCGCTTTTCGCCGACTTGCGGTTATCCCATGCCATTTCGATATCGAACACCAGTTTTTGCTCGATAGTCTGTTCCCAGTCGTAAACACCGATAGTGGTGATTACCGAAAGTTGCTCTATAAATACAATATCCATCACGACCTGCCTGCTTTTTGGCTAACCCGGATACCACTTCCGGCGAAATGTGCGTATTATCCACAGAAATAGTAAATAAAACGACACTTTCAATACGGAACAGCTTATGAGTGCAATCGCGCCTGGAATGATCCTCTTCGCGTACCTCTGCGGCTCAATTTCCAGTGCCATTCTGGTTTGCCGCATCGCCGGGCTGCCCGATCCGCGTGAAAGC [...]
+NODE	122	4768	240277	238992	0	0
+GATTATAAAAAATACTCGGAAGCGGACTACGAGTTCCATCTGGCGATTGTCAGGGCATCGCACAACAGCGTGTTCTACAACGTGATGAGCTCGATTAAAGACATCTATTACTACTATCTTGAAGAGCTTAACCGTGCGCTGGGTATTACCCTTGAAAGTGTGGAAGCCCATATCAAGGTCTACATGTCGATAAAGAATCGCGATGCCAGCACGGCCGTCGAAGTGCTCAATGAAGCGATGTCAGGCAATATTATTGCGATCGAAAAAATCAAATCTACAGAGACATCAGGGACAAAATAACCGTTGGTTACAAGCTCAAGTAGTAGAACAATTTAACATATCTGAATCCGAAATAGTTGCCATCAACTATTTAGTGACATAGTCCCACTTTAAAATCGTGGCAGTGCGGCCTGAAATCAGCGAAGCTTCAAATAGCCGATCCCCCTTAACATACAATAATTTTCATCATCATTCCCTTTATTGCTTAACCGC [...]
+CGGAAGAACGCAGTAAACGCCGTTGCGGTCTGCTTTAAAAGCGGTAAGCTTCACAGGCTGTGAGGATACTGTAAAAGGAAGGCGTTATGTTGAATCCCTCCATCCCGCTGGTGGCGACGCGTCACGGTAAAATCGTGGGCGTCGTACAGGAAGAAATCCATATCTGGCGCGGTATACCTTATGCCGCGCCGCCAACAGGGGAGCTACGCTGGCGTGCGCCGCAGCCTGTCACGCCCTGGCAGGATGTGCGCCAGGCGGATTGTTTCTCCTGCGCCAGTTGGCAGGATATTACCTGGTGTCGCGAACTCGGTGGCGGCGATCCGGGAAATTTTTCCGAAGACTGTCTCTACCTGAACGTCTGGGCTCCCGCCGTACGTCATGAACCGTTGCCGGTCATGGTCTGGCTACACGGCGGCGGTTACACTATTGGCGCGGGAAGTTTGCCGCCCTATGACGGTCATGCGCTGGCGAAACGCGGCGCGATCGTGGTGA [...]
+NODE	123	11525	666730	659206	0	0
+AGACAGTCCGCCAAACCACGGGCCGCTAAATTTCTGCTGTACATAGCCGCTTAGCAGCGCGCTTATCACCGTAATGACGATTAATTTACCGCTGCCCAGGCGCTTCTCTACCGCCCCGCCGAGATACCACCACCACAGCAGGTTAAAAAGAATATGCATCAGTGAGAAGTGCATAAAGATATGGGTGAAGTAGCGCCAGACTTCAAATTTTAAAACCGGATCGAACGGCCACGCCAGCCACACCATCACCGTCTGATCGCCGATGAGACTCATCGCGATATAGACCACCACGCAGGCGAGCATCACGATCCAGGTAACAGGGCCGGCTCGTTCACGCAGCGTGGCGAGAAAGGGAAAACGGCGGTAGCGTAGCCCGCTGTTAGTCTGCCCGGACTGCCAGCTAGCCGCCAGATAACGCGGATCGCCGGGATTTTCTATAAACCGCGCCAGCTCGACCCGCACACGTTCGGCCTGCGATTCATCTGCCAACCA [...]
+ACATTGCCAATATGGGCTACTTCTCATCGGACAGAACCATCAAAGAGTATGCCGAAAATATCTGGCATATTGATCCGGTGCGGTTGTAGCGGTTTAACGCTTGAGAACGGGGCCAAACGGCCCCGTTTTTTATCGTGGTATATTCGGGGGGTATGCCGATATTCGTCTGCTGAATCTGTTAGCGGCACTTGGTCTCTGTCATGGAAAAAGGGTTGAGTACTGGTGTATAGTATTAGCAGAAAAATCCATAATTAATTGATAATAATATGAAAAAGATTACGACATCTATTCCGGCTCTCGATAAAATTATGCGCGTATTTGCTTACCTTCTGGAGTGCGATGGCGCAACGTTTACCCAGATCCATCAAAATTCAGGGATTGCGAAAAGCAGTACCTCATCTTTGCTCAACGGCATGGTGGAGCATGGGTTATTACGCCAGGAAAAAGACAAGTATTATCTGGGGCTACGCCTGTATGAATTAGGTAATAAAG [...]
+NODE	124	7578	393940	390739	0	0
+TCACGCATTTTATCGCGCTGTCCGGCCACATCCAGGCCGCCTTCGGTGGTGACTTCCTGGCGTTTTTCCGGCACCAGACAACAGAAATGCGGCCTGGTTTCTACGGCGATCGCCAGCATCTCTTCGGTCACCGCCATCTCCAGATTCATACGCGTATGCAGCGTCTGACGCAGAATGCGCACATCGCGATCGGTAATGTGGCGACGATCTTCGCGCAGGTGTACGGTAATGCCGTCCGCGCCTGCCTGTTCAGCAATAAACGCCGCCTGTACCGGATCCGGATAGTCGGTGCCGCGCGCATTACGTAACGTGGCAATGTGGTCAATATTGACGCCTAACAGTAATTCAGCCATGACAATCCTCGTTAATCTTTCTTCGTTTTTACTGTGCGTTTGGGCATAAATTGCCGGAACAGCTCCCGGCTTTTTAACGGTTTTCCCCCAAGATACGGCTTTAATGCCATACGGGTAAAGCGTTTAGCGGCACGCAGGG [...]
+TGCACTCCGAACAGCTTCAGTTTGAGCAGGCGCAAACCCAGCAAGCCGCGGTACAGGTGCCAGGAATCCAAACTTTAGGAACGCAATCGCAGTAATGAAGCAACTTTGGTTTGCCATGTCCCTTGTGGCGGCTAGCCTGTTCTTCTCAGCAAACGCCTCGGCCGACCCTGCGTCCGGGGCGTTATTGCAGCAGATGAACATCGCCAGTCAGTCACTGAATTACGAGCTGTCATTCGTCAGCATCACGAAACAAGGCGTTGAATCTCTACGTTATCGACACGCACGCCTGGATAGTCGCCCGCTTGCGCAATTGCTACAGTTGGACGGTCCCCGCCGGGAGGTCGTACAGCGTGGTAATGAAATCAGTTATTTTGAACCGGGCCTTGAGCCGTTCACCCTGAACGGTGATTATATTGTCGATTCTCTGCCTTCCCTGATTTACACCGATTTCAAGCGTCTGGCGCCTTACTACGACTTTATTTCCGTCGGACG [...]
+NODE	125	1777	96920	96335	0	0
+GGTGAAGCCTTCACCTAATAGCAGAGCTGCATTAGTCATAAAATAGCCTTCAGGCAGGAGGCACGATAATGGGGCTATTTATGACGATGAAATAATAAGGGTGGATTTCCCTGAGCCGCCCCGGCCAGAGCCCTTGGTTATTATTATCGTCATAACGTATTACCACCATTATCGTGCAATTTACGTAATCAGGTTTATTTGATGAAACTTACGTTCTGGCATATTTCATCAGCGACGATCTCTTTACGCTGATTAAAAATAATTTTGTTCTGTTCAAACAGATTATTCCCATGGGTATCAATAGAAACAATCAGCGGGCCAAACTCTTTAACCCGACAGACCCACAGCGTTTCCGGCATCCCCAGATCGCGCCATTGGGCATCTTCAATTTCTTCCACGCACACGGCGGCTACAACCGCACAACCGGCAGGGAATACGCAGTGCAGCGCTTTGTGTTCAGCACAGCCCTCTTCCGTGCCTTTGCCCATTCCG [...]
+TGACTAAGGAGCATTTATGAGCAAAAGTGAACAGATATCCCATATGACCGACGTTATGGCCAAGTTTGTGGGATATACCGGCAAAGTTTTGCCTGATGATGTCACTGCAAAACTGGAAGATTTGCATAAGAAAGAGACCAGTAAACTGGCCGACGTCATCTTTACTACCATGATTGAGAACCAGCGTCTGGCGAAAGAGCTGGATCGACCTTCCTGCCAGGACACCGGTGTCATTCAGTTTCTGGTGGAGTGCGGGACGAACTTTCCGCTGATTGGCGAGCTGGAAGCGTTGTTGCGTGAGGCGGTGATCAAAGCAACTGTAGATTCTCCGCTGCGCCACAACAGCGTAGAAACTTTTGATGAATACAACACCGGTAAAAACGTGGGTAAAGGTACGCCGACGGTCTTCTGGGAAATCGTTCCCAATTCCGATCAGTGCAGCATTTATACCTATATGGCGGGCGGTGGTTGTTCTCTGCCGGGGAAAGCGAT [...]
+NODE	126	286	18255	18091	0	0
+CAGATTTTCAGGCGATGTCACATCAAATCGTTGGTTACATCCAAATGGTGGCGGCTTCACCATGACGGACAACCAGTGGATACGTGCTGTTAACAACAAAGGGATCACAACCGGTGGTGAAATCAAAGGGGGTTCTGTCAGTGGTAACACAGTCCGGTCTGATGGTCGTCTTACTGCCGGCGAGTATTTACAGCTAAACGGAATCGCCAACGCAGGCACTCATTGCTCACCAGACGGGCTTGTAGGCCGCGACAACAGCGGGGCCATACTTCAGTGCCAATCCGGT
+CGTCTGGTGAGCAATGAGTGCCTGCGTTGGCGATTCCGTTTAGCTGTAAATACTCGCCGGCAGTAAGACGACCATCAGACCGGACTGTGTTACCACTGACAGAACCCCCTTTGATTTCACCACCGGTTGTGATCCCTTTGTTGTTAACAGCACGTATCCACTGGTTGTCCGTCATGGTGAAGCCGCCACCATTTGGATGTAACCAACGATTTGATGTGACATCGCCTGAAAATCTGGCGTTTTTACCACTGGCTTCATTGATATTGGTGATGCTGTTATTATTCAT
+NODE	127	8566	406610	402951	0	0
+GTACATGCGTGGAGAAGAGGGTTACTCCCGCTTCTTCGCTTATACCAACCTGTTTATCGCCAGCATGGTTGTTCTGGTGCTGTCCGATAACCTGCTGTTGATGTACCTCGGCTGGGAAGGCGTGGGCCTGTGCTCTTATCTGTTGATCGGCTTCTATTACAGCGATCCGAAGAATGGCGCAGCGGCAATGAAAGCCTTCGTGGTGACCCGTGTCGGTGACGTATTCCTCGCCTTCGCGCTGTTCATCCTCTACAACGAACTGGGCACGCTGAACTTCCGCGAAATGGTCGAGCTGGCGCCAGCGCACTTTGCTGACGGCAACAACATGCTGATGTGGGCGACGCTGATGCTGCTGGGCGGCGCGGTCGGTAAATCTGCGCAGCTACCGTTGCAGACCTGGCTTGCCGACGCGATGGCCGGCCCGACGCCGGTCTCCGCGCTGATCCACGCCGCTACCATGGTGACCGCCGGTGTCTACCTGATCGCTCGTAC [...]
+CGTCGCCGGATTTCACCACCTGGCCGCTGCCGCTGATGGCGTTGTCAAAATCGCCGCCGGTGTTCATCTCCAGCGTGGCGTTGTCGGTGACGTTGCCGGTACCCAGCGCCTCAACGTTGGTGGCAATCAGCGTACCCTCGCTGATGGTGGTGCTGCCGGTATAGGTGTTTTCCGCATTCAGGATCAGCGTGCCTGCGCCGGTTTTGGTAAGCGACTGGCCGTTCCAGCCGCTGTTGGCGTCAACGTCTTCCAGCACCGTGTTGACCGTAAAGCTGTCGTCGGCATCCGCCAGGTTGAAGGTGCCGTGGGCGTCGATGGCGGCGTTGTCGCGATCGGCATACCACGTCAACGTCTCGACCAGATCATAGTGTGTGTCATTGACGTTTTTCTGCCCCACGACGGTAATGAACGCGTCCGGGTTCATGGCGTTGCCGTTGATAGTGATGTCGTCAAAATCGCCGCTAATGGCGTTGTCCGATTCGATAAGCGCCA [...]
+NODE	128	6176	299900	298685	0	0
+CGACAGGCTGCGAGCGAACAGCGACTTCGTGCCGCTGTGCGTCTCCGCGCTGGCGCGAGCGAGAGCGGACTGGCTGTATGGCATTAATATGACCCGCGCTTACACGATCCTGGGCCGTAATGCCGGCTATCAGGGCGTGTTATCCGTGGGACGCGTGCAGACGCCGGTACTGGGGCTGGTGGTGCGGCGAGACGAAGAGATTGAGAACTTCGTCGCCAAAGACTTCTTTGAAGTGAAGGCGCACATCGTTACGCCTGCCGAGGAGCGTTTTACCGCTATCTGGCAGCCGAGCGAGGCGTGCGAACCTTATCAGGATGAAGAGGGGCGCTTGCTTCATCGTCCGCTGGCGGAGCATGTAGTGAACCGAATCAACGGTCAGCCCGCGCTGGTAACCAGTTATAATGATAAACGGGAATCAGAATCCGCGCCGCTGCCGTTTTCGCTCTCGACGCTACAGATTGAAGCCGCTAAACGCTTTGGCCTGAGCGCGCA [...]
+CACACAGCCAAGCAGTAGCCCCAGCCCGCGAATTTCACTGAACATGCCAAAACGTACATTAATGGTATTTAGACGTTCAATAAACGCATCGTGGCGCTGTCTGATGCCGTTTTGCATCTCCGGCGTATTGATGATATCCAGTACTTTTCCGGCAACTGCCGTCGCCAGCGGATTACCGCCGTAGGTGGTGCCATGGGTGCCTGGCGTCATAACGCTGGCATAGTCTTGCGTGGTCAGCATCGCGCCGATCGGGAAGCCGCCGCCCAACGCTTTAGCAGTCGTCAGGATATCGGGCGTAACGCCATAATGCATATATGCATACAGTTCGCCGGTACGTCCGACGCCCGTCTGCACCTCATCAAAAATCAGTAACGCCTGATGCCGGTCGCACAATTCACGCAGCCCCTGTAAAAAAGCTTTCGTGGCGGGGATCACGCCGCCCTCGCCCTGCACAGGTTCTACGATCACGGCGCAGGTATTGTCATCAATTAG [...]
+NODE	129	917	62972	62755	0	0
+CGGCAGCGTAGCACGGCTACCTGACTTATTTAGGTCTCTACCACTTATTGAATCTTCTAAAACATAAAAATGCGGCATAGAAAAACAAGCCTCCCATTAAAACCCGCACCAACAATTTTGTAGAAAAATAAATAGGTTGCTCAATATGAACAGTAAGAAAACCTTTGATTAAAACATAAGACATCCATATAGACTCGATGGATAAAAGCAAAAAAAATATAGACACAAATAAAATGAAATACTTCACAAAAACCTCTCTTCAATATGAACTATTCGCACAGATAGCATCTGGTGAACTAATCAGTTCTTTCCCATATAACAGCAATTCCTTCTTCCACCGCTCTATAAACTGTCCTGTGTTTAGAATTCTATCTACCCAAATAATTGTCGTCATTCCAGGTATTGGAATTGATGGTTCCTTGAGTGGAACCTTTACGGGCATCCTATCTACTGGCACCATAGCTCCCACCTTCCACTCTTTCAAAACACGTT [...]
+TGAAGGGTGAGGTTTACCTCGTTTTGCGCATCAGACTTTTATTAATCCCGGTTATTCCGGGATTAATATTTTTAGTAAAGATAAAGGTCTGTTTTCGTACATCGAGTAATTGGCATGAAAGCATAATCTGTTGATACAAATCATAAGTTCGGAGAAAATGTCAACTTACACCAAATCCTGTATCGATTCCTGATTCGCAGGGATTCAATGTTACTGGGAAAATAGATAGTATAATTCCATCTATTTCAGATGCGGAATATATGGGGTTGGAACCCGTGATACGACAAGAAGGGTTGCAAGATTATATTGCTGATATGAAGTTTAATGTATTAGGTAAATTGAGTGTGACACTTACATGTAAAGTTTCTGACAGAGAACGTGTTTTGAAAGAGTGGAAGGTGGGAGCTATGGTGCCAGTAGATAGGATGCCCGTAAAGGTTCCACTCAAGGAACCATCAATTCCAATACCTGGAATGACGACAATTATTTGGG [...]
+NODE	130	6630	371661	369077	0	0
+CTTTGTATGCACATGCAAGGCAAGCTCCTGGAAAACCGCAATAAGATGCTGAAGGCTCAAGGGATTAACGAGACGTTGTTTATGGCGTTGATTACGCTGGAGTCTCAGGAAAACCACAGTATTCAGCCGTCTGAATTAAGCTGCGCGCTGGGTTCATCTCGCACCAATGCGACACGCATTGCAGATGAGCTGGAAAAACGCGGCTGGATTGAGCGTCGTGAGAGCGATAACGACCGCCGTTGCCTGCATCTGCAATTAACGGAGAAAGGCCAGGCATTTTTGCAAGAAGTGCTTCCGCCTCAGCATCATTGTCTGCATCAACTCTGGTCATCACTTAGCACAGCCGAAAAAGATCAACTTGAGCACATCACTCGTAAACTCCTGACGCGTCTTGATCAAATGGAGCAGGAAGGCACTGTTCTTGAGGCGCTGCGCTAAAGCGCCGACCCGCTCAAAAATCCAGATTAATAACAGGAAAGCGGACAGGCCGGC [...]
+GCTGCGTTTGAGTGATTTGGGCTATACCAATAAGTCGCAAAGCAATCTCGGAATTACGTTTAACGATTTGCATGAGTATGTGGCAGGTCTGAAGCGGGCGATTAAAACCCCTTCCGAGGAGTACGCGCGGATTGGTGTGGAAAAAGACGGTAAGCGGCTACAGATTAACAGCAACGTTCTGCAAATTGAAAATGAGCTGTACGCGCCCATTCGTCCCAAGCGCGTGACGCGCAGCGGCGAATCGCCTTCTGACGCGCTTCTGCGTGGTGGTATTGAGTATATTGAAGTTCGTTCTCTCGATATTAACCCGTTCTCACCGATCGGCGTAGACGAGCAACAGGTGCGCTTCCTCGATCTGTTTATGGTCTGGTGCGTATTGGCCGATGCGCCGGAAATGAGTAGCGATGAGCTGTTATGTACGCGTACTAACTGGAATCGCGTTATTCTGGAAGGGCGTAAGCCGGGCCTGACGTTAGGCATTGGCTGTGAAAC [...]
+NODE	131	1358	79347	75885	0	0
+TCGGAACGGATACGCCCATGCCGGAAAGGTTAGTAATCATTTCACCCAGGGAGGCATTTTTGCCCCCAACTCTGTCTACATCATTCATGCCGAGTTGGTTATACCAAAGCACCAGCGGTGACGAGCCATTGTTGGACATCGAACAATCCTTTTGTGATAAATGAACGAGTTTAAGAAACACATAGTTGCGTATTTATCCTGGCATACTTAAACCCGCGAAAAAAACGGTGAATCGTTCAAGCAAATTTATTTTTTCATTTTTTCAGATTGTTTACGTAGTTGCGCAAACCCGCGCATAGCACGGCATTCCCTTAATCACCCACGGTATAAACTGCGTTTCCAGGAAATGAAACATGCTTTTCATTAATTATAAAAAGTGTCTGTCATTTTATAAAATAAGCGACAAGTTATACGTTTCCCGTTACTTTTAATTTATGCTTTCAGATAATTATGTTTACTCTTCAGGATGAACAGAATGGATAATGTTGTTGA [...]
+TAGTACATCCTGCGGTTAAGCCCCATAATGTCGAGAATTTTGGTGGCTATCTCTTCAACGGAATAATTGGTGCTGTTCAGGCAGGGGATCTGATTCTTACGATACAGCGCTTCGACCTCCGCCACTTCCATGCGGCACTGACGCAACGAGGCATAGCGACTGTTTTCACGGCGTTCTTCGCGAATTGCCGCCAGGCGTTCAGGGTCAATTGTCAGGCCGAACAGTTTATGTTGTAGCGGTTTTAACGATGTGGGCAGCGTCAAATTATCCATATCATCGGCGATGAAAGGGTAGTTAGCCGCACGAATACCGAATTGCATCGCCAGATAGAGGCTGGTGGGCGTTTTTCCACAGCGCGAAACGCCAAGTAAAATGACCTGGGCCTGATCGAGGTTGCGCAATGAAATGCCATCATCATGCGCCAGGGTATAATCGATAGCGGCAATACGGGCGTCATACTTGTTCAGGTTACCCGGATTAAGCCCATGAGTA [...]
+NODE	132	1203	69408	67467	0	0
+CGCCGCTGACAACTGCGCCCGTATTCTGATAGCGCGCGTAAAACTGATAATCCGTTAAATACAGCGAACTGCTTTTTCCGCTGACGTCGTAAACCACGTTAGAACTGCCATCGCTGTTTAAGACGTTAGTTTTATAGTCTGCCGAGAAAATGACGATACCAACGTTTTGCGCCGCGCCTGTTGTGGCATCATTTTTGAAAACCTGGTTTTGGTTGCTCCAAAAACCGGATTGCGGCGTAAAACTGAACATCAACTGCTTGATGCTACTGTTATCTGCACAGTTTTCGAGACGCACATTAAAAGGCGTGCCGCCCGCTTCGTCGGTAGGCGCATATTTACTGCTGCCGTCGTTATTGTAAAACCATGCCCGCGTGACGTTGGGAAGGTAGACTTCCCCCCCATTTTCCAGACTGAGTTTGCAGGTGCTGTTAACAATACTGGCGGTCAGATTGATATCCAAATTGGAACCCGCCTGGCTGATGCCAGACCAAA [...]
+GATCTACGGAGCATCACTATGAAATTTACATCAGCTTTAATCACATTATCCGTTTCTGCCGTCTTATTCTCTGGAGTGGTCAGAGCCGCTATTACCGGTACCGACAGTGTACAAATGACCTTTAAGACCACAGTGACAACCGGTACCTGTAAAGCTATCGTCGTTAATGGTGACGGAAAAAATGTCAGCACCATTGGCTATGGTGAGACATATAAATCGGATCTTAACAAGAAAGCGATGCCGCTGAGCATTGTCTTGAGCAATTGTTCCGGCGTAACCATCGCAGAAGTAGAAGCAAAAGCGGGCACCGGCGGCACCTGCTCCGGTGATAATTTAGACGGCGATTCTTACGCGGCGGGCCTGAATACCGCCTTCGAAATTTGGGGCGGCGATGCAGACACGGGGGTGAAACTGTCTTGTAAAACGCCACCAGCCGCACAGAAGGTGACCATTACCAACGGTGCGGGTACCTACCCAATGACGTCACGCATT [...]
+NODE	133	2985	152881	152593	0	0
+GTCCCCTGAAAGTTACGCTGTACGCCGGTTCCCACCTGGAAGAAGGGATCGAACAGGCGAACCACCTCTTTTGCCGGAATACCAACCCCGGTATCCCGCACGCGAATGCTGAGATAATCCCCATCACAGCGCACATGCAGCACGATGCAGCCAATATCGGTAAACTTAATGGCGTTGCTCAACAGGTTTGAAATGACCTGCTGTAAACGCATCGGGTCGCCGTTCAGCGATACCGGCACGTCAGGCTCAATAAAACAATACAGGCCGAGCTGCTTACGCACCACCAACGGCAGATAATTGGCGGTGATATGGTTCATCACCTCTCGCGGTGAAAATTCACGCGGCTCAATCTTTAGCTGTTCCGACTCAATTTTCGAGAAGTCGAGAATGTCGCTGATAATTTTCAGCAACAGACTGGAGGAGTTATTCATCGCCGTGACCAGACGATCCACGCCTTTTGGCAGCTCTTTGGTTTGCAGCAGATCGAGATTG [...]
+CCAGCCGGGGCCGTCTGTACTGGATGAAGGTCTATCAGCTGCCGGAAGCCAGCCGTGGCGCGCGCGGTCGTCCGATCGTCAACCTGCTGCCGCTGGAAGCCAACGAACGTATCACCGCGATTCTGCCGGTTCGTGAGTACGAAGAAGGCGTCAACGTCTTTATGGCGACCGCCAGCGGTACCGTGAAGAAAACGGCGCTGACCGAATTCAGCCGTCCGCGTTCCGCCGGTATTATCGCGGTGAACCTCAACGACGGCGACGAGCTGATTGGCGTTGACCTGACTTCTGGTTCTGACGAAGTCATGCTGTTCTCGGCCGCGGGTAAAGTGGTGCGCTTCAAAGAAGACGCCGTCCGTGCGATGGGGCGTACCGCGACCGGTGTGCGCGGTATTAAGCTGGCGGGAGACGATAAAGTCGTCTCTCTGATCATCCCACGCGGCGAAGGCGCTATTCTGACCGTAACGCAAAACGGCTACGGGAAGCGTACCGCAG [...]
+NODE	134	4525	265956	259679	0	0
+TTTCCGCCAGCTCGGAACGCAGACGAGCCAGTTCCTGACGGTTGTTGGCGGACAGTTGCGCCAACTCCAGTTCGTCGACTAACGCTTTTAGTTTGGCGGACTCCGCCTGCATATTGAGACTTTGCGCCTGGCTAAGCGCGGCACTTCCGCCTGCGGCGCCGAGCCGTCGCTCAATCTCATTAAGCTGGCGGCGGGCGTCGTTTTGCTGTTGGGGAAGCTGGCTGAGCGAGTCGGCGATCTCCCTGACGCGCTCCTGCTCCTGTTGCGCCTCGCGGGTTTTATCCAGTAGCTGGCTGCTAACCTGCAAGATCTCCTGATTTAACGCTTCGGTGGACATCTCTGGCGGTACGCTGCGAGGTTCATCGCGCAGATTATTCAACTGGGCGCGCAAGGTGGCGGATAGCTTAGGGAAATTATCAATAACGTGTTGATATTGTTTCGCGCGCTCAAGCGAGCCTTTTCGCTCTTCAAGCGCGTTTAACGCAGTCTGGA [...]
+GCATTTCTGCGTCGTTACGGGAGGCGCATTATACGAGAAATCCATTTAGCTGCAAGCCCCTGAACGCATTTTTTCGCGATTTTTGTTTGAATGCTGATTAAATCACCAAACAAGACAAAAAACGAGCAAAGCGTGCGCTATGCAACAAAAAACTTTTCACGCCACGCCTAAAGGCACAGAATCAGAATAGCACCCTGCGCCAAAAAAAGAATAGCACGGTGACCACAACATCCAATTGATATCAGGGATCAAGATGAAAAAAAAACTTATTGTCATGCTGTTAGCCAGCCTCTCCGTTCACGCCGCTTCCGTTTCCGCCAGAACATTACATTTTGGCACCTCCGCCACCTATGCGCCCTATGAGTTTGTCGATGCCGATAATAAAATTGTTGGTTTCGATATTGATGTCGCCAACGCGGTCTGCAAAGAGATGCAAGCGGAGTGCTCATTTACTAACCAGAGCTTTGATAGTCTGATCCCCAGCCTACGCTT [...]
+NODE	135	8138	423415	418303	0	0
+CTCATCAAACGCCAGACGGACATAATCCAGGGTGTACGGACGCTGCGGATGGCGCGCCAGTTGGGCTACCTGCCATGCGCCGAGATCGGCGAAGATTTTGCGCGTCAGTTCTACGCTTTTTTCGCGCAGGCGATGGACTTCTTCATCGATATTAATATCCAGTTTCTCATCCTGGCGGCTTACCGCAGTCAGAGAATCGATTTTCGCTTCCAGCTCTGCTATCGGCTGTTCAAAATCAAGGAAATTCAGACTCATAGTATTCCTGTATTAGTCAAACTCCAGTTCCACCTGCTCCGAACCAATGAGGCCACGCAGATCGTTAAGTAAACGATCGCTCGGAGAGACACGCCACGTTGCGCCAAAACGCAGCCGCGCACGCGCATCCGCCCTCTGATAGTAGAGATGTACTGGAATGGTCCCCGAGCGGTGGGGTTCCAGAGACTGACGGAGTCGGTTTAAAAGCTGGTCATCAATTTGCCTGTCCGTCAGCGA [...]
+CAGGCTTTTGAGAAAGATCGCGCTCGTCGTTCCAACGAAGAACGCAACAAACTGGTGACTCGTATCCAGACTGCGGTGAAAAAAGTGGCTAACGACCAGAGTATCGATCTGGTGGTAGACGCAAACACCGTTGCTTACAACAGCAGCGATGTGAAAGACATCACCGCTGACGTACTGAAACAGGTTAAATAAGTAATGCCTTCAATTCGACTGGCTGACTTAGCAGAACAGTTGGATGCAGAATTACACGGTGATGGCGATATCGTCATCACCGGCGTTGCGTCCATGCAATCTGCAACAACAGGCCACATTACGTTTATGGTAAATCCTAAGTACCGTGAACACTTAGGTTTATGCCAGGCTTCTGCGGTTGTCATGACGCAGGACGATCTTCCTTTTGCCAAGAGCGCGGCGCTGGTAGTTAAAAATCCCTACCTGACCTACGCGCGCATGGCGCAAATTTTAGATACTACGCCGCAGCCCGCGCAGAAT [...]
+NODE	136	12077	703233	698449	0	0
+CCGGTAATGCTTGTATCGCCGCCGCCAGTTGGGCATTCACCGGCACACTGTTTTTTTGCCGTACTACGGTATAGCCATACGGTCCTTGCTGTAGCGCCCCGAGAAAATCCGGGTTAAGCACAAAGGTGGCCGGGACAGGATGCGTCTCATCTTTGTATGACTGCGCCGCCAGACACTGGGTAATAAAGTTACCAAAATGGTTACGTAGCTTTTGCGCATCCTGTAAATCCGCCAGCGCGCTACCGCCGCTGGCATTCGCGGTATAAATGACCATTACCGGCATGATGCTACGCCCGGCTTCTTTTTCTATCTGGCGCACCAGCGCAACGGTTTTATGGATCGGTAACGTCGCGTAATCCAGAAAACCATCCCCGTTCACGTCAACCTCCGCGGCCGGAACCGGATCGCCGCCGCCGTCAAAACCATCGTATTTAAACAACGCGCTAAACGGTATATCGCGATAAAGAGAAACCGTCTCTGGCGCGTTAACCG [...]
+CTCATTGCGGCATGGGTACGTAAAATGCGGGTAAGCTGGGTGGAAAGCAGGTGGGAGACCCCTTTTGCCAGACTGCGATCTTTCATGAGCAGCGGCAGCAGCTCTTCCAGTTCAGAAACTTTGGCGTCTACGGCTTGCAGAAATTCCTGCTTATGCGCCGCGTCCATCTTCTGCCAGGTATGACGTAAAAAATGCTCCAGCAGTTGCTGTTCTATTTCAAACGTCGACATGCTTTTATCTGCTTTGAGTTTTAGCCGTTTTGCGACATCCAGCAGAATCGCGCGGTACTGTTTTCCGTGCCCGCGTAATTTGTTGGCGATACTGTCGCCGCCGTAATGCTGAAACTCGCCGGCAATGAGCTGCCAGTTACGGCGGTGTTGCTCCGGGTGACCTTCCATCGCTTTGAACAGCTCGTTATGACTAAGGACGCTTGACAAGCGAGCCTTGCCCTTTTCGTTATGCGTCAGCAAACGGGCGAAATCGGCGAGTTGT [...]
+NODE	137	547	29971	29971	0	0
+GCTATCCGCAAACGACTCATCCGGCGCTGGAGAATGTGAACTTTCGTCTTAAACCGGGTCAGATGCTGGGGATATGCGGTCCGACCGGCGCGGGGAAAAGCACAATATTGTCGCTTATCCAGCGCCATTTTGATGTGACGCAGGGAGAGATCCGTTTCCATGACGTGCCGTTGACGCATCTGCAACTGGATAGCTGGCGTAGCCGACTGGCGGTCGTCAGCCAGACGCCGTTTTTGTTCTCGGACTCTATTGCCAATAATATTGCGCTCGGACGCCCGGAGGCGACTCAGGAGGAGATTGAACAGGTGGCGCGTTTAGCCAGCGTACATGAGGATATTCTCCGCTTGCCTCAGGGCTACGACACGCAGGTAGGTGAACGTGGCGTCATGTTATCGGGAGGGCAAAAACAGCGTATCTCGATTGCCAGAGCGCTACTGTTAAATGCGGAAATTCTGCTTCTCGATGATGCGCTTTCTGCAGTAGATGGCCGCA [...]
+CTCCGTGCGGCCATCTACTGCAGAAAGCGCATCATCGAGAAGCAGAATTTCCGCATTTAACAGTAGCGCTCTGGCAATCGAGATACGCTGTTTTTGCCCTCCCGATAACATGACGCCACGTTCACCTACCTGCGTGTCGTAGCCCTGAGGCAAGCGGAGAATATCCTCATGTACGCTGGCTAAACGCGCCACCTGTTCAATCTCCTCCTGAGTCGCCTCCGGGCGTCCGAGCGCAATATTATTGGCAATAGAGTCCGAGAACAAAAACGGCGTCTGGCTGACGACCGCCAGTCGGCTACGCCAGCTATCCAGTTGCAGATGCGTCAACGGCACGTCATGGAAACGGATCTCTCCCTGCGTCACATCAAAATGGCGCTGGATAAGCGACAATATTGTGCTTTTCCCCGCGCCGGTCGGACCGCATATCCCCAGCATCTGACCCGGTTTAAGACGAAAGTTCACATTCTCCAGCGCCGGATGAGTCGTTTGCGG [...]
+NODE	138	2229	121927	120937	0	0
+CGTATCGCGCTTCGCCGTCATATTCTGCGTCGTCTTAATCCGGAAGGAAAACCGCTGCCGATTTTGCGGATCGGCGAAGGTATTGAGAACCTCGTGCGTGAATCCATTCGCCAGACGGCAATGGGGACCTATACTGCGCTGTCGTCTCGTCATAAGACGCAGATCCTGCAACTTATCGAGCAGGCGCTGAAGCAGTCAGCCAAATTATTCATTGTCACTTCTGTCGACACCCGACGTTTCTTGCGAAAAATTACAGAAGCCACCTTGTTCGACGTACCGATTTTGTCATGGCAGGAATTAGGAGAGGAGAGCCTTATACAAGTGGTAGAAAGTATTGACCTTAGCGAAGAGGAGTTGGCGGACAATGAAGAATGAATTGATGCAACGTCTGAGGCTGAAATATCCGCCCCCCGATGGTTATTGTCGATGGGGCCGAATTCAGGATGTCAGCGCAACGTTGTTAAATGCGTGGTTGCCTGGGGTATTTATGGG [...]
+CTTATTCAATGCTGCAGGAGGATTATTCTCACCAATGGGTAATGCCTGGTGCATGAGTTGTTCAAAGTCCATACGTTCCGCCTCCGCCTCGTTATCATCCTGATAAGACTGGCATGGCAACCCAAGACTTCCCTCAACTTTGGTAATACGCATCGCTTAATACCATAGTAATTTTTTCTTTCTTTTTCATAAGCGCATTAAAATTCTTTTGTAATTCGCTTCGCCGGGAGACAAGCTGCTGATACTGATTCTCTAACTGCTGCCGTTGCGTCAAAAAGCTCTGCGCCTGAGTGAATAACCCGGCCATTTGTTGTTTCTTATCCAACAATAAATGACAAGATAACGTACCTTGCCAGCCCATTAATTCTTTCAGTCTGGTAGACACTGCTAAAGCGCGCGTCTGGCAAATCTGCTGTTCAGTAATAATCGCCTGTTGCTGCTGATCAAGTACGGTAAGTTTGCCGCGTAATTGCTTTTCACGCCGCGCGATTA [...]
+NODE	139	3710	185383	182877	0	0
+CGAGAGCCGGGGCGGAAATCATCATCGTCGTAAGTGCGGATAATGCGAGGATGCCTACGCCAGTTTTAATCTTCATATCTCCCATCCTTTTTGGTGATGTACACAGAGGTGGTTTAACGGTCTCTAGTTTCTTTATACGACAACCTCTTTCCATCCTCCCCGCCCCTACGCCCCACCCCGGCTTTATGTGATCTGTGTTACATAAATGTGAGTAATGCGTGCTGGCGCACATAAAAACACGCCGATTTTTGCGGGCGGCATCACGAAATTCCTTTTCTGCCCGCACCCGTGGTCTCAGGCGCTGTGTCCTCATCCTCCCGCCTCCTCCCCCATAAAAAAGCCGGGGGGTGGAGGATTTACCCCAGTCAGGGATCGCGCATAGTCAGGCCATCATGAATGTTGCTGTCAATGACAGGTTGTAACGAAGGGAGAAAGGCATGGCGAGCGTACAGCTACGAAATGTAACGAAAGCCTGGGGTGACGTGGTGGTAT [...]
+AAGATCTTTTTCGGTCGTAAACACCAGAACATAGAGTTTCTGCTGCCCCAACGCAGGCGTCAGGCGCATCACGCCTTCCAGCCGGTCTGCGCTCATGACGCCCGGCTGCTGATAAGTAAAGTAACTGCTGGGGAAGAACGCCGAAGGCGTCATATTTTGGTCAAGAATCAACACGTTTGGCGCAAAAACGCTGGCTTGCTTATTGACCTCGCTGGTCAGAGTTAATGTCAGCTCGCCGATATTCGCCGGAACGCTATAAGCGGCGACCGGGCCGGTAATGCCGGCGACGTCAAGGCGCTGGCCGCCCGTCGCCAGTTGGGTAGACTGCGTTTTTGACTGATCTACAGGCGTCCAGGTTAATTGCTGTAGCGCAGCAGCAGGAATAGCGGGCGCGGCGCTGGTATTTTGCGGTACATAGTTCACTTCCGCCAGGCTGATACCCGGCACGCTGGCGAACAGCCCTGCGGTTAAACAGAGGGCGACGAGACTTTT [...]
+NODE	140	7809	375612	364069	0	0
+CGCTGCTGACCGGTGGTTTTCACCTGGATGGGTTGGCCGATACCTGCGATGGCATTTTTTCCGCGCGCCGTCGTGAGCGAATGCTGGAGATTATGCGCGATAGTCGTCTGGGAACCCATGGCGGGCTGGCGCTTATTTTTGTGCTACTGGCAAAAATTCTGGTGGTCAGCGAACTGGCGTTACGTGGAACGCCAATGTTGGCGGCGTTGGCGGCGGCCTGTGCGGCCGGACGCGGCAGCGCCGTTTTATTGATGTACCGTCATCGCTACGCCCGTGAAGAGGGGCTTGGCAATGTATTTATCGGTAAAGTCAGCGGACGGCAAACCTGCATTACTCTGGGATTGGCGGTAATCGTCGCCACGGTATTACTGCCTGGTATGCAAGGACTGGCCGCAATGGTGGTCACATGCGCGGCGATTTTCATCCTTGGCCAGTTGCTTAAACGTACGCTTGGCGGTCAAACCGGCGATACGCTGGGCGCGGCGATCGAAC [...]
+GATTACCGACAGTTCAGGACTCTACCTGCTGATCAAACCTAACGGCTCGAAACTCTGGTACATGAAGTACCGCATTGGCGGGAAAGAGAAGAAGCTGGCTTTTGGCCCCTATGCGGTGAAAAAACAGTTAATCAGGTCGAACCCTGCGCGAAATCTGGATGGTGAGTTCACGCCGCCTGAAACACAGCATTACCCGGCCCTGCCCCTTGAGAAACTGCCTGAATGTTTGCCGCGAACGGATAATTAGAGAGGGATAATATCTCCGCTAAGCTCTCTCATACCACCCTTTCGAACGATTCACCACCCGCACAACCAGCAGCATCACCGGCACCTCAATGAGCACCCCAACCACGGTCGCCAGCGCCGCACCGGAATGAAAACCAAACAGGCTAATTGCCGCTGCGACAGCCAGTTCAAAGAAGTTCGATGCGCCGATCAGGCTGGATGGACAGGCAATATTGTGCTTTTCGCCCACCAGTCGATTCAACCCAT [...]
+NODE	141	4773	269686	266745	0	0
+CCGATTTTTGCCCAGTCTTTGTAATAACTGGCAATCAGCAAGACGTCCGGAAGATAAACCTGTTCGCAGAACTGGCGAGCTTTTTGGATGATGGAACTGACAAGATTCAGACGTTCCATATTCACTGCGCCGACCGCGCCCGTTTCGTCAAGGTTGATGGCGCAAGGAACGCCGCCCACCAGCCAGTTAGGATGCGGGTTTTTACCACCGAAAACGGTGTGAATTTTTACGATTTCTTTTTGAAAATCGAGCGCTTCAAGATAGTGGGCGACCGCCAGCAAATTGGCTTCCGGCGGAAGTTTCATCGCCGGGTGTCCCCAGTAGCCATTACGGAAAGGGCCAAGTTGACCGGACTCGATAAACCGCTTCAGTCGATTTTGCAAATCGCGGAAATATCCCGGCGAGGATAGCGGCCATGCGGAAAGGCTTTGCGCGATGGCGGAGGTCTGATGCGGGTCGGCTTTCAGGGCGGCAACTACATCAACCCAGTCC [...]
+CGTGATAGAAGCTTCCGGCGCAAATAGCGCTATTCGAAATACGCTTGATTTAGCATCGTTTGCTGGTCGTATTTCGTTTACCGGATGGCCAAAACAGGAAACGTCGCTGCCGACGAACCTGATCACCTATAAAGAACTGGATTTACGCGGTTCCCGCACCAGTGCCGGTGAATTTGATGAGGCATTACGTATGCTGTCTACGCTGGAGATTAATCCGCAAGATGTCGTCAGTAAGGTCGTCAATCTTGATGAGATCCCTGATGCAGTTAAAGAACTTGATCGCTATCCGGAGCGCTACTTAAAGATTAATGCTGTTTTCCATTGATTTACGGCAAGCTCCACCGCATGGCATGACCGCCATGCGGTGTTATTCATCGACAAAATTAGCCGCCGACAATCTTTCTCACATAGCGTAAATGTTCCAGCGATCCCTCATAGGCGCTGTCAGCATCAGACTGGCGCATCGCATCCACTATCGCTTTATGTTGTTTG [...]
+NODE	142	2484	126775	125437	0	0
+GGCAGCATCTTTGCGCGCTTTGAAGCTGCAGGGTTCAAAATTGTTGGCACTAAAATGCTGCACCTGACCGTTGAGCAGGCGCGCGGCTTCTATGCTGAGCACGACGGTAAGCCGTTCTTTGACGGTCTGGTGGAGTTCATGACCTCTGGCCCTATCGTGGTATCCGTGCTGGAAAGTGAAAATGCGGTACAGCGTCACCGCGATCTGCTTGGCGCCACCAATCCGGCGAACGCGTTGGCGGGTACGCTGCGCGCCGACTACGCTGATAGCTTAACTGAAAACGGCACCCACGGTTCGGATTCGCTGGAATCCGCGCAGCGCGAAATCGCCTTTTTCTTCGGTGAAGGCGAAGTGTGCCCGCGCACCCGTTAATCTCCTTCGTCTTTCACGCTGCAAATGCGTTGGCGATAAATTATCGGTTCAAATATTATTTTCGCTAATGCCGCGTGCAGACGTGGCATCCTTACGCCAGAATTTGTACAATGCAGCGCC [...]
+CACCACCAGGCGCCGGTCAGCCCTACGACCACAAACAGTACCAGCCAGGTAAAAGACATTAACCAGCCGTCGCGTTTTTTACGACGCTTTCCTAATGAGAAACTCTGCATCGGGGCGACTTTGGCGGCGCGCAGCGGGGCCTGCTTTTCCAGCCCCGGCAGCAGTTCCTCTTCTGGAACATGCACCAGACGCGCATATGAGCGGATATATCCGCGCAGGAAGGTTGAAGCAAGATCGGACGGCGCCTTATCTTCTTCAATATCGCGTACCGTAGAAACCTTCAGGCAAAGTCGCTCAGCGACAGCCTGCTGGCTGAGTCCGAGTTGTTCACGGGCATTGCGCAGACGAACGCCGGTGGTTTGTGCTTCATTTTGGTCGTGCGTGGCTTCAGTATTCATTCGCTACAGCTACAGGTACGTGTAAATTAGGATTCAGGCGCCGACGAGCCGTAATGCCCGCCCACACCGCGAAACATCAGGTTAGTTAACCTTA [...]
+NODE	143	3035	148092	146899	0	0
+TATGCCGCCCTGCTGCTGGCGACAATGATTTGGGGCGTGTGGGAAGTCGGGTTCGACTTCTGGGCGCTCACGCCGCGTAGCGATATTCTGGTGTTTTTCGGCATCTGGCTAATATTGCCGTTTGTCTGGCATCGGCTGGTGGTTCCTTCCAGCGGCGCAGTGGCGGCGCTGGTCGTGGCGCTGCTGATTAGCGGCGGCATTCTGACCTGGGCTGGCTTCAACGACCCGCAGGAGATCAACGGTACGCTTCGCGCCGACGCCACGCCCGTCGCAACAAGCTCGTCGATCGCCGACGAAGACTGGCCGGCCTATGGACGTAATCAGGAAGGCCAACGCTATTCGCCGCTGAAACAGATCACTGCGGATAACGTTCACCAACTGAAAGAAGCGTGGGTCTTCCGCACCGGCGATCTGAAACAACCCAACGATCCGGGCGAAATCACCAACGAAGTGACCCCGATTAAAGTCGGCGATACGCTTTATCTGTGTACA [...]
+GCCGGTCAGCCAGATGGGAATGGCGATCGCTCCGTTTGATAAACCGCATCCGGTGATGCGTATCCAGCCGCTGCGGATTACCGCCTCCGGTACGCTGCCGGATACGTTGACGACGATGCCAGCGCTGCCGTCGCTGGAAGGGCTGACGGTGCGCAACCTGAAACTGTCGATGGACCCGCGCCTTGATATGATGGGGATGCAAATGCTGATGAAGAAATATGGCGCTCAGGCGATGAGCGGCATGGATCATGACAGCATGAACGCGCATATGCAGGGCGGCAATATGGGGCATGGCGAGATGGATCATGGCAACATGGATCACAGCGGGATGAATCATGGCGCGATGGGCAATATGAATCACGGCGGAAAATTCGACTTCCATAACGCTAACTTTATCAACGGCCAGGTCTTCGATATGAACAAACCGATGTTCGCGGCGCAAAAAGGCCGACATGAACGTTGGGTGATTTCCGGCGTGGGCGACATGATGCT [...]
+NODE	144	3939	221112	217457	0	0
+AACTTTAATAAATCTTTCACGGATTTGCTCCCGTCGGAGTTAGCACAATCTGGTGTCGGGTTTTACCCCGACACCAGTGACCTGTTTGAGCGAGAATTACTCGTCTTCCAGTTCGATGTTGATGCCCAGCGAGCGGATCTCTTTCAACAGAACGTTGAAGGATTCCGGCATACCCGGTTCCATCTGATGGTTGCCGTCCACGATGTTCTTATACATCTTGGTACGACCATTCACGTCATCAGACTTAACGGTGAGCATTTCCTGCAGGGTGTAGGCGGCGCCGTAAGCTTCCAGCGCCCACACTTCCATCTCCCCGAAGCGCTGACCACCGAACTGCGCCTTACCACCCAGCGGCTGCTGAGTAACCAGGCTGTAAGAACCGGTAGAACGCGCATGCATCTTGTCATCAACCAGGTGGTTCAGTTTCAGCATGTACATGTAACCGACGGTTACCGGACGTTCGAACTGTTCACCCGTACGGCCATCGAACAG [...]
+GTTTGACGTTCAGGAATGTCAGATCCGTGGCGTGACCTATTCCGCACCGCTGCGCGTAAAACTGCGTCTGGTGATCTACGAGCGCGAAGCGCCGGAAGGCACCGTTAAAGACATTAAAGAACAAGAAGTCTACATGGGCGAAATCCCGCTCATGACCGACAACGGTACCTTTGTTATCAACGGTACTGAGCGTGTTATCGTTTCTCAGCTGCACCGTAGTCCGGGCGTCTTCTTTGACTCCGACAAAGGTAAAACCCACTCTTCGGGTAAAGTGCTGTATAACGCGCGCATCATTCCTTACCGTGGTTCCTGGCTGGACTTCGAATTCGATCCGAAGGACAACCTGTTCGTGCGTATTGACCGTCGCCGTAAACTGCCTGCGACCATCATCCTGCGTGCGCTGAACTACACCACTGAGCAGATCCTTGACCTGTTCTTTGAGAAAGTCGTCTTCGAAATTCGCGACAACAAGCTGCAGATGGAGCTGATTCC [...]
+NODE	145	51	3012	2974	0	0
+TAAAACCGAGGCGACGCCGGCCGCCAGCAGTCAGCCTGCGACGCCAGCGCC
+AACATTATTGTCATCACATCCTGTTGCGCCCAGGGTCATTAGCGCAATGAT
+NODE	146	1870	117603	115962	0	0
+ATGCCGTATTCCCGGCAATCTTACTGGCGCTGGTGATCCCGGCGTTTAAAAACCGCACCACATTGATTCGTGGTTGCAGCGGCGCCGCGCTGTCGCTTGCCGCCGTTCCCTTTGTGGCTGCCGGATTGCCAGTGTTGCTTTCGCTGCTTGGCCTACTGGCGAGGAAAAAATAATGGGCAATATGACGCTATTTATTATCGGTATTGCTCTTTTGTCTGCGGGAACCTATTTGATGCGCCTCGGCGGCGCGAAACTTGGCAGCCGTCTGGCGCTGTCTGAGCGTTCACAGGCGCTGCTCTCGGATGCGGCAACGGTGCTGCTATTCTCCGTCGCGCTGGCGACCACCTTTTACGAAGGCGAACATTTTGCCGGAATGGCGCGCGTTCTTGGGGTTGGCTTCGCCGTATTTTTAGCCTGGCGTAAAATGCCGCTTATTGTGGTGATTATCGCCGCTGCAGTGGTGACCGCGTTATTACGAATGGCGGGTATTAA [...]
+TTCTCAGACTCCGGAAACGCAATCTGGCGAAAGTCCAGCGCAGCCCCCAGCAGCGAAGCCAGAAACGGCAACTCAGCCCCCGGCGGCGAAACCAGAAACGCCAGCTCAGCCGGAGGTTGACGCTGAAGAAGTTTATAGTGAAAAAATGGATGTCTATATCGATTGTTTTAACAAACTTCAATTGCCCGTTCAGCGTAGTCTGGCGCGTTACGCGGATTGGGTGAAAGACTTTAAAAAAGGTCCGACAGGGAAAGAGAGCCTGGTTTATGGCATTTATGGTATTACGGAGTCTTACATAACGAATTGCCAGAAAGAGATGAAACAGGTGGCCGCCTTAACGCCATTACTTGAGCCTATTGATGGCGTTGCCGTTAGCTATATTGATAGCGCCGCCGCGCTGGGTAATACCATTAACGAAATGGAAAAATATTATACCCAGGAAAACTATAAAGATGATGCCTTTGCTAAAGGTAAGGCGCTGCATCAGACATT [...]
+NODE	147	4929	247275	245986	0	0
+AAAATTATCCACAACGAATATCGCGTTGGGGCACGTTTTGTTCCGCTTTCGTCAGATCCTTGTAAACAGACTTATCCACAGGGCGGCCCATTACTCCTGGAATGCAAAAAATTATACCTGACGCGTAGAATTTCTATAATTTACTGAAAAATATAGAAAAAATAAGATTTCAAAACGTTAGCGTTATTGACTATTCCTTTTTTCCCTCTTGAATCGCAATGTGTTTTTATTTTTATACACAGCCTGTGAATAATTCAGGCATCGCGCACCAGCCCTTTTTCAATCACCCTGACCAGACGCTGTTTTTTCGGTAGCTGCACTTCAATGATGCAGGCGTTCCGCTTTTCAATTTGTTGCGCAATCGCCCATTCGATATGCTCATCGAGAAGTGGATGCTCACCCTTGCGGCTTTCCAGCGCCGTAATGACGGCATTACTCCACGGCGCATTCCCCAGCGCGACGGCAACATTGCGCAGCCAGCGTAAATGACCA [...]
+ATAAGCTTCGCGCCGCCACGCTCGATGTCGATATCAACGCGGGTGGCGCCTGCATCCAGACTATTCTCTACCAGCTCTTTAACAACCGACGCAGGGCGTTCCACCACTTCGCCAGCGGCGATTTGGTTCGCAAGCTGCGGCGGCAGAACCTGAATCGGCATGAAATCTCCTTAATTCGCGGCGGTTATGGCGCCAGGCTGGTTGGTACTGGCCGTCTGGCCTGGGCCGCCCTGCGGCGCAGACTGGATCGGATGCGCTGCAAAGTACTTACGCAACCCCCGGTATATAGCGTCAGCAATCTGTTGCTGATAGCGGTCGCTCGCCAGCAATCGCTCTTCGCCGTGATTACTGATAAAGCCCGTCTCCACCAAAATGGACGGGATATCCGGCGAACGCAGCACGCCCAGGCTAGCGTGTTCCGGGCGGCGTTTATGCAGCGACCCCACGCCGTCGAGTTGGCTTAGTACGTTCGTCGCCACATCATACCCTACC [...]
+NODE	148	1977	80332	77525	0	0
+TGATACGCGTCATTACTATGGCCTGTGGAACGCGGCGCGCGAGCAAATCGCCCGCCATCTGGGACATGCGGTCAAACTTGAGATCGAACCCGGACGTTTTCTGGTGGCGCAATCGGGCGTGCTGGTAACGCAGGTGCGTAGCGTAAAACAGATGGGAAGCCGCCATTTCGTGCTGGTAGATGCGGGTTTTAACGATCTGATGCGCCCGGCGATGTACGGTAGCTATCACCGTATTTCGGCGCTGGCGGCGGATGGTCGCGCGCTTGAAAATGGCCCGTGGGTCGAGACGGTGGTCGCCGGGCCGCTATGCGAATCAGGCGATGTTTTTACGCAGCAGGAAGGGGGAATGGTTGAAACACGCGCCTTACCTGCGGTCATCCCCGGCGATTACCTCGTATTGCACGATACCGGCGCGTACGGCGCGTCTATGTCATCGAATTACAATAGCCGCCCGCTCCTGCCGGAAGTGCTGTTTGACAATGGACAGGCGCG [...]
+TATTAGGTCGCGGCAGAAATTTTACCGCGGTGGCCTGCTATAACGACTCGATGGCGGCTGGCGCGATGGGAGTATTAAATGATAATGGCGTGGGGGTGCCGGGCGAAGTATCGCTCATCGGTTTTGATGATGTACTGGTCTCACGCTATGTGCGTCCCCGACTGACCACCATTCGGTATCCGATCGTCACCATGGCGACACAGGCGGCGGAGCTGGCGTTAGCGTTGGCGGGGAAATGCCCTACGCCAGAAGTAACTCATGTATTTAGTCCGACACTGGTACGCCGACATTCGGTATCCACGCCGACGGATACCGGACACCTGTCGACAACCGATTAATCAGGGTAGCATGATGGCGACAATGCTGGATGTTTCCCGCCATGCGGGCGTATCAAAGGCCACCGTCTCACGAGTGCTGAATGGGACGGGGCAGGTAAAAGAAAGCACGCGCCAGAAAGTGTTTACGGCGATGCAGGCTCTGGACTATCGCCCC [...]
+NODE	149	1688	96163	95651	0	0
+AGCGATAAACTGGATGCTTTTCTGGCCTCGCTGCGCGACGTGGCGAAAATTGTTGAAGTGGCGCGTTCAGGCGTCGTCGGGCTTTCGCGCGGCGATAAGATTATGCGCTGAGCAGATTCGCCGGATGACGACGCGCTTGCGTTTTATCCGGCCTGCAGGCTGATATCTGGCCCAGATCCTATAAGCGTAGCGCCATCAGGCAGGTTTGCCGGATATCAGCCAACAGGAATTATCGCCCAACCCAATATCACCGGTTGGGCTTTTTTTTGCGAAATCCGTGGTAACCCGGAATAAAAGCGGTTGCCGGAGTGATCAAACTGCGCTTAGATGTTAACGATTTTAACCCATGCCGACATAAAGGTTATGGTTTGTACAATTTACACAAGGGGCAATTGTGAAACTGGATGAAATCGCTCGGCTGGCCGGTGTCTCGCGCACAACTGCAAGCTACGTTATAAACGGTAAAGCAAAGCAATACCGCGTGAGCGACAA [...]
+AAAGACAAAAAGTGGCTGTTAATTCGACGATTTCTTGCCTGCTTGTAACAAAACAATACAAAGGAAAAGACTCGTTACGTCTTAATTAGTGGAATGTGGACGATTTCGGACAAAAGAAAGGTAATAAAAAAGAATTTTCGGATAATTTTAAGGAATAATCTTAATTATTTAAGGGATATTTTTACTGATACGCATTTGTTTGACGGCGGCAGAAGAGAGAGTCTTTTACCGCCGGTCCTTTAGCTACGGCTCAGAATGCCGCGACGATACAGGTTTCGCCGAATACGCGTTAAGCCAGGTTTCGGTTTACGCGGTTCATCAAGACTTGCCAGCACAATCTCCAGCACGCGTTCCGCGACATCACGATGACGCTGCGCCACCGCCAGTACCGGGCATTGCAGAAAATCCAGCAGCTCATGATCGCCGAAGGTCGCAATCGCCAAATCCGAGGGCAGTTTTCCATCGCGCCGCAGCGTAACGTCCATCACGCCC [...]
+NODE	150	1164	57371	56902	0	0
+GGCCCGCGTATCGAACAAAGTGGGGCTGGAGTCGGACCCGCAGAACTTCCTGCTGATGCACGCGATGGGCCCGAACGTGGCGGGGGTTATCGGTTCGGCCATTGCGGCGGGCGTGATGCTCAAGTACGTGCTGGCAATGTAATCCAATCTAATCGGGAGCAGTGATTCTGCTCCCGCAAAATGAGGACACAGTAATGAGTGAAATGGTTGCGTTTCGGCAAGGTACATCCATGCCATCCAGAGAAACCATCTTGCATTATGTTGTTGAGACGGTGAATCAGATAACTGAGCTTGAGCCAGCGCTGCATTTGCTGCCGTGGTCTGGCGTCAACTCAGCAATATATGAGCAACGTTTTGCACAGTGTTACGACGAGGGGCTTTGTGCCGCACAGACGTCGGCACCGAATGTTCCGCAGGGGATTCTGCCATCGACCGATTGGGCTCAGGGTATCGGGTTACTCTGTTTTGCCGCAGGGTATATGAGCGCAGGCG [...]
+CGCTTGCCGGTATTCAGGTTAATGATTTGATTATTTCGGTCAATAATAAACCCGCTGTGTCCGCGCTGGAGACGATGGATCAGGTGGCGGAAATCCGCCCGGGCTCCGTCATTCCGGTCGTGGTAATGCGGGATGATAAGCAGCTCACGTTCCAGGTGACGGTGCAGGAATACCCGGCGTCGAACTAAAACGACGCGGCTTTTGCCCGCGTCGTTCGACGGCTAGTCAATAAAGACTGGCCCTGCCGGAAAATGCGCCAGGAAACTCGTGAAGATCAGCAGAGCGGGGAGACTTTTCTCCCCGACGGCCTCTTCACGCAGCGCCTTATCGAGTGCCAATAAGCCAGACTCGCCTCCTTCCCCCAGAATGCCGCCCATCCAGAGCAGTCGTTGCGCCTGTTGACGCGCATACTGCGATGCGCTTTTCCAGGCGATCAGATGCAGCAACGTTTGTAACAGCAGGATCCGAGATGCGTGACCATCGCGTTGTAAT [...]
+NODE	151	8119	455850	447174	0	0
+TTGCTGAATCTCGTCTGAGCGACGCGTACCGCATTACCGATAAACAAGAGCGCTATGCTCAGGTTGACGTAATCAAATCCGAAACCATCGAGCAGCTTATTGCAGAAGATGAAACTCTGGATGCTAACGAGCTGGGCGAAATCCTGCACGCCATCGAGAAAAACGTGGTGCGTAGCCGCGTACTGGCAGGCGAGCCGCGTATTGATGGCCGTGAAAAAGACATGATCCGTGGTCTGGACGTGCGCACTGGCGTACTGCCGCGTACTCACGGTTCCGCTCTGTTTACCCGTGGTGAAACGCAGGCGCTGGTTACCGCGACTCTGGGTACTGCCCGTGACGCGCAGGTGCTTGATGAACTGATGGGCGAGCGTACTGACAGCTTCCTGTTCCACTACAACTTCCCTCCGTACTCCGTAGGCGAAACCGGCATGGTCGGTTCTCCGAAGCGTCGTGAAATTGGTCACGGTCGTCTGGCGAAGCGCGGCGTGCTGG [...]
+CGATGTCCGAAGGCACTCAAACCACGCTTGGCGCATATCACCGTAAATGGCAGTGAGAGGAGCTATGAAATATTCCTTAGGACCGGTGCTTTATTACTGGCCGAAAGAGACGCTGGAAGATTTTTATCAGCAGGCCGCAAAAAGCAGCGCTGATGTCATTTATCTGGGCGAAGCTGTGTGCAGCAAGCGTCGCGCGACTAAAGTCGGCGACTGGCTGGAAATGGCGAAATCCCTCGCCGCCAGCGGTAAGCAGGTGGCGCTCTCCACCCTGGCGCTGGTACAGGCGTCATCTGAATTAAGCGAGCTGAAACGCTATGTGGACAACGGCGATTTTCTGCTGGAAGCCAGCGATCTTGGCGTGGTGAATCTGTGCGCCGAGCGCAAACTGCCGTTTGTCGCCGGCCATGCGCTGAATTGCTACAACGCGGTCACGCTGCGCCGGTTGCTGAAAGAAGGCATGGTACGCTGGTGTATGCCGGTGGAGCTGTCCCG [...]
+NODE	152	11711	714235	709340	0	0
+TTGGTCCAAAATGGCAAGTAAAATAGCCCCATTAAATGGGGCTATTTAGCCTCTTCAGGGCGTTATTTATGCGCGTTGAGAATCCAGTAGTTCATTATTTTTTACTACTTCCTGCGCTTTGGTATAACTTTCAATCAGTAGCTGATAGGCCGGGAATATTTTGGTATATACATCCGCCCATTCTGCGGCATCTTCCCGATTCCAGGTACGTTGCAGCTCAGAGGCTACCGCCGCGGTATCCATTGGTACTACGCCCGCCTGCACCACGCGGGCCATCGTAATTTCCTGCGCCATTTTACTGTACGTACCGGAGGCATCAATTACCGCAAATACCTTGTACCCTTCCGCGACGGCGCTGATGGCTGGAAAAGCCATACAGACACTGGTAATAGTGCCGGCTATGATCAGCGTTTTACGGCCTGTCGCTTTTACCGCTTGTACAAAATCGGCATTATCCCAGGCATTAATTTCCCCTTTACGCGCGACATATTG [...]
+CCGCTTCCCGATACAGATACGGCATCATCCGGCACTTCTGTTCGGTGAAGAAGCGCACCACGTCACAGGACTCCTCGTCATAGGCCCACGGAACCCGGTAGGATTTGCTACCGTGCAGGCGGCTGTGGCTGGAGAGCAAGCCGAATGCGCACCACCGCTTGTAGACATGCGCCGGCGCGGTATTCTCGAATCCGCCAATATCATGACTCCAGAAGCCAAACCCTGACAGGCCGATGGACAGCCCGCCGCGCAGGCTTTCCGCCATCGATTCGTAGTTGGCGTAGCAGTCGCCGCCCCAGTGCACCGGGAACTGTTGCGCGCCCACCGAGGCGGAACGGGCGAACAGCACCGCCTCTTCAACGCCGACGGTCTCTTTCAGCACGTTCCACACCAGTTCGTTGTAGATGTAGGCATAATGGTTGTGCATTTTCTGTGGATCTGAACCATCAAACCACTGCACATCCGTTGGAATGCGTTCGCCGAAGTCAGTTT [...]
+NODE	153	7444	396787	392439	0	0
+TCTGGGCACTGCGGATATGAAAGGCTTCTTCGCTTTTATTCTGGACGCGCTACGTGACGTTGACGTCACAAAGTTGAAAAAGCCGCTCTACATTCTGGCGACCGCCGATGAAGAGACCAGCATGGCGGGGGCGCGTTATTTTTCCGAAACCACGGCATTACGTCCGGACTGCGCGATCATTGGCGAACCGACGTCGTTGCAACCGATACGCGCGCACAAAGGGCATATCTCTAATGTCGTTCGCGTCCTGGGGCAGTCCGGTCATTCCAGCGACCCGGCGCGTGGGGTTAACGCCATTGAACTGATGCACGATGCGATTGGCCATATCATGCAACTGCGTGACTCGCTGAAAGCGCGGTATCACTACGAGGCGTTTACCGTTCCGTATCCAACGCTGAATCTGGGCCATATCCACGGCGGCGATGCCTCAAACCGTATCTGCGCCTGCTGCGAATTGCATATGGATATTCGTCCACTGCCGGGCATGACGTT [...]
+GCCCAGCGTCACGATGCCTTCTTTTTTCAGCAATTTAATCGCTGCAAGACCTTCGGCGGTCACCGGAATTTTCACCACAATGCCGGGGATGGCGTTATTCAGTCGTTTGGCTTCTTCCACCATCCCTTTCGCGTCGCGGCTCATGGTCTGCGCAAATAAAGTGCCTTCTTCACCGATGGCGTTTTGCAGCCTGGGCAGCACATCCCAGATAGATTCTTTGCTGGCTGCCACAATGCTTGGATTGGTGGTGACGCCGGCAATCGGGAAAATGCGCGCCAGACGTTCAACTTCCGCCACGTTAGCGGTATCCAGATAGAGTTCCATAGTCTTTCTCTTCGTGAGTTTTCGTTATGGACAGGATAAAGGAGCGTGCCCCGGATGCGCTATGTGACAAATCTGCCAAAAACTGGACAAATGTGATGCTCTTGGTAAAGTGTGATTTACTTCACAAGTTGGTGATGATTAACGTATAACGTGCTGTTGTATGCCATG [...]
+NODE	154	11679	601105	592206	0	0
+AATCACTCTCGGTCAACTGGTTGTCGAATTTGAAAATGAGACCTGGTTCGCTCTTACCGGCGCAGGCTGCGAGGCGCAGTTGGATGATCAACCGGTCTGGACCGGCTGGCGATTGCCGGTAAAAGCGGGTCAGCGTCTTACGCTGCATCGACCGCTTCACGGGATGCGTAGCTATCTGGCGGTAGCGGGCGGTATTGCTGTGCCGGAGGTGATGGGATCGTGTAGTACCGATCTGAAGTCCGGTATCGGTGGGCTGGAAGGGCGGCTGCTAAAAGATGGCGATCGGCTGGCGACGGGTAAACCATCGCGACAGTTTAGCGGGCCGCAGGGCGTGAAGCAGTTACTGTGGGGGAATCGCATCCGTGCGCTGCCGGGGCCGGAATACCGTGAATTCGATCGCGCCTCGCAAGAAGCGTTCTGGCGTTCGCCATGGCAGCTCAGTCCGCAAAGTAATCGCATGGGCTATCGTTTGCAGGGACAATCGTTAACGCG [...]
+GAGGAGTGCTCCGGCCCCTGCCCTTCATAGCCATGCGGCAACAGCATCACCAGACCGCACATCCGGCCCCATTTCTGCTCGCCGGAGGAGATGAACTGGTCAATCACTACCTGCGCGCCGTTGGCAAAATCGCCAAACTGCGCTTCCCAGATAGTCAGGGTACGTGGTTCCGCCGTGGCATAACCGTATTCAAAAGCCAGTACCGCTTCTTCAGACAGCACGGAGTCCCAGACTTTAAACTGTCCCTGACCGCTGTGAATATGCTGCAACGGCGTATACGTTGAGCCGTTCGTCTGGTTGTGGATCACCGCATGACGATGGAAGAAGGTGCCGCGACCGGAGTCTTCCCCGGACAGGCGCACCGGAATGCCTTCATCGACCAGCGTGGCGTAAGCCAGATTTTCCGCGCCGCCCCAGTCAAACAATTTCTCGCCTGCCGCCATTGCCTGACGGTCGCCATAAATTTTCGCCACGCGAGACTGCATTTCAATG [...]
+NODE	155	2987	143609	140979	0	0
+TCAGTACCGGCATCGACCGCCGAGGTGGTGTCATCGAGAATCAGCAGTTCCGGCGCGGTAATCAGTGCCCGGGCTAGCGCAATACGCTGGCGTTGGCCGCCGGAGAGGTTGCTTCCGCGTTCGGTCAGTCGGGTGTTGAACCCCTGCGGTAGCGCATTGATGAACCCGCTGGCGCCTGCGGCATCGGCGGCGCGTCGAATGTCGTCCTGAGTCGCTTGCGGGTGCCCATAGGCGATGTTTTCCGCCACCGTACCGGCAAACAGAAACGCGTCTTCAAACACTACGCCAACGCGACGACGAAGCGCCGTCAGTTTCAGGTCGCGAATATTCTGTTGACCCGTAGTGGTGTTGAGCCATACTCCGCCGGAGGTGGGATCGTAAAAGCGCGCCAGCAACATCAGCAATGTTGATTTTCCGGAGCCGGATGCGCCAACCACCGCCACGGTTTCACCGGCGTGAATGGAAAACGAGATCTCATTGAGGATACGGTTA [...]
+CATACGCGCGTAAATAAGTCTGAAACTAAACTTCACCGCTTAACGCTCTCCTCTTCCCCGATTTTTATGAAAAAAATCATCACATGATCAAGGGTCGTATTTGTTATTGCATTTTTCAAATGATATTGTTAATTATTATCATTCTCATTAACGACTTGTTCGATTTATGACGTGGAGAGAGAGGATTTCTCATGCGTATTCTGTTTGTCGGTCCGCCACTGTATGGACTGCTATACCCTGTGCTGTCCCTGGCGCAAGCGTTTCGTGTTAATGGCCATGAAGTGCTGATTGCAAGCGGTGGAAAATTTGCACAGAAAGCAGCAGAAGCTGGGTTGGTGGTATTTGACGCTGCGCCTGGTTTCGATTCGGAAGCGGGTTATCGCCGTCAGGAGGCATTGCGAAAAGAAAATAACATTGGAACAAAAATGGGGAACTTCTCATTCTTCAGCGAAGAGATGACTGACCCACTGGTCGCGTTCGCCGGGCAGTGGC [...]
+NODE	156	26	5954	5917	0	0
+CGGTTCGATCCCGTCATCACCCACCA
+TGCTCTCCCAGCTGAGCTAATCACCC
+NODE	157	2	553	542	0	0
+CT
+GG
+NODE	158	4	472	257	0	0
+CGGG
+GGGA
+NODE	159	12	1404	759	0	0
+TCGTTAGCTCAG
+CCCTCCTTGTAA
+NODE	160	35	4006	2229	0	0
+TTGGTAGAGCAGTTGACTTTTAATCAATTGGTCGC
+GAGTGGTGGGTGATGACGGGATCGAACCGCCGACC
+NODE	161	3033	147859	146195	0	0
+CGCCATTTATGAAGAGTATTATCAGAAGCTAAAAGCAGGACGCTAATTCAGCCAAAGCGCCTGTCGGGCCTACAGATGAACGTAACGTGAAATGTAGGCCGGATAAGGCGTTACCGGGCAAACAGCACTACAGCCCTTTCAGGAATTTATCAACAAATTCCGGCACAACCTGGCTTGCCGGGCCGTAGTGCTTCTCTTCAAACTCGCTGCCGACCTGGCTTGGCTCAAGATTCAGTTCCACCGTATGTGCGCCGTGCAGTTTTGCTTCATGCACAAAACCCGCAGCCGGATAGACATGACCGGATGTGCCAATGGCGATAAAAATATCCGCCATCGACAGCGCCATATAAATTTCATCCATGCCAAGCGGCATCTCGCCAAACCACACCACGTGCGGACGTAGCGGCGCCGGGAACTGGCAGCAGTGACATTTATCTTCCGGCATCACATCGCCGTTCCATTCCAGAATCTGGCCGCTTTGCGAACAGCGCA [...]
+ACCGTATTCTGGCGGTGGTTCCGCACGGGGAGATTGAAGCGGTCAATCAGCCGTGGACCAACTGGCGTGAAGCGCTGGCAAAAGTGCAGAAGGTGCCGGGCATTGCCGCCGCCGCGCCGTATATCAATTTTACCGGCCTGGTAGAGAGCGGGGCGAATTTGCGCGCCATTCAGGTTAAAGGCGTCGACCCTAAGCAAGAGCAGCAGCTTAGCGCGTTACCGTCATTTGTGCAAAATCACGCCTGGGATCATTTCAAAGCGGGCGAGCAGCAGATCATTATCGGTAAAGGCGTCGCCGATGCGCTGAACGTGAAACAGGGCGACTGGGTGTCCATCATGATCCCCAATGCGAATGCCGACCATAAGCTGCTCCAGCCCAAACGCGTGCGTTTGCATGTCATCGGGATTCTGCAACTGAGCGGCCAGCTCGATCACAGCTTCGCCATGATCCCGCTTGAGGATGCGCAGCAGTATCTGGATATGGGGTCCAGCG [...]
+NODE	162	4338	213662	212243	0	0
+TCTTTCACCTCAGCAACATGTTGCGCGCTATAGTTTGGCGCTTTACCGCCGCGCAGAATGATATGGCAGTCGCCGTTGCCGCTGGTATTCACAATCGCCGAATGACCCCATTTAGTGACGGAGAGGAAGCAATGCGGCGCGCCGGCGGCGTTGATGGCGTCAATGGCGACTTTAATCGTGCCATCAGTACCATTTTTAAAACCGACCGGACAAGAGAGGCCAGACGCCAGTTCGCGATGAACCTGGGATTCAGTAGTCCGCGCGCCAATGGCGCCCCAGCTCATCAGATCGGCCAGATATTGCGGCGTGATCATATCGAGGAATTCGCCGGCGGCAGGCAGGCCGCTGTCGTTAATATCCAGCAGCAGTTTGCGCGCAATACGCAGACCGTCGTTAATCTGGAAGCTGTTATCCATATGCGGATCGTTAATCAGCCCTTTCCAGCCGACGGTGGTACGCGGTTTCTCAAAATAGACACGCATGACAATTTCA [...]
+AGCGTAATGTTTGACCCACAAGCCGCAATCTACCCGTTCCCGCCGAAACCAACGCCGTTGAACGACGATGAAAAGCAATTTTATCGTGAGAAAATCAAGCGCTTGCTCAAAGAGCGCAATGCCGTCATGGTGGCGCACTACTACACCGATCCGGAAATTCAACAGTTGGCAGAAGAAACCGGCGGCTGTATTTCCGACTCACTGGAAATGGCCCGTTTCGGCGCGAAGCACGCCGCATCCACGCTACTGGTAGCGGGCGTACGGTTTATGGGGGAAACCGCCAAAATCCTCAGCCCGGAAAAAACCATTCTTATGCCTACCCTGGCGGCGGAATGTTCGCTGGATTTAGGCTGCCCAATAGACGAATTTAGCGCTTTTTGTGATGCGCATCCTGACAGAACCGTAGTGGTCTATGCTAACACCTCGGCTGCTGTTAAAGCGCGTGCGGACTGGGTTGTGACCTCCAGTATCGCCGTAGAACTGATTGAGCAT [...]
+NODE	163	8046	420462	417658	0	0
+ATTTTTAATGCTTTCAGTCCTTCAATGGCGCTGGCAAACGTCGTGTTATCCACTTCGAAAGCCATATAGGTATACGGTAGCCCCGCTTTTTCTAACGCTTTGTTTTGCATTTCGGGCGATAAGCTATGACGGATAGGATACGCCATAAGACCAATTAATTCATATTTTGCGGTAACATCCATTTTATACTCCTTAATAAGTGGACAGTGCAGAGCAGGGCGCATGCCTGTTGCGCATAGTTAACATTTTTACTGGAAATAACGCTCGCCAAATCGGACATCGTTTTGCGGGATCTTAAATACGCGATAATAGCGAATAAATACAATAATGGCGGTGATAAATGTCAGTAGTGCAAAGGCAAAATCTAACAAAATGATATATTGCAGGCCAATAGTAGAGAGATAACCGGTGATCAGTGGAATAATAAAGTTAGCTACGCCCCCCATCATCATATATATACTGGTGACTTTAGCTTTACTCTTAGGGAAAAAT [...]
+GGATCGACGCCCACCATCGGCATCCCCAACGCGGCGATCCGATTAAGGAACTCAGAGGTTTTTTTCGCCGTTTTCGCAAAGCGATTAAGAAAACCTTTAATATGCTGCGCCTTACCATTCGGCGAGAACGGTAACAATACCGGCCTCCTGCCCAGCTTTTCCGCCAGGCGGATAAAGTCCGCCACGACCCGGGCGTCGTAGTAGCTGGTAAACGGATCCTGAACCACCAGTACCGTTTTCGCTTTTTGCTCGGCGCTCATGCGTTCCAGTTGCTCAAGCGTCATATTGGCAGACGGATGGCCCACCAGTTGCTGTTGCAATGAAGGGGCAGAAAGCAGAGGTAAATCCACCATACCGATATGTTTTTTCGCCAGATTGCGAACCATCGGTTGGTTAATAAAAAAGTTAAAGGTCTTTGGCGCACGCGCCATCAGCGGCGCGTAGGTCTCGACCGTCGCCACCAGATGATCGCGTACCGGACGCAGATAACGC [...]
+NODE	164	238	102748	95755	0	0
+CCCTCCCGAAGGTTAAGCTACCTACTTCTTTTGCAACCCACTCCCATGGTGTGACGGGCGGTGTGTACAAGGCCCGGGAACGTATTCACCGTGGCATTCTGATCCACGATTACTAGCGATTCCGACTTCATGGAGTCGAGTTGCAGACTCCAATCCGGACTACGACGCACTTTATGAGGTCCGCTTGCTCTCGCGAGGTCGCTTCTCTTTGTATGCGCCATTGTAGCACGTGTGTAGC
+GCAAGCGGACCTCATAAAGTGCGTCGTAGTCCGGATTGGAGTCTGCAACTCGACTCCATGAAGTCGGAATCGCTAGTAATCGTGGATCAGAATGCCACGGTGAATACGTTCCCGGGCCTTGTACACACCGCCCGTCACACCATGGGAGTGGGTTGCAAAAGAAGTAGGTAGCTTAACCTTCGGGAGGGCGCTTACCACTTTGTGATTCATGACTGGGGTGAAGTCGTAACAAGGTAAC
+NODE	165	2784	136146	132841	0	0
+TACCTGCTCGACTATAAATCTAACTGGCTGGGCGAGGATAGCGCCGCTTATACCCAGACGGCGATGGCTGCGGCGATGCAGGCGCATCGCTATGATTTGCAGTACCAGCTTTATACGCTGGCATTGCATCGTTACCTTCGTCATCGAATGGCGAATTACGACTATGAACGCCATTTCGGCGGCGTCATCTATCTCTTTTTACGCGGGGTGGATAGCGAACGTCCGCAGCAGGGTATTTTTACCACTCGTCCTGCGGCGGCGTTAATTAACCAACTGGATGATATGTTTGCAGGTGAAATGAGTGAGGAGGCGCAATGACAATCCAGGAGCGGTTGCTGGAGGCCGTTGAACAAAAACTCTTACGGCCCATTGATGCCCAGTTTGCTTTAACCGTCGCCGGTAACGACGATCCCGCCGTGACGCTGGCGGCAGCGCTGCTTAGTCATGACGCAGGTGAAGGTCACGTGTGTCTGCCGTTGTCGCGTTTAACGT [...]
+ATGGTATCGGTACGCAGATCGTCATGGAGAGCGCCGAGCAGATCCGCCGCGCCACCATCAACGATATTGGCGGTATTCTGGAGCTTATCCGCCCACTGGAACAGCAGGGCATTCTGGTACGCCGTTCCCGTGAACAACTGGAGATGGAGATCGATAAATTTACCATTATTCAGCGCGATAATATGACTATCGCCTGCGCGGCGCTGTATCCTTTTTTGGAAGAGAAAATAGGCGAAATGGCCTGCGTTGCGGTGCATCCGGATTATCGCAGCTCATCGCGTGGAGAAGTGCTTCTGGAGCGGGTTGCCGCCCAGGCGCGGCAAATGGGGCTGCGTAAATTGTTTGTGCTGACGACGCGCAGTATTCACTGGTTCCAGGAGCGCGGTTTCACGCCTGTCGATATTGAGTTACTGCCTGAGAGCAAGAAAAAAATGTATAACTATCAGCGACGTTCAAAGGTGCTGATGGCGGATTTAGGATAACAAGGTGGGC [...]
+NODE	166	3689	209036	204496	0	0
+AGGCAACCACTTCGCCTTTCACCAAACGCTGCATCTCGGTTACTTCTTCCGGACGTTCGTCAATCAGCAGCACCATCAGCACGCAGTCTGGGTGGTTATACGCGATGCTCTGCGCGATGTTCTGCAGCAGCATGGTTTTACCCGCCTTCGGCGGCGCGACAATCAGACCGCGCTGGCCGCGACCGATCGGCGAAGCCAGATCCAGAACGCGCGCCGTTAAATCTTCGGTAGAACCGTTACCACGCTCCATACGCAGACGAGAATTTGCGTGCAGCGGGGTTAAGTTCTCAAAGAGGATTTTGTTACGGGCGTTTTCCGGTTTGTCGTAGTTAACTTCGTTAACTTTCAACAGCGCAAAATAGCGTTCACCTTCTTTCGGCGGGCGAATCTTACCAGAAATGGTATCACCAGTGCGGAGGTTGAAACGGCGGATTTGGCTGGGGGAAACGTAGATATCATCAGGACCGGCGAGGTAGGAGCTGTCTGCAGAAC [...]
+TCCCCTGCGCCATCATAATTTCCTGCAATGCCTGTACGGTGCCGGAGGCACCCACGCAGACCTTCCAGCCATGAAAACGCAGTTCATCGGCGACCGGACGCAACACATCGCGCGCGGCTTTCTCCGCGTCATCAAAATTTTCTTGCGCCAGATTACGATCGCTAAAATAGCGTTCAAGCCACGTTACGCAGCCCATCGACAGGCTAAACAGCGACGTGGTTTGCGCGCCAGTGCCGGTAACCAGTTCAGTGCTGGCGCCGCCGATATCCACCACCAGTCGCTGATCTGCGCCGCCGGTGGTATGAGCGACCCCCTGATAAATCAGCCGCGCCTCTTCTTCGCCGCTGATAACCTGCACCGGACAACCAAGGATAGTCTGCGCTTTCGCGATAAATTCACCTGCATTGACGGCGAGACGCAATGTTGCGGTGGCAACCACGCGGATTTGTGGCTGCGGGATATCCTGCAAACGTTCAGCAAACAGACGCAGGC [...]
+NODE	167	11391	630562	626120	0	0
+AAGTCGTATGATGATCTTCACATTTATCATCATCAGCGTTCATATTACTCAACCTGTAATCAACCTCTGGCGTTTTTCTGTATCCATCACAACCATTTCCGGTAAAGGTAAAAAAGGGATTTGAACCTTTCCGGAGATGATAATGAAGGTAAATGCATGGACAATTTTGCTTATGTCGGCGCATCTGACGGCCTGTGCCGTCCCTGGCACAGAAAAATATCAGACCAGCATGGACAGCGTTACGGCAGAAAAAGTAAGCCGGATTATCCAGTCGGATGTCATTCCTTATAAAGGCGAAAACCATGGAGAAGTTATTAGCCGCGTATCGTCTGCTTTTCTCGGAACACCTTATCAGGCGGATACGCTCATCGGTGGGCCCGGAACCCCCGAAGTCCTTGTAGCGAATTTCAACGGCGTGGACTGCTTTACCCTGGCTGATTACGTTGAGGCCCTGGCCCGCAGCGATAATCAGAAATCGTTTCTGCATAATCT [...]
+CCGGCTGGCTTTGCCCGCCAGCAACCAAAGCGCGCGTTTATTGGCGCCGCGGAATTTTGCCCGTGCGACCATCTCCTGTCCGGTGTAGCAGCCTTTCTTGAAGCTGATGCCGCCCAGCGCCTGTAGGTTAGTCGCCTGGGGGATAAACTGACCGCTGTTCGCCGCGTCAATCACCGGAATGCCTGCTTCAATATCCAATGCCAGCCACTGTTGGCTGTTATTCAGTTCGGCTTCGCCATGCAACTTCTCTGTTAACATGTTGGCCGTCGCGACATCGGTGACAAGCAGGAATCGTTCCGCAGGATGTTCAAACCATAGCAGCGTGGAGGCGCCGTCTCTGACCACCTGATTTTCGCTATTGGGCAGTACGCTAAAGACATTAGCCAGCGCCGCGCGGGCCTGAAAACCTGCCACGCCAAGCAATACGCGTTCGTCATCCGGCGCGATGACCACTTTGGAAAATACGGCGTACTTTTTCAGCTCCGTTAATTG [...]
+NODE	168	43	8807	7109	0	0
+GCTTAAACCGGGACAACCGTCGCCCGGCCAACATAGCCTTCTC
+CTGGTTTTCCAGGCAAATCCGGAAAATCAAGGCTGAGGCGTGA
+NODE	169	14	5295	5252	0	0
+CGTCCCCCCTTCGC
+TTTAAGCGTGTAGG
+NODE	170	71	24365	19658	0	0
+ATTCCCGTACTTGGTGTTACTGCGAAGGGGGGACGGAGAAGGCTATGTTGGCCGGGCGACGGTTGTCCCGG
+AGTAACACCAAGTACGGGAATATTAACCCGTTTCCCATCGACTACGCCTTTCGGCCTCGCCTTAGGGGTCG
+NODE	171	9790	496977	492490	0	0
+GGAGCAGTACAAGCACGTCGATATGGCCCGTGAGTTGGGCGAACATAACGGCGCCGAAGGTTCTCTTGAAGCGGATTACCAGGCGGCGAGCGATCACCTGAATCTGGTGCAAACCGCGCTGCGCCAGCAGGAAAAAATTGAACGCTACGAAGCGGATCTTGAAGAGCTGCAGATTCGACTCGAAGAGCAAAATGAAGTGGTGGCGGAAGCCGCCGAAATGCAGGACGAAAATGAAGCGCGTGCCGAAGCCGCCGAGCTGGAAGTCGATGAACTCAAAAGCCAGCTTGCGGATTACCAGCAGGCGCTGGATGTACAGCAAACGCGCGCGATTCAGTATAACCAGGCGATATCAGCGCTTGCCCGCGCTAAAGAACTTTGCCATCTACCGGATCTAACGCCGGAAAGCGCCGCCGAATGGCTGGATACTTTCCAGGCAAAAGAGCAGGAAGCTACGGAAAAACTGCTGTCGTTGGAACAAAAAATGAGCGTGGC [...]
+TGGCAGCGGTGATCCCTGCCCTGCTGGCTGCTGCAACCGCAAACGCAGCAGAAATTTATAATAAAGATGGTAATAAGCTGGATCTGTACGGTAAAGCCGTGGGTCGTCACGTATGGACAACGACCGGCGATAGCAAAAATGCCGACCAGACTTATGCCCAGATTGGTTTTAAAGGGGAAACGCAGATTAACACCGATCTGACCGGTTTCGGTCAGTGGGAATACCGTACTAAAGCAGACCGCGCTGAAGGCGAACAGCAGAACTCGAATCTGGTCCGTCTGGCTTTCGCGGGTTTGAAATACGCGGAAGTGGGTTCAATCGATTATGGTCGTAACTACGGTATCGTTTACGATGTTGAATCCTATACCGATATGGCCCCCTACTTCTCCGGCGAAACCTGGGGCGGCGCCTATACCGATAACTACATGACCAGCCGTGCTGGCGGTTTGTTGACCTATCGTAACTCTGACTTCTTTGGTCTGGTGGACGGTC [...]
+NODE	172	6126	283064	280272	0	0
+TTTAATATTGCTGAATACCTTCACAAAAGGTATTGTTTTTATGTTAAAAAAGAAAAAGAAGAAGAAATTAAAATTCATTATAAAACATAAAGATAAATAAAAAATCATCATACATTGTTAGCCCACCCCACCTCTCCTTAACACAAACTCCGTTATATTTCAGACGCACTAACACCTTTATCAATAGATCTTAATTTGCAGAAAGATTTTTTTCTGACTATATCATCTAATACGAAAGCACTAGTCAGGCACAAAAAATAAAGGGTTATTCGGCGAGAAAACCAGACCTTCACCTACGCTCATAAAAAAGAATATGGCTACGGAAATTCATCTCTCATGATGAACGGGAAGGCTCGTCTACGCATTTTGCCCTGAACGTCGTGCCCGTTAATTAATACACAGAGCAAATCCATCAGGAGCTAATTTATGCGTCTACTCGCCGTGGTTTCGAAATTGACTGGCGTCTCCACCACTGTGGAATCCTCAGCGGTC [...]
+CGTTATCCAGAATGCGGATGGTGGCGCCTGCTTCTCCCGTTCCGTTGAGCGTCGGGCGTGAATCATTGGTGAGCGCGCTGTTATCCAGCGTACCGGTCATGCCGGGGACATCATCCGTTGCGCTGGTAATAACCGGTTGCGCCGGCGCGCTAAGATCGACAGTGATCCCGACCGGTGCGGACAGGCCGCCCTGGCCATTCGCATTGGTTGCCTGGACGGTGAAGTAATGTGTACTTTCGCTTAATGGCGTCGCGATCTCAAAGATCCAGTTCCCGCTGGCGTCAACGGTGGCAAAGCCTGCCGAATCGCCATCAATGAAAACTTCAACGGTAGAGCCGATATCCGTGGTGCCGCGCAGCGTCGGCGTGGTGTCGTCCGTGGCGCCGCCCGCCGCAATATTCCCCTGTACGCTCCCGACATCATCTTCAATCGCCGTGATGGCCGGGACGGCGGGCAGACCGCTGTCGGAAGCGGGAAAATTCGTAGCCGGGC [...]
+NODE	173	51	2504	2462	0	0
+ACCCCGAACGCGCCGCTGGAGAGCAACGCGCACATCTTTACCGCCGTAGCG
+TGAAGCGCCAGTTGCCGCTTTGATCTACCGTGGCGGAACCGATTTCTACGC
+NODE	174	12090	715220	703709	0	0
+GCGATCTGCTGGCACGAGGCGACAACGTGGCGGCCAACCGGTTACTGGAGGCGCATCTGCTGCCCTGGGGATTCCGCTATCTGGAATTGCTGCAACGCAATACCGTTAGCGCCTTCTATGCCCGGCTTGCCGTCGTAGCGACCTGTTATCTGCAGGATGTTCAGCAGCAACAGGGACTACAGCCTGAGAATAAACGGTTGTTTTTTTGAGGTATTGGTCGGGTTTTGATGGCGTGCCGTAATACTTGTGCCGCCATCGTGCCCGCTGTTGCGTCAGCGGGCACAGTTTACTATTACAGCTCCGGCGTCTTTTTGAAACCGGTCAGCATCAGCACCAGGCTCTGTTTTGAGTCCGCTGGCGTGAAGTCGTAGTGATTTCCCTGACGGTCGCCGCCGATATACCAGGATATTTCCGTTTTCCCTTCCGCCAGCGCTTTGCGCACCGCTTTATCGACATCAACCATGCGATACTCATGTGAATGGTCCAGATATA [...]
+TCAGGGAATCCACCTTCACCACATTCCCCTTCACCTGCACCTCATCCCCCGGCATAAACATCAGCAGTTTCTGAGCAGTGTCGTTGTCCACCGCAACTTTTTTACCGTTCGCATCCAGCAGGCTGCCGATGGCGTAGATATACGGCGTGGTGTTGACCAGCATCGTCCGCCCGTCCGGACGGACCTGCAGGCTGATGCCTTCCTCGGCGCCTTTACGGTCCTTCAGCAGCGCCTCCGGGCGGTAGAACAGCTTCAGCTTCGTGCGCAGGGCAATGGCAATTCCGCTGCCCTTCAGCGCCGGCGGAATATCCTGCAGGTTCAGCCAGTACACTGACTCTTTATCCTTCGGCAGGTGGTCAGAGGCCATGATGATACGCAGCGTCTGCTGCCCCTGCGGTTTCACCTTAAAGAAGGAGGGCGTCACCACAAACGTCGGGCGGGTGTCTTTCTCCACAATATTGTCCACCCACGCCTGGCCGCCGAAAGTACGCT [...]
+NODE	175	14575	769755	762974	0	0
+GGCTCGCGGGCGGGCTGGCGCGGTCAGCGCTTCCCGGTGTTGTATAATCACCTGCCGGATCGCAATGCGATCGTGTTCGCCACCAACGATCGACGCCCCGATTTCCTACGCGATCATCCTGCGGTTAACGCGCCGGTTATCGAGATGATGAGCCATCCGGATAATCCGTATGTGAAGTTGCTGGTCGTGTTTGGTCGAGATGATAAAGACCTGTTGCAGGCGGCAAAAGGTATCGCGCAAGGGAATATTCTCTTTCGTGGTTCCAGCGTGGTGGTTAACGATGTAAAACCGCTGCTGGCGCGCAAACCGTATGATGCGCCGAACTGGGTGCGTACCGATCGCCCGGTCACTTTTGGCGAGCTGAAAACCTATGAAGAGCAGCTCCAGTCGAGTGGGCTGGAGCCGGCGCCCATCAACGTTTCTTTGAATCTGCCGCCGGACCTCTATTTGCTGCGTAGCAACGGTATTGATATGGATCTCAACTACCGTTAT [...]
+CACGCCGGTTAAATCATATAAATCGCCCAGTGAATCGCCAGAGAATTTAAGCCGCAGATCGACGCCGCCCATTTTCATCGGCTCGTTCACCACGCCGCTAAAAGCCACCCGCGTATTGCCAGAGCGGAAATCGGCTTGCACAGGAAAAGGCGTACTTTCGCTGCGTAGCGCCAGCATACCGCCTATTTTGCCCGTACCGGTCAACGGTTCCCCGTTATAACGCCCCTGCGCCTTCAGGCCGAAGACATAGTCGCCCACGGTGGATTTGTCTGCTTTGCCTTTCGTTCCCGTCACTTCGCTGAACGGCAACGGTTTGCCTAACGGATCGACCAGAATAGTGATATCCGCTTTACTGACCTTATCATCGATCGCGATTCGCCCCTGGTCGAAGAGAATATTATCCAGCCGGAAGGACCAGGCGGAAGGTTTAGCATTGGGGTCCGTATTCTTGTCTTGCGCGAGGTTAAAGGTCCAGTTATTGGTTTTCTCAGA [...]
+NODE	176	9382	513245	506776	0	0
+AATAAGATAAGTTTCACAGGATTGCGTAATCAGCGTGAGCGAAAGCGTATTCAACGCTTTCAGGCGGCGGTTAGCGCGTACCCAGCGCGAAGATTCCATATTCAGATTACTTCGCATCCCCTCCAGCGCCGCCGTGCGTCGCACCAGATCGCCCCAGGCGTTGTCGACTTCTTCGCTGTCGCCATGCTTAATACAAAGTTGCATTAGCTGATATTGCGCTACCAGTAAACTGTCCAGTTCGCGATCAACCTCCTGCTTTATCGATCGCGGCGAGAAAAGCAGATCCGCTAAAATAGCGCAGCCAATGCCGATGACGATTTCGCTACAGCGCTCAAGCGCAAATTGCGGCGTGAGCAGCGGCTCCGTCTGAATGGTAATCACAATGATCAGCGCAGTATAACCTGACAGTCCCCACGCATAAGAGTTTTCGATCCTTACTAAAGAGGAGATCCAGGTACAAAAACCGGCCCAGACACAGCACACCAGAATCAT [...]
+AGCCGATCTTCGATCTTTATGACGTGGAAAATGAGATCCAGCGCGCGCTGGAGCGTAAGGTTGAACTCAAGTCCGGCGGTTATCTGATTATCGACCAAACCGAAGCGATGACGACGGTAGATATCAATACCGGTGCGTTTGTTGGACACCGTAATCTCGACGACACCATTTTTAATACCAATATTGAAGCGACTCAGGCCATTGCCCGCCAGCTACGCCTGCGTAATCTGGGCGGCATTATCATTATCGATTTTATCGACATGAATAATGAAGATCATCGCCGCCGGGTGCTGCATTCGCTGGAACAGGCGTTAAGTAAGGATCGCGTGAAAACCAGTATTAACGGTTTTTCGCCGCTGGGACTGGTGGAAATGACCCGTAAACGGACTCGTGAAAGCGTGGAACATGTGCTTTGTAACGAGTGTCCAACCTGTCATGGCCGCGGGACGGTAAAAACGGTGGAAACCGTCTGCTATGAGATCATGCGTGAAA [...]
+NODE	177	14619	783009	775199	0	0
+CGCTCCAGCATTACTGGAACGGGCGCTAATGTAGGGAAATATCCATTCTACGTCAATCAACTTTTTTCAAAAAAAAGCGCGTTTATACAAACTTCCACCAATCTGTGGCTTTAATAAGCGAAAACTGCTTTTTTTGCCCGCGCCGGGAAATTTGCTATGCTGCACATCCCGTTGAAAACGCTGATAACAGGCGCAATCACATTCCGCACAATACTGCTCAGGAGATAACATGGAGATAATTTTTTATCACCCGACATTTAACGCCGCCTGGTGGGTAAATGCGCTGGAGAAGGCTCTCCCACATGCGCGCGTTCGTGAATGGAAGGTCGGTGATAACAACCCCGCAGACTATGCGCTTGTATGGCAGCCCCCGGTTGAAATGCTGGCCGGAAGACGCTTAAAAGCCGTCTTTGCGCTGGGCGCGGGGGTGGATACAATTCTGAGTAAATTAAATGCGCATCCGGAAATGCTGGACGCCTCCATTCCTCTATT [...]
+GTCGCGTTTAAGCTCATCCAGCAGGTTTGGCGGCAGCTCTTCATAGGAACCGGGGAGATCGTAGGCAATCCAGACGCCCCACCCTGCCCGACGCATTAGCGCCGCCTCCACAAAGTCGTGGGAAAGAATCGATCCGGCGAACGAACCTTCTCCCGGCAGCGGCGCCAGAGCGCAGTGCTCGATAAACGGCTTCACGCGGATAATGGCATTGTGCCCCCAGTAGTGCGACTCCCCCAGCTGCCAGAAATGCAGCCCGGCGGTAAACAGCGGCCCATAAACACGGGTCGCGAACTGTTGGCAGCGGGCATACAGAGTATCCATTCCCGACGCTTTCGGCGAAGACTGGATAATCCCGGCGTTTGGATTCGCTTCCATCAGGCGCACCAGCCCGCTCAGACACTCGCCGCTCATCACTGAGTCCGCGTCCAGCACCACCATATAGCTGTACTGATTGCCCCAGCGGCGGCAAAAATCGTCAATATTGCCGCTTTT [...]
+NODE	178	581	32716	32527	0	0
+CAGCAAAAAATAGCTGCCAGCGAATGGCTTTCACTCTGAGCGCCTATAACGGCGGGCAAGGCTGGGTTAACAGAGATAAAAAGCTGGCCGCCGCAAAGGGGTTGGATGCGTCCATCTGGTTTGAACATGTAGAACGCGTTAACGCCGGGCGCAGCGCCGCAAACTGGCGCGAGAATCGTCACTATCCCAAAGCGATTTTATACCAACATGCTCCCCGTTATTTGCAATGGGGGCAGGCTAGCTGCATTCATTAATCAGAGGGAGTAATGAAACTCAGTATCGATTTTTGGGAAGTCATCTCCCTCTTACTTTCGTTTGTTGGATTAATGTTTGCTGCCGGTAAATTGCTGCTGGCGCAAATTGAAAAACGGCTGAATGAACGTTTTGAAGCACTGGAAGCTGCCCGACGCGAATCAGAAATAGGTTGGTCCAGGCTGGAGAGAGAATTTCTGGAGTTCCGCGCCGATCTGCCGCTGCATTATGTCCGCAGAG [...]
+GTTTTGCTTCCAGAACGGCCTGGCCGCGCAGATAGTCGTCTCTGCGGACATAATGCAGCGGCAGATCGGCGCGGAACTCCAGAAATTCTCTCTCCAGCCTGGACCAACCTATTTCTGATTCGCGTCGGGCAGCTTCCAGTGCTTCAAAACGTTCATTCAGCCGTTTTTCAATTTGCGCCAGCAGCAATTTACCGGCAGCAAACATTAATCCAACAAACGAAAGTAAGAGGGAGATGACTTCCCAAAAATCGATACTGAGTTTCATTACTCCCTCTGATTAATGAATGCAGCTAGCCTGCCCCCATTGCAAATAACGGGGAGCATGTTGGTATAAAATCGCTTTGGGATAGTGACGATTCTCGCGCCAGTTTGCGGCGCTGCGCCCGGCGTTAACGCGTTCTACATGTTCAAACCAGATGGACGCATCCAACCCCTTTGCGGCGGCCAGCTTTTTATCTCTGTTAACCCAGCCTTGCCCGCCGTTATAGGCGC [...]
+NODE	179	2324	140188	139285	0	0
+AGAGCGTTGCGCTGACGCCGTGAAAGAATACGGTATCAAGAATCTGGAAGTTATGGTTAAAGGTCCGGGTCCAGGCCGCGAATCTACTATTCGTGCTCTGAACGCCGCTGGTTTCCGCATCACTAATATTACTGATGTGACTCCGATCCCTCATAACGGTTGTCGTCCGCCGAAAAAACGTCGCGTATAACGCTTCGTTTTCCAGGTTAGTTGGAGAAAGAAAATGGCAAGATATTTGGGTCCTAAGCTCAAGCTGAGCCGTCGTGAGGGCACCGACTTATTCCTTAAGTCTGGCGTTCGCGCGATCGATACCAAGTGTAAAATTGAACAAGCTCCTGGCCAGCACGGTGCGCGTAAGCCGCGTCTGTCTGACTATGGTGTGCAGTTGCGTGAAAAGCAAAAAGTTCGCCGCATTTACGGTGTGCTGGAGCGTCAGTTCCGTAACTACTACAAAGAAGCAGCACGTCTGAAAGGCAACACCGGTGAAAACCT [...]
+AGCAGCTTCTGTTTTCTCTGAACGATCAACCAGCTCGATGTATGCCATCGGCGCGTTGTCGCCTGCACGGAAGCCACACTTCAGAATGCGAGTGTAACCACCGGCGCGGCTCGCGAAACGCGGGCCCAGCTCGTTAAACAGTTTTGCCACGATCTCGTTATCACGAGTACGGGCGAATGCCAGACGACGATTAGCAACGCTATCAGTCTTGGCAAGAGTAATCAGCGGCTCAACTACGCGACGCAGCTCTTTCGCTTTAGGCAGGGTCGTCTTGATGATTTCATGACGAACCAGTGAACCTGCCATGTTGCGGAACATAGCCTGGCGATGGCTGCTGTTGCGGTTCAGTTGACGACCACTCTTACGATGGCGCATGACCTTATCCTTCTCAGTAAAACCTTAACCTGTGATCCGGTTACTCGTCAGCGATGCTTGCCGGTGGCCAGTTTTCCAGGCGCATACCCAGAGACAGTCCACGGGAAGCCAGCACGT [...]
+NODE	180	3351	158220	152620	0	0
+ACGCGGGTCGTCGCCGGGTATCGCGCTGTCAGCCACCGGATGAGCGGCTTGTTTAGCGCGCGCTTGCGCTTTACGCGCTTCACGGGCCGCGATGACGGCGCTATTGTCTGGCAGACTACCCGCCTGAATAACCACCGGTTGCGTGGCCTGCGCCTGTTTCTCTTTTACCCGCGCCAGCGCAGCGGCAATGGCATCCTGATCTTTTGCCGCTGGTTGTACCGCTGCGCTCTTGTGACGTGCAAGGCGGGCGGCTTTTTCGCGCTCCAGTCTTGCCTGACGAGCCTCAAAACGTGCTTTGGCTTCGGCGGCGCGTTTTTCTTCAAGCCTGATCGCAGTAATCTCCGCTTTTTCCTGACGGAAATATTGGACGAGCGGAATATTACTCGGGCAGACCCAGGCGCAGGCGCCGCATTCTATACAATCAGCAATATGGTGAGCGGTAGCCTTGTCATGCTGCTGCCCTTTGCTGAACCAATAAAGCTGCTGCGGTAA [...]
+TGGCTTCTTGGCCCGTTAGCCTGGCTGTTAGTCGCGTTGTTGAGCGCCTCGCTGGCGTTATTACTCTACGTTATGGCGCTTGCCACACCGCAAACGTTCAAGACGCTTAGCGGACAGGAAACCGGTAATTTACTGCTATGGGGCATTTCATTTATTACCGCTATCGCCATGTGGTACTATACCCTGTGGTTGACGATCGCATTCTTCAAGCGCAGACGCTGCGTGCCGAAGCATTACATTATCTGGCTGCTGGTGTCGGTGTTACTGGCGGTTAAAGCATTTGCCTTTTCGCCCGTCTCAGATGCCTTTGCCGTGCGTCAGTTACTCTTCCCACTGTTGGCGACGGCGCTCATTGTGCCTTATCTCAAACGTTCAGCGCGCGTTAAAACAACGTTTGTTAATCCGTAATAACCCTACAGTTAACCTGTTGTCGCCTGTGGTAGTTTGACAGATAATAGGCGGCTTTTTTATTTCAGGCCGAAACATGACTGA [...]
+NODE	181	5945	287637	285918	0	0
+CAGTTGTTCATTGAGCCGGTCTGGACTTCTTCTGCAAATTGACCTCTGACTTTATCACTTCACCGCAGAGGTAACTTCCTGATGAAAACATCCCTTCTTCTTTCCGTGCTGTCCGCCTGCGTACTTCTGACTGGCTGTCAGGGGCAGCAAAAACTGCTGCAGCGGGATGCGGCTGTTCCGGTACCGTCGGTGACGGTCAGCAATAATGTCCGTCCGGCCAGCCCTGATATGTACGCGGGGACGACCGTGCCCGAGGTGGTGCGTTATGACCGCTATCTGCTGGTTAACACTCATCCGGATGCGGTACAGCGGGATCCCCTTTCCCAGATGATTGACATCCGTATTCCGGCATCCCTGAAGCCGACGGTGGCAGATGCGATGCGTTATGCCCTGAAACAGTCGGGCTACACGCTCTGTGCCACCGGACCGGCCAACGGGGTGCTTTATCGTCAGGCGTTGCCGGCAGTGCAGTATCAGACGGGGCCGCTCAGG [...]
+TGCGCAGTCCATCCAGAATCGGATCGTATATTTTTTTACCTTCCTCACTGCTCAGTGCCATTTCAATCGACCAGATCCGCACCGCATCCGGCTGGTTCTGCATGGTCCTGGGCACATCGTCCTCGCTGAGAACACTCTGGTTATTCGCGATAATCTGCTCCAGTCCGGGCAGACGCTCACGGATCACCTTCCCCGCATAGCGAATGTAGAGGTCCGCGATGTTGTTCACATACCGCATAATCAGCATATAGTCCGGACGCTCACCGAGGGCCACCAGGGCGCGGGCAATGATATTGACAAAGCGCCAGGCAAACTCCCGGAAAGCCGCCGAATTACCTTCACCGGACAACTGACCGGCAACACGGGAAGCCACTTCCGATACACGACCAAAGCGTCCCACCGCATTGTAACGGGCTGAAATTTCAGGCCAGCCAAGATGAAAGATATACAACTCATCCCCCCGCCCGGCCCGGTGCGCTTCAGCCCAGACCC [...]
+NODE	182	859	42009	41861	0	0
+GAACTAAAAGGCGAGGTTCCGCTGATTGGCTTTTCCGGCAGTCCGTGGACGCTGGCGACTTACATGGTGGAAGGCGGCAGTAGCAAAGCCTTCACGGTGATTAAAAAGATGATGTACGCCGACCCGCAGGCGTTGCATCTGCTGCTGGATAAGTTGGCGAAAAGCGTCACGCTGTACCTCAACGCGCAAATCAAAGCGGGCGCGCAGTCGGTGATGATTTTCGACACCTGGGGCGGCGTGCTGACTGGCCGCGATTACCAGCAGTTCTCCCTCTACTACATGCATAAAATCGTCGATGGCCTGCTGCGTGAAAACGACGGTCGCCGCGTGCCGGTAACGCTGTTCACTAAAGGTGGCGGTCAGTGGCTGGAGGCGATGGCGGAAACCGGCTGCGACGCGCTGGGTCTCGACTGGACGACAGATATCGCCGATGCGCGCCGTCGCGTTGGCCATAAAGTGGCGCTGCAGGGCAATATGGACCCCTCGATGCTG [...]
+GTCACCTCGCCGCCCTGCTCAAAACCGACGTCCGCCCCGCCGATAAACGCTGGCGGATCTTTGTCCAGGCGATCTTCGCGGCAAACCGATGAAGCAAGTTCTATCTGTTGAGCGCGTAGCGACGCGAGATCCATACTAACTCCTTAGCTGTGATACTGCGCAGAAAGTCGGTGCACTGCCTCCACAAATGCGCCAGCATGTTCTGGCGGCACATCCTGATGGATGCCATGTCCAAGGTTAAAGACGTGCCCTTCTCCCTGACCGAAACCAGCAAGTATAGTCGCTACTTCGTCTTCGATCCGTGCCGGCGGCGCATACAGCATCGAGGGGTCCATATTGCCCTGCAGCGCCACTTTATGGCCAACGCGACGGCGCGCATCGGCGATATCTGTCGTCCAGTCGAGACCCAGCGCGTCGCAGCCGGTTTCCGCCATCGCCTCCAGCCACTGACCGCCACCTTTAGTGAACAGCGTTACCGGCACGCGGCGACCG [...]
+NODE	183	16175	855099	844727	0	0
+CGTTAGAAATCTCTTTTTTGCGCTTCCACATCACATTGGTGACAAATCCGCCTTCGCCAAAAATCTCATCCATCATTAATTTAAGATTGGCGTACTCATTATCGTCGATAGAGATAAAAATAAATCCGGTATCTTTCAGGAGCTTCCTGGCCAGGAAAAGACGCGGATACATGAAAGATAACCACGCGGAGTGCGTCGATTTACCCTGAATGGATTTTAAACGTGCCAGTTCGGTATCATTAAGACCAAACATATCCTGCAACGCCCGATCGCTATATTCAAAATGATCGGGATAGACAAACCCGTCCGATCCGGTGTTATAAGGGGGATCGATATAGATCATATCGACGGTATCGGCGTAATTATTTTGCAGATGGCGTAAAACATCCAGATTATCTCCGGTCAGAAAAAGATTATGGCTGTTTTTATTTTCTGCCAGAGTATTGTGTTCCGCGTCAGGAACGATAACGGTAACGGATTTTTCACCCGCCT [...]
+TTTTTAATGTTAAACACGGTAGTTGCGGCGGCGTGGAGGCGCTAATGCGCTGGCCGCAACCGGATGGCCGTTTTATAACCCCGGATATTTTTATTACCGCCGCAGAAAATGAAGGCATGATTATTCCTCTCTCTCGTCATCTGTTCGAACTGATTGCTCATGACGCGATAAACTGGACTGTACCGGATGATTTCTATATCAGCGTAAATATATCGCCTGCGCATCTTATGGATGACGGTTTTATACAAGATATAGAGGCGCTCAGGACTCGTTTGGGAACGATAACGCTTATGTTGGAGCTCACCGAGCGTAGCCTGATTGTAGAACCTTCACAGGTCGCAGAAAAACTTTCAACGCTCCGTGAAAAAGGCGTGTTAATAGCGATTGATGATTTTGGGACCGGCTATTGCTCACTCTCCTATCTCCAGCAATTACCTGTAGACTCTCTTAAAATAGACAGAACGTTTATCGATACCATTGATACCAGCAGCG [...]
+NODE	184	2383	127617	126403	0	0
+GCGCACAAAGGTATCGCGTGACGGCGCGGTCAATGCAGCTTTATCACTGGCAACCTCATTGAGTTGCAGCGTCAGGTTTTTCTCTTTTTCCGCCAGTTCGTTTTTCAGAATATCCTGGTAAGCGTTCACTAATGTTTTCAGAGCGCCTACGTTGTCTGCGGCAACGGCGAGGGTAGCGAACGCTTCGCGCGGAATCGCGTTACGCAGCGTGCCGCCGTTGAAATCGATCAGACGCAGATCCAGTTCTTCTGCGTGCCCGGCCAGAAAACGCGCCAGCAATTTGTTGGCATTGCCAAGGCCTAGGTGAATTTCACCACCGGAGTGGCCGCCTTTCAGGCCTTTCAGGGTTAGCTTAAAGCATGCAAATCCTGCGGGTACAGCTTCACGGGTCAACGGCAGATTAGAGGTAAAATCGATGCCGCCTGCGCAGCCCATATAGATCTCACCTTCTTCTTCAGAGTCGGTGTTGATCAGGATGTCGGCCTGCAACCA [...]
+TCCCCTTTCGGCATATGTAAAAACGCGGTGACAGGCGAACCGCCAGGAACGGCAAATTCCATTTCACGTAACGAGCCGGGCAACCGCTGCGCGGCCTCTTCATAGGCGCGATTCGCCAGCGCCTGCGCCTGCTCCGCCAGCTCATCGCCCTTCAAATGCGGGTAGGCGGCAATGTTATAGAGCGTTGAGGCATGAAGCCAGTAGCGTCCGCTGCGCATGGCGTCCTGTTCCTGACAGGCTTTCTGCTGCCAGTCCATCGCCTGCTTTGCCCACTCATAAATCCAGTTGCCGCCGCGGTAACCGATGACCGTATCGTATAAATCATCATCCGTTCGCTCTGCGTCGCTCATCACAATGCGCGCCTGCACATCAAGGATTTCTCGTGGGTCAACGCCGCGCCAAATCCACATCAGGCGGTTTATCATGCGATACCAGTGCGGAACGTTCTTACCGTCCAGCGCGGATTGCATGGGCGGCTGCGACCCACGATTG [...]
+NODE	185	6260	322623	315130	0	0
+ACATACAGCGCCAGATCGTAATCATTGCGGTTGCGTGACCATATCGGAAAGCGCAGATCGTAACAGATCAGCGGCAGAATGCGCCAACCGCGCCACTGCACGATGATGCGTTTATCGCCTGCGGCATAATGTTGATGTTCATCCGCCATACGAAAGAGATGGCGCTTATCATAGAGATGAACCTTGCCTTCCGGTTCAACCAGTAAGAAGCGATTTACGGCGCCGCGCTCAGTTTGTAGCGCCGCGCTGCCGGCAATCAGAGCGTCAGTTTGTCGGGCTTTGGCCTGCATCCACGTAATCACGCTATCTTGCGAAAGTGAGTTATTAGCGGCCTCCATCGCGAAGCCGGTGGTAAACATTTCAGGCAGAACAATCACATCCCGGCCAGATACGAGCTCTAGCTGTCTGTCAAAATGACGCAGGTTTGCCGGGCCGTCCATCCAGACTAAAGGTTGTTGCAACAGAGTAATTTTCAAACCAGACACGATCGGA [...]
+GGCGGTGAGTTGCAGTTCATTGAAAATAGTCTGACGAATCTCCCTGGCGATCAGCGTCGCCGATCCATAACAGTGCGGGCTGTCAGTCACATCCAGCCAGGCTTCATCCAGCGAGAGCGGTTCAATCAGTGAAGTGTAGCGGGAAAAGATGTCACGTACATGCCGCGAAGCCTCTTTATAGGCGACAAAGCGGCCAGGCAATAGGGTGAGGTGGGGGCACAGCTTTAGCGCCATGGCGGTCGGCATCGCGCTACGTACGCCAAACTGGCGCGCAGGATAGTTGGCGGTACTGATAACGCCTCTTCGCTCACGACTCCCGCCAATGGCAATGGGAATATCGCGTAACGCCGGATTATCACGCATCTCTACCGCGGCAAAAAAACAGTCCATATCAACATGTATGATTTTGCGCATCGCTCGCCCCCACAATACTGTTTAAGTGTACAGTATGTTTTATTGCGCGCAAAGAGACATTCGCGTTAAAAATGCGAC [...]
+NODE	186	1651	104291	103943	0	0
+ATAACTTCAGCCGGGTGGTGCAGTTTAAAATAAACCTAAACACGATGACCGTAACGCGTCCGTATGAATATGGTAAAACGGAAGTCGGGAACCGGGGCTATAGCAGTTTTGTGAGCGCTAAGCATTTATTGACTAATGGTCACCTGGTTATTCACTTCGGCGCGACGACGGTTGATGAGTTTGAACATACCATTACCGCGCAACCAGGTTCCAGCGATCTTGTCGATCCGGATGAAGGGCAACAGGCGTTAGGCCGACTGGTATTACAAGAAATCAATAAAGAGACGAAAGAGGTTTTATTCGAAGCGATGGTGACGTCGGGCTATTTCAAGAACGAAGAGACGAATGGCACGAATTATCGTTATGATATTTCTGCATTTCGGGTATACAAAATGCCGCTGTTTGCATAACTAAGTATGTTATGCGGCCGGTTATCGACCGCATAACATTATGGCTTATTTGCTAATATCATCCACGCGCATGGTGTGGTCA [...]
+GTTTTTTACAGCGGCACAGATACGCCATTAATTAAAGAACCGTATACCATCGTGGAAAAAGATGGATTCAAGATCGGCGTCATCGGTATGCACGGCGTTTCCGCATTCTATGAAGCGATTGCCGCAGGCGTGCGTGAAGGCGTTGACTGCCGCGATCCGATTCCTTATGTGAAAAAACAGCTGGAAGAGTTAAAAGGGAAAGTTGACCTGACCGTGCTGCTCGCCCACGAAGGCGTGCCGGGTATGCAGTCCAGCGCGGGCGAGGCTGATGTCGCACGCGCACTGAAAACCGACGTTGATATGGCGAAATCGCTGGAAGGCTATGGACTTAACGTCCTGATTACCGGCCATGCGCATAAAGGTACGCCAGAACCGATTAAAGTGGGCGATACTCTTGTCGTTTCCACGGATGCGTACACCATCGAATTAGGTAAACTGGTGCTTGACTGGAACCCGGAAACCAAAAAAGTGGACAGCTACAATGGTAAGTTG [...]
+NODE	187	51	4115	4115	0	0
+AATCTGGTTAAACAGCTCAGCAAATTGCAATTCCCGGTATTGTTGGATAAT
+TCTCATGGCCATGGTCAAATTCATGGTTACCGACAGAGACGGCGTCGTAAG
+NODE	188	9159	422596	419587	0	0
+TCATGGCGCTCTCGCAGTCGCTGGGCGACTTTGTGGTCGCCAGCGCCGGGCCGCATCTGGAATCAGTCATTGCCGGTCACGGCGCCGGAGCGCAAAGCTTGTCTGAGCAGCGGATGTGCCGGGTGCTGAATATTGATATCGGCGGCGGCACGTCTAACTACGCGCTGTTTGACGCGGGAAAAGTCAGCGGCACCGCCTGCCTTAACGTCGGTGGTCGCCTGCTGGAAACCGACGCTCAGGGGCGCGTGGTTTATGCCCACCAGCCGGGGCAGATGATTATCGATGAGGTGTTCGGTTCGGGTACTGATGCTCGCGCCTTAGCTGCCGCACAGTTGGGGCAGGTGGCGCGGCGGATGGCGGATCTCATCGTCGAGGTTATCACTGGCGCGCTCTCGCCGCTGGCGCAATCGCTGATGCAAACCGGGCTACTGCCCGCCGATATTACGCCGGAGGTGATTACCCTTTCCGGTGGGGTAGGTGAATGCTACCGCA [...]
+CGCCACACACCAGGAACCGCTTCACGCCGCCCGCTGAGTAAAAATGCCACTACCGCCGGAACGCCGGGCAACAGCCCCAGCCAAAAATTGTCATGGTCGGGATAAAAAAAGTTTAACAAAGTATTACCCTGTCCACGGGATGAACCGGCAATGACAAAGAGTACCCAGGCGCGCGCCTGAAGTAGCAGTACGCACCAGAACAGAAACGGCAGGCGTAAACGTCCGTGTACATCATAATCGGCTGGATGAAACTCAGTACTCTTCATCTTCAATCAGGCGTTTACCCAAACTTAGGGCGTCAGAATGCTCATACCCCAGACGTTCATACATGCCCAGCACAACGTCGTTATCATCGCGCACCATAATTTGGATTTTCGGACACCCGCGGGCGATGAGTTTTTTTTCCAGCCGGTTAAGCAACGCATTCGCAATGCCGCGCCCGCGGAACTCCGGGTGAACGCCCAGGTAATACGCCGAGCCGCGATGCCCGTC [...]
+NODE	189	7819	370778	366914	0	0
+TCGTAAGTTCGACAAAGCGCAGCAGGAAGGCGGTAAAGCGGCGTTGGTGCTGGGGCTGTGCTTTATCACTGAAGGCGCTATTCCGTTTGCGGCACGCGACCCGATGCGTGTACTGCCGTGCTGTATCGTTGGCGGCGCGTTGACCGGGGCTATTTCTATGGCGGTAGGCGCAAAATTGATGGCGCCGCATGGCGGTCTGTTTGTTCTGCTTATCCCAGGCGCAATTACGCCGGTATTGGGATACCTGCTGGCAATTGTGGCCGGTACGCTGGTGGCAGGGCTGGCTTATGCCGTCCTGAAACGTCCGGAGACGGAAGTCGCGGCAAAAGCGGCATAAGAGAAACACGCTAAAAAAGGCAGAGCGCGCTCTGCCTTTTTTATTACCTGAAGAACATTGAGCGTCAGGCCACCGCTTCGGCAATTTGCTGGGCTTTTAACCACGCAATCTCTTCCGCCCAGATATCAGGATTGATGGTCTCCAGTATCAGCGGA [...]
+GCTGGATGACCGGGTTAATCTTCGCGTTAGCGCTGTGCATATGCATCGTGCTGGTGCCGCTGGTTCAGGATACCTCTTACACCCTCACCGCGATTCTGTTCACCATCATGGGCTTCGCCTTATACGGACCGCATATGCTTTTTGCCGTCGGCTGTCTGGATGTGACCCATAAGGATGCGGCGGGATCGATTACCGGCTTTCGGGGATTGTTCAGCTATGTCGGCGCGGCAATGGCCGGTGTGCCGGTAATTATGGTGAAAAATAGCTGGGCGTGGTCGGGCGTTTATATCTATGCGTTAATCGCCATTCTGCTAACGACTCTGTCGCTGGCGCTGCTCTCCAGGCTGCATCGGTTATAACATTCTGGCGACAGCGGCAAAACGCGGCTGTCGCCAGTCTCTGTCAGAAACGGTAATCCACCGCCATAAAGTAACGACGTCCGTCTTCGGTATAACCGTAGTCGTCGCGTTTGAGATCTTTATCGCCCACGTT [...]
+NODE	190	1894	110479	109992	0	0
+CGATTACTGCCGGATTAACGCAGCGCATCAAAAAACCTGAGCCAGTCAGATACGGACAAACAGGGAGCAATAGCCCTAATCATCCATCTTGCCGTTGCGGTATTCGGTAAAGTACATCAAAAATAGAGGTGTCAGGGAAACGAGAAATGCAAAAATGTAGTCTTATTACGGTATTTAGCTTATCAGTGTTGATGCTAGCCGGATGTACAACGACCTATACCATGACGACCCGGACGGGAGAGATTATTGAAACGCAGGGTAAGCCGGAGGTTGACACCGCAACCGGAATGACGAAATACGCTGATGTTTATGGTTATCATCGCGTTATTAAAACCAGTGAAATAGTGCAGACGACAGAAGGCGCATCGAAGCTGGACTGGTAATGCGCTAAAGCAGTTGGGAGGCCGTGTCCAGTATGGGTACCGGACTGTTTCTGGGCCAGAATTGAATAGAGCGCCTGTATAGCCGAATTCCGGGTATCGGCTTGATTTG [...]
+AGTATGCTGGCCGGGCGGCTTGCGGGGCCTTCATGCTCCCACATTTACAATGTTGGTATGATTACATTCTCTCTATACTTTACTGTGCTAACCTTTTATCTCGTTGAGATAACGTTTAATTAAAATGCTCTCTTTTTGATGTACATTATAAGAGGAGACATTATTCATATTTTCGAAATCAGGGCAGACGATATGTATACAACCATCAGAAACACAACGCTAGCAATGGTAGCTTGTTTTTCGTATATCGCACATGCCAGTACCCACCCTCCTCTTATTATCACCAGGGGAGCCGGAGGAGACGCCTCCGGAGCCGCAGTCATTCATGATAATTGGCGGCATGGCACTCCTGACCTGGTCAATCTTACCGATATCCCCATAGATAAAATCAGACCAGAAAAATACCGTTGCGTACTGATTATTGGGCAAGGAGCTATAAAAGAGATGCTTCTTGCGAACAATGCCTCAGCAATACTTTCCGGAAAAACGGTT [...]
+NODE	191	1154	56166	55887	0	0
+ATCTGGGGACTGTGCCAGTTGAGATTGTCGGCAAGCTGCGCGATAGCGGGGTCTATTCTTATAAAGTGCTGTGGTTTGAAAATGACCTTGAGAAAAACTTCCGCGCTCCAGGCGCATATCCGCAACAATCGATGGCTGTCGCCTCGACGCACGATCTCCCCACGCTGCGCGGCTATTGGGAATGCGGTGACCTGACGTTGGGTAAAGCTCTGGGGCTTTATCCGGATGAAGTGATTCTGCGCGGGCTGTATGAGGATCGCGAGCGGGCGAAACAGGGGCTGTTGGACGCGCTGCATAAATATGGCTGTCTGCCAAAACGCGCCGGGCATAAGGCATCGTTAATGTCGATGACGCCAACGCTAAATCGCGGACTTCAGCGCTATATCGCCGACAGTAACAGCGGTCTGTTGGGGCTTCAGCCGGAGGACTGGCTGGATATGGCCGATCCGGTTAACGTACCGGGCACCAGCGATCAGTATAAAAACTGGCGAC [...]
+GGCGCATTCAAGCAGGTGCTGGTCGATAGCGGCGTGGATAAATACATCGCTTCAATGATGCATGAAACCAATGTCTCTCCGCTGTTGATGGCGTGGTCTATCGCGGCGGTTCTGCGTATCGCGCTGGGCTCTGCGACTGTCGCGGCGATTACCGCAGGCGGCATTGCGGCGCCGCTGATCGCCACTACCGGCGTTAGCCCTGAACTGATGGTTATCGCAGTCGGTTCCGGGAGCGTGATTTTCTCTCATGTCAACGACCCGGGCTTCTGGCTGTTCAAAGAGTATTTCAATTTGACTATCGGCGAGACCATTAAATCCTGGTCGATGCTGGAAACGATCATCTCCGTCTGCGGCCTGATCGGCTGTCTGCTACTGGGTATGGTGGTTTAAGCGAGGCGGCTTGTAGGCCGGATAAGGCAGCAATGTGCGCCAGGATTGCCTGATGGCGCTGCGCTTATCAGGCCTACGTGCTCTCTCCATAACAAAGCCGGG [...]
+NODE	192	948	48058	47544	0	0
+CGGTGGGCGCAGTCTGGGACGAACTGGGGCGGATACTGGCGCGTAAACGCCGTATTCCCGGTATCTCATTTATTCGCGATTACGCGGATGACGGCGCTTATATCGATGCACTGGCGAAAAGCGCGCGTGAGTCGTTCGCCAGACACGGCGAGCCGGATGTGCTTCTGCTCTCTTATCACGGCATTCCACAACGTTATGCGGATGAAGGCGATGACTACCCGCAGCGCTGTCGCGATACCACGCGTGAACTGGTTTCCGCATTGGGACTGCCGCCGGAAAAGGTAATGATGACGTTCCAGTCGCGCTTTGGCCGTGAACCGTGGCTGACGCCGTACACCGATGAAACGCTAAAAATGTTGGGTGAAAAGGGGACTGGCCATATTCAGGTCATGTGTCCGGGATTTGCCGCGGATTGTCTGGAGACGCTGGAAGAGATAGCGGAACAGAACCGCGAGATTTTCCTTGAAGCGGGCGGTAAAAAGTATGCGTACA [...]
+GGCGCGTGGGACGGCCTGACGCGTGAAGATCTGGACATGTACGAAAAGGCCTATCTGCGTAACGAAGAAGATCGGGAATCGCCCTGGTATTGTCTGTTTAATAACGATCTCACGCGCGATGTGCCGCCCTGCTTTATTGCCAGCGCGGAGTTTGATCCGCTCATTGATGACAGCCGCTTGCTGCACCAGACATTACAGGCGCACCAGCAGCCCTGCGAATACAAAATGTATCCCGGCACGCTGCACGCCTTTCTGCACTATTCGCGAATGATGACAATCGCCGACGATGCCTTGCAGGACGGCGCGCGATTCTTTATGGCGAGGATGAAGACGCCGCGTTAACGGTACGGCGCCGTGAGTTTCAGCATCATATCAATATGTTCCGGCGTCGCGTTCAGCGCCGGAATGTACGCATACTTTTTACCGCCCGCTTCAAGGAAAATCTCGCGGTTCTGTTCCGCTATCTCTTCCAGCGTCTCCAGACAATCCGCG [...]
+NODE	193	2112	105153	104738	0	0
+AAATGCTGACCGGACGAAAACCATTATCCATAACGAAATTACAAAAGTGCATATTGATCGCACGGAAGATGTTTTTGGTAAACACACTGAAACCATTAAGGGCGATCGGGATATTACGGTCACGGAAGGCAAGCAGTCGCTGACGGTGAAGACGGGCAACCGGACGGTCACAGTGGCAACGGGCACCAGTACCGAAACAGTACATGGGGATATTTCCATTACCTCCACCACCGGAGCCATTCACCTGACAGCAAACACGCAGATTACATTGACGGTGGGACAAAGTACGCTTGTCATGAATGCCAACGGCACCATAAAGCTGGATGGCCCCACCCATCTGGCGCTTAACCCGGAATCAAAATAACAGGGCATATTTCCATGCAATACCTTATTAATGAAGGACATTTTTCCCTGCCCGGAAACTGGCAGGATAACACGATGAACATCCTGACACCGGTGCTGAGCGACATTGCAGGCGCAAACCTGGTGGTC [...]
+GGTTACCCGTCAGGCGGTAGTGCGGCACCAGCAGGTTGCGGCAGTTGTATGGCTCCTGCACCGTGGCATAGGCCGGACATAAACCCTCAACATCAAAATAGGTGACATTCTGCCCGTCGCTGTCAAATTCCAGGTACTGCGACCAGTTACACAGCCAGCGAGTGCCCAGAAAGCCGCTCACGGTGTGGCGGCCAGTGTAGGCGCGTTTCAGCGTTAACGGCAGGATATGGGGCCAGTGGAAATCAGTACGGTAGTCGAGGTATTCGCCGGTTCCCGCGTCCACCGGGTCGCTGAATCCCTGGCTGATACGCTCATTGGCTGCCCGGTTTAACTGTTTTGCGCCCCACAGAGCTGTCAGAACCTCTAAACCGGACACGATAGATTGTTCTGTAACAGACATATCCGCATTAATCGGCCCGTACTGCCCGGTAGTCTTATCCGCCGTGATGGTTTTACACCCGTCCTGAATCACTGCCGAACAGGTGATTTTAT [...]
+NODE	194	6047	301208	299059	0	0
+GCGGGGGGCAAAATCGGTACGCCGTTTAGCGACCTTTACAGCAAAGCTTTTGGTCACTGCGAGCCGGTTTCCAGCGATAGCCATACCAGCGTCGAATGTAAAGCCGAGGGAAGTCAGCATATTAGCTATGTTTTCTCCGGCGAGTGGAGCGGACCGGAAGGCTTAATGCCTCCTGATGACGTCTTAAAAAACTGGGACGTGCGCAAAATTATCTGGCGTCGTTAATTTGCGCCTGAACAAACCGCTTCGCTTAAAAACAAGGTAAAATAGCCTCCATTAATGCCACGACTGCGTGGCATTCTCATTTTCAGGAGGAATCATGTCTCAGGTTCAAAGTGGCATTTTGCCGGAACATTGCCGTGCGGCAATTTGGATTGAAGCCAATGTGAAAGGCGACCTGGACGCCCTGCGCGCGGCCAGCAGAACATTTGCCGATAAACTGGCGACCTTCGAAGTCAAATTTCCGGACGCCCATCTTGGGGCCGTTGTGGC [...]
+GGTAGCGGAGAATCCAGGCTGGTGCGGCGGCTAATATCCACCTCCCACGGACGCAGGAACAGATCGACCGGCCCCTGGTACGCGGGCGTATAACCCAGCGGCCAGCGATGCGCGCCAACGTGAAACTGCCCGCCGCGGACGGTGCCTGTCAGGCGGTTCACCTCGCCCATAAACTCCAGTACGAAGCGGGTTGCCGGTTCACGCCACACCCGATCCGGCGCATCAGCCTGTTCGATATTGCCCTGACTCATTACCACCACCCGATCCGCCACTTCCGTCGCTTCTTCCTGATCGTGGGTGACAAAGACGCTGGTGAATTTCAGTTCTTCATGTAGCTGGCGCAGCCAGCGACGCAGCTCTTTACGTACCTGGGCATCCAGCGCGCCAAAGGGTTCATCCAGCAGTAGAATTTGCGGTTCCACGGCAAGCGCGCGCGCCAGCGCCACGCGCTGTTTTTGTCCGCCGGAAAGCTGGGCGGGGAAGCGATCCGCG [...]
+NODE	195	174	8681	8500	0	0
+ATCATTACGCCAAATACCACAAAATCATTCAGGGACTGCACCTGAGTCTTCTCTTCGGGGCGATGATAATCAATGATCTTCGCTGAAGCGCCGGTAAAGCCAAAATTCCAGCCAACTCCCAGTAATATCAAAGAGAGCCAGTAGTGGAAGATATCTGTTCCGCTGAGCCCGGCA
+TACTGGGAGTTGGCTGGAATTTTGGCTTTACCGGCGCTTCAGCGAAGATCATTGATTATCATCGCCCCGAAGAGAAGACTCAGGTGCAGTCCCTGAATGATTTTGTGGTATTTGGCGTAATGATTGTCGGGTCGTTTTCATCCGGTGCGTTGCTGAATCTTTATGGCTGGAATG
+NODE	196	6003	354450	352577	0	0
+AGAACAGAACCTGCCGTAATAAGCAATCCAGTTGCGGAAATCCGCAGCGCGCCGAAACGGTTAATTAACCTACCGGTGAAGAATCCAGGCCCATACATAGCAATAACGTGCCATTGAATACCCAGATTGGAGGCTTGTTGAGAAATTCCATGCATATGCATTGAAAGGGGAGCGGCGGTCATCAGGAAATTCATCACCATATACGCAACCGCGCCGCTAAACACGGTCTTCATGAAACCCGGCTGCCGAACAATTTCCTTCAGAGAACGCCCTCCTGATTTGGCTGCCACGGCTGGCTCGGCAGGAATTACGCCCTTAAGAATGAAGGCTGAAATGGTTGCTACCAGAGCCTGAGCTATAAAGGTAATAACAAATGTGTGTGGTGGTAGAAGATTCATTGTTCCCGTCACCAGCATTGGCCCAATGACACCAGCTACCACACCGCCCCCCATTACCAGGGATAATGCACGCGCTCGCCTTTCGGATGTCACT [...]
+TTCATTGGTGTTCATTCATTAACAGTGACAGTATATTTAATGTAATAATTTTATATTTTAGGCGATATTATGGAATGGACTTCACTGAATATAGCGCACCATATCACCGCTCCGAATCCGTTAGCCATACGGAAAGAATTTATACCTGCAGCTCATTGTTTTCCTGAGCATAAGCATAAATGGCATCAGGTCGTTTATGCAACAGCAGGTGATTTAATGGTTAAAACAATTGAACAATCATTTTTGATTTCGCCGAAATTACAGGCTGTCTGGTTGCCTGCGGGAACTCAACATCAGGTCGGCTCATCACAAGGGGCTTATTTTAATAGCTTATGGATAGCTAACGATGCTCATAATCAATTTGACATGTCGGAACCTACCATTTTTGATGTTTCCCCATTCCTTAAGGCGCTTATCTTAGAAATATCAGACAGAAGAATAAATGATGAAGTTTATATAGAGAAACTAATACAGTTAATTTTATACCATCTG [...]
+NODE	197	10037	528922	525141	0	0
+GCCCGTCGCCAGTAAAGCCCATCATCAGCGCAGGGATACCCATTGGCAGGGTTTTATCCCGGTCGGTATGCCAGGTGTGCCAGGTCTTGCCATAAGTATTAACAATCTTACTCATCAACGCCTTATCAGCGACCTGCGGTAAGCCAGGCGCCACCAGGCTACCGGATTTCACCTCGTACTGGTGGCTGTGCCACAGTTTTTTCTCCTCGGGAGGAAGCGTTTTAAATAAACGTTCGCTGATAATGTACTCCACCCCCATCAGGCGCGCGTTTTTCGTGTTGCCGTCGTAAATCACCGCCTGCATGACATCTTCGTTCAGGACGGTAACGTAATGGTGCGCTTCCATCTGTCCGTTTTTATCACCGCTATAAAAATGGAACCCGTCAAGGTAGGTACTGATGGCATCGACAGGTGGTCTGGATTGAATGGCCGCCGCGCCTGTTTCCAGGGTACGTAATTTGGCAGAGGTTTTTTCCCCGGGAATAGGCGTTT [...]
+GGATATTAAAAACGCCAACGTCGTGATGGTGATGGGCGGCAATGCCGCAGAAGCGCATCCGGTGGGTTTCCGCTGGGCGATGGAAGCGAAAAACAATAACGATGCGACGCTGATTGTCGTTGATCCACGCTTTACGCGTACGGCGTCGGTGGCGGATATCTATGCGCCAATACGTTCCGGTACAGACATTACCTTTCTGTCCGGCGTTTTGCTGTACCTGATCGAAAATAACAAAATCAACGCTGAATACGTTAAGCATTACACCAACGCCAGCCTGCTGGTGCGGGATGATTTTGCCTTTGATGACGGTCTTTTCAGCGGCTATGACGCCCAAAAGCGTCAGTACGATAAATCCTCCTGGAACTACCAGTTCGATGAAAACGGCTATGCCAAACGTGATGAAACGTTGACGCACCCACGCTGTGTGTGGAATCTGCTGAAGCAGCACGTTTCGCGCTATACGCCGGACGTCGTGGAAAACATCTGCGGTAC [...]
+NODE	198	720	44168	44108	0	0
+CTAGCTGGTTTGCAGTACCTCACTACTTGGCGGTAGGATGACGGTGGTTAGTTCGAAGAAGTTGCGGAAAACTCAATAGAATACAAGCAATAAAGTGGATTCTTGCAGTGTCCCGGTATAATGATAGCTGCCTGAATCATTGGTATATTTAACAGCAGACCCTCGCTTTTTCGCTTAAAATCTGTTTTTTGTCACAAGCGGCAAGTGTTTAACATTTTCTCAGATTATAGATTAGCGTGCTAGCTAAAGATGTCGAGTGTGGGATGTGACATCTACTATATGAATTTAAAGTGAATTTTTATTTTTAGCAAGAACAGGAATCGAATTCGGTCTCTTTTTATTTCTATTGTAAATCAATTGTTTATGTGTTTCCCCTCGAAATTTCCTCAAATTTCTGTATTCCGGTCTTTTTGGTTAGATCACATCCAAATCCGAGTTAACATTTCTTTTACAGTAAAATCAGAGCATCACGTAAGCTTTATTATTGCGTTC [...]
+CACAAAGAAATTTGTAAAAGCCAGAAAAATTTCAAGTGTTAAATTCAGTGATAACCCACCGACATTTCACGAGATCCGTAGCCTGGCTGGTCGGCTGTACAAAGACGAATGCGGCGAGGAATTCGCTCAAAAACTCCTGGCCCACACCTCAGAGAACACCACGAAACCCTATCTCGATGAACGCAATAATAAAGCTTACGTGATGCTCTGATTTTACTGTAAAAGAAATGTTAACTCGGATTTGGATGTGATCTAACCAAAAAGACCGGAATACAGAAATTTGAGGAAATTTCGAGGGGAAACACATAAACAATTGATTTACAATAGAAATAAAAAGAGACCGAATTCGATTCCTGTTCTTGCTAAAAATAAAAATTCACTTTAAATTCATATAGTAGATGTCACATCCCACACTCGACATCTTTAGCTAGCACGCTAATCTATAATCTGAGAAAATGTTAAACACTTGCCGCTTGTGACAAAAAACAGATT [...]
+NODE	199	1201	83124	82167	0	0
+GCTAAATAGAGTGGTTAAAGAAAATAAACTGCTAATTGGATCTTCAGTTTTAATTTTATTCTTCATTGGTTGGTGGATTGTAAAAAGTAATGCAATTGCTAATAATCCCTACATAAACACTCATATTCCAAACGCACAATACTTCGTCTATTTGCCGTTTTTCTACATAGGCTATGTATTTAAAAAATTTGGATTCAAATCCTTGAGCAGCATAAATGCTATGCTGCCAGCGCTAATCGTCATAGTCCTTAGTTACATTGTAATACGGCCAACTATGTATTTATACGGAAGCATTGATCCGTATTGCTTTATCTTTTTATCGCTTATTAGCATTTCTCTCGTAATTGGTATTTCTTACCACATAAAATCTAACATACTCGTTAGATTTTTCACAACAATAGGCGAGAATACAGTACACATCCTCGCTATGCACTTCTTCTTTTTCAAGATAGCAACTCTTCTATTAACCATTGTAGGGCTCAAGCAAATTGA [...]
+AGGGGAATAGCTATTTTCATTCCGGTTTTAATCTGAGTTACGTGTAAGCGGTTGTCAAAAACATCATTAAATTTCATGTTTACGATATCCTCCCTACGTTGACCTGTAACGAGTGCTAAATCCATCGCGAGAGGGAACCATGAGGGCATATGCTCGTGTAGCATTATAAACCTCTATTCGCAAGCGCTCCCTTGCAACTTCAATTTTTGGTACCTTGGCTTTTTCAACCGGATTCAGTGTTATTCTTCCTTCTACAACAGCTTCACAAAACATGTCAGATAGTACAGACCTCGTCGCCCCCGCCATCGTGTTTTTACCTTCCGCGATCCATAGCTCAAGAAATTCTGCAACATGACGCGTGCTTACTTCTGCCAGAATCATTTCTCCTAATCCGGGCAGTCCGTTTACGGGCCGTAAGTAACGAAGCTTAATGTAAATGTTAGATCGTATGCGCCTGTTAGGGGCTGTGGGTAAGATAGCCTTACAGACGCA [...]
+NODE	200	4837	263459	261287	0	0
+TGGAAGGACTCTTCAGAAATAGTGCTTTGGATAGGTTGAACGGTAATGCCTTTGCCAGGCAGGTCGGCAGCGAAAGCGCTGGCGGTGACAAGGGTGGCAAACGCTGAGGCAAATATCACAGTATGTCGCATCGTTGTTCCTTTAATTATGGTAGGGAGTTGTAAGCCCGGTAAGCGCAGCGTCACCGGGCGTCAGGAGAGTTATTTAACGAAAGGGCGGGTGATTAGCCCAACAGGACCGGTGGTATACCAGCGACGGTTACCGCGGCTACGCGAGTCACGCCCGACGGCCTGCGTCAGACGGTCCAGAATGATGGCGAGAATCACAATGCCGACGCCGCCGACGGTTGCCAGCCCCATATCAAGACGACCAATGCCGCGTAGTACCATCTGACCAAGCCCGCCGACCGCAATCATCGAGGCGATGACGACCATCGAGAGAGCCAGCATCAGCGTCTGATTAACGCCTGCCATAATGGTGGGCATCGCCAGC [...]
+CATTAATATGAGTAATCTGTGCTCGGAAATTTTACAGGTCAATAGCGCTTCCCGTTACGACGATAACCTTGACTATACCCACATCGGGCATGACATCTCCTGCAATCTCGGCTCGCTGAATATCGCTCACGTCATGGATTCACCGGACATTGGCCGTACCGTAGAAACCGCTATTCGCGGCCTGACGGCGGTGTCGGACATGAGCCATATACGCAGCGTACCCTCAATAGCCGCCGGTAATGCCGCCTCTCATGCCATCGGTTTGGGCCAGATGAATCTGCATGGCTATCTGGCGAGAGAAGGCATTGCCTACGGTTCGCCGGAGGCGTTGGATTTCACCAATTTCTATTTTTACACCATTACCTGGCATGCCGTGCATACTTCAATGCGGCTGGCCCGCGAACGCGGCAAAACCTTCGCCGGATTTGCGCAGTCGCGTTATGCCAGCGGCGACTATTTTACGCAGTATTTACAGGACGACTGGCAACCGAA [...]
+NODE	201	3904	199209	198332	0	0
+TCAACACCCCGACCAATATCAGTCATGGAAAGCGACGTCAGAACAGTCTGCCCGTGAAGATGCGCTGGCGGAAGACCCTCGTCTGGTGATCCTGTGGGCGGGCTATCCCTTCTCCCGTGACTACAACAAACCACGCGGCCACGCGTATGCGGTAACTGACGTGCGCGAAACGCTGCGTACCGGCGCGCCAAAAACGGCGGAAGACGGCCCGCTGCCGATGGCCTGCTGGAGTTGTAAAAGCCCCGATGTCGCGCGCCTTATCCAACAAGAAGGCGAAGACGGCTACTTCCATGGCAAATGGGCGCGAGGCGGCCCGGAAATTGTCAACGATTTGGGCTGTGCCGACTGTCATAACACCGCGTCGGACGATTTCGCCCAGGGGAAGCCAGCATTAACGTTGTCGCGCCCCTATGCCGAACGGGCGATGGAGGCTATCGGCAAACCGTTTGATAAAGCCGGTCGCTTTGATCAGCAATCGATGGTCTGCGGCCA [...]
+AGTCCCCATGACAACTGACTATGGCTATGCTGCGCAACATAAACGACCGAAAAATCGCTGGTCAGAAAACAGCTAACCAGAATCGCAAACGCCAGTAGCAGCAGCGTGAACGCCGTCCACGCGCCGCAGGTCGTCAGGCGCATGACGCCGCGCCAGTGCAGCCCCATCCCGCACCACGTCGCCAGCGGGGTCAGCACGTTGACCCCGAGACTCAACAACAGCGCCAGAAATCCGGCTTCAGGAAGGAAGATGTCCAGATTATGCAACCGTTAGCTGTCCCGCATAAAGAATGAAAAAGCGCAGCAGCAGCACGCCGGTCAAACTGGCGCCGCAAACGGCCAGCACGCCGTGAAACGTGACGCTACGGTTAGCCCAGGGTTTCAGCAGCAGCGGGATAATCAATCCCAGCCCTACGACCCCAAGCCAGAACCACCAGCTCCAGAATCCGCCGCCCAGCGCCGCCGCCAGCGCGCGCATTTTGCCGTCATCGCC [...]
+NODE	202	3	167	167	0	0
+CGT
+TTC
+NODE	203	1078	67428	67428	0	0
+CAGGTATGGTGCCTGTGTCGAACCTTGTAGAGCCTCGATGATGGGCGTATTATAACCAACTAAAATAGTCAACTATTAGGCCATTACTATGATCCGTATTTCCGATGCTGCACAAGCGCACTTTGCCAAACTGTTGGCAAATCAGGAAGAAGGGACGCAAATCCGCGTATTTGTCATTAATCCCGGCACTCCTAACGCAGAGTGCGGTGTTTCTTATTGTCCGCCCGACGCCGTAGAAGCCACCGATACTGCACTGAAATTTGACCTGTTGACCGCTTATGTTGATGAACTGAGCGCGCCCTATCTGGAAGACGCGGAAATTGATTTCGTGACCGACCAGCTAGGTTCTCAACTCACATTGAAAGCGCCAAACGCGAAGATGCGCAAAGTGGCCGATGACGCGCCGCTGATGGAGCGCGTGGAATATGCTCTGCAATCGCAGATTAACCCGCAGTTGGCGGGCCACGGCGGTCGCGTCTCGCTGATGGAAAT [...]
+CTTTACTTTGTTATGGGTAACGTCATTGTTTCGACGACAAATTCCTGTTGTTCCCGACGGGAACAGAGTCGCAATAGCACCAATACTGATTACCGTTGAAACGAATGAGCGTAGTCAGATGTTATATGGATGTTAGGTGCCCATAAGAATGATACGGGTAACATGTGGGTGTTGAAAATGACCCTGGCAGGCAAAATTTAAATTATGAGACACAGGTCATGTTATCGGCGGAAGAAGAAGGACCATTGTTCTGAGATATGGCTGATAGCGCCGGATGGCGGCGTATACGCCTTATTCGGCCTACGGTGGGGCAGACAAGGCCCGACAGGCGCAAGCGCCATCGGGCATGGATGCGGGGAAAATCTTAGTAGTATGAGTGCTCGCCGCGCTGGTGTTCGGTCAGATCGCGAACCCCTTTCAGTTCCGGGAATTCATTCAGCAATTGTTTCTCGATCCCTTCTTTCAGCGTGACGTCAACCATCGAGCAACCGT [...]
+NODE	204	2554	168850	166343	0	0
+AGTAAACAAGGCTCCCAGTGTTTCCGAGCCATTAAGGCTGGCAAACAACAACATCTGCGGCGGCACGGCACTGCCGCTTACCGTAACGTTATGCACTCCCGGTCCGGAGATAAGGGATGACATTACGTCCTGTGCGGCACCAGCTATATCCGATATCCCTGCCGCCACAGCGGCGGCCTGCGCCGCTGCCACCGCGGCTTTTACCAGTCCTGATGGTTCCGGCAACTCGCCAAACAACAATTCCACTGCCTGTTCTGCCATTTGTTCGGCTGCGTCAGTAACGCTGGCTACGGCGGCACCTGAACTAACACCGTTATTTTCTCCGACAATTGGCGGCGTAGTGATAGCTGGCCCATCGCTCCCGACAGTTTTATTACCCGTGGATACAAAACTCATAATGGATCCTTCTGAAGAATGTAGTCATCTGCTAATAACAAATTTCTTTTTCAAGCTGAACACTATTTTCTGTATAGTTAACTGAAAGATAAAACG [...]
+CGAAAGTCAATATGGTACAGGTCGTATTGCCAGGGAATATAATAATTACTTTTCTCTCCAGGCTCCTGCATCATTTCAGTCAGGTCGGGTTCATCCAAAGGATAGTAACAAAACTTGGGTGGCTATTTTTTCTTCGTTTTCAGTTTGTGCGCGATCTTTTGCTGTCAAGTATGGTGACGCTGTTCGGGGGAAAAAAGATGCTCTGGCCTTCTCTGAAGCTCTGGTAGCTGCTGGGTTTAATTCAGGATCTCATATTACTGGTGGTACGGATAATTACGCCAGGATAACTGCTGGAATAATTATTATGGTCGGACGGAGAATAGCATGCCCCGTAAAATAATGCTTGTTTTTTTTCTCTTTATATCTGAGTTCTGTTATGCCCAAGTGGTTGTATCTGAATTTAATTTGTCAGATATAAATCGCGGTGGAATGACGAAAGCACAGGCAGAAAAACTACTCATTATTGCACTTAAATATCAAAAATATGATTTA [...]
+NODE	205	57	5097	4433	0	0
+GAAAGACGATGCGGCAGGTCAGGCGATTGCTAACCGTTTTACCGCGAACATCAAAGG
+GTCTTTCGCGCTGTTGATACGCAGACCGGAAGACAGACGCTCGATAGCGGTGCCCAG
+NODE	206	59	6706	6702	0	0
+CCTTCAGTGGTCTGCGCAATGGAGATACCGTCGTTAGCGTTACGGGAAGCCTGAGTCAG
+CACTGAAGGCGCGCTGAACGAAATCAACAACAACCTGCAGCGTGTGCGTGAACTGGCGG
+NODE	207	51	4436	3250	0	0
+ACCTTTGATGTTCGCGGTAAAACGGTTAGCAATCGCCTGACCTGCCGCATC
+TCTGACTCAGGCTTCCCGTAACGCTAACGACGGTATCTCCATTGCGCAGAC
+NODE	208	10767	554218	547304	0	0
+CCACGCCCATTTCAGTGATGAAAGCAGGAGACGAGTTCAATGTCGCATAATGAGAAATCCCCCCATCAGTCCCCCGTGCATGATACCCGTGAATCACAGCCCGGCCTGGACTCCCTGGCGCCGTCAGACGGTTCACATCGCCCCACGCCAGAACCGACGCCGCCGGGCGCGCAACCGACGGCCCCCGGCAGCTTAAAAGCGCCCGAGACCGCGAATGATAAGCTCACCGCCCTCGACGCCTTTCGTAAAGGCAGCGAAAATTATGCGCTGACCACCAATCAGGGCGTGCGCATCGCCGACGATCAAAATTCTCTTCGCGCCGGCAGCCGCGGCCCTACGCTGTTGGAAGATTTTATCCTGCGCGAAAAAATTACCCACTTTGACCATGAGCGTATCCCGGAGAGGATCGTTCACGCCCGCGGATCTGCAGCGCACGGCTATTTCCAGCCATATAAAGACCTGAGCGACATCACGAAAGCCGCGTTTCTGTGC [...]
+GGCCCACATCACGATATGATGTTTAAAAACCTGAACCTGACGGACGCACAGAAGCAACAAATTCGCGACATTATGAAAGCGCAGCGCGAGCAAATGAAACGTCCGCCGCTGGAAGAGCGTCGCGCCATGCATGATATTATTGCCAGCGATACCTTCGATAAAGCCAAAGCCGAAGCGCAAATTACGAAAATGGAAGCACAGCGCAAGGCCAATATGCTGGCGCATATGGAAACCCAGAATAAAATTTATAACGTTCTGACGCCGGAGCAGAAAAAGCAATATAACGCTAATTTTGAGAAGCGTCTGACAGAACGCCCGGCGCAAGAAGGTAAAATGCCTGCTGCGGCAGAATAACTTTCCGCATAATTTAAGACCGCCGGTCTTGTCGACAACACAATCGTTGAGGTGGACAGGATCGGCGGTTTTCTTTATGACTGGCGACAGTCGGTGTGCAGTTCAATGATCTCATATTGACCTGACATTAGTGGCTTA [...]
+NODE	209	14413	728766	719728	0	0
+GCCGCCGGGAAAGTAGAGCTGCGCGAAGCTCACGCAGCCCATACGACGGCTTTCAACCAGCCTGGGTTCGAAGTTTTCGCCAATGACCAGCTCTGTTGACCCGCCGCCGATATCGATCACCAGCTTGCGGCCTTTTTCCGGCTGCGTATGTTCTACGCCCATAAAAATCAGGCGCGCTTCTTCGTTACCGGAAATAATCTCTATCGGGTAGGGAATAACCTTTTCCGCACGTTTGAGAAAATCAGCGGCATTTTGCGCCTGACGTAACGTATGGGTGCCTACGATACAGACGCTGGAAGGGGAGAAACCTTGTAAGCGTTCAGCAAACAACGACAGACAGCTAAGCCCACGTTCCATGGCTTCTTCGCTGAGGTTGTTATCTGCGCCCAGCCCGTCCGCCAGATGGACGCGCTGTTTTAAGCGCCCGATAATCTGCATTGCGCCGTCAACCACGCGGGCAATGACCATATGAAAGCTGTTTGAGCCGAGATC [...]
+CTGATAAATATGTCGGCCCCAGTTTTCCAGCGCCGCGTCCAGGGTATTCACCATTTCCGCTGTCGCCCCTTTTTGTGGGCCAAAAATGGCCGATGCGCCCTGGGGACCACACAGCGGATTGTTGACATCGCACGCCACGGTTATCGATACCTTACGCAGCAATGGGTGACAACCGGACAGATCGATAGAGGCCAGCGCCGCCAGCGCCTCGCCGCCCGGAGAAAGCGAGCGCCCCTGTTTATCGCGCAATATAACGCCAAGCGCCTGCATCATCCCCGCGCCGCCGTCATTCGTCGCGCTGCCGCCAATTCCCAGAATAATACGCTTTACGCCACGCTCCAGCGCCGCGACGATTAACTCGCCGGTGCCGTAGCTGGTGGTATTAAGCGGGTTGCGCAATTCAGGCGAAACGTGATGCAGCCCGGATGCCGCCGCCATTTCAATCACGGCGGTATCGCTATCGCCCAGCATTCCCCAGCGCGCGGCCACCGG [...]
+NODE	210	6753	374712	369119	0	0
+AAGATTTCCGTGCCCGTATCGATAACATTAAAGAGTGGTTAGGCGACGGCGTTATTGCCGATTACGATGATGACGATATCGCGCAATTATTGGCCGATGTCGACGTACCCATTGTCGGGGTCGGCGGTTCTTACCATCTTGCTGAAAATTATCCTGCCGTTCATTACATCGCCACCGATAATCATGCGCTCGTTGAAAGCGCTTTCCTGCATTTAAAAGAAAAAGGCGTTAACCGCTTCGCGTTTTACGGTTTGCCCGACTCCAGCCGCAAACATTGGGCGGCGGAACGGGAATACGCCTTTCGCCAGCTGGTCGCCGAGGAAAAATACCGCGGCGTAGTCTATCAGGGGCTGGAAACCGCGCCGGAAAACTGGCAGCACGCGCAAAATCGCCTCGCCGACTGGCTTCAGACGCTGCCGCCGCAAACCGGCATCATTGCCGTAACGGATGCCCGCGCCCGTCACGTATTGCAGGCCTGTGAACACCTGCATA [...]
+GCTGTACTGCTCGGCGATGGGGAAAATTTATATGGCGTTTGGTCAGCCGGATTATGTGGCGTCTTACTGGGAAAGCCATAAAGATCAGATCCAGCCGCTGACTCGCAACACCATTACCGATTTACCAGCAATGTACGATGAGCTGGCGCAAATTCGTGAAACCAGCATGGCGATGGACCGCGAAGAAAATGAACTGGGCGTCTCCTGTATTGCCGTGCCTGTGTTTGATATTCACCATCGGGTGCCTTACGCCATTTCTATTTCACTGTCGACGTCACGGCTAAAACAGATCGGCGAGAAAAATCTGCTCAAACCGTTGCGTGAAACCGCACAGGCTATCTCTAATGAGCTGGGATTTACCGTTCGCGAATAAGACAGCTCGCCAGGTTTTATCAGGCATCTGACAAAATTTGTCCGTTTGCGTAGTGGGATCAAAGCGGCGGGGAATGGCTCTCTGGCATTCTGGCGTTTTAACGCAGGGGGAGAACAATG [...]
+NODE	211	692	40241	39615	0	0
+GGAGCAGGTTGCGACCGAGAAAGCGGAACTCGCAAAACTGAAAGATCTGCCGGCAATCACGCTGGATGGACATCAGGTCGAAGTTTGCGCCAACATCGGTACCGTTCGCGACGTTGAAGGCGCTGAGCGTAACGGCGCGGAAGGCGTTGGTCTGTATCGTACTGAATTCCTGTTCATGGATCGCGACGCGCTGCCGACGGAAGAAGAGCAGTTTGCCGCCTATAAAGCGGTCGCTGAAGCGTGCGGCTCGCAGGCGGTTATCGTCCGTACCATGGACATTGGCGGCGACAAAGAGCTGCCGTACATGAACTTCCCGAAAGAAGAGAACCCGTTCCTGGGCTGGCGCGCCGTGCGTATCGCCATGGATCGCAAAGAGATCCTGCGTGACCAGGTTCGCGCGATTCTGCGTGCCTCCGCTTTCGGTAAATTGCGCATTATGTTCCCGATGATCATCTCTGTTGAAGAAGTTCGCGCGCTGCGCAAAGAGATTGA [...]
+GTTAAATCATTGGTGCCGATACTAAAGAAATCAACTTCTTTGGCTAAATGACGCGCAATTGTCGCCGCAGCCGGTGTTTCCACCATCACGCCAATCTCAATGCTTTCGTCAAATGCTTTACCTTCGTCACGCAGTTCCTGTTTGTAGATTTCAATCTCTTTGCGCAGCGCGCGAACTTCTTCAACAGAGATGATCATCGGGAACATAATGCGCAATTTACCGAAAGCGGAGGCACGCAGAATCGCGCGAACCTGGTCACGCAGGATCTCTTTGCGATCCATGGCGATACGCACGGCGCGCCAGCCCAGGAACGGGTTCTCTTCTTTCGGGAAGTTCATGTACGGCAGCTCTTTGTCGCCGCCAATGTCCATGGTACGGACGATAACCGCCTGCGAGCCGCACGCTTCAGCGACCGCTTTATAGGCGGCAAACTGCTCTTCTTCCGTCGGCAGCGCGTCGCGATCCATGAACAGGAATTCAGTACGATACAGA [...]
+NODE	212	45	2668	2319	0	0
+ACCAGCCAATGTCACCGTCCGTACTGAACTTGATCAAGCAAGTTA
+TGTGAAATCATATCATTACCACGGTCAACTGCCAGGGTGTACTGC
+NODE	213	2157	119002	118722	0	0
+AAACGACAGCCCCGATTGAATTTTCAATTAATTGTCTGATTTTAAATAATTTTATCCATCACGCTTGCGATGGATAAAAATCCTCTGCGATAAATTTTTGTTATATTGATCACGTTCTAACCACAAGAGAGGTGATTTGAAAATAACCTTAAAATATTGTGGTCAGGCCGCTAGACCACAATAAGAGGATTAATCATGAAAAGAAAAACAATGGGATGGCTTATCGTTTTTCTTCTATTTATAGTTTACATGCTCAACTATATGGATCGTTCAGCATTGTCGATAACTGCCCCCTTGATCGAAAAGGAGTTAGGATTTAACGCCGCGGAGATGGGAATGATCTTCAGCGCATTTTTTATCGGATACGCCCTGTTTAATTTTATTGGTGGCTGGGCCAGCGATAAAGTTGGGCCAAAAACGGTTTTTCTCATCGCAGCGTTACTATGGTCTGTATTTTGTGGCTTAACTGGTTTAGTCACCGGATTGTGGACA [...]
+ATCGTCAGCGGCGTTCAGCACATAAGGAACGCCAAGCTTTTGCGCATAGCGTAGCCTTTCCTCCACAATATCGATCAGAATAGGCGTTGCCTTGTAATGACGCGCGCTTAATGCCGCCATAAGACCAATGGCCCCCGCGCCGATGATGGCAACATATTCCCCGGCCTTAACGTTTGCCCGGTGCAGCGCGTGCAGTGCGATGGTCAGCGGTTCTGCCAGCGGCGCCATTTCAGAAGGTACATTATCTGGTATTTTATGAATTAAATGTGCGGGATGAGTAACCACCTCCTGCATTGCGCCATCGACATGCACGCCAATGACGTTTAAATTTTCACAACAGTTAGTTCTGCCGACAGAGCAAGGGTAGCAGTGACCACAATAAATATAAGGGTCAACAATCACGCGGTCGCCTTTTTTAATATTGTCTGGCATTCCGGCGCCTTCCTGAAGAACAATTCCGGTCACTTCATGCCCAATAATTCTTGGGTAAGT [...]
+NODE	214	3703	196687	189958	0	0
+GTTGACCGTATCGTCGGGCTGGAAATCGGCGCCGATGACTACATTCCTAAACCGTTTAACCCGCGCGAGCTGTTGGCGCGTATCCGCGCCGTGCTACGTCGTCAGGCAAACGAACTGCCCGGCGCGCCGTCGCAGGAAGAGGCCGTTATCGCGTTCGGTAAGTTTAAACTGAACCTCGGTACGCGCGAGATGTTCCGTGAAGATGAACCGATGCCGCTGACCAGCGGGGAGTTTGCGGTACTGAAAGCGTTAGTCAGCCATCCGCGCGAGCCGCTCTCTCGCGATAAGCTGATGAATCTGGCCCGTGGCCGCGAGTATTCCGCGATGGAACGCTCCATCGACGTCCAGATCTCCCGCCTGCGCCGTATGGTGGAAGAAGATCCGGCACATCCGCGTTATATTCAGACCGTATGGGGCCTGGGCTACGTCTTCGTACCGGACGGTTCTAAAGCATGAGGCGAATGCGCTTCTCGCCGCGAAGTTCATTTGCCC [...]
+GCCATAATAACCGCCGCTGCGTGACAGGAGTCACAGTGTTTTTCGTCAATCGTGATTTTGTCCAGATACGTAAATCTATGAGCCTTGTCGCGGTTAACCAACCTCAAAAAACCTTACTATTTTCGGTAATATATATTGGCTAAGGAGCAGTGATATGCGCGTTAACAATTTAACCCCGCAAGATCTCAAGGCTTATGGTATCAACGACGTCCAGGATATCGTTTACAATCCCAGCTACGACACCCTTTATCAGGAAGAACTTAATCCTGGTCTGGAAGGCTATGAGCGTGGCGTGTTAACTAACCTGGGCGCTGTTGCCGTTGATACCGGTATTTTTACCGGTCGTTCGCCTAAGGATAAGTATATTGTTCGCGACGACACCACGCGTGATACGCTGTGGTGGTCCGATAAGGGTAAAGGTAAAAACGATAATAAGCCGCTTTCCCAGGAAACCTGGCAACACCTGAAAGGTCTGGTGACGCATCAGCTTTC [...]
+NODE	215	14847	800970	795771	0	0
+CAGCGCCGGGCGTCCTTCCATAACTCCCAGCGCCTGTGCGGCCTGCGCAGGCATGGCGGTGGGGTAGAACGACAGATGCATGCTGGTATAGACGAGGTTGTAGTGCGACTCGTATACCTCGGTCAGGCTGCCGTTGAGATCGTACTGCAGCAGCTCAGGCACGCGGGCGGGCAAACAATGGTTTTCGCAGTAGCACACGGCGCGGCCATCGGCGTAACGCAGACGGGTCAGCAGATAGATTTGATCAAACGGCTGGAGCTGGAGGGGCTCCATGACCTCGACAGGCACGGTGGTTAACACGCCGCTCAGTAGCGCGGTTTTTGGCTCCCGCCCCTGCTCGCGGCAAAGCTTATGGAAGTTGGTGTTCTGGGTCGGATCCAGCCACAGGCGTTCCGGCGTAACGAACCAGCCGCGACGATCGGCGCGCCAGATAAGCCCACTGGACTCCAGCTGCGCCAGACTTTCGCGAATAGTAATGCGCGTGGTGTTGAA [...]
+AGTGTCTTAAAGTTATTTCGACATACTTGGCAACATATGTGACATGCGCGGCAGAACTTGGTAACACAGAACCAATCATGTTTACAGTAATGTAACCTTACCGTAAAATGCCCCTACACTTTAAACGCCACCAGGTCCCGTGGAATTGAGGTCGTTAAATGAGACTCAGGAAATACAATAAAAGTTTGGGATGGTTGTCATTAATTGCAGGCACTGCATTACTCAGTGGCTGTAATTCTGCGCTGCTGGATCCCAAAGGACAGATTGGACTGGAGCAACGTTCGCTGATACTGACGGCATTTGGCCTGATGTTGATCGTCGTTATTCCCGCCATCTTGATGGCTGTTGGTTTTGCCTGGAAGTATCGTGCGAGTAATAAGGATGCGAAGTATAGCCCGAACTGGTCACACTCCAATAAAGTGGAAGCCGTGGTCTGGACGGTGCCTATCTTAATCATCATTTTCCTTGCCGTACTGACCTGGAAAACCACGC [...]
+NODE	216	6030	303112	298430	0	0
+CAGGTGGCTGAATAAATTATTCTCCTGAAACAGCATTGAGACCGGACGGCGTGAGGGCGGCGTAAGCGTATGATCTTCACCGGCAATCAGTAACGTACCGCTGGCAGGCGCAAGAAAACCGGCAATTAAATTCAACAACGTGCTTTTCCCCGCGCCGCTGGGGCCAAGAATCGCCACCTGCTCGCCGCGTTCTACCGCCAGCGTAAAACGCATCGGCAAATGATGGTAAAGCCAGGTGATATCAATCAGTTTTAGCATGTCGGCCCGGTAGTTTCTCTATGAGGGTAAATAACGTAAAGCAGAGCAGCAGCAGTATCAGCGCGGTCACCGCGCCGTCCTGGCTGCGGTAGGAGCCGATCTGCTGATACAGATAAAACGGCAGCGTGCGGAAATTGTCATTGCCGAAAAGCGCGACGACGCCAAAATCACCGATAGAAAGTACGCAGGCAAACGCCAGCGCCTGCGCCAGCGGACGTTTCAGCGCCCGCAGTT [...]
+TATCGAAGCAGGATTTGAATGGCGCTTACCGGGCTGTTCCATGTGCCTGGCCATGAATAATGACCGCCTGAACCCGGGCGAGCGCTGCGCCTCCACCAGCAACCGTAACTTTGAAGGTCGTCAGGGCCGCGGGGGTCGCACGCATTTAGTCAGCCCGGCGATGGCCGCCGCTGCCGCCGTTACCGGCCACTTCGCCGATATTCGCAGCATCAAATAAGGAAACTACCATGGCAGAGAAATTTACCCAGCATACCGGCCTGGTTGTCCCACTGGATGCCGCCAACGTCGATACCGATGCAATTATCCCTAAACAGTTTTTGCAGAAGGTTACGCGCACCGGTTTTGGCGCCCATCTGTTTAACGACTGGCGCTTCCTGGACGAAAAGGGCCAACAGCCAAATCCGGAATTCGTGTTGAACTTTCCGGAATATCAAGGCGCGTCGATACTGTTGGCGCGGGAAAACTTTGGCTGCGGCTCGTCACGCGAGCACG [...]
+NODE	217	5267	267349	263265	0	0
+TGGCTGCTGGGATTCGCCGCGTTTACCCCCTACGAGATTGAAAATGGAGTCAAGCTTCTGCGGGCTGCATTATGCGCCGAAAACGCCCGCCAAGCCGGGTCATAATCTCATAAGGGATGGTATCGCAGGCGGCGGCAACCTCTTCCAGCGTCTGGCTCACGCCAATAAACTCCACAACATCGCCAGGCGTTGGCATGATGGCGCTGGCGTCCACCATAAAGCTGTCCATGCAAACCCGCCCCAATACCGGTAACCGAACCCCGCGCCAGCACACGCCCGCCGGAGGACGCAAATTACGTGGAATCCCATCAGCGTATCCGGCGGATACCGTGGCGATACGCAGCGGGCGAGTAGTAGTAACCGTACTGCCGTAGCCAATCGGCGTCCCAACTGGCACGTCTTGCACACGCAGAATGCTCAGCGTCAGCGTAAATGCCGGTTTTAACGGCGTTGAAAACCACGGCTGGGCGACGCCGAACAGCGCAACGCCCG [...]
+GCCTAACAGTTGCCACTCTGCGCGGCAATCGTCATCGTTTATCTCTTCCTCAACGAACCACAGCGAGGAGAGACGCTGGCGAAACCGCTCCGCCCATGCCGTAATGACCGCGCCGCGCAAAAAACACTCATGGGCAATGATGTGTGTCGTGACATCAGGAAAACGGTTTTTCAGCACCCGAAAATGACCATGCGCCGTAATGACCGGGCGAAGTATTGTCCCTTGCGCGTTCCGTTTAAGCGCCGCCGGGCCATACTGAATCTCATCGAACTGGCTGCGCTGTAAAAATTGCCGTTCTTTAGTGGCGATACGGTGAATAATATCGCCATTCTCACCCTCGGGCGGCGCAATTCCTTTCCAGTGGTAATGCAAACTCTTTCCGGCAGAAAGTAACGTGAAATTGCTGGAAAGGTGAAGAATATTGCCGCGAACAGCGTCAAAACTGAATAAAAAATACAATTGCTGGAAGGCATTCGCTCCCTGAAACGGTAC [...]
+NODE	218	7364	376229	368366	0	0
+CTGTCCCGCGTGGTGCTGAGTACCGGCGCGCGCCGCCATTTGCTCAACTATGGCTGGCCGGGCAACGTCCGGGAGCTGGAACATGCCATTCACCGTGCGGTTGTACTGGCGAGAGCGACCCGGGCAGGGGATGAGGTGATACTGGAGGCACAGCATTTTGCCTTGTCAGAGGACGTTTTACCCGCGCCGCCTGCGGAAAGCTTTCTGGCGCTGCCGACTTGCCGCAATTTGCGCGAATCGACGGAGAACTTCCAGCGAGAGATGATTCGCCAGGCGCTGGCGCAAAATAATCATAACTGGGCGGCCAGCGCGCGGGCGCTGGAAACCGACGTCGCCAACCTGCACCGGCTGGCGAAACGTCTGGGACTGAAGGATTAGATAATCCCCGCCTGGTAGAAATCCTGCAGGTTAATGGCGCCGGTGAGTTTGCCGTTTTCATCGACCACTGGCGCGGCGGTAATTTTGCGTTTCATCAGGAGCTCTTTGGCGTCA [...]
+TCGCCCCGCGCGCTTTTAACGCCAGCCCGACCTGCTCGCTAAGCCGCATCAGTTCACTGTCAGTCATCATGACCTCTGTCAGTTAGAAATCCTGCCGCACAAGATAGCACTTTCTCACCAGAGATGGGGACGAGCAGTCGATTTTACGAGTCGGATTCCGAAAAAATGCCAGCAGGTTATTTATGCAGAATGAAATGAGGTAACACATGACTAAATAGCAGTACCATGTCGCTAAATTTACACGCACGGAGAGAAAGCAAGGATGTCACTCAAAAAAACGGAAAGCACACAGCACAAACTGAAACAAACCTGTCAACTACGGCTGTGGTTAATTGTGGGTGGAGTATGTTCATTAGGAATGGGAGTACTGAATATATTGTCGTCAGGCTATTTTGAACCGTATGATGGCGGTCAAATTATCTTAGGCCTGGGATGTCTGGGATATAGTCTGGCACTATCAAAGAAGATATCCCACTTGCAGGCAGAGAATCA [...]
+NODE	219	8383	481750	477156	0	0
+CCAAATGTGACTTTAAATTTATCCCATAAATCTAAGTTATTAAAGTCTATTGGCTCGCCATTATAAAATGCCTGCTGTTCATACATTAAATGATAAACCTGTTTTATTGATTGTTTACGCGGGACATTTTAAATCATTAAATGAAGGATTTAATTCCATTAAGGTCTTTGTTTGCTCTTATTACAGGAATTATAAATATGATGCCATTTCTGGAATAAAAGTAAAGTTAATACATTATTTATTTAATTGCTCACTGGTAGGGTATTTATGTATCCTCCGGTTAATGCTTAGTTTAGCAGCTTTTAGCTGACAGCGATTGCAACGCTAAAAAACATGTGCTAATAATCATCATGTAAAATATGTAATGAAGTAAGTATGGAGCATTTAATTGTTATGATCCCACCATTAAATAGATATGTTCCCGCGCTTTCAAAAAATGAATTGGTTAAAACTGTTACCAACAGGGACATTCAGTTTACAAGTTTTAATGGA [...]
+CAACAATAATGCAGGGGGCGATTTGCGGGTAGTAACGCTCGCGGCAATGGCTGCACAGCATCGCCCATTCGGTTTTACTCGGGTGCATAGGGTGCCCGCAATAGCCGCAAAATTTATGCGACCGATAAAACTCCGCCAACTGTACGCCACGTCCCGCCAGTTGGAACAACCCGGCATCCTGATCGATAATCTGGCGAACCGATCCCATATCATGGCGTCGATGCTGTAACACCAGCCAGACGGGCTCGCCTTGCCATTCACCTATCCGGAGTGCGCGCTGCCCCACAAGATCGAAATTTGCCGCCAGCCCGTGTGGTAATTCCCCATACGGCAACCATAATTTTTGTTCATGGCTGACGATCCACCAGCCACTCTCTAATTTTTCAATTATACGATCCATAGCTCTTGCACTACCTTTGCTTCACTGGCATGTTGTTAACATTATTTTTACATTCATGGCGAGCAGCCTTTATCTAACTTGCGGAGACAATC [...]
+NODE	220	6394	319405	315061	0	0
+TCTGAGACGCGCTAACCGGTTCTGCGGCAAAAGTGCCAAAAGAAAGGGTGGAAAGCGCGATGGCTGCAACAGCATATTTAATGGTTTTCATGATTAATCTCTCGCAGGTTATTCTGTTTATGGGACGATGTTCCGTCGATGTGATGAGTATCACGGTTTTTTGCGAAAGATAAAATCGAATAGAATTGACTGCCTTGCTCAAAATTTTTGAATGACAAATAACCTATTGATTATTAATTAATTCAACGGTTGAATTTACCTTTCTTGTCATCTGGCTTTACAGAGTCGAGGTTAACGGCACATTCTGCGACGCAGAACGCTAAAAAGCATGAGCGTAAAGGAATGGATAATACTGGCGGTTTCGGTAAAGAAAAGTCAGCGTAACTGGCTGTCTTTTGAACCTCTACGATTATATCCTGAAAATGTTGCGTTATGTAAATCTTTCTCCTGTTGGCAGGCTATGCATAACCGAACGCCCGGCACGGCTTTACG [...]
+CCCTGGCTTTTGCGGTGTCTTCGCACGCTGCGGATAAGAAACTCGTGGTGGCAACCGATACGGCGTTCGTTCCGTTTGAATTTAAACAGGGCGACAAATACGTCGGTTTTGATGTTGATCTGTGGGACGCTATCGCGAAAGAACTGAAGCTGGACTACACCCTGAAACCGATGGATTTCAGCGGCATTATTCCGGCATTACAAACCAAAAATATCGATCTGGCGCTGGCGGGTATTACGATTACGGACGAGCGTAAAAAAGCGATCGACTTTTCCGATGGCTATTACAAAAGCGGTCTGCTCGTGATGGTGAAAGCCAACAATAACGATATTAAAAGCGTTAAAGACCTCGATGGCAAAGTCGTTGCCGTGAAGAGCGGAACCGGGTCGGTGGATTACGCGAAAGCGAATATCAAAACCAAAGACCTGCGTCAGTTCCCGAACATTGATAACGCGTACATGGAATTAGGCACCAACCGCGCAGACGCCGTTC [...]
+NODE	221	10753	600117	593266	0	0
+CTCAAGTGCCTGGTATTTACCCAAAACGCCATTAAACCGCCAGTTTTTCGAGCGTTTCAAAGCCATAACGCTGTAAAACGGGTAATAATTGTTCAGCTCCTGGCGTCATTGCCATGCAATAAGCAATATTGGCATCGGTTGATTTCGCATCCGGCGCTTCATGTTCCAACAGCCAGGCTGTACGACGCGCTATCGCCGCGCCGGAATCCACTAACCGCGTCCCTTCGGGCAGGACTTGCAAAAGCTCGTCCCGTAATAGAGGGAAATGCGTACACCCCAGAACGACCGTGTCAGGCGGCTCCGGCATTCGTAGCCATGGGCGTAATATGCGGCGCAGTTCTTCCAGCGATACCGAATCGCCATGTAATTTAGCTTCCGCCAGTTCCACCAGTTCTGCCGACCCCAACATCGCTATCTGACATTCATTAGCGAAGCGCGCAATCAGCTCGTGAGTATAAGGACGTTTGACCGTGGCTCTCGTCGCCAGTAGCC [...]
+CGGGGCGCAAAGCGGCAATATCGAACAGTTTCTGTGAAGTGAGTTTGCAACCGTATGGCGTGTTTACGCATCGTCATCAGCCGGAAATCGCCGTCCATCTGGGCGCGGAGGTCATCTTCACCCCGCATCTGGGGAATTTCCCGCGCGGGATTCTGGAAACCATTACCTGCCGCCTGAAAGCGGGAGTAACCCATGCGCAGATCGCCGACGTGTTGCAAAAAGCCTATGGCGACAAACCGCTGGTGCGCCTGTATGACAAAGGCGTTCCGGCGTTAAAGAACGTCGTCGGGCTGCCGTTCTGCGATATTGGTTTTGCCGTCCAGGGCGAACATCTGATTGTGGTGGCAACCGAAGACAACTTGTTGAAAGGCGCAGCGGCGCAGGCGGTGCAGTGCGCTAATATTCGTTTTGGCTTCGCTGAAACGCAGTCTCTTATTTAAGGGTGAAATGATGAATCCATTAATTATCAAGCTGGGTGGCGTATTACTGGAT [...]
+NODE	222	2722	145519	142311	0	0
+CGACAGGCGTCGTCGAGGCTTGCGCTGGCTTCGCGGTTTGTACCGGCGCAGCGCTTGCCGTCGCTGTCGGCGCAGCCGTCGTGGTGGTCGCTTTCGGCGTCGCGGCTGGCGCTGCCGGTTCCGTGCGTTTCACTGGCGCGACCGGTTTCTTCGGTTCCGCAGTCGTGGTTTTCGCCGTGGTCTGCGGTTTCTTAGGTTCAATGACGGCCTGTTTACGTTCCGGACGCGTGGTATGACGCTCGGCAGGTTCGCTAACCGCCGCCTGACGCGTCGTGCTGCCATTGCGAACTGGCGCGACGGTTGCAGGCTCTGTCGGCAACGTAGAGTTCACCGCAACATTGTTCATCTGCTCTGGATTCTGCGTCAGCGCATTATTCAGATCGCCCTGCACTTCCACGCGCTGCTGACCGTCAGCGACCACAGGCGACTGTCCCTGCGTCGGCGTTGAAGAAATCGGCGGCAACGAAATATCCTGCGACGTATTGCCCGCGG [...]
+CCAGTTAGCTCAACAACTCAATATGGAATTTTACGATTCTGATCAAGAGATTGAGAAACGAACCGGAGCTGATGTGGGCTGGGTCTTCGATGTTGAAGGTGAAGACGGCTTCCGTAATCGTGAAGAAAAAGTTATCAACGAATTGACGGAAAAACAGGGTATTGTGCTGGCAACCGGCGGTGGCTCTGTAAAATCGCGTGAAACGCGTAACCGTCTCTCCGCGCGTGGCGTCGTGGTCTACCTTGAAACGACCATCGAAAAACAACTGGCGCGCACGCAGCGTGATAAAAAACGCCCGCTGTTGCAGGTTGAAGCACCGCCTCGCGAAGTTCTGGAAGCGCTGGCTAACGAACGCAATCCGCTGTACGAAGAGATTGCCGACGTCACCATTCGCACCGACGATCAAAGCGCTAAGGTTGTGGCAAACCAGATTATTCATATGCTGGAAAGCAACTAATTCAAGCAGAATACGCTGGGTAAGCGGGCACAAGT [...]
+NODE	223	1374	68171	67528	0	0
+CACAATGACGACCGGACGCAGAGAAGGACAAAGCGTTTTGAACCCCTTATCATTTTCGCTGGAGTAAGATTCGCGCATTACCCGGCGCAGGACATCTTCAATGAGATCGGGCGGGACACCGATCGCTTCTGCTTCCGCCCGTCGTGAAGCCAGCATAGAGGCCTCACGCTCTGGCACGTAAATAGGCAGGCCAAAACGGCTTTTCACCTCGCCGACTTTGGCAACCAGTTCCAGGCGCTTAGCCAGTAAATTCAACAACGCTTTATCGACATCATCTATTTGATCGCGTAATGCGGTCAATTCAGCAACCATAACAACCTCTTATGCGACGCGCACCGCCAGCTGGCCGCTCAAATCTTTATGAATTTCACGCAACAGGGCATCGGTCATCTCCCAGCTAATACAAGCATCGGTGACGGAAACGCCATACTTCATTTCGCTGCGCGGCTGTTCGGAAGACTGATTACCCTCATGAATATTACTTTCAATCAT [...]
+TAAAGCGGCCTTTCCGTTGAGTCTGGCGCAGGAAGCGCAGATAGCGCAGTCCCGGGGAATCATTTCTGACATTATTGCCGGGCGCGATCCGCGTCTGTTGGTGGTATGCGGTCCTTGTTCTATTCACGATCCTGAAACCGCTCTGGAATATGCCCGTCGATTTAAAGCCCTTGCCGCAGAGGTCAGCGATAGCCTCTATCTGGTAATGCGCGTCTATTTTGAAAAGCCGCGGACTACCGTCGGCTGGAAAGGGCTGATTAACGATCCTCACATGGATGGCTCATTTGATGTGGAAGCCGGGTTGAAAATAGCGCGTCAGCTACTGGTGGAACTGGTGAATATGGGGTTGCCATTGGCGACCGAAGCGTTGGATCCGAATAGCCCGCAATACCTGGGCGATCTGTTTAGCTGGTCGGCGATAGGCGCGCGCACAACCGAATCGCAAACCCACCGCGAAATGGCGTCTGGTCTTTCTATGCCGGTCGGCTTTAA [...]
+NODE	224	9020	465235	461224	0	0
+GAATCACTACCACGGAGGCGCATTCTAGTGGTTTTCAGCTATTCGTCAATAGTTAATTGCATGGGATAGATTGATTGCTGCAAAAATGGGCGCGAGACGTAGGTTGGATAAGACGCTTTGCGTCGCCATCCGGCACATGCAACCAGATGGCGCTGCGCTTATCAGGCCAACTATTTCTTCGCCTGACGGGTCATCACGGTACGATAAACCTTAAAGCGCCCGGTTTGCGCGATGACTTCATGGAAGCCAAAAGTCTCATCCAGAATCTTAGGATAGGGCAGAAAGGCGTTCGCCACGATGCGTAACTCCCCGCCGCTGTTGAGATGACGTACCGCGCCGCGAATGAGCGTTTGCGCCGCATCGAGGCTGGTTTGCATTCCGTCGTGGAACGGCGGGTTGGAGATGATCATGTCAAAACGTCCTTTGACTTCCGAAAAGACGTTGCTGGCGAATACCTCGCCTTCAAGACCATTAGCGGCAAGCGTAGCGCGG [...]
+ATGCCTTTTACCATGCCGGGATCAGCGACATTCTGACGCTGGACGAAACCATCAAGCGTAATCCGCAGGCGCTGGTTCAGCTTTGTCTTGGCGCGTTCAAAGCCGGGATGCGTGAATTTACCGCCAATGTCAGCGGCAACGATCTGGTGCGCGTCACCGGCTATATGGTGCGCCTGTCGGATCTGGCGAAATTTCGCGCCGAAGGCTCGCGCACGAATACCACCTGGCTGGGAGAAGAAGCCGCACGTAATACCCGCATCCTGGAACGACAGCCACGCGTAGTCAGCCATGAACAACAGATGCGCTTTAGTCAGTAAGATCATTGCGTTTTCCTGCGTCGATGGGCCAGGCAGCCGCCTGGCATTATTCTTACAGGGCTGCAATTTGCGCTGCAAGAATTGCCATAACCCGTGGACGATGGGACGCTGTAACGACTGCGGGGAATGCGTATCGCAGTGTCCGCACCACGCCCTCAGCGTTGATGGCGGGAAA [...]
+NODE	225	25075	1761650	1744970	0	0
+GGGCAGCGCAAGTCAATCCTGGCGGATTCACTACCCCTGCGCGAAGGCCATCGGTGCCGCATCGAACGGCCGGTTGCGGAAAGTCCTCCCTGCGTCCGCTGATGGCCGGCAGCAGCCCGTCGTTGCCTGATGGATCCAACCCCTCCGCTGCTATAGTGCAGTCGGCTTCTGACGTTCAGTGCAGCCGTCTTCTGAAAACGACACAAGTTGATTGGAATTTAATCTATATACATGTTAAAATACTTGTATAAAATTCTATGTTAAAAAAACGTACATGAATCAAAAAATTGGCTACGCTAGGGTTTCAACCGACGATCAGAACCTGCATTTGCAGAGAGATGCGTTGGCTGCTGCTGGTTGCGAGATCATTTACGAGGACAAGGCCAGTGGGAAGAATGCCGCTAGACCCGAACTTGATAACTGCTTAAAGGCTCTTAGACCTGGGGATACGTTGGTCGTTTGGAGGCTGGATAGGTTAGGCCGTAGTTTGGC [...]
+CGTTTTGCTAATTATTGATCCACATTTGCTCCCGAGTTAAAATTTTGGAGTAACGGGAGCAAAGCGGAGCAATTATGAAGGTATCAGTAAACAAGCGTAACCCTAACTCGAAGGGGCTCCAGCAACTTAGGCTAGTGTACTATTACGGAGTTGTTGAAGGTGAGGATGGCAAAAAACGAGCAAAGCGCGACTACGAACCTTTAGAACTCTATCTCTACGAGAACCCAAAGACACAAGCAGAGCGTCAGCACAATAAAGAAATGTTGCGTCAGGCTGAGGCTGCGCGGTCAGCAAGGCTCGTTGAATCTCACAGTAATAAGTTCCAACTGGAAGACAGAGTAAAACTTGCTTCGAGCTTTTACGATTACTACGACAAGTTAACTGCCAGTAAAGAGTCTGGAAGCTCTTCAAACTATTCTATTTGGATCTCAGCAGGTAAACATCTTCGGAGCTATCACGGAAGAGCAGAGCTCACTTTTGAAGAAATTGATA [...]
+NODE	226	22	1392	1300	0	0
+ACCTGCCAATAAGGTGGTAAGC
+TTTATGACGATCAAGGGCGACT
+NODE	227	8769	506505	502908	0	0
+TAGTCACCGTGGTGCAGCCCTTTTGCACGATGGTGCGCATGATAACGCCTTTTGGGGGCAATGTGAAAGTTGGCACAGATTTCGCTTTATATTTTTACGGCGACACGGCCAGCAGAATTGAAGATCTCGTTACCACGACGACCGACCATGACCAATCCGGGAGAGTACAAGTATGTCCGCTGAACACGTTTTGACGATGCTGAACGAGCACGAAGTGAAGTTTGTCGATCTGCGCTTCACCGATACCAAAGGCAAAGAACAGCACGTCACGATTCCTGCTCATCAGGTAAATGCCGAATTCTTTGAAGAAGGCAAAATGTTTGACGGCTCCTCTATCGGCGGCTGGAAAGGCATTAACGAATCCGACATGGTGCTGATGCCAGACGCATCCACCGCAGTGATTGACCCGTTCTTCGCGGACTCTACCCTGATTATCCGTTGCGACATCCTGGAGCCTGGCACTCTGCAAGGTTATGACCGTGACCCACGTTC [...]
+CGCGTAAAGAGGCGCAGAAGTATATGGATCTCTACTTCGAACGCTATCCTGGCGTGCTGGAATACATGGAGCGCACCCGCGCTCAGGCAAAAGAACAAGGCTATGTGGAAACGCTGGAGGGACGCCGCCTTTACCTGCCGGATATTAAATCCAGCAACGCGGCGCGGCGCGCGGGGGCGGAACGCGCGGCGATCAATGCTCCCATGCAAGGAACGGCTGCCGATATCATCAAGCGCGCCATGATTGCCGTCGATGCCTGGCTACAGGCCGAGCAGCCACGCGTGCGGATGATTATGCAGGTACACGATGAATTAGTGTTCGAGGTGCATAAAGACGACTTAGATGCGGTAGCAAAACGTATCCATCAGTTGATGGAAAACTGCACGCGTATTGATGTGCCGTTGCTGGTGGAAGTCGGTAGCGGAGAAAATTGGGATCAAGCGCACTAAGCATTTAAGGAATAACGCGCTTTTTTCGTAATTAAGCAACATA [...]
+NODE	228	7668	408131	400923	0	0
+GGGGCTGCCTTTTGGCATTGCCGATACCAGCGCCAGAATCAAATTGGCCCCCTTTGGGTTGGCGGTCGCGGTGATGTGTTTTATCCTCGCGATGATTATTTTCCTGCAACAGCGTATCTCCCGTTACGCGTTACTGGTAGGGACCGTGGTCGGGTGGGGGCTATGGCGGTTATGCTTTCCTTCATCACACTTACCGCCGGGTGAATTAAGCTGGCGATGGTTTCCGCTGGGCAGCCACGGCACGCTGATGCCGGGTATTATTGTGACGGCGGTGATGACGGGGTTAGTCAACATCAGCAACACTTACGGCGCCATCCGCGGTACCGATATCTTTTATCTGCATCAAGGGTCGGGCAGTTCTCGTTATCGCCGAAGCTTTATGATTTCCGGACTGATGACGTTAGTGACGGTGCCTTTCGCGGTCGTGCCTTTTTCGCCTTTTGTGTCTTCCATTGGTTTATTAACGCAAACCGGCGACAGTTCTCGCAAATC [...]
+GTTGCTGAACATCCTCGCCATAGGCGCCGAAACGCATCACTTTGCCGATCCCTTCGTTGAGATTGCAGTACGCGCGATTGCCGTCGGTGATATTTTCCACGACCAGCATCGGCATACTGGCTGAGGTAATACCGCCCATCGGCCCCACGGCGTTAACGTGATGGCAGGGAATAAAGTTGACCTTTCCCTGCTCTAACAGCGCGAGCGCGCTCATTTCATCTTTGGCCCATCCTTCAAACAGGCATGCGCCGATACAGGCGCCTTTCATCGGGCCGGTCATCTCTTGCCAGCGCATCGGCGGGCCGGCATGAAGAAGCGTTTTCCCCTGATTGAGCACGCTAATTAATGAAGAAGCTGGCTTCACATCCAGCCAGTGCGGACGTGCGCGACGAATTTGTTCGATGACTGCAGCGTTGGCTTGCGCCACTGATGTAAACATGGGAACCCCTTATTGCAAACGTTCTAACAGACGAGCCAGTTTTTTATTACCGC [...]
+NODE	229	6417	319468	312897	0	0
+GTCGATTTTTCGTCGCTTGACAGTTCTGATTTCACTCCCGACGGCCAGTCTGCTCGTAAGCCTCTGGTGTTTGAGCTCACGGATTGCGATTCGGCGCTGAGTAACGGGGTGCAGGTGACTTTCACTGGAACCGAAGCGACCGGAATGCGCGGTATCCTGGCCATCGATAGCCACTCAGGCGCTTCCGGGATCGGGATTGGTATTGAAACGCTATCCGGCGTTCCCGTGGGCATGAACGATGAAGAGGGTGCGATATTCACGCTGGTGACGGGGAATAACGCGCTAAGCCTGAATGCCTGGGTACAACGCCTTCCTGGCGAAGATCTGGTTCCGGGAACGTTCTTCGCAAGCGCACTAGTTACATTTGAGTATTTATGATGAGAAACATACAGATTTTATTTTTACTGTTGGCGGTCGTTTGTTGCCGTTCAATAGCGGCGGGACCCATGCTGAAAGCGACATTTTCAAGCACCACGATGTATTATGGTATTG [...]
+GACGCGGTCGCCGTAGAGATGGAAGCCACCGCTATCGCACACGTCTGCTATAACTTCAACGTGCCGTTCGTGGTGGTACGCGCTATTTCTGACGTGGCCGATCAGCAATCGCACCTCAGCTTTGACGAATTCCTCGCGGTGGCGGCGAAACAGTCGACTCTGATGGTCGAAACGCTGGTACAGAAACTGGCGCATGGCTAAGCAAATGTTCAGGGCGCTGGTCGCCCTGCTGCTTACGCTCCCGGTGTGGCTTTACGCTGCGCCGCGCGTAATTACCCTCTCTCCCGCCAATACGGAGCTCGCTTTTGCCGCCGGGATTACGCCCGTTGGCGTCAGCAGCTATTCCGACTACCCGCCCGAAGCGCAAAAAATAGAACAGGTCTCTACCTGGCAGGGAATGAATCTGGAACGCATTGTGGCGCTGAAGCCGGATCTGGTCGTCGCCTGGCGCGGCGGTAATGCGGAACGCCAGGTAAACCAACTGACGTCATT [...]
+NODE	230	12488	687380	674457	0	0
+GAATAACTTATCAATGCCGGAATGGATTGCCGTTATTGCTGTTGGCGCGAGCGGCGGTCGGCTGTACTGCCGGCGCGGCGCTATGAGCATTATAACCGTCTGCGGCAGCATCCTGCTCTGGCGTTTCCGGCGCTACGCTTTCCGGCGACGTCGGGATAGGTTTACCCAACGTACTGTTAAGCGCGAGCAGATCCTGCTCGTTCAGCGTACCGAGCGCATATTTGATATTTAACTGATTAATCAAATAGGTATAACGCGCGTTGGCCAGTTGCTGCTTGGCATCATACAGAGTGGTGGTGGCATCCAGTACGTCAACAATGGTACGTGTACCGACCGAGTAACCGGCTTCCATTGCATCCAAAGAACTTTGCGCGGAAACGACTGCCTGTTTATACGCGTTGATGCTGCTGATGGAGGCGTTAATATTGTTAAAGGAAGAACGTACGGTCTGCACCACGCTACGGTGCGCGCTTTCCAGCTGTTCGCTTGCGC [...]
+AGCTGTCGCCCGCTTTATAGTTAAGCCCCGGCGCATCAATATCATGACCTTTGGCGCTGCGCACCCAGCCCATCTGCGACAGCACGATAGTCACCGGTTCGGACGGCAGCATATCGTGTTCGCTCATCGCTTTAGCTTCTTCGCGCTCACGCAGCGGAGAACGGCGATCGTCGCCATAGGCATCGGAATCTGCCTGTAGCTCTTTTTTCAGCAAGGTATTCATTTTGCGTTCGGACGCGAGAATGCCCTGCAACTGGTCCCGCTCTTTTTCCAGCTCGTCCTGCTCACCGCGAATTTTCATCTCTTCCAGTTTGGCGAGATGACGCAGTTTCAGTTCGAGGATCGCTTCCGCCTGGGTTTCGCTGATGCCGAAACGCGACATCAGCGCGGGTTTCGGCTCATCCTCGTTACGGATAATCTCAATCACTTCGTCGATGTTGAGAAACGCCACCAGCAAACCTTCGAGGATATGCAGGCGCTTGAGAACCTTCT [...]
+NODE	231	3644	174879	172549	0	0
+TAAGCGGCGTGGCGCTGTCGGTGTTGGCGGCGCTGTGTCCGCTGACGAGCCGCGGCGAAAGTTATTTCAACCCTGCGTTTTTGTCGGCGGATACCGCGTCTGTGGCGGATTTATCTCGCTTTGAAAAAGGTAATCATCAGCCTCCCGGTATTTACCGGGTGGATATCTGGCGTAACGACGAATTCGTAGCGACGCAGGATATCCGTTTTGAGGCGGGCGCCGTGGGCGCCGGCGATAAATCCGGCGGCCTGATGCCTTGTTTTACACCGGAGTGGATTAAACGGCTGGGCGTGAATACCGCGGCGTTCCCTGTCTCAGATAAAGGCGTCGATACCACGTGTATTCACCTTCCTGAGAAAATCCCGGGCGCGGAGGTCGCGTTCGATTTCGCGTTGATGCGCTTAAATATTAGCTTGCCGCAGGCGTCATTGCTCAACAGCGCGCGTGGCTATATCCCGCCGGAAGAGTGGGATGAAGGGATACCCGCCGCAC [...]
+ATTATGCCTCCTTAATCATAATCGACTCGTAGATAGCCGCGCGCAGTAAACGGCCCTTCCGCCGGTTTATTCCCCGTCACGCTGATCGGCCAGGCGCGAATACCTACGCGAGCGGCGGCGTTATCATCAAGATGAAACGGAATTTTACTCGACAAATTATTGGGTGTGAGCGGCGTACCGTTGCTATTAGCAACCACAAAGCCTAAATCCGGATTATCGGACACCATCGCCTGCCCTGAGGCCTTTTCGGCTTCAAGCCGCATCGATAAATAGGCCTGCGCCGCGACGTTGGTACATTTGATAGCGATGGTTTTCGTTTGCGGCGTGACGCCTTGCGGACGATTACCCGCTCCCGCCTGACTAAATAACGACGCGCCGATATCGCCGAAATCAAACTCCACGACCTGTCCGGCATTCACTTCGCAGTTTTGCGGCACTTCTACTTTGCCACTGTAGCTAATGGTATATACCGGCGTGCTCAACGCGTCGCCG [...]
+NODE	232	2153	104539	101703	0	0
+ATTTTTCTCAATAACTACGTTTTGCCGTGCTTACTGACTGAACAGATTTAAACATCGCCAACCTGCTGTCCAGCGCCTCGGTGTAGAGCATCGTATCTACCCCGACCGCGACAAAATTCGCGCCCCACGCCAGACATTTCTGCGCCATTGCCGGATCGACCGCCAAAAAACCCGCCGCTTTTCCGGCGGCGCGAATACGATAAATACACGCTTCAATGATCCGCTGCACTTCCGGGTGTCCGGCATTATCGGGGTAACCCAATGAAGCAGAGAGATCTGCCGGACCGATAAAGACGCCATCAATGCCTTCAACCTCCAGAATCGCGTCAAGGTTTTCCAGCGCCACTTTGCTTTCAACCTGCACCAACAGGCAGAGCGACTCATTGGCCTGTGCCATATAGTTGTCGATTCTCCCCCAGCGCGCCGCACGCGCCACGCTCGCGCCAACGCCTCGTTGCCCCAACGGCGGGTATCGGGTAGCGGAAACGACCT [...]
+CGTAGTGAAGAAAAACCGCGCACGTTTAATTCCTTTTATGTTGGCGCTGTATGTACTGGCGTTTCTGGATCGTTCAAATATTGGTTTTGCCAAAGAGACCTATCAGATAGATACCGGGCTAAGTAATGAAGCCTACGCGCTAGGGGCCGGTATTTTCTTTGTGGTTTACGCTTTCCTTGGCGTACCGGCTAACCTGCTGATGCGCAAATTTGGCGCAAGAACCTGGATCGGCACGACTACCCTGCTGTGGGGCTTTCTCTCTGCTGCGATGGCCTGGGCGGATAGTGAAGCAAAATTTCTGATAATCCGCACGCTATTGGGCGCGGCGGAGGCTGGATTTTTCCCCGGCATGATCTATCTAACTTCACAATGGTTCCCGCAGCGTAACCGTGCCAGCATTATGGGGCTATTTTATATGGGCGCGCCGCTGGCGTTAACGTTGGGTTCGCCGCTCTCCGGCGCTCTGCTGGAGATGCATGGTTTTATGGGGCA [...]
+NODE	233	8999	465798	461586	0	0
+GCGCTGGAGGTGGTCTTGCCAACGCCCCCTTTACCCGAAGTAACAACAATAATGCGTGCCATAAAAATTCCTTGTTAAAAAGGGATCAATTCAACGGTTGAACTGTCAAAGCGTTGTCTGCTAAACGCAGGCGCGCCGCTTTGCCATAAAATTCTGCTGGGATTTTATCACTCAGCCAGTAAACACCTGCGATAGAGACCAGTTCTGCCGTCAGATGGGTACAAAAAATTTGCGCTTCCCGATCGCCGCTCGCCCCTGCCAGCGCGCGACCTCTCATCATGCCATAGACATGGATATTGCCGTCAGCGATAAGCTCTGCGCCAGCGCTGACGTGACTTGTAACAATCAGATCACATTGTGGAGCATAAATGCGCTGACCGGAACGAACCGGAACATCAATTAATCGCGTTTTTGTGATGGGATTAGCGTTTTGCGGCGGTTCGCTGGGCGTTGCCGGCTCAACGGGCGCAGGCCGAACCGCTTTCTCTTTAC [...]
+TCAAATACCAGGCGCTGGTCACGCCAACTACGCCACTCCCCAGGATGACAACTCGCATAGCCACTCCGTTAATAGTAAAAGAACAATCTTCTGATTACATCTTGATAACCCAGATGAAAATATTATTCAACATATGACTTTTTTATGGTGACGTGCTTCACATATACCCTAAAGACAAGCGATCCCACTGGTTTGGGATCTCCTGCTACGCGGCATGGCTATGCAGCATAAAATGATGCCAATACCCGTTTTTTTGCCGTTCAGATTGGAGGAAATCGCAAAGAAAAGTTTTCACGATCAAGTCGTTTTTTAACATGGTGTTCTATGCTTGAAAGGAGGCGCTCCATACAGAGAGCGTCGCCAACAATGAGGGTGCGCGAATGGCAACGATTGATTCCATGAATAAGGACACCACACGTTTGAGCGATGGACCCGACTGGACATTTGATCTGCTGGATGTCTATCTGGCAGAGATAGACCGCGTGGCGAAAC [...]
+NODE	234	14338	823363	811316	0	0
+TATCGCTCATGGCGTCAGCCGTTATAACAGTGATGCTCTGCGGCGGATAGCCGGTCACCACTCTCAACAAATCGATGCGATTCTGGGCTATGAATATGGCCCGGTCGCTGTTCATCGTGATGACATGATTACTCGATAAGGAACAGGCATATGCTGGAACAAATGGGCATTGCTGCTAAAGCGGCGTCGTATAAGCTGGCGCTGCTCTCCAGCGGCGAAAAAAATCGCGTGCTGGAAAAAATAGCCGATGAACTGGAAGCGCAAATGGAAAGTATCCTCAGCGCGAACGTACAAGATGTTGAGCAGGCGCGAGCCAATGGCCTGAGCGAAGCGATGCTGGACCGCCTGGCGCTGACCCCTGCGCGTCTGAAAGCGATTGCTGACGATGTGCGCCAGGTCTGTAATCTCGCCGACCCGGTCGGGCAGGTGATCGACGGCGGTCTGCTGGACAGCGGGCTACGTCTGGAGCGCCGCCGCGTGCCGTTGGGCGTG [...]
+TCTACAACAGAACACCCGGTTTGGCGCACTTCGCGCCAACTATGACCAGGGTGATAACTATCGTCAGGAAGGGCTGGGCGCGTCCGGCACCCTAGTACTTCACTCTGGAGGTCTGACGGCTGGCCCCTATACCAGCGATACCTTTGCGCTTATTCATGCCGATGGCGCGCAGGGCGCGATCGTACAAAATGGCCAGGGCGCTGTGGTTGATCGCTTTGGTTACGCCATTCTGCCTTCGTTATCTCCTTACCGCGTCAATAACGTTACGCTCGATACCCGTAAGATGCGCAGCGATGCCGAACTGACGGGAGGAAGTCAGCAGATTGTGCCCTATGCCGGCGCCATCGCGCGTGTCAATTTCGCCACTATCAGCGGCAAAGCAGTGCTGATCTCCGTGAAGATGCCGGATGGCGGCATACCGCCAATGGGCGCTGATGTTTTCAACGGTGAAGGCACAAACATCGGCATGGTCGGCCAGAGTGGGCAGATTTA [...]
+NODE	235	2100	407554	404672	0	0
+ATAATCAGAAATGGCCGTAAATGTGGTAATGGCATTCAGGACCGTACCTACTGGCAACTTCATCATTCCATCAACACTTGCCCCGTAAGGATTACTGGCTGTATATCCCACAACACCAGACGGTACGCTCTGGGTACTCCCCTTAGTTACCGATGTCGCGCTACTTCCTGCTCCACCCTGTCGGGCTTCTGCAAATTGCTGTTCCCCACGTATCCGGGCTTCTTCCAGTCGTCCAGGCAAAGCGGCTTCATCAGCACGAACTTTTGATTCCATCATCTGGATACGTTCCTGCAATCCATTCTGCTCTGCGTTTATATCGCTGATACGCTGCGCATTAGTCCGGTTTCCGGTAAACGATGCTGCCGGGGCATATGCATTACCACTACCCGCAACCGTATTTTTAGTGCTGTCAAAATTTGTTTTATCTGACCTTGCACGCAGTGCTCGGTTAATCTCATCAGCCTTAAAGCGTGCCCTGATTTCATCAGGTGA [...]
+ATGTCGCTCAGAAAGTTGTGGATATTCAGGCCGATATGGCAGCAAAAAGGATTTATATAGAAATAAAAGATATTGACCATTATGACGCGATAGAAGGTCAGTTTGATGGTGATGTTAAACCTGTAATTCGAACGCTTGTTACTTATCAGGAGATCACAAGGGATTATCAGGGTAAAGAAATTTCATCGGTTCAACAAATGAGGCGTCTTCAATGGACGTTGTTACAACGTAACGAACTTAGTAAACAATCGCTGGACTGGCTTAACATCAATCCGCTGGGAATCCAGATTATTGATGATAAATCCGTACAACAGTAAAGGAACTTAATCATGTTAGCGAAAAGAACTCTCTTATTTTCTGGAGTCCTGGCTGTTGTCATGACTACGTTCAGTGCAACAGCACAGCAATGTAGGGTGGTTAACTGGCGGCCTGGAACAATAGTTAAAGTGCAGTCCGCTTTATATCTGGGAACTCGTATAGAACTGCCGGAAG [...]
+NODE	236	12934	749246	744588	0	0
+TGGAAATGATATGTTTTTGATATAGCGGGTTAGCCATGTTTATCTCCTGACGCCTGGGCAAAAAAAAGCCCCTCAATTGAGGGGCTTGGTATTGGTTTTCAACGGAAAGAAAAACGGCAGGCCTGCGTCTTTTTTCAGACGCGGTAAGACAGAATGTCGTACACACTGAACCATGCTTCCTCCCGGCAAATTGTCCGCGATTATACCCAGCTCTGTTTTGGGATCAAGCGAATTAATGCATGATTTACTTGTCGCAAACGGTTCTTATGAATTTAAATTCATTTTAAGCAAATAATTAATTTGTTTGTGTACCAGCGCCGTGCGCTGAACGACCCGCGGTGCGACCCAGACAATACTGCTACCGGCAACGACGCCGAGAATTTCCGGCAATGCGTGGTAATCCAGAATTCTCGCGACGGCGCGACCATAACCTGCCGCCGTATGGATAAGGATAAATTCGCTATTATGTTCAACGCTAACGACCATTTCGGC [...]
+GTTCACCTGGAACCAGTTCTGCGACTGGTATCTGGAGCTGACCAAGCCGGTAATGACCGGGGGTTCCGAGTCTGAACTGCGCGGCACCCGCCATACGCTGGTCACCGTACTGGAAGGTCTGCTGCGCCTGGCGCACCCGATTATTCCGTTCATCACCGAAACCATCTGGCAGCGCGTGAAGGTCATTTGCGGTATTACCGCCGATACCATCATGCTACAGCCGTTCCCGGAATATAACGCCGCACAGGTGGATGAAGCCGCGCTGGCCGATACCGAGTGGCTGAAGCAGGCGATCGTCGCGGTACGTAACATTCGTGCGGAAATGAACATCGCCCCGGGCAAACCGCTGGAACTGCTGCTGCGCGGCTGTAGTGAAGAAGCCGTTCGTCGTGTTAACGACAACCGTAGCTTCCTGCAAACCCTGGCGCGTCTGGAAAGCATCACCGTGCTGCCAGCCGATGACAAAGGCCCGGTTTCCGTGACCAAAATCAT [...]
+NODE	237	10813	546997	541745	0	0
+CCGCCGAGGTAAACGTCGCCAGCGTTGCGCCGGGCCGCGCCAGCCGCGCCATCGCGTTAAACAGGTTTGGCGTCCACATATCCGGATTTTTCGCCGGGGCAAAACCGTCGAGGAACCAGGCGTCGACTGTTTGATTCAGCGTGGCGTCCAGTTGGTCGGTCAGCTCATTAATATCGCCAAACCACAAATCCAGCGTCACCCGGCCCCGATCCAGCAATAGGCGGTGGCACCCCGGGAGCGGCAGCGGCCATTGCGCCTGCAGCTGCTCTGCCCAGGGCGCGAGCTCCGGCCAGTGTTGGTGCGCCAGCGCCAGATCGTCGCGCGTTAACGGGAATTTCTCAAAACTGATGAAATGTAACCTTTGCAGCGTCGCTTGTGGGTGCGCAGAACGAAAGCCGTCAAACGCCTGCCACAGCGTCAGGAAGTTGAGTCCGGTGCCAAAACCGCTTTCCGCGACTATAAATAATGGATGTGAATGTACGGGAAATCGCT [...]
+ACGTTCCAGCTCAGCGCGGTATAAAACCTGACCGCAGCTATCACACTTGGTCCACACCCCTTCAGGAATGCTTGCCTTGCGGGTGGGAGTAATGTTGCTTTTAATTCGTTCAATCCAGCTCATTGGTGACCTTTCTGCCTGAACCTTAGTCAGCTTTATTATAAGGGGCGCATAATGCCATTTTTGCCCCCAACAGACCATGAATGTTGCACATTAAAACATAACAGCCCGAAACTTTGGATAAAAAAGTGGTCGAACCGCTGAGTTACTTTCTATTTTGCGGCACGCGACGCAGCGCGCTTATGCCGGACAATCTCAATGACGCCAGGTAATATCGAAACCACGATAATCCCCACAATCAGCAGCTTAAGGTTATCCTGAATCAACGGTATCGTACCGAAGAAATAACCGGCGTAGGTAAAGAGCAGCACCCACAGCAGCGCGCCGATGACGTTATAGGCGGCAAAATGCCGATAGGACATGTGCCCCATC [...]
+NODE	238	2547	139236	138190	0	0
+GTCCGCTGCCGCTTTTACCGCCTCGGCCTCTGCTTTCTTCTTCGCGTCCGCCGCCGCTTTCGCCGCTTCGGCCTCCGCTTTTTTCTTCGCGTCCGCCGCCGCTTTCGCCGCTTCTTCGGCCTGTTGCTGCTGCTGTTGCGCCAGTTTTGCCGCTTCTTCAGCCTGCTTTTGCTGCTCCTGAGCCGCTAAACGTTCTTTCTCAAGTTGTTTCAACCGCTCCTGTTCGGCAGCCTGCTTCTGCTGCAGCTCCTCTGCTTGCTGCTGTTGCAGCTTTTTACGCTCTTCTTCCGCGCGTCTGGCGCTGGCCTGTTGATCCTGCTGACGGTTGTACTGTTGCACAACGGCGCCAGGATCGACCATCACCGCGTCGATAGCGGAACCGCCGCCGCCGCCGGCAGAAGCCTCTATATGCTCATCAAACGAACTCCAGATCAGCACTGCAAATAAGATGATATGCAGCACGGCTGAAATAATTATCGCCCGTTTGAGCTT [...]
+GCTTGAAATCTGGCACGGATTATTGCTGATGTGGGCGGTTTGCGCAGGCATAATCCACGGCGTGGGTTTTCGCCCTGAATCCGTACACTGGCAAGGGATTTTTTGTCCGCTCCTTGCGGATATCGTCCTTATCGTCGGCCTGATTTTCTTCTTCTTGTGAATAAGAAACCTCCTTAAAAATATAGGGGCTTGCATAAGCCCATATATTTTTACTCTCCCTTAACTTCCCCCCATTCCCAAGCCTCATTCCCACGCGTATAGTAGCAACGTTTAAAAGCTCTACTTTTGTTGCATTACCGGGATGTAAAGTGAATACAAGGCGATATACAACGGCATTCTTGAGGCATTACGGCGGCAAGCGGATGACGCCAACAAAGAGGCTGCAGGGATGAATAAGTATATGTTTCGATGGCCAATTCGAGTTTATTACGAAGACACGGACGCCGGCGGTGTGGTTTATCACGCCAGCTATGTCGCTTTTTATGAAAGAGC [...]
+NODE	239	10559	633191	627653	0	0
+GGAGCATATTCGTGGAGCAATGGCGCGTTATATTTGTCATAAATTCGCCAATGGCGGCGAATTACGAGCAGTAATGGTATCTGCTGAAGTTGAGGATGTTATTCGCAAAGGGATCCGTCAGACCTCTGGCAGTACCTTCCTCAGCCTTGATCCGGAAGCCTCCGCTAATTTGATGGATCTCATTACACTTAAGTTGGATGATTTATTGATTGCACATAAAGATCTTGTCCTCCTTACGTCTGTCGATGTCCGTCGATTTATTAAGAAAATGATTGAAGGTCGTTTTCCGGATCTGGAGGTTTTATCTTTCGGTGAGATAGCAGATAGCAAGTCAGTGAATGTTATAAAAACAATATAAGGGCTTAATTAAGGAAAAGATCTATGCAACATTTGGATATCGCTGAATTAGTTCGTTCCGCACTGGAAGTAAGTGGTTGCGATCCTTCACTCATCGGAGGAATAGATAGCCATTCAACAATTGTTCTGGATTTA [...]
+CTTTAATACCCAGACTTTCCGTGGCGCTGGTTCCGGCATTAGATTTAAGCGTCGCATCATTAAGATTTTTCGTCGCATCGGTACCGGTTTTCTTCATATTTAACGATTTCAGAGAATCGACGCCTTCAGCACCGAGTTTGACGCTATTCTGCCCGTTCAGCACGTTTTTAATACTGTGGCTTTCAGTGGTCAGTTTATCGATCTTCGCGGCATTATGTTTAAGCGCGCCTCTTTCATTCTGCAGCCCCTTATATTCCAGTTTGGCGCCCACGCCAGTGATCCCCAACTGAAGCGCGCTCTGGGAAATACTACCGGACAACGCATTCATCCCTTCGCGCATCATGGAGCTTGCCGTCGTTTTAGCTGCATCAAAGCTGACTAATGACAACTTACCAGACAGTTTGCTATCAGCCTGGTTCAACGTCAGCATTAACGTATTCGCGGCAGCCAACAGCGCAACGGCACTGGAAGACATTCCGCTAATATCAAAAA [...]
+NODE	240	3593	194368	193446	0	0
+TTAGCGGCGTCTCATAACTTGGGATCGCATCATAATCATCTTTTCCCCAAACGGAATACCTTCCCGCTTCGATATCAAAACGATGTTTGAGCCATCCCGCAACATGACTTGCGAAAGCTTCTTTTCTTCTTAATGGCCAATCAACAGAAGCCAAATTAACATCTAATAAGTACCGCCCTTCTTTATTAACGTTGATCATTCCAGCCTGCAGTAACGCCCGTACCACCTGGGATTGGTTATCATGAATCCAGACCCAGGCATTTCCAAATTCCATTGCATAACTATCATTTAGAAAATCTTTTTTTGAGTATAATTCACTTACATAATCATTGATAGAGTCAGCATAATTTTTTACTTTAGATGCAGATAAATCAAAAAAAGATTCAAATTCGAAAGTATTGTCATTAATACAGGACAGTAACGCACCCGGTTCCGAGAGCTGGGTCCATGATTGTAAACTCTCTACAGCTATAATGAATTTGAAAGTATTTC [...]
+CACGGCATCCCGCCGACGATCCAGTTAGGATGGGGGTTCTTACCGCCAAATATGGTATGGATTTTGACGATCTCTCGCTGGAAGTCGAGGGCTTCAAGATAGTGGGCAAAACCCATCAGATTAGCCTCTGGCGACAATTTGTACTGTGGATGTCCCCAATAGCCGTTACGGAATATCCCAAGCTGGCCGCCATCGACAAATTTCTTTAATCGATTTTGTACGTCAAAGAAGTAGCCCGGCGATGACATCGGCCAGGTGGAAAGGCTTTGCGCCAACTGCGAGGTGGCGCGCGGATCGGCTTTCAGCGCATTCAGAACATCAATCCAGTCCATACCGGCTAACTGATAAAAATGGACCAGATGATCGTGACACCACAACGTAGCCAGCATGATGTTACGTATAATATTGGCGTTATCCGGCACCTGGATACCAATCGCATCTTCGATAGCGTACACCGATGCCAGAGCATGTACCCCGGTACATACACCACAA [...]
+NODE	241	12532	726633	713620	0	0
+GCTATTCCGCCGCATTCTCGCCTTTTCTCGCTTCAATTTCGACCAGTCATCCTCTATTCTGAACGCATGTTGTATTTACCACTGGGTCCTGGAAGACAAATATGAAACGGACAAAATCCATCCATCACGCATCATTTCGCAAAAGCTGGAGCGCGCGGCATTTAACGCCGGTCGCCCTGGCGGTTACGGCTGTTTTTATGCTGGCTGGCTGTGAAAAAAGCGATGAAACCGTATCGCTGTATCAAAACGCTGATGACTGTTCAGCGGCGAATCCGGGCAAAAGCGCGGAGTGTACAACCGCGTATAACAATGCGCTGAAAGAGGCCGAACGTACTGCGCCTAAGTACGCTACACGCGAAGATTGCGTCGCTGAGTTTGGCGAAGGCCAGTGCCAGCAAGCGCCCGCACAGGCTGGCATGGCGCCGGAAAATCAGGCGCAGGCCCAACAATCCAGCGGCAGTTTCTGGATGCCGCTTATGGCAGGTTACATGA [...]
+AGTCATGGTGCTGAACTTCGAAGATGGTTGTTCCACGACCAATATCATCAAAAAGATCCAGACCGAGAGCGAGAAGTAAAACCGCGACATCAGGCGTTACAGACGCGGCGGGCGCTGATTTTGAAGGCGCGTCGGACATTTTGTTTCGACGCGTATCTCGCGGTTGACGCTGCTTTTTTTTCGACCTAAAGTAAAGGAATAAGGGTGAGAGGGGATCTCTCCCCCCTCTGATTGGCTGTTAGTAAGCTGGGAAACTTATCAGTAACAGAACAATCAGTATGATGACCTGGTGCATCATAACCCTTTCCTTATTAAAGCCCCTTCCTCGGGAGGGGCTTTCCCGTTTCAGCCCCTTGCTGACATCGCGATTGTTGGTGAGTGGCCTGTCTGGCGCAAGGGCTTTATCCCGCCGATTTTGCGTTACTGGATCGCCTACGCAAAATGGCCTGCTGGTCATAACGCTTTGTACAGACAAGGTGGAAAAAAGATAAA [...]
+NODE	242	46	4542	4433	0	0
+GACTTTGGTACAGGCCGGGTCTTCGCAGTGGTTGCACGAAATGGAG
+CGAGCGGCGCGATGCACAAGCGCGATGACGGTTTTGTGGTGGTGAA
+NODE	243	6871	352539	346777	0	0
+CAGTGCACGTCGATGCGGCCGTGAAACATGGCGCAACCCGGGAAGAGATTTCTGAAGCATTGTCCGTGGCTATAAAAATGAACACTGGGGCAGCCCTCACCTACACAGCACGCGCACTGGATGTGTACGACAACCTGCCGAATAAATAACGGTATCTCTGCTCTAAGCTACCGCCATTTTAGGGGAAATGGATGGTACTATCCGTAATTTAGTGCAACCGTTTTTCCTTGAATACGCCAGTAATACTGTCAGGAAAGTACAGTTTCAACTTTAGCAGGAGATGGTCAGAAGAAGAAACTGGCGCTGCAAGCCGCGCCAGTTCTGAGTTTGGCAGTGGTTACCTTTCATCAAAAGGTAACCAGTACGCATCAGTGCTTCACGATATACATTGTACGGCTATAGGCCACATCTTCCGGGTTAGTAATGGGGTATCCCTTTACCCACGGTTTAATTAACCGGCCATTGGTATACTGATAAATAGGCGCTATAGGC [...]
+CAGGCGGGGATTGATCAATCACATCCGGCATTACAACGTTGGTATGCCGCTATTCACGAAACGCAAAACGACAGGGAAATCGTCGGTTTGTATGCGCATCTGGTACAGCCGGTACTTGACGCGCAGGCGCGACGTGAGATTAGCCGTTTCGCCGCGGAATCGACTCTGATGATCGCCGTCAGCCCGTTAGCGTTGGTGGATATGGCGTTTATTGCCTGGCGTAATTTACGCCTGATTAACCGTATTGCAACGCTATATGGCATTGAACTAGGCTATTACAGCCGCCTTCGTCTGTTCCGTCTGGTGTTGCTGAATATCGCGTTCGCGGGAGCCAGTGAGCTGGTGCGTGAAGTCGGTATGGACTGGATGTCTCAGGATCTGGCCGCACGCTTGTCCACGCGCGCGGCGCAGGGGATTGGCGCAGGCCTCCTTACCGCTCGACTGGGAATAAAAGCGATGGAGCTATGTCGACCATTGCCGTGGATCGACAAC [...]
+NODE	244	907	47385	46794	0	0
+GGCGGCTTTCGGCGCATCCACCACGTTGCAGAAGATACGGCGTGACTCCGCCGCGTCGCTGACGCGCTGGTTGACGGTATCGTCGTCAGTGGCCGCGATCGCCAGCCAACACGAGTCGAGAAGCGTTTCGTCGAACGGCCCCTCAACCAGAGTCAACATGCCTTCATTTGCCCATACGGTGAACTGTGGAATAAAGTTCAGCGCATTGACCGTTAAACGTGCGCCTGCTTCCAGCAATAACCGTGCTTTGCGTTCTGCGACATCGCCACCGCCGACGATCAGACAGTCGCGGTCGCGTAATTGACAAAATATAGGCAAATGGTCCACGACATTACCCCTTAATGGTTGGCTGTAACCTTAATTTGGTTGGTTTTTTGCGGAACAGGACGCTCCGATTTCGGCGTAGCATACCAATAACCCAATCCCATGAACACGACGCCGGACAAAGTATTACCCAGAGTGACCCATAACAGGTTGTGTCCGATTCCGGAC [...]
+CACGGTCAAATGTGGGCTATCCTGCCGCAAACCTGGCTCGGCAACCTGGTCGGTTCCGTCTTTGTCGCCCTGCTTTACAGCTGGGGCGGCGGCAGTTTGTTGCCGGTCGATACCAGCATCGTTCACTCAGTCGCGCTGGCAAAAACCACCGCGCCCGCCACGGTACTGTTCTTCAAAGGCGCGCTGTGTAACTGGCTGGTTTGTCTGGCAATCTGGATGGCGATCCGCACCGAAGGCACGGCAAAATTTCTTGCTATCTGGTGGTGTCTGCTGGCGTTTATCGCTTCCGGCTACGAGCACTCCGTCGCGAATATGACGCTGTTTGCCCTCTCCTGGTTTGGTCATCACAGCGACGCCTATACCCTGTCCGGAATCGGACACAACCTGTTATGGGTCACTCTGGGTAATACTTTGTCCGGCGTCGTGTTCATGGGATTGGGTTATTGGTATGCTACGCCGAAATCGGAGCGTCCTGTTCCGCAAAAAACCAAC [...]
+NODE	245	2315	113813	110991	0	0
+GGCGTGGGTTACTACATGGACGTACAGGAAGCGAAACTGCGTGACAAAATGCGGGGCACAGGCGTTAGCGTGACGCGAAGCGGCGATAATATCATTCTGAATATGCCGAATAATGTCACCTTCGACAGCAGCAGCGCGACGCTGAAACCGGCAGGCGCTAACACGCTGACCGGCGTGGCGATGGTGCTGAAAGAGTATCCCAAGACCGCCGTCAATGTGGTGGGCTACACCGACAGTACCGGTAGCCACGATCTGAATATGCGTCTGTCGCAGCAGCGTGCTGACTCCGTCGCCAGCTCGCTGATCACCCAGGGCGTCGACGCCAGCCGTATCCGTACCAGCGGAATGGGTCCGGCGAACCCGATCGCCAGCAACAGTACGGCAGAAGGTAAGGCGCAAAACCGCCGCGTCGAAATTACCTTGAGTCCATTGCAGTAAACTATCGTACCGGGTAAGGCGGTATGCTTTACCCGGCCTGCATTATTCCCTCGC [...]
+AATACAGCAATGCGTAGCGGAGAGCGTTTACCAACGCTGACGGCCGATCAGAAAAAACAGTTTGGTCCGTTCGTGTCTGATTACGCGATACTGTATGGCTACTCGCAGCAGGTAAACCAGGCGATGGATTCCGGTCTGCGCCCGGTGGTCGATAGCGTTAACGCCATCCGCGTTCCGCAGGATTATATGACGCAACGCGAGCCGCTGCGGCAGGCAAATGGTTCGTTAGGCGTGCTGGCGCAACAGTTGCAGAATGCAAAACTGCAGGCTGATGCCGCGCATGGCGCGTTAAAGCAGGCCGATGACCTGAAACCTGTGTTTGATCAGGTCTACAAAAAAGTAGTCACCGTGCCGGCAGATGCTTTGCAGCCGCTGATCCCGGCGGCGCAGATCTTTACGCAGCAGTTGGTACAAGTGGGCGATTATATTGCGCAACAGGGCGAGCAGGTGAGCTTCGTCGCGAACGGCATTCAGTTCCCGACCTCACAGCAG [...]
+NODE	246	7162	326538	321518	0	0
+ACAAAATTATTTCTGCTTCCTGGCAGGCGAAAAACAACGCCGCCCGTACGCTGGTGATGCCGGTAGTAAAAGCTAATGCGTTAACCGAAGGCAACAATAACAGCTGGAATCTGGTACTTCCTGCCTGGGTTAACGCCGATACCGAAGAGCAGCGCACCGCCCTGAACACCTGGAAAGTACGCATGACGCTGGAAGACGGAAAGGGCAATAAGCAGAACTCTGGCGTGGTGGAAATCACCGTCCAGCAGGATCGCAAAATTGAGCTGATCGTCGACAACATTGCCGATACCGATCGCAGCGATCACAGCCATGAAGCCAGCGCGCTGGCCGATGGCGAAGACGGCGTGGTGATGGATCTCCTGATCACCGATTCCTTTGGCGACTCCACGGATCGCAATGGCAACGAACTGGTGGACGATACCATGACGCCTGAGTTGTACGACAGCAATGATAAAAAAGTCACCCTGGCCCAGACGCCCTGCACCACGGAAA [...]
+TCAGCATCATATTCGCTGGCGAAGTTGTAAACGGAACCGGCTCGCCAATCACGCCGGGATCAATGTATTGCTTATCCACCGCACCGCGCGAATAAGCGTATCCACGCGTCAACAGTACGGCCACCCCGGCCTGCGGCTGCCCGTCGTCGTTAGTCACCGTTACCGTCATCGGTATCGTTTCGCCTTTTTTCGCCACGGCCGCTGATTTATCGGCGTTCCATGCGTCGGAAGAGAGCGCGATATTCAGCCCGCTGCGCGATGTTGTCAGGCAGAGTTGTAAGTAGTAGTTACCCGGGTTTTCCGACATGCTGTAGTTTTTCCCCGTCTTGAGATCTTTATACTGCCAGTAAAGGGTTGAGCCTTTCAGCAGGCTATCGCCAGCCCACCACCGCTTCCCGACGGGCAATCCAATATCGGTCGCTACCTTGCCGCTTGGGTGATCGTTGTACAGCGCCGTGAAATCATCCATCGCAGCCATCTGGTTCATCGGGC [...]
+NODE	247	5308	335034	331485	0	0
+ATATTAAAATGATTTTTAACTGGTGCTGACAACTATGCTAAATACGCAGGAAGTACTTAAAGAAGGAGAGAAGCGGAAAATCCGCAGCCCGGAAGCATGGTTTATACAGACGTGTTCCGCGCAAAAGCTGCATATGTCATTTTCTGAAGGCCGACACAATGAAAACTGCCTGATTCAGGAAGGCGCGCTGCTTTTTTGCGAGCAGGCCGTTGTCGCACCAGTATCAGGAGACGTGGTTTTTCGACCGTTAAAAATTGAAGTACTCAGCAAATTACTGGCATTTATCGATGGCGCAGGATTAGTGGACACGACATATGCTGAATCCGATAAATGGGTTTTGCTGAGTCCTGAGTTTCGCGCTATTTGGCAAGATCGTAAACGCTGCGAGTACTGGTTTTTGCAGCAAATTATTACGCCTTCTCCGGCCTTCAATAAGGCACTGGCGCTGTTACGAAAAAGCGAGAGTTACTGGTTGGTTGGCTATTTACTCGC [...]
+CATAATTAATTTCATATTACGCACGGAAACACGTTCGCTTAACAAACGCTGCAAAACTTCAGATATACGTTGTACCGTGGCATGTCTGAGCACTTCTTTAAGTAAATCAGGAAATTTCGCTTCCAGTTGGTCCAGCATATGTTTTGTTTCCTGAATACCGAAATATTCATTGACGTTGCGTGCCAGCGTCACCGCCAGACAGTGGTAAAGCTCATCAAGCGCGTTCCGCAACACATAGCCAAGCTCCCGGAGTTTCTCCCCCTCTTCATGCGTTACCCAGAAATACTGACTGCTACCTTGCTGATGGATTGTTGGATTAATACCAAAGGACACGACTTCATCGGAATAATTTACCACTCGCATCAAATCAAAATAGACCGTAAATTGTTCAACACGGATCTCATTAATCAACAATACGATGCTGTTATCGTCCAGGCCCTCGCCATCGCGTAACAATACTTCCGGCAGGCGCACGCCATAATCAATAAAGAA [...]
+NODE	248	15199	753752	745215	0	0
+TGCAGCGTGTCGCAAAAAGACCGACCGTTGCGGCAGCGCTTAAAGCGGAAGGACTGAATTAATGTCATGTTGCCGGATAGCTCGCTGTACCGCCATCCGGCCTCTTTTTAGCAGCAATAATTACAGCCGCGTTGCGCTGAAGTAATGTTCAGGGTTAGCGATCCTGTCCTGGGCCGCCACGACCTGCAGTTCGTACTCCTGCATCGTTTTGGTGGCGATCATAATCTCATAGACTGCCGCCGTAACGTGCTCCAGCGCCTGCTGCAACGTCGCGCCCTGCAAAAGTTTGACCAGCAATAAACCACTGGTGACATCGCCAACGCCAACCGGCTGACGTGAGCCGAAATCCACCAGCGGACGGCTAATATGCCAGGCTTCCTGCGCTGTCACCAGCAGCATTTCAAAGCGTTCTGAACTGTAACCGGCGCGGGCGAGATGTTTTACCAGTACAATTTCTGGCCCCTGAGCAATCAGTTCTCGCGCCGCCTGCAC [...]
+GGTTCTGTTACGACGATGCGTCGTATGACGAGATTTCGTGGAGGCGGTGGTACGTTTTGGCGTAGAAGCGGAAGAAGAACGGCTGGTTTTTGAGGTTTTTTTTACGTTTTTTTTGTTGGTCTTACTGATCTTTTTCGTTGTGCTTTTCTTTTTATCTGCCGTTTTCGTGACATGAGAAACAGCAGGCGTCGCTTTGGCTTGCCTGGAAGCATGGGCCATTGGCGTAAAAGGGAGAGTAGTAAAAAGTAAAGCACAGAGCGTGATCGAGATTTTGTTTATCCGCGCCACTGAGCAATCCTCTGTTAAAGGCAGGCGATTCATGCCTGCGTATGATTTACAAAACCTGATAATTCTAATCTACAAAAGCACAGATTGGTAATTGCTTTTGGTTTCTGAAGCTGTGTTTCGTTAACAGATGTAAAAAAAATAGCAATTAATGCTAAACACGAACGCGTTATCTACAAATCACAGCGTGGCAACCCGCTTAAAAGA [...]
+NODE	249	1177	78405	78014	0	0
+CGAGCAGCCTATCGGTACGCGTATTTTTGGGCCGGTAACTCGTGAACTTCGTAACGAGAAGTTCATGAAAATTATCTCTCTGGCACCAGAAGTACTCTAAGGAGCGAATCATGGCAGCGAAAATCCGTCGTGATGACGAAGTTATCGTGTTAACCGGTAAAGATAAAGGTAAACGCGGTAAAGTTAAGAATGTCCTGTCTTCCGGCAAGGTCATTGTTGAAGGTATCAACCTGGTTAAGAAACACCAGAAGCCGGTTCCGGCTCTGAACCAACCGGGCGGCATCGTTGAAAAAGAAGCTGCAATTCAGGTTTCTAACGTTGCAATCTTCAATGCGGCAACCGGCAAGGCTGACCGTGTAGGCTTTAGATTCGAAGACGGCAAAAAAGTCCGTTTCTTCAAGTCTAACAGCGAAACTATCAAGTAATTTGGAGTAGTACGATGGCGAAACTGCATGATTACTACAAAGACGAAGTAGTTAACAAACTCATGAC [...]
+ACCGCATTCCAACGATCTTCGTCGGTTGCGTTCACATCAGAGATGATCGCTTTCAGTTCAGCGCGTTTCGCGAAGTATTTATCAGCTAAAGCTACGCGTTTTACTTCGCGTGCTTTCATTGATTGCTTAGCCATTTAGTAACCCTACCTTACTTGCGGAACGGGAAGTCAAAGGCAGCCAGCAGAGCACGGCCTTCTTCGTCAGATTTCGCAGTAGTGGTAATGGTAATATCCAAACCACGAACGCGGTCGACTTTATCGTAGTCGATTTCTGGGAAGATGATCTGCTCACGGACACCCATGCTGTAGTTACCACGACCGTCGAATGACTTAGCGGACAAGCCACGGAAGTCACGGATACGAGGAACAGCAATAGTGATCAGGCGCTCAAAGAACTCCCACATGCGTTCGCCACGCAGAGTTACTTTACAGCCGATCGGATAGCCCTGACGGATTTTGAAGCCTGCAACAGATTTGCGTGCTTTGGTGATCA [...]
+NODE	250	2307	123059	122507	0	0
+AATTATTTTCTGAAAATTATTGATCTGATAAATGATTATTAATCTAAATGTTATAAGCGTCAGGTCAACAGGAGACAATTATTTTCATGCCTATGGAAAACAAGTCAATTTTCTTTCTGGCGGTCTGCTTCCCCCACCAGCAGTCGAATGTAACAGAAAGCAATTAAATATGTGCGGTTGCTCATATTATTACATACTGGTTACAGAAAGAGATTGATAATTCGCATCGCGAAAAATAGTCTATTTAACGTAGTAAATGAGGTTTCTCAGCGCTACTTTTTATTTTTATTTTTTCGCTGTTCGCTTTTGTCGGCAGCAATTTATACGTCAAAGAGGATTAACTTATGCGTACGTTTAGTGGCAAACGTAGTACGCTGGCTCTGGCTATCGCCGGTATCACAGCAATGTCGGGGTGGATCGTTGTTCCGCAGGCGCAAGCCTCCGGCTTTTTCGACGACTCCACGTTAACGGGCGGCATCTATTATTGGCAGC [...]
+ATGTGGACTTGCCGCGACGGCGATGCTATTTGTACGTCTGAGTCGCGGCTATATCGCGGCAGAAAATAAAGCCTGAAAAAACCACGGGCGGAAAACATTCGCCCGTGGGTGGCAAGGCAGGGTTTTATTGCACGTTATTATGACTGCGAATTTCCTGCCAGACCTTATCGCAGTCAGCCTTGACCGCCTGATCGTTACCCGTGCGCGTCGCCTGAATGCACTGCTGATAGTCCAGTACCCGCACGCTTTCTTCGTTAGCAAATTGCTGATGTTTGCGGTCTTTTTTAAGGACATTCAGTACGCTTTGGCAGGCCTCTATCTTCTCAGGCGAGCCCTGTGCGGTATTGATACAGGCGCTGTACGCCTCTTTCAGCTGGCTATCTTCTTCCGGCGCGGGTGATGACGCGCAGGCCGTCAAACCGGCGGTCATGCTGGCGATGAGTAAAATTTTTTTCATAGGTCGTTCCTCAACAACGCGGCAGACCGGCAGCC [...]
+NODE	251	122	6637	6472	0	0
+ACCACCACATTTGACGCCACGAAAGGCACAGGCGGATGGACCTTTACGCCGCCGGCATTATGGGCGGATGGGGATTATACCCTGAGTGTGTCAGTCGAAGATAAAGCGGGGAACACCAGCCA
+CCCATCCGCCCATAATGCCGGCGGCGTAAAGGTCCATCCGCCTGTGCCTTTCGTGGCGTCAAATGTGGTGGTGACGCCGCCATGCTCCACGCTGACCGTAACGCGAACGGCATCATCATCAA
+NODE	252	13339	705539	698117	0	0
+AAGTCTTCCAGGTTCAGGTCGATGTCGTCAATGCGTGAAGAAAGCTTCGCGGTGTAGTAGTAGCGCAGGCTGTCGGCGTCAAAGTGTTTCAGCCAGGTGCTGGCCTTAATAAAGGTGCCGCGAGACTTAGACATCTTCGCGCCGTTCACCGTCACGTAACCGTGAACGAACAGGTTGGTCGGCTTACGGAAGTGGCTGCCTTCCAGCATGGCAGGCCAGAACAGGCTGTGGAAATAGACGATGTCTTTGCCGATAAAGTGGTACAGCTCGGCGTCGGAGTCTTTTTTCCAGTACTCATCAAAACTGGTCGTGTCACCGCGCTTATCGCACAGATTTTTGAAGGAGCCCATATAGCCAATCGGCGCGTCCAGCCAGACGTAGAAATATTTGCCCGGCGCGTTCGGGATTTCGAAACCAAAATACGGCGCGTCGCGGGAAATGTCCCACTGTTGCAGGCCGGATTCAAACCACTCCTGCATTTTGTTCGCCACC [...]
+TCGGCGGCGTGATGATGGAAAAAATGTTTGCTTATCCGCAACCGGTTAACGGTCTGACATTCAACTGGGCGGGCATGTGGACGTTTGGCGCAGTGATGATTGCCGTCATCGCGCTACTGTTTATGATTTTCTTTCGCGAATCGGACAAAGAGATCACTGCTATTGACGATCGCGATATTGCGTTGACACAAGGGGAAGTAAAATGAAAGCAGAACGTATTCTCGGTGCTCTTTACGGGCAAGCGTTAGGGGATGCGATGGGAATGCCCTCTGAGCTGTGGCCGAGAACGCGCGTCAAAGCGCATTTCGGCTGGATTGACCGCTTTCTGCCCGGGCCAAAAGAGAATAATGCCGCCTGCTATTTTAACCGCGCGGAGTTTACGGATGATACCGCAATGGCGCTCTGCCTGGCCGACGCGCTACTCGAATGCGAAGGCAACATTGATCCCGAGATTATTGGGCGTAACATCCTCGCCTGGGCAGAACGCTTTGA [...]
+NODE	253	6849	384826	382842	0	0
+CAGCGCGTCTTTTTGCATGATGGCGATCCTGTCTTTTCTTGTTTGCGATAGTTGATCCTCCACGAGGATGTTTAAACCATACCACAAAAAGTAAAGATTTCAATCCATATTACGTAAAATAAACTTTACACCATGCGCAATCGTCGATTAAACCCCTTCATTTCGTATCAAAAACTTTACACAACAAGTGAATTATTTTATTCCCAGCCTCAGAAAAGCGGTAAAATGAGCGATGCTCGCTATTTTTTGATTATTTTTTCTCCGCACACATATTTTTACTTTCTGATATAGGGTGATTAATACCATTATCACAAGAATTTAATATCAGGGATGCCATTTAAATTATTCATATTATCAATAAGAAATAATGACGATATGGCAAAATAATGTTATTTTGCTACAAACAATCACGGATGTATTTTAATGCTTTACGACTGAAGATGGTGGGGACTTGTTAATGCGTTTTTCTCACCGATTTATCCTTCTGTTATC [...]
+TAGACAAACCATGCCACGATAGAGAGCACGGCTTTATCAATATTTTCAGTACTGAACAGGTTATGCATGTAAAACAGGCCGGTACACAGAGTAAGGGTCAGCAGTACGACGCCAATCTGCGTGATATGAAACATTTTGCGCTCAATGCTCATCAATGGCGGCATTTCATTACTAAACGCCAGCTTTTTGTTCTTCAACTGATAGTCGATCCACGCCAGCTGTAGCGCATACAGCGCGGCGATTATCAGCGTCGCGTAAGAGAAAAGCGACAGACCGATGTGCACCATCATGCCTGGGGTCGCTTCCAGATGCGTAATATATTCATTAGGCATGAATGTGGCGAAGGCCAGGTTAATCAGCGCAAAAGCATAGACAATGGGCAGAAGTAACCAACCGCGATTACGCGACGCGACAATGGTCATTACCGTGCAGATCATCAGGCTGACCAGCGAACCGACATTCAGCAGGCTCAGGTTTTGTCCACTGTCGCCG [...]
+NODE	254	2258	99950	99248	0	0
+ATCCATCATTCGGCGCAGATCCAGCGGCGAAGTACGATAGTGCGCCCCCGACAGTAACTGATACACAGCCCTCGGCAACGCGGGCGTCTCCCCCCAGGCCTGTTGGTAAAACGCCGAGATTGCTATCGCGCCATGTGGCGCCTGCGCAAACGCTTCATCGTCGAATATCAGCGCCTCGCTGACGATATTTTCCAGCGGGCATTCTGGCGCCCAGCGGACAGGCTGACGAAGCGTGAAGCGGTGAAGCTGCGGAAAACGGGCGCAAAACTTAAGTAAAAAACCTCGTCCGGTGCCTTCGTAGCCCTGAACGGTGGTGGTGAGTAGTATGCGGGGAAAGCGCGAAACCAGTTGCAGCAGCAGCGGCGCGGGGATTGCCGCCGCCTCGTCAACCACCAGCCAGTCGGCTCTTGCCCCGCTCGCCAGCAGCGCATCCGGCGCCATAAAGCAGAACCGCTCACCGGCAAACGCTGCCAGGATATCCGTTGCCGTTTT [...]
+CGCATCGCCTGGGCGTGAAATTAGATTAATTCCGCTTCTGACCGGGGGGCAACCGCTCTCCGGTATCATCCTTTCCTCATTCTGATAGCGTTTACCTGTGGTAATCCTGCGCCTGACCGCCTACGATCATCTGTATAACAAAGAGAGAATGAGGTGATTATGCGCTGGCAAGGGCGTCGTGAAAGTAACAATGTAGAGGACAGACGTAATCGGCCAGGCGGCCCCTCGCTGGGTGGCCCAGGCTTTCGTCTTCCGCGCGGAAAAGGCGGCATCATTCTGTTGGTGGTGGTGTTGGTCGCAGGGTACTATGGGGTGGATTTAACCGGTCTGTTGACCGGTCAGCCGGTTTCGCAGCAGCAGTCGACGCGTTCGATAAGCCCCAATGATGATGAAGCGGCAAAATTTACCTCGGTGATTCTGGCGACGACCGAAGATACCTGGGGGCAACTCTTTCAAAAAATGGGGCGCGGCTATCAGCAGCCAAAACTGGTG [...]
+NODE	255	9469	511414	505635	0	0
+AGACTCCAGTACGCCCGCACGGTGACCGCCGGTCGCCGCCGCCCAGGCTTTCGCAATCGCCATACCTTCGCCTTTCGGGTCGTTTTCCGGGTGTACCGCGATCAGGGTCGGTACGCCGAAACCACGTTTGTACTCTTCGCGCACTTCGGTGCCCGGACACTTCGGCGCTACCATCACCACGGTGATGTCTTTACGGATCTGCTCGCCCACCTCCACGATATTGAAGCCGTGGGAGTAGCCCAGCGCCGCGCCGTCTTTCATCAGCGGCTGTACGGAACGCACCACGTCGGAGTGCTGTTTGTCTGGCGTCAGGTTAACCACCAGGTCGGCCTGCGGGATCAGCTCTTCGTAGGTACCCACTTTGAAGCCGTTTTCGGTCGCTTTACGCCAGGAAGCACGCTTCTCAGCAATCGCTTCTTTACGCAGGGCGTAGGAGATATCCAGACCGGAATCACGCATGTTCAGGCCCTGGTTCAGCCCCTGAGCGCCACA [...]
+TCGTCGCGATCACGGGTCAGGTTTCCGCCCCGTTCATCGGCACTGATGCGTTCCAGGAGGTGGATGTGTTAGGCCTGTCGCTGGCCTGTACCAAACACAGCTTCCTGGTGCAGTCGCTGGCAGAGCTGCCTCGTATCATGGCAGAGGCTTTTGAAGTCGCCAACGCTGGCCGTCCTGGCCCGGTTCTGGTGGATATCCCGAAAGATATCCAGTTGGCCAGCGGTGAGCTGGAACCCTGGTTTACTACCGTTGATAACGAAGCGACCTTCCCGCAGGCTGATGTTGAACAGGCGCGCCAGATGCTGGAACAGGCGAAAAAACCCATGCTGTACGTCGGCGGTGGTGTTGGTATGGCGCAGGCAGTTCCGGCGCTGCGTAAATTTATCGCGGTAACGCAAATGCCAGTTACCTGCACGCTGAAAGGGCTGGGGACTGTTGAAGCTGATTATCCGTACTATCTGGGCATGCTGGGAATGCACGGTACTAAAGCGG [...]
+NODE	256	14313	744537	737919	0	0
+TGGCGCGGAGAAAGTGAATACGATGTGCTGAGCGTTGGGCATTCCTCCACCTCCATCAGCGCCGGTATCGGTATTGCCGTGGCGGCGGAGAAAGAAGGCAAAGATCGCCGCACCGTCTGTGTGATTGGCGACGGCGCCATCACCGCCGGTATGGCGTTTGAAGCAATGAATCACGCAGGCGATATCCGGCCCGACATGCTGGTCATTCTGAACGACAATGAAATGTCAATTTCGGAAAACGTCGGCGCGCTCAACAACCATCTGGCGCAGCTACTTTCCGGTAAGCTTTACTCTTCTCTGCGCGAAGGCGGAAAAAAGGTCTTCTCCGGCGTACCGCCAATTAAAGAACTGCTCAAGCGTACCGAAGAACATATTAAAGGCATGGTTGTGCCGGGAACCCTGTTCGAAGAGCTGGGCTTTAACTACATCGGGCCGGTCGATGGTCACGATGTCATGGGGCTTATCAGCACATTGAAGAACATGCGCGACCTG [...]
+TTACCAACGTCAGGGGCGACCCGTTCCACCTTTGAACGTTGATTAATTTTAATAATGAGGGAATTTGAATGAGCTTTTTTATTTCTGATGCGGTAGCGGCAACAGGTGCTCCAGCGCAGGGCAGCCCGATGTCTCTGATTTTAATGCTGGTGGTGTTTGGTCTGATTTTCTATTTCATGATCCTGCGCCCGCAGCAGAAGCGCACCAAAGAGCACAAAAAGCTGATGGACTCCATTGCGAAAGGTGATGAAGTTCTGACGAATGGCGGTCTGGTCGGTCGAGTGACCAAAGTAGCGGAAGCCGGCTACATTGCCATCGCGCTGAATGACACCACGGAAGTGGTTATCAAACGTGACTTCGTAGCTGCCGTTCTGCCGAAAGGCACCATGAAGGCGCTGTAATATTTCGTTTTCCCAAAGGGAACTGCCGTGTTAAACCGTTATCCTTTGTGGAAGTACATCATGCTGGTCGTCGTGATTATCGTCGGCCTGC [...]
+NODE	257	5590	297287	293188	0	0
+GAGCTTCAGATCGTCAGCCTGAAACTGGGTATCACCCGTCAATGGCCAGGCAATGCGTTGGCTGACGACTTCAAGATTGAGCGGTAAACCGGCCTCCGCCAGCCGCGTCTGGGCGCGAAGCGCGACATCCATCGGCCCGGAAAGGTTCACCCCGACCTCCAGTTGTTCGCGTAACGCGCCGCCGACCTTGAGTTTTATCTTTTCACCCTTTAGCGGATCGATATTCAGCGTACTGTTGAGCGTAATATCAACCGGCCAGTTATTGGCGAGCTGCGCCGTACCGGAGGCCTTCACCGTGCCCTGGTTGGCGTCGATATCCAGAGTATCCAGCTTCATATTACCGTCGATACTGCTGACTTTAAGCAGCATCGTGCGCACCGTCAGATCGGTATCGCCGGTGATGCGTAGCTGCTCGCCGCGAAATGACTCGATATTCAGATTGAGCGGCAGGTGAACATCAGTCATCTCCGGCATTACCGGTTTTGCAAACAG [...]
+AGACAACAATGAAAATTTTCCAACGCTACAACCCGCTACAGGTGGCGAAGTACGTGAAGATCCTGTTCCGTGGACGGTTATATATCAAGGATGTTGGCGCTTTTGAGTTCGATAAGGGGAAGATTCTTATCCCAAAAGTGAGAGACAAGCAGCACTTGTCTGTGATGTCTGAAGTTAACCGTCAGGTTATGCGTCTGCAAACTGAGATGGCGTAACCAAAAGTGCTATGCAGTAGGTTAAAAAAGTAAAAAAAAACGGCTCCTGAATCAGGAGCCGTTGATGTTTCTGGCAAACGGATTTCAGGCCGCGCTGTCTTCTTTACCTTGCGCATCGGGCAGTTTCGGTGCCGGTACGTTGCTTTTATTGTCGAGACGCGTCACCAGCAACTGATCGATACGGTAGTTGTCGATATCCACCACTTCAAATTTGTAGCCGGAAAACTTCACCGAATCAGTACGTTTTGGAATCTTGCGCAGCATAAACATCATAAAG [...]
+NODE	258	940	57662	57000	0	0
+CTGAACATGAGGATAGCGGCTAATTTCTGCCAGCGCCGCCATGTAATAACGCAAGCGTAGCGCCTCGCCATAGGGCGTAATCATCACATTCAACGGCGTACCTAAAAGAGGCAAATGGTCAACCATGCGCCATAGCGCGGCTTCGTCGCGTTTTTTATCGTTACGGGCGTGTTTATGGAACGGGCAATAGCCGCAATGATAATTACACGATTTAAGATAGCCGCGATAAAACAGCGTGTGAATATCGCGCAGGGCGGGGATGCTCATCTCTGCCGATTCTCCCGTAGCATCACCTCAGGCGAAACGAACACAGGAGCAAGGCAATCGGATAATGCCATACCGGTCTCCGTTAGCCGGAGGCGACTGCCATTCTGATGGCAGTAACCCTGCCGTATGAAGAGTTCCAGGTCGGGGAAATCCCTTAGCGCATCGCTGGCAAAATATTGCTGATAATCGCTAAGAGAAAGTCCCTGCCAGAAAAATAGATTTTTA [...]
+AGCCTGACGGAATCGTTACATCAGGCGCTCGTTTATCAACCGGAAGAGCTGTTTCTTTATCCGCTTTATAATATGCCTCGCCAGGAAAATATGCATAGCTACTACGTTGTAGCCCGCGATCTTTTACGCAACGCGGGCTACACCCAAACGTCCATGCGCCGTTTCGTCCTTAATCCAGCGCCATCCGCCGCGGCGGAAAGCTGCGGATTTGAAAACTCACTGGCGCTCGGCGCGGGCGGCAGAAGTTATCTTGGCAATCTGCATTACTGTTCGCCGTGGTCGTCGAACCTGCAAACATCACGAAAAATCATTCAGGCGTTTATCGACAGCGCGGATAAAACCGTCATTAACCACGGTTATCTGCTCCCCCCTGATGAAATGAAACGCCGCTTTATCATTAAAAATCTATTTTTCTGGCAGGGACTTTCTCTTAGCGATTATCAGCAATATTTTGCCAGCGATGCGCTAAGGGATTTCCCCGACCTGGAACTC [...]
+NODE	259	3608	185002	183967	0	0
+GCAAAAGCAGTTTGAAAACGTGGATGCATGGCGTTGCCTCATAACAATGTAATGGAACCGTAGTTTACGGGCCTGCTATGTCTTAATATGTGATCTAAATCTCATTGCTTGTGCAACTTGTGAAACTTAAATGAAAAATGCGCGACGTATCGCAAATTTTAACCCGGTCTTTTGTCCCGTCGTTAGCGCATTACCGCCAGAATGAGCGGAAACAAAAAGGGCGCTACCAGCGAGGTAATAATGCCGCAGATCACCAGCGCCAGGGAGCTAAACGCGCCTTCCTGGTAATCCAGCTCGGCGCAGCGCGCAGTACCGAGCGCATGTGAGGCGGTCCCCATTGCCAGCCCGCGTGCGGCCTTAGTACGGATGTGCATCGCGTTTAACAGCGTGTGGCCAAACACCGCGCCCAGAATACCGACAAAAATTACGCATACCGCGCTGATCGCGGGGATGCCGCCGATGCTGCCGCCCACCGCCATCGCGATAGGCGTA [...]
+TGGGGTACAGCGTCGCCGTCAGAGCATTAAGCCCGACCTGGGAACCGCTAATACCGATGCCGGTACCAAAAATCGCCAGCGCCATCAGCCAAAGGCCGTTTTCGCTCAGGCCTATCATGACAATGCAAACCGCGCCCAGCGCATAGCTCACCGCCAGTACCCGGAACGGGTTAAGCCGGTCCATCAACACGCCGAGTAACAGCGCGCCAAGCGTGCCGCCAACCTGGAATGCGGCAGTCACCCACGACGCCTGTTGCAGATCAATACCGCGATGGTTAAGTAACGTCGGCATCCAGCTGGAAAGCAGATAGATAATGAGCAGGCTCATAAAGAACACCACCCATAACATCAGGGTAATGACAAGCTGTCGCCCGGCAAAAAGCTGGCGAATACTGCCTTTGGCGACGGCTGCCGCCTCATGCAGAAAGAATTGCGTATCGTGATAGCGCTCGCCGGTAATGGCGCTGACCGTCCGGGCGACAACGGCTTGCG [...]
+NODE	260	2226	135181	134606	0	0
+ATAAATATCCAGATGCTTACCGTTCCGTTTTTTCTAAAAAGTATGGCTCTTTGGAAATACCTTCTGCCGGCATTCATTTTACCTGGGATCTTATCCAAAGAATCAAAGATAAAGGTGGGTTAATATCTTTTATTACTTTACATGTTGCATCAACAGAAATGTTGTCCAACAGAAAAATACAAACAAAATGTGTAGAGGAAGTGACTATCAACGAAGAATACTACGAGGTTCCGCAAGCAACAGCGGATATCATTAATACTGCGAAGCAAAATGGCGGACGTATTTTTGCCGTAGGAACTACCGTTACACGATGCCTGGAATCCGCGTATTCGAGGGAGCACAATTGCCTCAAAGCAAGTTCTGGCTGGACTGCGCTTTATATACATCCAGGTTATCAACTGAAAGTGGTTGACTGCCTGCTAACGAACTTACATCAGCCAAAAACGACGCATATGGTGTTAACCGGTCAGTTTGCTGGGGTTGATCTACTCA [...]
+CAAATCTGTTGACGGTGTCAGTTCTTTTTTCTTAAAGAGGTAAATTCCATCATGGCTTCTTACCAGTTCATAAATCCGCTGTTCAAGAGCATCACTTACCATATTTTATCGCTTCCTCTGGCAATACGGTTGTAATCCCTTCCTGTACGATATGCAATCTGCGACACGTCAGAGGCCAGAATAATCCATCCGACTGTTCAGCAAGGCCACCAAGTAAAATAATATCACCATCTGCAAGGCTGACTTCGGTTGTTACATCACGCTTGATAAGGGTTGGCGAGTTATTAACGCCGGTTTCAGTGGTCACAAGTTAGGTTCTGGACATCTGAAATTAGCCTTGAAAAAACCGTCAGCTGCCCGCATCACTGACCGGGCTGGAGCTGAATCCCCTTCGTGAAGGATGCTTTTATTAGTACTATTAAAGGTGCTATATTTAGTCATCAACCAGGAGGTAAATTATGGCATTTCAAATTTTAACGACTACTGCAGCAA [...]
+NODE	261	4879	259387	256657	0	0
+CGCGAACCTGCATGAAATCCAGCGCAGGGCAACCTGCTGAAAGCGGGTCGTACCGACGAATCAACGCATCCAGCTCTCCGGCGGTAAGCGGCTGGGCAATCGGCAGATAAAACTCCATTTCGACCTGTTTTTCACGCTCGGTCAGCACGCTCAGACTAACGCCCGTCTCGTTAAGGGGAACGTGCAACACGGTGTCCAGCCAGCGGGTAAGTACGGGCTCCCATCGCGTTTCAAAACCACTCAGCTCCAGTTTTTCCTGTACCCATTGGGGGTTTATCGGTTGAGTAAAATCAAGCTCTTCAAACAGGCTGTGCAAAAATGTTCCCGGCGATGCCCCGCGAGGAAAGTGATGCGGCGTCATTGCCGGCGCTTCCGCCGCTTCGCCAACGCCTGCGGCGTCAATGTCGAGACGAGGAATAAGATCTTGCGCCACGCTATGTCCCCGCTGCTGCAAACCGGAATAACTAGTGACGCGCCAGCTATCATAAAGCA [...]
+TATGTCGAGTGGCTGGCGGACACTATGATCCGCGTCCCGGTAGCGCATACGCTGGATGCGGCGAATATCGCCGATCGTTACGATCCTGCCGCTATCAAAAATCGCCTGGCGATGATGACGCCGCAGAATGCGCGCATCTGGTACATCAGTCCCCAGGAACCCCATAATAAGATTGCGTATTTTGTGGATGCGCCTTATCAGGTCGATAAGATTAGCGAACAGACGTTTAAAAACTGGCAGCAAAAAGCACAGGGCATTGCGTTGTCGCTGCCGGAGTTAAACCCCTATATTCCTGATGATTTTACGCTTGTTAAGAATGACAAAAACTACGTGCGGCCAGAACTGATTGTCGATAAAGCGGATTTGCGCGTGGTTTATGCGCCGAGTCGTTATTTCGCCAGCGAGCCAAAAGCTGACGTGAGCGTGGTATTGCGTAACCCGCAGGCGATGGACAGCGCCCGCAATCAGGTACTGTTCGCCCTTAATGATTAT [...]
+NODE	262	1787	91026	89496	0	0
+TGAATACTGTTCTCCCGCATCCACTGGCGCAGCGCCAGTGTGGATTCACCAAATAAAACGTTCTCACGATCCAGCCAGACGGAGCCCCATGGCGGTGACGGTAAGGCATAAGGCCCGATAAATAAACGCTGAAAGGACTCAGTAAGAGAGTCATCGCCGCCATCTTTAAACATTCTTGCCAGTTGAGGCAACTCCTCCGACGGCAGCGGCCATTGTGTTTGCCATTCATCAGATGTGAATGCTGAAACCAGCGGAGAGGCTTCAGCACTCTCTGGCGCAAAGTAAAAGAGGGCGCCCAGTACGCGTGCCGTCATGGAAAAATTGTCACATTGTGTGAAATCAGTCATAAAACCATTCCGTAAAGTGCGGGTTCCCCCGCACTAATTTGTTAACCTGCCACTGCCATACCGACAGTCATATGTAGCCCATAAAACAGGCCGCGGCCTAAAATTTCGCCGCCAAGCACCAGGATAAGACCCAGTAGTAACCCAA [...]
+GGGTGGTGACTGGCAGGAGAATAACGGCGTCTGGCATCAGAATGTCTTTGCCTATTATCTCTCCATTTCGTGCAACCATTGTGCCGACCCGGCATGTACCAAAGTCTGTCCGAGCGGAGCAATGCATAAAAGGGAAGATGGTTTTGTCGTGGTGAATGAGGAGGTCTGTATTGGCTGTCGCTATTGCCATATGGCCTGTCCATATGGCGCGCCACAGTACAACGCCGCCAAAGGTCATATGACCAAGTGCGACGGCTGTTACGACCGGGTGGCGGAAGGCAAAAAACCTATCTGCGTCGAATCCTGTCCGCTGCGAGCGCTGGACTTTGGTCCTATCGACGAGCTGCGCAAAAAACATGGCGATCTGGCGGCGGTAGCGCCATTGCCGGGTGCGCACTTCACCAAACCGAGCATAGTGATTAAACCCAATGCCAATGCACGTCCGTGTGGCGATACCACTGGCTATCTGGCCAATCCGAAGGAGGTGTAAAA [...]
+NODE	263	91	9317	5660	0	0
+GTCCTTGCAGGCCAGTTCGCAGGTTTTGCAACCGGTGCAACGGCTGGAATCAATAAAAAATCCATACTGGGTTGTCATCGGTTACTCCTTA
+GTTGCACCGGTTGCAAAACCTGCGAACTGGCCTGCAAGGACTACAAAGATTTGACCCCGGATGTCAGCTTCCGCCGCATTTATGAGTATGC
+NODE	264	11828	653890	638418	0	0
+CTACGCCGGTAAACACCTGGTTGACATGCTGCGGCTGTACCTGACGCGAGATTTCGCTCACCATCGCCGACTGGTTAGGATCGCCTGCCCCCAGTCCGACGGAGAGCGCATTGTCGATAAGCGCCGCATATTCACGCATATCCGCGACTGCGCTTGCCACATCCGGATAGTTTTTGGAGAGCACGCCAACCAGCACATGACCTTCCGCCGCCGCGTAGATTTCCCGGGCGTTATCTTTCGAACCGGCCAGCACGTTCAGGCAAACGCGATCGCGGTAAAAGTTAGGGGTCAGTTTCATGCTTGTTTCTCCTGATTAATCACCTCGCCAATACGACGCGCCACAATCGCTAACTGCGCGCGATCGACGCTGCGGACATCCGCTTCAATAATCCCTTCGTTGGCTTTGTATCCGCGAAAGTAAATCGCGTATTCCCCTTGCTTCAGCGCGTCGACCAAGTCGCCAGTGGCGATGCCGACAACGGCTTCATCAAA [...]
+TGAGAAAAGTGAAAGAGAAGGGGGTGACGCTGCAGGTTGCCTTTAATCGCCGTTTTGATCCTCAGTTTCACGAGGTCTTTGAGCTGGTGCGCAGCGGCAAGATTGGTCGGCCCCAGATGATAAAAATCACCTCCCGCGATCCGGACCTGCTACCCCATGATCTGATCAAACGTATTGGCGGCCTGATTTTTGACTTCACCATGCATGACTTTGATATGGCTCGTTTTATGATGCAGGATGAAGTCAGCGAAGTCTATGTTAAGGGCAATACGCTGATTGATCCCAGCCTGAAAAATATTGATGATGTTGATACGCTTGCGGTGATGCTGACTTTCAGAAACGGCGGCTACGCGCTCATTGATAACAGCCGTCGGGCGGTATATGGCTATGACCAACGGGTGGAGGTTTTTGGCTCAGAAGGGATGGCGTATGCGGATAACGTTAGTGAATCGACGGTGAAAGTTTTCAACAGCCAGCACTGCATAATGAAAA [...]
+NODE	265	2394	121564	120483	0	0
+GCGCATCATGGATGAACAGCAGCAGCAGGTGAAAGACGATATCGCACAACTGCTGAATAAAGACTGGCGGGCGGCGATTTCCAGCTGTGAACTGCTGCTTTCCGAAACGTCCGGTACGCTGCGCGAGTTGCAGGATACGCTGGAGGCGGCGGGCGATAAGCTGCAGGCTAACCTGCTGCGCATTCAGGATGCCACGATGACGCACGACGATCTGCATTTTGTCGACAGGCTGGTGTTTGACTTACAAAGTAAACTCGACCGCATTATCAGTTGGGGTCAGCAGTCTATTGATTTATGGATCGGCTACGATCGTCACGTGCATAAATTTATCCGTACCGCGATCGATATGGATAAAAACCGTGTCTTCGCCCAGCGGTTGCGCCAGTCCGTGCAGACTTATTTTGACGATCCGTGGGCGCTAACCTACGCGAATGCCGATCGTCTGCTGGATATGCGCGATGAAGAGATGGCGTTGCGTGACGATGAAGTCAC [...]
+CTGATCAAGGTGAACTCGACGCTCATTGGCGTGGCGCATATAATCCGCCGCCACATAATCGGTGGCTTCGCTGATCAAATGCTTAAACAGATCGCGATCGGATTGGGTAACACGAATCGCTTCCAGCGTGAGTCGGTTCTCGCGCAGCGCCGCTTCCATATCCTGGAACGCCTTGCGCACGCCGCTGTTTTCCGGCAATAAATAATCGCGTAGCGATCGGGTAATGGCGCTGGAGATCCCGCCGTACAGCGAGGCCTCTATCAAACGATAGAATTTACTACGATCGGAAGCGGAACGCAGACGACGGGCGATAATCCCTAAGTCAAACATCAGCGAATGATAATCGGTGATGGAGTTAAACTGCTTAAACTGCACGCCTTCCATCTCGTCAAGCTTGTCTTTCAGCTCAGCAAGCGACAGTACGCGCGCCTGACGTTCGTTTAATGTCTCCGTCACCAGTTGTGTCGGCTGTACCGACATCGGCAGCCCCTG [...]
+NODE	266	1361	88352	88284	0	0
+TATGAATAGCGTGGGTGATATCGACAATTTGATAGCTTTTGTCTTTCAACCAGGCGTTGACGGCGCTCTGTACCATAACGCCCATCGTTACCAGCAGCACAATGATCAGCAATAAGAAGAAACGGGTAATGCTTCCCGGTAGAAGGGAGAATCGGGTAGAGACCGTTGTGTCAGACTGACTCATTTATGTTTACGACCTGTAAAAGCAACGCTGAAGGTGAAGGGCAGTATAAAGGGTAATGAATGAATTTCCAGACTCTTACGTCATGCCGGGCAACTTAACACGCGCTCCGTCGGCGGGACGGGAAAAGCGTACAACCTTCGCAGAACGGTACAAATATAAAGACTACTTATAAATGTTTAGCACTAAATATCAAGAAATTATTTGCTAATGTCTTACGAACGGTAGAGCAGCGAGGGTAGTGAATAACCGTGATAATTTTAGGCAGGTAGCATAAATCAGCCGGGTGTGTCTGAAAAAGGGTAAAAAAA [...]
+CGCCGCCGAACTCCGGCAGAACGTCGGTCCAGGAGGTCACATCATAGGTTACGCCGTAGTTACGACCATAATCGAAGGAACCTGCGTCAGCGAATTTCAGACCCGCAAACGCCACACGCGTCCAGGAGTCGTTGCTGCCTTCAGTCTGGTTGCCCTGAATCTGATATTCCCACTGGCCATAACCGGTCAGTTGATCGTTAACCTGCGTTTCGCCTTTGAAGCCGATACGCATGTAGGTCTGGTCGCCGTCGCTGCCTTTGTCGTCAGAGAAGTAGTGCAGGCCATCAACTTTACCAAACAGGTCTAATTTGTTGCCGTCTTTATTATAAATTTCAGCCGCATTCGCTGCGCCCGCCACCAGCAGAGCTGGTACCAGGAGGGACAGTACTTTAACTTTCATGTTATTAACCCTCTGTTATATGCCTTTATTGCTTTTTTATGCCACTGCTTACTGGTTAACCCTCATTAACCAGTCGGCAAGTCCATTCTCCG [...]
+NODE	267	228	3012	3012	0	0
+TCCCGGCGTCTGCGCCGTTGCCTGCTGCCAGGCCCTCACCTGCGGATAGCTGCCGGTCAGGGCGTAGCTGCCGGCGCCGACCGCCAGCGCAATGACGGCCCCCGGCACGTAAACGCCCCACCCGGCGCGCGCGCCGCAAACCGGGGTGTCCGCCGGCAGCGGCTCCCGGCGCAGGCGTACCCGCCGGCGCGTGCGGGCGACGATTATCCACCCGCCCGCCACGATGGC
+ACGCCTGCGCCGGGAGCCGCTGCCGGCGGACACCCCGGTTTGCGGCGCGCGCGCCGGGTGGGGCGTTTACGTGCCGGGGGCCGTCATTGCGCTGGCGGTCGGCGCCGGCAGCTACGCCCTGACCGGCAGCTATCCGCAGGTGAGGGCCTGGCAGCAGGCAACGGCGCAGACGCCGGGACTGCTGGCGCGGGCGCTGGACCCGCAGGCGCAGCCGCTGAATGAGGAGGA
+NODE	268	136	7789	7789	0	0
+CTTGTCGATTAGCCGGTTATTACGGCTTTCAGCAATAGCCAACGCATTATCCAGTGCCTTTTTGACTGCGCCAGAACGATACCTTCACGCCGGAGTGGCAGTTTGTTGAGGTATAGGGAGTTTCAGACTGTACGCG
+GAAGGTATCGTTCTGGCGCAGTCAAAAAGGCACTGGATAATGCGTTGGCTATTGCTGAAAGCCGTAATAACCGGCTAATCGACAAGCCGGATCTGAAAAGCGCGATGGACTACTGGCACAACCAGGCGGCGCGTAT
+NODE	269	14	1496	1496	0	0
+GTACAGGCTGCCTG
+TGCCACTCCGGCGT
+NODE	270	3305	173104	171108	0	0
+CGTGAGCAGTGGATTCTCCGGGGCGTCAGCCCCCCTCGGTATCGATCTTTTTCTCCTCTTTCTTGCTGACAGCGGCCCCAAAAAAGGCGTGTCAGATTCGGAAATGAGCGCCGGAACCCCAAAAACAGGGGCATGGCGCGGTGTGGTGGTTGTGCGTCACTTTGTCGCTCTGCGCGACGAAAGTGACGCACTGGTCGGGTGCAGTGCGTGAAAGATCGCGGATTCTGGTGCAGTTTTACGGTCACGCGGCAGCAAATGCCTTGCGGCAAATGCAGGCCGCAGCCCGTAAAAGTTAAAGGCGCTGGTAGTCAGCAGAAGTGAGTCAGCCGGATAGTTTCGGCAACGTTAATGCATCAGCCAGTAAGGGCCGACGGCGTAAGGTGGTGGCGGTGGATCTGTCTTGTGTAGGAACTTCTGGCCTCTGGCGCAGATGCTTTTGCGTCCCGGTGTTTTCAGAGGTATGCACCGGTAAAGGGAGGTTTAGCCATACTG [...]
+AGTGCGTGAAGGGGCCGATCCTGCCGCTGATAAGAAGATTGCTCAGCAGAAAAAGAAAAACGGACATACCTTCCGCCAGATCGCCATGAACTGGCACGCCGATCACCGACGCTGGTCTGAACATTATGCGATGACCATCCGGCGCAGGCTGGAAATGTATGTTTTCCCGGATATCGGGGACAAATTCATCGATCAGATCGTCACGGAAGATTTGCTGTTTACCTTGCGCAAGGTCGAGAGCAAAGGCTTTCTGGAGATCACCGCACGGCTGAAAAACTACGTCACGGAGATCATGCGCTATGCGGTGAAAAAGCAGCTAATCAAATCAAACCCGGCGCTGGATCTGGACGGTGAATTTACGCCGCCGGAAACGCAGCATTACCCGGCCCTGCCCCTTGAGAAGCTGCCTGAACTGTTATCCCGGACGGATAGCTACCCCGGCAGGCTGCTGACACGCTATGCCCTTAAATTATCGCTGCTGTTTTTCGTGCG [...]
+NODE	271	2930	143168	142115	0	0
+AAGCTGCATTTATGTCTGTTTGGCGACGGCGGCGTAAGTTTACGCGACCTGTTACAGGATGATGCGCAGCAATACGCGCTTGAGGAACGTATTTCCGACGCGTTGCGGGAGAAAAAGCAGACCCACTTCCTTCATCAGAGCAATACTGGTATTACGCAAAATTTATCTTACATTGGCGGTTAATCCTTAATAAGGAGATTTCAGATGAGTCAGGTCAGCGCTGAATTTATCCCGACCCGCATCGCTATTCTTACTGTTTCCAGCCGACGCGGCGAAGAAGACGACACCTCCGGTCATTATCTGCGTGATTCGGCGCAGGAGGCCGGGCATGAAGTGGTGGCGAAAGCCATCGTTAAAGAGAACCGTTACGCGATTCGCGCCCAGGTTTCCGCCTGGATCGCCAGTGATGAGGTGCAGGTCGTATTGATAACTGGCGGGACCGGTTTGACCGAAGGCGATCAGGCGCCGGAAGCGCTGTTGCCGCTGTTCGAT [...]
+AACGCAGTATACCAATAGGTAAGGGATAACATTGTCGCGGGAATAAATGCTATTTGTCGTATACGTATTGCAGCCAGAGGTCCCACTTGTCATTTATCACTCTTCACATGATCACGGTGATAAGAATGGCAAGCGCAGGAAAACATTTCTAAGATATTTATGCTGTTTCGCCCTAAATATAGTCCTAAAAAAATCCTGGCGCAGGGCCAGGATTTTAAGAGATCGCTATAATTAGCGGCGATTACCAAAAATACGCAGTAACATCAGGAACAGGTTGATAAAGTCCAGGTACAGCGTTAACGCGCCGAGAATCGAATATTTACGCAGATTAGCGCTATCGCGGGTATCTATTTGCTCGCCGATATTTTTCAGTTTCTGCGTGTCATAGGCGGTCAGACCGACAAACACCACCACCCCGATATAGGTTACCGCCCACATCAGCGCTTCACTCTTCAGCCAGAAATTGACCAGCGACGCCAGAACGATACCAAT [...]
+NODE	272	51	3104	3104	0	0
+TTTTGATAACCCACGTTCAACCTGTTGTTGTTTTGTGGATATCAGCACTTT
+AAATGAGTATACAACGTTAACCATATAATGCCGGCGGTACACCATAGTCCC
+NODE	273	65	4273	4273	0	0
+ACCCCAGACCAAGCAAAAGTGCTGATATCCACAAAACAACAACAGGTTGAACGTGGGTTATCAAA
+TGCTTGGTCTGGGGTATGGGGCCATTACCTGTCTTTCCCGCTTTGGCACTGTTGTCACAACGTTG
+NODE	274	2345	110262	109332	0	0
+GTACCTATGTTGAGGAGGTGACCGACTACGTGCTGATGATGAAAATCGACGAACAAAATATGGAAGGCGGTAATTCGCTGCTGCTGCACCTTGATGACTGGGAACATCTGGAGTCGTTTTTTACCCATCCGCTGGCGCGTCGCGTCATGCGCTGGGCGGCGCCGCCAAGCAAGAATGTTAGCCATGACGTCTGGCACCCGGTGTTTGATGTCGACCAACAAGGCCGCCCGGTCATGCGTTATATCGACCAGTTCGTCCAGCCAAAAGACTTTGAAGAAGGCGTCTGGCTCAGCGAGCTTTCAGACGCGCTGGAAACCAGTCAAAACATCCTCTCCGTACCGGTACCGGTCGGCAAATTCCTGTTGATTAACAATCTGTTCTGGCTACATGGACGCGATCGTTTTACGCCGCATCCTGACTTGCGTCGCGAACTGATGCGCCAGCGCGGTTACTTCGCCTACGCCGCCAGCCATTATCAAACTCACCAATAAG [...]
+GATCATTGCCGAGGGAAAGTTCCACGGGGTAATCGCGGCGGTGACGCCGATGGGCTGTTTAATCACCAGCAGCCGTTTATCGGCCTGATGACCTGGAATCGTGTCGCCATAGATACGCTTCCCCTCTTCGGCGAACCATTCAATAAACGAGGCGGCGTAGCTAATTTCGCCTTTCGCTTCCGCCAGCGGTTTGCCCTGTTCCAGCGTCATCAGACGCGCCAAATCGTCCTGATGTTCCATCATCAGATTGAACCAGCGACGCAGGATATTGGCTCGCTCTTTAGCAGTGAGCGCGCGCCAGGCGGGCAGGGCGCGATTGGCGGCGTTGATGGCGTCGCGCGTCTCTTCCGCCCCCATTTTGGGCACATTGCCAAGCGGTTTCCCGTTGGCGGGGTTGCTCACGGGGATGACATCGCCGCCGCGCGCGTCGCGCCAGTCGCCATCGATAAAGGCCTGCTGGCGGAACAGGGTAGAGTCGTTAAGTTGCATAAT [...]
+NODE	275	530	22135	21969	0	0
+CTGGATTTAACGGTATCAGAAACCGCGTTGACGCCTTTTGAGTCATGGTTAAAGCCCGCTCGCCAGTTGGCGGATGTCTTATTTCCCCGCACGGTTCTCAACGACCGGCTTCATACGTTTAGCACCTATGAACGTATGTGCACCGCGCTGACCGCCGCTCAGGTATTTGGGGTTCAGCGTTTGTGCCGCCATTATGCCGCGCGTCTGGCGCCGCTACCTGGCCCTGACGCCTCAAGAGAGAGCAATCAACGGCTGGCGCAAATTACGCAATACGCTCGTCAGCTTGCCGGCTCCCCCTCCGTTATCAATACGCGGGCCCGCGAACAGCTTGCAGAGGTGGGATTAACCGCCCGGGATACCGTACTCATCAATCAGATCATTGGGTTTATCGGTTTTCAGGCGCGGGTAGCGACGATATTTCAGGCGTTTTGCCGTCTGCCCGTGCGCGAACTGCCCGGCCAGGAGATGCAGCGCTTTGCCAGGGCCGCGCGG [...]
+GGCAAAGCGCTGCATCTCCTGGCCGGGCAGTTCGCGCACGGGCAGACGGCAAAACGCCTGAAATATCGTCGCTACCCGCGCCTGAAAACCGATAAACCCAATGATCTGATTGATGAGTACGGTATCCCGGGCGGTTAATCCCACCTCTGCAAGCTGTTCGCGGGCCCGCGTATTGATAACGGAGGGGGAGCCGGCAAGCTGACGAGCGTATTGCGTAATTTGCGCCAGCCGTTGATTGCTCTCTCTTGAGGCGTCAGGGCCAGGTAGCGGCGCCAGACGCGCGGCATAATGGCGGCACAAACGCTGAACCCCAAATACCTGAGCGGCGGTCAGCGCGGTGCACATACGTTCATAGGTGCTAAACGTATGAAGCCGGTCGTTGAGAACCGTGCGGGGAAATAAGACATCCGCCAACTGGCGAGCGGGCTTTAACCATGACTCAAAAGGCGTCAACGCGGTTTCTGATACCGTTAAATCCAGTAAAAAACGATC [...]
+NODE	276	2441	113208	111462	0	0
+AAGATTACTGTGTGACGGATTACCTTTCGCCAGTGGGGAAGGCCGGTGCGACGTCAGAATGTTAATGGAGCCGCCGCGATCGATTTTGTCGCCAAACATGTCGGCATTTAACCAGGCGCCCTGGCCGATAGCGGTGACGCCAGGCAATATGCGCGGCGTGACTTTTGCCGGAATGAGCATCTCTCCGTTCTGGTTAAAGACCCGCACGGTGTCGCCGTGCTGAATGCCGCGTGCTTGCGCATCAATCGGGTTGATCCAGATCTCCTGCGGACATGCCTGTTGCAGGACGTCGATATTGCCGTAGCTGGAGTGGGTACGCGCTTTATAGTGGAAGCCGGTTAGCTGTAGCGGGTAGCGCTGACGAAGCGGATCGTCCCAACCGTCAAAGCCTGGCGTATAGGCGGGTAAAGGATGGATAATCTCATCTTTCTTCAGCTCCCATGTGTCGGCGAGGGTTGCCAGACGCTCGGAATAGATTTCGATTTTACCGGA [...]
+TTAATGGCGGCCAGTATCAGCCGACGAAGCCTGGTAAAAACCTCCGCTATCGGTAGCCTTGCGCTTGCCAGTAGCGCTTTCACCCTTCCATTCTCCCGCATCGCCCACGCCGCAGCAGGCCTCGCATCTGGCAATGTGGCAGAAAAAGCGGTCTGGAGTTCATGTACCGTTAACTGCGGCAGCCGCTGTCTGCTACGCCTGCACGTAAAAGATGACACCGTATATTGGGTTGAGTCGGATACCACGGGCAACGATGAATATGGCAACCATCAGGTACGCGCCTGCCTGCGCGGTCGTTCTATTCGTCGCCGGATGAATCATCCCGATCGCCTGAAATATCCGATGAAACGCGTTGGTAAACGAGGAGAAGGCAAATTCGAACGTATCAGTTGGGATGAAGCGTTGGATACCATCGGCGATAACCTGAAACGTATCCTCAAGGACTACGGCAACGAAGCGGTACATGTCCTTTACGGTACCGGCGTGGACGGC [...]
+NODE	277	50	2787	2749	0	0
+CTTCCGGAGCCGGTGCCGGTGCCGGAGCGACTACCGGAGCAGCTTCTTGC
+TACAGACCAAGCACTTCACTCTGAAGTCTGACGTACTGTTCAACTTCAAC
+NODE	278	14	789	756	0	0
+TGGCCGAAACGGTA
+ACCGGCTCCGGAAG
+NODE	279	2457	141656	139574	0	0
+TTTAAAGCAGCGAGTTCAGTCACTGGAAACACGTCCGGACAGCAAAGAACCTCTGGTTGTTCAACAAATTGGTTTGCTCATTGCCTTACTGCCCGAGATTGGACGCTTGCAACGGCAAATTTCACCGCCGACTTCTACATTAATTACCCAGCCGTAAGCGAATGAGCCCAGTCGGCAAGCTCCTGGCGACGACTCGCCGGGAGCGCCGCTTCATGTACGCCGACAATTGCGCCTTCCAGGGCATACAAAACTTTCACCGTCAGCAAGGGATTGCTTTGTCGCAACCTTAGCCAGCACATTTTCGCGCCCAGTATGCGTAACATATTTTCGTCCTTTATCCCTGACTCATTGAGCAATGTTTCCAGATGGAAGGTCATATTGGGGAGATCTTTGAGTCTGTGCTGTAAAATACGGCTGTGTTTTTCCTTCATTGCCGCGTCAAGAGAATACTTCGATAAACGCACCAGCTGCTGCTGATCGCGCCACAGGCTT [...]
+GGAAACACCTACGCTCAGCAGGCCGTTGTCCGGACGGGTGCCGATGGTGTTGGCATCACCGATGTTGTTAGTCCACTGGTATTCCAGACGGGTTGCGATTTCAGGGGTGATAGCATACTCGATACCGCCCGCGAATACCGGGGAAACGCCGGTGTCGTGGTCTTTAGTAGACGGGCCGCCAGGGACGTTAGACTTGGTGTCTGCACGCCATACCATACCACCCAGACGGGTATAAACGTCCAGATCGTCAGTGATTGGATAACCCAGTTTAGCGGTCAACTGAACGCCCTGAGCTTTATAAGCGCCATTGATGTTGTCGCCTTTGTACGGCATACGGCCTAACCAGTCGTAGCCCATTTCAAAGCCAACGTACGGGTTAACCTGGTAACCACCAAAAGCACCTGCGCCCAGTTGGTTTTCATGAGTCGGGCCATCATTGTTAATGAAGCCGGTGTCATGGTACTGAGACCAGCCCAGTTTAGCACCAGCGTA [...]
+NODE	280	150	10107	10107	0	0
+GGTTAATAAGAATTACTTGTCTTTCCAGTGCACTTTGGCGTCTTTAATAAAGGACAGCGTCACCATAATGTTGACGAAGAACAGCGGACATCCTCCGGCGATAATCGCGGTCTGAATCGGCTTCAACCCACCCAGCGCCAGCAGAACGAT
+CGCCGGAGGATGTCCGCTGTTCTTCGTCAACATTATGGTGACGCTGTCCTTTATTAAAGACGCCAAAGTGCACTGGAAAGACAAGTAATTCTTATTAACCCAATTGATCAAGAGGCTGAAAGATGGATTTCAACTTAAATGACGAACAGG
+NODE	281	13	629	629	0	0
+ACCGATGATGCCG
+AGACCGCGATTAT
+NODE	282	6	257	257	0	0
+ACCAGC
+CGATTC
+NODE	283	32	1038	992	0	0
+ACCGACCAGCCGATACGCACTAACAGAGGCGG
+TATCGTTCTGCTGGCGCTGGGTGGGTTGAAGC
+NODE	284	12675	614975	605272	0	0
+TATCCTGGCGCAGGTGCCTGCGGGTCGCCTCGGCGGCGCTCAGGAAATCGCCAGTGCGGTTGCATTTTTAGCCTCTGACGAAGCGAGTTACATCACTGGTGAGACTCTGCACGTCAACGGCGGAATGTACATGGTTTAATCACGATTGAAAAATATTTGCGTTATTAGGGCGAAAGGCCGCAAAATAACGTAAAATCGTGGTAAGACCTGCCGGGATTTAGTTGCAAATTTTTCAACATTTTATACACTACGAAAACCATCGCGAAAGCGAGTTTTGATAGGAAATTTAAGAGTATGAGCACTATCGAAGAACGCGTTAAGAAAATTATCGGCGAACAGCTGGGCGTTAAGCAGGAAGAAGTAACCAACAATGCTTCTTTCGTTGAAGACCTGGGCGCAGATTCTCTTGACACCGTTGAGCTGGTAATGGCTCTGGAAGAAGAGTTTGATACTGAGATTCCGGACGAAGAAGCTGAGAAAATCACCACCGTT [...]
+GTCGATTCGCGCGCGCGCTGCATAAGCGTCTGCCAGTTGTCGGTGCTGGCGTTCATCCTCAACCCATACTGCCGCCAGCTCCAACGCAATATCGCCGTCGCCGGCATACTCCCAGTCAATCAGTCTCAACCCGGCGGACGTTAATACTATATTGTCGCCATGGACATCCATATGCAAAGGCGCGAGCCGCAGCGGGCGAGGTTCACCGTTTTTTTGCAACTGTTTGAGCCGCCGCAACCAAAACGGCGTACGCCTTGCCGGATCGCAACACGACCAGTACTGCGCCAATAGTGGCGATAGCGCGATACGCCAGCCAAAACGCGGCTGTTGATGCAAATGATACAGTAAGGCCGCCAGTTCGTCGGCATCTGGCAGAGCGGAATTTACCACACCATGCAGATATTCTACCGCCATCCAGCCTGGAGTATAAAAAAGCGCTCGCGGCGCAAGACTGGCCGGCAATTGGGATAAGGCGCGGTAATGACGTAAAAA [...]
+NODE	285	3811	211415	208278	0	0
+ATAGCGGTAGTTCCCCGGCAGTGATGGTCACTCACTATGGAGATCGCGAATGGTAATGTCCGCACCAGGACACATTGTTTACAGTAGTTACAACACCCTGTACGGACATTCTCTCTCCGGTGGTGGTCTTGTCACCTTAAAAGCTCTCATCATTTCTCTTACTGTCCATACCCATGACGTCATATGTGGTGCGCGTAGCCGTGTGTGGCGTCGTTTCAAAAAGCAAGCTAAGGCTTACAAGGAAGCCAACCCTCAGATGTGTGTGCGCATAATCGCGTTCAAGAGAACGCGGGTGATGTATACCTACAACTCAAGGTGCTATCCATGGGAAGACAAAAAGCAGTGATCAAAGCTCGTCGTGAAGCAAAGCGTGTGTTGAGACGAGATTCGCGTAGTCATAAGCAACGTGAAGAAGAATCGGTCACGTCACTGGTACAGATGGGCGGAGTAGAAGCCATTGGCATGGCGCGCGATAGTCGCGATACCTCTCCT [...]
+GTGGTGGCCGGGTTCCTGGTTGGGCGGCTGGGGTCAGTGTATTTGCTACTACGTTAAGCTCAATTACATTTATGTCAATTCCTGCCAAAGCGTTTACTTCCGACTGGACGTTTATCATTGGTCAGTATCTGGCTATCGCAATTTTACCGCTGGTTTTTTATTTCTATATTCCGTTTTTTCGGAAATTGAAAGTCACATCAGCCTATGAATATCTCGAAGCACGGTTCGATGTGCGCTGCCGTCTATTCGCCAGCATGTCATTTATGTTGTTTCATATCGGACGTATCGCCATTATCACTTTCCTCACCGTGCTGGCCTTGCGCCCCTTCATCGCTATAGACCCGGTGATTTTGGTACTGTTGATTAGCGTGATGTGTATCATTTATACCTGGATGGGGGGAATTGAAGGAGTAATATGGACTGATGTTATTCAAGGCCTCTTACTTTCTGGCAGCGCGATACTGATTTTTATAGTGATATGTCTCAAAGTCC [...]
+NODE	286	894	86383	80380	0	0
+CGATACCCCGACCCGCCACTACGCACACGTAGACTGCCCGGGGCACGCCGACTATGTTAAAAACATGATCACCGGTGCTGCGCAGATGGACGGCGCGATCCTGGTTGTTGCTGCGACTGACGGCCCGATGCCGCAGACCCGTGAGCACATCCTGCTGGGTCGTCAGGTAGGCGTTCCGTACATCATCGTGTTCCTGAACAAATGCGACATGGTTGATGACGAAGAGCTGCTGGAACTGGTTGAAATGGAAGTTCGTGAACTTCTGTCTCAGTACGACTTCCCGGGCGACGACACGCCGATCGTTCGTGGTTCTGCTCTGAAAGCGCTGGAAGGCGACGCAGAGTGGGAAGCGAAAATCATCGAACTGGCTGGCTTCCTGGATTCTTACATTCCGGAACCAGAGCGTGCGATTGACAAGCCGTTCCTGCTGCCGATCGAAGACGTATTCTCCATCTCCGGTCGTGGTACCGTTGTTACCGGTCGTGTAGAACG [...]
+TACCATCTCTACGCCTTCCGGCAGTTCGATGGTACCAGTCACGTCAGTAGTACGGAAGTAGAACTGCGGACGGTAGCCTTTGAAGAACGGAGTATGACGGCCGCCTTCATCTTTGGACAGAATGTACACTTCAGATTCGAACTTGGTGTGCGGCTTGATGGTGCCCGGCTTAGCCAGTACCTGACCACGTTCGATTTCTTCACGTTTGATACCACGCAGCAGAACACCTACGTTCTCACCGGCACGGCCTTCGTCCAGCAGTTTGCGGAACATTTCAACGCCAGTACAGGTAGACTTCTGAGTCTCTTTGATACCAACGATTTCAACTTCTTCGCCCACTTTGATGATACCGCGTTCTACACGACCGGTAACAACGGTACCACGACCGGAGATGGAGAATACGTCTTCGATCGGCAGCAGGAACGGCTTGTCAATCGCACGCTCTGGTTCCGGAATGTAAGAATCCAGGAAGCCAGCCAGTTCGATGATTTT [...]
+NODE	287	8114	425442	422156	0	0
+TAAGCCAGTGGTGATCCCGCCCTATCACGCTGAGCAGGAAGAGATTGCCATTGAGGCGAAAGATCTGACCATGCGCTTCGGTAAGTTCGTCGCGGTTGACCATGTTAATTTCCGCATTCCGCGCGGCGAGATTTTTGGCTTCCTCGGTTCAAACGGTTGCGGCAAATCGACCACCATGAAAATGCTGACCGGTCTGCTTCCCGCCAGCGAAGGCCAGGCCTGGCTATTTGGCCAGCCGGTAGACCCGAACGACATCGATACCCGTCGCCGGGTCGGGTATATGTCGCAGGCATTTTCGCTCTATAACGAACTCACCGTGCGGCAGAATCTGGAACTTCATGCCCGCCTGTTTCATATTCCGCCAGCGGAGATCCCGGCGCGCGTCGCGCAGATGATCGAACGCTTTATGCTAACGGAGGTGGAAGATACGCTCCCCGCTTCGTTGCCGCTCGGTATCCGCCAGCGTTTATCGCTGGCGGTAGCGGTGATCCA [...]
+ATGCGGCGGTTCTTTATTGGGTTCCCTCACCCCATCCAACAAAAAGGTCACAATATGACTCCGTTTACACAATCACAGCGCGTAAAAGCGTTGTTCTGGCTATCGCTATTCCATTTACTGGTGATCATTTCCAGTAACTATCTGGTGCAGCTCCCCATCACTATTTTTGGTTTCCACACGACCTGGGGCGCGTTTAGTTTTCCTTTTATTTTTCTCGCCACCGATCTTACCGTGCGTATTTTTGGCGCACCGCTGGCGCGCCGCATTATCTTCGCCGTCATGATCCCCGCGCTGCTGGTGTCGTATGTGGTGTCATCGCTGTTCTATATGGGCGCCTGGCAAGGTTTCGCCGCGCTGGCGAACTTTAATCTGTTTGTCGCCCGTATCGCCGCCGCCAGCTTTATGGCCTACGCGCTGGGACAGATCCTTGATGTCCATGTGTTTAACCGCCTGCGCCAAAATCGTCGCTGGTGGCTGGCGCCGACCGCTTCA [...]
+NODE	288	2514	120907	120224	0	0
+CACGCGACCGGGTCAGCCTGCCCGACCTTTTTTTGGTCGTCGGCCCACCGCACGATACGATTTTGCTGGTAGTCGCGCTTCACGCTTGCCGCAATCCCGGCGGCATCCAGCCCTTCGCACTGCGGAAACTTAACCGATTTACTCTCGGTGGATGCCGCAAATACCGATACGCTGGCGGATAACAGCAGCAGGCTCAACAACGCTCCTCTTTTATTCATACTTTTCTCCTTAGCACAATGATTCAGGAAAAGCATGGTACAAAACGCCGGGAGCGCAAGTGTGGGTTCAGGCGGCTTGCTTTTTCGTTTTACTCGCGGCGTCCTTTTCAACCGCCTGCGGAGAAGGCAACTTACCGGTTTTGAGGATAGTGCTTAGCACCTCTTTATGTTCCGCCAGCCACAGCGACAACGCCTCGCGCTGCCCATCTTCCAGCACGACTGGCGACTGCTCAAGCCAGGTATCAAGAAGATCGGCAGTATCGAGCATTTTGTC [...]
+GATGCTATTCGCGCTATCGCTAAAGAAGTACCGGAAGCGATTGTCGGCGCCGGAACCGTTCTCAATCCGCAGCAGTTGGCGGAGGTGACGGAAGCGGGCGCGCAGTTTGCGATTAGCCCGGGACTGACTGAGCCACTGCTGAAAGCCGCGACGGCAGGCACTATCCCATTGATTCCCGGTATTAGCACCGTTTCTGAACTGATGTTGGGCATGGACTATGGTCTGAAAGAGTTCAAATTCTTCCCGGCGGAAGCGAATGGCGGCACTAAAGCGTTGCAGGCGATTGCCGGTCCGTTCTCTCAGGTACGTTTCTGCCCAACCGGCGGCATCTCTCCGGCAAACTATCGTGACTATCTGGCGCTGAAAAGCGTGTTGTGCATCGGCGGTTCCTGGCTGGTGCCGGCCGACGCGCTGGAAGCGGGTGATTACGATCGCATCACCAAACTGGCGCGCGAAGCGGTAGAAGGCGCGAAGCAGTAAGCCGTTAAATGC [...]
+NODE	289	90	4499	4499	0	0
+ACTACTTTATGTAGTCTCCGCCGTGTAGATAAGAAATTGAGAAGTGGGTGATTAGCTCAGCTGGGAGAGCACCTCCCTTACAAGGAGGGG
+TCAATTTCTTATCTACACGGCGGAGACTACATAAAGTAGTTGGTGGGTGATGACGGGATCGAACCGCCGACCCCCTCCTTGTAAGGGAGG
+NODE	290	83	5285	5213	0	0
+GGTACTTCACAATAAGAAATTTAGCTGGCGAGAAAGTGGTGGGTGATGACGGGATCGAACCGCCGACCCCCTCCTTGTAAGGG
+TCTCGCCAGCTAAATTTCTTATTGTGAAGTACCGAAGTGGGTGATTAGCTCAGCTGGGAGAGCACCTCCCTTACAAGGAGGGG
+NODE	291	5	541	541	0	0
+ACTTC
+GTCGG
+NODE	292	88	3900	3900	0	0
+GGGCGTGACCGGCTCCGGGAAGACATTCACCATCGCCAACGTCATTGCGGACTTGCAGCGGCCAACGATGGTGCTTGCGCCCAATAAA
+TGGCGATGGTGAATGTCTTCCCGGAGCCGGTCACGCCCAATAACGTCTGATGCGCCAGCCCGTCCTCCAGCCCCTCTTCCAGACGACG
+NODE	293	7556	428848	426004	0	0
+GGAAATCATTATTCAGGCGAAAGGTAAACCCGCGTTTCGTGACAAAAATCTGCCAGGCTTTTCTATCTCCTACGCCGGAAATATGGTTGGCGTGGCGTTGACCACCGAAGGAGAGTGCGGGCTGGATATGGAATTACAGCGCACCTCCCGCGGCTTTCACCATCCGCATTCGCTCGAACGCCACCCTTTCTCCCGTAATGAAAACTTATGGGTAGCCAATCAAAACGATCCCAACGAAGCGCGGGCGCAACTCATTACATTGCGCCAGAGCGTGTTAAAACTCACCGGCGATGTCATGAATGACGATCCGCGGGAGCTGCAACTTTTACCCGTTGCCGGACGCCTGAAGTGCGCGCATGTCACGCAGCTTGAAGCCGTGTGCGATGCGGAAGATGTACTGGTATGGTCCGTAACCGTTACGCCAGCGATAGAAAAATTAAAAGTGTGGGAGTTCGATGGCAAACTGGGCTGGAAAAGCCTGCCCGATATCCA [...]
+TCAGTTTCGGCATTGCCCTGTTTTTAACCGAGCTGGCGCCAGGCTGGCTAAAGCGTCCGCTCGGCATCGCCATTGAGCTGCTGGCGGCGATCCCCAGTATCGTGTACGGCATGTGGGGGCTGTTTATCTTCGCGCCGCTGTTTGCGACGTACTTCCAGGAGCCGGTCGGCAATATTCTTTCCAACATTCCGTTTGTCGGCGCGCTGTTCTCCGGCCCGGCGTTTGGTATCGGCATTCTGGCGGCGGGCGTCATCCTCGCCATCATGATCATCCCCTACATTGCGGCGGTTATGCGCGACGTCTTCGAGCAAACGCCGGTAATGATGAAAGAGTCCGCTTACGGTATAGGCTGTACTACCTGGGAAGTTATCTGGCGCATCGTGCTACCGTTCACCAAAAATGGCGTGATCGGCGGCATTATGCTGGGGCTGGGCCGTGCTCTGGGTGAAACGATGGCGGTCACTTTTATCATCGGCAATACCTACCAGCTCG [...]
+NODE	294	2959	138904	138027	0	0
+TGCGTGTGACGTTATTCCTCTTCGTCGTGGGTAGGCTGTTCTTTAACAATCCGAACCAGATCGACACGGTAGTCGTTGGCCTCGACAATGGTGATCCGCAGTGGCGGAACATCAATGACATCGCCTACACGAGGAATATGGCCATTAGCGGCGATCACTAACCCCGCGACCGTCGCAATATCGCCCTCTTCGTTCACCAGATGGTCAACTTCCAGCGCCTGCTGTAGCGCATGGAGATCGGTGCCGCCCTTCACTATCCAGCCCTCGGCATCGGCAACGATTTCCGGCGTTTCATCGGCATCCGGGAACTCACCGGCAATCGCTTCCAGCACATCCAGCGGCGTAACCAGCCCCTGCACCACGCCGAACTCGTTCGTGACGATAACGAAACTGCCGCGCGCGCGACGCAAAACGCCTAACAGATTGATAGGATCAAGCGTTTCCGGCACCACTATCGCCGGAGAAGACGCGGCGATAGCCGCAACGTCCGCG [...]
+GCTTCGATATCCTTTTCATCGACGGAAACGGCGTTGTTCACCTGCGTTTTACCTTGACGATAGGCCATACCGCCAATGTTCACGGAAGTGACTTTCACGCCGCCCTCAACGATGCGCTCGACGTCGGTAGGATTGGTAAACAGAAGCATCACGCGTTCACCGGCGTATTTCGGGTTATTGTAGACGCGAATCATCTTCGCGACGTCAACCACATGCGCCGTAACGCCCGGCGGCGCAACTTGCGTCAGCAGCGTTTTACGAACGGTATCCGCCGCCACTTCATCGCTCACAACAATAATACGGCTGACATTGGTCTCTTTGGTCCAGCGGGTAGCGACCTGACCGTGAATGAGGCGGTCATCAATACGGGCAAGCCCGATAACCATATAATCATTCGGGCCCATCGGTTTTGCTGGCGTGGCCGCTTTTGGCGCGGCGGCGACTGGCGCTGGCGCGGCTTTTTCTACCGGTTTTGCTTTCAGCGCTTTTACG [...]
+NODE	295	6443	362796	359962	0	0
+CGCCAGATGGCGATTTTCAGTTTGCCGATGCACCTGTTTCTCTCCTGGCCGCTGGATCGCGATCTTATCAACCATGTCACGCACGGGATGGTGGTTAAATCACTGGCGACCCAGCAGCTTAGCACCTTTGAAGTGTTGCGCTGGCAGCAGGAAACAAGCAGCCCGAATGAGCAAATTCGCCAGTTGGCGATCGATGAAATCGGCCTGATGCTTAAACGCTTTAGCCTTTCCGGCTGGCAGCCCATTTTGCTCAATAAAACATCACGCACCCACAAGAATAGCGTCTCACGCCATGCGCAGTTTTACGTAAGCCAGATGCTGGGATTTATTGCCGATAACTACGATCAGGCGCTCACCATTAACGACGTCGCGGAGCATGTCAAACTCAATGCTAATTACGCGATGGGAATATTCCAGCGGGTTATGCAATTGACGATGAAGCAGTACATCACGGCGATGCGCATCAATCACGTACGTGCCTTATTGAGCGAT [...]
+TGGGCTTAACGCTTTGATCAACTGTTTATTATTTCGAAATAGCGAGGCGTAATCTTTATAGAAAAAGGCGGCGACCAGAATAACTAATAAAATAGAGATCAGGACGCTGGCCAGGCGGTAAAGCCCGCTACGTAAGCGCGGCGTCGCCGGACGGATTTTGACCCAGAAGGCAATCACGGCTGCCAGAACGCCGCTTAATCCCAGCGTCAGCACCATTTGCGGCGTCATCAGCGCAAAGGTTTCCGCGGGCGTGGTATCCATCATATTGGCGATCATGGAGCGATCGATGATGATGCCGTAAGTCAAAATAAAATACTGCGCGGCAGCGCCGACCAGAATAAAAACGCAGGCCAGCAGTCGGTTTAGCCAAATAAATGAGGCCAGCGTCAGCACACTATTGACCACGCTAAACGCGACGACCGGCATGGAAATAAACACCAGCACATTGCGCAGCGAGTTTAACGGTAGGTCTTGTAGTACCTGCTTGTAGAA [...]
+NODE	296	7	3037	2920	0	0
+TAACGTC
+TAATACG
+NODE	297	4	1677	1270	0	0
+CGGT
+CAGC
+NODE	298	8	3213	1197	0	0
+TATTAACC
+CTCCGTGC
+NODE	299	1	391	222	0	0
+A
+A
+NODE	300	8	3054	1621	0	0
+CAACACCT
+ACCGGCTA
+NODE	301	15	5509	2984	0	0
+TCCTCCCCGCTGAAA
+ACCCGCAGAAGAAGC
+NODE	302	110	44969	42132	0	0
+ACCGCATAACGTCGCAAGACCAAAGAGGGGGACCTTCGGGCCTCTTGCCATCAGATGTGCCCAGATGGGATTAGCTTGTTGGTGAGGTAACGGCTCACCAAGGCGACGAT
+GCACATCTGATGGCAAGAGGCCCGAAGGTCCCCCTCTTTGGTCTTGCGACGTTATGCGGTATTAGCCACCGTTTCCAGTAGTTATCCCCCTCCATCAGGCAGTTTCCCAG
+NODE	303	10	3842	3069	0	0
+CCCTAGCTGG
+TCCCATCTGG
+NODE	304	7	2627	2128	0	0
+TCTGAGA
+AAGCTAA
+NODE	305	8003	426768	424284	0	0
+AAATAACCGCCGGCATTTAATTAGCTTTCACACTTAAGATAGCAATAGGAGAAGTACAATGGAGATTACCACTCTTCAGATTGTGCTGGTGTTCATCGTCGCATGTATCGCGGGTATGGAGTCGGTACTTGATGAATTTCAGTTCCACCGTCCGCTGATCGCCTGTACCTTAATCGGCGCCGTTTTGGGGGACATGAAAACCGGTATTATCATCGGCGGTACTCTGGAAATGATCGCTCTGGGCTGGATGAACATCGGTGCTGCCGTTGCGCCTGATGCCGCACTGGCGTCCATCATCTCTACCGTTCTGGTCATCGCCGGGCATCAAAGCATTGGCGCCGGTATCGCGCTGGCGATACCGCTGGCGGCGGCAGGCCAGGTACTGACCATTATCGTTCGTACCATCACCGTGGCATTCCAGCACGCGGCGGACAAGGCGGCTGAAAACGGCAACCTGACGGCGCTCTCCTGGCTGCACGTTTCTTCTCTGTT [...]
+CACCACGGTGGCGCTTTTTCTGAAAATGGGACAGTCGGAAAAGCCAATAATGCCGCTGTTGGTATGGAGATATTGCGCCGTGCTGGTGCCGCGTGCGGTCAGGTAATGGCACTGTAAACCCAGCCCCGCAGCGTTCACTTTACTTCCCACCAGGATGCCATAGCCGCTCATCAGCAGGCCTATCCACACCAGGGCAAACAATACAATTGCGCGAATGATCAAACGCATTACTACCTCTTTTCTTTTTTAGTTAGAATAAGAGTAGCGTGTACATTGATTGAAACAAGTGAATCATTCCTAAAAACATATAATGCCGCTACAGTTACTCCTGGTTTAAGTAACTCATGATAATTTAGCGACATAAGATGTAAGATCGGAGAGTGGAGTGAAAAAATTTCGATGGGTCGTCCTCGGCATCGTGGTGGTAGTATGCCTGTTGCTGTGGGCGCAGGTGTTTAATATCATGTGCGATCAGGATGTACAATTTTTCAG [...]
+NODE	306	4179	264473	263397	0	0
+CATCAATCCACTGAGAACGCCATACATAAAACGGTCGAAACCGTTAGCATTATTAACAACATTTTCCTGTCTGGAATTTTCCTCTGGTGAAACCAAAGGAGATTGCTGCTGTTCTGGTTGGGAATCAAGCACAAAGCCATCAGGAAGTTGTGAGTTATCAGGCTGTTCATCCAGAACAAACCCCTCTGGTAAACCTACATTGGTTGCCATTGTCCGTTCCTGTAAATAATTTTCTGACCAGTTTTAGGATTTTTCGCGGTCATACCTTCTCGAAATGTTTGACCGCCAGATGTTGCTTGTTGTGTCTGTTGTTGCGCAGGCTGCTGAATATCTTCATACAGCTTGGCTTTTCTGGATTGCAATTGCTTAGTTAGTCCGCTGGGGAGAGAATCTCCATAAGTTGAAAGATAATCATCCATTTGCTGGTTAAACTTTTCGCCTTCAGTATTTGCCATCAGTTTTGAGGTATTGATTAAGTCCTGGACTTGCTCA [...]
+ATTGCCGGAACATACTGTAAAACGCCATTCGCTGATTCATATGCATTCATCAGTCACCCGGCTACTGGCGCACCTTCCGTCTACATCATCGGGTCAGGGCAGGCTTCACCAATTGCGACGGCCAGTATTGAGAAAATTATCCGCTCATACACGGCTGATGAACTGGCAACCGGGGTGATGGAAGCGTTGAGGTTCGATTCGCATGAACTGCTGATTATCCATCTCCCGCGTCATGTGCTGGTTTACGATGCCTCATCAAGCCAGAACGGGCCGCAATGGTGCGTACTGAAAACAGGTTTATACGACGATGTTTATCGTGCCATCGATTTCATGTACGAAGGAAACCAGATTGCGTGTGGCGACAAGTCAGAAGCGGTGACAGGGCAGTTGCAATTCGACATTAGTAGCCAGTACGACAAGCAGCAAGAACACCTGTTGTTTACACCCCTATTCAAAGCGGACAATGCCAGATGCTTCGACCTCGAAGTTGAA [...]
+NODE	307	2350	160399	159553	0	0
+TATGGGGTCGACAGGTGGCTTCGGAGAAAAGTCCAATGCTTCGCCTCCAGTTACCAAGAATGATATAACCAAAAACAATAATATCGCTTATCTTGGAAAACAATACACTGAGGAGCATGCTATGGGCAGCCCATCAAGAGAAGAGATTGACGCGAAGCTTGGTCAAAACAAAGCAGAAATTGAGTTAATATCTGCTAACATGCGCGCTGAAATTTCAGCTTTCAGAGAATTCCAATCTAAGCAATTTACAGCTATGAATCAGTCACTTAATGAAATTAAGGGACAGATATTCGCTAGCAATGGCGAAGTTGCAGGGCTCAAAGGTCAAATTGATGGCATTAAAACATCCATGACCGCGACCCAATGGCTCGTTGGTGCGGTTCTCGCTATGCTTGCGGTAATCATAACGCTTCCGCAGATTCAATCTTACTTCAAGGTTTCTGAGCCGACTGCGAAGGAAGCCGCTAGTGAAACCCATGATACCAAAATAAA [...]
+TCGTTCATCCGTAGGGATGGGTAGTAAATCATCTAAAGCAACGTTAAAGAAAGCTGCTGGCGCAATGGATAATAAATTTATTGGTGGGCAACGTGCTATTCAAGATTTCGCCGATGAAGTTAATCCTGATTTTAACGCGATAAATGCTATTCGTGAGCTAGAACTGGAAAATTATGCCACTCCAGGCATGATCTCTAATAATCCTTCTGTCAGGGCTCTTGATAATGCAGTGGCAAGTCTTCCTGGAACGGAGATTAGTGAGGCGCATAAGCGTTTTATTACTGAATTAGGAAGAAAAGCTGATGAAATGATAACTTCATTTGGGGGAAGCCTTGATAAGCAACTGGTTTCTGACAGGCTTGCAGATAATTTTGATAAAACCATTTCATCATTACAAAATCAGTCAGATAACATCTACAACAAAATTGCCGAAAAGGTTCCGGTAAGAGACCGGATTGAGGCAACTAATACGTTGAATTTTTTAGAGGATTT [...]
+NODE	308	1054	48425	47950	0	0
+GTCGGGCGGGGGCTCATTATGGGCAATGCCATGCCGCAGCTTATCGCCGCGCTGCCACACCTTTCGGTTATCGGACATTGTGGTAATCAAGCGGTATCACACTTTTTGACGCATTGGCTGGACAATCCGCATCTACCTTATTCCCCCGAATGAGAGATCTCTTCCAGCAAGCCAGACATTCAGTCTGGCTTTTTTTTGGTTTTTAGTCGCCGGTAAGTAATTTTTCGATGGCCGCTGACCACGGCGTCAAATCGCCGATATGGTCGCTAACCCAGGACGGATGGTAATAGGTATCCAGATAGCGATCGCCGCTATCGCACAATAACGTCACGATAGCGCCGGTTTCTCCAGCCTCGCGCATCCGGGCCGCAAGCTGCAGCGCTCCCCACATATTCGTGCCGGTAGAGGCGCCGACTTTACGGCCTAGCTGCGTTTCCAGCCAGTGTGCGGTGGCAACGCTGGCGGCGTCCGGCACGCGCAGCATCTCATCCA [...]
+GATTTCCGAAGCCTGGTTCGCGCGTTTACTGGGACTGCCGTTCATCGCCGTCATGCCCGCCTGTACCGCAAAACGTAAAATCGAACAGATTCAATTTTACGGCGGCCACTGTCATTTTGTGGAGAGCGCCTGCGAAATTTATGCCGCCTCCGAGCGGCTGGCGCATGAACTGAACGGTCACTATATGGACCAGTTTACCTACGCAGAACGAGCTACCGACTGGCGGGGCAACAATAATATTGCCGACAGTATTTTCCGCCAGATGCGCAACGAACCCCATCCGGTACCGCGATTTATCGTCATGAGCGCCGGAACGGGCGGAACCTCTGCGACGATTGGGCGCTATATTCGCTGCCAGGGCTATGATACTCAGCTCATGGTGGTGGATCCGGAAAATTCCGTCTTTTTACCTTACTGGCAGGATCGCGACGCTTCATTACGCAGCCCGGTGGGCAGTAAAATTGAAGGAATTGGTCGTCCGCGAGTAGAGCC [...]
+NODE	309	2293	129722	128647	0	0
+GTTTACACACCGGCAAAAAAGTCACCCTGACATTACGCCCTGCGCCGGCCAATACCGGGGTCATCTATCGTCGCACCGACTTGAATCCACCGGTAGATTTCCCGGCCGATGCCAAATCTGTGCGTGATACCATGCTCTGTACATGTCTGGTGAATGAGCATGATGTACGGATTTCAACCGTTGAGCACCTGAACGCTGCTCTGGCGGGCTTAGGTATCGATAACATCGTTATTGAGGTTAATGCCCCGGAAATCCCGATCATGGATGGCAGTGCCGCTCCGTTTGTCTACCTGCTGCTTGATGCCGGTATTGATGAACTGAACTGCGCCAAAAAATTCGTACGCATCAAAGAGACAGTTCGGGTTGAAGATGGCGATAAATGGGCTGAATTCAGACCGTACAATGGTTTTACGTTGGATTTCACCATCGACTTTAACCATCCGGCGATCGATTCCAGCAGCCAGCGCTACGCGATGAACTTCTCTGCGGATG [...]
+GTTAGTGCCGTAAGTGATGTCGGCAGCGTAAGCTTCACGTTTGGCGGGCGCAGGCATACCTGGCAGGTTGATACCAACGGACATACCGAGGAATTCGAATAGCGGGCGGTTGTTTTCGGCGTCACGCTGCGCCAGATAGTCGTTCACGGTTACCACATGAACGCCTTTGCCGGACAGCGCGTTCAGGTAGGCTGGCAGCGTTGCGGTCAGCGTTTTACCTTCACCAGTACGCATTTCGGCGATACAGCGATCGTTGAGCACCATACCACCCAATAGCTGAACGTCGAAGTGACGCATCCCAAAGACGCGTTTACTGGCTTCACGCACCACCGCGAACGCTTCCGGAATCAGGCTCTCTACACTTTCGCCTTTTTCAATACGGGCGCGAAATTCGTTGGTTTTCGCTTTCAGTTCGTCATCGGAGAGTTTTTCCATCTCCGGTTCCATCGCATTAATAAGGCTGACGGCCTTACGCATACGACGCAGCGTACG [...]
+NODE	310	6	517	496	0	0
+ACCACC
+AGGTGC
+NODE	311	5147	307788	306441	0	0
+TAAAGGAATAAAGCCTTTATCGCTACGCAGTAATTCCAGAATCAGTGAGCGACCTTCATCGGTTTCAAAATTCACCAGCACGACGGCGCCGCTACGCGGTACGGTAACCGTGCTGGTGCTTTTGATTTCAACATCGTTCTCCAGCGTGCTGATATCCAGCGACACCCGGTTTTCGCGGTAGGCTGACATATACGGTAAAATGCCATAGCCCGAACTGCCGATTTCGCTGCTGCTGTAGCCCAGTCCTGCGCCTTGTGCGCCGCTGGCTTTCACCATGGCGACAGCGTCGGTTTCGCCAATGCTGCCCGGCGCGAACGCCACGCCGCCAGAATGCAGCACCATGCCACCGCTGTAACTGGCGGAATATTGCTGGCTATTGTCGTCGCCAAACGAGGCGGAAAGCCCTAATGGGCCATAGCTGCTGTTAAGGGAGCCAAAGCCACTTACCTGATTCAGGTTGCCGTAATTACCGCTGCTGGAGGTGGCGCTCAC [...]
+CTGTTCAACCTGATCCAGCCGGATATCGCCTGCTTTGGCGAGAAGGATTTCCAGCAACTGGCGCTGATCCGCAAAATGGTGGCGGATATGAGTTATGACATTGAGATCGTCGGCGTGCCGATTATTCGCGCCAAAGACGGTCTGGCGCTCAGCTCACGTAACGGTTATCTGACCGCAGAGCAGCGCAAAATTGCGCCGGGTCTACACAACGTGATGAATAGCATCGCTGAAAAACTGATTGCGGGTAATCGTGAGCTGCAAGAGATTATTGCCATTGCCGAACAGGAACTGAATGAAAAAGGCTTCCGTGCCGACGACATTCAAATCCGTGATGCCGACACGCTGCAGGAGCTGACGGAAACCAGCAAACGCGCAGTGATTCTGGCCGCCGCCTGGCTGGGTCAGGCGCGTCTGATCGATAATCAAAGCGTTACATTAGCCCAGTAGACAGGGGTTAAAAATCGGGCAATACTGCCTGAGAATTTCCAAAGC [...]
+NODE	312	565	32312	32312	0	0
+TCACCCGGCAATTCAGGTAATACGCGTCTGTCAAAACTGGCATTGTGAGCGACATACCACTCACTACCGTAATAAAGCGGTATGACATCTTCAATCCACGGCTTATCGGCGACCATGGCTTCGGTAATACGGTGTATCGCCATTGCCTGCGGCGTAATAGGGCGATCGGGGCGTATCAGGTGACTCATGGGATTGACAATGTTGCCATCAATGACATCAACAGAGGCTATCTCTACGATCCCGCCCTGCAGCCCGCAGGTTTCCGTGTCTATAATCCGCAACATGATTCATTCCTCACCGAAAGACCTTAGCGTAATGGAATGATATCGCCTTGCCAACCCTCCGTTGTGCGCAGGCCCGTCAGTAATAGCGAACCGCAATCGGCACGAACAATAAGTTGCCCGCTTTCATCCCACAGCGCGCTACTGCCACAGGCATTGGCCATCAGTACGGCCAGCGCATATTTATGCGAAAAACGTTGTAAGCGTGAGG [...]
+CGAACCTGAACTCCATGCTTCTACCTCACGCTTACAACGTTTTTCGCATAAATATGCGCTGGCCGTACTGATGGCCAATGCCTGTGGCAGTAGCGCGCTGTGGGATGAAAGCGGGCAACTTATTGTTCGTGCCGATTGCGGTTCGCTATTACTGACGGGCCTGCGCACAACGGAGGGTTGGCAAGGCGATATCATTCCATTACGCTAAGGTCTTTCGGTGAGGAATGAATCATGTTGCGGATTATAGACACGGAAACCTGCGGGCTGCAGGGCGGGATCGTAGAGATAGCCTCTGTTGATGTCATTGATGGCAACATTGTCAATCCCATGAGTCACCTGATACGCCCCGATCGCCCTATTACGCCGCAGGCAATGGCGATACACCGTATTACCGAAGCCATGGTCGCCGATAAGCCGTGGATTGAAGATGTCATACCGCTTTATTACGGTAGTGAGTGGTATGTCGCTCACAATGCCAGTTTTGACAGACGC [...]
+NODE	313	1633	96406	93241	0	0
+TACGGCAGACGTGCGCCCGGCGTAGTGCCGATATCGGAACTGATGCCAGACTGGGCATGGAGCAGCGCCCGTTGCTTCCAGCCATACTTCACTGGCGTATTTTCGACGAAATCCGCCAGTTGGGCGCTAATACGGTAGCCCAGCTCGTTCGCCGTTTCATTTTTGCCATAACGGGCGTTCAGGCCCGCGTTTTCGCACAGCAGATTCACGGCTTCCGCCAGCCCGTACATACCGAACATCGGCGCAAAACGTTCGGGATCGATCAAACCTTCCTGTACAAGAAAGCTATTCTCAAAGAAATGTGACTTTTCATAGAGGAATTCACATCGTGAATTAATGATGGCGATCTGCTGTCGGCAGTAGTGCGGTAGCGTGCGTGAAAAGAAGTCATCGACAGACGTACTGCGTTCTGCCACGGCTTTCAGGTTGAGACGTACCAGCGTACTGCCGCCGCCGCCAAGCGGTAGCGAGTTATAACAACTGACGATGCCA [...]
+CAAATCGCCGCCGTATTCCCGACCGGGGTTTTTGCCTGATGACACAACGCGATCACTTTTTCATTGGTGTCGTCATCGTTCAGAGTGGTCAGATCCATCAGTTTGAGCGCACGCAGGCTGCTTGCTTTTAAATCAGTCATGACATTCTCCAACGGCATTGCCGTATAAAATTTCACCTTGCGAGTCTGTTAATATTCTAACATTCACTCGCGATTACACTTCGATATACATCACAGTTAATGAAAACTACGTACAAATTTGCATTACTGTAATGAGATCTGAATCAAATTATCCCGCCGTCACCGCCTGTTCTTCGAGCGATAAGCGCATCAGGATCAAAGTCGGTTTGCCGCCATTTTCTACAATAGCGCATCGTCCCGGCATAAAGAGGAAACGAAGATGCCTGCCTCATGCGAAACTGCGCTCCAGCAGCGTTGCCAGCAAATTGTGACCAGCCCGGTGCTCACGCCTGAACAAAAACGCCATTTTCTG [...]
+NODE	314	5753	278493	276386	0	0
+CTGGATGGCCTGGAAGCTAAACTGGCTGAAAAAGCCGCCGCTGCTGGCGCAAGCGCTTATAACATCACCTCCGCCGTAGGTAATGACAAAATGAGCGGCACTGCGGTGATTTATAAATAATTTACCTGCCCGCCAGATTTCAGGCTGTAACATCGCTGTTGTTTGAATTCTGACGGGTATTACCCTCGTCTGTTTGCCAACAGACCCACTGCTCCAACCCTCATTAACCCTGTTTGTTACCCTTATTTGCCCGTCCGTCACTGGACGGGCTTTTTTTATTCGCTAAAAGCCTGTTCGACGCGCGCAATCCCGTCTTCTAACGTCGCCGCCTCTCCCGTCGCAACCAGACAACAGGCCATTTGCGTTTTTAATGATTGCGGCACCGGCTCGCGGCCGGCAAGGCAGCGCTCAATCCAGCGCGCGGTGATTTCAGGATCTTTAGTCGCAGGCAGTGAAAGCGGCTCGTCGTGCGTGTCGCTCTGACGCTCATGC [...]
+TGGCGTCGCAGCCGGTATAAGCGGCAACCAATCTTGTCAGATGGGTGTGCAACGGATCGATAACCTGTTCATGAACCAATTGATAGGCCGACGTGGGAGAGAGCTGCTCGCGTGAAATAAATTTGCTCAGGTTAACGGTGTCTTCCTGCGTCAGCAGCATAATCATGTTCTTGCAGGCGAGCAGAATAAGCTCGCGTATGGCGTCCCGGTCAGGGACAGGCTGGCTAAACAGACGTTCCGCTTTTTCAGCATGGGGGCGAAATTTTTCGCCAAGAAAATCGGCAATCCACTGGGCGCAGGCGAGGTATAAATCCTCTTTTGAGCCGAAATAGTAAGTAATAGCGGCAATATTTTGCCCCGCCAGCGCGGCGATATCGCGCGTGGTGGCATGGAGGCCATACTCGCCAAACTGCGCCAGCGCGGCGGCAATGAGCTGACTTTTCGCCTGCTCGCCCTTGGTGGTCGTGGTGGGAATATTCATCACACGCCCTA [...]
+NODE	315	747	136620	135523	0	0
+AGTCTGCATAATACCAACTCGTTCTTCAACTGCAAGAACCGTATTTACTGGTATATAGTAATCCTCTTCCTGTCCAATCATTCGTCGTCCCTTCCATGTTTCCGCGCCATAACCGTCAGTTTCGACTTCTTCAAGTTTTGTCAGACTCTTCGCAGTTGTACCAGAATTTTTGGCAACCCATTCAGCCGTCTCGTCATTACAACGATAAACAAGTGTCAAATTGGTATTTGTTTCCGTCCCTTTTTTTATTGACTGAGCAATCTGCGGTTTTTCATCCGGTATATTTAAAAGGTCATCTCTCTCTTGATATGCAATAGACAAACTTGCATTTGATGATAATATAGTTGCCAGACTATCAGCAACCTCTGACGAGATAACAAAACGGGCCTCATCAATTATCCCCAGCACATGATTTTTTGGTTGTTCACGAATAACAGCCGCAGACCACTCACGCAACATTGATTTTAAGACAGCCCTGACAACCTTATCTTT [...]
+AAACGATTTACAAAAATTGTTGTCTGGTAGTGATGATAGAATACCGGAGGAAAAACAGGAATGGATAGCTAAAAATGGAGCTAATATTCGAACGCAGCTTAATAAATGGTTAGAGCTTCCTTGTCTATCTCCCGCTGATGGTCAGGGATTAAATGTAACTGAACTGGTTAAGTCAGGTGCGGTTATTTATGTAAAAGGTAGCACAAAAGATAAGGTTGTCAGGGCTGTCTTAAAATCAATGTTGCGTGAGTGGTCTGCGGCTGTTATTCGTGAACAACCAAAAAATCATGTGCTGGGGATAATTGATGAGGCCCGTTTTGTTATCTCGTCAGAGGTTGCTGATAGTCTGGCAACTATATTATCATCAAATGCAAGTTTGTCTATTGCATATCAAGAGAGAGATGACCTTTTAAATATACCGGATGAAAAACCGCAGATTGCTCAGTCAATAAAAAAAGGGACGGAAACAAATACCAATTTGACACTTGTTTA [...]
+NODE	316	4294	259673	257627	0	0
+GGAACCACCGGCTGTTGCCCAACCCAGCGCATTACCCTGACGATCGGTAATAGTCACGATGGTGTTGTTGAAAGAAGCATGGATATGAGCCACGCCGTCAGAGACTTGTTTTCTTACACGTTTACGTGCGCGAACTGGTGCCTTTGCCATTATTCAATCACCCCGATTATTTCTTGATCGGTTTGCGCGGACCCTTACGGGTACGAGCGTTGGTCTTGGTACGCTGACCGCGAACCGGGAGACCACGACGATGACGCAAACCGCGATAGCAACCAAGATCCATCAGGCGCTTGATGCTCATGCTGATTTCACGGCGCAGATCACCTTCAACGACAAATTTGGCAACTTCGTCACGCAGCGTGTCGATTTGTTCTTCAGACAGCTCACTGATCTTAACATTTTCAGCGATACCCGCTGCAGCCAGGATGGCTTTAGAACGGGTCTTGCCGACACCGTAGATCGAAGTTAACGCGATCACGGCGTGTTTCTGAT [...]
+GGCTGGTCTTGGTGGCGAAATTATCTGCTACGTAGCCTAATCGGAGGAAAAAATGTCTCGTGTTGCTAAAGCACCGGTCGTTGTTCCTGCCGGCGTTGATGTCAAAATCAACGGTCAGGTTATTACGATCAAAGGTAAAAACGGCGAGCTGACTCGTACTCTCAACGATGCTGTTGAAGTTAAACATGCAGATAATGCACTGACCTTCGGTCCGCGTGATGGTTACGCAGACGGTTGGGCACAGGCTGGTACCGCGCGTGCCCTGCTGAACTCAATGGTTATCGGTGTTACCGAAGGCTTCACTAAGAAGCTGCAGCTGGTTGGTGTAGGTTATCGTGCAGCGGTTAAAGGGAATGTAGTAAACCTGTCTTTAGGTTTCTCTCACCCGGTTGACCATCAGCTGCCGGCAGGTATTACTGCTGAATGTCCGACTCAAACTGAAATCGTGCTGAAAGGCGCTGATAAGCAGGTGATCGGTCAGGTTGCAGCAGA [...]
+NODE	317	5992	321537	315430	0	0
+TCTCCCCGCAGAACATGGCGGATGCGAAAGCGCAGAACATTCCGGTACTTTCCTACCTGGCCAACCATTTCGCCTCTTTGTCGGGGACAAAATCCACTTTTGCAACGGTGCTGGAGTATGGCGCGTCTATCATCGCGCTGGTTGCTATTTTCAAATCTTTCTTCGGCCACTACCTGGGGACGCTGGAAGGGCTGAACGGCCTGGTGCTGAAATTTGGTTATAAAGGCGATAAAACCAAAGTCTCTATGGGCAAGCTTAATACCATCAGCATGATCTTCATTATGGGGTCTACCTGGGTCGTAGCTTACGCAAACCCGAACATTCTGGACCTGATTGAAGCGATGGGCGCGCCGATTATCGCCTCGCTGTTATGCCTGCTGCCGATGTACGCCATTCGTAAAGCGCCGTCGCTGGCGAAGTACCGTGGTCGTCTGGATAACGTGTTCGTCACCCTGATTGGTCTGCTGACCATCCTGAATATTGTCTACAAAT [...]
+TGGCTTCACGCCATTCGCTTTCTGTCATCCCTGCCCGACGCGCCGGGGCTGATGCGTCGAGGATTACGCTGGTATTACTAGCCGATTCCATAGAATTCTCGCTCAATGTGTAGGTAGAGGTTTTTTTATTTTTCGTGCCGCAGCAAGGCGATATGCAGAACGTGAGGTGCAGGTACTTTCTTGTAATAAGAAAATCATACGCGCACGATAAGAGAAAAACTTACCAATAAAACGCCTGTATTTATTGTGGGTTAAGAATTATTTTCTATTTACTATTGGTTTAATATTGTTATTTTCTCTATTTGACGCGTATCACAACAAAAAAGGACGCACTTTGGTGCGCCCTTTTCTCAGCTTCTGTCTTCTGCGTTATCCCATAGCCTGCTCACTCTGCGCCTGTCGGGCCTATCCACAAACGACTTTAATCGCCAGACCGCCGCGCGACGTCTCGCGATATTTGTCGTTCATGTCTTTACCCGTTTCGTACATGGT [...]
+NODE	318	4715	235683	234487	0	0
+TGGCGAGGCCCATGGATGGGCCGAGTAATCCGTAGCCAACACATAAGCCACTTGAAATATGAAGGGGATATAAAAAAGGGCCGCTTACGCGGCCCGCTTGACTATAGTGGCGACAGGCAGGGGGTATTTCTTGCCTTCAACCCACTTGCCGTCGACGAAGAACGCTGACCATCCCGTCGCCTTCCCGTCTTTTTCCGCCGCAACGTACTGCTGTTTTGTTTTGCGGCTAAAGCGAACCACGGTTTTATTACCTTCCGGATCCTGCTGCGGCGCATCCGCCAGATACCGCAGTTTTTCCGGCAGGCGATCGCGGAACCGGTAAAGCTCCTCGACTAATGGCGCGCGCGTTTCGCGTGATTTCGGGAACGTATTGGCCGCCAGGAATATCCCTGCGGCGCCATCGCGCAGCACAAAGTACGCGTCCGATTTTTCACACGGCAGTTCCGGCAATGGAACAGGATCTTCCTTCGGCGGCGCAACTTCGCCGTTACG [...]
+AGGTTGTCTTATCTTCGCGTTAACTTTTCGGGTTTATGCCTGAAAGCGCCTTTTTTTTCAATCAGACAGGGGCGATAACGCCGTAAAATGAACGTCTTGTCATACTTTTTCTTCCTCAACAGGCATACGGATGAAGAGAGACTGACTTCGATGCCTGTTGTACACTGAGCGCAAGTCGCGTTATTTAATCAAGGTGGGAGTCGTGGAATTGTTGTCTGAATATGGCTTATTTTTGGCAAAAATCGTCACCGTTGTGGTGGCCATTGCCGTCATTGTGCTGCTGATCGTGAATGCTACGCAACGCAAACGTCAGCGCGGTGAGCTGCGCGTGACCAATTTGAGCGAGCAGTATCAGGAGATGAAGGATGACCTTGCTGCGGCGTTGATGGATGGCCATCAGCAAAAACTGTGGCATAAAGCGCAGAAAAAAAAGCATAAGCAGGAGGCGAAAGCCGCCAAAGCAAAAGCGAAGCTGGGGGACATTGCGACATC [...]
+NODE	319	5614	276155	272484	0	0
+ATCGCCAGTGAGATTTCTTCATTATCGAATTCTGAGCGCAACGTCACGCGAAACGGCGGATTTTCTCCGCTCAGCCACAGCGTAATGGTTAATTTATCGTTATGTTGCTTCACAAATGGGGCAACCGGTAAGTGCCAGGCATTCAACATCTCGTATCCCCTCTACTGAAAATGGGGCCACCTTGCCATAGAGATTTAAAGGATAACTCATCATCCAGGGGTTTATTAGGGGAGGAGACTCCAGGAGGAGAAGCGGCTCCGCTTATCCGGCCTACCGTTGCCTGCAGACCGGATAAGGCAGAGAAAAACGACTACGCCTGCGCCAATTGACGGTCGCGACGGCGTTTAAACATCCAGCCAATCAACAGCAGAACTATCCAGGCGAAGCCCACGTACAGTGAGATGCGGGTATCCGGATGGTAGCCGATAAGCGCAATAATGAAGACCAGGAAAATCAGGCCCGCTATCGTCGTTACGACACCGCCCGGCACCT [...]
+ATAACTAACGACTAACAGGGCAAATTATGGCGAGACGTATTCTGGTCGTAGAAGATGAGGCGCCGATCCGTGAAATGGTGTGCTTCGTGCTCGAACAAAATGGCTTTCAGCCCGTAGAAGCCGAAGATTATGACAGTGCGGTGAATAAACTTAATGAACCCTGGCCGGATCTCATCCTTCTTGACTGGATGTTGCCCGGCGGGTCAGGGTTACAGTTTATTAAACATCTCAAACGTGAGGCCATGACCCGGGATATTCCTGTGGTTATGCTGACCGCGAGAGGTGAGGAAGAAGATCGTGTGCGCGGGCTGGAAACCGGCGCTGACGATTACATTACCAAGCCGTTTTCCCCCAAGGAGTTGGTGGCGCGCATTAAAGCCGTTATGCGGCGTATCTCGCCGATGGCGGTCGAAGAGGTGATCGAGATGCAGGGATTGAGCCTTGATCCTGGCTCTCACCGCGTGATGACCGGCGACAGCCCGCTGGATATGG [...]
+NODE	320	164	9164	9065	0	0
+CCCACCACCAAAGCATTCTCTGGTGTTGAAGGCCCTGCAAAGCAGCATCGCGGTGGCGGAGCGTCGTTTGCGACGCCCAACACACAAAACAAGCGGTGAGTGCTTTGGGGTGGGGTGACTGCGTACCTTTTGTATAATGGGTCAGCGACTTATATTCTGTAGCA
+CCCACCCCAAAGCACTCACCGCTTGTTTTGTGTGTTGGGCGTCGCAAACGACGCTCCGCCACCGCGATGCTGCTTTGCAGGGCCTTCAACACCAGAGAATGCTTTGGTGGTGGGGCTCCCACTGCTTGTACGTACACGGTTTCAGGTTCTTTTTCACTCCCCTC
+NODE	321	51	19939	19193	0	0
+ACCTGCCCATGGCTAGATCACCGGGTTTCGGGTCTATACCCTGCAACTTAA
+TTGAAGGTTGGGTAACACTAACTGGAGGACCGAACCGACTAATGTTGAAAA
+NODE	322	13	4698	2514	0	0
+AATTAAGACTCGG
+GATCTAGCCATGG
+NODE	323	3	1103	604	0	0
+TTT
+GGT
+NODE	324	6528	314446	311273	0	0
+ATGTGATTGCGGAAGAGCTAGGTATTTCCCGCGTACAGTTCGATCAGTTTCTGCGCATGATGCAGGGCGGCGCGCAGTTTGGCGGCGGTTATCATCAACAGTCCGGCGGCGGCTGGCAGCAGGCGCAGCGCGGCCCGACGCTGGAAGATGCCTGTAATGTGCTGGGGGTTAAAACCACCGACGATGCAACCACCATTAAACGCGCTTATCGCAAACTGATGAGCGAGCATCATCCTGATAAGCTGGTGGCCAAAGGGTTGCCGCCGGAAATGATGGAGATGGCGAAGCAAAAAGCGCAGGAAATTCAGAAAGCGTATGAGCTAATCAAAGAACAGAAAGGCTTCAAGTGATTGAATTGCCGGATGCGGCTAGCGCCTTATCCGGCCTACGTTAATGAATGTAGGCCGGGCAAGCGAAGCGCTCCGGCATAAATTGGCTCAGAATTTAAAAATCTGCCGGGACTTTAAACGTCATGCTGTTACCGTAAGCGGG [...]
+TGGCTGGCGACAGACAACGGCCCTGTGCAGGCGACGCTGGCGCCGCAAGAGTCCGTGGCGTTTATTCCGACCAGCCAGACCTCCCGCGCCGCCTCGCTGCTACAGGCGGAAAAAAACTATCGCCTGACGCCGCTCCAGCTGCGAGACTTTCATCGTCAGCCGGTATCCGGTCTGTATTGCCGTACTCACCGCCAGCTTATGCGGATGGAGAAACTGCTGCGCGAAAACGGCGTCACCGTTTATGAAGCGGATGTACGCCCACCGGAACGTTACCTGATGGAACGTTTTATTACGTCGCCCGTTTGGGTAGACGGCGAGATGCGCAACGGCGTTATCCGCAATGCGCGTCTTAAACCCCACCCCGACTATCGACCGCCGCTAAAATGGGTCTCGCTGGATATCGAAACCACGCGACACGGCGAACTGTATTGCATTGGTCTGGAAGGCTGCGGCCAGCGTACCGTTTATATGCTGGGCCCGGCGAATGGCGAT [...]
+NODE	325	10504	575661	569537	0	0
+ATCGCTTTACGCGCGCCCTCGGCGTTACCGTCCAGAATGGCGTCCATCACTGCCTGGTGTTGTTCCGTCAGCTTTGAGAATACGGGCGGAACGAGATACATACGCTGGCGACTCTGTTTGACGGAGGATTGCAGGACGTCGAAGAAACCGCGCATGGTTTGCAACAGCACCACATTGTGCGAAGCTTCCGCGATCGCCAGATGAAAGCGCACGTCGGCCTGGGAGGCGAGATCCGGGTCTTCGCTGAGCGTCGCATCAAAGCAGAGTCTGATTTTCTCTTTGTCGGCAGCGGTGGCACGCATGGCGGCGTGCCAGGCCGTACTGGCTTCAATGGCGTGGCGGGCCTCCAGAATGTCGAAACTGTAGTCCGGATCGTTCGCCATCAGCATTTTCAGCGGTTGCACGATATTCTGTTCAGACCAGGTTTCGTGCTGCCAGCGGACAAATGTCCCGCCGCCGCGACGGCTCACCAGCACGCCTTCGCTGACCAGC [...]
+GTAAACGCACGGTCGATAGCCAGACGGAAGCGATGCTGCGCGGCGTGCGAACGTGCAGGAAGTTGCTGTAAATGAGCGCGAAGTTCTGCAATACCGCGTCCTTCATTGGCGGCGGTGACAAATAAAACGGTATCGGCGAAGCCATAGTTGTCGAGCGCCGCCAGTACCTCTTCACGTACTTCACCGATACGCGCCTCGTCCACGCGATCGGCTTTGGTCAGCGCGACGGTGAGCTGGAGATTGCCCGTCAGTTGCAGGATCTGTAAATGCTCGCGCGTTTGCGCCATAACGCCGTCATCACAGGCGACCACCAGCAAAGCGTGATCGATACCGCCTACGCCCGCCAGCATGTTAGAGAGGAATTTTTCATGCCCAGGCACATCGATAAAGCCCAGCACACGACCATCCGGCTGCGGCCAATAGGCGTAACCCAGATCGATAGTCATCCCGCGTTTTTTCTCTTCCGGCAGACGGTCGGCATTAATGCCGGTA [...]
+NODE	326	8777	444176	441746	0	0
+CTTTGCCAAACAGCAAACCGGCCACCTGACGATCGGCGAAGGCGCCGCGTAAACTATCAATAAGTTGCTGCTGCGCCTGCGACTCACCCTGCACCATCTCTCTGACCCGATCATACTCTTTCATTTGCAGCAGGCCGTTCAGAGTCGACATCCAGTTCAGGTGCTCATGGCGTAGCGTGCGCAGGCTCTCAACATACTGTTTAATCTGGGTTAGCTGCGCGTTCAACGTCGCGATTTCATCTTTGCTGCGAAAACTAATAATAGCGCCCAGCAGCTCCTCGCCGGAACGGATAGCCTCACGATTGGCGATGACGCTCAGGCCATTGAAGTTGGCCATCACGTCCTGGCGTCTTTCTGCGATCTGGCAGGTAAAAAAGTCTGCCGGATTGACGACTTCCGCTATCAGCTTGCCCAGCCACTGACGCCCCGGCGACGGCAGCCCCAACATTTTTCTCGCATTGCGGTTAATCGCAGTGATATGTCCCTCCGGAT [...]
+GTCGCTGGTCAACACCGCGTGCGGCGATAGATTTGGGTAATCCAGGCCACAGGCCGTGGACGGTCAGAAAGTCTGCTTTGTTGGCTGGCTCTTTTTGCAGACGGCACTCATCGGGTTCCCGATGGCGGCGTTCATGCTGGCTTTGACAAAAACCGGTTTGCCAGGAAAGCGCCAGCACATAGTCAGTGAAATCACCGTACTGTTGCGCCTGAAGTTCGTCGGCGTTGGCGGCAAAAATTGGAGTTAAGAGGGCAGCCAGCAGCGGACTGTAATGCCATATTGTGTTCATGATGAATTCGATAATTTATACACATTATGAATGTTACCCATTTAATCATAAAAAATGCCGCTCAGGTGAACCTGAACGGCATCATTTTTAACCTACGTTGGCGTAATGTTTAATTCCACATTGCCAGAATCGGCCAGCCCACCAGCAACAGCATCGCGATATAGATAACGCCAAAGATTGCGCCAAGCCGCCAGTAGTCTCTG [...]
+NODE	327	1137	59516	59373	0	0
+TGCTGGCGGTGAATATTCCAGGCCTCAAATCCGGCGAACTGGTGCTGGATGGTAAAACGCTGGGTGACATCTACCTCGGTAAAATCAAGAAGTGGGATGATGAAGCCATCACCAAACTGAACCCAGGCGTGAAGCTGCCTTCTCAGAACATCGCTGTGGTGCGTCGCGCTGACGGTTCCGGTACTTCCTTCGTGTTCACCAGTTACCTGGCGAAAGTCAACGACGAGTGGAAATCGAAAGTGGGCGCGGGTTCTACCGTGAACTGGCCAACCGGTCTGGGCGGTAAAGGTAACGACGGCATCGCGGCATTTGTACAGCGTTTGCCAGGCGCTATTGGCTACGTTGAATACGCTTATGCCAAGCAGAACAACCTGGCCTACACCAAACTGGTTTCTGCCGACGGCAAACCGGTAAGCCCGACGGAAGAGAGCTTCTCTAATGCGGCGAAAGGCGCAGACTGGAGCAAAACCTTCGCGCAGGATCTGACCAACC [...]
+ATGTGCACCAGCGCGCCGTAGATATCGTTTGGCGCGTCCCATTCCTTAGTCCAAAGAAATGAGAAACCAAATTTCTGAATACTTGGCCAGGAGGAGATGATCAATGAGACGATAATACCGCCCAACATCAATAGCACAATCAGCGCAGCCAGTTTTACCAGCGCGCTGAAAATCATGTCGCCTTTTTTACCCGGCGGGTTAAAAGCAGGCTTGGTTGCAGCCATAAATTACTCTTTCCATTAAACGCGTTTTACGACGTTGCCCCTGCCGGATGGCGCTACGCTTATCCGGCCTACAACGTGGGCCTGCGGTCGAAACCGTAGGGCGGATAAGCGTAGCGCCATCCGCCAATTCGTTAATTAATACAGCGCCTTACCGTTGCTGTCTTTTATACTGGTCTTCCAGGCGGTACGAACCTGCTCAACAACGTTATCCGGCAGGCTGGCGTAGTCCAGATCATTCGCCTGCTTAGCGCCATTTTTGTAGGCCCAG [...]
+NODE	328	341	15882	15488	0	0
+ACCACCCAGCATCTGCATCACGCCGCCGATCTGCGGAACGTTAATTTCAGTCGTATAGCGTTCCTGGCCACTCTGATCGGTCCACTTGCGGGTACGCAATTGACCTTCGATATACACCTGAGAACCTTTACGCAGATATTCGCCGGCCACTTCCGCCAGTTTGCCGAACATCACCACCCGGTGCCATTCAGTCTGCTCTTTCATTTCGCCGGTCTGCTTATCGCGCCAGGATTCAGAAGTAGCCAGCGTTAAGTTGGCGACAGCGCCGCCACTCGGCATATAGCGTACTTCCGGGTCCTGGCCCAGATTACCAACGAGAATCACCTTGTTTACGCCTCTGC
+GAAGTACGCTATATGCCGAGTGGCGGCGCTGTCGCCAACTTAACGCTGGCTACTTCTGAATCCTGGCGCGATAAGCAGACCGGCGAAATGAAAGAGCAGACTGAATGGCACCGGGTGGTGATGTTCGGCAAACTGGCGGAAGTGGCCGGCGAATATCTGCGTAAAGGTTCTCAGGTGTATATCGAAGGTCAATTGCGTACCCGCAAGTGGACCGATCAGAGTGGCCAGGAACGCTATACGACTGAAATTAACGTTCCGCAGATCGGCGGCGTGATGCAGATGCTGGGTGGTCGCCAGGGCGGCGGCGCACCGGCAGGCGGTCAGCAGCAGGGGGGTTGGGG
+NODE	329	2139	130291	129423	0	0
+ATAATCACCACGTTAATGCATTGTCAGTATTCTGACTGGTTTGGTCTGGTCGGACTGAGTGAACACATTGATGCCGAAGCCTGCTGGAGCCGGCTGTCGGATTACCCGGAACAGGCGCAGCCCTGTGACATGCTGATGGTCATACCCCCCCGTCTGGCCACAGAGCTGAACGGTTCAGGTGGACTGCTGCAGGGCATTTCCACCACGACCAGCCTTTACAGCCGGATATACGGTGTGGAGTGGCCATCAGGTCACAATGTCCGCTGGGTGCGTGATGAGATGAGCAGTCTGGTGCTGCTGACAGACACGCCCTGGTATCCGCCTTCAGGTGAGCTGGTTGGTGAAATCTCGAAGGTGTTCGACTGTGAGATACGGCACTGGTACAGCGAACCTGTCCGGGGCATACAGGGTTACAACTGTTATGACGGTGGTGAACATACGGACAGTGACCCGCAGGCCGAATGGCCGGGGAGGGAAAAACTTCCACAGCCC [...]
+CTTTTTTACATTTTCAGGACTAAGTCCTCCATTAATCCATTTTTCAAGATGATGTTTATGAATAACAAAGTCAAACTCAGGATATGCTCTCTCTAAATCCTCCAGTGAAGTTTTCTTCCACAGTGGATTCCTGTTTCCCTCAAAAGAGGCGATATGAAAGTGATCATTCAGAAACAATGATTCATTATGGTTATAGTATTCAAACCATATTGAATTAGCATTTATGTAATCCCATAATTGCGAATCAATTTCTTTATCTACTCGTTGTGATGTTTTTAATATATCCAGAAATTCTTTTTGCTGCGTGTATGACAATACCCCCTCCCTGAAGAGAGCATTAACCGCAGCCTCTCTGACCTGCTCAATTGCATTTGTTACTGACGTACGATAATAGTTCAATAATTGAGCGCATGAGAAAACAATAAATCCATGTTTAATCTGAACCCTTAAATAACAGTACCCATTCCGGCCATGAAAACCAGAAAACTCCAG [...]
+NODE	330	2364	113690	113106	0	0
+AGGCCGCTGAAGGAGATAAGCTGCCCCACCGCGATCTGAATGATGAATATAAGTAAAGCCGCAATTTTAAAATTTGCACATTTTTATGGCGACATAATGCCGCCATTTTTTCTTTACGCATCGTCCGCTAAACGTATCACGACTTTGCCAAAGTTCTTCCCCGCCAGCAGCCCCATAAACGCTTCTGGCGCATTTTCCAGCCCATCAGTAATCTGCTCCCGGTAATGTATTTTCCCTTCTTTGATCCAACGCCCCATTTCTTGCTGAAACTCATGTATCCGGTGACCATAGTCCTGGTTGATGATAAAACCTTGCAGGCGAATACGCTTTTTAAGTAATGTCGCCATCAGCAGCGGCAGTCTGTCTGGACCGTCCGGCAACGCTGTCGCATTGTAGCCGCTGACCAGACCGCAGAGCGGAATCCGCGCCGACGTATTCAGTAGCGGTAAGACGGCGTCAAAGACTTTACCACCGACATTCTCATAATAGATA [...]
+TTCGCAATCAGCCATGCGCCAATGACCAGCAACAGCGCGCCAAACGCCGGCCCGACCATTGCGCGTAACGTGACGCCGTGGCTACGCGCGATATCCAGCGCCAGTCCGCCGATTAACTGGCTGGCGACCAGTACCGCGATAGTCGTCGCGGCGCCAACGTTCTGATACCCGCTAATGCTGGCAAATACAAAAAATGACCCCAGCAGACCGGGGATCAATGTCCACCAGCGCACGCTGGCGACCAGCTCGCCGAAGCCCGTAGCGCCTTGCTTAAACCACAATATCGTCACAAATAAAACGATCCCTACCAGCGAGTTCAACAGCATAGCGATCAGAATCGTCGATGATGTCTGCGTAATACGCACCATAATACTGTTTTGTACCACCAGCCCGACGCCGGCGGCGATCAAAAAGATAAGCGTCAGCGACTGGTTCATCAGCAGGCGTCCGGCGCGGCGTGTTCATCAAGCTGGAGCTGCATAAACGTAAGAT [...]
+NODE	331	8613	468067	461075	0	0
+CGTCAGGATAGAGCGGCAGCATGGGCGCAACAATCGCCGTGGCGCCCATCATCGCCACCGTCGCAGAGCCGACCGCCGCGTGCAGAATCAGCGCTACCAGCCATGCCAGCAGAATCGGGTGCATATGCATATTTGAGAGGATCACCGCCAGCGTGTCCGCCAGCCCGCTACTTTTGAGAATGGCGTTGAACGCGCCGCCCGCGCCGATAATCAGCAGGATGTTCGCAATGGCGCCAAAGCCGTTTTCGGTGTGGGTAAGTAGCGCGCTCATACCCATATGCTGGCGCAGACCGAGTATGTAATACGCTACAAAGACAGCGATAAACATTGCGGTGATCGGATTACCGATAAACTCCAGCAGCGTATACAACGTGCCGTCTTTCGCCATATTCAGTTCAGCGACGGTTTTCACCAGCATCAGGCCAATCGGCAGCAGAACGGTAAACAGCGTTGCGCCCAGCGATGGCAGGGTGTTTTCGGCGCGCACTTCAA [...]
+GTACCACCTTCGCCACGTCTTCCAGTTTATCGATCTGGCTTATCATCTGTTCAAGCCGCTGATCGTCATTGACCAGAAGCCAGATGCGGCTCTGATCGCTACCCTGAATCGGTAAACAGAGAATACCCTCAACGTTGAAAGCGCGTCGGGCGAACAGCCCGCAGACGTGGGTCATCACGCCAGGATGGTTGCGAACGGTCAGCTCCAGAATAACGTTATCATGTGATTGTTTCTGCATGGCTTATTCCCCCACCATCTCTGTATTTGCCGCGCCCGGCGGCACCATCGGATACACTTTTTCTTCTGCATCAATGCGCACATGGATCAACGCCGGTCCAGGACGACGAATGATAGCCTGCAACGCCGCCTGCGGATCGGCTTCGTTATTCAAATCACAGGTGTCCAGACCAAACCCGGCGGCAATCTGCATAAAATTGATGCTTCCCGGATAGGTTGCCGCAAAAACGCCCTGTTTATAGAACAGACTCTGTT [...]
+NODE	332	8103	430887	421876	0	0
+GACAGCCTGCTCTTCCGGACGCCACTCTACGCCGCCTTCACCCAACATAATCAAAGGACCAAACACCGGATCGTGCTCGACCACCACTCGAAGCTCCTGCGCGCCGGCGCGGTTAGCCATGCTTTGTACCAGCAAACCGTGAATCCGCGCCTGCGGCCAGGCCATCTTTACACGATCGAAAATGGCGTTCGCGGCCTGTTGTACCTCGCTTGCGGTCCGCAGGTAAAGCATGACCCCCTGAACTTCAGATTTATGCGGAATGTCGGGCGAGCGCAGCTTGAGAGCTACCGGATAGCCTATCTGTTCGGCGATATGCACCGCTTCAGCGCTGTCGCTGGCAATCCAGGTTGGGAGCGTATGCAGCCCATAGGCGTGTAAAATCGGCTGTACTTCATGGGTATCCAGTGAGGTGGCGCCTTCCGCAATCGCCCGCTGTAACAGATTATGCGCCTCAGCGGTATTGGACGTCAGGTTACTCGGCAGCGCTGGCGT [...]
+AACGTGAACGCGTCCATGAATTGGCTGAAACGCTGCGTCTGGCAGGGATCAACAATTGCTATCTTGAAGGTGAGATGGCGCAGATCAAACGTAACGAAGGTATTAAGCGTCTCACCGACGGTCGCGTTAACGTGCTGGTCGCGACCGACGTCGCGGCACGCGGGATTGATATTCCTGACGTCAGCCACGTCATTAACTTCGACATGCCGCGCAGTGGCGATACCTATCTGCATCGCATTGGTCGTACAGGCCGTGCGGGTCGCAAAGGCACTGCAATCTCGCTGGTAGAAGCCCACGACCATCTGTTGCTGCTGAAAATCGGTCGCTACATCGAAGAGCCGCTAAAAGCGCGCGTCATTGATGAGCTTCGCCCGACCACGCGTGCGCCAAGCGAAAAGCTGACCGGCAAACCGTCGAAAAAAGTGCTGGCGAAACGCGCCGAGAAGAAAAAAGAGAAAGAAAAAGAGAAGCCGCGCGTGAAGAAACGTCACC [...]
+NODE	333	367	19570	19570	0	0
+GTTGGATATGGAGGTAAGCGTTGATCGGGGCAGCGTATTTAATCTGTTTATTAAAAAGTTTAGCTCGCCCTCGCTGCTGGAAGAATATCTTCGTTCTTCTCCGTATGTCATGGATCAATTAAAAGGCGCGCAAATAGACGAGCAGGATCTTCACCGGGCGATTGTCCTGCTGAGCGAAAAAATGAAAGCGGTGGACAGCAATGCCGGCAAGAAAAATGAAACGTCGTTATTCACGTCGTGGACATTGAGTTTTACCGCGCCGACGCGGGAAGAAGCGCAAAAAGTGTTAGCTGGCTATATTCAGTACATCTCTGATATCGTCGTGAAAGAGACGCTGGAAAATATTCGTAACCAGCTGGAAATCAAA
+TATCAGAGATGTACTGAATATAGCCAGCTAACACTTTTTGCGCTTCTTCCCGCGTCGGCGCGGTAAAACTCAATGTCCACGACGTGAATAACGACGTTTCATTTTTCTTGCCGGCATTGCTGTCCACCGCTTTCATTTTTTCGCTCAGCAGGACAATCGCCCGGTGAAGATCCTGCTCGTCTATTTGCGCGCCTTTTAATTGATCCATGACATACGGAGAAGAACGAAGATATTCTTCCAGCAGCGAGGGCGAGCTAAACTTTTTAATAAACAGATTAAATACGCTGCCCCGATCAACGCTTACCTCCATATCCAACACGCGCAGCGCGGTCAACGTTCTCTCCAGCCCCTGCCACTGTACCGACTC
+NODE	334	51	3198	3198	0	0
+TTTTGATTTCCAGCTGGTTACGAATATTTTCCAGCGTCTCTTTCACGACGA
+ACCCGCTACGAGCAGGAAAAGCTGGCGATGGATCGGGTGCGTCTCAAAAAC
+NODE	335	3932	237531	234539	0	0
+GCATGAGTCCGTTTGAACGCATTCCGGCTTATTCGGTTTACCTCCCCCATCATACGGAGGCGAAAGTGACAGCCGAAACCGACCTTGAGCTGGCCGTATGCAGCGCGCCGGGATTCGGAGAGCTTCCGGTACGTCTGATCTCGCCACAAGAGGTCGGGGTAGAGCATCGGGGAAAAGGGCGCAATCAGCGCCTGGTGCATAACATCCTTCCTGATAGCCAGCTCGCCGACAGCCTGCTAGTCGTTGAAGTGTACACTAATGAAGGCGATACCAGCTCCTGGCCCGCGCACAAGCACGATACGGCAGTTGAAGGTCAGGAGACCTATCTGGAAGAGACGTACTATCACCGTTTCAATCCACCTCAGGGATTCTGCTTACAGCGCGTCTACACCGACGATCGCAGCCTGGATGAATGTATGGCGGTCTATAACCGGGATGTAGTGAAAGTACCTAAGGGCTACCACCCGGTTGCCACCATCGCGGGTTACGATA [...]
+TTGCCTGGCTGTACAGCGCCCATGAAGTGAGCAACAAGCCGATGATGCTGCCGATAGTGCCTTTACGCATCAGCGACAAACGCCCCATCTTATCCATGATCATTGCGCCAATAATGGAACCGATAAGCTGAATCACGCCGATCCAGATTGTCTGGAACAGGGCCTCCTGGGCGCTACCGGTCACATCCTTAAGGACGATTGGCGCGTAATACATCATGACGTTAACCCCTGTTACCTGTTGCAGCATAGCGATCATGCAGCCCAGGATCAGGATGAAACGCACGTTCCCGTCGCGGTAATTGAGTTTTTGATGGGCGTTTAGTTGGTCATTTTGCAGTGAGGTTTTTATATCGGCAAGAAGATGTCTGGCATGTTCTTCGTTGGATATTTTGGTCAGTATTTTTAGCGTCTCCTCCTCGCGACCAATCATCATCATCCAGCGGGGAGATTCCGGGATTAAAAAGACTAAAATACAGAACAAAATGCAGGGAA [...]
+NODE	336	3779	245259	244008	0	0
+AAACTCATCCAATGCTAATAAGGTTGCAGCTTATGCAATATCGGCATCACCTCGAACTAACATGGCTCGAAGACTGTCTGGCTCTAAAAGAAACGTTGAATTTCTCAAAAGCGTCTGCCTCAAGATATGTGACTCAACCCGCATTTAGTCGTCGGATACAATCTCTCGAAGAATGGGTGGGTACGCCCCTTTTTGAAAGAAGTAAACGGGGAGTCACCCTTACCAAGGCCGGAGAAGTATTTACAGACCAGCTTCCCGAACTGATCCACTCCTTGTACACATTGAAAAGTGATACCCTTGAGGCCGCAGGTAATAAACAACCCAGTCTTGTTTTTTCAGCAACGCATGCTTTGTCTTTCTCTTTTGTACCGCATTTGTTAAAACAGAGTGATAAAATTGCAAAATTTGGTTCATTTCGTCTTTTATCTGACTCATTGAATGCGTGCGAAAAAATGATGCGGCAGGGAGATTCACAATTTTTGCTGTGTCACC [...]
+ATGCCAACTCCTGTAAGCAATTTCAAAAGCAGATGGAGGTTTGCGCCGATGTCTGCCAGCAGATAGCGGGCGGTGAAAAAGCGATTATTGGCGTGATGGTAGAGAGTCATCTGGTAGAAGGAAACCAGAGTCTGGAAAGCGGTCAGCCGCTGACCTACGGTAAAAGCATTACTGACGCCTGTATTGGCTGGGAAGATACCGATGCGCTGCTTCGTCAGTTGTCGGCAGCGGTAAAAGCCCGTCGCGGCTAAGTTTAGTTTCTATCCTGTGGTGAAGTGCAGGATAGAAAACATATCGGTCCGGTAACAGCCTACCGGACCGATATTGCCAATATTAATGTATTATTATTTGGCGTACTTAGGTACTTCCTGCTTCTGGAGGGTATTTCCTTCCGAATCAATTCCTACAATGACTCTATAGCGGTCAAAATATAACTTCTTAATGGATTCTGTTCCTAATTCTTCGTAGGCAACAATTTCTACTGATTTAACA [...]
+NODE	337	2680	136402	134944	0	0
+GTCGACGTCCACTGGTTATCAATGGCGATGACCGTTTCCAGCTTGCGCCAGCCTTCAATTATGCGGTTAATTTGTTGGTGTCGGTGGAACGGGTTGGTCCCGGCGAACACGCACATCTTCAGCGGCGGTAATTTAACCGATTTGCCGTTCCAGTTAATGACCTTGCCCGGTTCAAGAATGGCATCCATAAAACGCGCAATAGGAATGGTGCTGCTGTAGCCTTTGTAATCCGTGCTGTCGTGTACTGGCGGAACGGTCGTCGAACCGGAAAAGCCGCTTAAAATGATCCCTTTACGGCCAGGCGTCCCGGCGCCGTTGTAGTGCCAGCCAAAACCAAAGCCGCCGCCCGGTAAACCAATCTGTCCCAGCATTGCCGCCAGCACGACGACCATCCATGACCACTGTTCGCCATGCTGCATACGTTGTACGCACCAGCCAGCGATGATTTGCGTTCTGTCGCCCGCCATCTGCCGCGCCAACGCGCGGATGGTG [...]
+TCGTGTTACCTCACGTCGGTATCAAACTGACCAGTACGACAGAGTTTTGCGTCAGCTGCCATAGTATGCAGCCGGTGTATCAGGAATATAAACAGTCCGTACATTTCCAGAACGCTTCCGGCGTACGCGCGGAATGCCACGATTGCCATATCCCCCCTGATATTCCAGGCATGGTGAAACGTAAGCTGGAAGCCAGCAACGATCTTTACCAGACATTTATCGCCCACTCGATTGATACCCCAGAAAAATTTGAAGCCAAACGCGCCGAGCTTGCCGAGCGTGAATGGGCGCGCATGAAAGAGAATAACTCCGCGACCTGTCGTTCCTGCCATAACTACGATGCGATGGATCACGCGAAACAGAACCCGGAAGCGGCGCGGCAAATGAAAATCGCCGCGAAAGAAAATCAGTCCTGCATCGACTGCCATAAAGGGATTGCCCACCAGCTACCGGATATGAGCAGCGGTTTCCGCAAACAGTTTGATGAACTGC [...]
+NODE	338	6159	302234	295646	0	0
+TGGAAGCCCGTGGTCTCAACGTGACCATCATGAAACTGGATCCGTACATCAACGTCGATCCGGGTACTATGAGCCCAATCCAACACGGGGAAGTGTTCGTTACTGAAGACGGCGCTGAAACCGACCTGGACCTGGGGCACTACGAGCGTTTCATCCGCACCAAGATGTCTCGCCGCAACAACTTCACGACTGGCCGTATCTACTCCGACGTTCTGCGTAAAGAACGCCGTGGCGACTATCTGGGCGCAACCGTACAGGTAATCCCTCACATCACTAACGCGATTAAAGAGCGCGTGCTGGAAGGTGGCGAAGGCCACGATGTGGTACTGGTGGAAATCGGCGGTACCGTCGGTGATATCGAATCGCTGCCGTTTCTTGAGGCGATTCGTCAATTGGCGGTAGATATCGGTCGTGAACACGCGCTGTTTATGCACCTGACGCTGGTACCTTACCTGGCGGCTGCGGGCGAAGTGAAAACTAAACCGACTCAGC [...]
+TACACGCAAAAATTCCAGTCGTTGGCGCACGGTTTATCCCCGCTGGCGCGGGGAACACCCAGCCTCCCGTTACGCATATTTGAGGGTTTTCGGTTTATCCCCGCTGGCGCGGGGAACACGCGGCGCTGATTATGATTTCCCGATAATTTATCGGTTTATCCCCGCTGGCGCGGGGAACACCTTTCGGGTTGAAAGCAGTAGCACTCATGCCCCGGTTTATCCCCGCTGGCGCGGGGAACACCATTCCGGCGAGACTGAGCAGCGGGCGAACCGCGGTTTATCCCCGCTGGTGCGGGGAACACGGCCGTCTGCATTGAGCGCAGTTTTAACGCGTCGGTTTATCCCCGCTGGCGCGGGGAACACTACGGATGTGTGACGGAGTCGCGTTTATGGCGCGGTTTATCCCCGCTGGCGCGGGGAACACACCGTTTCACGGATGAGAGTTGGCGGAAGCGCCGGTTTATCCCCGCTGGCGCGGGGAACACCAGGAAT [...]
+NODE	339	2545	141787	139268	0	0
+TAATAAACTGGCGTTTGACGGCAGCGGCTACCTGGCCTGGGAAGGGCTGATTTGTATGCAGGAAATCGGTAAATGTACCGAAGAACATCAGGCGATTGTGCGTAAGTGGCTGGAAGCGCGCAACCTTGAAGAAGTCCGAACCAGCGAACTTTTCGACGTTTGGTGGGACTAATGAGTACAGGGTCGGCAAATGCCGGCCCGCTTTGTCTTGAGGGAAAGTTATGATGCGCAAAACGCTGCTGGCGGCAGTGCTAACGTTTACGGCGATGGCCGCTCATGCAGATTACAAATGCAGCGTCACGCCGCGTGACGATGTGATCCTGAGTCCACAAACGGTGCAGGTGAAAGGTGAAAACGGCAACCTGGTGATCACGCCGGACGGCAATGTGATGTACAACGGCAAGCAGTACACCCTTAGCGCCGCGCAGCGCGAGCAGGCGAAAGATTACCAGGCGGAACTGCGAAGCGCGCTGCCGTGGATTGATGAGGGAG [...]
+ACCAGGTGGCCTGATTGCCCCTCGAATCAAGATTTTTTAAGGTAATGGAATCCAGTTTAAGTATGCCGTGGTACTGCTTACTAAACTGTTCTTTTAAGATGTTATTGGAGGGTTGAGCAACCTCTGCCCAACTATAGCCTGAAATCAGGGCAAACAGCGCTGCGCCAGCAATCCATTGTCGAACCACTTGTGGACCTCCCGTCCAGAGACATGACGCCCACGATTATCATAACCATGATGATAATTAGCAAGATAATAGTGTTGATTGTGCGAGAGGTCTTCCAAAGATAGCCCCGGCCTTCCGACCGGGGCATTATCTTTAATACTGATTGAACATCGTCTGGATCTGTTTTGGATCTTTAGTCTGGGTTAACGCCAGTTGCAGTAAGACACGCGCTTTTTGCGGGTTCAGCGTGCCAGAGGCGACAAAGCCGTATTTTGCATCGTCCACTTCCGCATCCTGCGTGGTTGCGCCAGTCGGCACACGTGAAG [...]
+NODE	340	3533	202183	201141	0	0
+TTTAGTGTTATTTCTATGGGTACTTAAAACGCATATTAAAAGGAATCAATATGAATAAAATGACATTCGCCGCCGCGGTCGTCTGTTTCTCATTTTCCCACGCCAGCTATAGCGAAGAAATGTCTGCCACTGGATGGTATGCGGCATCGTCTGCGGTTGTCAGCGTGGGCAGTTCCGCACTGGTTAGCGGAATTATACTCTCCCCCGTACTGCTGCCGCTCAACCTGAGCATTGGATCTGTTGTCGAAAATAAAAAGCAAAAAACCGCGCTGTTAACCACTAAGTCCCCCGATAACAAAGACATTAAAATGCAAGTTCCGCTAAATGTCGTCAAAGAAGGCAACCTCAAAGCAGGTGATAAAGTCACTCTGGAAAAAACGCAGGAAGGCACCGGCGCTTATTTGAAAAAAGAGGGCAAAGTCCTTGCCCATATGGTAAATCAGGACGACGCAGGACTTTCCAGCAACCAGACGGTACCGGCCAAATGAAGCG [...]
+AAAAACGCAGAAAACCGGCGACGATCGCCGGTTCTTCCGTTTGCAGATGCAAGTCTGCAATAAACAGTGTCGCCACGATTACTCGCTGACGGTCACGTTTTCAATGATGACGTCTTCTTTTGGTACGTCCTGGTGCATACCGCTACGGCCAGTGGCGACGCCTTTGATTTTATCTACCACGTCCATACCTTCTACGACTTCCGCAAAGACGCAGTAGCCCCAGCCCTGCAGACTTTCGCCGGAGAAGTTCAGGAAGTCGTTGTCTGCCACGTTGATGAAGAATTGCGCGGTAGCCGAGTGTGGCGCCTGAGTACGCGCCATTGCCAGCGTACCACGGGTATTTTTCAGACCATTGTTGGCTTCGTTTTTGATCGCCTCTTTGGTGGCTTTCTGTTTCATGCCCGGCTCAAAGCCGCCGCCCTGAATCATAAAACCGTTAATCACACGGTGGAAAATGGTGTTGTTGTAAAAACCTTCGCGGCAGTAGTCCAG [...]
+NODE	341	2372	113559	112432	0	0
+CGGCTAACAAAAGATTGCAGCTCGGCAATTTGCGCTTTTTTCTTCGCATTATCGGCCAACAGACGTTCACGCGCCTGGGTCGCCGCCGTCATATACTCATCATAGTTACCCGGATAGACGCGCAAGTCGCCGTAATCCAGATCCGCCATATGCGTACAAACCATGTTCAGGAAGTGACGGTCGTGCGAAATGATGATCATCGTGCTATCGCGCTCGTTCAGCACCTGCTCCAGCCAACGGATAGTATCAATATCCAGGTTGTTGGTCGGTTCGTCGAGCAACAGGATGTCCGGATTAGAGAATAACGCCTGCGCCAGCAGCACACGCAATTTCCAGCCTGGCGCGACTTCACTCATCAGACCGTAATGCTGCTCCAGCGGGATGCCCACCCCCAACAGCAGTTCGCCCGCGCGCGCCTCAGCGGAATAACCGTCCATCTCGCCGTATTTTACTTCCAGATCGGCGACTTTATAGCCGTCTTCTTCGCTCATT [...]
+AACGCAATTGCCGGCGTTGCAGGGCGTTTTCAACCAGGTTGGCGCACTGTCTCACCTGGGACTTTGGCTAACCGCTATCGGCCTGTCGCAGGTTATCAGTAATGTGCCCAGTACCATTCTCCTGCTGAACTATGTACCGGCCTCGACGCTGCTGGCGTGGGCGGTGAATATCGGCGGGTTTGGTCTGCTGCCGGGGTCGCTGGCAAATCTTATTGCTTTACGGATGGCGAACGATCGCCGAATCTGGTGGCGATTTCATTTCTATTCGCTGCCGATGCTGGCATGGGCGGCGCTGGTGGGATATGGATTATTGCAACTGATGCCGTAAGAGAAGCCCGATAGTATCTATCGGGCTTCGCAGGCAGAGTCTGTCAGTTCAGACGAACCGGCATCCCGGAACGATCCTGAACTGCCTGTTGTACGACGGTCTGATCAACGTCAGGCTCGTTGGTGACGGCCAGGATACTCTTATTAAGCGTGATCGGCACCGCT [...]
+NODE	342	948	49221	47677	0	0
+AGGAAAGCCGCGAGCGGCATCAAATTGTCGAAAATTTTTTACTGGTATTAGGCGTAAGTCCGGAAATCGCGCGTCGTGATGCGGAAGGGATGGAACACCATGTCAGCCAGGAGACATTGGATGCCTTTTTGGCCTTCACGCAGCAGCATGGAACATCTGTAGAATGAATCTGGCCTTTTTACGGGCGCTGCGGCGTGACCGTTTTTTTCAGTTGTTGATCATTGTGGGGATGGCGTTAAGCCTGTTTGTTCCTTTTGCGCCTCGCGCCTGGCCTGGCGCGATTGACTGGCACACCATTATTACCCTCAGTGGGTTAATGTTGCTCACTAAAGGCGTTGAGCTGAGCGGCTATTTTGATGTGCTGGGACGCAAGATGACGCGCCGATTTCATACCGAGCGGCAACTGGCGATGTTCCTGGTGCTGGCTGCGGCGGCGCTGTCGACCTTTCTGACAAACGATGTCGCGCTGTTTATCGTTGTGCCGCTGACGAT [...]
+GTCCACGCTGACTATCACCCTGCGCGCCAGCACAATAAACCCAGCCGCCACCAACACCAGTCCCCATAACTCTTGCCTGAGCTCCAGCGCGGTAAGAAAAACGACATATAATGCCAGGCAACTCCACACCAGACGGGGCTGCCACTGCGGCGAACGCGTACCGGTATGATACTGTAACGCCCTACCCGGAAAACAAAACCAGCACAGGAGCAGTAACGTCAGCATCATCATGACGGCAAGCGGCGCCATTTGCCCGCTAAATTCAGCAAAGGTTAAGCCGGAGCGTCCCCACAACAGAATATTTTGCGGATTACCGACAGGCGTCAGCAGCGAACCGGCGTTCACCGCCAACGCTTCAAAAATAATCAATCGGTTGACCGGAATCGCGCACAGTTTTTTTAACGTTATCGTCAGCGGCACAACGATAAACAGCGCGACATCGTTTGTCAGAAAGGTCGACAGCGCCGCCGCAGCCAGCACCAGGAACATCGC [...]
+NODE	343	771	44177	43920	0	0
+TACGGGATCAGCTCCGCCGCTGCTTCTTTCTGCTGAATATCCCCTTCAACAGCCAGACGATACAACCCATCCAGGAACGCTTTCAGCGCCGCTTCATCTTCATGTGAAACCTGAATCAGCGATCCCAACGTTTTTGCGCTGGTAAACAATGCCAGCGTTCGCATCAGCAGCTTATATTCCGCGCTGTCGGTATTGGTCAGTGCCGCCCCTTCTGCAAACATATCTCCCATGCTGCCACGCTGCACCTGCTGGTGGAAGTTCAGCTTGGTCCACAGTTCTGCAATATCCAGTTTACTTTCCTGCAGGGAAACGATATTCAGGCGAACGCCACGGCCCAGAATACGACGATCGTCCTGACGTGCCAACATCAGCATCGCAAAACCGGAGAGCTGTGCGGCACGGTCGTCGATGTCCAGGCCGAAAATATTGTTTTCCAGAATCAGCTGCGGAATGTCACGGGTACGGTAACCGCGCTCTTCGTAAATGGCCTTC [...]
+TTGTGCAGTATCTGGTGCAGAACTCGGTGGGTCGCCAGTGGCTGCAAACCTACCCTGATTCCAGCTTGAAAGGCAAAATGCCGTACTACATCGAGCCAGCGGAGCAAACGCCAGAGGTGCAGGCACAGCTGGCTGAGATCACTCCATCCAGCATTGAGCCTGAAAGCATTAAGGTACTGGACCCAGCCTGCGGTTCCGGGCATATCCTGACAGAAGCCTATAACGTGCTGAAGGCCATTTACGAAGAGCGCGGTTACCGTACCCGTGACATTCCGCAGCTGATTCTGGAAAACAATATTTTCGGCCTGGACATCGACGACCGTGCCGCACAGCTCTCCGGTTTTGCGATGCTGATGTTGGCACGTCAGGACGATCGTCGTATTCTGGGCCGTGGCGTTCGCCTGAATATCGTTTCCCTGCAGGAAAGTAAACTGGATATTGCAGAACTGTGGACCAAGCTGAACTTCCACCAGCAGGTGCAGCGTGGCAGCA [...]
+NODE	344	1327	92981	92131	0	0
+AGCCGAAAGACGTCCCGAAACGCAGTAGCCGCCTTTCGGCGGCTACTTAAAAAGGGATAGTGATCCGTGCCGCCTTCAGGAAGGCAGCCACCAGCGGAGATGACGTTGCGTAGCGTTGGATCGTTTCGTGTTCATGTGATCTAACGTATCACGACTAAACGTAAGGGTAAAGCGGCTGGCGTGTCGTCCGGGCATAAAGTCATATCGCCTGAACAGAGAACATGTTACTGACTTTGAAACGCGATTTTATAATTTGCTGCCCAAAAATACGTGGCGCTGAAAGGCGCATTTTTGATGCAAATCATTTATTACTGTGATAACACTGCGCGCGATAAAAACATTAAATATATTCACATAGTAAATATGTTCTATTGGAATGGTTGTTTTCGATATGACAAAAGTCTAAAAAACCCATTGATGTGAAAAGGAATAAGAATTGTCTATATTCCGATTCGGTGGAATTAAGTAATTTCTCGGATAAAAATAAGAAAT [...]
+ATGCCATTTCGCTATACAGCATCGCCCACTGCGAGTCCGCAAGCTTGTTTTGTTCTCATCGCCACAGCGCCTGTCGGTGAAGGGGCCGCCGTGTTTTGCTTTTCGACGCTAATGCGGGAATATCCCAGCGAATATGGCTATAAACCAAATCCACGGTCTCCGTGGCGCTGCCTTCGGCGTCGCCATGATTGCTCATGCGTGAAATTCGCACATTAGTGAGCGTATAAATAATAAATGGCAGCATTGCGCCCTTATCACGACGGCATAATGTCAGCACGCCTTCTTTCACCGTTTTCCCGTTACAATAGTGCTCATAGAGGCCAGGCGTAGCAAGATCGACTGGCTTTGTCAGCGTCAACCCTCCAATATATGTCCCTCTCGCTTCGCCGGACTCCCGTTTCGTCGGGTTGTGGTTGTAAGCAATAAGTTTTATTTGGTTTTCAAAACCTTTGATCTGGCTTTCGCCTTCAATACCGTCCAGTTTTAAATAGA [...]
+NODE	345	1735	84176	83778	0	0
+CATCATCGCCGCGCTCGCGCAGCGGCGGCACAAAGAGCGGGAAAACGCTCAGGCGATGGAACAGATCGGCGCGAAAACGCCCTGCCAGCACCTCTTCACGCAGGTCACGGTTGGTTGCCGCCAACACCCGCACATCCACGCGCAGGCTACGATCGTCGCCGACGCGCTGAATATCGCCATACTGCAACACGCGAAGTAGCTTGGCCTGTAGCGCCAGCGACAGTTCGCCAATCTCATCCAGAAACAGCGTACCGTTATCCGCCATTTCGAACTTACCGCTACGATTACTGATAGCCCCGGTAAAAGCCCCTTTTACATGACCAAACAACTCGCTCTCCGCCACGCTTTCCGGCAGCGCGGCGCAGTTGAGATAGACCAGCGGATTGACCGCTCTGGGGGAGCCCTGGTGAATAGCTTTCGCCACCAGCTCTTTACCGGTCCCCGTTTCACCGCCGATCAGCACGTTAAGATCGGAGCCCGCCACAATCTCGA [...]
+TTGCCGTTGCCGATATCCAGCGTATCGCCGGTTTTCACCACCTTAAAATTCCATTCCGGGTGATGGTGATGGCCGTTGATAGAGTCAATGGCGTTGGCGGTACAGTAGATAGGCGTGTCCGGGATCTGCGCCATCAGTTCGGTCAGCGCGCCTGCATGGTCTTCTTCGGCATGGTTAATGATGATGTAGTCGATGTCCGCGAGGTCGATTTCACTGCGCAGATTTTGCACAAACTCACGGCTAAACTTATGATCGACGGTATCGATCAGCACATTCTTTTCTTCACGAATGAGATAGCTGTTATAGCTGCTGCCACGCAGCGTTTTGTATTCAGTGCCGTGAAAATCACGTACTTCCCAGTCGCGTTGGCCAACCCAATGAATATTATTTTTAACCAGAATAGACATAACCACCTCAATTCATTCAACGTTTGCAAAAAGTTGTTTTGCTTATTGCAGGTAGTGTGCCAACTTTACATCTTATTGATTTATA [...]
+NODE	346	3198	165986	164206	0	0
+TAAAGTGTGGGTTGGTCATGCCGATTTCTTCGCCCTGATAGATATAAGGCGTCCCTTGCATACCGTGCAGCGCCATCGCCAGCATTTTCGCGGCTGGAACCCGGTATTCCCCCTCGTCGCCAAAGCGGGAAACGATGCGCGGCTGATCGTGATTACACCAGAATAACGCGTTCCAGGCGACGTTATGCATCCCCTGTTGCCAGTGGCGGAACAACGCTTTCAGCGCCACATAATCAGGTTTTGCCAGCGTCCACTTTTCGCCATTGGGGTAATCCACCTTCAGATGATGAAAATTGAAGGTCATCGAGAGTTCGTCGCCGCTAAGCGCGGCATATTGCTGGCAGTTTTCCAGCGTGGTAGAGGACATTTCGCCTACCGTCATCAGATTACGCGGCGTAAAAACGTCACGGTTCATTTCGCGTAAAAACGTATGCGCGCGCGGTCCGTCGGTATAAAAGCGGCGTCCGTCGCCCGTCGGATCGTCAGGAAAAT [...]
+CACCGCAACATTAGCTTTCTGGGCGTTCCCCATAGCGATATTACCACCGGCAAACGTCGGCATGACGCATACCTGGCGTTTTGCAAAAAACATAAACTTCATCCCGTCGCCGCCCTGCCCGGTCTTGCCATGAAGCAGGGCTATGAGCATACGGCAAGCGTCATCATGCCGGATACCACCGCGTTAGTCTGCGCCACCGATACGCTGGCGTTGGGCGCCAGTAAGTATTTACAGGAGCAACGTATTGAGACGCTGCAACTGGCAAGCGTCGGGAACACGCCGCTGATAAAATTCCTGCACCCGGAGATCGTCACTGTCGATCCTGGCTATGCTGAAGCCGGACGACAGGCGGCTTCGCAGCTGATCGAACAGATCAATGGCCGCTGCGATCCGCGCCGGATCGTCATTCCTTCTACCCTCGCCTGAGTGACTAATTAAACGGAATACCACGAGTAATTTGTGATCGTCGCTGCGTTTCGGGAACGTTCCCAT [...]
+NODE	347	24	2764	2459	0	0
+TATCGGTTCGGCGGGGGTGTCGGC
+CAGGTTCATCAGCTTCGCCATCAG
+NODE	348	603	31477	31382	0	0
+TATCGCCGCCCTCCATATATTTGCCGATCTCATCCGGGTTGACGTGATACAGTCGCTGACCTTTTTCGTTGCCAACGGTAATGTAAGTCGCATCCGAAAACGAGCGCATTGGGTCAATCAGCGCTTTGATGCGTGACAAATCATGCGCCTCTACGGCTTCAACTAATTCTGGCATAGCGGATATTTGCATTGCCTGAATAAGCGCACGTTGGCCCACCTGATAATGCAGGCGCTCTTTCGTGATATCGGTCAGATACCAGGTGATTGCCAGCATCACGATGGTGGATGTAAACAGGATCAGTAGAAATATCCGGTTTTGAAACGAGCGTCTGGCAAACCAGTGTGTAATTTCCCGTATAAACATATTGGTAGTTAGATATTTAATTACGGTATTTTCTTGCATTCGGCATCACCGGAACCTGAACCAGTTCATACTTACTTTTCTTTCAGAAAAAATTTGGATGAAAATGGGATACGACATGCGTATCCCAT [...]
+TATCGGTTCGGCCATTGCGGCGGGCGTGATGCTGAAGTACGTGCTGGCGATGTAATAGTGGATGGGATACGCATGTCGTATCCCATTTTCATCCAAATTTTTTCTGAAAGAAAAGTAAGTATGAACTGGTTCAGGTTCCGGTGATGCCGAATGCAAGAAAATACCGTAATTAAATATCTAACTACCAATATGTTTATACGGGAAATTACACACTGGTTTGCCAGACGCTCGTTTCAAAACCGGATATTTCTACTGATCCTGTTTACATCCACCATCGTGATGCTGGCAATCACCTGGTATCTGACCGATATCACGAAAGAGCGCCTGCATTATCAGGTGGGCCAACGTGCGCTTATTCAGGCAATGCAAATATCCGCTATGCCAGAATTAGTTGAAGCCGTAGAGGCGCATGATTTGTCACGCATCAAAGCGCTGATTGACCCAATGCGCTCGTTTTCGGATGCGACTTACATTACCGTTGGCAACGAAAAA [...]
+NODE	349	1103	70035	69541	0	0
+TCATAACGACAAATAATTTTGTGGAGAGCACAGTGGATACGGAATTGTTAAAAACTTTCCTGGAAGTTAGCCGGACACGCCATTTCGGGCGGGCCGCAGAAGCACTTTACCTGACGCAATCCGCGGTGAGCTTTCGTATCAGGCAACTGGAGAATCAACTGGGCGTAAACCTTTTTACACGGCACAGAAACAATATCCGTTTAACCACGGCTGGCGAAAAACTTTTACCGTATGCGGAAACGCTGATGAATACGTGGCAGGCGGCACGTAAAGAGGTGGCGCATACCTCACGCCATAACGAGTTTTCCATCGGCGCCAGCGCGTCTTTATGGGAGTGTATGCTTAACGCCTGGCTGGGGCGACTGTACCAACTACAGGAGCCGCAAAGCGGCCTGCAATTCGAAGCCAGAATCGCTCAACGGCAATCGCTTGTGAAGCAACTTCATGAACGCCAGCTTGATCTCCTCATTACTACCGAAGCGCCCAAAATGG [...]
+CCTAATTAGGGGCGTAGTTCAATTGGTAGAGCACCGGTCTCCAAAACCGGGTGTTGGGAGTTCGAGTCTCTCCGCCCCTGCCAGAAATAATCCTTAGCATCTGCTAAGGATTTTTTTTTGCCTGAAATTACCTGATTATCTGATCAGGTAATCGTAAGTTCCCTTCTTTTTCTTTTCATCATTTTCATTGTTCATCCAGCACATCCGTTTTTAACAGATCGCAGATCAGCGAGTATTTATCGCTGTTTTGCAGCCAAATGGCGTATAGCGGCCGTGAAAGCGTTGCGCTGTCGGCAACGGTATGTAATCCGCCCTTTTCATTTGCCCAGTTTACAGGAAGCCAGCTACAGCCATTTAATGCGCTAAGCTGCTGTCGGGCGAGTTCGGCTGAGCTGGTTGTTAATACCGGCACTTCATCTGCTGCGATCAGCCCGGTTTCATGCTGTTGGAAGTCTGGTCCCCACTCCAGCCGCAGATAATTGAGTTCTGATT [...]
+NODE	350	1544	87180	86392	0	0
+AACAACGGAAAGTTCCACGGGATTATCTGCCCCACGACGCCAAGCGGTTCGTGAAAATGGTAGGCCACGGTTTCGCTATCAACTTCGCTGATCCCGCCCTCCTGCGCACGTATACAGGAGGCGAAATAGCGGAAATGATCGATCGCCAGCGGTACGTCGGCGGCGCTGGTTTCACGAATCGGTTTACCGTTATCCCAGGTTTCCGCTGTCGCCAACAGTTCGAGGTTTTGTTCCATCCGATCGGCGATCTTAAACAAGATAGCGGCACGGTCTTGTACTGACGTATGCGCCCACTTATCTTTCGCCTTATGCGCGGCGTCGAGCGCTAAATCGATATCTTTTTTACCGGAGGAAGCGACTTCACATAGCGGCTGGCCGGTCACTGGCGTCAGGTTTTGATAATATTCGCCGTCGGCGGGCGCAACCCAGTCACCGCCAATAAAATTGTCATAGCGGGCTTTTAATTTCAGTGGGTACCCGTATTCACCTGGC [...]
+TCGGCACCTGGAGCGCCTCCCACATTTCAAACGTTTCAAGATGCCGCGTCAGGAGCGGGTAGAGCTTTTCCTGTTCGCTTATTCCTCCGCCGATCAGCACCACGCCCGGATCAAACATAGAGATCACGCTGTAAACGCCGCGTGACAGATAACGCGCCCAGTCATTGACCGCCTCACGCAGATGAACATCGGTCGCCATTCGTTCGAAGATCACATCCGCAGGCGGCATCTCTTCGGCGGGCAGCGCCAGCGCCTGGCGGCACGACGCCATTAATCCGCTGGTTGACGCGATTTTATGCATACTTTCGCCATTATTCCCGACCGGCATGACGCCGAATTCACCGGCATGGAAATGTGCGCCGCGATACAGTTCTCGTCCGACGATAATACCGCCGCCAATGCCGGTTCCAATGGTAATGCAGACCATGTTTTCGTAATGCTGCCCGGCGCCTCGCCACATTTCGCCCAGCGCCGCGCAGTTCGCGTCGTTCT [...]
+NODE	351	45	2366	2366	0	0
+TTTGCATGTGGACGGTACGCTGCATCTGCTGCTGGGCGGCGACGG
+TAGCGCCGCTTCGGTACTGCCGACATTGGTCGCTTTCGAGTCGTT
+NODE	352	6844	329043	324085	0	0
+TTGCTTACCATGACCGCCCAGCACAAACAGGGCGAGAGCGGGGTCAGTCAGAATAACCTGGGGCTGACGCTTAACTACCGCTTCGGCGTGCCGCTCAAAAAGCAGCTTGCCGCCAGTGAAGTGGCGCAAAGCCAGTCATTACGCGGTAGCCGCTATGATACGCCGCAACGTAACTCGCTGCCGACAATGGAGTATCGGCAGCGTAAAACGTTAACGGTTTTTCTGGCGACGCCGCCCTGGGATCTTACGCCTGGTGAGACGGTTGCGTTAAAATTGCAGGTGCGCAGCGTGCACGGTATTCGTCATTTGAGCTGGCAGGGCGATACACAGGCATTAAGTTTGACGGCAGGAACGAACACCCGCAGTACCGAGGGCTGGACAATCATTATGCCGGCCTGGGAGCACCGCGAAGGCGCGGCAAATCGCTGGCGTTTATCGGTGGTGGTTGAAGATGAAAAAGGTCAGCGTGTCTCTTCCAATGAGATCACGCTC [...]
+GCGATAGTTCATATCGAGGTGATACCAGTGGTTCAGACCGGCGCCAACGATAATCATTGAACGCCCGTGCGTTTTGTCCGCGTTATCGGCGAACTCCCGTGCGATACGGATGATCTGCGCCCGCGGCACGCCAGTGATCTGCTCGGCCCATGCTGGCGTATACGCTTTGGTATCATCATAACTGGCGGCACAATTTTCATCGTTCAGGCCGCGTTCCAGACCATAGTTCGCCATAGTCAGGTCATACACGGTGGTGACTAACGCGGTAGAACCATCGGCCAGTTGCAGACGTTTAACCGGCAATTTGTGCAGCAGGACGTTATCCAGCGCCACATGATTAAAGTACTCTGAACCTTCGCCGCCGAAATACGGGAAGCCCACGTCAGCAATCTCATCCTGGCTGCCCAGCAAGCTGAGCTGCAATTCAGTTTCTGCACCGGTAGTCCCGTCGCGCTGCTCGAGATTCCATTTGCCTTTTTCGCCCCAGCGGAA [...]
+NODE	353	12956	640292	633161	0	0
+ATTTTGATATCGGACTGCGTAACCTCGATCTGATTATGGGGTGCGAACGTCGTGTCGTTTACGATTTTGTAAACGTCATTCAGGGCGATGCGACACTGAATCAGGCGCTGATCAAAGATAAGCGTACTGAAAATCTCTTCATTCTTCCGGCGTCGCAGACCCGGGATAAAGACGCGCTAACGCGCGAAGGCGTCGCTAAGGTACTGGACTCACTGAAAGCAATGGACTTTGAGTTCATCGTTTGCGACTCGCCGGCGGGTATCGAAACCGGGGCGCTGATGGCGCTCTATTTTGCCGATGAAGCGATCATCACGACTAACCCGGAAGTCTCTTCTGTCCGTGACTCGGACCGCATTCTGGGTATTCTGGCATCGAAATCTCGTCGCGCAGAAAATGGCGAAGAACCGATTAAAGAACATCTCCTGTTGACGCGCTACAATCCAGGCCGCGTCAATAAAGGCGACATGCTCAGCATGGAAGATGTACTGGAGA [...]
+CATCCGGTGAGATCCAGCCCTGGCGAGGGTTGTTCCAGCGTAACAGGATCTCAACGCCGGTACACTGTTGCGTGCGGGCATTAAGCAACGGCTGACAAAATAGCTCAAACTCCCGTTCGGCAAGGGCCAGATTAATCTCCCAGGAAAAGCTCATTCTGCTGGCCGTCGCCAGCCAGGCGATATAACCGATCAACAGGCTAAGCAATACGGCCAGCGGTAACTGTGTCGGGAGATGTTTGAACGCCAGTACGCCTGCCGACGGCCCGCTGACGCTGATAGTAAAAGGGAAATGCCGCGATGAAAGCTGGTAACGCTCTTCATCTTTTTTTAATTCCGGAAGAGTATCGACCACGCCCCGACCATATAACAGGTGCCGTTTGCCGACCGTCAGGCTGGCGCTGGTAATTTGCGGCTGCTGCGGCTCAAGTAGCATGGTCGTCAGCAAGCCAATATTCACAATTTCCATCACGCCATCCTGGCCATCGGCAGAGG [...]
+NODE	354	2354	118634	116011	0	0
+AAGTTGGATTAAGCTATCCGGTCACTAAACATGTCCGGCTTTATACCCAGGTGTACAGCGGCTATGGCGAATCGCTGATCGACTATAATTTTAATCAGACACGTGTCGGCGTCGGCGTGATGCTTAACGATATCTTCTGATTGGATCGTGTTTTAAACATTGCAGTTTCTCTCGCAGGCGCTGAAAATAGCGCCTGTTTTGATTTATGGTGAACGGGGTTAATGTGGCGCAGGCGGAAGTGTTGAATCTGGAATCAGGGGCCAAACAGGTTTTGCAGGAAACCTTTGGCTACCAACAGTTTCGCCCGGGCCAGGAAGCGATTATTGATACTGCGCTCTCCGGTCGCGACTGTCTGGTCGTCATGCCCACCGGCGGCGGCAAATCTCTGTGCTATCAAATCCCGGCGTTGTTGCTGGACGGATTGACCGTCGTCGTTTCGCCCCTGATCTCGTTGATGAAAGACCAGGTCGATCAGCTACTGGCGAACGGGGT [...]
+ATGAGATGCAGGCCAAGCAGCGCCACGCCCGCCCATACCATCACGCCGCAGGTGATGCCCAGTACGCCCATCATCGCTTCTTTACGCGAACGGCTGACAGCAGTTTGAGACACGAAGAAAAAGTCGGGGCCGGGACTCATTAGCGCAACGATGTGCACCATTGCCACGGTGAAAAATAGCATCAACATAAAAATGGCTCGCGGGGAAATAGTTCAGTGAGTCACCATCCTGGCACTTTTTTGCCGGGCTGACTACTCTTCGTCATCACCATCGACATGCGCGCGGATGAGCGCCATGAATTCTTTCCCGAAGCGCTCCAGTTTGCGCATCCCAACCCCGTTAACGCTTAACATCTCGCTGGCGGAAACCGGCATCTGTTCCGCCATTTCTATCAACGTGGCGTCGTTAAAGACCACATACGGCGGGATATTCTCTTCATCAGCGATAGCTTTACGCAGCTTGCGCAACTTAGCGAACAATTTGCGATCGTAA [...]
+NODE	355	4753	276510	272581	0	0
+TCGTGAGTCCATGCGGCGCGAAATCCTTTCCAGGAATATCCTGCCGCTTTGATAATTCTGGTGAATCCAGTGGTATTATTGGCCATCAAAAGAACCTTTTTACATTATTAACGTCAATGACATTATACGGTTGCCCTGCACGATTCGGACTGCCGTAACGCAGCGCGAAGTATGACGGGATACAACAGAAATTCGCTAAACTTTCTGATATCCTTGCACCGCATTTGCATTATTAACCAGAGGCTTTACATCGTTTATGTCCGGCTGGCCACGAATTTACTACAAATTACTGAATTTACCATTAAGCATACTGGTAAAAAGCAAGTCTATTCCGGCGGAACCCGCCCAGGAATTGGGGCTCGATACTTCTCGCCCCATTATGTATGTCTTGCCATACAACTCAAAAGCGGACTTACTGACGCTGCGGGCTCAATGTCTGGCGCACGATCTCCCGGATCCGCTGGAGCCGCTGGAGATCGACGGCGCGCTGCT [...]
+CGGTAACTCTATCCCGGATATTCCCGATCCAGTTGCTCGCCATACCACTGACGGCGTGGTGAAACTGAAGGTGAAAACCAACAGCAGCTCCAGCGTATTGGTCGGGCCGTTGTTTGGCTCGTCCGGTACCGGGCCGGTAACGGTAGGCAATACCGCCGCGCCGGTCGCGGCGCCAGCGCCAGTCGCGCCGAAGAAAAGCGAACCGATGTTGAACGATACGGAAAGCTACTTTAATAAAGCGATTAAGGATGCCGTAGCGAAAGGCGACGTCGATAAAGCGCTGAAACTGCTTGATGAGGCCGAACGTCTGGGATCGACATCTGCCCGTTCCACCTTTATCAGCAGTGTAAAAGGCAAGGGGTAATTATTTCCCCACAGTGCTGATTTTGCAGCAACTGGTGCGTCTCCTGGCGCACCTTTTTTTGTCATTTCATGCGAATTGTTATTTTTTTGTTGCGCAACAGATCACTTAATTGTGATTGCGCCCCCCGT [...]
+NODE	356	9317	528017	523462	0	0
+CTGGCCAATCTTATCCTGCGCGCCTTTAACGTCCATACCCTGGCCAAGCATCATGCCAAAACGACGGTTGCGCGACTGGTTGTCGGTACAGGTCAGCACCAGATCGCCTAAACCCGCCATCCCCATAAAGGTGGCGGGATCGGCACCAAGCGCTGCGCCAAGCCGCGACATTTCGGTCAGTCCACGCGTGATTAGCGCCGTGCGGGCGTTCGCGCCGAAGCCGATGCCGTCAGACATCCCCGCGCCAATCGCAATCACGTTTTTCACCGCGCCGCCAAGCTGCACGCCGATAAAATCCGCATTGATATAGACGCGAAAACTTTTTCCGCAGTGCAACAGTTGCTGGAGATCGTCGGCAAAGGTCTCATCGGTTGAGGCCAGCGAGATTGCCGTCGGCAAACCCGCCGCCAGCTCTTTAGCGAACGTCGGACCGGAAATCACCGCCAGCGGGATTTGATCGCCTAACGCCTCGCGAGCGACATCCTGCAACAG [...]
+GCTATGCCAACAACGATATGGCTGAGCTGGAAGCGCGGCTGAAAGAGGCGCGTGAGGCCGGCGCGCGTCATGTCCTGATCGCCACCGACGGCGTGTTCTCAATGGATGGCGTCATCGCCAATCTGAAAGGCGTCTGTGATCTGGCCGATAAATACGATGCGCTGGTGATGGTTGATGATTCTCACGCGGTAGGCTTTGTCGGCGAAAACGGTCGTGGTTCCCATGAATACTGCGACGTAATGGGCCGCGTAGATATTATTACCGGTACGCTGGGCAAAGCGTTAGGCGGCGCATCCGGCGGCTATACCGCGGCGCGTAAAGAGGTCGTTGAGTGGTTGCGTCAGCGTTCCCGCCCATATCTGTTCTCCAACTCCCTGGCGCCGGCGATCGTGGCGGCTTCTATTAAAGTGTTAGAGATGGTGGAAGCGGGCGCAGAACTGCGCGATCGCTTGTGGGCGAACGCCCGGCAGTTCCGTGAGCAGATGTCTGCCG [...]
+NODE	357	45	3237	3237	0	0
+TAAACAAAGAATATATTCTTGTTGTGGTGTGGTATTTATTGCTAC
+ATTTTATAGCCTAATAACACAATACTTCAAATGATTTTTATAAAA
+NODE	358	5082	336348	334583	0	0
+TTAAAATAGAAAATCAGCTCATAGTGTATAAATTCTGGATTATTATTCTACAGCAGCAAAAATTCAGATATTGTCATCGGGATGGATGAATTAATTATTTATATCAGGAGTTTTTTTTGCTAGCATTCCTGAAACGCATTCGCCCCCTTATCACTATTGTCAGATAACGTGCTGACGGTTGTGTAAAAACATTGCGCCTCATTCTTCTGTAGTTGGAGTTAATATGAAAAAATTTTATAGCTGTCTTCCTGTCTTTTTACTGATCGGCTGTGCCCAGGTGCCCCTCCCTTCCTCCGTGAACAAACCGGTACAGCAACCTGGCGCTCAGAAAGAGCAACTGGCCAACGCAAATAGTATTGATGAGTGTCAGTCTCTTCCGTATGTGCCGTCAGACCTTGCGAAGAATAAATCATTATCAAACCAGAACGCTGATAATTCCGCATCAAAAAATAGCGCAATCAGCTCAAGCATTTTTTGCGAAAAATATAAACA [...]
+TCTTTGAGGACGTTTCAACCTCTATGATGTGAGGACGCTGCTTAAAAGTTAGTAATAGTTCAGTGGCTTCTTGCCTGTCTTTTTCGGTGACCGAGTCGTACCAGTAACCACCGTTTACATACCAGAAATTGCCATCCTGTGTTTCAAAAGCGTCAAGCGCCATAGCTTCATGATTACCCACTACAGAAATAAACCATGAGGTATTTAACAGTCTCAGTGTTTCAAGGTTTTCTTTTCCTCGATCAATGTTATCTCCAGTGGAGATCAAGAGATCGGTATCAGCAGAGAAATGTAATTGAGCCAGTCTGGTTAACAATAAGGAGTAACATCCATGAATATCACCAACGACCCAAATGTGGCGATAGAGATCGCTGTTGATGTCAGCATAACGGATTAATTCCATGATGTTCCTATAGCACAATTTTGGAGTCTGGTATTATAACAAAAAAGTAGGGTAATATTAATTTTTATTGTTTAAAATACACAGTTATT [...]
+NODE	359	1262	55154	54702	0	0
+CTTTCTCGCCGGATGGCGGCATACCTGCCTTATCAGGCCTACACGATCGTTCAACGGCAGGCCTGATAAGCCGCCATCCGGCACTTTCTCGCGGGATGCCAGTTCCGTCAAATATCGCGATGAATCTCACTTTTCGCTTTTTTGGCGATAAATCTTATCCAGGCCGTTGCATGCGGTCCCTTCTCTCCGTAAAATCCCGCGCCTTAGTGGCTTTCACCATTTTTATGCGTTTTGCCATAATAATTATTCTTCCAATTTCATTTTTATAGCTGGATACCAATGGAAAAAAAACTGGGACTGAGCGCGCTGACCGCGCTGGTTTTAAGCTCAATGCTTGGCGCAGGTGTTTTCAGTCTGCCCCAGAATATGGCCGCCGTTGCCAGTCCGGCTGCGTTGTTAATTGGCTGGGCCATTACCGGCGTGGGGATACTCTTACTGGCATTCGCCATGTTAATCCTTACGCGCATTCGCTCCGAGCTTGACGGCGGTATC [...]
+CGCCAGAAATGGCACCTCCGCCGCCATAATAGTCCAACTTAGATAAGCCCCGCAGACAGACACAATCAGTCCCGCTGCAATAATAATTTCTCCCCACGGCCCCATCATTTTTACCATCAGTCCGGCCATCGACGGGTTGCGCATCTCCGCCAGTTCCGGACGCGCCAGAACGCCAAGAGAAAGCAGCGTGACCAGGAGATATATTCCCAGCGCTGCGAGTACTGCCAGTAGCGTGGCGCGGCCTACATCGCGTTTATTTTTCGCTCGGGCCGAGACGACGACGGCGCCTTCAACGCCAATAAACACCCACAGCGTAATAAGCATGGTGTTCTTAACCTGTTCCCATACGGGAATACCGAGTTCAACACCAGTGAAGTCCAGTGTGAAGGTATCCAGTTTGAACATCATGATAGCCAGCACAATAAACGCGCCGAGCGGCAACAGTTTCGCCAGAGTCGCAACCAGATTGATGCTGGCTGCCGTTTGTACGCC [...]
+NODE	360	2900	170252	168676	0	0
+GCCCATATCCGTAACGGCCGTCTGCGCTGGCCGGTTTCAGACGAAATTTATCGTCTGAGCGATACACCCGTCCTTAGCGTTCAGCGTCGTGCTAAATATTTACTGCTGGAGCTGCCTGACGGCTGGATAATTATTCACCTGGGGATGTCGGGAAGCTTGCGGATACTGTCGGAAGCGCTGCCGGCGGAAAAGCACGACCATGTCGATTTGGTGATGAGCAATGGCAAAATTCTACGTTATACCGATCCTCGCCGCTTTGGCGCCTGGTTATGGACCAAAGAGCTGGAAGGGCATAACGTACTGGCGCATCTGGGACCGGAGCCGCTAAGCGATGAGTTTAATGGCGAATATTTGCAGCAGAAATGCGCGAAGAAGAAGACGGCGATTAAACCCTGGCTGATGGATAACAAGCTGGTGGTCGGCGTGGGGAATATCTACGCCAGCGAGTCGCTGTTTGCCGCTGGTATTCACCCTGACCGCCTGGCGTCGTCA [...]
+GCTAATACCGCACTCATTTTAGATGCGCTAGTGTAACACTTCTTTCGCAGCAATCCGATACGAATAATTTTTATACACAATCATTTTTTTAATCATAAATTCAAAGAGATATTAATTTATCCCTCTCTTGTGAATGGTCATTCCCATTGTCTGGGGCGACAAGGGCGGCAAATTTCAATGGATTGCGTAAAAATGCAAAAATAATGGGGTTCAGCGCCTGGAATCCTCGCTTCTGAGCCAATTTGGCGCAAAAATGGGAAAAGTAATGGTAAAGCCCAGGCTAAATACATAGAATCCCCAGCACATCCATAAGTCAGCTATTTACTATGCTCGAATTGCTTTACACCGCTCTTCTCTACCTTATTCAGCCTCTGATCTGGATACGGCTTTGGGTGCGTGGACGTAAAGCGCCGGCCTATCGTAAACGCTGGGGTGAACGCTACGGATTCTACCGCCGTCCGTTGAAACCGGGCGGAATCATGCTGCATTCCG [...]
+NODE	361	577	26957	26957	0	0
+CGTCAGCACCTCTTCGGCATCGACATGCAGACCATGCGTTTTCAGCAGCGCGGCCAGCGCGTCGGCATTCGCGGGATCGAAGCCCGTATGTACGTTGTAAATACCGAAACCGAGCTTATCGCGCAGTACGCGCGCGGCGCAAAGGTTAGCGGCGATCATCGACTCTTCTACGATACGGTTAGCGATACGGCGCGGTTCCGCCACAATATCCAGTACTTCGCCTTTTTCGCCAAGCACAAAGCGGTAATCCGGGCGGTCTTTAAAGACTAACGCATGATGATGACGCCACTCACTGCGGCTTAGACAAATACGGTGCAACAGACGAATCTGCTGGGCAATGCCTTCGTTATCCGGCTGCCAGGTGCCGTTATTTTCCAGCCAGTCGGAGACATTGTCGTACGCCAGCTTGGCCTTCGATTCGATGGTGGCCGCAAAAAAGGCGATATCATCGTCAATGGTGCCGTCCGCGGCGATTATCATGCGACAGGCGAG [...]
+TGTGCTCACTGCGCGCCAACGAAGTGCGTCCGGCGCTCGCCTGTCGCATGATAATCGCCGCGGACGGCACCATTGACGATGATATCGCCTTTTTTGCGGCCACCATCGAATCGAAGGCCAAGCTGGCGTACGACAATGTCTCCGACTGGCTGGAAAATAACGGCACCTGGCAGCCGGATAACGAAGGCATTGCCCAGCAGATTCGTCTGTTGCACCGTATTTGTCTAAGCCGCAGTGAGTGGCGTCATCATCATGCGTTAGTCTTTAAAGACCGCCCGGATTACCGCTTTGTGCTTGGCGAAAAAGGCGAAGTACTGGATATTGTGGCGGAACCGCGCCGTATCGCTAACCGTATCGTAGAAGAGTCGATGATCGCCGCTAACCTTTGCGCCGCGCGCGTACTGCGCGATAAGCTCGGTTTCGGTATTTACAACGTACATACGGGCTTCGATCCCGCGAATGCCGACGCGCTGGCCGCGCTGCTGAAAACGC [...]
+NODE	362	3773	202735	200805	0	0
+CGTTGATGCGCAGGGCGGCGATGGCATTCGTATGGTTCAGGAGCTGCAAACGCTACTGGAACATCACGCTCCCGACAGCATGGTGCTGGCGGCCAGCTTTAAAACACCGCGGCAGGCGCTGGATTGCTTACTGGCAGGTTGCCAGGCGATTACCCTTCCTTTAGATGTAGCGCAACAAATGCTCAATACGCCTGCGGTAGAGTCAGCAATAGAGAAGTTTGAGCAAGACTGGAAAAACGCTTTTGGTAATCTGAACCTGTAGGAGAGAAATGTATGGATCGCATTATTCAGTCACCAGGTAAGTATATTCAGGGTGCAAACGTCATCGCGCGTCTTGGCGATTATTTAAAACCAATGGCGAACAACTGGCTGGTTGTGGGCGATAAATTCGTGCTGGGATTTGCCGAAGAGACGCTGCGCAAAAGCCTGACGGGTGCCGGTTTGTCAGTAGAAATCGCCCCGTTTGGCGGCGAATGTTCGCAAAATGAGATC [...]
+ACCGTGGCGTTGATCGCTGGCGGGCATACCCTCGGTAAAACCCACGGCGCGGCAGCGGCATCCCATGTAGGGGCCGATCCGGAAGCCGCGCCGATTGAAGCGCAGGGCTTAGGTTGGGCCAGCAGCTATGGTAGCGGCGTTGGCGCGGATGCTATCACCTCCGGGCTGGAAGTGGTCTGGACGCAGACGCCGACCCAGTGGAGCAACTATTTCTTCGAGAACCTGTTCAAATATGAGTGGGTACAAACCCGTAGTCCGGCTGGCGCTATCCAGTTTGAAGCGGTAGACGCGCCGGACATCATCCCGGACCCGTTCGATCCGTCGAAAAAACGTAAGCCAACCATGCTGGTCACCGACCTGACGCTGCGTTTTGATCCGGAGTTCGAGAAGATTTCCCGCCGTTTCCTTAACGATCCGCAGGCCTTTAATGAAGCCTTTGCTCGTGCCTGGTTCAAACTGACGCACAGAGATATGGGACCAAAAGCGCGTTAC [...]
+NODE	363	2537	99770	98930	0	0
+AGGACTGAACATCATGAATCAACAGGATATTGAACAGGTGGTGAAAGCGGTACTGCTGAAAATGAAAGACAGCAGCCAGCCGGCCAGCACTGTTCATGAGATGGGCGTTTTTGCCTCCCTGGATGACGCAGTGGCGGCAGCAAAACGGGCCCAGCAGGGGCTGAAGAGCGTGGCGATGCGCCAGCTTGCCATTCATGCCATTCGCGAGGCGGGCGAAAAACACGCCCGAGAATTAGCGGAACTTGCCGTCAGCGAAACCGGCATGGGACGCGTTGACGATAAATTTGCTAAAAACGTGGCGCAGGCGCGCGGCACGCCGGGCGTCGAGTGTTTATCTCCGCAGGTGCTGACCGGCGATAACGGCCTGACGCTGATTGAAAATGCGCCGTGGGGCGTGGTGGCCTCGGTCACGCCGTCCACCAATCCGGCGGCGACGGTGATTAATAACGCCATCAGCCTGATTGCCGCAGGCAACAGCGTCGTGTTTGCCCC [...]
+GCCCTTCATCGCCAGGCTACGTGCCAGCGGCGCGGTCATTCCCGCCTGATGCAGGAAGCTGTCGACCATCACAAACAGATGGCTTACGCCTCGCGCTTGCGCTTCCTGGCCGCAGGCGCCGAGCGCCCCAAGTCCGCACAGCGTGACCGGCGGTACGCTGAACGTTTTCACCCGTTGCAGATTCAGGGTGTCGAATGCCTGAAACAGCGCCGTCTGTAGTTCAGCTTGCATAGAGTCCCTCCGCTTTCGCTCTCCCGCTGTTGGCTATCGCCAGCGGGGTCATAAACAGGCTGTGCTGCGGTAAATGCACCTGTAACTCCGGGAAACGCTGGCGAAATAACGCCTCCACGCCCGGCTGCATACAGGAGCCGCCCGCCAGCCATAAATCTGTCACTCCCTGCCCGGCAATATGGCAAGCGACGATTTCCGCCATCTTTTCGTACACCGGCTTCACTACCGGCCAAATCTCCTGCGCATTGCTGCGCTTGTACT [...]
+NODE	364	3685	221027	219745	0	0
+AAACGGCGACCATTATTGGGTGCGGGCCAACGCGGTACCGATGATACGTGAAGGGCGTGTGACGGGATATATGTCGATCCGTACCCGCGCCACGGATGATGAGATTGCCGCCGTCGAGCCTTTATATCAGGCGCTAAATGAAGGGCGGTGTAGTAAACGTATTCATAAAGGCCTGGTGGTTCGTCAGGGCTTGCTGGGCAAACTGCCCGCTATGCCTGTTCGCTGGCGAGTGCGTAGTATTATGGGGCTAATGGCCGTAATGCTGGCGTTGGCGCTGTTCGGTACGGATGCCTCATGGCAGGCGTTGTTGTTGGGCGCGTTGGCGATGCTGGCAGGTACGGCGCTATTTGAATGGCAAATTGTGCGTCCCATTGAAAATGTGGCGACGCAGGCGCTGAAAGTGGCGACCGGCGAACGCAACAGCGTACAACACCTTAATCGTAGCGATGAGTTGGGGCTGACGCTGAGGGCCGTGGGGCAGCTTGGCTTGAT [...]
+ATTCTTGATATCCTGACCCGGGACGCCAGCCACGGCTATGAACTGATTAAAGCGATAGAAAACCTGACGGGGGGCGGCTATACGCCAAGCGCTGGTGTGATCTACCCTACGCTGGATTTTTTACAGGATCAGCAATTTATCACGATTAGCGACGAAGAAGGCGGGCGGAAAAAAATCGCGATTACCGCGAACGGCGCGCAATGGCTTGATGAAAATCGCGAACACCTGACGCATATTCAGGCGCGGCTAAAAGCCCGTTGTGTGGGCATGGAGTTACGTAAAAATCCGCAGATGAAGCGGGCGCTGGATAACTTCAAGGCCGTGCTGGATCTGCGGATAAACCACAGCGATATCAACGACGCGCAAATCAAACGCATTATCGGCGTGATTGATCGCGCGGCGCTGGAAATCGCCGAACTGGATTAAGCGGGCTGCGTGTCCTCTTCGCGGACGCGGAACACGTTAACCAGCTCTTTTAAATGTAACGCCTGT [...]
+NODE	365	2978	157226	152110	0	0
+TCGTGACCTCCGGTATCCGTATCGGTTCTCCGGCGGTCACTCGTCGCGGCTTCAAAGAAGCGGAAGTGAAAGAGCTGGCTGGCTGGATGTGTGACGTGCTGGACAACATCAATGATGAAGCCACCATTGAACGCGTGAAAGCGAAAGTGCTGGATATCTGCGCCCGCTTCCCGGTTTACGCGTAAGCGCTTGTGTTGTGAGAATGGCCCGATGGCGCTGCGTCTGTCGGGCATTACTTATGCGCCATAACGTGACGCCGCCGGAAGTCATTATCCGGCGGCGTTGCCGTTTGAACTTCTCCCTCCGCTTGTTAATCTTATGTTACCCTTGCCAGCGCAACCGTTTACCGCCAGACTATCGCCTCCAAACGGGAGGGAATCATGGCATTGCATTCCACGCGCTGGCTGGCGCTCAGTTATTTCACCTACTTCTTTAGTTACGGTATTTTTCTGCCCTTCTGGAGCGTCTGGCTCAAAGGTCTTGGGCTAACGC [...]
+ACTGGCTTCATCTGTTCCTCGCGATAAAAATTCTGTGACGTTCCTCAGCATTCCTGGCCTAAAAGCACGCTTATCACATTTTTCACACGCAAACTTTAGCTATCCTTACCAGACAAACTAACGGGAGACCTGACAGATGATGCCGACAATTGCCCCACCATCTGTACTTTCCGCTCCCCAGCGCCGCTGTCAGGTATTGCTGACGCTTTTCCAGCCGGAGCCAATTGCCACGGTGGAAATCTTCAGCGCGCTTAATGGCGTTGATGATGATACTGCCCGTGAGGATATCACTGAGACAAGCCTGGAGATCCAGCGCTATCATCGCCTTGCCATCACAACATGCCAGAACGGTTGCTATCGGATCGAAGGTACAGCACTCGATCAGCGCCTTTGCCTTTTACACTGGCTCAGGCGCGGCCTGCGTTTATGCCCGACCTTCGTCACGCAACAGTTTACCCCGGCCTTAAAAAACGCGCTAAAGCAGCGCGGTAT [...]
+NODE	366	42	2738	2662	0	0
+GTAAACAAGGTGATTCTCGTTGGTAATCTGGGCCAGGACCCG
+TGGCCATAATTGAGTCTCCTGAATACGTTTCATAAATAGTGT
+NODE	367	6852	313629	308976	0	0
+ATGCGCCGGAAATTGACGGCGCGGTCTATTTGAACGGCGAAACCAACGTCAAGCCGGGCGATATCGTGCGCGTGAAAGTGGAAAACGCCGACGAATATGATTTGTGGGGCAGTCGGGTTTAACGCCACCTCCCCCGGCGCGGGTGCCGGATGTGTTATCCCGCCTGACGAGGCCGTTCCAGGCCCGCCAGGCGTCAACGCCACCGGGCTGGCTTACCCCTTAATCTTCGGGTCCAGCGCATCGCGCAACCCGTCGCCTAACAGGTTAAACGCCAGCACAGTCAGGAAAATCGCCACCGCCGGGAAGAGCGCTACGTGCGGCGCGATGACCATATCCGCCCGCGCTTCATTGAGCATCGCTCCCCACTCCGGCGTTGGCGGCTGCGCGCCTAATCCGAGAAATGACAGGCTTGCCGCGGAAATAATTGACGTACCGATACGCATCGTAAAGAAAACCACAATTGACGAGACCGTTCCCGGCAATATATGGCTA [...]
+CCAGCGGCAACGTTTCTACGGCGGTGAGCGGGGTAATACGTGAAAGCATCTGGGTCAGCGCCGTTTCAAGCGGCATCAATCCGGCGGAAAATTCCATGAACATACTCCTGCGAGGCAAAATCGAATCCGGCTATTATGTCAGAAAACAGTGGCGGGCAGTATGCTACCTCGGTCTTAGAGACGGCCTTGCGCCTTTACATACCTTACGCATCTTTCTATATTCAAAAATCGAATGAATAACTCACAACAATTCTGATAGTTATAGTAAAAGTTGTGTGCCACCGTTAATGGACCCTAAAAATGAATAAAGCAGTGATTGCGATTCACGGCGGCGCAGGCGCGATTGCTCGCGCGCAAATGAGCCATGAGCAGGAGCTACGCTATATCCAGGCGTTGTCAGAGATTGTTGAAAGCGGGCAAAAGATGCTGGAAGCGGGTGACAGCGCGCTTGATGTAGTGACGGAAGCGGTGCGCCTGTTAGAAGCGTGTCCG [...]
+NODE	368	3747	199158	193588	0	0
+AAATTGGCTGCCGGATCGAGCTGCACGTTGCGGAAGAATTTGCCGGAACCGGTAACGATAAACGGCGTATTCGCCAGCAGCGGCATGGGTTGACTTAGCGCGATGTAGCGCGGTTTTTCGTGGAAATTAGCTGCAAACGGTGCGATATCGGCTTCATCCAGACGCAGCGTCAGGTTACCGCCATTACGTTCGTCCCACCCTTTCAGCCACGCATCAGACGTGGCTTTAATCATGCCCTGGACGAACCAGGAATCGGTAATATTTTGCATGTTCGTGTTCCCATTTATTGCCCGAAGGTTATTCGGGTCTTACGTAGGCCGGATAAGCGCAGCGCCATCCGGCAATCGTGTTTCATTTATTGCCGGATGGCGACGCGGGCGTCTTATCCGGCCTACAGATCAGGTGTCGCTGTCAGCTACGTTTGCTCAGGATCTCTTTTTCATAGACGCGAACGCTGTCCAGCCACTGGCTGCCAGCCGGCGTGTCGTGACG [...]
+GGCGTCCGGTGAACGCCACAGTACATTCGTCAGGCATAGGTTGTCGGTATGTTCATATAAATGCCGGTCGTGATCGCGAACAAAACACACGGTACCGCCGCTGATGGTATACGGCTGCCCGTTGAATACATGAATGCCCGTACCGTGTTCCACAATCACGATTTCATGAAAATCATGATGATGTTCAGGAAAAGCGGCTTGCGGCAGACGAGGTTCAATCGCCACGGGCGCTTTACCTGATGGAAAAAAATCCACGCTATGCAGTACGGTCATGGTTGCTTCCTCCTGAATTCAACATGTCCGAATAGTAATTAAGGGTTATCGGCCTCACCTTAAATTTTTGACGCTAAAGCGCGCAAACATGGTCTTTTTTTCAAGAAAAGGCGGGAAAAAGCGGGAAATGCGGACGACATCACACCGGCCTATTAGTAGAAACTGTGAACGCTATCACGTTCATCTTTGCCTTGTTGCCAGCGGCTCATTTTCCTGTCA [...]
+NODE	369	2215	125874	125093	0	0
+GCACGTGAGTGAAGCGGTGCCGGCGGCCTTTGGCCTGTTCGCGTGTTGTCCGAATTCTGCCGTAGATGCTATTATCTCCGGCGTTAATATCGGCAATGATACTGATACTGTCGCCACCATGGTCGGGGCGATTTCCGGCGCATTCCATGGCGTGGAGGCTTTTCCCGCCGATTATTTAACGACCTTGGATCGTATGAATCATTTCGATTTGGCAGAACTGGCCAGGCAAATCGCAGGGTAGCGACTTCACCCTGCCGGGGACGGTAAAACGTCCCCTGCTGGCGAAGACGTGAGGTGCGCAGCTTGCAGGTTGATAAAACGAGCTTTACTCCGCTTTATAAGCAACTATTTTTTATCATCTGTCAGCAGATCCAAAATGGATCCCTGCCTTTAGGCAGCCAGCTGCCGACGCAAAAAGAGATTGCCAGAGCCTACAACGTCTCGCTGATTGTGGTTAAACAGGCCTGGAGCGAACTGATCAATGCGGGCATT [...]
+ACGTTACGGGACTCACCGTTCACGTACCTGTCGTCAAAGAAGCTACCGCGCTAGGGTGCGCTATTGCCGCAGGCGTTGGCGTGGGTATCTGGCCATCGCTGGCGGAAACGGGAGAAAAGCTAGTGCGCTGGGATCGGGAGCATAAACCTAATCCTGAAAATTTCGCTGTCTATCAGCAGGCCAGAGAAAAATGGCAGGCCGTTTATCAGGATCAACGCGCGCTGGTCGATGGTGGCTTAACGACATCCCTCTGGAAAGCGCCAGGCCTGTAACAGGAGAATAAGCATGCAAAAAACGAATGAGAAGAATCATGAATACCGCTTTGGCGATAATGGCCCTAAATACTTAATCCGTGGGCCGGGCTGCGATATGGGTGTCGTCATACTACAACCAGGGCAGTCATTCCCTAACCATCGCCATAATACCGCTTGTGAGGTTTTTTATACCCTAAGCGGTGAAGTGTGCCTGTATCTGGAAGGAACACCTCATATC [...]
+NODE	370	5289	253763	250513	0	0
+ATCCTCTTCGGTAAAGCCAATGTCTTTAGCGCCCGAAATAATATTATAGAGATATTCCACCAGAGAAGACTCCGCCAGCCAGAATTCATTACGTTCCATGCGGGCAATAGGGTATTCGCCGTTGGCATCCCGTTCTGTGATATAGATAAAAATGGCCTGATCGCCGACATGATCGATACGAATTAATGCCGGAAGACGGGGATCGTTACTCCAGACAGGCATCAGATCTTCAATATCAATACCTGAGCCATCCATGCCAACGCCGTAATACGCCTCTTCATCAGGGGAGTAAGAATGAATTACTCCCTCTTTATCAATAGATCTTTGTAATGTTTCAATCACAGGCATATTATAATTGCTAAGTAGATCGCGGTCGTAGGCCAGTAGCGCCTTCAGGCTTTCAGGTAACTCAGTGGTTTCCGTATTTTGCGGATCGCGATACTTACGCACTCGCAGACGACTTATTTCCTCGGCAGGCATAGGATTAGGCAC [...]
+GCGCCAGCGCAATGCCGCTATTTACCGTTTGGGCAGGCCAGGCCGGACGCACGCCGATTTGCCACTGCTTATGCTGCGCGCCGAGGGTTTCTCCCGGCAGATTCAGACCGCTAATGGTCGCCTGGATTTCGCCTTCGCCAAAACCTTCCAGCGCGCGTACCGGAACGAATAAGGTGGTGCGCACGCCCGGCGCCAGGTTGACCGGTTGCGGCTGCTGGCTAAGCAGTTCCAGTAACCCACTGGCGGCGAGCGCAATATTCAGCGTCTGCGGACGGTCGGTCAGATTGGTGACGTCCAGCACCAGTCGCGAAACATCCCCTCCCGCCAGAAAACGCGGCATATTCAGCTCGGCAATCACTGGCGCGGCGACAACGACTTTGCTTTCGCCGCGACCAAAATCGTCCGCTGTCCATGCCTGCGCCATAACCCGCAGTTCGCCGTTAAAGTCGCCAATCGGCAGCGTTACGACCCCTTCGCCCTGCTCATTGAGCG [...]
+NODE	371	26	1035	1035	0	0
+CGCCGGTGTGACAATCGCCTGGCTGG
+GAGAGAACGTTGACCGCGCTGCGCGT
+NODE	372	25	982	982	0	0
+TCCATTTTTGCGGCAGCAGAAAGGA
+GGAGTCGGTACAGTGGCAGGGGCTG
+NODE	373	2779	130218	129443	0	0
+CCAGAGGCTTCCGCGTTGGCAGATGCGCATTATCATTTTACCTACCGTGAAATGCGTGAACAGGTTGTGGCGCTGGCGTACGCGCTGCGGGAACGCGGCGTTCAGCCTGGCGATAGCGTGGCGGTGGCGTTGCCGCGGTCGGCTTTTCTGACCTTAGCGCTGCATGGCATTGTCGAGGCGGGCGCCGCCTGGCTGCCGCTGGATACCGGTTATCCTGACGATCGGCTGCGAATGATGCTGGAAGATGCGCAGCCGAAACTGTTAATTACGACTCAGGCGCAGCTGGCGCGCTTTCACGATATTCCGGGGATGGAATATTTGTGTTATAGCCAACCGCTACCGGTCAGTGACGCCACTCCGCTGGGGCTGTCGTTACCGCATCATACCGCTTACATCATTTTCACCTCTGGCTCGACGGGCAGGCCGAAAGGGGTGATGGTGGGACAAACGGCGATAGTCAACCGGCTGCTGTGGATGCAGGATCACTATCCG [...]
+CCGTATGACCTGAAAACTTTATCCAATGAAAGAACACATTCCTGTCAGAGATTCTAACAGCAAGTCAGAATTATCCGAAACACTCTTTGCGCGCCAGTGCCCGAAAAGCTAAATATTCGGAATTAAACTTGCCTGTAGCATGTATCACTTATGTTAAAAGAATTAATAGTTGCAATAAAAAACCCATAATAATTAGTCATTATTATGGGTTTCAGGATTTAATTTGTTAAAGCTAGAAACAACGCCCGTTATTTATTAATAAGCTCGCTGATGATGGGCCCGATAGTTTCAAAAGCGGAGGGAGAAATAATATCTACATGCGCGCACGGCTGGCGATAAATAGCCAACGACGCTATCCACGGCGACCAGCTCTGTTCAGGCGATACGCCTTCCGGCACCGTTTTATCCGCCACAAAGAGCGTAGCATGTCCATCAAACGGTACGCTATGCGCCGTCGTCAGCAAACGGACGGCATCCGCATAATTGCCTTCA [...]
+NODE	374	51	3446	3446	0	0
+ACTCACTGCCGCCCGCCAACAGTCATGAAATCGATTTGTTTAGCCTTATAG
+TAACCTGCAAGTGACTGATTTTTTTCTTGTTTTACATTAAGAGATGGCATG
+NODE	375	2152	111376	108491	0	0
+ATAATATTTTTAATTTTCGCGTAGGCCATTGGGGCCATCACACGATAGGTTTGCAGCGCGGCGTGGTCCGGTAGCCAGGCGCCGTTTACCCACGGGGTTGCTTCAGAACACATAGAATCGCTCAATGCCCAGAACATATTGCGCCAGGCCACGACTTCGCCGAGATCGGCCTGCACGCCCCGGAACTCTACGGTACCCGTACATTCGAGCGATTTTTTCAGCAGCGCGGTAATGAAATCAAGTTTAACCGCCAGACGAACACAGGCTTGCAGTGGATACATACGGGCAAAGCCGCCTTCCATCGTCCAGCGACGGCAACGATCGAAATCACGGTAAATCAACACGTTTTCCCACGGGATCAACACCTTGTCCATCACCAGAATGGCATCGTTTTCATCAAAGCGGCTGGAGAGTGGATAATCAAACGGCGAGCCCGTCGCGCCCGCGACCATTTCATACGAGGCGCGCGAAATAAGTTTTACGCCTTCGGCA [...]
+TCCTCAGGCCGATTTAACGGGCTGTGATTTCATTAATATATTAATGATTAGATTTATGCTTTCGCTGTACATTTAGCAAGCTGAAGTAAAGTATTTGTGATGTGATTAACAATATTTTCACAAATTTATTATTAAATATATACATATCAAAGAGTTAAATAAAACCCCTTGTTTCTGTTAAACTTTGGGCATAAAACAGATTTCATAGCTCACATCGGTAAACACGATTATTCAGGTATTAATAATTCTGCAAAAGAGAAACGCTTATGCATGATTCATTAACCATCGCCTTGCTTCAGGCGCGCGAAGCGGCAATGACCTATTTCCGCCCCATCGTTAAAAGCCACAATCTGACCGACCAGCAATGGCGCATTGTGCGAATCCTGGCCGATAGCCCCTCTATGGATTTTCACGAGCTGGCCTTTCGTACCTGTATTTTGCGTCCAAGTCTGACCGGAATATTGACGCGCATGGAGCGAGACGGACTGGTGT [...]
+NODE	376	1346	65966	65759	0	0
+AAAACCGTACCCGCGTGACGCAGTGGGAGACGCTGGATTGGGTGCAAGAGGTACAACAGCGCGGCGCGGGGGAAATCGTCCTGAATATGATGAACCAGGACGGCGTGCGTAACGGTTACGATCTGACGCAGTTGAAAAAAGTCCGTGACGTTTGCCGCGTGCCGCTGATCGCCTCCGGCGGCGCGGGCACGATGGAACACTTTCTTGAGGCATTCCGTGATGCCGATGTCGACGGCGCGCTGGCCGCCTCCGTTTTTCACAAGCAAATCATCAATATTGGCGAATTAAAAGCGTACCTGGCAGGCCAGGGCGTGGAGATCAGGATATGTTAACAGAGCAACAACGCCGCGAGCTGGACTGGGAAAAAACCGATGGCCTGATGCCAGCCATCGTGCAACATGCGGTATCCGGCGAAGTATTGATGCTGGGCTATATGAACCCACAAGCGCTGGACAAAACCATTGAATCCGGCCATGTCACGTTCTTCTCACG [...]
+CTAAAATCGATGATACAGAACGAAGCGACGCGTCCACTGGTCTTTTCTCCGGCCTATTACCAGACGAAGCAGACACTGCTGGACATTAAAAATCTGAAAGTGACTGCCGATACGGTGCACGTCTATCGTTATGTGATGAAGCCGACGCTGCCGGTCCGTCGCGATAGCCCGAAAACAGCCATTACCCTCGTGCTGGCTGTGTTGCTGGGCGGGATGATCGGCGCCGGGATTGTGCTGGGGCGCAATGCGCTACGTAGCTATAAGCCAAAAGCCTTGTAAGCTTCTTTGCCGGATGGTGGTCGGCTTCGAAAGGTAAAATTTCTCATTAAAAAACCGGGCATTGCCCGGTTTTTTTACGCTTATTGATGACGCTTACGAAGATTGTCGATCACGGTGGTGAGGTTGAGATCCTGATCCTGCAACAGCACCAGCAGGTGGTACATCAAATCAGACGCTTCATTGGTTAATTCAAAACGATCATTGACGGTGGCC [...]
+NODE	377	3612	209247	206537	0	0
+CGCAACCTCGCGCTCAACATCGAAAGCCGTGGTTATACCGTCTCCGTTTTCAACCGCTCCCGTGAAAAGACCGAAGAAGTGATTGCCGAGAATCCCGGCAAAAAGCTGGTGCCTTATTACACGGTGAAAGAGTTTGTTGAATCCCTCGAAACGCCTCGTCGTATCCTGTTAATGGTGAAAGCGGGCGCAGGTACTGATGCAGCTATCGATTCGCTGAAACCGTATCTGGAAAAAGGCGATATCATTATTGATGGCGGTAACACCTTCTTCCAGGACACAATCCGTCGCAATCGCGAGCTGTCTGCGGAAGGTTTTAACTTTATCGGTACCGGTGTTTCCGGTGGTGAAGAGGGCGCGCTGAAAGGGCCATCTATCATGCCTGGCGGTCAGAAAGATGCCTATGAACTGGTGGCGCCGATCCTGACGAAGATTGCTGCTGTGGCGGAAGATGGCGAACCGTGCGTGACCTATATCGGCGCCGATGGTGCTGGT [...]
+GCTGAATCTGCGGCTGCGTGATTTTGGCCTCATCCGCATAGCGCAACGCTTCTTCGATTTGCTTAATACGCAGATCTTTTTGTTCCTGCGCCACAACTTCCTGCGTCTCAAGAGACTCCTGCAACGTTTTGGTTTGCAGCGTGATGTTATCTTTCAGGTCAACTTCCAGTTCCTTAGCGACCTCTTCATCCACCTGTTGGATATATTCCGCCAGCCGACGCTGCGCCCCTTCAGCGGTAGTACTCACATAAGAAACCGAGAGTGGCAGCGCCTGCCCCTTTACCGACTGTTCAATGGTGAGCTTTTCCCGCTCTTTCTGATTATCCAGCGCTTCCGATAATGCGGAAAACGCAGAGCTAAAGCGGCTTATAAAATTCGCCTGCACTTCAGAGATTTTGGGGGCATTCCCGCCATACAAGACGTTGAGCGCGTTGGTATAGGTGGCAACCTGCGCGGCATCAGGTTGGGTAATAATCGCCGTGGATGTCCATT [...]
+NODE	378	109	111	111	0	0
+ATACCAGTAATGGCAGCTACAAACATGTAAAGTAAAAAGGCCGCGTTTTCCCGGGGAGGCTTTTAGACAGAAGAAGGCCATGGCGTTAAGGATCAGAGTATTGCTCGAA
+CCTCCCCGGGAAAACGCGGCCTTTTTACTTTACATGTTTGTAGCTGCCATTACTGGTATACAGATTATGATTATGCAACGGCTATCCTTGTTGGCGCGGGGAACACGGC
+NODE	379	14617	768574	754489	0	0
+TTAGCGCTGCTGTTGTCAGAAAAAGTTTCATATATCAAACCTCATAATTAGCTCGCTATTATTTTATAGCGTTACTAATTTCAGGGTGATGACAAAGTAAGGAGAGGTATTTCTTATGAAACAATTAGTTGGTCGAAAATGACAGACAAAGGCACTACCGACGGCATAAGCTTTGAAAAACGCACTGCTGCGGAAAAGATAAATTTTGCGGTTTCGTTATCCTTCGCCATCATTTGACACATCTGATTTGCCATGCATAAAAAAAGCGGCTGTAAAGCCGCTTTTTTGTATCGGGTGGCGCATTGCCACCTACAGAAGATTATTTCTTCTTCGCTTTCGGGTTCGGCAGGTCGGTAATACTACCTTCGAACACTTCAGCAGCCAGACCGACGGACTCGTGCAGCGTCGGGTGCGCATGAATGGTCAGCGCGATGTCTTCCGCGTCACAGCCCATTTCGATCGCCAGACCGATTTCACCCAGCAGCTCGCCGC [...]
+GGTCAGCGCGCCAACGGAGATGAAATCCACCCCGGTTTCAGCAAATTCGCGTAAGGTTTCCGCGGTGACGTTGCCGGATACTTCCAGCCGCGCCTGGCCGTTGACGCGTTTCACCGCCTCGCGCATCTGGTCGGTGTTGAAATTATCCAGCATGATAATATCCGCGCCTGCTTTCAGCGCATCGTCCAGTTCATCCAGATTTTCGACCTCGACTTCTACCGGCACGTCCGGATGTAGCCAGAACGCTTTTTCCACCGCCTGACGAACCGAACCGGAGGCGATGATATGGTTTTCTTTAATCAGGAACGCGTCAGTGAGGCCCAGACGATGATTGGCGCCGCCGCCGCATAAAACCGCATATTTGAGCGCGGTGCGCAGACCCGGCAGCGTTTTACGCGTGTCGAGCAACTGGGTTTGGGTGCCAGCCAATAGTCCAACGTAGCGGCGTACTTCACTGGCGACGCCGGAAAGGGTCTGGACAAAGTTTAGCGC [...]
+NODE	380	2018	111700	110607	0	0
+AACGTCAGAGCAATACCGTAACCGACGCCCCTCAGGGAATTACACTCACCCTGACGAAGAAAGTGACCGACGCGACCGTGACGGTAACGAAAGATGATACCAAGGCGAAAGAGGCGATTAAATCCTGGGTGGATGCCTATAACTCGCTGGTGGATACCTTTAGCTCGTTAACCAAATATACCGCCGTTGAGCCGGGCGAAGAAGCCAGCGATAAAAACGGCGCGCTGTTAGGCGATAGTGTGGTTCGTACTATCCAGACCGGGATTCGGGCACAATTTGCCAATAGCGGCAGTAATTCTGCGTTCAAAACAATGGCGGAAATTGGCATCACCCAGGATGGGACTTCCGGCAAACTGAAGATTGATGATGATAAGCTGACCAAAGTACTGAAAGATAATACAGCCGCAGCGCGTGAGCTGCTGGTGGGCGATGGTAAAGAAACGGGGATCACCACCAAAATTGCCACCGAAGTGAAAAGTTATCTGGCGGATG [...]
+AGCCTTCGCATTCAATGATGTTGTCATCGATTTGCGTGCGGTCATCCTGATTCACGCGCTGAACGCGAATACGTTCTTTTTCGTCTGCGCCCATTTTGTGGTTCACGACGACGTCGAGCAGCACCGCAATATTATTTTTTTTGAGCGCGTCTATCGCCGTCAGTAACTGGCGTTTATCGCCGTACTTTGTCGCGATAGTTCCTTTTTGGTCAAATTCGCCGAGGTCAAACAGGTCGTAGGTATCATAGCCTACGGAATAGCCGCCGGAGGCGCCTTTACAGGCGGGCGGTAGCCAGACCATATTGATACCGATATCATTCAGCCCATCAGCACGTTCCGCCAGTTCAGGCCAGAGTTTACCGCCGTCGGGATAATACCAGTGGAAGTACTGCAATAACGTGGGGTTTTTCATCTTCCGTGCTCCAGAAGTCGTTTAGCCGACCTCTGGAGTATGGAAGAATTTTCATACGAGACGGGAAAATATTATGAGGC [...]
+NODE	381	5083	270755	266793	0	0
+CCTGTTTTTCCCTCAGCAGACGAAGAGACTCTCTGATCACTTCACTTTGTGTTCTGTAATCACCTGATTCTATGAGCGATTCAATAAACTCGCGCAGTTCATCGCCAGGATCAACGGTCATTGTTCTGACCATAACAGCCTCCACTGTAAGTATAAATCTTACATAAGAGTACACCGGAAATGAAATGTACGTCGAAAACATACCCCATATCTCATGCTTATGGGGTTGGCTAATGCGGCTTTGCTGAACGAGTAGCAAAGCCGCTACATTATTACTGTCTGGGGTTTACCCCCCGTGCAGTCGCCGTGCATCAATCACATCCGGCACCTGGTTCAGCTTACCGAGCACGCGGCCCAGCACCTGCAGGTTGTAGATCTCGATGGTCATATCAATGGTGGCGATCTGCTGTTTAATGTCGCTGCGGCTGGCGACGCCCAGCACGTTGACTTTTTCGTTAGCCAGAATGGTGGTGATATCGCGCAGCAAGCCGC [...]
+TGCGCAGTGGAAAAGGGATACTTTCCAGAATGAGCTTACCGGCTTCCAGCTTGGAGAAATCAAGCACGTCATTAATGATCGCCAGCAGATTATTCGCGGAACGCTCAATGGTGTTCAGATGGTCGCGCTGGGTGGGGTTCAGCTCCGTTTTTAATGTCAGGCGGGTAAAGCCAATGACGCCGTTCAGCGGTGTTCGCAGTTCGTGCGACATGTTCGCCAGGAACTCCGACTTAATACGCGCCGCTTCCTGGGCGCGCTTTTTCGCCAGATCCAGCTCAACGTTTTGGATTTCCATCTGCTCAAGGGTTTCACGCAGGTCCGAAGTGGCCTGATCGATATTATGCTGCATCTCTTCGTGATAGGCGGCAAGCGACATCGCCATGGAATTAATGCCGTTTTTCAGCATGTCCAGCTCGCCCAGCATAAATCCTTCCACCCGGCTATCCAGTTGTCCGCGGCGAATGCGGTCAACGGTATTCACCATATTACGGA [...]
+NODE	382	2333	104652	102679	0	0
+GCCCCGGAGTCCACCGATTCAGGCGCGATGCCTGCGGCCTGATACTGGGCCAGAATCAGCGCTTTAAGTTCGGCCTCTTTCAGACCGCCCTGCTTATCCACGGGCGTAAAGAAGACCGGGCTTTGCCAGCTAATGTCGCGTTTGATGAATTCGTAGCGCGGCACCTGCGACACCGCCGCACGGTTAACCAACTCCAGGTGCGAGAAGATCACCTGCGTGGTGGTGGTGCCGATATCGATACCGACGCTCAGTAGCTGGCGAGTGTTCACGATTGCGCCTCCACTTCGGTTTTCACCTGGGCGGCGTCATCTTTCGGCACCAGCATCATCGCCACGCCAATCGCCGTCACGCCGCCGATCAGCTTGCCAACGATCATCGGGAAGATCATGGCGTTCATGTTGGCGGCGGCGAAGCCTAAATGGTCGCCCAGCGCGAACGCCGCAGAGACGGCAAATGCGCAGTTAATCACTTTGCCGCGGGTATCCATCTGCT [...]
+GCGGTCAGCGGGCGCAAGCAGGTGCTGGCGCACGCGTCACTAATGCCGGACGTGGCGATTCTTGATGCTGCCGTGACCGAAGGCGTTCCGCCAAACGTGACGGCGATGACCGGTATCGATGCGTTGACTCATGCGATTGAGGCCTACAGCGCGCTCAACGCCACGCCGTTTACCGACAGCCTGGCGATTGGCGCGATAGCTATGATTGGCAAATCGCTGCCGAAAGCCGTGGGTTACGGCCACGATCTGGCGGCGCGTGAAAATATGTTACTGGCCTCCTGTATGGCGGGAATGGCCTTTTCCAGCGCTGGTCTGGGGCTGTGTCATGCGATGGCGCACCAGCCAGGGGCGGCGCTGCATATTCCGCACGGCCAGGCCAACGCCATGCTGCTGCCAACAGTCATGGGCTTTAACCGGATGGTTTGCCGCGAGCGCTTCAGTCAAATCGGTCGGGCGTTAACCAATAAGAAATCGGACGATCGCGATGCAATT [...]
+NODE	383	6881	360134	353681	0	0
+TATGGTGGATCGCACTAAAACCATTATTAAAAATGAAACCAACAGTATTGGTGAGGACAGAAACACCACGGTAACGAAGAATGACGGCCTTTCCGTAAAACTGGCGCAGACGATCAATATCGGCACCACTTATCGTTTAGATGTTGGCGATCAATTCACGCTTCGCTGCGGCAATGCGGCGCTTGTTTTACATAAGGACGGCTCCATTGAGTTTTGTGGCAAGCAACTGATGTTACATACCAGCGATGTCATGCAACTGATTGGTAAAGGTATTGATATGAACCCGGATGGCGGCACAGCCGTAACCGCCGATGATATTGCCCCCCTTCCCACCTCTGAGTGATCTGAATTAAACCTGGAGTTCTCATGGATCGACCATACCGCATACAGGAAGGGTGTTTTGTCCTGCCTGAAACATTTACGGATCGCAGCGTTAATATTTTTATCCTGGAGGGCAATGAACGAACATCGCCCAGCCTGAATATTTCCCGC [...]
+GCACCTTAAGGGTGACTGGCAGGAAGAAGCGGGATTTAAGACCGGGCGCGGCGTCACCGTGAAGATTTCACAGGGGTGTATTGTGCTGATGGCGGACAGTAACGAGGAGCAGAAGCTGCGCGAACAGCTTTACAAGGCTGAACAGGTGGTTAAGGGGATGCGGGACGTGATTGTTTAGTGGAATGAACGGGGATTAATAATAAAAGAGGTCCGAGAATATCTCTCGGACCAATATACTAACGACCACCATATATAGAGATGACTTCTTTAGTCTTTACGTTTATGTTAACATTTATCTCTTTAACCTCAATACCACCAGAACCTATATCCATCCAGTTATCTTGAGTAATTTCCTCTGATAAAAATGTAATAGTATAGAACTCTACATTTTCTGTTTTACGGATAATAGGATTGAAAATTAAATAAAAATTTTCCACATCGTATAATTTACTCCACTCACTATTTTTAATTGCTATAATTGCATTAAATAAG [...]
+NODE	384	11455	600282	591953	0	0
+AAAAAGCATCAATGTGATCGCCGTCAGGAATGAAGATTTTTTGTTTGGGCTCCCGGGCGAGGGCATACAATTTCTCACTGTCCTGCCAGGGAATAACATGGTCTGCCGTGCCATGAAGAATCAATACCGGAATGGGGCTGACGCTGGCAATATTGCGATCCGCGCTATAGCGGTCATCAAGCAAATAGCCGCTGCCCGGGATCATCTGGTTGGCGATGGAGGAATAGGATAAAAACGTTGAGTCGAGGATAATCGCACGTATGCCCGCCTGGTCGGCGTAGCGCATATTTGCGCAGCCTACGCAGTGGCCTACGGCGGCCAGCACATTATTACCGCCCAGGCTCTGCCCCAGCAGTACCAGGCGCTCGGGGTTAACGTCGGCACGATGCCGCACATAATCTATCGCGCTTTTCGTATCATCCAGTAGCCCTTCTTGTGATGGGGTGCCCTCCGATTCGCCAAAACCACGGTAATCAAACATAAACAGGTTTA [...]
+TGCCGCTTTACTTGACCTGGAGGATTATCATGAGGCGTTTTGGGCAAAACTGGACGCGCTCGGCGATTAATCGACATGCTGTCGGGTGGCGCTCACGCTTATCCGGCCTACCGTTCAGGCTGATTTAAAACGAATCTACATAAATTCGGTTTAAGCAGGTCACAAAAAAACCGCTCAATTGAGCGGTTTTTTTGTGCTGGTCCGGTTCGCGGCCTTTCCAGCAGGCTTTGTTGCCATAGCAACGCAGGCACACCACAGTAGGTAAATACTCCCTTTTAAGGAGAGCAAAGTCAAGTTAATTCACGACGAAACTATTCAGCATTTGAGGTATTATCTTTCCCGGCCCTCTCCGCCGTCTCGCAAACGGGCGCTGGCTTCAGGAGAGGATAACCCATGGCCGTAAGCGCAGGCACACCACAGTGCCTGCTATCACGGCATTATCGCCAGCGGTGCTGCCGTGATGCGGTCTTCGCAAGGACCGCAACATGAAGG [...]
+NODE	385	51	3185	3078	0	0
+TACGCACAACAGGGGGAGGACGAATGCGAAAAGTAAAGAGTGGGTAAATCC
+ACTCGCGGGACGACGATGGTTTCGAGCGGGGCAGGTGCGCTGCTGGCTGTT
+NODE	386	5668	323950	319869	0	0
+AACGTTCTGAAAGATAAAAAAGAGTATCTGGACGCTGGTATGGACGATGTGCTGAGTAAGCCGCTGTCGGTGCCGGCCTTAACCGCGATGATTAAAAAATTCTGGGATGCCACCGATAAAGAGGAGAGTACCGTGACGCCTGAAGAGAGCGATAAAGCGCAAGCGCTGCTGGATATCCCGATGCTGGAACAATACATCGAGTTGGTTGGGCCTAAATTGATCACCGACGGTCTCGCGGTGTTTGAAAAAATGATGCCTGGCTATTTAAGCGTGCTGGAGTCCAATCTGACGGCGCGTGACAAAAAAGGCGTCGTTGAGGAAGGGCATAAGATTAAAGGCGCCGCCGGTTCGGTAGGGCTGCGTCATCTGCAACAACTTGGCCAGCAAATCCAGTCGCCGGATCTTCCCGCCTGGGAAGATAATGTCGCGGAATGGATTGAAGAGATGAAGCAGGAGTGGCAGCACGATGTCGCGGTGCTGAAAGCCTGGGTG [...]
+GCGAAATGGCTGATAAAAAGCCTTGAAAGCCGTAACGACACGCTGCTGCGCGTCAGTCGCTGCATCGTCGAGCAACAGCAAGCCTTTTTTGAACAGGGCGAAGAATATATGAAACCGATGGTACTGGCGGATATCGCCCAGGCCGTCGAGATGCACGAATCCACTATATCCCGCGTGACCACGCAGAAGTATTTGCACAGCCCGCGCGGTATTTTTGAACTCAAATATTTCTTTTCCAGCCACGTCAATACCGAAGGCGGAGGCGAAGCCTCTTCCACCGCGATTCGCGCGCTGGTGAAGAAGTTAATTGCGGCGGAAAACCCCGCGAAACCACTGAGCGACAGCAAGTTAACCTCTCTGCTGTCAGAACAAGGTATCATGGTGGCGCGCCGCACTGTTGCGAAGTACCGAGAGTCTTTATCCATTCCGCCGTCAAACCAACGCAAACAGCTAGTTTGACCCAACCGATAAGGAAGACACTATGCAGCTCAA [...]
+NODE	387	954	57603	57330	0	0
+CTGCGCGTTGGATATGAGCGTTAATACCATAAATTTCATGCAGAATAATCGCTGCCCGGCGATGGCGGCTCGACAAACTGGAGGCGTTGCTCCCCCCGGATACGCCTGGGGCGAAAAACACGGTGTCTTTTATCATAACGCGTTCTTGATACAAAGAGAGCGGCTGGATTTTCGCCGATCACGCTATGTCAGAAGCATTGTTCCTGTCAATGAACAGAAACATTTTATGGCGTAATTTTTGGTTGATAAATTTTATATTGGTAAACCAATATTCTGTTCATATTCAGGCATCAGGGCTAAAGGTGGAACATCAGTCGTGTATTGTCTACTGCCTTTCCTTTCATCTGGCCTCACTAGCGAAACGGGGCGCATTATTATTTTGTTGGTTGACCAGTTTCGCGTTTTTGGTGTGCTACGCGTGCTATCCCTCTTTACAAATGCTATAGTCTGATACCGGGAAATCGCATCGGACGGGCACGACCAATATGAAAT [...]
+GCGCTGGAGGCGAGCTCTCGCTCTTCCAGTTGTAACGCCTGGCGCATTTTAATGATGTCTTCGCGGGTGGCCTGCAGAGCGGCAAATTCAGCGATATTGCTTTCCAGCAACTGACGCGCCTGTAACAGTTCAAACGGCCCGGCGTCATTACAGTGATTGACGTCAGCGCCTTCCATCTCGTTATTATCCGCGCTGTCGAGCACGTAGATCCCGGCGCCGCGGCGGACTTCAACCAGACCTTTAATTTCCAGCATGATCAGCGCTTCACGCACGACGGTACGCGTCACATTGAGCCTCTCAGCGATCTCTCTTTCCGGCGGCAAGCGCTCCCCGGGGCGGTACGGCGTCTGAACAATCAGATCCCGTATCATTGCGCCCACTTCCTGGTAAGGTCTTTGCTGAGAAGTGTTTGATTTCATATTGGTCGTGCCCGTCCGATGCGATTTCCCGGTATCAGACTATAGCATTTGTAAAGAGGGATAGCACGCGTAG [...]
+NODE	388	102	38248	36809	0	0
+CAGGCGGTCTGTCAAGTCGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGCATTCGAAACTGGCAGGCTTGAGTCTTGTAGAGGGGGGTAGAATTCCAGG
+CAGTTCCCAGGTTGAGCCCGGGGATTTCACATCCGACTTGACAGACCGCCTGCGTGCGCTTTACGCCCAGTAATTCCGATTAACGCTTGCACCCTCCGTATT
+NODE	389	13909	929660	922438	0	0
+AAAACTGGCTGAGATTGCACAGCAGTTTGCCAGAGAGGCGGGGCTGACCAGGCTAAAAGGGGAAACTGACTATGTGTTAAGTAATGTGCTGGACGGCCTTATCGGAGACGGCAGCTGGCGAGCTGGCCCGGCTTACGAGTCATACCTGAATAAACCTGGCGTGGATCGGGTTATTACTACCGTTGATGGCTTGCACATGCAGCGTTAATTAACCGGGAAAGATGCGATGAATATGGATATTGAAGCAAGAGTCAAAAAAGTGATCACCTCCTGTATTGCCGTTGATGTTGATAGTATCAATGGTCAGACCCATCTGGTTGAGGATCTTTACGCTGACTCATTGGATTTAATTGATATTGTATTTGGTCTTAGTGAGGAGTTTGACATTAGTTGTAATGAAAACGATCTTCCTGATATGACGACCTTTGCGGATATATGTCGTGTTGTTAAAAAAAGTCTTGAGTCCAGGGTGTAGTATTTTTCTCTCGCTCG [...]
+TGCGCTGTAAATGCGCGTCTAGTTTCAGTCCCCGGAACAGCGATAGCGGTGAAGAGTCCATCCCCAAACGATACATAACCTTCTTACGATAAATGCTGACGGTTTTTGTTCCCAGACCAAATTTTTTCGCCAGTTCAATTGCCGGATGTCCCGAGGATAATAATATCAGCAGCGCATATTTCGCCTGAGTGACGCCGGGAGGTAGATTCCACCAGGCGTATTGATTGATATTAAACAATACCTCTTCCGGCGTCTCGCCGGCATTAAAAGCATACGTAGCAGCCACGGTTTTCTTTTGTGGCCTGTGGCAGAAACGCAGCCAGGCTTCCGGAAGACGAAGCTTCTCTCGATCCGAGCGGATAGCGCAGGATAGTTCGTCTTTTAAAACATAATCCATAACGCCAAAATATTGCAGCACACAGCGATCGATATAATACAAGCGATCTGCCACTACCAAAACTTTACGGTTCTGCAACCGCGTCTGCAACGCAT [...]
+NODE	390	2976	163530	162002	0	0
+GTTTGTTTTTCTGCCATGTTACAAAATACCCCTGAAAATAAGCACTTGCCAGGCGAGCACCCACGCTATAACCGCAAACTCAGCGCTTGCGGCAGTATTATGACGTTATGGGGATGCGTAAAATTTACTTACGGCCAGAATGACCGAAGCCGCCCTCGCCACGTTCGGTGGCGTCAAATGCTTCCACCAGATTAAATTCGGCCTGAACGACCGGAACAAACACCATTTGCGCGATACGTTCGCCCGGTTCAATGGTAAAACTGTCCTGACCACGGTTCCAGATCGAAACCATCAGTTGCCCCTGATAATCGGAATCAATCAGCCCGACCAGGTTGCCCAGCACGATACCATGTTTATGGCCCAGGCCAGAACGCGGCAACATGACTGCCGCCAGTGATGGATCGGCGATATGAATGGCCAATCCGGTAGGCACCAACGTCGTTGCGCCAGGCGCCAGTTCTACGGCGTCGTCGAGACAGGCGCGCAGGTCAA [...]
+GAAACGGCGTTTAGTCGCGTTCAGTGCGTGGGAACGGTTGTTACCGGTCACCGGACGCTTGCCAGTAACTTGGCAGACTCGGGACATGTCTATTCTCCAAAAATCAAATTAGCTCGAGCTTCGTATGGGGTATCGGCGCCTCGTCAGGCTTTACAGCCTGGTCATCGCGCAGTTCTATTGAACTCTCGATTGCCAGGCCCAAATGCCAAACCCGAGATTCTCAAAGGTGGCGTAGTATACGCTGACCCGGCGATATGCTCAAGTCCCGAACAGACAAAGATCCCGATGGATCGCGCAAAGAATCTTAAATCCAGCCGCGTTCGGCAAAAGAAACGTACTCTCCGCGCCCAATTATCAGGTGATCGAGCACCCGGATATCCATAAACTGGCAACACTTTATCACGCGCTCAGTGATAAGTTTATCTGCTTTACTTGGCTCTGCGCAGCCTGAAGGGTGATTATGCGCCAGAATGACCGCTGAAGCATTGAGTT [...]
+NODE	391	48	3179	3159	0	0
+ACGCTTCTCGCTCTCAACCCAGAAACGGTGAGAGTGCAGGTTAGGCAG
+TGTCACCCTGCGTGTATCTGCTAAAGGTATGCGTATCATCGATAAAAA
+NODE	392	3018	154788	153842	0	0
+CCATCCGCTATGCGTCGATCTCTGGCCGCGGCTTCCCCATCCGGAACTGATCCTGATCGCCGCGCTGTTCCACGATATTGCGAAAGGACGCGGCGGCGACCATTCGGTACTGGGCGCGCAGGATGTACTCACCTTCGCCGAACTGCACGGTTTGAACTCACGCGAAACGCAACTGGTCGCCTGGCTGGTGCGCCAACACCTGCTAATGTCAGTCACCGCCCAGCGCCGCGACATCCAGGATCCGGAAGTCATCAAGCAGTTTGCCGAAGAGGTGCAAACCGAAACACGGCTGCGTTTTCTGGTCTGCCTGACCGTCGCGGACATCTGCGCGACCAACGAAACCTTGTGGAATAGCTGGAAACAGAGCCTGCTGCGCGAGCTGTACTTCGCCACTGAAAAACAGCTCAGGCGTGGAATGCAAAATACGCCGGATATGCGTGAGCGCGTGCGTCACCATCAGCTTCAGGCGCTGGCGCTGCTGCGAATGGACAA [...]
+TGCTGGAAAGCACCGGGGGCGGTTAAGCGCGCTATCGCAAACAGGAGGACTCACGGGACAATTATTGGCGACAGGCGTATTTATAGTCGTGACCCAATTACCGCACGAGGCGTTGTTATCGTGGGGATGGCGTATTCCTTTTCTGCTCAGTGCGCTTTTGGTGTTGCCTGGATTATATATGCGTCATCGTCTGGATGAGACGCCTGTCTTCCGTGCGTTTAAAAAGCAGCAGGCCATTAATCATAGGCAGCAAAGAGAAGAAAGGCCGGTGGTCAAAGTAGTACGAGAACAATGGCGCAGCATTTTGCTGATTATAATTCTGCGTTTTGCGGAAAGCGTTCCCTTTTTTCTTGCTACCGTCTTCGCGGTTTCCTGGGCGACGACGCAGCTTGGGATTGCCAGCCTGACTATTCTGTACATTGTAATGTTCACCTGTCTGCTGGCGTATCCCATGCACGTGCTATTTGGCATCATGTCGGATCGGCGTGGCTG [...]
+NODE	393	305	18228	18228	0	0
+GCTTTCGTTACCTTAGCGCTCAACCCGGCACCATCAGCATAAAACTCAATCTTACTGGCCGGGATGCCATGTAATCCCTTTAACTTCCTGTCGCTCAGTTTGTTAAGTTCGCCAGCCATAGACCACCACCCAGCCCAAAGTGTTTATACAAATGTTTATACAGAATTGCTTGCATAATAGCATAAACAACAAAAAGCACTGGAACAATATACAGTCATAATTTCATATAACCAATTGATTTTAAATAAAATATAAAAACCACCTCAAAGCATGAAAACAGCTAATCTGACAGTACGGCATGAACT
+TTATATTTTATTTAAAATCAATTGGTTATATGAAATTATGACTGTATATTGTTCCAGTGCTTTTTGTTGTTTATGCTATTATGCAAGCAATTCTGTATAAACATTTGTATAAACACTTTGGGCTGGGTGGTGGTCTATGGCTGGCGAACTTAACAAACTGAGCGACAGGAAGTTAAAGGGATTACATGGCATCCCGGCCAGTAAGATTGAGTTTTATGCTGATGGTGCCGGGTTGAGCGCTAAGGTAACGAAAGCTGGTGGCATTAGCTGGGTGTTTACTTACCGACTCGACGGGCAGAAGCTGC
+NODE	394	4545	237854	235234	0	0
+TACCGCCTGATGGCGGAATGGGCGACCGATGCCGTGTGCCGCAAGTTGGGCAATACTCGCCCCTGCATCACGGCGGATACGCCGTTGCCTGGCTCAAAAGAGTCTACGGAACATACGCTGAAACGCATTATCTCGCTTCCCGCGCCGCTACGCGGATCGGCGGTTTATCGGCATGGCGATCGCACGCCGGGGTGGCTGAGCGAAGGCCGCCAACACCGTAGCCTGGTCTGTGAATGTGAGGCCGTCACGGCGGGGGAAGTGCAGTATGCCGTCGAAAACTTAACCGTGAATAGCCTGCTGGATCTGCGCCGTCGCACCCGCGTAGGGATGGGCACTTGCCAGGGCGAGCTATGCGCCTGCCGCGCGGCCGGGCTATTGCAGCGTTTTAATGTGACGACCGCGGCGCAATCTATTACGCAACTCTCTGAATTTCTGAATGAGCGCTGGAAAGGCGTACAACCTGTCGCCTGGGGAGACGCGCTGCGCGAAAGC [...]
+TCCCAAAATGGCGAATAAAATAGCCTAATGGGATAGGCTCTAAGTACTCACCATTACTGGAGACTGTATTCATATATTTGTCGCCGGGTTTGGGTGTTAAATAGTGTTTGTTCCTCTACTGAAAGCGTTAAGAAATTTTCCGCAAATTCTCGTAGTGTGGTAGCAGGATCGTTTTGCCCGGCATTCAATAAGAGTTGAATTGTATGGTAACAAAATAGACCACAGCCGTTGGGTACATTATTCTGTAAATTAATTTCGATAAAATTAACCTCATCGCTTTCTGATATACCTGCAATCTTTGCTGCTTCTATAATCTCTTGCTTAGTATTTTCATTTAAATCATGATAACTGTTAAATATGAGACATTTTATTTTTTCTGCAAGTTTATAAAATAAACAGAGAAGCCAGTGATCTCCTGTATTTATCAGAAAGATTTCATTTTCACATAATCCTGATTGAGCAATCTTTTCAAGTAGCTGAGTGCTTAATATA [...]
+NODE	395	51	3028	3028	0	0
+GCTGATCGATCTGTTGAGCCAACAAACGATAAGACTCAACGGCAAGGAATA
+CCGCTGCATCTGGGGATCACCGAAGCGGGCGGCGCGCGTAGCGGGGCGGTC
+NODE	396	8772	445166	439680	0	0
+GTCTGGCTACAGTACTCGCTGTGGTTCGGTAAGAACGGCATACATGACTATAGCCGCGTCAACGATGATGTGGTCGCGCAGCAGGCGACAAACGCCAAACTTAAAGCGCGTAACGATCAGCTTTTTGCCGAAATTGACGATCTCAATGGCGGCCAGGAAGCGATTGAGGAGCGCGCGCGCAACGAACTTAGCATGACAAAACCGGGCGAAACCTTCTATCGTCTGGTGCCTGACGCCTCAAAACGCGCGGCAACGGCGGGGCAAACTCATCGATAAACCATCCAGGGATTTAACATGGCAGCCACTTTATTGGACGTTTGCGCCGTGGTGCCGGCGGCCGGATTTGGCCGCCGAATGCAAACAGAATGTCCTAAGCAGTATCTCTCAATCGGTAATAAAACCATTCTGGAGCACTCAGTTCATGCGCTGCTGGCGCATCCTCGGGTGACACGCGTTGTTATTGCTATCAGCCCTGGCGATCATCGCTTTGCC [...]
+TTAACTTTTTCTATCATAACGACTTATGCACGGTTTTTTAATGACGAATGCTTTAGCTAAACGTGCGCAGGCATCGGGAGCGATCTTGTCGCAAAGGCCGTGTGGGCGTATTTTGATCAAAATGTTCGTATACGAACGATATTTGAGGTAAGAAATGAGATTGATTGTGGGGATGACCGGTGCGACCGGCGCGCCGCTTGGCGTCGAGCTACTCCAGGCATTGCGGGCGATACCTGATGTTGAAACGCATCTGGTAATGTCAAAGTGGGCGAAAACCACTATTGAACTGGAGACGCCCTACACGCCCGCTGAGGTAGCCGCCCTGGCAGATTATTGTCATAGCCCGGCCGATCAGGCGGCGACCATTTCCTCCGGCTCATTTCGTACCGACGGCATGATTATTATCCCCTGCAGTATGAAAACACTGGCGGGGGGTCGCGCCGGCTATGCCGAGGGGCTGGTGGGACGCGCTGCCGATGTCGTGTTGAAAGA [...]
+NODE	397	6110	314896	312793	0	0
+TGGCAAAGAACGCAACAGACAGAATGACAATCGCAATAACCGGCTGGTTTTCAAAGAAATTGACCAGGCCAATAATCATGGTAACGCACAGGCCAGCCATAACGGGTAATTTTCGTGCCAGCGTTCGGGATTTTCCTTTTTTCAGCAGCATGTCGCTTAGCGTACCGCCACAGAGCACCCCAAGCATCGCCATAATATAGGGCAGCATGGCGCCTATCCCGGCTTTGGAAATAGAGAGATGCAGTCCTTTTTCCAGGTAAACAATAAACCAGGTCAGGAAAAAATAGAGCGTAGACGAGCAGGCAAACTGGGTGATGAACAAACCCCAAATCGTTTTTTTGCTGAGGAAGAATTTAATATTTTGCCAGCTGATTTTTGCACTTACGGAGGATTGGTTCTCCGAGCCATAGCCGCCGCCTGCTTTAATATAATCCAGTTCGGCCTGGTTCACAGCAGTGCTGTGCTGTGGATCGCGGTAATACATAAGCCAGT [...]
+AGAGCGATAACTCTTCTGCCGATCTCCGTCGCCTTCGCCAAAAGACACGTCGGGGATCGGTTTCAGAGTAACCCGAACCGGCAAGGAGTCAACGATCGATGATTAATGATGTTAAGTGGGTTCAGGCGCAACGCCATGCCAGCGACTGGCGACACGCGCTGGATATCGCCGTTCGTCCGCTGATTACCTTCGGCGCGGCGGCCCCCTGCTACCTGGACGGTATTATTGAGAACACCCTTAAATGGGGGCCATATTATCTTATCGCGCCGGGGATTGCGCTGCCCCATGCCAGACCGGAGCAAGGCGCTAACCATAATCAAATCAGCCTCACTACGTTAGCAACGCCGGTCGCTTTCGGCAATGCGGATTGCGATCCCATCTGGCTGTTGCTTTGCGCCAGCGCCACGGATGCCGAAGCACATATTCGCACCATTCAACGCATCAGCCAGTGGCTCGACTCGCCGGAAAGCGTCGCGATGCTGCAAGATGCGC [...]
+NODE	398	3405	189971	182743	0	0
+TGAAAATATACATACAAGGAATAATGCATAGCGATTCATAATGTTCTCCTGATTGAAGCGCCCGCAGTATACCTGGCAGTAATTTAGCCAGGTTCAATAAGAGAAACGTTTAATGAACTTGCTGCAAATGGATATGAACCTGTTAAAAGTACTGTATGTGCTGCTGGAGACGAGCTCTACGGGGAAAACGGCGCAAAAGCTGGCTTTGTCGCCTTCTGCGGTAAGTCATGCGTTAATGAGATTGCGCGATGCGCTAAACGACCCGTTGTTTCGACGGGAAGGGAACCGCCAGATTGCTACGCCTTATGCGCAGGCGCTGCGTGACAAATTGGCGCCTGTGTTTGTTTCGCTTAATGAGGAGCTGTTTGGCGATAAAGAGAACGGCTCCCGTTGTTTCCGGGTGGTACTTCCTCCCGCATTGAACGCGCTGCTTACGCCCGTTCTCGCAGAGAAAGGTCATCTTCATCAGGCGGTGATCGAGTGCCTTCCTTT [...]
+TTCCTGAATCGCGGAAATCTCGCCGCGGCCACGTTCCTGACGATCCAGCGAAATCAGTACGCCAGCCAGCGTAGCCCCGTGCGCCTGAATAATCTCCATCGACTCGCGAATCGCCGTACCTGCGGTAATCACGTCATCCACCAGCATCACGCGGCCCTGTAGCGCGCTGCCCACCAGACTCCCGCCTTCGCCATGATCTTTTGCCTCTTTGCGGTTAAAGCAGTACGGCAGGTCTTTATCGTGATGTTCCGCCAGCGCAACCGCCGTCGTCGTCGCGATCGGAATACCTTTGTACGCGGGGCCAAACAGCAGATCAAATTCAATACCGGAATCCACCAGCGCTTCGGCATAAAAACGGCCTAACAACGCCAGGTCGCGCCCGGTATTAAACAGCCCGGCGTTGAAGAAATAGGGGCTTTTGCGCCCGGATTTCAGCGTAAACTCGCCAAACTTTAGTACCTGCTTGTTAAGCGCAAACTCAATAAACTGGCG [...]
+NODE	399	7714	417895	411875	0	0
+TAAACCTTATATATGAACGATTGTTTCATACTCCAGTGAGGCGGTAAACCACTCTGTAATAGTGACACAGCCTAATAACAATTGAATAACTCACAGTAAATAGCCGAGTTATAAACAGATGATGACGCCCTTGCGCCATTTTATTCACCTTTTCTGTGGATATAGTTGTGAAGAAGTATGGAATTACCACGGGAAAACCCAGAACAGTCTGAATTCCTCATGCGGAAAACAGTAAAAATAGTGCCTTATATTCATTGTGTTATAGACAAATCTTACATGCCACCTTCATAAAGCGTGACAAGCATCACATCTAAGATCCTTATGCTGATGAAAGATCAACCAGCGTCGGTTTTATCCACAGATTGTGCCAATAACTTACGCACTATTTGTCTGAATTTTCGATTTTCGTCGCACGTCAAGGCTGTAAATGGAAACAGTAGTGGCGGTTTTACACAGTTATCCCAACTTTCTGTGGATAACATAGTGTAAGAT [...]
+CATTGTTGATCACACGAATTACACCAACCTGCGTAGAGATGCGCAGGTTTTTTTTGTTTCGCCTGAACCTGTAACAGTAACGGATAATTTACACAACTCGTTGCATTTCCGTTTATTCCTTTGCGTTTTCGGACTGGCGATGCAGACGCGCGAAGCCCACAATCAAGATCCCAGAGGTATTGATTGGTGAGATTATTCGGTACGCTCTTCGTACCTGTCTCTTGCACCAACCTGCGCGGATGCGCAGGTTTTTTTTCGAACCTATTTTGCTATCGCTCCTGTTACGCAACTCGTGTAATCTGCCACAATTCATGTTTTAGCGAATTGTCGGCCAAAGGGAGTTGAAATGCTGTTTGGATTTTTCCGTAACCTGTTTCGCGTGCTTTATCGTGTGCGCGTCACTGGCGATGTCCGGGCGCTACAGGGGAACCGGGTCTTAATTACCCCCAATCACGTTTCATTTATCGATGGTATGCTACTGGCGCTGTTTTT [...]
+NODE	400	9869	521108	515149	0	0
+TGCCGATATTTTGCGCCAGGTGCGCGGGAATCTGCCGCTAATGCCAGGATTAACGCAGCTGGTGCTAAAACTGGAAGCGCTTGGCTGGAAAATCGCTATCGCCTCCGGCGGCTTCACTTTCTTCGCCGACTATCTGCGTGACCAGCTACGCCTGACGGCGGCGGTCGCCAATGAGCTGGAGATCATGGACGGTAAATTTACTGGCCACGTTATCGGCGATATTGTGGATGCTGAGTATAAAGCCAATACCTTGCTTCGTCTGGCGCAAGAGCATGACATCCCGCTGGCGCAGACGGTGGCGATTGGCGACGGCGCTAACGATCTGCCAATGATCAAAGCGGCAGGGTTAGGTATTGCCTTCCATGCCAAGCCAAAAGTAAACGAAAAGACGGAGATTACGATCCGCCACGCTGACCTGATGGGCGTGTTTTGCATTCTCTCCGGCAGCATGAACCAGAAATGATTAACCTGCCCAATGGCAAGGCGACCGTA [...]
+TGTTGAAAGGATGGGGATATTTTATGGATCAGGCTGGCATAATTCGCGACCTGTTAATCTGGCTGGAAGGTCATCTGGATCAGCCGCTGTCACTTGACAATGTGGCGGCAAAAGCAGGCTATTCCAAGTGGCACCTGCAGAGAATGTTTAAGGACGTGACGGGCCACGCCATTGGCGCTTACATCCGCGCCCGTCGTTTATCGAAATCAGCAGTGGCGCTGCGTTTGACCGCGCGTCCAATTCTGGATATTGCTCTTCAGTACCGCTTCGATTCTCAGCAAACCTTTACGCGCGCCTTTAAGAAACAGTTTTCCCAGACGCCAGCGCTGTATCGTCGCTCCTCGGAATGGAGCGCCTTTGGCATTCGCCCGCCATTACGGCTGGGCGAGTTTACCGTGCCGGAACATCAGTTCGTTACGCTGGAAGATACGCCGCTCCTTGGCGTCACGCAGAGCTATTCCTGCTCGCTGGAACAGATTTCCGACTTCCGCC [...]
+NODE	401	1797	92645	92026	0	0
+TAAGACGCGCCATTGGTATATCTCTGATGAAAGTGAATGATAACGTAAACGATAATTATTATTATAACCGCAGCATGATAGGCGAAATATCGTCGCAATGGCAAGCGATACGCGGCCCTACGAAAACTAAGGGGTTAAGAAATAACCAGATGAAAAGGAAGGGTTAATAAATTAGACTGAAATGTTATTTATAAGGGATTTGCCGGATGGCGACGTAAGCGTCTTATTCGGCCTACGTCGCACATAATGGGGTCGTAACGGTGTAGACCGGGTAAGCACAGCGCCACCCGGCACTATTACCGTGATTAATTGCCGCCGAACATCTCCTTAATCCAGCCGGCAACGCCGTCGCTCTTCTCTTCTTTCGGCGGCTGTTGCTGCGCAGGCTGCTGCGGCTGAGACGACTGATCGAACGGATTGCCTGACGGCTGCTGTTGCTGCTGCATCATCTCGCCCTGCTGGCACAGCGTATTTGGATCGTCCGTCCAGACC [...]
+CGAAACTGGCGCTGGAGCGTCGTAACCTGGTGCTACGCCTGTTACAGCAGCAGAAAATCATCGATCAGGAACTCTATGACATGCTGAGCGCGCGTCCGCTTGGCGTACAGCCGCGCGGCGGCGTTATTTCACCGCAGCCAGCGTTTATGCAGATGGTTCGTCAGGAACTGCAGGCGAAGCTGGGGGATAAAATTAAAGATCTCTCCGGCGTGAAGATTTTCACCACCTTTGACTCCGTGGCGCAGGATGCCGCAGAAAAAGCCGTTGTCGAAGGCATTCCGGCGTTGAAGAAGCAGCGTAAATTGAGCGATCTGGAAACCGCGATGGTGGTAGTGGATCGCTTTAGCGGCGAGGTGCGCGCGATGGTTGGCGGGGCGGAGCCGCAGTATGCCGGCTATAACCGTGCCATGCAGGCGCGCCGTTCCATCGGGTCGCTGGCGAAACCGGCGACCTATCTGACCGCGTTAAGTCAGCCGAACTTATACCGTCTGA [...]
+NODE	402	2701	157349	156759	0	0
+AGCGCAGCGCAGGAAAATTGCCCGTCGTCTGGAAAAAAGCCCGTTATTAAAACGGGAACTGTCGGAAATGGCTGTTGAGTCCTACGGCGATGCCATGTTATCTGCAGCGCGTGAAAAGAGTTTTCCGTCTGAAATGCCGTGGGCGCTCGCTGATGCGCTGCGCGACGATTTCATCCCGGACTGACACACTGACATTGACGAATCGGTCACAATGGCCGGTTTTTTTATGCCTGCGCGGCGTGTGCTGCGTGAAATCGTGTGCAGGATAGCGGGTGCAATCAACAGAATTCGCGCAGCGTCACGGCAGGGAAGGGAGCAAACTTATGGCCAGAAGTTTTTTGACATGCACGAATCCAGCCGCCTTAACATGTCTTTTAAATGTTCTGGTGCATTTAACATAATATACATTATGCGCACTAATCTTGTAGAGGCTCAATGCTAATGTCTATTTGTGGCTCATTTATAGGAATGTCCAGGCTATAGTTCTCAGAT [...]
+TTTTTTACGACATTTAATGTAGATAGAGGGAATTTCTCGATTACAACATACTATCCACCAGAACCACCGCTAAAGCATTTGCTTAATCCGTTTCGCAAAAACGATATTCCTCAGGTGCCGGATTTCACGATAGGTATGCTCATTTCGTCTGCCAGGTCTGGTCGCTGGTTGTATGACTGATTCACGCTTGGGGGCTGCTTTCCGTCCTCCGTCATTATTGTCAAGGCTAAGTAGAAATGTCCGCCTGCCAGCAAAGTTCAAATGTCCTCTAACAATCTTGGGAACAGAATCACACAGGCGGCAGTAGCTTGACGCTTACGTTCTGCTGGGAAAAAAAGTTATATTGTTAATATGCCCTAACAAGTTATAGAGCCTTACGCTCTATAAAAATATATATTGAACGCTAAAGTAATGGACTATTAGGTGACGCCATGCCCACTTATAAACAAGTTGTGAACCATGTTAAGAAACATGTACTGTGGAAAGAGGAGT [...]
+NODE	403	51	119	119	0	0
+GGTTTTGATAAAGAAGGCGATCAGCGCAAAGCGTTTGTCGATTTCCTGCAG
+CCCCGCTCAGGCTAAACACCATTAATAACGCCACAACAGGCGCAAACCAGC
+NODE	404	5173	279769	276884	0	0
+TAAAGCGGGCATTCCGTGGGCTATCGTCACCTCCGGTTCAATGCCGGTCGCGCGTGCGCGCCATCAGGTCGCGGGCCTTCCAGCGCCAGAGGTGTTTGTCACCGCCGAACGAGTCAAACGCGGCAAACCGGAGCCGGATGCGTATTTGCTGGGCGCACAACTGCTTGGCCTGGCCCCTCAGGAGTGCGTCGTAGTAGAAGATGCCCCGGCTGGCGTGCTGTCCGGACTGGCTGCGGGCTGCCACGTCATTGCGGTCAATGCGCCGGCCGACACGCCGCGTCTGGCGGATGTTGATTTTGCGTTGGATAGCCTGACGCAATTATCGGTCGCTAAACAACCAAACGGCGATGTGGTGGTGTTAAGAAAGACCTGATCATGATATCGCCCCGCTTTGGCGGGGCATATTTATGGCAGAATCGCGTTATCTTCTCATCTGACAAGGATATGTTGTGAACGGTGAATTGATTTGGGTTCTCTCTTTACTGGCGATTG [...]
+TGCATCCTTCGCAGTACCGCCTGGTTACCCAGGTAAATGTTAGAATGTAATTGAAAATACGACCAAAACACTTCTCTTACTTACTGATATAATACCAAATGCAACTGATCGGGATATATCAAAGAGAATGTGTCATACCTTTAGGCGTCTACAGATTTCTGCTAATGATGGACGTGTAAATCTTGTAACAGCGTCAAATAGTTTACCGAGACGCACAGATACAAAAACAATATATTGAACAATAGGTTATGTATAAAATCGCGTCATGATAATTAGCAGACAACGCAGACTACGCCCCCGTTTCGGATCATTATCTTAACCTAAAACCGCTATATTTATAAGTATTATTACGAATAATCTTAACCTGGGATATGTTATACTAATCGGACCAGAAAGATATTATTACGACTTTAGTAAATGCTTTTTAAATATTAAATAATAATTAATTAAGATTTCTACCATTCATTAATTATACTTAACAATACTTTCACA [...]
+NODE	405	9555	479268	474659	0	0
+GCCTTTATCGTGGATTAGGGATGCGAGATAAAGCGAGAAAGGCGTTGCAGCAGTAACCGGTTTTCTTCGCGCAGCCGTGAATTCTCTTCCAGCAGCGTTAACGCGACCGCGATCCCAGGCCAGTCGAGCGCCAGCTCCTCGCGTAAGCGTAGCGCGCGTTGTACCACGCTCGCTGCGCGATCGTCGAATTGCCAGTCGGCGTTATCGTCTTCGTAAGGCTCAATTACGCCAAGTCCGACGATTTCGTTTAGCTCCTCTTCCGTCACGCCGGTGTGCAAACAAAATTCGGTGATGGTAAAGGTGACAGTGATGTTAGCCATTATGCTTTCCCCCATTGCTGGCGTGGGTCAAAGGACGACTGCGCGTCCGCCAGTTGTTGCCACAGGGCAGCTGTTTTCTCGTCAGGTTTCGGCGGCATAACGATTTTGATGATGGCATAGAGATCGCCAGTGTGCTTTTTACTGGCTAATCCTTTTCCTTTGATACGCAGCC [...]
+ATGCGCGTTACCCGGTGGATGCGCAGCTTAAAACCACGCTACTCGCGCCGTTGACCGCTCTGACGCAATGGGCGGCGGATCGCCCGGCGCTACAGACGCTCTGCCGACAATTCGCCGATCTGGCGCAGGCCGGCACGCAGCGCCTGCTACCGGGGCCGACCGGCGAGCGTAATACCTGGACGCTGTTGCCGCGTGAACGGGTATTATGCCTGGCTGATGACGAACAGGACGCGTTGACGCAGCTTGCCGCCGTTCTCGCCGTCGGCAGTCAGGCGCTATGGTCAGACGACGCCTTCCACCGCGATCTGGCGAAACGTCTCCCCGCCGCCGTTGCGGCGCGTGTCCAGTTTGCGAAAGCGGAAACGCTGATGGCGCAGCCGTTTGACGCAGTGATTTTCCACGGCGACTCCGACAAGCTGCGGACCGTGTGCGAAGCCGTCGCCGCCCGCGAAGGCGCGATAGTGTCGGTACAGGGGTTCGCCCGCGGCGAAA [...]
+NODE	406	2663	157377	156376	0	0
+ATATCCTCAGGTGTTAGCGCCATGTCCGCGCAGTTATCGCGGTAGAAGATCAGAGGAAAGGTGTCCTGATCTTTAATGCCGAGGATCACCAGCGCGGTCAGACGATCGCGATCCGACAGCAGGCACTGCGTATCCACACCAACGCGGTTTAATTCTTCACGAACGAAACGTCCCATATGCTCATCGCCGACGCGGGCCAGCATAGCGGAACGTAATCCCTGAATGGCCGTGCCGTAGGCAACATTGCCTGACGATCCCCCTAAATATTTAGCGAAAGTCGTCATATCCTCCAGCCGCGACCCGATTTGTTGACCATACAAATCAACGGCGACTCGTCCCAGACAGATAACGTCCAGCGGCTTTTGCTCACTACTGACTGCTTTATTCATTGACATATCCCCTAACAGAAGACGGTGTTATTTTTGCCCATACTAAGGTTTGGTGATTTCATTTTCAATAAAAATGGAAATAATGTTTTCATTTATTGTTTGA [...]
+ATGTCTATCAGCGTGCTCACGGTCTGTTTACGAGCATCTTCCAACGCTTCATGCAGTTGTTCAATGGTGGTGACGCGATAGCTTTTACAGCCATATCCTTCAGCGATGCGAGCGAAATCGACCGGGATAAACCCGCCTTCCTGACGACCGCTCTCCTGCTGATGGAAACGAAACTCGGTGAAGTAACTGTCCATACCGTGTTCCATTTGCAGATTATTGATACAGCCGTTGGTCATGTTATCGAGCAAAATGACGGTAATCTTTTTCCCCATCTGGACGGAAGTGACCAACTCAGAGTGCAGCATCATGAACGAACCGTCGCCCACGAAGCTGTACACCTCGCGTTCCGGCTGCGCCAGCTTGGCCCCCAATGCGGCATTGACTTCGTAGCCCATACAGGAGTAGCCGTACTCGACGTGGTAATCATTCTCGCCGCGGCTTTGCCAGACACGCTGGAGGTCGCCCGGCAGGCTGCCCGCCGCCGCCACCACC [...]
+NODE	407	10813	564856	551791	0	0
+GGTGGAGTGCGTCATTGCGGATACCTGTATTGCCGGAATGGCGGAATCCGCCGCCTGTGAAGAAAAATTCAGTAGCCAGAACGTGGGCGTGACCATTACCGTTACGCCGTGCTGGTGCTATGGCAGCGAAACCATTGATATGGACCCGATGCGTCCAAAAGCCATCTGGGGCTTTAACGGCACAGAGCGTCCTGGGGCGGTTTACCTTGCCGCGGCGCTGGCGGCGCACAGCCAGAAAGGCATTCCAGCGTTCTCCATTTATGGCCATGACGTGCAGGATGCCGACGATACCTCCATTCCCGCCGACGTCGAAGAAAAACTGCTGCGTTTTGCGCGGGCAGGGTTAGCGGTAGCCAGCATGAAAGGCAAAAGCTACCTCTCCGTCGGCGGCGTGTCGATGGGGATCGCGGGTTCCATTGTCGATCATAACTTCTTTGAATCCTGGCTGGGCATGAAGGTGCAAGCGGTAGATATGACCGAACTGCGCCGCCG [...]
+AACCATACAGGATCCGCTGGCGGCAAAACTGCGCGAGAGATTGAAACATAATTTTGGCGTAGTGAAGAACAGTAAAGGTAAGCTGGGCGTGGACTGTGTTTTTTCCACTGAAGCGCTGGTTTACCCACAGGCGGACGGTTCCGTATGCGCGATGAAAGCTACCGCAGAAGGGCCAAAACGGATGGATTGCGCCTCTGGCTTCGGCGCGGCGACGATGGTGACGGCAACGTTCGGTTTTGTCGCCGTTTCCCATGCGCTGAAGAAGATCATGGCTAAAGCGGCGCGACAAGAATAAAAGGACGGGGCGGAGTGTCACGCAGACGCGTATCCGGCCCTGCGCCCTTCGTTAGCGAAAGAAGCGCTGTACCCTGCCGAACACCGGTTTCAGACGGGCGCGGAGATAATGGGAATATAAATTTTCAGATATGCATAGAAACAACCCGAACCATACCGCACAAAAGCAGAGCAGTTCCGCGTAATTAATGTGCTCGC [...]
+NODE	408	3503	215338	214002	0	0
+CTGCTGCCGCACAATGAATCGCTGTTCCAGAAGGTGAACTTTCTGATGCAGGCGGCGATGGGTTTCATCAACATTGAGCAGAACCGCATTATCAAAATCTTCTCGGTGGTTTCCGTGGTGTTCCTGCCGCCGACGCTGGTCGCTTCCAGCTATGGGATGAACTTCGAGTTTATGCCGGAACTGAAGTGGAGCTTTGGTTATCCGGGCGCGATTATCTTTATGATTCTGGCGGGGCTTGCGCCGTATCTGTACTTTAAGCGCAAGAACTGGTTGTAAAGCATTAAGGCCAGGGTGATTCAGCTGCGGCTGAACCACCCTGAAAAGTTACAGGCTCCAGGTATTGATACCTTTAACCTCTTTTTCATAGAACCACTTATTTGTATTGACGCCGACATAAGCTGCGACAACAAGTCCAAGTATGTTAACGCCGATTAATGCTCCAATAAATATTGCAACGATCCCTAATAAAATAACTATAATTGCTTTTTTCCA [...]
+ACCGCCTCGCCCAGGTGATAACCGATTTTAAGCTGGTAATAACCCATATATTTGGTGATGTCCGGATTATCGTCGGTACTGCCAATCACGTACCACGGTTTGACCTCTACCAGCCAGTTACCGTTTTCGGCCATCAGACGGGTATACAGACGGTTCCAGCTACGCGAGGTGGGGTCCGAACGTCCGTTAGAGTCATGGTTGTAGCCCATCTCTACGTCGCGCAGCGTCCAGCCGGCAAAGCGATAATCGGTAGCAAAACCAAGAAAAAGCTGCGGTTCGTAGTTGGTTTCGCGAAACGGCGAAGACTCTTTACTGTTGGAAAGCTGCCACCAGGATTTCTGCGTATAGGAAGCGCCCAGTACCGAGTTCGGCCCCAGTATTCCGCGCCACAGCGGAAACGCCAGGCTCAACTGAAATTTCACTTCATCTTTACGTGCGTTTTCAGACCAGTTGTAGGTACTTATGGCCTCTTTGTTCAGATCGCTGGTGTTC [...]
+NODE	409	1667	100692	100337	0	0
+GTTTTATCTTTTTAATATCAGAAGCTTCCATGCCGCCGTATCTGGACTTCCAGTTAATGGGATGGACTACCTCCTCCCGCTGCGGTTAACTGTACGAAATGTGCTCACCAGGAGAATCACCATGAATATCGTATTTCTGGGTATTGATCTGGCTAAAAATGTTTTTCAGCTCTGCGGGTTAAGCCAGGCCGGCAAACCGGTTTATACGAAACGCACTGGCCGAAAAGAATTGCTCCAGACGCTGGCAAATATTCCTGCATGTCTGATTGGGATCGAAGCGTCCACCGGGGCATTTTACTGGCAGCGTGAGTTTGAGAAACTGGGGCATAAAGTAAAGGTCATCAGTCCTCAGTATGTAAAACCCTTTGTCCGCGGGCAAAAAAATGATGGTAATGATGCACAGGCCATCGCAGTAGCTCTGATGCAACCGACAATGCAGTTCGTGCCGCCAAAAAGCCCCGAACAGCAGGATATCCAGGCTTTACACCGGGC [...]
+CGCACAGCTCCTGGCGGCAAATTTGACGTAATTACGAACCCACGAAGGTTGGCTGTATTGACCTTCCCCCTGTAAACAGTGCCAGTCTAAACTGAAGGTTCCGGTCTTTCTTCCATCTCACAGAGAGGCGCATTGCCATGAAAAAGACCCGTTATACCGAAGAACAGATTGCATTTGCCCTGAAACAGGCTGAAACCGGCACCCGCGTCGGGGAAGTCTGCAGAAAGATGGGAATTTCTAAGGCCACATTTTACATCTATGGACTACCTCCGTTTTGCAAGTACTGAATCTGGTTTTGGGTTGTTGCTTACATCTACCCGGCATCAGGAAAATCTGTGCCCAAATGGGTAATCCGCACACAATCGCCTCAACAACTGGACGGCCTCTGAGGCCAGTATAAAAATCAGGTTCCGATTGTGCAGGTGCAACCTGTCATCATTTCTCAGTACGCTGCAACTTTTGCTGGCAGGGGATTAATTTCACACTACCTGA [...]
+NODE	410	2971	145687	143870	0	0
+GGTTTTATCCACAAAAACATGTCCATTGAGCGCCAGGCGGAAGAAGTTCGCCGCGTGAAGAAACACGAGTCCGGCGTAGTGACCGACCCGCAGACCGTCCTGCCAACCACCACGTTGCATGAAGTGAAAGCCCTGACCGAGCGTAACGGTTTTGCGGGCTATCCGGTGGTGACTGAAGATAACGAGCTGGTGGGGATCATCACCGGTCGTGACGTGCGTTTTGTGACTGACCTGAACCAGCCGGTAAGTGTCTACATGACGCCGAAAGAGCGTCTGGTGACCGTTCGTGAAGGCGAAGCCCGTGAAGTCGTGCTGGCAAAAATGCACGAAAAACGCGTAGAAAAAGCGCTGGTCGTTGATGATAACTTCCATCTGCTTGGCATGATTACCGTAAAAGATTTCCAGAAAGCGGAACGTAAACCAAACTCCTGTAAAGATGAGCAGGGCCGTTTACGTGTCGGCGCGGCGGTCGGCGCAGGCGCGGGCAACGAA [...]
+ATTATCGGCTTATTCCCACTCAATGGTAGCCGGTGGTTTACCGCTGATGTCATACACCACACGGGAAATCCCGTTGACTTCATTGATGATACGGTTGGAAACACGACCCAGGAAGTCATACGGCAGGTGCGCCCAGTGTGCGGTCATAAAGTCGATGGTTTCGACGGCACGCAGAGAGACAACCCAGTCATACTTACGACCATCGCCCATGACGCCAACGGAACGGACCGGCAGGAAGACGGTAAACGCCTGACTGACTTTGTCGTACAGATCCGCTTTGCGCAGCTCTTCAATGAAGATAGCGTCCGCGCGACGCAGCAGGTCGCAGTACTCTTTCTTCACTTCGCCCAGTACGCGCACGCCGAGGCCCGGCCCCGGGAACGGGTGACGGTACAGCATGTCGTACGGCAGGCCCAGCTCCAGACCAATCTTACGCACTTCGTCTTTGAACAGCTCTTTCAGCGGTTCAACCAGACCCATCTTCATCTCTTT [...]
+NODE	411	8600	452075	445196	0	0
+TCAGTTCTCTGGCGATATCCAGACCCGTCATATCCGGTAGCTGAATATCCAGTAAGACCAGGTCATATTCGCCCGGCGCGAACATCTCCAGCGCCGCCTTGCCGGTCATCGCGACATCCACGCTGTTCCCCAGTTTTTCCAGTACCGAACGCGCTACGATCACGTTCAGTTCAATATCTTCGACCAGCAGAACATGCAGCGCGGGCAGCGGCATGTCGTCTTCATCAAAGGCGTCCTCCACCTCTTCCGCCACCGCTGGCGCATGAACCGTTAGCGTAAAGGTCGATCCTTTGCCCGGCAGACTGGAGACGGTAATATCGCCGCCCATATTTTTCGCCAGCCGACGGGAGACCGCCAGCCCGATACCGGTACCCGTCGCCGGCTTACCGCCATGACTGTCTTTCACCTGATAATACATGGCGAAAATTTTATCCTGCTCATCCTGCGGAATGCCGATCCCGGAATCTTCCACTTCAAAGTGCAGCATGTCGC [...]
+CTCGCGACGGCGGGTCATCACCTCTTTTTCCAGTTTGAAAGCTGGAATACCGAAGGTCAGCAGGCCGCCGATTTCCGGATGGCGATCAAAGACTACCGCCTTCACGCCGTTGCGGGTCAGCACGTCGGCGCACGCCAGCCCTGCCGGACCTGCGCCGATAATCGCTACCCGTTTGTCCGTCTGGCGCACGCCGGTCATATCCGGGCGCCAGCCCATTTCGAACGCTTTATCGTTGATATAACGTTCGATGTTGCCGATGGTTACTGCGCCGAACTCGTCGTGCAGCGTACAGGAGCCTTCGCACAGGCGGTCCTGCGGGCAGACGCGGCCACACACTTCCGGCAGGGTGTTAGTCTGGTGCGATAGCTCAGCCGCCTCAAAAATACGCCCTTCGTTAGCCAGTTTCAGCCAGTTCGGGATGTAGTTATGTACCGGACATTTCCACTCGCAGTAGGGGTTACCGCAGGACAAACAGCGATCCGCCTGGGCTTT [...]
+NODE	412	2936	138958	136492	0	0
+ATTATTTTGGGTATAGTGAGCGATGTTTGTACAATTCTTAATACTCACCGGAGCGCGAGCCGCGCCGTCGCGTCGGTAAATTATGGTACAATCCCGCCAATCTTTATTTCACTCAGGTGAGGTCCTGCGACCAATGGCACAGCTATATTTCTACTATTCGGCAATGAATGCGGGTAAGTCGACTGCACTGCTGCAATCTTCATACAATTATCAGGAACGCGGGATGCGTACCGTCGTATATACGGCGGAAATCGACGATCGTTTCGGCGCAGGCAAAGTCAGCTCTCGTATCGGTTTGTCGTCGCCGGCAAAATTGTTTAACCAAAATACATCCTTGTTTGAAGAGATTCGTGCCGAGAGCGCGCGGCAGACAATACATTGCGTGTTAGTCGACGAAAGCCAGTTTTTGACTCGCCAGCAGGTTTATCAATTATCCGAGGTTGTCGACAAATTAGATATTCCAGTACTTTGCTATGGGCTACGAACAGACTT [...]
+TTCTGAACAGTCTGTTGTCGTTGTTGATTCCGTCTATGATGCCGTTCGCGAACGTTTCGCCAGCCACGGCGGCTACATGCTGCAGGGCCAGGAGCTGAAAGCGGTTCAAAACGTTATCCTGAAAAATGGCGCTCTGAACGCCGCTATCGTCGGTCAGCCAGCCTACAAAATTGCTGAACTGGCAGGCTTCTCCGTACCAGAAACCACCAAGATTCTGATCGGTGAAGTTACGGTCGTTGACGAAAGCGAACCGTTCGCACACGAAAAACTGTCTCCGACTCTGGCGATGTACCGTGCGAAAGATTTCGAAGAAGCGGTAGAAAAAGCAGAAAAACTGGTCGCTATGGGCGGTATCGGTCACACCTCCTGCCTGTACACTGACCAGGATAACCAGCCAGAACGCGTTGCTTACTTCGGTCAGATGATGAAAACCGCGCGTATCCTGATCAACACCCCGGCCTCTCAGGGTGGTATCGGTGACCTGTACAACTT [...]
+NODE	413	3143	159486	155816	0	0
+GGATGCCGAGGCGGCGAAAGCGGCGGCGGAGGCGAAGAAGAAAGCGGATGCCGCGGCGGCGAAAGCAGCGGCGGACGCTAAGAAGAAAGCGGCTGCCGAAAAAGCGGCCGCCGCAGAAGGCGTCGACGATCTGCTTGGCGATCTCAGCTCGGGTAAGAATGCGCCGAAAACCGGCGGCGGCGCGAAAGGGAATGGCCAGCCATCGAAAGATAGCGGTACATCGGGCGCTAACGGTGGGGCGACAGGCGCTGATATCAGCGCCTACGCGAAACAGATTCAGGTCGCCATTCAGAGCCGTCTGTATGATGCGAGCCTGTATCAGGGCAAACAATGTGTCTTGCATATTAGCCTGGCGCCGGATGGCTCATTAAAAAGCATTACGTCTGAGGGCGGCGATCCGGCGCTTTGTCAGGCGGCGTTAATGGCGGCAAAAACCGCGAAAATTCCTAAACCGCCAAGCCAGGCTGTTTATGAGAAAATAAAGGATGCCAA [...]
+AGGCGGCATCATCTTTTTTACCCTTGTTGTAATTCAACTGGCCCAGCCAATAATTGGCGTTCGGCTGATAAGTAGAATCAGGGTATTTCTTGATGAAGTTCTGAAACGCCACAATCGCATCATCCTGGCGAGACTTATCCTGCACCAGCGCAATTGCCGCATTGTAATCGGTATTCGCATCGCCACTTTGTACCGGCGCCCCTGAGGTTGCCGTACCGGCATCCGGAGCGGGGGTCGCAGCGGTTGCCGCCCCGCTCTGGTCGCCAGCCGCTGGCTGCGCTGCGCCGCCATTATTTAAACTCCCCAGCTGCAGCATAATTTGCTTCTGGCGCTCCATCACCTGATTCAGTTGATACTGATTTTCCTGGATTTGGCCGCGCAAAGAATCGATATCAGACTGATTATCGGAGAGCTGCTGCTGAAGTTGGGTTAAAAGCTGGCTGTGAGCGTTAGAGATACGCTCAAGTTGAGTGACGCGGTCTTCGACCGAGC [...]
+NODE	414	3831	211574	205132	0	0
+ACCCTTTTTCCTTTTTTCACATAGCCGGGTTTCCGGCAGTCAGAGAGGGAGGATACACCATGGCTGAACGCTATATTCCGCGCTCCGTTGATGCTGAACAGGCTGTGCTTGGCGGCCTGATGCTTGATAATGATCGCTGGGATGAAGTGGTGCTGATGCTCAGGAGGGAGGATTTTTCTCTGGCTGTGCACAGGGTGATATTCCGCTCTATGTCAGAGCTGGCAGTCAGCGGTCAGCCGTTCGACCTCATCACGCTGAGTGAGCATATTGAGAAAACGCACAATATTGAGGCACTCGGCGGCTTCGCTTACCTGGCTGAGCTCAGTAAGAATACACCTTCAGCAGCCAATATCATGGCTTATGTCCGTATTGTGGCGGAAAAGAGTATGCTGCGGCAGCTTCAGGAAACCGGTAATTCTCTGGTTGCTGATGTTGCATCGCCGGATGCCACTCCGCGCGCAGTTCTTGAATCCGCGGAACGGCGACTTTTTT [...]
+TACCTCACCTCCGCCCGATATCAGGCTTTCAGGTCTCAGATTCCGGGAACCAACACCATGATGCAGTGTTGCCTTTTTACCCTCGCTGTATCCCTGCCAGCGTGCACGATCACCACCATTACAGTCCTTAACATTCCGGAAGGCAGCCATTCCCTCAAATTGCTGTCTCTTCAGCCACGTCTTCATTACACGCGTCTCATCTTCCGTGAGCGGGAATGCATCCACCACATCACGCACCCCATAAACCCAGCCGTCACGAAACATGGCTGCTCTTGCCCTGCGGGTTGACAATTTTAATGCCCTGCTCTGGGTTGAAAGATACGCCTTTGTTGCCTTTTGCATCTGCCGGCAGAGAACATCAAAGGCATACGCCGCCACAACCGGGCGCTCCCCAAAGCCATAAAATATGACAACCCGCCGCCAGTACCTTCCGGTTGTGATACGCCAGTCCAGGTATGTATGGCATCCGAATGCCTCTGCAACAACATGCAT [...]
+NODE	415	4895	286981	285821	0	0
+ATTGCCCTGGCGTCGCTGGAAGCCGAGCCGGTTGGTGAGTTTTATGAATACAAACCGGGTGACTGGTATCAGCGTTCGGTCGGGGATAAAGCGCCAAAGTGGACACCACTCTACGCTGTGCCACCAGTGCTTGTGGCACCTGAAGGACTGGTTAAGGCTGTGCGCTTTTATGAACAGGTTAAGCGTGAAAATCCGCCAGTCGAAACCGGAGCATGGAAAGACGCTGTTGACTGGGTATTACAGGAAGCATGTCAGGCTGTTCATTGGTGCCGACAGATATCAGACCTTCAGGAACAGGAGAATCATTCATGAGAAAAATCAGTGGAATGTTGAATCTGGAGAAGGCCAGGATGCAGTTGCGTGTTTTGTTATCTGGACCTGTTCCTGCAATCACTCCGATGGCGCATGCCGTGGCAATAAAAGTTGTGCTTGATGCTCTGGATGCTAGTGAGCGGAGGGTGGCTGAACTGGAACAGGTCTGTACTGCCGCGG [...]
+TGACGCGGAGGCGTGGTTTTCATCTCTTTCAGTTCAGCTTCAACAAGACGACATTCATCCCCCTTAGCCAGAACAGGCAGAGGCATTGTCTGCTCTGTATCGCCCCCCTCATCTTCATCATGCGGCGCATCTGCAATAAAAAGCGCACGCCATCCTTTCACCACTTCCACCCGTCCTCGCGTGCCAAATAACTGCCCGGCAACAACAAAAGTGGCTTCAGTGACGTCCGCTTCCTGCACGGGTAAAAACTGAGCCAGATAATGCTGACGGATTAACCGGTAAACCCTGAGTTCGTTATCACTCAGGGCACCAATATTAAACGCCTGACGGGTGGGGATAATCGCATGATGCGCAGTGATCTTCTTATCATTCCAGACTCTGGAAACAATATCAGGAGTGAGTTTTGCCAGTTCAGGGGCAATGTCCGGATCGGTGTTTGCCACAGCCGCCAGAACCTCCGGCACTTCTTTATGCATTGATACCGGCAGATAA [...]
+NODE	416	8772	457366	454306	0	0
+TATGCCCAGGAAGCGTACAGGCGGTGAGAACCAGGCTTGCTAACGGCAGTAGACGAATCAGGCGAAAATCGGGCAGGGTCATAGTGATGACGAATCCTTGTGATACGGTGCAATAATTGCCTGATGGCGTTACGCTTATCAGGCCTGAAAACTGAACCTGCAGGCTGTAAAAACGTTCGCGCCGCGATTCGGCAAATTTTTGCTATCGGTTACAGTTATAGCCTTTAATGCTAGCGCCGCCTGGTGACATCGTCTACTTTCAAGTTGTCTTAAATCATCAAATTAGCGAGCGCTGCCAATTACTCCAAAAGGGGGCTCTCTCTTTTATTGACCACGCGCATCCTGTATGATGCAAGCAGACTAACCATATCAACGCTGGTACTACTCCCGCAGACATGACCCTTTTAGCGCTCGGTATTAACCATAAAACGGCACCTGTATCGCTGCGAGAACGCGTAACGTTTTCGCCGGACACGCTTGATCAGGCGCTGG [...]
+GACTAACGCTGGTATTGATATGCTGGTAAAACGGCAGCCGCATTTGCGCGTTGATATCATACCCGCGCGCCATTCGCTGTTCTAAGGTCGCCGTATGCGTCTGCCAGTCGGCAAAAGGCTGATAATAGTTGGCGGATAAACGCAAATATTCTCCCCACGCCTCCGCGCCAAAGCCGGCGCGCTGCAAATTTTCATCCAGCAGATTATCGTAAAAGGTATTATAGCCAAGAAGCCAGCCATCCTGCGCCCAGCGCTGTCCTATGCCAACGTTGCTTACCAGTCCGTCAGTCTGTTGCGTAAGACCAAGCTGGCTCCAGGTCAGATAGCGCTGTTTATCCTGTAAAGGGATAAACCAGCTTCCGCGACTGCCGTTAAAATGACCTTCGTTATCGACGTTAATATCAACGCTGGCGCTGCCCCAGGCTGATAGCCAGCTTTCAAGCTGCTGGTTAACCTGCTCGCTGACCACATCGCGTACCTGCCCGAAAGCGA [...]
+NODE	417	2114	120462	118045	0	0
+GTAAGTGTGTCCATCTTTATTCTCGCTTATACTGGGAACCTGAAAATTATCATGCTGATGGCGACAATGACACCCTGGTATCTGTATCTGATTCGTACTGCAGACAATGCGCTTTACACCGGAATAACCACCGATGTGGCGCGTCGTTACAGGCAGCATCAAACGGGAAAAGGCGCAAAAGCATTACGGGGAAAAGGCGAGTTAACGCTGGCGTTTGCGGCGCAGGTCGGCGATCGCTCGCTGGCCCTGCGCATAGAGTATCGCATCAAACAGCTCACAAAGCGCCAGAAGGAGCGCCTTGTGACGGAACGCGAAGCGTTTGAGGCGCTGCTGTCCAGCCTGCAAACGCCGGTGCTTAAAAACGATTGAAGTGGTCGTGATACTCCACCAGCCCCGTCACGCCTTCCAGCGCATCCTCAGCCAAACGGTGTACCTGGAAAGCGCTTTCCGTACCGGGCCAACGGCAGTGAAGATCGTAATGCGCGGCCAGTT [...]
+CGGCGTGACGCGGGCCAGTTGTTTTACCTGGTGAATCGACAGTACACGCGGCAGTACTACACGGTGGACATCAAAGTTGCGGTGATAAAAGCGAATCGCCTCTTCGTTGGTTGCCGAGGCCTGAACGGAAACATGGCGCTCAATATGCGGGTAACGCTCTGCGGCATATTCCAGCATAGCGAGGTCGGCGAGAATCAACGCGTCGGCGCCAAGCTGCGCCGCCATATCCACGGCGCGCTGCCAGCGGGCATAGCCGTCCGGATGCGCAAAAGTATTAATGGCGATGTGTAATTTGCGGCGATGCTGGTGAACAAAACTCACCGCTTCCTGCAATTTTTTTTCGGTAAAGTTAAGGCCGGCAAAATGACGGGCATTGGTATCGTCTTTTAACCCGATATAAACGGCGTCAGCGCCGTTTTCGATGGCCGCCTTCAGCGCCGGGAGATTTCCGGCAGGGCAGAGCAGCTCCATAATTTATCCTGAGGGTTACGT [...]
+NODE	418	5829	321132	316948	0	0
+CCGGCACGTCGCGCAGAAGCCTGGGCGCGTTTGGTTAAGGATCTGCCGGAATCGTTCTATGCTCAGGCCGCCACAGAGATTACGCTGGCGGATGCGCCGAAGTTCGCCGATGCCATCATCAATAATCAGGTTCAGGGCCGTACGCTGGTGAAGATAAAATAACGTCACGTATAAAAAAATTTACACTTAATTAACTATTTATTTTTACACATTGACACACTCCCTGTCATATTCACTACACGCCATGTTGTGGTGGGTAGACCGGGAGTCTGTGATGAAAAAGATACGTCCATTAACAGAAGCCGATGTGACTGCGGAATCGGCTTTTTTTATGCAGCGCCGACAGGTGCTAAAAGCATTAGGCATCAGCGCGGCCGCCTTATCCTTACCCTCAACGGCGCAGGCCGATCTCTTCAGTTGGTTTAAAGGCAACGATCGTCCGAAAGCGCCTGCCGGTAAACCACTTGAGTTTAGTCAGCCTGCCGCCTGGCG [...]
+TACTGAATATTAAATGTGGCAAGCAGGGCATATAGCACGCCGCCCACGATCATGGCGCTTAATGCGCCTGCCGCGTTTGCCCGCTCCCAGTAAAGGCCCAGTACCAGCGGCCATAAGAACACCGCTTCCAGGCCGCCAAACGCCAGCAGGTTGAGCCAAATGATCATCTCTGGCGGTTTCCATGCTGCCAGCAGCAACAGCGCGCCTAGCAGTAATGTAATCGCTGCCGACATACGCTTCAGCCGGATCTCATTTTGCATCTGATCGGGGCGCAGGTTGAGATAGAGATCTTTAATGATCGTCGCGGAACTTTGCAGCAGTTGGGCATTAATTGTTGACATGATCGCCGCCATTGGCGCAGCGAGGAAGATCCCGGCGGCAAACGGCGGCAAAACTTTCACCATTAGCGTTGGGATCACCAGATCCGGCACCGTCAGATCCGGAAGCACCGCGCGACCCAGCGCGCCGGCAAGGTGCATCCCGAACATTAAA [...]
+NODE	419	1827	85963	85651	0	0
+AGACGCCGTCTTTTTTAAACGTGGTTGCCGTTACGCATCCGTCGGCAATGCAGAGCTGCTCCTCGACGTTTTCCAGACACACCCCGGTATTTGCCAGCACGACCGTGTCGGGGACGGTCTCTTTTACCCGCTTCAGTATGGCGCTATCCGTGCGGGCGCCCGCCGTCAGCCCCGAGACGCACAGGGCATCGGGGTTATTGTTAAATACGGTCGATTTCGCAATTGAACAGACATCCCGGTTACCCAGATACACCGCCGCTTCCGGAACGATGTTAAACAACGTTTTCACGTGGCCTGCGCCGATGCGATGCTGATGGCGAATGGTTTCGCCGACATTCGTATCCCAGACGCCAAAATCGCTGGCGTAAGCGCCGGTGAAAATTTCGCGAATAAATTTTGCGTCGGTCGCCATCGCCAAATCAAACGAGGCCACAGGGTCCCACAACACGTTTACCCCAAACGGTACGCGGATTTCACTCATTAACTGACCGA [...]
+CCGTTATCTTTCTGCTTAACGTCGGTATGCTGGTGACTCGTCTGACCAAAACCATGAACGTTGATATTTATAACTACTGGCACTACGCCATTACCGGAACGGTCGTCCAGTTGATGACCGGCAGTCTGATTTATGGCGTACTGGGCGCGATTTGCCACGCCGCCTTGTCGTTGAAAATGGCCGACTGGACGGCGAAACGAGTACAGAACATTGTGGGTCTGGAAGGGATTTCTATTCCGCAAGGGTATGGCTCCAGTTCCGTGCCGTTGTTCGTATTGCTGGATGCGATATACGAAAAAATACCGTTTATGAAAGGACGCAATATTGACGCTCAGGAGATCCAAAAACGGTATGGGATGGTTGGTGACCCGGTGATCATTGGCGTTGTTCTCGGGCTGATCTTCGGACTTGCCGCAGGCGAAGGCTTTAAAGGGTGCGCAACCTTAATGATTACCGTGGCGGCGATTATGGTGCTGTTTCCGCGCATGATTC [...]
+NODE	420	1099	62801	62359	0	0
+GCCTCGCCGCCGATGGACGTCTTAAATTCGGCAAAGTGACCGCGCTGGCGGATCGGCTTGAACACAAAAACCGGGCGGTGCCGTATGCGCAGATCGCCAGTATTCGCACCCAGCGCGAGGAGGGTGCTGGCAGTTCAATGAGCTATCTGATGATTAGCACCGCTACGGGCCGGATCTGCAAAATCGACCGCTCCACTATCGTCAATGAGCCGCTGCTGCTCAACTTTCTTTCCCAGCGTTTACCCGCCTGACGACATTTTTATACAAGGATGAATCAATGGAACTGTACGTATCAAAAACCAGCCAGCAAAACATGCCTGTGGAGTTCAATATCTATTATTCCAGATCTAAAACGTTGGTTGGTATTGTGTTCTGGATTTGTATGATGGGAGTTTTTATTGCGCTGGCGGTGAGTATGGCCACCGATCCCGAGGAGCCCAAAACTGGCGGTGCTGTCTTTATGGGACTTATTTGTTGCGGCAGTCTGTTATT [...]
+CTTCGGCCATATGATTGTTGACTACACAACAACATTCGCCAATCAAATCTACATTGACACAGGTTCTTTCTGTTCAGGCAATCTGTCTTTTTTTAAAATAAAGTAATCTGGAAATAGAATTATATAATATCAACCCTCCCTGCATTATGGGCAATGATATAGCCTTCAATAAGTACCATTGCCCATTCGTAATAGCGTCTAAATTTCGCGTTTTTCTGCCCATTTCAGCATTAAGATCGCAGGCCAAAAAAACGAAGCCGTAATCCGACGCAGGTAGTTACTCGATCGCCTGAGACGAGTAAAGATCGCACAGCTCCAGATACCTATCGGAAGAAAGCGCAATAACCGTGGTGGCGAAATGGATCGGCTTGCCTTCATGCAACACAATCTTAATACCGGCGGCGGCCGGGATGAAGTTAATGCTCTGTGAATGCCAGGTGTTTTCGGCGATATTTGTCCAGGCCGCGAATTTGCCATTACAGAAGCGAATAC [...]
+NODE	421	2476	142273	141097	0	0
+GGTGGTGACCGAAGATGACTGTGGTACGCACGAAGGTATCCTGATGACCCCGGTTATCGAGGGTGGCGACGTGAAAGAGCCGCTGCGTGACCGCGTTCTGGGTCGTGTGACGGCGGAAGATGTGCTGAAACCGGGTACCGCGGACATTCTGGTTCCACGCAACACGCTGCTGCACGAACAGTGGTGTGACCTGCTGGAAGCAAACTCCGTTGACGCCGTTAAAGTGCGTTCCGTTGTATCCTGCGACACCGACTTTGGTGTATGTGCGCACTGCTATGGTCGTGACCTGGCGCGTGGCCACATCATCAACAAAGGTGAAGCTATCGGCGTTATCGCGGCACAGTCCATCGGTGAACCGGGTACACAGCTGACGATGCGTACGTTCCACATCGGTGGTGCGGCATCGCGTGCGGCTGCTGAATCCAGCATCCAGGTTAAGAACAAAGGTAGCATCAAGCTCAGCAACGTGAAGTCGGTTGTGAACTCCAGCGG [...]
+CGGGATTTTAGCAAAGTGGCTCTCAAACAAACATAATGTAATTGTCCCAACGCCTTATACATTCGGTCAGGCCCCCATTACTGGCGTCAATCTTTATTGTAATACAAAAGCAAAATTTGTTATGGCTAACGGCGGTAATAGTATTCCCTGCGCGATGGCAAAATATAATGCAAAAACTGGACAATTTATTCATATAACCAGTGATAATGATTTTTCACCAATAATACGAGAAACAAGAGTCATGAAAAAATAATTCATTTATTCATTAAATTTATAATTACAGATAAAATCAAGAGCCAGCATGGCATTGAAAAATAAAATACGGCTTTTTTATCCGCGCTGATTTTGACTCGAAGAAGAATAACGGTGGCGACAATAATAATAAGACAATAAATAAATATAAGTAATGATTTATGGTGAAGTATATATAACGATAGAAACAATAAAAAAGCGGACAGAACGTTTGAAATGGTTATCTTTTTTGTAAATACC [...]
+NODE	422	3547	184967	180975	0	0
+CAAACGCCGCAAAGCAGCGCAAACAGGCTGGCGCAAAAGCCAATCGTGAGGCTGGCAAGTAGGGCATCCCATGCCGCACCGTGCAGAGCGTTAACAAAGTGGTTCAGCGTGAAGCCACTCGGCAGAATACCGTTCCACTGCTGGCTAAGGCTGGACATCAGAATCACCGCCAGCGGCAGGAAAAAGAACACGATAAACAGTACGCTAGCCACAACGCCCGCCGCTGCGCGTCCTTTAGATGACCAAATTAGCATGGCTAGCTCCTTACGCCGGTACGTGATGCCGCCAGGCGATAGAGGGAGAACAGCCCCAGCGACAAGACAATGTTAATCAACGCAATCATGCAGGCGACCGTATAGTCAGACTCCAGAATCGCTTTGCTGTAAACCATCATCGGCAGGGTGTTAACTCCTTTCGCGCCAATAAACAGTACGATGCCAAACTCGTTAGTGGTCAACAGCAGGCACAGGCTGCCACCAGCCATCAGCGCCG [...]
+TATCGAATACTGGCGTCACGACAGCCTGCGTATTGAGGTAGATACCCACTAGCGGATGCGCCGGATGTTGGCTGCGGGACTTATCCGGCCTGTCAATCGTATCGTCTCACGGCTATCCGGATAAGCGCAGCATCATCCGGCGTGGACTGATTTATTTCTCTTTCATCGTTTTGTCATATAAGCCGTTTAGCGTAAAAAGCAAACCTGGTATAGGCCAGAAAATGCAACGTACGCTATGAGGCTATTACGATGAAACTTTCCCGACTTGCTCTGCTGTCTGTCTTCGCTCTCGCCAGCGCCCCGTCATGGGCGGAATCGGTGGTCACGGTGTACTCCATCGACGGGCTGCATGATGGCGATAACAGCTGGTACCAGGTACAGTTTGACGCATTCACCAAAGCGACCGGCATTACCGTACGCTATGTTGAAGGCGGTGGTGGCGTGGTAGTGGAACGTCTGGCAAAAGAGCGTACGAATCCGCAGGCCGACGTG [...]
+NODE	423	3971	182650	181734	0	0
+TGGTCGCTGACGCGGCTGACCGCGATGGCGGTAACCATGCTGCTATTGATGCCGTTTGCCTGGAGCGAACCGTTACTCCATATCTACCTGTTGGGCGTACGCATTGATGCCAATGTGATGCACGGCATCTGGCAAATGACGCAGCAGGGCGATCCGTTAACCGCCGCAATGGTGCTCTTTTGCGTGGTGGGCGCGCCGCTTATTCTGGTTTTTTCAATTGCTTATCTGTGGTTTGGCAGCCTCCTCGGCATGAATCTGCGTCCAGTCCTGCTGATGCTGGAAAAACTGAAAGAGTGGGTGATGCTGGACATCTATCTGGTCGGTATTGGCGTTGCCTCTATCAAAGTGCAGGACTATGCCTTTCTGCAGCCGGGCATCGGGCTTTTAGCGTTCGTCTCGTTGGTGGTTCTTAGCATTCTGACTATGATTCATCTGAATGTGGAGCAACTATGGGAACGATTTTATCCGCAGCGCCCTGCTCAACGTGCGGAC [...]
+GGAAATTTTAAGCGTATTGATGCGTATACTGCGGCGCAACGGGCGTTGGCAGGCCGAAATAAATTCATCAAAAGAGAGCGTGGAAGGCATTGCTTCACGCATTTGCGTCAGAAAAGCGTCAGGAAAATAGACAGCGTGTTGAGCCACAGGTGTATCGCCGGCAAAAAAACAGGCGCGCAGTGTAGCATAAAACGCTCCGGCGCGAGTACGCCGGAGCCTGGTGTTTAACGTGGCAGAGCGGTGCCCCATTCACGCCACTCTTTCGGTTCGCTCTCTTGTAACAGGAAATGCTTACCGGCTTGCGCTTTTGGCGCCAGCGGCGTACCTGGTGGAGTAGCGAAGGCGATACCGCCACGGATGAACTGATTAAATGTCCCCGTTTTCACCACGCCGCCGGTCAGACCAAAGTCGAGACTATAGCCGGAGGCGAGCCAGAATACGGAGTTATTACGCACCAGATATTGGTAACGCTTACTGATGCGCAAGGTGATC [...]
+NODE	424	10323	549474	541667	0	0
+GGTCACCGCCACAGCATTGCCGTCTTTATCCACCACCGAGAAGTGGGTGGTCTGGTTGCTTTCATACGGGGCGAGCTTGCCCGGTTTTATCTGGCTGGAAGGTTTGGCCTTGTTGATATCAATTTGATCGGCCAGCGTTTTCGCATAGGCTTTGTTGGTCAGCGCCTGCCACGGCACTTTCACAAAGTCCGGATCGCCCAGATACTCTGAGCGGTCAGCGTAGGCGTATTTTTCCGCTTCCGCCATGATTTGCATGGCATCGGCGCTGCCAAAGCCGTACTTCTTCATGTCGAAATTTTCAAGGATATTGAGAATTTGCACGATGTGAATACCGCCTGAGGATGGCGGCGGCATGGAGAAGACCTGATACCCGCGATAGTCACCGCTGATTGGCGAACGCTCAACGGCTTTATAGCTGGCTAAATCCTCTTTGGTCATCAGACCGCCGTTCTTCTGCATTTCTCCGGCAATCTGGTCAGCAATCGCCCCTTT [...]
+CGAAGCGCTCTCGTCTGCATATTTAAGTACCGAATATAAAGATGTCGTGTCGTTCGCTCTGCTGATTCTGGTACTGCTGGTGATGCCGACCGGTATCCTGGGGCGTCCGGAGGTAGAGAAAGTATGAAACCGATGCATATTGCGATGGCTCTGTTCTCTGCGGCGATGTTCTTCGTTCTGGCTGGCGTCTTCATGGGCGTACAACTGGAGCTGGACGGCACCAAACTGGTGGTGGATACCGCCGCCGACATCCGCTGGCAGTGGATCTTTATCGGTACGGCAGTGGTTTTTTTCTTTCAGTTGCTGCGTCCGATGTTCCAGAAAGCGGTGAAGCACGTCTCCGGACCGAAGTTTATTCTGCCGGCGATCGATGGCTCTACCGTTAAGCAAAAGCTGTTTCTGATGGCGCTGTTGGTTATCGCCGTGGCGTGGCCGTTTATGGTGTCGCGCGGTAGCGTCGATATCGCCACCATGACCATGATTTATATCATC [...]
+NODE	425	4406	203976	200320	0	0
+TCTTGAGCTGCTTTGTGGTTGTCCTTCCCTGGGCGATCGCCATTGCGCGACGCGAAGCCGATTTCTGGCATTACTTTTTCTGGGTGGAGCATATCCAGCGATTCGCCATGAGCGATGCCCAGCATAAAGCCCCTTTCTGGTACTATCTGCCGGTACTGCTCGCGGGAAGTTTACCGTGGCTGGGGTTACTGCCTGGCGCGCTTAAACTGGGCTGGCGCGAGCGAAACGGCGCATTCTATTTGCTCGGATGGACGATCATGCCGCTTCTCTTTTTCAGCATTGCGAAAGGGAAACTGCCCACCTATGTTCTTTCCTGTTTCGCACCGATAGCGATACTCATGGCGCGCTTCGTCCTGCATAACGTAAAAGAAGGCGTCGCCGCGCTGCGTGTCAACGGCGGGATCAACCTGGTGTTCGGGTTAGTCGGGATCGTCGCAGCGTTTGTCGTCTCCTCATGGGGCCCGCTGAAATCGCCGGTGTGGACGCATATCG [...]
+GACGCGGGGGTGGTTCTGCGCGACAGGCGGTTAAAAACTCGCGACGGGCTGTATGTTTGTCTGCGTGACGGCGAGCGTGAGGGATGGGGAGATATCTCTCCGCTGCCGGGCTTCAGTCAGGAAACGTGGGAAGAGGCGCAGATGGCGCTCCTGACGTGGGTGAACGGCTGGCTTCAGGGGAGCGAGGGATTACCGGAGATGCCTTCGGTCGCGTTTGGCGCAAGCTGCGCGCTGGCGGAACTGACTGGCGTCTTGCCGGAGGCGGCGGACTATCGCGCCGCGCCGTTATGCACTGGCGATCCTGACGATTTGGTGCTGCGGCTTGCCGATATGCCCGGCGAGAAAATCGCTAAGGTCAAAGTGGGTCTCTATGAAGCGGTACGCGACGGCATGGTGGTTAATTTGCTGCTGGAGGCGATCCCGGATCTGCATCTGCGTCTGGATGCGAATCGCGCCTGGACGCCGCTAAAAGCCCAACAGTTCGCAAAGTAT [...]
+NODE	426	9260	529100	526400	0	0
+TTGGCCGCTTCATACTGCTGGAGCATATCGCGTTCAGTGATTTCCAGCACGATATGAAAATGGTGCGCGGGCAGGGCGTCCCTGAGCCGGTGCATATCCTCTTTAAAACTGTCGCTGTGCAGATGTTCCGGCGCGATGTTAATGCCAAATTTGGCACCGACGGGCATCACCTTCTGTAGCGTGGGCGCGTCGCGGGCGATCAGCTCGAACAGATGCTGCGTTAACGGTACGATAAGTTGCTGCGCTTCGGCATAGTGGATAAAGGCATCCGGCGGAATCTCGCCTGCCGTAGGGTGACGCCAGCGCAGTAAGACTTCAAGCCCGGTGACGCTTAGCGTACGAGTATCGACGACGGGCTGATAAACCACATAAAACTGCTCGTGTTTGATCGCCGTTAAAATCTCTTTGCCCGGTCGCGTCCGGAGGGCATAGATAAAGTAACAGATAAACCCCGCTACGATGCCGCTAATGCAGCCCAGCATCAACGCATAC [...]
+CGCGGCGTCGGCGCTCAGCAGACGATCGGCTTTATTGTTCAGCAACAGGTCGCCGAGGCGTTTTAACACGGCAATCGGCTGCTCGTCGTTCATCGCGACAGTGACTAATAAGGCTGCTTTTTCACCCTCTACGTCAAACGCCTGGGTCGCACGGCTTACCGCAACAGCGCTGCGCAAATTGCCTTCCGCGCTGTCGTTCAGCCAGATGCCTTGTCCCAGATTCATCGGACTATCGTTAATCGTTTTTGCGACGAACGCCGCATCAACCGCTCCCGCCTCTTTCAGACGCGCCGCATTTAGCGCCTGCAATGTGACCAGCGAGCTGGCGATGACATCCAGCGTCATCGTCTCGTTATCAAGTTTTAATTGTTCACTTTGCTTCTCGCCCATCAGCAATGCGCGCAGCTCTTCCGCCGTTGTCGCGGATTTCAGCTGTTCAGCCACGGAGTCATCGCTCAGCACATGCGTCAGCTGACGCAGCAGGCCAAGGTG [...]
+NODE	427	11516	570144	565856	0	0
+TGCCATAAAGAAACCTGTATTGTTGTAAAAGATGAGAATATCACGCAAGTAAATTATCACTTTTATTTATTTGGCCGTTCAGGCCTGGATTATCTTTTTTACAATTAAGTTCCGAAACTTCTTCGGGACTCGATTGCGATGTTGTTCTGCCAAGAGGTGAAGGAAGGAAAATGCCGGGTACGGAAAAAACACAACATATAAGCCTGACCACACAGGTTGAAAATCGGTTAAAGCATCAATTGTCTATTGGCGCATTAAAACCAGGCGCAAGGCTTATCACTAAAAATATCGCTCAAGAGTTAGGCGTCAGTATTACGCCAGTGCGTGAGGCCCTGTTAAGGCTGGTCTCTTCCAGTGCTTTGGCGGTGGCGCCAGCACAGGCGTTTATGGTGCCGGAGATCTCGCTGGAAAGTTTGCTGGAAATTAATACGATTCGTACTGCCCTGGAGGAGATGGCGGTGGTCGCCGCTGCGGGTAAGATTACCCCGGATC [...]
+ATACCGTACCCTGCCGATGGTCTGGTACGTACCGCCGCTGTCGCCCATCCAGTCATACGCCGACGCGGGCGGGTTGCCGCACAATGGCAATATTCTGCCGGCGGTGGAGACGCTGCGTATTCCGGTCCAGTACCTGGCCAATATGCTCAGCGCGGGCGATACCGGTCCGGTCATTCGGGCGCTAAAGCGGATGATGGCGATGCGCCACTACATGCGCTCGCAGACGGTTGAAGGCGTGACGGATACCCGCGCGATTGACGAAGTGGGTCTGAGCGTACAACAGGTTGAAGAGATGTATCGCTACCTGGCGATTGCCAATTATGAAGATCGTTTTGTCATTCCCACCAGTCACCGGGAAATGGCGCGCGATGTCTTTCCGGAGCGCAACGGCTGCGGCTTTACTTTTGGCGACGGTTGTCACGGCTCGGATACCAAATTCAACCTGTTCAACAGTAGCCGTATTGATGCCATCAATATCACCGAAGTGCGTGA [...]
+NODE	428	3860	230080	227754	0	0
+GTTGAGCTGGGATGAGAAACGAGCAACTCATTAAGATCGATACGCTGCTCAATGTAGTCCGCTGCGGGGCTGGGGAATCCACACGGCACTAAGTAACTGAAAAATGGGAGAGGAATAATTTCGCGCAACTCTGTAGGTCTGAAAAATTCCATAATCCATACCTCGAATACTGTTTTTATATACAGTAGTATTATTTGAACATGCGCGCAAGATACCGGAGTCGCTACGGCTGTTTAAATCTTCGTCGCTTCGTTTGTAAGTTTCTCTCTCAGTTCAAATTATGGGTTTTGTAAATTTTCCGGTTGTATTGTCATGTGCGCATATTTAAGCCAGCCTGGAGGCCAGATTTTCTGTACAGCGTCGACAGTCCCGCAGCGTAAGTTATCGCCACGCGCCAGCGCGTTTCCCTCACAGCAATTAATCTTCTGCCCAGCGCCCATGTCTACAGGGGAACATTTCGGGCAACAGGCCGGGTGCGACGATGACCGAGGA [...]
+TGTTTCAACGAGGCGCATAATACTGGGCCGACTATAACGTGTCAACAGTAAAATTAACGCGCCAATTCAATTGGTTAATTAACCCACAAAGTGAGGAATTAATGTTCGGATTCCTCGCCGTAGTCGCCTTCGGCAGCGCTTACCCGTAAGCGCTGAGAAGGATCCTGGCGATAGAACTGGCAAAAACGCTGCCATAGTGCCGGGAAACGTGGAGCAAACAGTTCTGGCGCGCTGAAAAAATACTCTGACAACACGGCAAAACATTCTGCGGGGTCGGTGGCGGCATAGGCATCTATACTGGCAGCGCTTTCGCCAACAAGATCGATTTCATCCTGAATATTATTCATTGCCGCGTGGAGATCGTGTTCCCAGCCAGCCACATCGCGCAACGGGATGAAAGGGATGCCGCTGGCGCGATCGCCATTACGCATATCCAGTTTGTGCGCGACTTCATGAATAATGAGGTTGAAACCCGAAGCATCGAACGAGTCC [...]
+NODE	429	2557	137703	135157	0	0
+CCCGCCACAGCATCGTGGGCGAGCGTTACTATTTTGGGTAGCCGAATAATTTACCCATCAACAGCCTCCTCCGTAGATGTGCAGTTAAAAAATAATGATGCAATACCTTATATCGTACAAACCTGGTTTGACGATGGCGATATGAATACCAGCCCGGAAAATAGCAGCGCGATGCCGTTCATTGCCACGCCGCCGGTATTTCGTATTCAACCCAAAGCAGGCCAGGTGGTACGCGTAATTTATAACAACACGAAAAAATTGCCGCAGGATCGTGAGTCAGTATTCTGGTTTAACGTATTACAGGTACCACCAACGAATATTGGCAGCGACAGCGGGCAAAATAAAATGTTGGTGATGCTGCGCTCAAGAATAAAACTTTTCTATCGTCCTGACGGGCTAGGTAAACCTGATAGTCTGGCGAAAAAATTACAGATTAAAACGGTAAATAAGGGTTCCGGAAAAAGCGGTATTGTTATTGTTAATCCGCAGCCC [...]
+TGCCGGTCATGGATACGGTTGAGGAATGGCTTTGACTGGACTGGTTATAATTCATGGCGACAGACGTTCTGTTTTCGCCCCAATCCAGCGGTATAGAGACATTAAACGACATTGTGGTTTCGGTATATTTTTGTCGGCTACTCACGTCCAGTGGTTCGTTAACGCCGTGATAAAAGCGATCGTAATCCCAGGTGGTGCGCTGTCGTGCGATATTCACCCCGTAGCTTATATTCCGCCACTGGTTGCTATACCCCATTTGTAGCTGTGTTATACGCGATTGGTTATTGTAGTAGTCTGCGGTGCTGGCGCTGAGGTTAAGCGTACCAAGCCGTCCTAACGGCTGGCTTACCGTCGCGGACAGGCGATTGCGCTGATGCAGCGTGTCGGAGTAGTAATCAATCCCCGTTTTTGCTTCCCGGCGTACGCCGAGCACGTCCTGAAGATCGCGAAAGCCGTTGGTTGAATAACGATAAGCCGCCAGTACCAGGTTAG [...]
+NODE	430	1256	69344	68686	0	0
+CAAACCGCAATCGTTGATCAATTGGGATGGCTTTCGCACCTATAATTTCGATGTCATTGACGGCGTGAATTATCAAATCGATGTGTCACAGCCCGCCCGCTATGATGGCGAATGCCAGATGGTGAATCCGCAGGCGGAACGTATTAAAAACCTGACCTTTAACGGTAAGCCTGTCGACCCGAACGCTACGTTCCTGGTCGCCACGAATAACTATCGCGCTTACGGCGGCAAGTTTGCCGGCACGGGCGACAGCCATATCGCCTTTGCATCTCCGGATGAAAATCGCGCCGTGCTGGCGGCATGGATTGGCGCAGAGTCAAAACGCGCGGGCGAAATCCATCCGGCGGCGGATAATAACTGGCGTCTGGCGCCAATCCACAGCAATACGGCGCTGGATATCCGCTTTGAAACATCGCCAGGCGATAAAGCCGCTGCCTTCATTAAAGCGAAAGGACAGTATCCGATGAAGAAGGTTGCCGTCGATGATATTGG [...]
+TGGCGAACGGCAATCCCGCGCTGACTGAGCGGGGCGGCTTTTTTCGGGTTACGGACGATCGCGATGAGGTGACTGGCGGGCGTCGTTTTTAGCAGGTTTTCAATAACGTGTTGGCCCAGTTGGCCTGTTGCGCCAGTGATAGCAATCATGGTGAACTCCTCAGTGTTGGTCTTGTGTTTTATTACGCTACCACCTAAACTTACTTTTAGTAAGTACGTACAAAAAGGTAAGTATCAATGCGCGCTCATACTCTTTCCCGGCAGTTGCGTGAAGGCAATCTCTTTGCTGAACAGTGCCCGTCCCGTGAGGTGTTAAAACATGTCACCAGTCGCTGGGGCGTACTGATTCTGGTGGCGTTACGCGACGGTACACACCGTTTTAGCGACCTGCGCCGCAAGATGGGAGGCGTGAGTGAAAAGATGCTGGCGCAGTCGTTACAGGCGCTTGAACAGGACGGATTTCTCAACCGGGTGTCATATCCAGTTGTTCCGC [...]
+NODE	431	2742	141495	140398	0	0
+AGGTGTGGCATACCGATATGGCGATAAAGGCGGAGTTTGATGTGGCCCGTCTGCATGAGCTGAACAGACCGAACATTACCCTTGGAAAGCCCTTTATCGTCGTGGGCGTCGGCGATGCGCGCGGTATCAGCGCAGTAAAAGCGCCGCAGGTGAATGGTGAAACGCTCACTGTAGAACCGGGGACCGGCTTACCGGAAAGTAGAGAGGGCATTCATATCCCGCTGCCGGACAGTCAGTGGGCGACGCGCAACCTGACGTTGGCGATGTCGCTAAATTTAAGCGGAACCGGCAGCTTTTCACTGGTTCCCGTCGGGCGTAGCAGTGAAATGACCCTGACCAGCAACTGGCCGCACCCAAATTTTGTGGGGGATTTTCTTCCCGGTAAACGCGCAATCAGCGGTTCGGGATTTCAGGCCCAGTGGCAAACCAGCCGGTTTGCCACGAATCTCGGCGAACAGTTTGCTGATGCGCAAAAGGTGGATTGGGACAACT [...]
+CTCGATCAGCGCGGCATACAATACCGCAGATGCCGTAGACATTAACGTTACGGGATTAATTTATGCCGATCCGTGTACCGTTACGGTACCTGACACGATCTCTCTTGGACAATATGCCCGGGCGGATATCGCCGTGGCCGGCGGCAATACCGCCACCATTCCTTTCACCATAAAAATGACGAATTGCCCGGCAACGACCACAAAAGCCGCGATTTCATTTAACGGCGTACCTTATCCCGATCCAAATTATGCTTCTGCGATTTATGCAAACAGCGCGGCCAATCCGGCGCAGGATTTAGGATTACAGCTTTTTAACCTGGACGGTAAAAGTCTGGTCAATCTGGCCAACAACGTCACTTACACGGTGGATATCAACAGTAATACCCATGAAGCCAATTTGCCTGTCGCCGCAAGGATGTATACCCCGCACGGAAAAGTCACGGCAGGGGATTTCACGTCCGTTGTGACGATCACTATTGCATGGCAATAACA [...]
+NODE	432	1648	76765	76352	0	0
+TGGGCGACGAGGCTCGCGCTCTTGCTATGCAGCGTGTGGGCACCGAAGGCAGCAGCGGCATCTCCAGCCCGCGCCGCTACCTGTGGGATGAAACCCCCGCCTTGCAGGACTGGCGCTTTAGCCAGATCCACGGTAAAACGCAGCGCGAACCGCTTGCCACCGCGTTTCCGCTGATGAATCTGATGAATGACGACGGACAGCCGTTATTCCGCCTGCCGCATGAAGAAAGGCTACCGGTTTTTTCGCCGCAATACAGTCGTAGCACCTTGATGACGCATATGTTGTGCGAAATTCTGGCTCAGGCGCTGGGGCAAATTAACAGCGTCGCCACCCGGCTGCGGCTCGGCTTTCCCGCCTCGCCGCGCCAGCTACGCACCCTGATTTTAACGCTGCCTTCCGCCATGCCGAAACAGGAGCGAGAAATTTTCCGCCAGCGAATGTTTGAAGCGCTGGCGCTGGTCTGGAAAGCCATGGGCTGGCATCCGCAGGATG [...]
+AACGGTATTATCCAGTACGCCGAGATAACGCACAGTCGAATACGCGCCGATATCAGCCGCTTTAAAATTGAAACGCGGCAGACGTAAGTCCAGCGCCAGGCTGCATAACATCGCGCCCACCGCGGCAGTGGATTTTGGATTACCGATACGCCCTTGTTGACTGAAGGGATACCATTCATGTACCTGATACTTATCCATCCACACAATGCGATTAACCGGCACCGGTTGTAAGTGCCGGATGAGCGCCTGTACGCCGGGTAAACAGGTCGGTCTCCCCGTCACCAGCAAGATATCGCAGTGATAGTGGGAGATCGCTTCGCAAACCGCATGAAGCGGCGTTGTCAGCGTAAACTGACCGGCCAGCAGAGCCTCCTGAAGCTGGCTAAACTGGATTTGCAACGGCACATTGAATATATCAAATGTCGGCGAACCAGACGGTAAGGCATGATCGATCGCCTGCTGGATATAGTTCATCACGTTGCTTGTTGGGCG [...]
+NODE	433	9142	535711	523546	0	0
+AATTTCGATTAGCTAACTGCTTGTTTAAAAAGGCGCTACTCGGCATGGGGAAGCGCCTTTTTTATACGCATCACATGGAATTTGGTCATGAAAGCGGAATGTGAACCTCAGTACTTTGGCGATGAATCGAAGAAGATTATTCACGGTGACGCGCTAACAGAACTTAAAAAACTGCCTTCTGAAAGCATTGACTTAATTTTTGCCGATCCGCCTTACAATATCGGAAAAGATTTCGACGGTATGGTCGAATCCTGGGACGAAGCGTCTTTTCTGGCCTGGCTGTATGAATGCATTGATGAGTGCCACCGCGTACTGAAGAAACACGGCACCATGTACATCATGAATAGCACAGAAAATATGCCGTATATCGATCTCAAATGCCGAACGCTTTTTACCATCAAAAGCCGTATCGTCTGGTCCTATGATAGTTCCGGGGTGCAGGCGAAAAAATACTTTGGTTCTATGTATGAACCGATCCTGATGATGGTAAAG [...]
+AATGCAACTGGAATTAGTCTTTTCATGGTGTTACCTCATTAATCAGCGTTTCGCGAAGTACAGCAACGTAAATGCTGGCTCTAACCGCTGCGAAAACGAGAGTTATTTTACCACCACAGAAAAAATGGCCGACATGAGGAATCATCTCAATTCATGTGAATTGTAAAAACTATGGAGAATGCAGAGGTAAGCGGAGAGGGGGAATAGCGGAGATAAAGACGTACCGTTTAAAAAGGCGTCCGAAGACGCCTCTGTTTACCGGTTAATCATGATGGCGATTAAATCGGCGTTTTACAACAACGAAGAATACTGGCACGAAGAAAATAGCTAATAAAGTTGCGGTTAACATTCCCCCCATAACCCCTGTGCCTACTGCGTTCTGTGCACCACTACCTGCGCCACGACTGATAACTAACGGCATTACCCCGAGAATAAAAGCCAGCGAGGTCATTAGAATAGGACGTAAACGCATACGGGATGCTTCCAGCGTCG [...]
+NODE	434	81	2975	2970	0	0
+TGTAACCCCGCCCGATGATAGCGGCGATGATGATGTGACCCCGCCCGATGATAGCGGCGATGATGACGACACGCCCCCAGA
+ATCATCGCCGCTATCATCGGGCGGGGTTACATCGTCATCGCCGCTATCATCGGGCGGGGTCACATCGTCATCGCCGCTATC
+NODE	435	680	43949	43949	0	0
+TTTAAAAAATCGACGCAACGCTCAGAACACTCCGTCTCGGTCACTAATACTCCATCGTAAAACATCTGTAGTAGTAACATATTTTCTTGATACGCTAATACTTCTACAGTGTATTTATCTCTTGTTTCAGGCCTGGAGGCATCAATAAGTTTAATATATCCAAGAAGGGGGCGCCATCGTGTACAGTCTTCATCTCGCTTCGAAAATGGTCCTGGAGAGAAAGGCCCTTTAATATCGGGATGCTCGTTTTTTTGGCACAGTAGATTATATATTTCTCTATAGTCAGAAATTAAACTTCGCTTGGTGAATATATTCCTGAAAAAATCTATAAATTTCTCACACGTTGAAAAAACATGCTCTCTTTTATTATCGATGATATCTCTTAAATACCTTTCTGATATCTGGCAACTATGATTTCCGATCTGAAATGTAAACGGCATATGTCTCATCCTCTGAAAATTTATTATAATATACATGCAAACATATAAAAAC [...]
+ATGTAATTTTAACCAGCAAATGCTTAACAAAAATAATTTCTTTTTTAGGTGCTGAAGGTTTTCTCTATTTATTGATGCAGAGTAATACTGAATATGAAAAATTTTGGAAATCAGGTGATTACAGTAGTTACAAATCAGGTTTTTATATGTTTGCATGTATATTATAATAAATTTTCAGAGGATGAGACATATGCCGTTTACATTTCAGATCGGAAATCATAGTTGCCAGATATCAGAAAGGTATTTAAGAGATATCATCGATAATAAAAGAGAGCATGTTTTTTCAACGTGTGAGAAATTTATAGATTTTTTCAGGAATATATTCACCAAGCGAAGTTTAATTTCTGACTATAGAGAAATATATAATCTACTGTGCCAAAAAAACGAGCATCCCGATATTAAAGGGCCTTTCTCTCCAGGACCATTTTCGAAGCGAGATGAAGACTGTACACGATGGCGCCCCCTTCTTGGATATATTAAACTTATTGATGC [...]
+NODE	436	2069	102436	100947	0	0
+GGACGTCTGGAGCGGGGGCTCGACCTGACCGCAATGATGGCGCAGGGCATTACGATGGGAGATGAATTCCACCAGCGCAATATCGCCTCTTCCGCATTGCTGATGCGCACGTTGGCGCCGCATATCGCCCGTCTGGAACACGATAAGCAGCAGATAGCGGAAGTAATGGATTTTCTGAGCGTCACCGATCAATTCTTCCTTAATCTGGCGATGGCCTACTGTAAAGCCGCCATGGACGCAGGCGCGCAGATTCGCGCCGGCAGCATTGTGACGGCGATGACCCGCAATGGCGATATGTTTGGCATTCGGGTTAGCGGTCTGGGCGACCGTTGGTTCACCGCGCCTGTTAATACGCCGCAGGGGCTATTTTTTACCGGTTTTTCGCAGGATCAGGCCAACCCGGACATGGGCGACAGCGCCATTACTGAAACGTTTGGTATTGGCGGCGCAGCGATGATTGCCGCGCCTGGCGTAACGCGTTTTGTCGGTGCC [...]
+AGCCATAAGTCGCTTCCAGCGCCATTTGCTCTTCTGGCGAATAAACGGGGCCAATAAACTTTTCCGGTTCAAGAAAAGCAGGATCGTCCGCCGATACCTTTATCCGCGTTAATACCGCAGTCACCGGCGGCATATCGGGTTCAAGCGCCAGACGCTGCGCCAGCATATAGCCGATCATGCCCTGACTTTCCGCTACCAGCACATCCAGCGGATAAGGCTCAACGGCTTTCCAGGCAAGGTTCTGTAAAGCCAACAGGCCGACCTGGGGGCCGTTGCCATGTACTATCGCCAGCCGATACGAGCGGGCAAGTCGCGCCAGCGCAGGCACCGCGTCGGCAATATTGCGATATTGATTCTCTGCCGTTAGCGCTTCTCCGCGCTGCAATAATGCGTTGCCGCCAAGAGCAACTACCAACGTTTTCATTCCCTATCCTTTTACTATTTGTTGTCCAAGCCAGAACCCCAGCAGCGTATCCGCGCCAGAGGTGTGCC [...]
+NODE	437	2713	129362	125860	0	0
+TTCGAAGCCTGGATTGGCGACGACGACCCCAACCCGCTACATCGTGAAATGGCCGTTGCCATTAAATCGCTGGTTGATTCCGGCGTCCCCTGCTTCTTTATTCACGGTAACCGTGATTTCCTGATTGGCAAACGCTTTGCCCGCGAAAGCGGCATGATTCTACTGCCGCAGGAAAAAGTGCTCGACCTGTATGGCCGCCATGTGTTGATTATGCACGGCGATACGCTCTGTACCGATGATGCCGGTTATCAGGCGTTTCGCGCCAAAGTCCATAATCCGTGGGTTCAACGGCTGTTCCTTACCCTGCCGCTGTTTATCCGCCGCCGTATCGCCGCCAGAATGCGCGCCGGCAGTAAAGCCGCCAATAGCAGCAAATCGCTGGATATTATGGACGTCAATGCGCAGACCGTCGTCGCCGAAATGGAAAAACACCGCGTACAGTGGCTGGTTCACGGTCACACCCACCGCCCGGCAGTGCATGAACTTTCCGTC [...]
+TACCTGTTGCCGGCGAGGGCGAAGGGGTCGAGGCGGTGATAGATAAAGACCTGGCGGCGGCATTGCTGGCGGAGCAGATAGCGGCCGATGGTCTGATCATTTTGACGGATGCGGATGCGGTGTATGAACATTGGGGAACGCCACAACAGCGCGCTATTCGTCAGGCTTCGCCCGATGAGCTGGCGCCGTTTGCCAAAGCCGATGGCGCGATGGGGCCGAAGGTGACCGCGGTAAGCGGGTATGTGAAGCGGTGCGGAAAGCCGGCATGGATTGGCGCATTGTCGCGTATTGACGATACCCTGGCGGGCAGAGCGGGAACCTGCATCTCTCTGTGATCGCGACGGGCGGCGACAGAGAATGCGCCGCCCACGCTGTTTATTTAAGCTTACTTTGCGCCCAGATAATGCCGCTGGCGTATTCGCCCGGCAGGAGCGGAGAGAGCGCTTCCAGGGTGGCGCTAAGACGTGACGTATCGCTGTCGGTCAGATTCAG [...]
+NODE	438	658	34118	33723	0	0
+CGTAAACCCGGCTGGATAAAGCGCGTCTGGCGATGGTGGCGCAGCCCCAGCCGCCTGGCGTTGGGGACGCTGCTGTTAATCGGTTTTATCGGCGGCATCATCTTCTGGGGCGGCTTCAATACCGGAATGGAAAAGGCTAACACCGAAGAGTTTTGTATTAGCTGCCATGAAATGCGCAACACGGTGTATGAGGAGTATATGGAAACCGTCCACTACAACAACCGTAGCGGCGTTCGTGCCACCTGTCCTGACTGCCATGTGCCGCATGAGTGGGGGCCGAAGATGATCCGTAAGATCAAAGCCAGTAAAGAGCTGTACGCGAAGGTATTTGGGCTGATAGATACACCGCAGAAATTTGAAGCTCATCGCCTGACAATGGCACAAAATGAGTGGCGGCGCATGAAAGACAACAACTCGCAGGAATGCCGTAACTGCCACAATTTCGACTTTATGGATCTGACCGCGCAAAAAGGCGTCGCGGCGAAAATGCAC [...]
+TCCCACTCATCAACGTCCTGTCAGAAACCTGGTTTAACATCACGCATATCCGGCAGTTTATGCGCGATCCCTTTGTGGCAATCGATACAGGTCTGTCCGTCTTTGACCGCCTGATCGTGCATTTTCGCCGCGACGCCTTTTTGCGCGGTCAGATCCATAAAGTCGAAATTGTGGCAGTTACGGCATTCCTGCGAGTTGTTGTCTTTCATGCGCCGCCACTCATTTTGTGCCATTGTCAGGCGATGAGCTTCAAATTTCTGCGGTGTATCTATCAGCCCAAATACCTTCGCGTACAGCTCTTTACTGGCTTTGATCTTACGGATCATCTTCGGCCCCCACTCATGCGGCACATGGCAGTCAGGACAGGTGGCACGAACGCCGCTACGGTTGTTGTAGTGGACGGTTTCCATATACTCCTCATACACCGTGTTGCGCATTTCATGGCAGCTAATACAAAACTCTTCGGTGTTAGCCTTTTCCATTCCGGTATTG [...]
+NODE	439	174	70657	66997	0	0
+GCACCATTTTGCCTAGTTCCTTCACCCGAGTTCTCTCAAGCGCCTTGGTATTCTCTACCTGACCACCTGTGTCGGTTTGGGGTACGATTTGATGTTACCTGATGCTTAGAGGCTTTTCCTGGAAGCAGGGCATTTGTTGCTTCAGCACCGTAGTGCCTCGTCGTCACGCCTCAG
+TTCCAGGAAAAGCCTCTAAGCATCAGGTAACATCAAATCGTACCCCAAACCGACACAGGTGGTCAGGTAGAGAATACCAAGGCGCTTGAGAGAACTCGGGTGAAGGAACTAGGCAAAATGGTGCCGTAACTTCGGGAGAAGGCACGCTGACACGTAGGTGAAGTGATTTACTCA
+NODE	440	4615	245716	241615	0	0
+ACTCATTAACTGGCTTTTATTTTCGACGAATTTGGGCGGGTCCATGATGATGACGTCGAATTTTTCGCCGTGTTCACGGTAAGCGCGCAGCAACTTAAACACGTCATCGCGCACGAATTCGGCTTTGCTCAAGTCCAGTTGGTTCAGTTCAACGTTTTGCCTGGCGATATCCAGCGCATCCTGTGAGGTATCCACGCTGACAACCTGGCGACAACCGCCCATTAATGCCGACACGGCAAAACCGCCGGTATAAGAGAAGCAGTTCAGTACCCGCTGATTTTCCACGTAGCGGCGCGTCGCCAGACGACTGTCGCGCTGATCAAGATAATAACCGGTTTTGTGGCCGCCCTGGATATCGACCAGCAATTTCATACCGTGTTCTTCAATTGGCAGAAGCGCAGGCGGCAGTTCGCTAGTGACCGGGCCTTGCGTCAGCGCCATCCCTTCTTTTTTCCGCACGGCGACGTCGCTGCGATCGTAAATAGCGCAATC [...]
+GTTTAGAGGTTCGGAGACTAAAAATAAGGATATGAATGGGAATGGATTGGGAGAGAATTTTCGCCGGAATATACCAACTGAGTATACCAAGTCTGTACCAACACCAAAAAAACAAAGGGGTTAGCATTAAGCTAACCCCTTGTTTAATCTGGCGGAAGCGCAGAGATTCGAACTCTGGAACCCTTTCGGGTCGCCGGTTTTCAAGACCGGTGCCTTCAACCGCTCGGCCACACTTCCGGAATGAGGCGCACTATAAACATCCCGGTGCGTCATGTAAAGACCGAATGTGTTCGTTTGCGTGAAAAACAGGCAAAATTTCGTTAATTGCCTGAAATAGCGGCACATTGACCATTTCTTCAACACAAAAACTGGCTGAATACGTGTTGATCGTCCCCACTGTTTTACCGCTGTGATTATCAATTTTTTATCGGTAACGCGTGGTTGGCGCTGCCGCCTGTTTTATGGCGTAGCGCCAGGCATGAGAAGACCGTT [...]
+NODE	441	47	2178	2178	0	0
+AGCACCAGGCGCGGGGAAACGGTTTTGGCTATGGCATGGTTTATCCT
+TCGCGTAGCGATATAAATATTTCCACAGCACCGGCGTCAGGATATAT
+NODE	442	10443	520181	516675	0	0
+GTAACAGTTCACGCGCTTCATCGCGTTCATGTGCCCGCTGGCGCAAGCGCCATAATCGCCGCCACTCCGTGACCACCGATCCCACGCCAGCGCCAACGATCAGCGCGCCTGCGGCACAGCCGCCTAAAGCGACCCAGTCCTGAGTTTGCCAGGCATTCATTGTCCACTGTACGCCTTGCCCGACCACGCTCGCGCCAAACAGCGCCAGCCCTCCCATCACCATTTTACGCCACAGGCTGCGTTTGGGACGCAGCGCGGCATCGACCGCCGCTTCTGCCACGCCTTCGTCTTCCGGGCGCTCATCGATAGCTGCAGGCGCAAATGTACGCGACTCCGCTTCGCTGAAAGTTTGCTGCGCTTTGAAGGCCGACGTAGGCTCCTCCTTTAGCGGTTCTGCAAAATCAATACGCGGTTTTAACGGTTCGCTCATCGCAGCTTATCTCCTATTAAAAACTCCAGCGCAGCGTCCAGACGAATATGCGGTAACGGTTT [...]
+TCATGTAGCGGAGAGGCGAGCACATCGGCGGTGCTGCCGCGTTCAACCACTTCCCCCTGATGCATCACTAATACCTGATCGCTAATATGCTTCATCATGCCGATATGCTGCGTGACATAGATATAGGAGATGCCTTGTTTTTCCTGCAATTCAAGCATCAGATTGATGAGCTGCGAGCGCATGGACATATCAAGCGAAGCCAGCGCTTCGTCCGCGATAATGACTTTAGGGCGTAAAATCAGCGCGCGGGCCAGGCCCAGACGCTGTTTCTGCCCCGGCGCCAGCATATGCGGGTAGTAGCTCACGTGATCGGGCAATAGACCCACCATACGCATCGTCTCGACAATCTGTTTGCGCCGCTGTTCCGGCTCCAGATCGGTATTAAGGCGCAGGGGGAAGTCAAGGATCTGCGAAATACGTTGACGTGGATTCAGTGACGTTGAGGGGTCCTGAAAAATCATTCGAATACGTTGGCTTCGAAACGAATAGTCG [...]
+NODE	443	104	5116	5116	0	0
+TGGCGGAAGATTACGCTAATCGCCTGCGTAAAAATCTTAAAAAGCTGGAGAAATGGGCGCGCCAGGAAGGGATTGAATGCTATCGCTTGTATGATGCCGACCTG
+ATTTCTCCAGCTTTTTAAGATTTTTACGCAGGCGATTAGCGTAATCTTCCGCCACCGTCGCCGGCTTACTGTCCGCCGTGGTTTCCGCAATATGATAGTTTTTC
+NODE	444	14766	859277	851284	0	0
+AAAACCCCCACCAGATAATACAAAACACGCCTCCCGTGGCTGGCCGTCAGGCCCCGAAGCATTTATTCACCCAGAATGGTGTGAACATTGGCCAGCAGGTGAGATGAAGCCACCGGGGTGGTGTCAGGTTTGTGGTTGTTAGTTTTTTACAGAAAACTATATCAACCATATCAGGACTGAGGGTATATCAGGCTATTATGTTTCATCAGCTCATCCTGAACTGAATATTATCTCAGGCCGGTGTGTTTTATTAACGCCAGCCTGATTTTTCACAACGTTATATTGCTGGCTTACAGGCCTATCAGGCCAGTCAGGTTTTGATGTGTCCACACGGTTTACCAACACCCTGTATTTTTCCATTCATCGCTCATCATCTCTTGCCATCAATGACAGTATTGCGTTCTTTCCCGTACGTTCCTCTCCCGACCTGTCGCATGGTCCAGTACATGGCAGTCCTCTTCCACCTCGCTACATCTAATTTTTTGTTTTTAA [...]
+TCTGGCGGCTGGCTCAACGTGGCATAACCGTATCCGGCAATAAACAGCAGACAGGTAACGGAGAGGATCAGACGAAACAACGTCGGGGCAGGATTATAGAGCATCGGGACGCTCCAGCGATCGATTAAGCACCACCACAAGCCAGGCTGAAATCGTATTTCCGGCAAACACTAATAGCGTACAGAATAAAACGATCCCCATAAGTAGCGGGACATCGCCACGCAGGCCGGCATCGATAGTGGCCTGTCCCAGCCCCGGATACGCAAAGACTTTTTCTGCCAGTAACGCTCCCCCCATCAGTTCGCCCAGAGAAGCAAACTGTAAGCAGAGCGCTGGGGTAATCGCATGACGTAACACCTGGTGACGTAACAGCGACCATCCTTTATCCCCCTGAGCGCGCGCAAAACGAATAAATTCGCTCTTCATTACGCTGGCTATTTTTTCTCGCGTATGCAGCGCAATTTGCCCCATGCCCAACAGACTTAACGCACA [...]
+NODE	445	1490	76947	76344	0	0
+GAAGGTTTTGCGCGTCTGTCCCTCGGCGGCGGTAAGATCTTTTCTCAGATGGCTGAACAGCAATTCCAGCGCTTCTTCATTACGTCCGACCTGGTGCAACTGCAACGCCAGTTGCGTTGCCAAAGCCGCATCCTGCGGATTCTCCGCGACTTGCTGCTGAAGTTGCTGAATTTCCGGCGTATCCGCCGCCTGTTTAAGCAGTTCGATCTGCGCGACCAGCCCCTGATAACGGGTATCCTGATCCTGTAGCGGGATAGTTTTTAACACCGCTTCGGCCTCTTCAGAGCGGTTCAGCGCAATTTGCGCTTCCGCCAGTAACAGGCCAATCTCACCGTTCTGCGAAGAGAGCTGCCAGGCGTCTTTGAGCAACGGCAGCGCGTCAATGTAGTTGCCCTCCTGCATTAACTGCATCGCTTGTTGCGCTTTTAGCTCTTCTTCACGCGGCAGTACTTTATCCAGCAGAGCGCGGATCGCCTCTTCCGGCTGCGGCCC [...]
+CTCCCCTGAAAGCGTGGATCGTGCCGCCGATGAAGTGATCGCCCTGACCGATAATCGTCTGTATGGGATCTTTAACAATGCCGGCTACGGCGTGTATGGCCCCCTTTCTACCATCAGCCGTGAGCAGATGGAGCAACAGTTTTCCAGTAATTTTTTCGGCGCGCATCAGCTTACCATGCGCTTACTTCCCGCCATGTTGCCGCATGGCGAAGGACGCATTGTGATGACCTCATCGGTGATGGGGCTGATTTCCACCCCAGGGCGCGGCGCTTACGCCGCCAGCAAATATGCGCTCGAAGCCTGGTCTGACGCGCTACGTATGGAGCTACGGCACACAGGCATTAAAGTGAGCCTGATAGAACCGGGGCCGATTCGTACCCGTTTTACGGATAACGTTAACCAGACGCAGCGTGATAAACCGGTAGAAAATCCCGGCATCGCCGCACGTTTCACCCGCGATCCTGACGCGGTAGTAGCGAAAGTGCGTCATGC [...]
+NODE	446	905	47845	47736	0	0
+ATCATCAGGTTTGCGGCAGCCCGCCAGGATTTGAAAGCCCTGGCGTTTAAGCTCAAGCGCGCTGTCCAGACCGATTCCGCTGGAACATCCTGTTATTAAGACCGATTTTTGCATAACTTTACCTGTCAGGATCTCCGTTGATTTAAGAGTCGTGGTTAACTATATCCGTCATACTTCAAGTTGCCTGTGCGTTCGTTTACTCCAGTCACATAGGTATCTATGCTCCTGGAAATTCTCTTACGTGCCGCCTTCATGCAACTCGAATTATTCAGGAGAGAAAAGGGGTCAACTGCTTCGCCATCCAGTCGGCAATAAACGGCTGGGCGTCGCGGTTGGGATGAATGCCGTCATCCTGCATCCACTGCGGTTTCAGATATACCTCTTCCATAAAAAACGGTAACAGAGGAATATCGAACTCTTTGGCGAGCTTAGGATAAATGGCGCTAAAGGATTCATTATAACGGCGACCGTAGTTAGCGGGCAGATGAATTT [...]
+ATTTGCCCTTCCTGTTTTTGATCCTGTTAACTTTCCGTGCCGCCGCCGCAGACACCTTATTAATTCTGGGCGATAGCCTCAGCGCCGGTTACCGTATGGCCGCCAGCGCGGCATGGCCGTCGCTCCTTAATGATAAATGGCAAAACAAAACGTCGGTCGTTAATGCCAGTATAAGCGGAGATACCTCGCAGCAGGGACTGGCGCGTTTGCCGGCGCTGTTGCAACAGCATCACCCGCGCTGGGTAGTGGTGGAACTTGGCGGCAACGATGGCCTACGCGGTTTTGCGCCTGCGCAAACCGAACAGACGCTACGTAAAATCATTCAGACGGTGAAAGCCGCCGATGCCCGACCGTTACTGATGCAAATTCATCTGCCCGCTAACTACGGTCGCCGTTATAATGAATCCTTTAGCGCCATTTATCCTAAGCTCGCCAAAGAGTTCGATATTCCTCTGTTACCGTTTTTTATGGAAGAGGTATATCTGAAACCGC [...]
+NODE	447	427	27187	27164	0	0
+ATACCACATATCTGCGAAGGCAGCTTTCGGCATATCCGGATGACGCACCAGATTATGTGGCTGCGCCAGTAACTCGTTTAACTGATAGCCGCTCACCTGGACAAAAGTGTCATTGGCGTGAGTGATATAGCTTTCCAGGTCGGTCGTAGACATCAGAGTGGTATCATCATCCAGCGGGGTATTTAGCTGGCTGACGTAGGGATGAGAAGACATGATAGCGTCCTGTGCAGGTTATCTGGATGTTAATTTTTCGCTCAGATGTTATTTCGGCGCTAATCTATTTATCTTTAGTTGTTAAAATTGCTCTGGATCGCAATTTGCGATTAATCCTTAATATTTGTACGATTTTTACCTCATCCCGCGCCTTATTTTCATTATGAAATTGTTTAGCGTGGACAACCTTTTTCTTTAAAATCTACCCTGGCTC
+TAATGAAAATAAGGCGCGGGATGAGGTAAAAATCGTACAAATATTAAGGATTAATCGCAAATTGCGATCCAGAGCAATTTTAACAACTAAAGATAAATAGATTAGCGCCGAAATAACATCTGAGCGAAAAATTAACATCCAGATAACCTGCACAGGACGCTATCATGTCTTCTCATCCCTACGTCAGCCAGCTAAATACCCCGCTGGATGATGATACCACTCTGATGTCTACGACCGACCTGGAAAGCTATATCACTCACGCCAATGACACTTTTGTCCAGGTGAGCGGCTATCAGTTAAACGAGTTACTGGCGCAGCCACATAATCTGGTGCGTCATCCGGATATGCCGAAAGCTGCCTTCGCAGATATGTGGTATACCCTAAAACAGGGCGAACCGTGGAGCGGCATTGTGAAAAACCGGCGTAA
+NODE	448	41	2187	2027	0	0
+ACCTTTTTCTCACGCCGCCGCTAACGCAACACACCGTAAAC
+TAGATTTTAAAGAAAAAGGTTGTCCACGCTAAACAATTTCA
+NODE	449	354	21578	21430	0	0
+GACGCGATGTACAAAGTTGGCGTTATCATGCAGGACAAAGGTGATACGGCAAAAGCGAAAGCGGTTTATCAGCAGGTGATTAACAAATATCCTGGCACTGATGGCGCGAAACAGGCGCAGAAGCGTCTTAACGCGATGTAATGCGTACCATGCGACCAGAAAACGCCTTTTTTCTGGTCGCGTCGTGCGATTCCTAAGCAGTTGAGCCCCCTGCGTCGAAATTTTTGTTGCGCTCAAATCTGAAATCAGTAATATATGCCGCCGTTGCCACGGGATATTAAACAACTCGAAAGCAACGCAAAAGTGGGTCGTTAGCTCAGTTGGTAGAGCAGTTGACTTTTAATCAATTGGTCG
+CTTTTGCGTTGCTTTCGAGTTGTTTAATATCCCGTGGCAACGGCGGCATATATTACTGATTTCAGATTTGAGCGCAACAAAAATTTCGACGCAGGGGGCTCAACTGCTTAGGAATCGCACGACGCGACCAGAAAAAAGGCGTTTTCTGGTCGCATGGTACGCATTACATCGCGTTAAGACGCTTCTGCGCCTGTTTCGCGCCATCAGTGCCAGGATATTTGTTAATCACCTGCTGATAAACCGCTTTCGCTTTTGCCGTATCACCTTTGTCCTGCATGATAACGCCAACTTTGTACATCGCGTCCGCAGCCTTCGGCGACTTAGGATAGTTTTTTACTACCGAGGCGAAATAAT
+NODE	450	17	5671	5165	0	0
+ATCTGGAGGAATACCGG
+ACCCCCCTCTACAAGAC
+NODE	451	34	13358	13078	0	0
+TGGCGAAGGCGGCCCCCTGGACAAAGACTGACGC
+TCTCTACGCATTTCACCGCTACACCTGGAATTCT
+NODE	452	1395	60684	60445	0	0
+TTAACGTCGCCAGCGCGTTGATTTCCGGGTTCACGCCCATGCGCACGCTGGAGAAAACCAGCATCGGTAGCGTGGTGGCGCCGGGACCGGAAACGAAGCTGGCAATCACCAGATCGTCAAGGGAAAGCGTAAAGGCCAACAGCCAGCCCGAGATCACCGCGGGCATGATCATCGGTAACGTAATGACAAAAAAGACCTTCAACGGCGCCGCGCCAAGATCCATCGCCGCCTCTTCAATCGAACGATCCAGTTCGCGTAATCGCGAAGCGATCACCACTGCCACGTAGGCGGTACAGAACGTGACGTGCGCCAACCAGATGGTCAGCATCCCGCGATCGGAGGGCCAGCCGATAGCATGACCGAGCGCGACAAACAGCAACAGCAGCGACAGCCCGGTAATCACATCCGGCATCACCAGCGGCGCGGTGATCATAAACGCAAAGCCGTTTGCGCCGCGAAATCGTCCAAATCGCACCATCACCACCGCGGCGA [...]
+CTACCCGCTGGCGTGGGCGGTGGCGCATAGCAAGCCCTCCACGCGCAATATCCTGCTGCTGTTGGTGATCCTGCCCTCGTGGACGTCTTTTTTAATACGCGTCTATGCCTGGATGGGCATTTTGAAAAACAACGGCGTGCTGAACAATGTGTTGTTGTGGCTCGGGGTTATCGATCAGCCGCTGACGATCCTGCACACTAACCTGGCCGTCTATATCGGCATTGTTTATGCTTATCTGCCGTTTATGGTACTGCCCATTTATACCGCATTGACGCGCATTGATTATTCGCTGGTGGAAGCGTCGCTGGATCTCGGCGCCCGACCGCTGAAAACATTTTTTAGCATCATTGTCCCGCTCACCAAAGGCGGAATCATCGCCGGCTCGATGCTGGTTTTTATCCCGGCGGTGGGCGAGTTCGTGATCCCGGAACTGCTTGGCGGGCCGGACAGTATCATGATTGGTCGCGTCCTGTGGCAGGAGTTTTTCAATAA [...]
+NODE	453	5408	314756	308528	0	0
+GAAAAACGCTTGCCGACTTTTTACTGTCAGCACGGGCGAGGTTGATTCTCATGCAACATGGGTTTAGTGAAGCGCCGAATATGACACACTCGCAGAACTGATAAGCGAATCGTCAGCAGGGAATACCATGCCGGATGACGACATTACTACCTCATCCGGCATTATGGTTTAACTTTGACGTTTATCTTCGGTATGGTTTTCGAAGTCGCTGGCGTCATGGCGTTCGTGAAGCTGTTCGTTCAATGGGCCGTTGGTCCGGTTGACAATGCGCCCCCGCTTTACCGCCGGACGTTCGGCTACCTGTTTCGCCCAGCGTTGTACGTTTTGATAACTTCCGGCATCCAGAAACTCCGCTGCATCATAGACATTCCCCAGCACCACGTTGCCGAACCACGGCCAGATGGCCATATCGGCAATAGTGTACTCTTCTCCCGCGACATACGGGTGGTGAGCTAACTGCTTATCCAGCACGTCCAGCAGACGCTTGGCTTC [...]
+CAAATGGGACTGTTAAGTCAGTTTGTCGGGATGCTGACCGACTCCCGCAGTTTCCTTTCTTATACGCGACATGAATATTTCCGTCGTATTCTCTGTAACCTGCTGGGACAGTGGGCGCAGGACGGAGAGATTCCTGATGATGAAGCGATGCTAAGCCGTATGGTTCAGGATATCTGCTTCAATAATGCCCAGCGTTATTTCACGATTAAATAATCGCTATTAATCTGTGAGCACAGGTCTCAGGTATTTCGAGGGGCAGGAAGGCGGTAAGAGAGTGAGAAATTTAGCAGTAACGCACTTTTCCAGCCAAAGTCTGGCCGCCGATCAAAAGCAAAGAGGTTGCTGATTAATCCCGAATCACTTACTAAGGTAAGTGATTCGGGTAAACAAACACAGCCATCTTCTGCGTCATGCTTCTTTTCTCTGTCCGGAATAACTCCAGTGCAGAAAGTGTGATACATCAGTCCTGTTGATGATGGCTCCTGTTGGTTA [...]
+NODE	454	1582	85679	84765	0	0
+GTAAGCGCGCCTTGCGCACCAAGAAGTTCAGCGCGCGCTGGGTATCCATCAGACACAGGCGTACCTTCCAGCCGATATCTTCCAGTTCCGCCAGCGTGGAGAGCGCTTCGTCGTATTCATCGCCCTGATGCCCTTCCATAATGACGCGGCTCAGTTTTTCCAGATCGCTGTAGATGTTTTCGATTTCATCCGCTAACTGTTCAATTTTGGTTTCGAACAGATCGAGCAGTAATTCGTATGCATTACCGTCGACCATCGCCTGGCTGCGGGCGCGCATACGATACAGACGGAAGGCGGGCAGTTCGCGTTCACGCAGCGTAAACAGACGGCCATCGCGAATAGTGAATGCCACCGTAGAGTTACCGGCATGATCTTCCGCATCTTCGAAGAAGAAGAAGGAGTGGATATGCAATCCGTCTTCGTCTTCAAAGAAGCGCGCGGATGCTTCGATATCTTCCAGTTCAGGACGCGTCGCCAGACTCTGGCCCAGCT [...]
+AGAGGGCATGTTCCCCAGCCAGATGTCGCTGGATGAGGGCGGGCGTTTGGAAGAGGAGCGTCGTCTGGCCTACGTCGGCGTTACCCGTGCCATGCAGAAACTGACGCTAACCTATGCCGAAACTCGCCGTCTGTATGGTAAAGAGGTCTACCATCGCCCGTCGCGTTTCATCGGCGAGTTGCCGGAGGAGTGCGTGGAAGAGGTCCGTCTGCGCGCCACCGTCAGTCGTCCGGTGAGCCATCAACGAATGGGAACGCCGCTGGCGGAAAACGATACAGGCTACAAACTCGGCCAACGTGTGCGCCATGCGAAGTTCGGCGAGGGAACTATTGTCAACCTGGAGGGCAGCGGCGAGCATAGCCGGTTGCAGGTGGCTTTTCAGGGGCAAGGGATCAAATGGCTGGTTGCCGCGTATGCGAAGCTGGAAACGGTTTGACCGGCTCTCATAGTGCCGGATGGCACCTCTTATCCGGCCTACGCGCTGGCTAACAT [...]
+NODE	455	2342	113655	111833	0	0
+CGGATGAACGCCTTTCGCGCCTCGAATGGACCTCGGCTCAGCGCGCATCTCTGGTGAGCGCGATGCTGGAAAGCGGCGTCGCCATCCCGTCGATGTGCCTCTCCGCCCATCGTCGATTCCCTTTTGGCAGCCGCGACGAAGCGGTACGCGAGCGGGCGCGTGAAATCATGACCAAAGCCATTCGCCTGGCGCGCGACCTGGGGATCCGCACCATCCAGTTGGCAGGTTACGACGTCTATTACGAAGAGCACGACGAAGGCACCCAGCAACGTTTCGCCGAAGGGCTGGCGTGGGCGGTGGAACAGGCCGCAGCGGCGCAGGTGATGCTGGCGGTGGAGATCATGGATACCGCGTTTATGAACTCCATCAGCAAGTGGAAAAAGTGGGACGAGATGCTTTCGTCACCGTGGTTCACCGTTTATCCAGACGTCGGCAACCTCAGCGCCTGGGGGAACGACGTGACCGCCGAGCTGAAGCTGGGTATCGACCGTA [...]
+TGTGGAAAAAGGCTGCCTGAAAATTCAGGAAGAAGAATGTGTTTTCTGTGTCGAAGCCGGGGAAAGCCTGTTGCTTTGGCCGCATCGCCGCCATATTGGCGTTGAGGAGTTTCCCGCCGATCTTAAATTTTACTGGCTCCATTTTGAGGTCAAAGCGCCGGACAGCGACCCGCGCTGGCTGACGCATCTTTCCGTGCCGCAGCATACCCAGGTTGCCGATCCGCAGGCGCTGATTGCGCTTTTTCGCCAGTTTATGAACGAGCAGGAAAAGCACCAGCGCAGCCCGGCGCTGGAGTTCATCGTGCTGCTGATTTTGCAGCAGCTCACCGTTGACGCCCGGCAGAATGAAAACGCCGAGGCCGCTGGCGTGTCGCTGGCCTGGAAAGTGCAGCAGCTGATTCGAACGCACTATCACCTGCCGCTTTCCAGCTCGGTTCTGGCGAAAGAACTGCATTGCAATGTGGATTATCTGGGACGCGTTTATCGGCGGGT [...]
+NODE	456	2276	126124	125472	0	0
+ACCACGGAATGAAGGTTAGCGTCTGCGGCTGGCGCGATGACGGCGCGTTATCGTAGTGCCACAACGCCTGATGCTGCGCATCTGGGGCGCTTTGCTTCTCGCCTTCAGCCTGAATCAGCATCTTATGCGCAAAAAGCCCTTTGCCCTCAAAGACCCGGAACTCATTCTCTTTCGGTAGCCACAGATTATGCAGTTCTTCGCCGTTATCGGCCTGCTCAAGGCAATAGACCAGCGGCCCGCGCTGAATGGCGACCTTACCGGCGACGTGACGCGCCAGCGGATTGCCATACACGCGGCGAACCGGCATCGGCAGCGTCAGGGTTATCGTATCGCCCTCCTGCCAGGTCCGACGGATATGCAGATAACCTTTGCGAATATCCTGTTCCACTTCCAGCCCGTTGAGCGTCACTTTTGCCTCAGGGCACCAGTCCGGCAGGCGTAGCGCCAGCGTGTGACGTACCGGCTGCACAGAGTCGATGGCAATCTTCACCT [...]
+GCGAGAAATAAATAATCCGCCGTTTTGGACTTTAATCGGTAATGTTATGGATAATTCGAGCATTAATATGTCATTTCCCGCTCATTCAGCACCGTATTTCATATTACCTTTTGATTATTAACTAAAAATAGTCATTTCACTCGATCCATCTCACATTTTTAAATACGGGTCGGAATCGTCATCTTTTTTTACTCTTTTATCGCCTTGTCGCTCACCGCTATCCGGGCAAAATGAATCAGGTCATAACGCGAAAATAAAAATTACTGCCATAAAATACCCCGTCAGCGAGGAATATCTATGACCTCTACAACCTTAAGGAGCACGAAATGAACGTACTGGAAGTCGATCTGCATAAACTGACGGTCAGCGATCCGTTCCTCGGACAGTATCAACAACTGGTTCGCGATGTGGTTATTCCTTACCAGTGGGATGCGTTAAACGATCGTATTCCAGAGGCTGAACCCAGCCATGCCATTGAAAATTTCCGCATTG [...]
+NODE	457	6958	371408	366974	0	0
+CTACGCGCCGCCGGACGCGACCCCGACGAACTGCTGGCTATCCTGGCCAGTAAATCCCGCGACAACAGCCGCACGCCAATGCAGTGGGACAACGGTAAAAACGCCGGGTTCACCCAGGGCGAGCCGTGGATAAGCCTGTGCGATAACTATACGGAGGTTAACGTCGCGGCAGCATTACGCGATGAAAACTCGGTGTTTTACACCTATCAAAAGCTGATTGCGCTACGTAAAACTCAGCCTGTACTGATCTGGGGCGATTATCAGGATCTCCTCCCGGATAGCCCATCAGTATGGTGTTATCGCCGCCAGTGGCAGGGGCAAACCCTGCTGGTTGTCGCCAATCTGAGTGACCAGTGCCAGGAGTGGCATCCGCCGCATATCAAAGGACAGTGGCAGGCGCTACTGCATAATTATGGCGAGGTCGCCAGCCAGCCAGCCGCGATGACGCTCCGCCCATTTGAAGCCATCTGGTGGTTACAACGCTAACGCGAC [...]
+GTCTCGCCGACCGGCACGCCGGGGCTGGTGAAAATTTCCACCGGCCCGCTAAGCAGCCGCGCGCCGGACGGCATCGTATCCATAGAAACGGCGATTGCGCTACTCAAAGACATGGGCGGCAGCTCCGTTAAATACTTTCCGATGGGAGGGCTCACCTGTCGCGACGAGTATAAAGCGGTAGCTGAGGCCTGCGCCCGCCATGATTTCTGGCTGGAACCGACGGGCGGTATCGATCTGGAAAACTTCGCCGAGATTCTGCACATCGCCCTTGATGCAGGTGTAAGCAAAATCATTCCTCACATTTATAGTTCGATTATTGATAAGGTGAGCGGCAACACCCGTGCGGACGATGTGCGTCAGTTACTCGCTATCGTCCGGTCGCGTGTCGGCTAATCATGAGGAGAGAGACGTGCGATTCCCCAACCAACGTTTAGCGCAGCTATTTGCGATGCTGCAAAACGAGACGCTGCCGCAGGACGAACTGGCGCAGCG [...]
+NODE	458	1058	53214	52492	0	0
+CTGCCTGCCAAAATTGAACGCCCGGGCGCTGATGCCGGATGATCTGGTCATCGTAGAAAGCGCCCCTGAAAAAATCGACACCTTTAGCTGCAAAATGACAGTCCCGCCATCCGGCCATCATAACGGATTTTTCTTCTGCACCTACTGAAGCCCGCCATGGCAGGACGACCATGAATCCGTCGATAACCTTATTGTGAAATTAAGACCAGGGAAAGAGGATGTCCGCCAGACAGACATTATGTGTAAATTTATAAAGGTTTTTTTATTATGCCCTTGCATGTTGGACGCGGATGTCTTCCCGCCACAATTACTAATCTTCGTATTAACTGTATAGCCCAATCTGCAACCCCGCCTGAAATGAGCTTATGGGAAAAAATTAAGGAGTTTTTCTGCTCAACGCACCAGACTGAAGCGCAGGAATGTATCTGGACGATTTGCCACCCTTCGGTCGGAACGACGCGGGAGGATGTAGTCAGCAGATTTGAACAGCTC [...]
+CACCTCCAGTCCTGACGGCAGCGTCGGCAGGCTGGTCAGATAATTATTATGAGGAATAACCAATGTTGTTATATGCGCTGGTAAACGGTCTGGTAAGGCGGTAAGGCCTGACTCTCCCACATTAAGCTCTCGACTGCCGTTATTCAGGCAGGTACATATTCTCTGTACCGTCGCAGCACGACCGCGTAACTCTTCTGCTGGCGCAGCCCCCTTCCATTCTGACCAGACAGCATCATACTCTGCTGGTGTCTGTGGAGCCGCCGGAGCCGGAAGGGGGGATACCTGGAGTGTCCCGGATGCCCCTTCCGCATGTTCTGTACATTCCTCTCCCTGTTCTATGTCCATGGTGAAGCGATATGTTTCATTGTGCCCCTGGCAATTCACGGTATGGTTCCCGGCGTCATCAAGGGTGACCGACAATATCTCCTGGTTGTCTGCATCCAGGATACAGAAGTGGCTTTCCCCGTGGCGGCCGGAGTGAATGCTTTCCTC [...]
+NODE	459	14384	776288	767074	0	0
+ATGGTGGCAGAAAAAGGCGCAAGCCCCTGTAATAATACGCTGGCAGCCATTGGCAGCGGCGGGGTCTATTCTACGCCAGGAGATATGATGCGCTGGATGCAACAGTATCTGTCGTCAGATTTCTATCACCGTAGCCAACAGGCCGATCGTATGCAAACGTTGATTTATCAGCGCACACAGTTAAAGAAAATCATCGGGATGGACGTACCGGGTAAAGCCGACGCGCTCGGTCTGGGCTGGGTCTATATGGCGCCAAAAGACGGACGTCCTGGCATTATCCAGAAAACAGGAGGCGGCGGCGGTTTTATTACCTATATGGCGATGATCCCGCAATATAATATTGGCGCTTTTGTGGTCGTAACCCGTTCCCCCCTCACGCGTTTTACCAATATGAGCGACGGGATTAACGATTTGGTTACTGAGCTAAGCGGCAATAAACCGATTGCTATTCCTGCATCCTGAGTCGTCGCGCCTCGCGCTATATCAGACGAG [...]
+CCGATAACACGGCTGGCAATGCGCTGTATTCGCCCATAAGCGCGGCGGACTGCGGGGAGCGAAAAGGCCTGGCTGAGAAAAATACGCCAGATAACGGATGACAGCACAATTCCGGCCCAGGCCATTAACCTTGCCCATGTGGGCGTTTCTGCGCTAAGCGTTACGGAAAAAATACTGATAAAAAACAGTACGGTTTGCGGATTGGATAAATCGGTCATTAATCCCCGGCGAAAGAAAATTGTCCACGGGGCGGCAATCGGCGTCTGGAGCGTGCTCATTTGCGGCGTCGCCTGGTGGCGAATACTGTTCCAGGCGAACCATAATAAATAGGCGCCGCCGACAATTTTGATAAGAGAAAATACCGCTTCGCATTGCGTAATGAGCGTCGCCAGACCGAAAAGCCCCAGCCCGGAATAAAAGGCGTCTCCCGTGGCGACGCCCAGGCCGGTGATGACTCCCGCCCGGCGTCCTGATGCGAGGCTGGTTTGCACC [...]
+NODE	460	3356	203563	202880	0	0
+TGGCCGACCCGCTCAATGATACCTTCAATGCGGCTATTAAAAATAAAAACACGCGATGGGAACAAGCGCTGTCTTTGCTGCAGATAAATAGCATCTTTGGAACGCTGGCCGGCGACAACGCAGACTTTTTAAACGACATTCAGCAGGCCTTTAACCATATTGAGTTACATGGCGTCACGGCCACCATTCACCGTTTATCTTCAAAGGGTTAAGTATGAAAACGCTTATCTGTAATAATCCGGGAAATATCGAATACATTGAAAGAGATATTCCTCATTTAAAAGACGATGAAGTACTGTTAAAAATTAAAGCGGTTGGTATTTGTGGCACCGATATCCATGCGTTTGCCGGCCGCCAGCCCTTTTTTGCCTATCCGCGCGTGCTGGGTCATGAAATTTGCGGCGTGGCAGAAATGTTGGGTAAATCGTGCAGCACGGCGAAGGTCGGCCAACGCTATAGCGTTATTCCCTGTATTCCTTGCGGCGCTTGCGC [...]
+TTGGTTAATCCATGTCCACGACTGTCCGGCATGATGACGCGAAAATATCGAGATGCCTCTTTCGCTAATCCCTGCCAACTTTTCGCCGTCAGACCACCACCGTGAATCAACAGCAGCGGAGGCCCCTCGCCCTCTTCAACGTAATGAATTTTGATACCATTCGCTTCCACAAATTTATCTTTGTCCATCGTTGTTGCTGAAGCATTTATTAAAAATATAATATTGATAATAAAAATAAATGCTAATTTAAAAATATGATTCATAACACCTCGCCAATCACTTTCCGTGTAAAAGACCATATTATTCAGATTGAACAAAAATAACATCAAAATCGATTTGTATCATTTTCACTTATTTACCGGGGAGACCCCGCATCCTCTTTTTACAGAACGTAAAAAGCCTTTCCGCGATTAGCCTCAACGCGAAAAGGCTCTGAAGTCAGAAAAGTGCCACCTTATTCATTCTGGCTGTAATTCAGGATGACTTGAAGGT [...]
+NODE	461	7453	423287	418211	0	0
+ACGAGCACTGCCCAGGACCAAAATAGCAAGTAAAATAGCCCTAATGGGATGGGCTCTAAATTAGCTCCCGCGATAGGTTGAATAACCATACTGACTTAATAACAGCGGCACATGATAGTGCTCATTCGTTTTGCTGATATGAAACTCGACGGGAATCTCCGGGAAAAACGTGTCCAGTTTTTTACTTTCAAAATACTGGCCGGTTTTAAAAATAACGCGATAATCCCCCGGCGCGGCAGCTTTTTCGGGCCACAGTGCTTTAATACGTCCGTCCTGGTCGGTATGCCCGGTGTTTAATTGCGTCCATCCGTTATCCTTTTTCTGCTCCAGTACCACCTCCACGCCGGGTGCCGGTTTGCCTGTTTGCTGATCGAGAATATGTACGCTGAGAATATTGTTGCCAGCGGCCAGCGCCATTGCCGGGGCTGCAACAAGAGATGCTATCGCGGTAGCCAGTATATATCGTTTCATGCTTCACTCCTTTACGGTATT [...]
+GAATAATCAGATTATCCTTGCTATTGGCTTCCTTCATTTCCAGCATAACTCACGCTTCATCATCATTGAATAAACAATTAAGTTTGTTGAGCGAAAATTTACTTAAAGAAAAAATAATAAGCACTAATATTTTTTGCAGTATTTCAACTTATAGCAGAATAAATGCGCGTAGATGGCGTAAAACCTGATGATCAGGAATACTTACACACTAAAAATGCTCCCGCAAACAGAGCGAAATGAGAGAGAGGAACGTTTGCCCCTTACATTTCCACCAAAGATTCTGGTCTTGTCTCTTGTAAAGGGCATACGTATCGCGCTTTATCTCATTAAGAAAGCATGTTGATGTATTAAATTATGCATAACGCTCTTTTAATTGCTTCACGTTAGAAATGAATAATTCAAAACCAGTGAGCGCCTCTTCTTCGGTACTGGTTTGCGGCAAGCGATAAAGCGCCACTAAAGCAGTATTGTCTGCGTCAGCGCCGATAGTGA [...]
+NODE	462	2145	97970	94822	0	0
+CAAACGGAAAAATTCCTGCACGGAACGAAAGTGGCTTATGGCATTCTGGTGCAAAGCGCGCTACTGGGACAAGATGACGTGCTGGCGCAATTGATTGCAGCGTACCGGCGATTTCATCTGCCGGCCCGGCTTAGCGAACTGGACGTGGATATTAATAACACCGCCGAGATCGATAGGGTAATCGCGCATACCCTGCGCCCGGTCGAATCCATCCACTATTTACCGGTGACGTTAACGCCAGACACCCTGCGTGCGGCGTTTGAAAAAGTTGAATTTTTCAGAATATAGCCTGGTGACGTTGCGTTTATCAGGCCTGGCAACCATCAGCAGCAACGCGCGCCGCCTTTTCCACCATAGCGCGCATCCTGCCGCTCGCGGAAAAATTCTTCATAGGTCATCGGCGTCTGATCCGGATGCGTTATGCGCATATGTTCCACATAGTTGTCGTAGTCTGGCACGCCAATCATCATTTTTGCGGCCTGTCCCAGATAT [...]
+CTATTCCACTGGCGATTTTTATGGGCATCTACCTGCGTTATCTGCGTCCGGGGCGCATCGGCGAGGTGTCGGTCATTGGGCTGGTATTTCTTATTTTCGCTATTATTTCCGGCGGATGGGTGGCGGCAAGCCCAACCTGGGCGCCGTACTTTGATTTTACTGGCGTGCAGCTTACCTGGATGCTGGTGGGGTATGGTTTTGTCGCGGCGGTACTGCCAGTCTGGCTGCTGCTCGCGCCGCGTGATTACCTATCTACCTTCCTGAAAATTGGTACGATTGTCGGTCTGGCGGTCGGGATTCTGATTATGCGTCCGACGCTGACTATGCCGGCGCTGACCAAATTTGTTGATGGTACCGGACCGGTCTGGACGGGCGACCTGTTCCCGTTCCTGTTTATTACCATCGCCTGCGGCGCGGTCTCCGGTTTCCATGCGCTCATCTCCTCCGGCACGACGCCGAAGATGTTGGCCAACGAAGGCCAGGCCTGCTTTA [...]
+NODE	463	51	2084	2067	0	0
+TGGTGAAAGCGCTGACCCATAGCCCGTGGGGAACGTACACTGTCGCGTTCA
+ACGATCATCGCCAGGACGGCCAGAATGATCACCATGATCATAAAGCAGGCT
+NODE	464	4463	850490	843235	0	0
+TTTCGGCATATTCTTCGTTTGTAAGCCCATAGCCATTAAGCAACAAATTACGCTCATAGGCATTATCCCACGGCGCATTACCCGTATTTTTAACCATACGCCCCCCACCATAAACGGGATCGAACTGGTTAGAGATAAGGGCTATTTCATCCATAAAATTCTTATAGTCAATCGATGAAAGTTTATCTTTCAGCCCTTCGGCCTCACGTAAAATTTGCTTATAATCCTCAAGCATCTGGTTGTATTGCTTATATGCTTCCAGCAATTCTTTATTATTGAGAATTGTCTGTTCCATATATTCTTTATAGTTTTTGATATCCTGCATCATAGCCCTGGCCTGACCAAGAATCTGAGCAGCATCAGCAACAGGAATGCCAGAAGAAATAGCAGGTGTTGTAATCAATCCTGTCATTACAGAAAACAAGACTACTGCAAGTTGTTTTCTCATAAGAAAAACCCCTCCGTTTTATCCTTTTCAGTCTCTGTAGGCGT [...]
+AAAGCGGCATATTCCAAACTTTGGAGCAGTTCTGCAATGTTGTTTGAATTGTTTCGTAGTCGTATCATTATTTTTTATGTGATGATTGTTTTTTTATGTGTCTGACATTTTTCCAATCATGATTTCTGTGAGATTTGTATCAGCAAAATCTCCTTTCCCCGATTCAGTGTCAAAGTCGCCTGGCGTGAACTTATGTACGTCTTGCCAGACTGCGAAGCAGGTAGGGCATGTTACAGGTAGTTCGCCCTCAGCTATCTTTTCACAACTTTCTACCAGTTCTTGTTTCTCGTTGTCCCTGATGTTATAGCCGCTTGTGCAAAGCGTTTCATACCCGTGAGCGCCCGTCACTATATGTGTGGCGGTTCTTTCTGTGATTTTTCCATCAACGAATAACTGTTCATGCGTTGTGATCGTTTGCATGTCTGTCTCTCATAATTGTTGGTTTATGTGATTGTTGGGGCGACCGTAAAAATATACGCCAGATGACGGGAG [...]
+NODE	465	3447	167307	164754	0	0
+GAAAAAATCCTGGCTCTTGAAATGGGCGGAAACAACCCGCTCATTATTGAGGATGTGGCAAATATAGATGCGGCGGTACATCTGACGCTGCAATCGGCGTTTATTACCGCCGGACAGCGCTGTACCTGCGCGCGACGCCTTCTGGTAAAACAGGGTGCGCAGGGAGATGCATTTCTGGCGCGGCTGGTTGACGTTGCCGGACGTCTGCAGCCCGGCAGATGGGACGACGATCCGCAGCCGTTTATCGGCGGACTGATTTCAGCGCAGGCGGCACAGCATGTGATGGAGGCCTGGCGTCAACGAGAGGCATTAGGCGGGCGCACGTTACTGGCGCCGCGGAAGGTCAAAGAGGGAACCTCTCTGCTGACGCCTGGCATCATTGAGCTGACGGGCGTCGCGGATGTGCCGGATGAAGAGGTGTTTGGTCCGCTGCTGAACGTCTGGCGTTATGCGCATTTCGATGAGGCGATTCGTCTGGCGAATAATACCCGT [...]
+TTCCTTTCAGTTATTTTTACGGCATATTTAAAACAGCGCCGTGTTGTCGTGATTAACTTTAACCGTCTTAGCGTCAATTAGTCATAACAACGGTAAAACAATGAAAGTATAAAAAACACTTTTTCGCCAATTGTGAAGAAAAAAAGAATAAATTGCGCAGAGTTGAAAGAGAAATATACAACAGCATGATATAGCAGAAATTATGCAGAACTATAACGCAGCAACGCTTATTAATAAAGCAATTCTCCAGGAATAATCCGTAATAGCATGAAACTGTGTCCCAAATCATCCCTGTAATCCTAACGTGAGCTTACAGGGACATTTATCAGGGAAGTCTTTCCAGCATTAATCCAGCCCGCAATCCGCAGGCGACAGAGGGATTAGGAAAGAGAACATATTCAACGTCATGCGTCACCGTCACGCGCTTATCCCCCTCCTCGGCCAGCAACGTTCCCTTCGCAAAGGCAGTAAAATTCAGCGTTTGCGCATCCA [...]
+NODE	466	4352	234931	231667	0	0
+AATATAATAAAGCGCGTCACACAACGTACTGTCTGAACCGAATCCGCCCGCTTTGGTAATGACCGGCAGATCGTCAATTTCGCTGTTTACAAACGTTCCACAGGGAATACAGGGCGCCACCTCGCTCTGAATGCGATAACCTTCAGCGCCAAGCGCGCCGGCGACGGCGGTAGCGATATCACCGCCGGTCAGAAACAGCCCGCCAATCCGCGCCTGCTCGATAATGTTTAACGTGACGACGCCAAGCCGCTGACTCAGTCGCTCGCCCAATTGCTGACGGCTCATCGCGGATTTTTCGCACAATGCGTCGATTAACTGTCGATCTTCCGCGCGACGGCTGGTGCGTAAAATCGTATGTCGATGCTGACTTAACAGCGCGCAGGCCTGCTCTACGACAGACGCGATTTCCTGCTCCGCGCTATCCGACACCATGCGCGCGGCATCAATATCCACGACCTCCGCACGTCCCCGGCACAGCGCATTATCCACCTG [...]
+CAGCGACGGGCCCGGATTTCCGGGCCCGAATGGCGCTTCTTATTTATTATTACGCTTCACTTCCCGTAGCCCCGGCAAATACGTAATTACCCCGCCCATTATTGCCCCGGCTACAATCGCTGGAATAAGCATAATCAATACTTCACCATATATTAATGGTAGTATGCTTATGTCAAAACCATATCGCACCAAATTAAACAGCGTCGTGATAAGACCACCTGCAATGGCGCAAAGGATCATCCTGTTAATTATTTTTTGATATAATTTCAGGGGTATCAGCGCGCAGGCGACACCGGTTAACCATGCGGGGAGGAGACTGTATATCCAGCCGGTAATAATAACTAATGCTGGTATTGTTCTGTAGAAACAGAACAAAAATGAGTCTGGTCCGCCAATAATGGCGGGTGAATAGTTTATGACACCTATCGCGGTGGCTGCGCCTATTAACGGCCCAAGCAGAATAAACCAACCGCTATGATAAATTATTCGTCG [...]
+NODE	467	2998	155569	154575	0	0
+CTTGTTGGCGAACTGACGGATCATATGGCTAATGTACGCCGCGTATTCAACGAATTAATTGGCGATGATGAAGCCGATACCCCGCAGGAAGAAGAGCGTTCAGAGCCGTGGCGTGAAGTATGGCAGGATGCGCTACAGGAGGATGATTCGACGCCAGTGTTGGCGCATTTAGCCGATGAGGATCGGCGACAGGTTCTGACCCTCATCGCTGACTTCCGTAAGGAACTGGATAAACGCCCTATCGGCCCGCGCGGGCGGCAAGTGCTGGACCAACTGATGCCGCACCTGCTTGCTGATGTCTGCTCTCGCGAAGACGCCGCTGTTACGCTATCGCGGATAACGCCGTTGCTGGCGGGGATTGTCACTCGCACCACCTATCTGGAGCTGCTGAGCGAATTTCCTGGCGCGCTGAAACACCTGATTATGCTCTGCGCCGCTTCGCCAATGATAGCGAGCCAACTGGCGCGTTATCCGTTGTTGCTTGATGAACTG [...]
+ATAGTCGCCGCCTTTTACCAGCAGATCCGGCAGAATACCGGCAATCAGTCGTTGCGGCGTATCCTCTTCAAAAGAGACAACCCAGTCGACTGACTCCAGCGCGCCCAGCACGATCATACGCTGTTCGAGCGGATTAACCGGACGGCTTTCGCCTTTCAGACGTTTAGTCGAGGCGTCACTATTGACCGCAACAATCAGGCGGTCGCCCAATTTGCGCGCGTTCGCCAGATAAGAGACGTGGCCCGCGTGCAGAATATCGAAAACGCCGTTGGTCATGACCACTTTCTCGCCACGCTTACGCGCGCTGGCGACGGCCTGTCTCAACTCCTCTTCGGTCATAACGCCGAAGCCGGTATCCGCGCGTCCGCGCACTGCGTTTTCCAGCTCAATAGGGGAAACCGTTGACGTCCCGAGTTTACCTACCACTACGCCCGCCGCCGCATTGGCGAAATAACACGCCTCCTCCAGGGTATTTCCCGCCGCCAGCGTCGC [...]
+NODE	468	5247	287612	286309	0	0
+TCTTTTTTTCGCGTTACCTTATCGGCGTTGCGGGGCGCATTATGCGTATTGAGCCTTGAAGCGTCAACCTCTTTTTCATCGAAAAACGTCGGAAAGTGTCTGTTTGGTTAGGTTGCGAACAGCGTGGCGCAATATTCGGCAATTATTGGTTATTAATCGTTTTTCCGAAAGTGGTTTGCTATAAAAAAAGAGCCCCTAAGGGCTCTTTCGTCATCGTTAATTTACTGGTACGCCGACTGATGCACGCCGACCGCGCGGCCTGACGGGTCATCCATCGTTTTGAATGCTTCATCCCACTCAATGGCTTTGGCGGAAGAACAGGCCACGGACGGGCCGCCGGGTACGCATTCCGCCGCGCTCGGCACCGGGAACAGCTCTTCAAAAATTTCGCGGTACAAGTACGCCTCTTTAGACGACGGCGTGTTGTATGGAAAGCGGAAGCGGGCGGTTTCCAGTTGTTGATCGGAAATCTGTTTCGCCGCCACTTCTTTC [...]
+CCGGTTTTATTGATGTGCAGTTAAACGGCTGCGGCGGCGTGCAGTTTAACGATACCGCAGAAGCCGTCAGCGTTGAAACGCTGGAAATTATGCAGAAAGCCAATGAAAAATCGGGCTGTACTAACTTTCTGCCAACGCTTATCACTACCAGCGACGAATTGATGAAACAGGGCATTCGCGTCATGCGCGAATACCTGGAAAAACATCCGCACCAGGCGCTGGGTCTCCACCTGGAAGGCCCCTGGCTTAATCTGGTAAAAAAAGGCACCCATAATCCTGATTTCGTGCGTAAACCAGACGCTGCGCTGGTCGATTTCTTATGCGATAATGCCGACGTCATCACCAAAGTTACACTCGCGCCGGAAATGGTGCCTGCTGACGTAATCGCTAAACTGGCGAATGCGGGCATTGTGGTTTCCGCAGGCCACTCCAACGCGACGTTAAAAGAGGCAAAAGCGGGCTTCCGCGCCGGGATTACCTTTGCGACTCACC [...]
+NODE	469	1979	99143	96603	0	0
+TACGAGCTGGCGGGTGATGACGCCTGGACATTACGCCAGTTGGCGGATGAACTTACTCATCAGAGCGGAAAAAAAATCGTCTACCAGAACCTGAGCGAAGTCGATTTTGCCGCCGCGCTGAAAGGCGCAGGCCTGCCTGACGGACTGGCGGATATGTTGGCCAATTCTGACGCTGGCGCGGCGAAAGGCGGCCTGTTTGATGACAGCCATACGCTGCGTAAACTCATCGGTCGCCCGACGACGACGCTCACAGAAAGCCTTCGCTCCGTACTGTAAGTGTTAAAATTTAGTTAATTTATGTAGCATCCTCATAGACCTTCTCTGATAATGACGGAACGGTTTATGAGGAGAATCTGATGATTAGCGGCGTGCTATACGCCCTGCTGGCAGGGCTAATGTGGGGATTGATTTTCGTCGGCCCGTTAATCGTGCCGGATTACCCGGCCCTCTTACAGTCAATGGGACGCTATCTGGCGCTGGGGCTGATTGCCC [...]
+CGTCTACCAGCTCTCCCGCCTCGTCATGCTCGCTTTCCATTACGCTTATCGGGCCCGTTGCCTGGCGACCCATACCCTGTTTGATCATGGGGAACAGGATCTGTTCTTCTTTCATCATATGGCTGGAAAGCTCTTCATGCAGCGCGGTGAGATATTTTGTCAGGCCGCGTGGGACGTTTGGCTTATCCGCGTGGACGCGTTCCACTTTGGTTGCCTGCAGGATAAGCTCCGGCAGTTGTTCGCGATGTCGGTCATGATAGCGCACCACGATATGGTCAATAATGTCCGCCAGCGGAACGGCGCGCCAGTCTTTTTCGATGGGCTGTTCAGCCAACTGCGCGAGTTGCGCTTCAATGATGTCAATATCGACGTCGTGACGCGCGGCGGCGCGCGCCAGCGTCTGTTTTCCACCGCAGCAGTAATCCATATCGTACTGGCGAAACAGCGCCGATGCGCGGGGAATAGAGAGCGCCAGTTCGCCTAAAGGTTGAT [...]
+NODE	470	4501	280586	279542	0	0
+TCCCTGATTCCAGTTCATCATTGCCAACATCATGCCGCCAATAAGCGCTATACACGATGGCAGCAGTACAAAATGCCGTAATTGTTTGTGATACAACATCAGCGCAGACAGTAGCAATCCTGATACAATCAACAGCTTCAGCGCATCAGCTGACAGGCCGATAAACGCCAGTCCAACGATAATCACTCCAGGCAATAATACGCCCCATCCGCTGCCTAACGTCCGCTGCAACATGGTTTCACCTCTGGAATTGATAATGATAACCAATATCATATGATATATTTTCTCATTTGTCAGCCAGGGAGAAAGCTAAAGAGATGAGTTTTACTTAACGGTTGATGACACGTATTCAGTAAGGTGATAAATTGTCCGACTGTTAACGTAAAAACAACAACACCTCGCTTTAGGCGACCTTTTCTCATACGTTATTTTCATGTTGGCGCCCGATTCCGTGTATATCACCGATAAATAACGACAATTACCCATGACAAC [...]
+CTTATTATCAGTAAAACCCCTCTTATACAGGAAGGTCTTAAAGGGGCTATAACAGGTAATTTCCCCGATTATAAACTGGCGTATTGCCGTACGATAGAAGAGCTAACGCTGCTACAGCTACGCCGGAGTAATTTAGTTATTGCTGATTTAGCAGTTAACAATGCCTCTTCCCGCGCTATCTGCGAATATTTTTATAGCTTAATCTCGCAATATCGCGACATACATTGGATATTTCTGGTTCCTAAATCCTGCTATCCACATGCAGTTGATCTCCTGATGGGCCCCGTCAGCACCTTGCTTTCAGACGAAGAGCCAATCGAGAATCTTATTAGCGTTATCCATGCGGGAAACGCTCGCTCAGAAAGAATAAGCAAAACGTTATTATCGCCTCAGGTACCGTCTGAAATTCAGCAGGCCCACGACAGGCCGATTGTCCTTACGCTGTCTGAACGAAAAGTATTACGCCTTTTAGGAAAAGGGTGGGGCATTAAC [...]
+NODE	471	3408	202675	201237	0	0
+ATCCGAAATAAATCCGGTCAACGTTGGGGCGACAACCGCTGAACTCATGCCAAAGAAGTTAAAAAGGCTGAAAGCTCTTCCCAGACTTTTTGCCGAAGCCTGTTCAGATACAAAGGAGATCAGGATCGGGTCTACCGCCATTTTCCCCAACAAGCCGTATAGCGTCAGGCTGACCATCAGCATCGTGGTATTCGGGGACAAAACCGTAAACGCCAACATTGCTGCCGCCACAATTTCCAGACCGAGAATAACCTTAACTTTACTGTTACGGAATTTATCTGACAGATGGCTAAAAAATAACGCCCCCGGTACGCCAACCACCGCCACCAGCGCTGATGCCAGCCCGATAGCTCCGCCATCAAATCCTCTTTCAGTCTGGAGATAAGAGGGCAGCCAGGTCACTATCAAATAGTAACCGTAGCAGGTACAGAAATAGAGGAAGTAAACGCTACACAATAAACCAGAGAATAAAGGTGCGCGTTTCTCATCTTC [...]
+GTTTAACATTCCGTATATCCATGTGCTGGTTAACAACGCTTATCTTGGTCTGATTCGCCAGTCGCAACGCGCATTTGACATGGACTACTGCGTACAGCTCGCCTTTGAAAATATCAACTCCAGCGAAGTGAATGGCTATGGCGTTGACCATGTAAAAGTGGCGGAAGGGTTAGGCTGTAAAGCCATTCGTGTCTTTAAACCGGAAGATATTGCGCCTGCATTTGAACAAGCCAAAGCGCTAATGGCGCAATATCGCGTTCCGGTGGTGGTGGAAGTCATTCTGGAACGCGTAACCAATATTTCCATGGGCAGCGAACTGGATAACGTAACTGAGTTTGAAGAGGTTGCGGATAGTGCGAAAGATGCGCCAACAGAAACCTGTTTTATGAAATATGAGTAAGGGAGGTAATCGATGTTACGTTTCTCTGCCAATCTTTCTATGCTGTTTACGGAATATGATTTCCTGGAACGCTTTGATAAAGCGGCGTTGTC [...]
+NODE	472	11044	561828	554855	0	0
+ATCCGTCAGCAGCCCGCCCTGGTCGAAACCGACGTATCCCGGAGGCGCGCCGATCAAACGGCTCACCGTATGACGTTCCATATATTCGGACATATCGAAGCGCAACAGCTCAATACCCAGCGCTTTTGAAAGCTGTACCGTAACTTCAGTTTTCCCTACGCCAGTTGGCCCGGCGAACAAGAATGAGCCGACAGGTTTATGCTCATGGCCCAGACCCGCACGACTCATCTTAATAGCTTCGGTCAGCGCCTCAATCGCGTTATCCTGGCCGAAGACCAGCATTTTCAGACGATCGCCCAGGTTCTTCAGCGTATCGCGATCGCTCTGCGAGACGCTCTTTTCAGGAATTCGCGCAATTCGCGCCACTACGGACTCAATATCCGCCACGTTGACCGTTTTCTTACGTTTGCTCACCGGCATCAGACGCGCCCGAGCGCCCGCTTCGTCAATCACGTCAATGGCTTTATCCGGCAGATGGCGGTCATTGATATA [...]
+GTGGCGAAATCGGTAAAGTAGTTACGCTCGCCGCGCGCGCCGTCACAGCCGCCGACCAGGAAGATGTGGCGCAGTTTTTCACGGCTGACCAGATCGATGAGCGTATCGGCAGCGCCGAGCAGGGTCTGACGGCCAAAACCGACGGTGATGAGATGCGGAATTTCGCTATACGGGAAGCCCGCCATTTGCTGCGCCTGGGCAATGACCGGCCCGAAGTCATCGCCTTCAAGATGGCTAACGCCCGGCCAGCCGACGATGCTACGGGTCCAGATACGGTCGTCATAGCTGCCCACGGTCGGGTCGATAATGCAGTTAGAAGTCATCACGATTGGGCCAGGGAAGCGGGCGAACTCGACCTGCTGATTCTGCCAGCCGCTGCCGTAGTTACCGACCAGATGCTTGAATTTACGCAGTTCCGGATAGCCATGTGCGGGCAGCATTTCACCGTGAGTGTAGACGTTAACGCCGGTGCCTTCGGTCTGCTCCAGCAGG [...]
+NODE	473	4599	237205	235260	0	0
+CGTATGCAGTCACATCTTCTACTGGCTCAACCATAATCTGGCTATTGCCGGTTTCGTCGAAACGGCGGATCATTTCAGCCAGGTTATCCTGAGACAGGTCGGACTCATATTCGTCAAGAATAACGTCTGGCAGAATAACAGCGACAGGTTCGTTTCCGACAACGGGATGCGCGCACAATACGGCATGGCCCAGGCCTTTTGCCAGCCCTTGACGTACCTGCATAATAGTGACATGCGGAGGGCAAATAGACTGAACCTCCTCCAGAAGCTGACGCTTAACGCGTTTTTCCAGCATCGCTTCCAGCTCAAAACTGGTATCAAAGTGGTTTTCAATAGAGTTTTTAGACGAGTGCGTAACAAGCACGATTTCAGTAATGCCAGCAGCGATACATTCGTTCACGACGTACTGAATTAATGGCTTATCAACCAGCGGCAGCATCTCTTTCGGGATAGCTTTGGTCGCTGGCAGCATCCTGGTTCCCAATCCCGCGA [...]
+CGGGATAAATTCATTATGCTGCTTGCATTCTATAGCGGGAAGGATTATTCGGAGCTAAAGCTCCTCACCCTTCGGGCCGTTGCCTGCGGCAACGTTCTCTCACTATTGCTCGAGTCGAACCTTCGAAGTCGATGACGGCAGATTTACAGTCAGCTCCCTTATGATCGCTCGGGAACCCCACCACGGGGTAATGCTTAATACTGGCCCGCTTCCTTTCGGGAAGCGGGGCGCATCATATCAAATGACACGCCGCTGTAAAGCATTCCTTTGCCTGAAATGAACTGTTTGCGTACTTTTCATCCGTAACGGATTAAAGCTAATCAATTCATATTACTGACGATTAAAGAATAATCGTCCGATTGCCGTAAACAAAGACCCGCTGCGCCAGAACCTGATACAGCGCGCGGCTTAATACGTTTTTCTCAACGTCGCGCCCGGCACGCATCATATCTTCTGCGGTGTAAGTGTGATCGACATGAATCACGTCCTGCA [...]
+NODE	474	6631	391489	386162	0	0
+TTCGGACCGACATCCAGATCTTTATTATCCTTGCAGCTTACCTGGCAGGTTTTACAGCCTGAACAGCGCGAGGAGTCAACATAAAAGCCATACTGTTTCATCGTACATCACTCCTTAAGCGCGTTTAATTTCAACCAGATTGGTATGCTGCGGATTGCCTTTCGCCAGCGGCGAAGGATGGTGGCTGGTCAGCGTATTGATACAGCCGCCGACATCAACGCCGTTGCCGTCAAGCCGCGTCCACGCGCCCTGTGGCATCGCCGCCACGCCGGGTAAAATGCGCTGGGTCACTTTACAGGGAAGCTCCACCACGCCGCGGTCATTGAATACATGCACCCGATCGCCGGACTTCAATTGGCGGGCGCTGGCGTCAATCGGGTTAATCCAGACTTCATCCGGCACCGCCTCATGCAGCATCAGCACATTGCTGTAGGTCGAGTGGGTATGCCCTTTGGTATGGAAGCCGCTTAACTGCAACGGATACTTCGCCGT [...]
+TTATCCAGATCTTTACCGCGGAACCAACTAAAAATACCGATTGCCAGGATACCGAGCAGGGTAGACGGGATGGTGATCGACAGCAGATCGAGGAACTCCAGATGTTTTCCGGCAAATGTCACGTTGCCCAGCATCGCTACCAGAGAAACCACGGCGACGGAAACCGGACTGGCGATGATGCCCATTTGCGCGCCGATAGAACTGGCCGCCATTGGACGTTCCGGACGGATATTATTCTTGATCGCCACGTCATAGATAATCGGCAAAATGGTGTAGACCACGTGGCCTGTCCCACACAGAATCGTCAGGGTACAGGTGACGAACGGCGCCACAATAGAGACGTATTTGGGGTTGCGACGCAGCAGCTTTTCGGCAATCTGCAGCATCACATCCAGCCCGCCTGACGCCTGCAACGTTGCCGACGCGGCGACTACCGCGATAATGACCAGCATTACGTCAACGGGCGGTTTACCTGGCTGGAGATGGAAAACA [...]
+NODE	475	4270	216024	213305	0	0
+TTCCAGCTCTTCAAGCGTCCACAACACTTTTTTAACATTAGTCGAGTTGTTCCGGCCCCACAGCGTAATCATATTAACCCCTTCCGTTTTATCAGGATGATGACAGTAATCGGCCTACCGTGAGATAAACCTAACATTTACACAATGGTCTGTAAAAAAATCGTTATGAAGGAAGCGTAACGGGATGTTATTGCATAAACTTTAAAAACTTTACCAAGTTACGGTTTCTTTAACGTCGTGAGTGCGTTATTACTCACCGCACTTATTACACGGTGGTGTGACGTGTGTTTTTGGAATGGATACTCGGGTGGTACTATGACGCAATACGCTTCTTCCCTTCGTAGCCTCGCGGCAGGTTCGGTTCTCTTATTCCTTTTCGCTTCGCCTGTAAAGGCAGAGGAACAAACGATCGCGCCGCCGGGCGTTGATGCGCGAGCCTGGATCTTAATGGATTACGCCAGCGGTAAAGTACTGGCGGAAGGCAATGCCGAT [...]
+CGGCGATGATCAGCCCCGCGACGATAGGCCAGCCGCCCATCACGATCAGCGAGCGAACCGTACGTCGGGAGGTTAAACGCGCTAACACCAGATTACCGGCAATGAGCGCGCCAAAAACGGGCACCTGCAGCAGACCATATTCATAGCTGCTGAGCTGTTCGCCGCTAATGATGATAATCGGCGACTGCGCAATCCAGGCCAACAGCGGCAGGCTGACAAATCCCAGCGCTAACGCCCCTGCGACGAACCGCCGATTTTTTATCACCAGCCGATAATCCCGGCCAAGCGCCTTAAATGACAGCGTTTCGCCCCGCCGCGTGGCGGTCTCCGGCATTGCGCGCTGTAGCCCGAAAAAGGCGATAGCGGCCAGTGCGGCAAATAAAATAAACATCCCCTCCCACGGCAGAACATGCACCCATGCCGCCCCAACCAGTGGTCCCAGTAGCGGCGCGATTAACGCCACGTTCGCCATCAGCGCGGTAATTTTTATAC [...]
+NODE	476	2531	118966	117675	0	0
+TCTGGCGATGGTCAGCAGCATCATTCTGTTTTCGGTGGGAACCCTGGCCTGCGGGTTTGCGCCCGGTTACACCACCATGTTCATCGCCCGACTGGTGATTGGTATGGGCATGGCGGGCGAATATGGTTCCAGCGCGACCTATGTGATTGAAAGCTGGCCAAAACATTTACGCAATAAAGCCAGCGGTTTTCTGATTTCCGGCTTCTCCGTCGGCGCGGTCGTTGCCGCGCAGGTGTACAGCCTGGTGGTGCCTGTCTGGGGCTGGCGCGCGCTGTTTTTCATTGGCATTTTGCCAATTATCTTCGCTCTCTGGCTGCGGAAAAACATTCCGGAAGCGGAAGACTGGAAAGAAAAACACGCGGGTAAAGCGCCGGTACGCACGATGGTCGACATTCTTTATCGGGGCGAGCATCGCATCATCAACATTTTAATGACTTTCGCCGCCGCCGCTGCGCTGTGGTTCTGTTTTGCCGGTAACCTACAAAATGCTGC [...]
+ACGCGTCCACAGCCGCATACGGGCCCGTGTGGGTCCGCCAGGGTGTGTCCCAGGTGCCCGGCCAGACCGCCTTTTCCGGTAAGGAGCTTGCCGTCACAGACAACGCCGCCGCCAACGCCGGTTGAAACGGTGATAAATACCATATCGCGGATATCATCAGGGAGCGCGTGATACTCCGCCCAGGCCGCCGCCTGCGCGTCGTTCACCGCCAGCGTCGGCAGGCCAGCGATCGTTTCCAGTGTTTGCACTAACGGAAAGTGTAGCAAGCCGCCCAGATTATGGGGGTTTAGCGCCAACAGCATCCCTTCCTGAATGATCCCGGTAGAAGCTATCGCTACCTGACGCGCCTCTGCCCGTAGCGGTTCAACCAGCGCCTTTAATGCTTCACGTAACGCATCCGGCGTTTTGCTCGCGGGGGTCGGCAGCTCGCGACGCTGGCTAATGCGCAAGTTGTTGTCGATGAGCGCGGCGGCAAGTTTAGTCCCGCCAATA [...]
+NODE	477	2804	137496	136557	0	0
+GATAATGATAAACGCGCTGCTCCACACATCAAAGCGACTGCCGTTATGGACGGCTTTGCGGATCCCCAGCGGGATAGACACCAGATAAATAATCAGCGTGCTCCATAATCCCAGGGTAATGGAGACGGGAAGACTATCTTTGATCAGCGTTAGTACGGATGCGCTGCGAAACATACTGTCGCCGAAGTCAAAAGAGAGATAGTCCCGTAGCATCTTGAAATAACGCTCATGCAGCGGTTTGTCGAAGCCGTAGCGATGGGTGATCTCCGCGATCACCTCCGGATCGAGTCCCCGGCCGCCGCGATAATGGCTGTCGCTGATATTGCCGACGCCGGTTTGCGCATGACTGGCGCGAACGCCTTCGCCGCTGGCGCCGGGCAACGCGCCGCCCTGGCCAAATTCAATCGCGGCAATAGCCTGATCGACAGGGCCACCGGGAGCGATCTGCACGATAAAAAAGTTAATGGTAATAATGGCCCATAGCGTGGGGAT [...]
+TCGGTACAGGCCATAGCGCCCTGATTTATCTGGAGCGATTTACTTTAGATTATCTGAAAATCGATCGCGGTTTTATCCAGGCGATCGGCACGGAAACCGTCACGTCTCCGGTTCTGGATACCGTGCTGACGCTCTCCAGACGCCTGAATATGCTGACGGTGGCCGAGGGCGTTGAAACGCCGGAGCAGGCCCGTTGGCTACGCGATCACGGTGTTAATTACTTGCAGGGGTACTGGATTAGCCGTCCTTTACCCCTAAAAGATTTCGTGCTGTGGATGTCGGCGCCTTCCGTGCCTGAATGGTAGTCCCCTTACGGTTTTAACGGATTCACATCAGACGCAACGTCACTTATTATTCAGCGAAACGCCTGCCGGTTTGCAGCGGGCAATACGATAAGGAAACCGCCTTCAGATGATTGCGCGCGTAATGCTTCTGCTTGTCGCACTGGTTAGCGCTGGCGCCCAGGCCCAGGAAATCAAAGAAAGCTACGCT [...]
+NODE	478	203	11471	11416	0	0
+TTGAACTCCAGGTTCTGTGTTGCCTTGTTTCCCGCCGCGTCGGTCGCTTCCACCGTCAGAGTGTGAGAACCGTTAGCCACATCGGTCAGCCAGGTGTAATCCCAGACGCCCGACGTCGAGCTCTGTGTGGCGTTAAACCACGTTTTGCCGCCGTCAATGCTCAGGCGCACCACGTTGACATCCGTCGGTACCGTCACCTGGAA
+CGGCGGCAAAACGTGGTTTAACGCCACACAGAGCTCGACGTCGGGCGTCTGGGATTACACCTGGCTGACCGATGTGGCTAACGGTTCTCACACTCTGACGGTGGAAGCGACCGACGCGGCGGGAAACAAGGCAACACAGAACCTGGAGTTCAACATCGACACCCTACTGTCAGAGCCGACTATCGCTCTGGACAGCACGGACG
+NODE	479	1904	101831	101030	0	0
+AATAACATTGAACTGGTCAATGACAGCGGTATTCCCGACGATAATCTGACTAATAATGTGCGTCCGCACTTCCAGGTGACGGTACCGACGGATGTTAACGAGGTACGCCTGAGCATTGACGGCGGCAAGACGTGGGTAACAGCGGCGCTGAAGGCAGCCGGGGTTTGGGAATATATCTGGCCGGATGATGTGACCGATGGCTCCCATACCGTGACGGTGGAAGCAATCGATGAGGCGGGAAATAAGGCAACACAGACGCTCGATTTCACCATCGATACCACTCTGTCTGTGCCGACCCTCTCGCTGGACAGCGCAGATGACAGCGGCATCGCGGGCGATAATATCACCAATGTTAAAACGCCGGGCTTTACCCTCAACAATATTGATACCGATGTCAGCCGGGTGATAGTGGAGGTAATGCACAATGGCATTAAACAGGAGGTGCCACTGGTTCAGACCGGCGGACAGTGGCGCTTTGCGCCGACCAGCGAC [...]
+ACGCACGTTATTAGTCAGATTATCGTTGGGAATACCGCTGTCATTGACCAGTTCAATATGGTCAATGGCGATTTGCGTATCGACAGTGACCTTCAGCGGCGCTGAGTGGCGAATATTACCCGCCTCATCTTTCACCGTTACCGTCAACGTATAATCGCCATCGGCCCACGCGCTGCCGGGTACAAAACGCCACTGCCCGCCGATCTGCGTCAGCTCCACCTCCTCGCTGCCACCATCGCGCATCACCTGCACGACGACCTGAGTCACGTCAGAATCAATACCGCCGATAATAAAACCCGGCGTTTTAACGTTAGTCTTATTATCGTTGGCGGTGCCGCTATCATCTGCGCTGTCCAGCGTGATGGTCGGTGTCGACAATGTGGTATCAATGGTAAAATTGAGCGTTTCCGTCGCCGTGTTGCCTGCAACATCGGTTGCTTTCACTGTCAGGGTATACGTATTTTCGACCAGTTCTGTCGGCCATATATACTC [...]
+NODE	480	6	771	771	0	0
+CATTGA
+CTGCGG
+NODE	481	3554	177433	174046	0	0
+CGCATCATCAACGTAGCAGACCGCGTCATCCAGAAGCCCCAACACGTCCGGATTACTGAGCTTTTCGCGGTGCGCGCCGAGGGCGGAGATATAGCTGGTAAAAGTGTGATTGAGGCAAAGCAGCCTGAACGCCGCCTCCCGGGTTTCAGCCGTGACGTCGGGTTCGCTCGACATATTAGAAACCACGGATGCCAGTTCTGCATCGCGGTTGTGCGCGTCGCGTCTGGCAATGCGATAGGCCAGGCGGTTATCCCGTCCCTGGTGATATTGCTCAAGGATCGCATCAAGGTAGCGGCAATTAGCATCGGTGGCGCGCTGGAGTACCCGGGGAAGGTTGCGAAAGCGCCAGTCCGGCCAAATAAAGCTGACCGCAGCCCAGGCGATAGCGCAGCCAATTAACGTGTCGACGACGCGCGGTAACGCTACCTCAAAGCCTTCGCCCAGGAGGTTAAAGCAGAGTAATACCAGCAGGGTGATGAACATCGTCGCATG [...]
+TTTGGCCTGCGCTTTTTTCTCGCTACACTGCTGACGCCAGGTGCGCAGAAATAGCTGATGCCGCGCGGTGGCGTCACTTTCCAGCTTACTGACAACCGGCGCTTTTTTACTGCCTTGCTGAATAATATACAGCGCCAGCGAATGGAACGTACGGGCAGTAATCTCTTCCGTATGTAAGCGCTCGCGGATACGCTCATCCATCTCCTCTGCCGCCTTGCGGCCAAACGCCAGTAAAAGAATTTGCCCCGCATCGGCTTGTCCGCGCGCCAACAGCCAACCCGCGCGCGCCACCAGTACCGAGGTTTTGCCGCTTCCCGCGCCCGCCAGTACCAGTAACGATGATTCGCCGTTAACCACCGCCCTGGCCTGGGAAGGATTAAGCGGAGAAGATTCTATCTGCGTAAAAAAGTCGGCATGCGCTTCCAGCATGGCATCGGCATACGCCTGATTATGCTGCTGCCGACTTCCCTCGCTATCCTGTAACCATGCCAG [...]
+NODE	482	513	33857	33830	0	0
+GCATTCAGTGTTTTTTTTGAGCTTAAATGCTTTTTTTAGGCAACGTGACAGGTAATTATTCTAATCCTGTGATCTATAACCATTTTATTTTAGAATGTCTAATAATTACGCAATGTAACTTTTATGAATGGTAACAATATGAAATACAAGAGCTTAGTACTTTTCTCAATTTTGTTGCTGCTGGGGCAGAGCGCCTGCGCGGAACAAATTGGTTCAGTCGATACGGTATTTAAAATGTTCGGTCCTGACCATAAAATCGTGGTGGAAGCTTTTGACGATCCTGATGTCAAAAACGTGACGTGCTATGTTAGCCGGGCGAAAACGGGCGGCATAAAAGGCGGATTGGGGCTGGCGGAAGATACGTCTGACGCCGCCATCTCTTGTCAGCAGGTCGGGCCTATTGAACTGAGCGACAAAATTAAGAACGGCAAGGCGCAGGGAGAGGTGGTTTTCAAAAAACGCACCTCATTGATATTTAAGTCATTGCAGGTC [...]
+TGCGTTTTTTGAAAACCACCTCTCCCTGCGCCTTGCCGTTCTTAATTTTGTCGCTCAGTTCAATAGGCCCGACCTGCTGACAAGAGATGGCGGCGTCAGACGTATCTTCCGCCAGCCCCAATCCGCCTTTTATGCCGCCCGTTTTCGCCCGGCTAACATAGCACGTCACGTTTTTGACATCAGGATCGTCAAAAGCTTCCACCACGATTTTATGGTCAGGACCGAACATTTTAAATACCGTATCGACTGAACCAATTTGTTCCGCGCAGGCGCTCTGCCCCAGCAGCAACAAAATTGAGAAAAGTACTAAGCTCTTGTATTTCATATTGTTACCATTCATAAAAGTTACATTGCGTAATTATTAGACATTCTAAAATAAAATGGTTATAGATCACAGGATTAGAATAATTACCTGTCACGTTGCCTAAAAAAAGCATTTAAGCTCAAAAAAAACACTGAATGCTAAAAGAACAAAAAATGCTATTATCCTCT [...]
+NODE	483	8208	420727	416853	0	0
+TAATGTGAGATTCGGATTCGTTAAGCAACTGCTAGTGGATAAACATTACGTTTATCCCCGTCATACTTCAAGCCGCCAGAGGAAACACCGTTACGTCGCCGCCTGTGGAAACCTGAAGGTTCGGGGATAAAATCGTTGCCAGTAGCACTCATTTTATCCTTATATTAGTATCATACTCTTAATCTTTGCTGAATCGAAGCAGCAACAAATTCATTCGCCCCATCTGCTTTTTATTTGCGCAAAGCCCGGCAGATCAAATGTGAAAGCAGTTCCAACTGTCGGGCCGTTTCCATACTTAGCCAAACATAGCCGTGGATGGGGGTTTCAGCCACCGCGTCGCCCTGCTGCTCGTTCATTAGCTGTCGCAACTCGGCAGCAATATCATTCAGTTTACCGGTGTTTGCCAGTACCGGCTGCGGGTTGCCTTCAAACAACGCGTGGGCGATCGTTAGCAAGGTTTGCTGCGTCATCTGCTGGGTTTCACGCAATGTG [...]
+ATCGCGATCTGCGGTCGTAAGGGTTTCTCCGGCTTTCTGTCGTAAAACTGCATCCGTGAGTTTCTTAGCCCAGTCGGCAGGTGATGACGGGGAAGACGTAGCCTGAAGTGAGAGGGAGGGTGATACTGGTGGTGTTCTACCTTCAGAAACCGTGGGCCTGTTATTGGCTGATACAGAGACTCCACCGGGGAGCGGGGCCGCACCTGTCACTCTGTAATTATAATCACATGTTTGATTTGCAATATGCTTACGCATGAATGCTGCATTCATTTTTGAGACATCTTCTTCTGAAATATTTTTCTTACCTGCATTATTTGTATCTTTAATATTTTTAACAGTAATCAATGTGTTATTTAAGGTGTTTTTATCTTTCGGCTGAAAGAAGTCTTTTATTTTTTGTGGTAACGCGAACTCAATCGATGAGCTCTTTCCTGTTTTAAGTTTTTCATTTAAAGAAGCATGCGTGTTTTTAACACTGGTTATTTTTGAGGC [...]
+NODE	484	9384	552677	548548	0	0
+GGGCTTTTTCTTTGCATGTCATTTAATTATTGCTCAATTCGCAAAAATCCTCTGCATTTCTCGCTCTTTTTCTACAAAGCGCTGAAGGTCATAATTCCCTCAGTTAACGAACATAGTGATTAAAAAGAGGAATTCTATGACTATCCCTGCATTCGGTTTAGGTACTTTTCGCCTGAAAGACGACGTGGTTATCGCTTCTGTTAAAACGGCGCTTGAACTGGGCTACCGTGCTGTCGACACTGCACAGATCTATGATAATGAAGCGGCTGTTGGACAGGCGATTGCTGAAAGCGGTGTACCACGTAATGAGCTGTACATCACCACCAAGATCTGGATTGAAAACCTTAGCAAAGACAAACTAATCCCAAGCCTGAAAGAGAGCCTGAAAAAACTGCGTACCGATTATGTCGATCTGACGCTGATCCACTGGCCATCTCCGGGTGATGCTGTGTCTGTCGAAGAATTTATGCAGGCATTGCTGGAAGCTAAAAA [...]
+GTGATGTTCCCGCTGGGAACGAGGCGAATATTACGGTTTGCGGTGTCGCCCGTCAACGCTTTTTCTCACCTTTTGAATCAGTTGCTGCAAAAATCGCCCGAAGGATGATTTTTATAGCCTAAAAAGGAATAAATTACGCCCGCCAAAGGCAACTTCCGCCCTTTTTCTGCACCAGATCAAGCCGCGATTCATGCGCAGCCAGCTCTTCCTCAGAGGCAAAAACGACCCGTAACCGGCTGGCCTGGCGAACGATTCGCTGAATGGTCGCCTCACCTTGCTGCCGTTGCGTCTCTCCTTCCATCGCAAACGTCATGGACGTTTGTCCGCCCGTCATCGCCAGATACACTTCGGCAAGGATCTGGGCATCGAGCAATGCGCCGTGCAAAGTACGTTTGCTATTATCTATCTCATAACGCGAACACAGCGCATCAAGGCTGTTACGCTTGCCGGGGAACATTTTCCGCGCCAACGCCAGGCTGTCGGTAACTTTGC [...]
+NODE	485	1574	104650	104205	0	0
+CAAAAAGAGCAATATTCTGGCTTTCTGGGCAACTCACACTAACGTGAACCTCCTGTGAAGACATTTGATTCCAGCCTTGCTGAGAATTGACGATATCATCTTGCTTAAGCCAGCCAAAGCTGACGTTTGGCGAAGAGAACGTTATTTGGCAGTCATCGTCGGCTCGGGCTGATGGAGGGAGTAGTGCGGTGAAGAGACAACATATAGCAATCCCCAACCATTTGCTGTTTGATTTCATTGACAGACTCCCTTTGCCGTTTCATAAAATGCCTCTTTATCCTGGGTTTTCTGCAGCGTGTAGTGGATGCGACACAGACGATTCATATCATCATCAGCGGCATATAACGCAGGATTATCCCCAACATCGGTGATAAATACGCGTCCGCTGTCGACAGCGCTGACCAAATAGTTATTTTTTTCATCTACAATGCTGGTGCCTTTAGGTAGCCATGAGCCGTCCGGACGCTTTACTGCCAGCATCACACGGCGTGT [...]
+TCTGGCGTACTGGCACAAGACTATCAAGCGGCAGGAGGTATGCTGCAATGGCTTCCAACCAACAAATGGACGTTTTCCGGCTCAATGCTGGGCAGTAAAGCGTCCTTTGGCGAATCTCTGCAGGGTGCGAAAAGTGAACTACGCGCCAGCATGGCGCTGCCCGGGGAAATTAGCCTTGACGTCAGTACCGCCCGCTACAGCGACGGATACCGTGAGTTAACGGATGCGCTCAATAAAGATGCTTACGAATACCAAAGTAGCTCCAGTGCTAATATCGCCTGGAACCATAATCTGTTAGGTACCTTCTCTCTGGGTTATTACACTTATCAGGCTACGGATAATAACAACGACTCTCGCAGTATAATGGCTTCCTGGGGCAAAACATTTAAATATGCCTCAATTACCGCTAACTGGCAGCACGCTGTTAATCAGGATGATGAGAATCATAACGGCAGTAATGATGATGATATGTTTTACATCAACATCAGCATT [...]
+NODE	486	26	57	57	0	0
+TGTATGAAGGAATGGTGTATGCGGAT
+CCCAGCCTGTGGGCACGATCAATAAC
+NODE	487	654	30770	30690	0	0
+CGGCGTTGCTGCTGTGGGTCGGAGGCTGGCTATGCTGGCGGCTGTGGCGCAGCGGCAAAGCGGCAGTCGATCGTTTAACCGCGTATTTCCCCCGCAGCCGTTTGCTGTATCTGGCGCCGTTGACGCTCGGGATTGGCGTGGTCGCGCTGGTGGTGCTGGTTCGCCACCCGCTGATGCCGGTATATATCGATATTCTGCGCAAAGTTGTGGGTTACTAACGATTCCTTTGCCGGATGGCGGCTTCGCCTTATCCGGCCTACAAAATATGGGATTTGATGCCCAATAGCGCTGAGGCGCTGGCCTGACCGCTTAGTAGCTCGTCTGTTTTGCCTTGCCACGCAATGCGTCCGTCGGCGACGACGATTGACCGGGGCGCAATTCGCGCCGCATCTTCCACGCTGTGCGAGACCATCAACAGCGTGAGCTGTCGCTCGCGGCAGATATCGCTGACCAACGTCAGCATCTCCTGGCGCAGCGCGGGATCGAGCGCGG [...]
+AGCCTGATGGCGCGTTTACCGGGCGAACTGTCCGGCGGCCAGCGTCAGCGGGTAGCGCTGGCGCGCTGCCTGGTACGTGAACAGCCGGTACTGCTGCTGGATGAACCGTTCTCCGCGCTCGATCCCGCGCTGCGCCAGGAGATGCTGACGTTGGTCAGCGATATCTGCCGCGAGCGACAGCTCACGCTGTTGATGGTCTCGCACAGCGTGGAAGATGCGGCGCGAATTGCGCCCCGGTCAATCGTCGTCGCCGACGGACGCATTGCGTGGCAAGGCAAAACAGACGAGCTACTAAGCGGTCAGGCCAGCGCCTCAGCGCTATTGGGCATCAAATCCCATATTTTGTAGGCCGGATAAGGCGAAGCCGCCATCCGGCAAAGGAATCGTTAGTAACCCACAACTTTGCGCAGAATATCGATATATACCGGCATCAGCGGGTGGCGAACCAGCACCACCAGCGCGACCACGCCAATCCCGAGCGTCAACGGCGCC [...]
+NODE	488	4848	263927	260833	0	0
+AATAGCTTCTTTGTGGCCGGTGAGTACCGCTTTTGAACCGCTGCCATTGCCGACTGTTGCTTTGCGTCGCTGGTGTGCTGTCCGGCGTGGCGCAGGCGGCGCTGCCCAGCCGCAGTCAGGTGGACGGCTGGCTACAACAAATGGGGGATAGCGATACTTACGATGCCGCCAAAGGCGTCAACTGGGGAGTAATGCCCGGGCCATTTTATACCCCTGAACTGGGCCTGGGCATCGGCACCGCCATCGTCGGTATGTATCGCCCCGATCCTGCCGATAAGGTTAGCCAGGTATCCACGCTGTCGCTGAGCGGCTATTTCAGCTCCACAGGCGCTTTTGGCGTAAGCCTGCAAAATTACGCTTTTTTCGCGCAAGATCGCTGGCGTTTCTTCCTCACTGGCGCATTGAGCGACACGCCCACTTACTATTGGGGACAGGGTTTTGCCGCCGGTGATAAAGACAGCCATAAGCAGGCCTATACTGCGCAGGTGCTGG [...]
+AGAAAAAGAGATTGCGCAAACGCTTGGGCAACAGGGAACGCTGGTCGGTGAAATTCTCACGCTGCGCGCACAGCAACAGCAGTTAAGCCGCCAGATTGCGGAGGCGGCGGAAAGCATTGCCGCCCAGGCTCACGGTCAGGCCAATAATGCAGCGACATCTGCGGGCGCCACCCAGGCCGGTATTTACGATCTTATCGAAAGCGGTAAAGGGGATCAGGCTGAACGCGCGCTTGACCGATTGATTGATATCGACCTTGAGTATGTGAATCAGATGAATGAGTTGCGGGTCAATGCCCTGCGGTTTAAGCAGCTCATTGTGACCTTAAAAGACGCGCAAGGGCTGAGCGATGCCGAGGAAACCGATGAAAAACTTAATCAGTTGGTTAAAATTTTATCCCGCCGCCAGCAGCGTATAGAAGATCCTACCGTTCGCGCCCAAATCGCCGACGCGCTGGAGAAAATAAACCAGTACACCACGCTGGTTACCCTGTT [...]
+NODE	489	2296	119747	118287	0	0
+CAACGGGCGCTTGGCCTGAGTAGCGCTCTCCAGAGTTTTCGCATAATAGCCCCTGTAATTATATGGTTTAATGCGCAGATCTTATTCCGCAAATATGAACAGCGTCACTGGTCAGGATGAACGGGATACGGCAATATATGAACAGATATGAACAGAAAGAGACCGCGCGCAGGATGTCACATCACATTGTTATTGTTGAGGATGAACCTGTTACTCAGGCCAGATTACAGGCCTATTTTGAGCAGGAGGGGTATCGCGTTTCGGTGACCGACAGCGGCGCGGGCCTGCGTGACATCATGGAGCATGAGCACGTTTCGCTGATCCTGCTGGATATCAACCTCCCCGATGAAAACGGGTTGATGCTGACCAGGGCGCTACGAGAACGCTCCACGGTGGGCATTATTCTGGTGACGGGGCGTTGCGACCAAATCGACCGCATCGTCGGACTGGAGATGGGCGCGGACGACTACGTCACCAAGCCGCTGGAACTGC [...]
+AAGATGGTTAATTTTAAGGCTTTGCGCTTTCAGCATCTTCCCCTGCGCCAGCCAAACGCCCTCACTGTCGGCATTGGTCAGATTTTGCGCAGAAAAGAGCTCGTAAGCGCTGGCTTCGCTTAACTGCCTGGCCATATTCATCGTGGGGAGCAGCGCTTGCGTATTGGTTTGCTCCACCTGACTAATGACGCGCAGGCTTATCCAGCCGATCACGGTACTGAGCAGGGTGAGTGCCGCCATCAGGGCGAAGGCCAGCCATAATCTGCGGGTCAGTGAAGGCGTTGACATTTATGCGCCGCGGGTGAAATGGGTTGAGTTGCCGCCGGAAAAACCATTAGGATAAAACCTTGTTGCTGGTGGGGCTATCATGCGCGCGCTTATTTCGTTCTTTTTTTTGATAATCATCGTCTCGAATGTAGAAACGGCGTCAGCCGAAACCGGACTGCTACACTGGACGCGCGCCGATCGGGCGATTCCCTGGCGGCAAACGTC [...]
+NODE	490	5540	294816	292130	0	0
+GCGTTGCGCCCGGAAGCGCGATTCCTGGAACTGGTGCATCGTCTTGACCGCGATACCTCCGGCGTGCTGTTGGTGGCGAAAAAACGCTCCGCGCTGCGTTCGCTGCATGAGCAACTGCGCGAAAAGGGAATGCAGAAAGATTATCTGGCGCTGGTGCGCGGCCAGTGGCAATCGCACGTTAAAACCGTACAGGCGCCATTATTAAAGAACATTCTGCAAAGCGGCGAACGCATTGTCCGCGTGAGCCAGGAAGGTAAACCGTCAGAAACGCGCTTCAAGGTGGAAGAGCGTTATGCCTTCGCCACGCTGGTGCGCTGTAGCCCGGTCACGGGCCGTACGCATCAGATTCGCGTACATACCCAATATGCCGGTCACCCGATTGCGTTCGACGATCGCTACGGCGACCGTGAGTTTGATCAACAGCTTACCGAAGCGGGAACCGGTCTTAAACGTCTCTTTCTGCACGCCGCGGCGCTGAAGTTCACACATCCG [...]
+GTTATTAGCCGCCAGCGTCTCATCGACAATATGCGCCAGTTCAGTGACCGCCACTTTAAAGACTTCATTACCCGCCATCGTCAGGTAAATCGGGTTATCCGGATTTACACGATCGGCATTCGGCAGGGTCAGTAATTCACCGTAACGGCCATCGGCATGAAGATGAGTGGAGATAATACCCGGTTCTTCAGAAGCGCTCAGTACGGCCGCGCCTGCGCCATCGCCGAAAATAATGATCGTACCGCGATCGCCAGGATCGCAAGTGCGGGCTAATACATCGGAACCGACCACCAGCGCGTGTTTAACCGCGCCGGATTTAACGTACTGGTCGGCGATGCTTAACGCGTAGGTGAAACCTGCGCACGCTGCCGCGACATCAAACGCCGGGCAACCTTTAATACCGAGCATACTTTGAATCTGACATGCCGCGCTTGGAAATGCATGCGTTGCTGATGTGGTAGCCACCACAATCAAGCCAATTTGGTCTTTATC [...]
+NODE	491	407	16985	16985	0	0
+GCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACGACGGGGAGTCAGGCAACTATGGATGAACGAAATAGACAGATCGCTGAGATAGGTGCCTCACTGATTAAGCATTGGTAACTGTCAGACCAAGTTTACTCATATATACTTTAGATTGATTTAAAACTTCATTTTTAATTTAAAAGGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCTTTTTCAAAATCTGATAGCGTTCAAGACGCTTTGTTTATGAAGCTGGTTGAGATACATTTCCAGAGGTCAATGCAATCGTGGCCGAAGCGCCGCCTCAAACCAACGTTTGTGATACATGCTGATCGGATAT
+CACGATTGCATTGACCTCTGGAAATGTATCTCAACCAGCTTCATAAACAAAGCGTCTTGAACGCTATCAGATTTTGAAAAAGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTTCATCCATAGTTGCCTGACTCCCCGTCGTGTAGATAACTACGATACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAA
+NODE	492	127	5865	5865	0	0
+CCAGGGCGATCATCACGACCGCCGGAAGCAAGATCATCATAGATATTGTCCCGTTCGACACCTGCGGCGCGCAAGGCGTCGTGCTGCAGGTCGAGAGACTGCGAGCCATCGGCTTTGGAGACGCGGG
+GCCTTGCGCGCCGCAGGTGTCGAACGGGACAATATCTATGATGATCTTGCTTCCGGCGGTCGTGATGATCGCCCTGGCTGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAA
+NODE	493	4064	221589	219154	0	0
+TTTACCATTCCTGACAGCAATACAATAAGAATGAAAACGCCGCGACCAATCCTGATAATAAAAGTCGTCGCTACGTTCTCAGTATGCTAACGTTGACTTTCCCTGATGCCGTGGTAGAAGCAATGAAGACGTTTTTCAGACCCGTGTTGTTTGGCAGCCTGATGGCCTTATGCGCAAATAGCTATGCGCTTACTGAATCCGAAGCTGAAGATATGGCCGATTTAACGGCGGTTTTCGTTTTTCTGAAAAATGACTGTGGTTACCAAAATTTACCCAACAGTCAGATTCGCCGTGCGCTGGTCTTTTTTGCCCAGCAAAATCAGTGGGACCTGAGTAACTACGACACCTTCGATATGAAATCGTTGGGCGAAGACAGCTACCGCGATCTTAGCGGCATCGGTATTCCGGTCGCTAAAAAATGCAAAGCTCTGGCCCGCGATTCTCTGAGCCTGTTAGCCTACGTTAAATAATCCTCCGCGATCCTATTGCTGA [...]
+CCGCGGGCATTGGGCCGGAAATTATTGTTAAAGCGCTAAGCGAAGACGGTCTCAACGGCGCGCCGCTGGTGGTTATTGGATGCCTCGCAACGTTGAAACGTTTACAGGCGAAGGGCATCACGCCGAACGTCGAGTTACGGGCCATTAAACGGGTCGCCGAAGCGCGTTTTGCGCCCGGCATCATTCATGTGATTGATGAGCCGCTGGCGCAGCCGGAGGCGCTGGAGGCCGGGAAAGTTCAGGCGCAGGCGGGGGATTTAGCGTATCGCTGCGTGAAGCGCGCCACCGAGTTAGCGTTACGGGGCGACGTACAGGCTATTGCTACCGCGCCGCTGAATAAAGAGGCGCTGCACCTGGCGGGGCACAACTATCCGGGCCATACCGAGCTGCTCGCGACCCTGACCCATAGCCGCGATTACGCGATGGTACTTTACACCGATAAACTAAAAGTGATTCACGTTTCAACGCATATCGCGCTGCGTAAATTCCTTG [...]
+NODE	494	1778	105824	104920	0	0
+ACAAGGTGGCGCGTATTGCCACCACTATGCCGTATATCCCCGGCTTTCTCTCTTTTCGTGAATATCCTGCGCTGCTGGCGGCGTGGGAACAGCTCTCGCAAAAGCCCGATTTGCTGTTTGTGGACGGTCACGGTATTTCGCATCCGCGTCGGCTTGGCGTCGCCAGTCATTTTGGACTGTTGGTGGACGTGCCGACCATCGGCGTAGCGAAAAAACGGCTATGCGGTAAATTTGAACCACTTTCCGCCGAACCTGGCGCACTTAGCCCCTTAATGGATAAAGGCGAGCAACTGGCGTGGGTATGGCGCAGCAAGGCGCGCTGTAATCCGCTGTTTATCGCGACAGGGCACCGGGTCAGTACTGACAGCGCGCTGGCGTGGGTACAGCGCTGTATGAAAGGGTATCGCCTGCCGGAGCCGACGCGCTGGGCGGATGCCGTCGCTTCCGGGCGTCCGGCGTTTGTTCGTTGGCAAGAAATTCAGCGCTGATTCA [...]
+GGCAAAGCCGCTGGCAGTAAACGGAGGCGGTGAAGCGTTATGACTGCAGGCAGTCAGCAACAGCGCGCCAGAAAACAGAAACGCGCGACGCCAGACGGACAAAAGGGGCTGATAAGCCCCTTCGATAAAACTGTTCACAGTTACGCGTCTTACTTAACTGCGTCTTTCAGAGCTTTACCAGAAACAAACGCCGGTACGTTAGCGGCGGCGATTTTGATTTCTTTACCGGTCTGTGGGTTACGGCCAGTGCGCTCAGCACGGTGGTTCACTTTGAAGGTACCGAAACCAACCAGTTGTACAGCATCGCCTTCTTTCAGAGACTCAGTAATAGCAGCCAGAGTGGATTCCAGAGCAGCTTTAGCCTGGGTTTTGGACAGTTCTGCTTTGTCTGCAATTACATCAATCAGTTGAGTCTTGTTCATAAGTTATCCTTACAATGTGTTTATCGCTTGCTAAGCATCGAGTGCGACGGAAATGCCAGAAAAGCACTCT [...]
+NODE	495	1063	48821	47714	0	0
+CGCTTAAAAAGATGAGCAGGCCGATGAACATTCCCACGCCCGCCAGCGCAAAGCCGACATGCCAGCCATACCACTGCGCCGCCAGACCACAGGCGATCGGCGCGGCTATCGATCCAATATTCCCGGCGGCGTAGAGCAGCGAGAAGCCCCCGTCGCGGCGGTTGTCATCAGGGGCGTAAAGTTCTCCCAGCAGACAGCTAATATTGGATTTAAACAAGCCGTAGCCGCAGATAATAATGGCCAGCGCCGCATATAAACTCAGCGTTGAATCAGATTCTAAGCCCAATACCACATGACCCAGCGTCATCAACAGGGCGCCGGTGATAACCGCCACGCGGTTGCCAAGCAGACGGTCGGCAAGCCAGCCGCCAAGAATAGGGGTAACGTAAACTAAAGAGGCGTAGGCGCTGAAGAGGTTGATCGCGTGGCTGTCATTAAAACCAAGCTGGTGGGTAAGATAAAGGATGAGTAAGGCACGCATGCCGTAAAAGC [...]
+AATATGCGCATCCAGGAACTGGCGCAGAATATTCATAAACTGGTCGAACATCATAATCTGCCGGACTTAATGTACCGTGCGTTTGAAGTGCTGCCGAAAATGGTGATGACGCCGTATACTGCGTTCCAGAAAGAGCTGCATGGCGAAACGGAAGAGGTGTATCTTGAAGAGATGGTTGGACGCGTCAACGCCAACATGATCCTTCCTTACCCTCCGGGAGTGCCGCTGGTGATGCCTGGTGAAATGATCACCGAGGAAAGCCGTCCGGTACTGGAATTCCTGCAAATGCTGTGCGAAATCGGCGCCCACTATCCGGGCTTCGAAACCGATATCCACGGCGCCTATCGTCAGGCAGACGGACGTTACACCGTTAAAGTGCTGAAAGAAAATACGAAATAAGTACCAAAGGGAAGTGGCTTGCCACTTCCCTTTTTTCACGCAGCAAGGAGACTTTATGAAAACACCCTCACAACCGCGCGCGATTTTTTACAT [...]
+NODE	496	51	2972	2972	0	0
+CGCGCAGGTTCAGGTCAAAGGCGCGTTTAAATTCAGTGAGCGCGCGCAGCA
+GTCAAAAACATTCTGCCGGCACTGTACCGCGAAGCGCCTGAGTTTTATGAA
+NODE	497	5334	291696	288120	0	0
+CTTGGCTTTGCGCCCTTTAACCGCGTGCATCTCGACTTAATGGGACTGTACGGCGAAGATGAAACCTGGGGGGCTGGCGCGCAGCTTACGATGACATTCTGAGGCGTTTTCACCGGAGGCGCTACGCCTCCGGTTTAGCGTTATGCTATAGTGACGCCCCTTTTTTAACCGGATGCTTATTTATTCGCCATGCAGCCTGAAACCCAGTCCTCCGCTTTACCTGCTTATCGCTTCTCCATCGCGCCTATGCTCGACTGGACGGACAGACATTGCCGCTATTTCCTGCGTTTGCTGTCTCGCCAGACGCTGCTCTACACCGAAATGGTGACCACGGGCGCAATTATTCACGGTAAGGGTGACTATCTGGCTTACAGCGAAGAAGAGCATCCGGTCGCTCTACAGCTTGGTGGAAGCGATCCGGCTCAGCTTGCGCATTGTGCAAAGCTGGCGGAAGCGCGTGGCTACGATGAAATTAACCTCAACGTGGGGTGC [...]
+TTTTGTCATTTCAGCGATACGTTCAACCGGCAGACCTTCGCCCCATAAGACCACCGGATCGCCCGCGTTATCCTGCGCGTTTGGCCCCAAATCCACGCAAATCATATCCATCGCCACCCGCCCGACAATCGGGACTTCACGACCATTGACCAGTACTGGCGTACCGGAAGGCGCCGCTCGTGGGTAGCCATCGCCATAACCCATCGCCACCACGCCCAGGCGCGTGTCGCGCTCACTCACCCATGTCCCGCCGTAGCCCACCGGTTCGCCCGCTTTGTGGTCACGCACCGCGATCAAACTGGAGGTTAAAGACATCACCGGCTGAAAACCAAAATCCGGCCCCCAGGGTTTGTGTTCCAGCGGCGATACGCCATACAAAATGATGCCCGGACGCGCCCAGTCAAAGTGAGACTGCGGCCACAGCAGAATACCGCCAGACGCGGCAATAGAGCGCTGACCGGGTTTACCCCGACAGAAGGCATTAAAAATGTC [...]
+NODE	498	970	41458	41244	0	0
+CTGTTCGGCCACGTTAAGGGGGCGTTTACCGGCGCGAGAGAGGAGCGTGCAGGGCTGCTGCGCAGCGCCGACGGCGGCATGTTGTTTCTTGACGAAGTGGGAGAGCTGGGCGCGGATGAACAGGCCATGTTGCTGAAAGCCATTGAAGAGAAACGCTTTTATCCTTTCGGCAGCGACCAGCAGGTCAGCAGCGATTTCCAGTTGATTGCCGGCACGGTGCGCGACCTGCGCCAGCGAGTGGCGGAGGGGACATTCCGCGAAGACCTGTACGCGCGCATTAATCTCTGGACCTTCGAACTACCGGGCCTGCGTCAGCGCCAGGAAGATATTGAACCAAACCTTGACTACGAACTGGAACGCCACGCGGCGCTAACCGGCGACAGCGTGCGTTTTAATACCGAAGCGCGCCGCGCCTGGCTGAGCTTCGCCACCTCGCCGCAGGCCGCCTGGCGCGGTAACTTCCGCGAACTCTCCGCCAGCGTCACCCGCATG [...]
+ATGGTAAACATGGGCAGCATTAGTATGGTCGATGCGGTCTACACCGATACCCTGCCGCCGCCGGGCGTGATGCAGGTGTTGACGGAGAACCATATCCAACTGGAGCTGTGTTAATTCTGTAAAACTTCCCACGTCAGCCCAAAACGCGCCAGGTACTTACGCAGCCGGTCAGCGTCATTCACCGTGGCTTTCCCCTGACGGGAAACGTTGAATAGCTGCCGCCCGGCGTCGGAAAGGGTTTTCGCCTGGCGGCAGACGGCAACGACGTTTTCCAGTTGCATACGGTCAAACAGATCCAGCGCCGTTGCGTCAATGCCCGGCAGTCCGTCGAGCGCGGAGGGGCGATGGTCATTCCAGCTATAGCGCAAACGCGCGATTTCATCGTCTACCGTTTCGACCGTGATTCGCCCGTTGTCCGCCAGCGTCGCCATGCGGGTGACGCTGGCGGAGAGTTCGCGGAAGTTACCGCGCCAGGCGGCCTGCGGCGAGGTG [...]
+NODE	499	12664	715286	709117	0	0
+GATCTTTTTTGGAGGAGGAGAGTGCGCCGATGCCTGCGCCGACCAGCGATCCAATACCCGCACCAATGCCGGATTTACCTGCTTCGCGTTCGCCGGTGTAAGGGTTTGTTGTGCAGCCAGATACTGCCAGGGCGCCGCTCACGATGGCAGCAATCACAAATACACGTTTTTTCATCTTAAATCCTTATCACTTTTTTATTTTTACCACAGCGACCGTGGCGGTTGATTATGACGTCTGCACATGAAGAAAATTCCAGGGAAAACTCTGAAATTTGTAAGTAACATTGATCGGCAAAATAAATAATCCCAATAATTCAGGAGCGAACCTTGACCCACGCACCATCGCGTCATTCGGTATTGACCGCCGCACACTGGGGGCCAGTCCGCGTTGAAACCGACGGAGAACGCATTTTTGCCTCGTATGGCGAACTCCCGACGGCACACCAGAACTCCCTGCAAACCGTTGTGCATGACCAGGTGCACAGTAAAACG [...]
+CGATACAAAAAACCCTGCTCGTTGAGCAGGGTTTCTGAATTTGGTCGGTGATAGAGGATTCGAACCTCCGACCCCTTCGTCCCGAACGAAGTGCGCTACCAGGCTGCGCCAATCACCGAATGCGGGCGCATCTTACTGCTCAGGCGCACGCCCGTCAATCCCTTAGTCGCAAAATACAATTCAATCGGCGAGAAAGTCGGCAGACAACCTACTTCGCGGCGACTTTCTGCGCATCAGGAATATGGCACCAGTTGTTGTTCTGGTTAATGCCGCCATCCGGCGATGTATACCCCAGGCAGCCCATTATCGTATCGTACAGCTCCACATGACGACGCGGCACTTTGATCTCCGCCTGCTGTTTCAGGTGAGCGAACATCTGCGCATGTTGCGGACTGGCAAGATATTTATCCGACATCCATACCAGCATCGGAACGCGGAATTGCTCCGGCGGCGCCATATTGCGCGGCGTACCGTGCAAATGTTCGCGTTCGT [...]
+NODE	500	11653	627489	622153	0	0
+CGCGACGTAAATACGAAAGTGCTCAAACAGGACAAAGCAAAGATCCCTTTCCGGCGCGCAGCTCATTGCGTGATGCAGGCGCGCTTTCGAGAGGGTGATCCCCTGAACCAGCGAGTTGCAGTAAATATGCCACTGGTCCTGTAGGCGACGATGCCGTTGCGCGATGTAATCGGCCTTTTCGCTTATTTCCCAAATAGTCATGTCAGGTTACCCGTTTAACAGAGATGCCTGCGTTAAGCATTTTCCATGCCAACTTTTAACTTATTGTTTTTAATGGCAGACGAGCGCAGTTACTGCCGTTTCGACGCGGTGACGACATGTCATTTCGTCATCGTCGACATTAACCTGCCAGGGGATAAAAATATTGGCATAAATATTGCTTTACAGGGGCAACCACTACGGGAGGCGATATGCACGAAATCACCCTCTGCCAACGGGCACTGGAATTGATTGAACAACAGGCTTCAGCATACGGTGCAAAACGTGTGACAG [...]
+ATTGCGGTAGGAATGCATTAAAATATTTTTTATCATTTATGACCATGTGTTGAGCTTTTATTATAAAAAAGATTTTTTGAGTAGTAATTCGTATATATAATCATCTGGAGGTGATTGGTTGCCTGGCTCAATCATTGAGGCATATTTTTGCGGGCAATATATTGAATCTGAAAAGTTAAAGATGATATTTTCGGTGCAGGAGCTATCATGTGGAGGGAAAAGTATGCTAAGTCCTACGGCTCGTAATATGGGGGCGAGTTTATCGCCTCAGCCTGACGTCAGCGGGGAGCTAAACACCGAAGCATTGACCTGTATTGTTGAGCGTCTGGAAAGTGAAATTATAGATGGCAGCTGGATTCATATCAGTTACGAGGAAACCGATCTCGAAATGATGCCTTTTCTTGTTGCACAGGCCAATAAGAAGTATCCAGAGTTAAATCTTAAATTTGTTATGTCAGTCCATGAGCTTGTTTCCTCTATAAAGGAGACCAG [...]
+NODE	501	914	36502	36381	0	0
+GATGGCGCCGAAATTCTGATCGATCGTGGTTGGGATATGGCGAAAGGCGAAGTGAATTTCGACGATGCTGGCAACCAACAACATCGTCCCCGCCGACTCACGCCGAGAGAGTGCGCGCGTTTAATGGGATTTGAGGCGCCGCAAACGTACCAGTTCAGGATACCTGTCTCGGATACGCAGGCCTATCGCCAGTTTGGCAACTCCGTGGTGGTGCCGGTATTTGCCGCGGTAGCAAAGCTGCTGGAACCCAAAATTCACCAGGCGGTGACGCTGCGTCAGAGAGAGACGGTAGATGGCGGACGTTCACGATAAAGCCACGCGCAGTAAAAATATGCGCGCGATAGCAACCCGCGATACGGCTATTGAAAAACGTCTTGCCGGCCTGCTAAGCGCGCAGGGGATTACGTTTCATACTCAGGACGCGACATTACCGGGCAAGCCGGACTTTGTGGTGAATGACTATGATTGTGTGATTTTTACTCACGGCTGCTT [...]
+GGGCCGCGCTGGGTGTGATTGTGTTTGCCGTAGTGCTGGTGACTCTGGGTAAGTACCTGTTTCCTGTCAAGGCGGTGGTCACGCCGTGTAAAACGGAAGATTCACGCCAGTAGATGAATCCCCTGGGTGTCGATCTGCGCGCTGGCGCCGCCGCCGCAGATCCACTCTTCCAGGCGCTCCGCCAACGCCGCGTCGCTCAATTTCGCTCGCCCGCGCAAGGCGCACTCCCAGACGATCAGCACCCGCCAGCCAAGCGCCTGTAAACGCTGAATATCGCGCTCATCGCGCTCAACGTTCTTACCGATTTTTTCCAGCCAGAAAGCCGTCCGCGTGGCCGGTACTTTGAACAGATAACAGTGGTGATGATGCCAAAAGCAGCCGTGAGTAAAAATCACACAATCATAGTCATTCACCACAAAGTCCGGCTTGCCCGGTAATGTCGCGTCCTGAGTATGAAACGTAATCCCCTGCGCGCTTAGCAGGCCGGCAAGA [...]
+NODE	502	8018	417195	412407	0	0
+TAAACTGCTACGAGAGAAAGATAAAAAGCCCAGCGCCCGGTTCGGCAACATCACACACTGGGTTACGCCTCTGCGTAATCCGAAACGCTGGGCGGCATCCCACATCGCCTGCGCTTCATGAAATAGCACGTCATCCCAATGTAAATGACCCTGCCTGAAATTTTCCGGCTTTAATACCGGATCGATCGCGAAATAGTTTTCGGACTGGTAATGCGTTACCCACGCCGGAGGATAAGTGGTACGAAGCGATATTTTAGGCCGGGTAAAGGGGACGGGATGACGAACACACAGGGCATAATAATCAAATTCCAGCCGCTGTGTCTGATATTGCAATTCAGTATAAACATCCTCTGCTGCCGCCATCTCCTGAAAGCGTAACAACATTGCGCGTCGCCAGGTGAAGAAATCATTTTCCTGCATATTTTATGGTCACGCCTTTGATATTGATAATCATTATTATGAATGACTTAAATTAACACATAAATAGTGTTT [...]
+TCTGGATACGCTGAATGTTCAACAAAAATATAAGGTCAGCGATACGGCTGCAACTGTTACAGGATATGCCGATACTGCGATTGCTTTAGACAATAGTACTTTTAAAGCCTCGGCTACTGGTCTTGGTGGTACTGACCAGAAAATTGATGGCGATTTAAAATTTGATGATACGACTGGAAAATATTACGCCAAAGTTACCGTTACGGGGGGAACTGGTAAAGATGGCTATTATGAAGTTTCCGTTGATAAGACGAACGGTGAGGTGACTCTTGCTGGCGGTGCGACTTCCCCGCTTACAGGTGGACTACCTGCGACAGCAACTGAGGATGTGAAAAATGTACAAGTTGCAAATGCTGATTTGACAGAGGCTAAAGCCGCATTGACAGCAGCAGGTGTTACCGGCACAGCATCTGTTGTTAAGATGTCTTATACTGATAATAACGGTAAAACTATTGATGGTGGTTTAGCAGTTAAGGTAGGCGATGATTACTA [...]
+NODE	503	1299	58036	57944	0	0
+GCAATCCAGGCGGTAGGATCGGCGATAGCCACCGTAAGCTGGAGTCTGCCGTCCGCTAATTCCTCAGCATAAAGCGCGTCATCCATATCTTCAGTGCTGGCGCTATCGATAGTGACGAAATTCAGCGCGGTAAGATCCTGGCGCTCCAGCCCTTCGTCCAGCATCTCCGTCGCTACGCCGTTCGGCGCTTCTTTTTCCAGGTTGTGGCGGGCAAGCGTAACCCACCAGGGAACAAAGTGATCGTCGGCAAAGGTGATGTACTGCGTTAAATCGGCGTAAAACGAACGGTCGCCTTTAAGCGGATGGCGGCGCATTTCGGCAACCGCCCAGTCACCTTCTTTGAACTCATGCTGAACGCCGCGCGCGGCGCGGCAGGGAATCGCGTCTTTCAGCAACGGATGATCCGGCACGATGGACAGGCGGTCATTTTTACCCTGAACTTTTCCCACAAAACGCGTCAGGAACGGTTCGATCAGTTCTTCCGGCTCGGCA [...]
+AGTTCGGCGGCAATATTCGTCTTCACAATGCCAAATGATGGCGCCGGTACTCATCCGCGATCCGTCTTCATTCGCGTTACTCGAACGCATACTGACCAGCACATTACACACCTCGTCGCCCCCTTCTTTACTTCCACTTATCACGCTCCTCACATCACGTATCAACGGCAGCGCCGCCTGCTTTAACGAACAGGCAACCCAACCTGGCGCGTGGCGCCGCGCTGTTATCACGTTACGCCAGGAAGACGACGATATCGCTCGTTGGGAGCTTGAGCCTGCGCTGACACAGGCGATACAATGGCTCACCAGAGCGCCCGATCGCTTTAGCGCCGCGCATTTTTTCCCGCTACTCACCAGGGGAGTTTCATCGGAGCAGGCCATTAATATGTTAGGCTGGTGCGGCGTGTGCGGATGGTTAAATCGTTTAAAAATCGCGTTGGGCGAAACCTATTAACTCATCCATTACAGAAAGAGCGCTTGCTGCGCCAGGCA [...]
+NODE	504	51	1883	1273	0	0
+GCCACGTTACAGGGACAACTGCTGTTAAGCGGAAAACCGCCGCTCAATCTG
+CTGGCGAGACGTTTGCCAGATGCTGCTCTGGTACATGCCAGCTCTCTCCCG
+NODE	505	22	6373	708	0	0
+TCAAGCCTGCCAGTTTCGAATG
+TGTAGCGGTGAAATGCGTAGAG
+NODE	506	9971	582354	578453	0	0
+CGGTGGTTGCACCAGTCAGGGAAAAATATTCAATCGTCGATGAACCAAAGCAGACAATGAAGTCTCGCCATGTGCCGATACCGATGATGCCGTCCGGCTGCGATTCTGCGCGATATTGTGCGCTGTATCGGTCAGGATGCGATTCGTCTTCAAGGTCAGTGATAAACCATGAATCAGTGCCGTCTTTTGACCACGCATAACGCCCACGTAAGCGAGTAATGTCACGGACTGAACCTAACTCATACTGCGTGAATCCGCTGTCTGCAGGCCAGTTTGCCATCGTCTTAACGGCGCCATCGTATCGGTACTCGATGAGCTGACCGTTCACACCTACCGCCTGAGAAGTACGACCGTGAGCAAGAGATACGCGGCCTGCCCCGGCAACGTCTCCGACTACGGTTTCGCCTTTGTAGAGCTTCCCACCACAGACGCGATATACGGCGTTCTGAGCGGTATTGTATTCAACACCACGCGATACACCATTTACATCGT [...]
+GTAATGCGGGGCTTTTTTGTGTCCGCAGTAAACGCGCATCGCACGCGCGACTTCTGAACACAGAACCTTTCAGGATGACCCTTGAGGATGCTGGTTTGGTGATCGGTGCCTTTCTGTGGGCCGGAATCCTGTGTGACAAGGTTCATCACTTAAAGGTAACTACCGATGCAATTAGTTGAAATCAAGAAGCTCGACTTGGTCACTAACTCCGCTGTAATCGCTACTGGCGTCAAAAAGGATCACAAGCCTGTGATTCAGCTCATCAGGAAGTACAAAAGCGACCTCGAAGAGTTCGGAAGGGTGGAATTTGAAATGCGACCCTTTCAAACGGATGGGGGCATGCAGAAGCAGGAAATAGCACTGTTAAACGAACAGCAAACCACGCTGTTGATCACATACATGCGAAACAATGAAGTTGTGCGTGAATTCAAAAAGCGCCTGGTAGCTGAATTCTTCACTATGCGTAGCGCGCTGGCGAAAAAGAAAATGGAT [...]
+NODE	507	483	25161	25051	0	0
+CGCGCCGGGCGCGCGGGCAAACAGGGCGAAGTGGTGCTCCAAACGCACCATCCTGAGCATCCCCTGCTGCAAACGTTACTGTATAAAGGCTATGATGCGTTTGCGGAGCAGGCGCTGGCGGAACGGCAAACGCTCCAGCTTCCGCCGTGGACCAGCCACGTCATTATTCGCGCAGAGGATCATAACAATCAGCAGGCGCCCGTCTTTCTCCAACAGTTGCGTAATCTGATTCAGGCCAGCCCGCTATCAGACGATAAGCTGTGGATCTTAGGTCCGGTTCCGGCCCTCGCGCCAAAACGCGGCGGCCGCTATCGCTGGCAAATTTTACTTCAGCATCCTTCACGGATTCGCCTGCAACACATCATCAGCGGCACGCTGGCGTTGATCAATACGCTCCCGGAAGCGCGGAAAGTTAAATGGGTTCTGGACGTCGATCCGATTGAAGGATAGTCCTCACGATGCGAGGCGGATCGTAAAATTAAA
+CGACGTCCAGAACCCATTTAACTTTCCGCGCTTCCGGGAGCGTATTGATCAACGCCAGCGTGCCGCTGATGATGTGTTGCAGGCGAATCCGTGAAGGATGCTGAAGTAAAATTTGCCAGCGATAGCGGCCGCCGCGTTTTGGCGCGAGGGCCGGAACCGGACCTAAGATCCACAGCTTATCGTCTGATAGCGGGCTGGCCTGAATCAGATTACGCAACTGTTGGAGAAAGACGGGCGCCTGCTGATTGTTATGATCCTCTGCGCGAATAATGACGTGGCTGGTCCACGGCGGAAGCTGGAGCGTTTGCCGTTCCGCCAGCGCCTGCTCCGCAAACGCATCATAGCCTTTATACAGTAACGTTTGCAGCAGGGGATGCTCAGGATGGTGCGTTTGGAGCACCACTTCGCCCTGTTTGCCCGCGCGCCCGGCGCGGCCGGAAACCTGAGTGTAGAGCTGGGCGAAGCGTTCCGCCGAACGAAAAT
+NODE	508	51	1954	1836	0	0
+AAAGCCCATCCCAATGCAATGAGTATCGCCTGCGGCTTTTGCGCCAGGTAG
+TAAAAGGCGACGGCTCGTTGATAAAAGAATATACCGTCGTTGCCTTGCAGG
+NODE	509	32	1749	1749	0	0
+TGCGTCAGGCCACCGACAGCGCGCTGCGTGGC
+TCACGCTAAACAGATATTTCTGCGGATCGGTG
+NODE	510	13685	717140	709596	0	0
+ACGCAACTCGCCGGGCGTTTGCGCGCCGCGCAGCAGCAGCGTAGTGACGAGCGCCACTTCCGCCGCGCTAAGTTTCAGATCGCCAAATTCGGAATTACAGAAACGCTGTTCATATTTGGTGACGCGATTGCCAAACCCGCTGACCGTACGCAAAAAGTGGCGTTTCACCAGGTTATCGAGCTGTTCTTGTACCTCTTGTTCCGTCAGGTTCATCACCGGTTCACGGTTGGTTTTCTGATTACAGGCTGTCACCACCCCGTTGACGGAAAGCGGATACTGTTCCGGCGTTGTCACCTGCTTTTCCAGCAGACAGCCAATCACTCGCGCTTCAGTGGCGGTTAATTCATATTTCATCGTTTTCTCCCTTTGCCTCTCATTCCGTAAGCCGCTCAACGCCCCGGCGTCCATAACGGCGTGGTTAACGCCGTCAGGACATGGTCGCGCCATTGTCCATCAATCAACAGGTAATCTTTCGCATAGCCTTCTTTTTCA [...]
+CCTCGGCTGGGAAGTGGTCTGGAACTCACCGCAACGCGACGATGATTCTACGCCGTGGGGAGAAGCCTTTATGCGTCACGGCTCTCAACTGCTGCTGGGGCTGGTCTGGGCGGTGGGTATGGCGTGGCTGGATTTACGCTTTCTGTTCTGGCTGGCGCCGATTGTCTTTTCGCTGATTCTGTCGCCATTTGTTTCGGTGATCTCCAGTCGTTCAACGGTAGGATTACGCACCAAACGCTGGAAGCTGTTCCTGATCCCGGAAGAGTATTCGCCGCCTCAGGTGTTGGTCGATACCGATAAATATCTGGAGATGAATCGCCGCCGTATTCTGGACGATGGCTTTATGCATGCGGTATTTAACCCGTCGCTTAATGCGCTGGCGACCGCGATGGCCACCGCGCGTCACCGCGCCAGTAAGGTGCTGGAAATAGCCCGCGATCGTCATGTGGAGCAGGCGCTAAACGAAACGCCGGAGAAACTGAACCGCGATCG [...]
+NODE	511	2829	173291	170911	0	0
+CGTTCCGTTTGTACCAGCCAGCCGTTTTCGCGCATCTCCCGATAGCTTTCGGTACGGTTATCCACCGTCGGCCAGACGGAGACCATCAGCTCAATTCCCAGCGATTTCAGCTCGGCAATCATGGCGTCAGGATCGGGCCAGTCGCGCGCATCGAACATCCAGTCACCCTGATTCGGCCAGTGAAAGAAGTCGATTACGATCACTGAGATAGGCAGATTGCGGCGCTTATATTCGCGGGCGACCTCCAGCAGCTCTTCCTGCGTACGATAACGGAGTTTGCACTGCCAGAAGCCCATGGCGTAGTCCGGCATCATCGGCGGTGTGCCGGTAGCCAGCGCGTAAGCCCGACTAATTTCTGCCGGGGTATCGCCAGCCGTGATCCAGTAGTCCAGCTGTTCGCTGACCTGCGCTTCCCATTCGGTAACGTTTTGGGCAAAGGTTACGCGTCCGACTGCCGGGTTGTTCCATAAAAATCCGTAGCCCAGACTGGAG [...]
+ACCAGCCTATTTTTTCAGCTCCCCCTCCCTTAGTCACGTAATACTTGAAAGTTATTTTCTTTCACTGTTTTCCTTTTCTTATTTCATTACTGAAAAAACTGTGACCACCTTAGCAAATAAAAACATCGCTCATTCAAAAACTAATAAACGCAATCCTGATGTAAGATTTAATAATTGATTGATGCCGTCGGGTTAACTACTTTTCATGTACACCTTACTTACTCATTTTAATCTGAGGTTAAATTCAGAAACGACATAAAAATAATATTCAAAACTTGCTTAGAAAGTAGAGGTTGTTTTTCTGGGCGTATCGTACCAATATCGGAGTTATCATTATGAGTTCTGTCATTGAGGATACCCAGCCTTCCGGGTCAGCATCATTGTCTTTACTACAGCGTATTAGCTACGGCTCTTTGGATGTGGCGGGTAATCTGCTGTACTGCTTCGGTTCAACGTACATTTTATATTTCTACACAGACGTTGCGGGCATTA [...]
+NODE	512	53	2602	2357	0	0
+ACGCTCGTAGCCGCCATAAACCGACCATGACAGGTCGCTGTTTTCACCGCTAC
+CGTTATCGCAATAGTAATAGCGATAGCAGCGCGCCAACGACGTTTGGCGGTAA
+NODE	513	32	1432	1321	0	0
+AACCTTTGATGTGACCGTTCTGGAATACGCTA
+ACCAGCGAACGGCTATTTTGCTGCGTATGCAG
+NODE	514	854	47654	47330	0	0
+CGCCGATTATCGAAGTTCACGCCTCCGCTGGCGATAACTACCTCGGCGGCGAAGATTTCACGCATTTGTTGCTTGATGAAGTGCTGAAACGCTGGAACCTCGATAAATCAGCGCTGACGGATAGCGATCTGGCTGCGCTGTATGCCTGTGTTGAAGCCGCAAAATGCGCCAGCAGCTCCCCGCTGCGCATGAGCTGGCTTTATCAGGAGAGCGTTCTGGAAAGCACGTTTTATGACGATGAGCTGGAAGCCCTGTGGCTACCGTTGCTCAACCGGCTGCGCACGCCCATTGAGCAGGCGCTGCGCGACTCCCGACTCAAACCGGAGCAAATTGACAGCCTGGTGCTGGTCGGCGGCGCGTCACAGATGCCGCTGGTGCAACGCATCGCGGTGCGCTTATTCGGTAAATTGCCCTATCAAAGTTACGATCCCAGCACCATCGTGGCGCTTGGCGCCGCAACTCAGGCCGCCTGTCGCCTGCGCCATGAAGACG [...]
+CGTCAACTTCCAGCAGGCCATTAATATCGTAGCTAAAACGAATATCAATGGCCTGAATGTGCCCGTTCGGCTTCAGCATGACGTCAAAAGAATCGATCAGGATATTATTTTTCACCTTATGGCTTTCGCCCTGGTATACCCTGACGCAAATAGAGTCCTGCTCAGGGTGCATGGTGGAGTACGTTTCCACTTTTGACACCGGAACGGTGGTATTGCGTTCAATGATGGGCGAGAAAATACCAGGCACTCCCTGTCGGTTGACTTCCACGCCCAGCGAGTAGGGGCAGATATCCGTGAGGATCACCTCTTCAACGTCTTCATGGCGCAGGCGACAGGCGGCCTGAGTTGCGGCGCCAAGCGCCACGATGGTGCTGGGATCGTAACTTTGATAGGGCAATTTACCGAATAAGCGCACCGCGATGCGTTGCACCAGCGGCATCTGTGACGCGCCGCCGACCAGCACCAGGCTGTCAATTTGCTCCGGTTTGAGTC [...]
+NODE	515	2392	112012	111157	0	0
+CGCCGATAGACGGTATCGATCATCCAAAAGCATTGACCTACCTGGAGGTATTGCGCGATAAGGCGCCGGTTGGTAAGCGAGTGGCGATCATCGGCTGCGGCGGGATCGGTTTTGACACGGCCATGTATCTGAGCCAGCACGGCGAATCCACCAGCCAAAATATTGCTGAATTTTGTACGGAATGGGGAATTGATACCAGCCTGCAACAGGCAGGCGGTCTGCGCCCGGAAGGCCCACGCCTGGCACGTAGTCCACGGCAAATCGTCATGCTGCAACGCAAAGCCAGCAAGCCGGGCGAAGGATTAGGTAAAACCACCGGCTGGATCCATCGCGCGACGTTACTGGCGCGCGGCGTGAAGATGATCCCGGCGGTCAGTTACCAGAAGATCGACGACGACGGATTACATCTCTTGATCGGCGGCGAACCGCAGTTGCTGGAAGTGGATCATGTGGTGATCTGCGCCGGACAGGAACCTCGCCGCGAGCTGGCGG [...]
+CGGCTCCATATGGCAGCAGAGCTGATAAAACGCTTTGTTATGATCTTTCTCTTTCAGGTGCGCCAGCTCGTGAACCACAATCATCCGTAAGAATGGCTCCGGGGCGTTGCGAAACACGGTGGCGACGCGGATCTCCGCCTTTGCCTTGAGCTTGCCGCCCTGAACGCGCGAGACAGCGGTATGCAGTCCCAGCGCATTTTTCAGCACATGGATCTTGCTGTCATACATCACTTTATTGATGGGCGGCGCATTGCGCAGAAACTGACTTTTCAGTTCCTGAGTATAGTGATATAGCGCTTTGTCAGTGGCGTAATCATGCGCGCCGGGATAACGTTTTTCCAGCACCGCTCCCAGGCGCTGCTCGGCGATTAAGGCGCGCACCTGGGCAAGGAGATGTTCCGGATACCCCTGAAGGTAAGTTAGTGAGGTCATCAAAGCTCCATGTTGCTGATAAAAAGTGTATACTCACGCACCCTTTTCAGGGATAACGCC [...]
+NODE	516	7386	419853	415571	0	0
+GTCGCGCACAAGCTGCACGGCCTTCATCAGCGTTTCATAGGACGGGTTCGGTTCAATACCGCCAAACTCCCGAACATCCAGTCCTTTTAACGCTTCCTGAACTTGCGCCAGTACGCCGGTCTTTTTCACGCTACCGCCGCCATAGGTAATCAGCACGCGGGCGTCCTGCGGGATTTGATCGCGAAGATCGACGATAGCGCCTTTACCAAACAGAATGCGGGTAGGGGTATGTAATTTGAAATTGTTCATTGCTCATTCCCTTATGTGGGTAAAAAGAGGGCAGGCGGCTGTCTGCCTGATGGTCATCATTGTGGCCTTGTGAGGGATGTCTCTCAATGCACATTTCTGCCAATGTTTTGCCTATTTCTCCAGAATGCTGGAGAAAATCGCTAAAAATGCGCACAATCCAGCGGAGTGGATTTGATGAAAAAATGGCGCGTTATGAATCGTGAAGCAATTTGCTTACAGTTGGCGGATAAAATTAATCATTTA [...]
+AAATCTCATCCGGTTTAACCTGTGGGCGCTGATATTCCGGCCATACCAGCGCGACCAACGCCGGGTAGGCTTCAAGACTGAACTCACGAAAACACTGGCGTAAATTAAGGACGTCCAAATCCGAATACGGCACCTTTTCTCCGTTCAGACAACGCTTCTTAATATTGTCGTAATACTTATAAACGGCAGAGTTAAGGTCGCTGCAACGACGCTGTGCGTCAAATAATCCAGGCGTTTCATTCAACTCAGTCATTGTCATTCGTTTTATCGTTGCATGAAGGAAATCGATATATTCATGGTTAACGCGCCAGTACCATACCGGCGTTATCGAATTCATTAATACTGAGAAATGATCTTCGCCCTCTTCCTTTGTCATGGGTTCAGTTTGATTTAAATTTACGACTTTTCCACCAGGACGTTTTTTATTAACCTCCCACATCAGGAAGAGTATCGCGCCGGTCAGTAATAGCAATATAATAACAGAATAAAAAA [...]
+NODE	517	5006	297269	295919	0	0
+CCTTGCGCAGCGGTACGCATATGAACCGGCGCTTTTTTATCGACATAAATGTAGGCGGTGACGTAGTAGAAATCGTAACTCACGCCGTGTAGCAAAATACCGAGGAACAGCAGGGCATAAGTGAAGTACGTTTCCGCACCGCCATAGACAAAAAAGCCGTAGCGGATCGCAGCGGTAATAAGACCAAGTAATAATACCTTTTTAATACCAAAGCGCTTAGTGAAAAAGGGCAGAGCCAGCATAAAGAAGATTTCAGAGAACTGGCCGAGCGTCATCCAGCCGGTGGCGTTCTTCATTCCCACTTCTGTCAGGTAGCCGTTAGCGAAGATGTAGTAGAAGGCCAGCGGCATCGCAAACAGGAAGGAACAGAAGAAGAAAACGAGAAAGTTTTTATCGCGCAGCAGGACCAGCGCATCCAGCCCCAGCATCACTTTAATATCCATCTTGCCGGTGCTTTTTGGCGGCGTGTCTGGCAGACAGAACGCAAATACG [...]
+GCGAGCATCCAGCATTAATAAAAGGACTCGATATTATGCACAGTAAACCTTATGGCGATCCCTATAATGACTGGCTCAGTAAAGGGTTGAGGCATTATTTTGGCGGTTCTCATATACAAGATTATGACGCATTTTGCGATTTCATTGAATTTAAACACGAAAATATCATTATGAACACAAGCAGTTTAACTGCCAGTTCTTGGAGGTAATCATGATAGCCTTGTTTTACACGCTCTTCCCACCGTCACGTATAATCGGTATCCAGAGTTATTCCTTTATCCTGTAAAATGTGATACAGATTCTCCATTGATCTAATAACCACCTCAATTTCACATTCAAGTTTCTCTACAGAACTTTCATTGAGTGAGAAGTTGAGAGCCAGTAATAATGATTGTGAGTTATTATCATAACACAAATGTGGTCCATTATTCTCTGCAAACCATAAATTAGCATTGAGAAATTCAAAAGCAAGATTATTATTATCCGGAGGTC [...]
+NODE	518	51	1966	1966	0	0
+ACAGCAATATGGCGCTCTATAAATCGCGCAAACTAAGCGTACAAACGCCGC
+TATTTTATTCCCGGCCACAGGCGTCGCGACAACTTCATGGTACAGATCCAC
+NODE	519	51	1884	1884	0	0
+ATAATATCAATCAGCAAGGCGGCGGTGATATAGCAATCATAAAGCGCCCGG
+TGCGAACCACCGGCTGGACCGCGGAAGAAATGGTCAATATCACGGGCCGCC
+NODE	520	66	2555	2555	0	0
+TGATGATGCAGCCCCGGCGGCGTTTGTACGCTTAGTTTGCGCGATTTATAGAGCGCCATATTGCTG
+CGGGGCTGCATCATCACCGGGCGCTTTATGATTGCTATATCACCGCCGCCTTGCTGATTGATATTA
+NODE	521	6589	371126	368158	0	0
+GCTGCTTTCATTATATGAACAGCTAAAAAGCTATGTGCTGTCACTCAGTGATGAGGTTCAGTTTAAAGAGCTTAAGCTCTATGACGCCTTCCGCCTCATTCGCAACTTTCTGTGCGTAGCCGTTTATCCCGTGACCGACCCACACCTACGCCTGTGGCTGAAAATCAATCCACAGCATATCCAGCTTGAAGAAGGATTTAGCCGGGACGTCACGCATATTGGCCACTGGGGAACCGGCGACGTCGAATTGATTGTGCGTAACGAACACGATCTGGATAAAGCCAAGCTGCTGATCGAGAAAGCCTGGCAGGAAAATTAGCGTTCCAGGATACCCGCCTACTGGAGAGGTTAAGATAAGATTATCCAGCCTTTCCAGTTTTACTGGCTCTTATCTGTTATTCCACATCCTTCCTTTCCAACCCAATATCCCTTAACTGCTCGTCACTCATTCGTCGCAGCGCCTGACAGGCCCGCTTACGCAGCCACCACCTT [...]
+GGAATGCCGGATTGTTGTTGTAAATGATAATAAAAAGTAAAATTAATGTTTCAAATTTGCAAGAAAAGAAAGTGAAGCGCAGGCGAATAACGGATTGAGAAGAGGGGCATCGGTGGGAAATGGCATTAAATTAATGCCTCCCGCGTGCGGGGTTTGGCAGTTAATCTGAACGAGAATTGCGCCTTCCCCTTCTTAAATACTGAGCAGTGCCGGTATTTGTGACAGTAAATATAACACCAGACCGATAGCGCCGCCGACCAGCGTGCCGTTCACGCGGATAAACTGCAAATCTTTACCGATATTAAGCTCAATCTGCTGCGACATATCGCGCGCATCCCAGCCTTTTACGGTATCGCTGATGTGGCGCGTCAGGAAGGCGGCGAATTCCGGCGCGACCCGGTGCGCGGCCTGTTCCAGATGACCGTTAAGCGAGGCGCGTAATGCGTCGTCGGCGATCAGCGTCTCGCCAAACCATTGTCCGGCATGAGCGAT [...]
+NODE	522	2323	118114	114359	0	0
+AGCGAGCATGGCTGGATAGACGTGGTTGAATCATTGACATCATAATCCCTTTCTCTTATCTGCGATGGGAACGACATCGTGAGCCGGATAAGGCCGCTATGCCATTATCCGGCAATATTATCTGCTTTTTTGTCCAGCCAATTGTACTGAATACAAAGTAATACGTGCGTTAATTCACATTTATATGGTTAACCCTTCCACTCCGTTGGAAGGCGGATAAGCTTTGACGCGCTTCACAATTTTTTCCCTGCTGACCTTTCACACTGATTCCAGTGTCTCAGACTGGAGTCCAATATGTTGGAATCAAGTAAAGTCCCGGCTCTTACTCGCGCAATCGACATCCTCAATTTGATCGCGCGTATTGGCCCATGCAGCGCGGCAATCATTATTGAAACGCTGCGTATTCCAAAAAGCACCGCGTACCTGCTGTTGAATGAATTAAAACGTCAGCGATTTATTAGCCTCGATCATCAGGAGAACTACTGCCTGTGG [...]
+AGTGACAGTCACGGTTAAGCTCGACGCCGAAGCCCGGCTTATCCAGCACTGATTTATGGATGCGTCCATTCACCGGCACCGGCTCATCCAGGAGAATCGGGTCAAATTGCGGACGCAGGGTGGAGCAGTCCGGGCTGGTCATCAGGAACTCGCTGAAAGGGGTATTAGTGAAAGTAATAACTGCATGGTGCGAATAGACAGACGAACCGTGCGGCACCACCAGTTGCCCGCGCGATTTGGCAAGCGCGGCGATCTCAACCAGCGTGGTTAATCCGCCGCACCAGCCAACATCCGGCTGCATAATATCAATGCCGGTTTCTGCCAGAGTGCGGAAGGATTGCAGCGTACCATGGTGTTCGCCGCTGGTAACCATCATCCCTGCAGGCGCGTTGCGTTTTAATTCGCGATAGCCTTCATACTGCTGCGGCGGCAGACACTCTTCAATCCATTTGAGATTAAATGGCGCACAGGCGTGAGCCAGTTTAGTCGCAT [...]
+NODE	523	10821	567454	564015	0	0
+TAAAAGCATTGGCGTAAAGCGGATGCTGGCTGAAAAGCCAAAAAAATTTGGCGCGTTAACAAAGCGGTTATGTAGCGGATTGCAAATCCGTCTAGTCCGGTTCGACTCCGGAACGCGCCTCCAATTTTTCCCGAGCCCGGATGGTGGAATCGGTAGACACAAGGGATTTAAAATCCCTCGGCGTTCGCGCTGTGCGGGTTCAAGTCCCGCTCCGGGTACCATGGGAAAGACAAGAATAATCAAAGCAATAAGCAGTGTCGTGAAACCACCTACGGGTGGTTTTTTTGTGCCTTCAGTTTGTATGCCGACCGCGAGCGTGAACTTTCCAGCGCGATACACAGTAAAAAAACACCGGTAGCGGCATTTCTGCCAGTACAGCAGTTATGTGTTACCGACCCGCAAGAACTTGTGGCTGGTAAATACTAAACGTCGGGTAAATCAGCCGATAAAATCCATTAATCTCTATAAAAAATGCTGATATGTTTTATGCCT [...]
+CGCCTGGGTTGCCCCGACGCCCACTTTTACGGAAATTCCGCCAGCGTGATTCACCACGCCAAAGCCAGCCTCATCGGTCAAATCGTCGCCCACAAAAACGGGAATCCGTCCCGCAAAGGGCGCCTCCTGCATAAAGGCGGCAATCGCTTCGCCTTTATTGGTTCCCTTAGGTTTGATTTCCACAACACATTTACCAGGCTGCAACGCCAGTTGCGGCCAGTGCTGCGTAACGTGTTGCGCAAGCGCCAACAGCGCCGCTTCATGTTCCGGAGCCTGACGGTAGTGCAGCGCAAACGCCATCCCCTTCGTCTCCAGCTCCGTTCCGGGCAGCGCTACAAGCGTCGAACGTAATAACGCCTCCACCTCCCGGACTACCGCTTCAGGAAGGCGCACGATATGGGTTTTACCATTGATGTCACGACGCTCTGCTCCGTGAACGCCAGCGAGCGGAAAGCGAAAAGGCTTCGCCAAAGCATCCAGCTCAGTCATTGA [...]
+NODE	524	18780	919956	901726	0	0
+GATTTGGGACGCAAGCTGGTAGAAGTGCCGGTTGGCTTCAAATGGTTTGTTGACGGTTTGTTCGACGGCAGCTTTGGTTTCGGCGGGGAAGAGAGCGCGGGCGCTTCGTTCCTGCGTTTCGACGGTACGCCGTGGTCTACCGATAAAGACGGTATCATCATGTGCCTGCTGGCGGCGGAAATCACCGCCGTTACCGGGAAAAACCCGCAAGAGCATTACAATGAACTGGCAGCGCGTTTTGGCGCGCCGAGCTATAACCGTCTGCAGGCGAGCGCGACCTCCGCCCAGAAAGCGGCATTGTCTAAACTGTCTCCGGAAATGGTCAGCGCCAGCACGCTGGCAGGCGACCCGATCACCGCGCGTCTTACCGCAGCGCCGGGTAATGGCGCATCGATTGGCGGCCTGAAGGTAATGACCGACAACGGCTGGTTCGCCGCGCGTCCATCCGGTACGGAAGACGCTTACAAGATCTATTGCGAAAGCTTCCTGGGG [...]
+AAAGGCGGGTTTATCCAGCGCACCGCAGTGACTCAGCCCCGACTGACGAAAGCCGTGACGCCCGCTATCCTGCACGGAGGTGTAAATCCCCGCGCGAATAATATTCAGCATATTCCCTCCTTTTGCGGCACAAAGCGTACGCTATCGCCAGGGCGTAGCAGAACCGGAGGCTCCCGCATCGGATCGAATAACTTCAACGGCGTGAGGCCGATCAGCTGCCAGCCGCCCGGCGTGGATAATGGATAAATACCCGTCTGCGCGCCGCCGATGCCGACAGAACCGGCCGGAACCTGCAGGCGCGGCTCCGCGCGTCTGGGCATATGGAGCGGTTCTGGTAAATTCCCAAGATAGGGAAAGCCAGGCTGAAAGCCTAAAAACCAGACGACATATTCAACGGAGGCATGTAGCTCCACGACCTGCTTTTCACTCAAACCGCTGTGCCGTGCCACCGCCGCCAGATCCGGCCCGCCTGCGCCGCCATAGATCACCGGG [...]
+NODE	525	3173	169974	168471	0	0
+GTTCGCATGGGAATTACTGACCGGTGAAAACTGGTTTGCTCTGCCAAAAGAGCGTTTATGGGTCACCGTTTATGAAACCGACGACGAAGCCTATGAGATCTGGGAAAAAGAAGTCGGCATCCCGCGCGAGCGTATCATCCGTATCGGCGACAATAAAGGCGCGCCATACGCATCGGATAACTTCTGGCAGATGGGCGATACCGGTCCCTGCGGTCCGTGCACCGAAATCTTCTACGATCATGGCGACCACATCTGGGGCGGCCCTCCGGGAAGCCCGGAAGAAGACGGCGATCGCTATATTGAGATCTGGAACATCGTCTTTATGCAGTTCAACCGTCAGGCTGACGGGACTATGGAACCATTGCCGAAACCGTCTGTAGATACCGGTATGGGGCTGGAGCGTATTGCCGCGGTACTGCAACACGTTAACTCTAACTATGACATCGACCTGTTCCGCACGTTGATTGAAGCGGTAGCGAAAGTCACCGGCGC [...]
+AATGGCGGTGAGGCGGGGATTCGAACCCCGGATGCAGCTTTTGACCGCATACTCCCTTAGCAGGGGAGCGCCTTCAGCCTCTCGGCCACCTCACCACACGCCTCTTACGAGTGCTTCGAAGAACTTGTTCTGCTCATCGTCGCTGCGTGGCGCACATATTACTTTCTGGGACTTATAAGTCAAACAATTTTTCCAGAGCTTTTATCGTTTGCACACTTCACGCTCAATTAGTCTGTAAAAAAGCCAAAAAGAGTGTTTTATCAACAGATAATTTGATGACACGCTGGCCGCCAAAAGCGCACCATATCAACAATGAGGTTGAAAAAAGTCATGAAGGGACAACGCGGGCGAGCGAGAAGAGAGGCTGCGTCTCACCCGAAAAGTGAGACGCGAAAACCTTAGTAACTGGACTGCTGGGATTTTTCAGCCTGGATACGCTGGTAGATCTCTTCACGATGGACAGAAACTTCTTTCGGGGCGTTCACGCCAATA [...]
+NODE	526	7808	407876	401923	0	0
+CGCGCCAGCTTTGCTGCATGGGTTTTAATTCCGCCGCCTGCGCAGGTTGCAGGGCATCAACTTCCGCACGGTTATTACACCCTATCAATGCAAATAGCGTACAGGCTGCCGCTACTGACAATATTGCTGTTCTCACCATAAAATCCTTATGAAATTGCTATTCCTGCCCGTCAATCCAGTGGACGACGAACTTTGCCGCGAAGCGCCTTTACAGAAGATTTTTGCGCCTTTGAGGACAAGCGGCGCTCTTTCGAGGCACGCGTCGGACGGGTTGCGCGACGGCTTTTCTGCTCCGCGGTTAATTCTTTTATGACGGCAACCAGCCTGGCGATAGCCGCTTCCCGGTTGAGCTCCTGGCTCCGGAACTCCTGCGCCTTAATGATAATGACGCCATCATCGCTTATCAGATGGTGGCTGGCCGTCAGCAAACGCTGTTTATAATACTCTGGCAGGCCAGAGGCCCGAATGTCAAAGCGCAAATGAATCGCGCTA [...]
+GAGACGCCGATGAGCTGATGTGATTAAACGCAACGGCATGTTCTCCCTGACACTGTAGCAACTGCCAGGCGTGTGGCCAGGGCAGGCAGTGAACTACCCTTCAAGGAGAAAATTATGGGATTGCAAAAAACACTGGCGCTCAGCGCCGTGGCGGCAGGAATCATGTTGAGCTTATCCGGTGCGCAGGCCGCACCGCTGCTTAGCAGTAGTGAGCCAATGACCATCAACGCCAGCGATCTGGCGGCGAAAGAGAAAGCGCTGACGGATTTTCCGTTAATGGAGGCCGTGAAATCCTCTATCCAGACGTTGGATAACAGCGCGGTCGAACAAATCGAACCGGGGCGCGCCGCTAACCCGGCAAACGTAAGACGCGTTGAAAGTATTCTGAAAGAGGCCGACTGGGATTATCTGTTCCCGATGCGCGCGCCGGAATATACTTACTCTAACTTCCTGAAAGCGATAGGTAAATTCCCGGCGGTTTGTGGTACCTAC [...]
+NODE	527	51	16331	8316	0	0
+CAGTAGCGGCGAGCGAACGGGGAGGAGCCCAGAGCCTGAATCAGCATGTGT
+GGGGGAATCTCGGTTGATTTCTTTTCCTCGGGGTACTTAGATGTTTCAGTT
+NODE	528	63	18328	17099	0	0
+GTTAGTGGAAGCGTCTGGAAAGGCGCGCGATACAGGGTGACAGCCCCGTACACAAAAGCGCAT
+CGCTTCCACTAACACACATGCTGATTCAGGCTCTGGGCTCCTCCCCGTTCGCTCGCCGCTACT
+NODE	529	257	17602	17602	0	0
+GTAAAAGAGGGCGCTGGCGGCGCCTTTTTGCTATCTGCAATATGGATGATTCGAACCTGTCGCAGGTTCGGGTCTTGCCTGATGCGCTGCGCTTATCAGGCCTACAGACGGCACCGCTCATGTAGGCCTGATAAGACGTTACGCCGCCATCAGATACGGGGCTACGTAATTATTGTGACTTTCCTTATTGAATCAGCTATCTTGTTTAGCATATAAAACAAATTAACCGATTGTGGCGTTTATTACGCTTTCATTCG
+AAACAAGATAGCTGATTCAATAAGGAAAGTCACAATAATTACGTAGCCCCGTATCTGATGGCGGCGTAACGTCTTATCAGGCCTACATGAGCGGTGCCGTCTGTAGGCCTGATAAGCGCAGCGCATCAGGCAAGACCCGAACCTGCGACAGGTTCGAATCATCCATATTGCAGATAGCAAAAAGGCGCCGCCAGCGCCCTCTTTTACATTGGTGGGTCGTGCAGGATGACTCGCTTCGCTCGCCCTTCGGGCCGTCG
+NODE	530	38	2159	2159	0	0
+GTTGTTTCGTTAAGTCAGTAAAACGAGAAGCCACGATG
+TAATAAACGCCACAATCGGTTAATTTGTTTTATATGCT
+NODE	531	2743	147068	144442	0	0
+TCACGTAGCATCAGCTCGGTATCCGGTAGACCAATCACTGATGACCAGACCGCGCGTCCCGCCAGGAACCCGGATGCGCCAGCTTCCATGGCGACCCTGACCGCGCGAGGGAACAGTTTTTCGTCCACACCGGAAGAGAGGATGACCCACGGCATATTGATATGCCCATTCAGGCGTTGTGAGGCGGTAAGAAGATCCGAGCGCGCGCCTTTGCCGTAGAGCGGCATTTCAACTTTGTAAAGATCGGCGCCGCTGTCGCCCAGTTCTTTGGCCGCATCGATAATCGCCTGCTCGCGATCGAATTTGTCGCCGCAGCGCGGCGGACGTACAACCGGTTCGATAATGCTCAGCAAACCATTGGAGTGACATAATTCATTGAATTCTTTGACCATATCCAGACGCTGCTGCGCGTCTTCGTCGCTGCGCCACAGCACCAACAGTTTTAAGGCTTTCGCGCCATCCCGTTTTACCGCCTGCGCATTAATTTTTTTA [...]
+GAATCTGACAGCCTCTTCGATGGCGTATCCGCTTGCCAGGCCAAATGCCAGTGCGCCATGAAAAACATCGCCCGCGCCGGTAGTATCCACCACCTCCACGGTAAAACCCGGTTGGTGGCGTACCGCCGCTTTTTCCAACCAGTTGCAGCCTTCACTGCCTCGCGTGACATAGACATGTCCATTTGTGAGCATTTGTGCTTTTTTTAGCGCATCAATGGCTTCGCTCATCCCCGTCAGGCGTGCCAGCCCTGGCTCGGAGAAGGCGGCGTGGTCGCTTAACGCCACCAGCTCGCTAATATCCTGCGGCGTAATATCGCCATCAAGAACAGTCATGACGCCAGCCTGACGCGCCAGCGTAAACGCCTGTTTTGCGCCGTCATGCCAGCGCACATCCGCCAACACCACATCCCACTGCGAAAAATCGATGTCGTTAAGCCAGTCGGCGTCAGGTAATAAATCCGGGCTGGGATAATTAACGATAATCCGCTCTCC [...]
+NODE	532	51	5930	5346	0	0
+ACTCCTTGTCCAGCTTCAGCCCTTCCTGGTGCCACTCGACCAGCGGCGAGT
+TTTATCCACACTATCACGGCAAACGAGAGTCTGCGGACTGGACAGTGGGTG
+NODE	533	1858	87723	86923	0	0
+GCCCAACGCAATACGGTAAACAGATAAGCGTCTGCAATGGTAAAACGCTGGCCGCAAATCCACTGGTCGTCTGAAAGCGACTCATCCACATACTGAAATTTCTTTTCCAGACCGGCGCGAACGGCGGGTTTGAGTGTTTCCGGCGTGTCAGGGCGGAACAGCGGGGTAAAGCCTTTATGCAGTTCCGTTGCAATATAGTTGAGCCATTCCAGCGTATGATAGCGAGCAAGACTACTTACCGGCGCCAGAAGCTGGCGGTCGGGAACGCTGTCGGCGAGGTACTGCATAATGGCGACGCCTTCAGTCAACAGTGTACCGTCATCCAGCAGCAGAGCCGGAACCTGTCCTTTAGGGTTGACTGCCAGGTAATCATCACCGTTTTCCAGGCGTTTTTTTGCGAGATCGACGCCATCAAGCGTAAAGTCTTTGCCAATTTCGCGCAGGGTAATATGGGAAGCAAGAGAGCAGGCACCCGGTTTGTAGAACAGTTTC [...]
+TATCGGTTATGCGCTGGTCGCATGGTCTGGTCATGACGCTGGCATCGTCTATATGGGCATGGCGGCTATCGCTGTGGGTAACGGTCTGTTTAAAGCTAACCCGTCTTCCCTGCTGTCTACCTGTTACGCGAAGGACGATCCGCGTCTCGACGGCGCATTTACGATGTATTATATGTCCGTCAACATCGGCTCCTTCTTCTCTATGCTGGCGACGCCGTGGCTGGCGGCGCGTTATGGCTGGAGCACCGCGTTTGCGCTTAGCGTCGTCGGTATGCTGATAACCGTCGTTAACTTTGCTTTCTGCCAGCGCTGGGTGAAAAGCTACGGTTCCAAACCCGACTTTGAACCGATCAACTTCCGTAATCTGCTGCTGACCATCGTGGGTATTGTCGTTCTGATTGCGGTCGCCACCTGGCTGCTGCACAACCAGGATATCGCGCGTATGGTGCTGGGCGTAATCGCTCTTGGCATCGTCATTATCTTCGGTAAAGA [...]
+NODE	534	5227	262141	256503	0	0
+TCGGCCATCGGACAAACGCGGTCAATCAGGCCATTAGCGACAACAAGCGCATGGTCATCAAGAATTTCGTGACCGGTAAAGATCCGGCCCTGGGTTAAAGCATACATTCCGACCCCCGATATCAAAAATTTACCGCCCCGCATTGACTGGCGGGGCGGAGACAACATTACAGACCTTTAATATTTTCTGCTTCTAATTCATTGAAATATTTCAATGTTTTAACTTTAAGTTCCATTGTGGACGGCTCATCGCATACCACAACCGCTTTCGGATGGAGTTGCAGGCAGCTAATGGTCCACATGTGGTTGACGTTGCCTTCAACCGCCGCCTGCAGCGCCTGGGCTTTCTGATGGCCCAGCACCAGAATCATCACTTCTTCCGCATCCAGCAGCGTGCCTACGCCTACCGTCAGCGCGTATTTCGGCACCTGGTTTACGTCGCCGTCAAAGAAGCGGGAGTTCGCTACGCGAGTATCATGGGTTAACGTTTTGA [...]
+AAAACGCGGCGTTGACAAGGTATTTTTACAGCATTCGCCTGTTGGCGCAGTGCTTACTCGCCCGCTTTCGCCCAGGTATCACGCAGGCCCACGGTGCGGTTAAAGACCAGCTTATCGGCCGTTGCATAGCGGCTGTCGAGGCAGAAGTAGCCTTCACGTTCAAACTGGAAAGCTTTTCCTGCTACCGCCGCTTTCAGCGACGGCTCACCATACCCCTGCTTAATCACTAATGATTCGGGGTTGATAACGGACAGGAAGTCCTCCGCGGCGCCCGGGTTCGGCACGCTAAACAGACGGTCGTAGAGACGAATTTCAATCGGCAACGCATGTGCTGCGCTAACCCAGTGGATTACGCCTTTCACTTTACGCCCGTCAGCCGGATCTTTACTCAGCGTATCGGCATCATAGGTACAGAAGATGGTGGTGATATTCCCTTCGGCATCCTTCTCTACGCGCTCCGCTTTAATGACGTAGGCATTACGCAGACGCACT [...]
+NODE	535	6823	376530	370278	0	0
+TGACCAGGGAGAATAAATCATGATTATTTCAGCAGCCAGCGATTATCGCGCCGCAGCTCAGCGCACGTTGCCTCCTTTCCTCTTCCACTACATCGACGGCGGCGCGTATGCGGAATATACCCTGCGCCGAAATGTGGAAGACCTGTCGCAAGTCGCTCTGCGCCAGCGTGTGCTGAAAAATATGTCCGATTTAAGCCTGGAAACGACCCTGTTTAACGAAACGTTGTCGATGCCGGTGGCATTAGCGCCGGTAGGTCTGTGCGGCATGTACGCCCGTCGCGGCGAAGTACAGGCCGCCGCCGCCGCAGACGCAAAGGGCATTCCGTTCACCCTTTCCACCGTCTCCGTCTGTCCGATTGAAGAAGTTGCACCAACCATTAAGCGCCCGATGTGGTTCCAGCTTTATGTACTGCGTGACCGGGGCTTTATGCGCAACGCGCTTGAACGTGCGAAAGCGGCGGGCTGCTCCACGCTGGTCTTTACCGTGGATAT [...]
+CGGAAAAAACGCGCGCGAGGCAGCATTAACGTTATTAGGTCGCGCCCGCAAGGAAGAGCTGAGTCGCCACTAGCCGTAAGGAACTGTTTGCATAAACGACCCAACCCGCACAGAACGGGTTGGTCGTTTTCTGCCCGTCTGGAGTAAGCCATGCCGTGTGAAGAACTGGAAATCGTCTGGAAGAATATTAAAGCTGAAGCCCGCGCTTTAGCTGACTGTGAGCCTATGTTGGCCAGTTTTTATCACGCCACGCTACTCAAGCATGAAAATCTGGGCAGTGCGCTGAGCTATATGCTGGCAAATAAACTGGCTTCGCCCATCATGCCCGCTATCGCTATCCGTGAAGTAGTTGAAGAAGCCTATGCCGCCGACCCGGAAATGATCGCGTCGGCAGCCTGCGATATTCAGGCCGTGCGCACTCGCGATCCGGCGGTGGATAAATACTCCACGCCGCTGTTATATCTGAAAGGCTTTCATGCGCTACAGGCCTAC [...]
+NODE	536	1960	103515	101869	0	0
+GCCAAACAGATAGGGGATGACCCAGCCAAAACGGTAATAGTTGCGAATCAGACGAAAATAGCCGGCAGAAATTTTTTCTTTTGCCGCTTCGCCTTCCGTAACGCCGCATTTCGCCTGCCAGAACGCCATCGGTAATGAAAAATTGTAATGTACGCCGGAGATGGTTTGCATCAAGGCGCCATAACGATTTTTCAGCCCTTCGCGATAGAGCGTCTTAAAGCGCCCGGTATTGGATGTGCCGTACTGCGCCAGCTCTATGTCCTGCCCTTCCGCAATATAGCAGGGCATACTTAATGGCCACATCCGCTCATCGCCCAGTTTCCTGGCCGTATACCGATGGAGATCGCGCATAAAAGTGAGCATATGCTGGATATCGCCATCGACTGGCGTAATAAACTCCAGTAGGGCTTCCGCAAAATCCGTGGTAATCCATTTATGGGTCAGCGCTGAACCTAACGCTTCAGGATGACCTGTTGTCGCCAGCGTGCCATC [...]
+ATTCTCCATACTTTATTCTCCGTACTTTCAGCGATGAAGATGCAGATAAGATAGCGGTAATCACCGCTGGCATCAGAAGGATAACGTTGCGTCAGCAACGGCCCATAAGGCGAATAATCCTCCCGGATACGTCACTGCCCCGCAATCGCTTTTCCCCTTATCTTGAACACACCTCTTCATCTCTATTAGCGACAAAATCAACCAATTGCGATAAAGTACTGTCTGGTTATTCGGTTTGCGAGAACACGATGTACGCACGTTATGCTGGTTTGATTTTTGATATGGACGGTACTCTCCTGGATACCGAACCCACGCATCGCAAAGCGTGGCGTGAGGTTTTGGGGCGCTATGGTCTTCGTTTTGATGAACAGGCAATGGTCGCGCTTAACGGTTCGCCAACCTGGCTTATCGCCCAGTCAATCATTGAGCTTAACCATGCCGATCTTGATCCCCTGTCACTGGCGCGTGAGAAAACCGACGCGGTAAAAAGCA [...]
+NODE	537	4445	206773	202018	0	0
+TCGCCCATCTGATGAAACCCGGAAGCGCGGTGATGGTTTCGTCCACGATCTCAAGCGCCGACGCGCAAGAGATCGCCGCGGCGTTGACGGCATTGAATCTTAACATGCTGGATGCGCCGGTTTCCGGCGGCGCGGTAAAAGCGGCGCAGGGCGAAATGACGGTGATGGCCTCCGGGAGCGAGGCGGCGTTTACCCGCCTGAAGCCTGTGCTGGACGCCGTTGCCAGCAACGTTTATCGCATCAGCGATACGCCGGGCGCAGGTTCAACCGTCAAAATCATTCATCAACTGCTGGCTGGCGTGCATATTGCGGCGGCGGCCGAAGCGATGGCGCTGGCCGCGCGGGCCGGTATTCCTCTGGACGTGATGTATGACGTCGTGACCCATGCCGCCGGCAACTCCTGGATGTTCGAAAACCGTATGCAGCATGTCGTTGACGGCGACTATACCCCGCGTTCGGCCGTCGACATTTTTGTCAAAGATTTGGGGCTGG [...]
+GCGTAACACCAGCCATACCAGCACGAAAACGGCAACGATCAGGCCGATAATTGGGGTCGGTAAACTTGTCATGACCACCCCTCCATATCATCTTGTCGAAAGCGTTCGATAATGTCATCGAAGCGTTTATCGGCGACAAAACCTAACGCCAGCGCACGCTGGTTATCGATACGTCCCGGCCAGGAGGCGACAATTTTCTCGACGCCTTCATCGCGCTGATGCGTAACCCGATCGCGCGCCGCCTGACCGCCCGCCTGACGCAACGTTTCCAGCATCTCGCCCACGGTTACGCTGATCCCGGGTAAGTTGATGCTGCTCGCCTCGCCAGGCGCGGGTAACGTTGCGGCCAGCGACAGGTTATGGATCACCGTCGCCGGGCTGGAAATCCACAGCCGCAAACTTTCAGACACCGGGCAGATGGTCGTCTCGCCCTGCAACGGTTCACGAATAATCGCGCTGACAAAAGAAGAAGCGGCGCGGTTTGGTTTACCC [...]
+NODE	538	4780	294435	293301	0	0
+GCAGTAAATAATTATCTTGCGGAATTCTGAATAACGGGAAAATGAATAAAAAGGACATGAGAAGACCAATGCTGAACGTTTTCTTCAAACCAATTCTATCTGCGCACAGACCCCAAACGATATTTCCCAATACAGTGCCGAATGCCGCCGCCGTCATTAAATTAGAGACCACGCCCGTATCAAAGCCCTCTCCCGCCAAATATGTAGGCAGTAGACCAAAGATCGGCCAGTTTGCGCCGAAAATAGAGAACAGAACAATAAATACACATAATGTCAGTGGAAATTGAGCTCGATTAAATAGCCCTTTCATTGACAAAGAGAAAACTGACCAGGCACTTTGTGAATGCTTTCCGGGACCACTGAGTTTGGCTTCTTCCCACTCTTTAGATTCAGGAGCCCTGGCCCGGATGTAGATTACTAAAAGAACGGGTAGCAAACCGACAAAAAAAGCAGCACGCCAACCATACGCTTCGGCAAATGACGGCATAAAAT [...]
+ACTAACATCATGGCCAGGAGGTAGCCAAATAATACAAGATAATTAACGATGCCGAAAGAATGTGTAATCATAGTTCTTTCCTGCTTATGGTTTTGAGTAGAGTTGCGGTCATCGTCTGTGTATTTTTATCTTCCCATCATTCAGACGATACGATATTCAGATCAAGTAATAGTTTTTGTTAATCTCAATGACGCTAATCATGAGATGTAAAAGGCAGAGCATTTATGCTCCTGATGCCAAGACGTATGTCCTGCCGGATACCTGAAATAGCAGCTATCCGATATTGCGTTCAAACAGGCTTCAGGCCTGGGTATCGTATTTGCCGATAGCATTATTAACGTCGGATTATTCTCTGAGACATACATATCAATAGTAAGCGTGTTCATTTTCTTTTCCTGTTCAGCGTTTTACTGCGTGACTGAACCACTGACAGATATGCTCGATACGGGTGATAGCGGAACCAACGGTAACTGCCCAGGCACCATGCTCAAT [...]
+NODE	539	1438	79421	78429	0	0
+TTCTGATCGGAAACCGATTCGGCTCTTCCGCTTCGCAAGCCACCGTATTGTCTACTGATAAATAAAGAGTTTTGCCATGCCATGGATCCAATTGAAACTGAATACCACCGGCGCGAATGCTGAAGAGCTGAGTGATGCGCTGATGGAAGCGGGCGCCGTTTCCATTACCTTTCAGGATACGCACGATACGCCGGTTTTTGAGCCGTTGCCGGGCGAAACCCGTCTGTGGGGCGATACCGATGTGATCGGTCTGTTCGACGCCGAAACCGACATGAAAGACGTTGTCGCGATTCTGGAGCAACATCCGCTGCTGGGTGCCGGATTTGCCCATAAAATCGAACAACTGGAAGATAAAGACTGGGAACGCGAATGGATGGATAATTTCCATCCGATGCGTTTTGGCGAGCGTCTGTGGATTTGTCCCAGCTGGCGTGACATTCCGGACGAGAATGCCGTCAACGTGATGCTCGACCCGGGACTGGCGTTCGGTAC [...]
+GATAAGCGGAATAATCTGCTTTTTTTATAAGCTAATTACCCCAAATGAATGGGATCGCCGTCTCGTTTCAGGACAAGATCACTTCCCGCTGCGCGTGATTTTTCTCCATTGTCAGTCGGAAGGGGGCGCACAGACGCGCTTTTGTGTTCATGAACGGCACGGATAAATTTTTCCAGCTGCGCTGAAGAGAGGGCTAGCGGATGCTGCAGAACAACCCGGACAGCATTACTAATGCACGAGGACGATGGCTGCGACCCGTTAAAACGCCAGTATCTTTTGTCCGCTGGTAGCTGCTGATTATCCAGATGGATAGTGACAAAGAAGTCATTTCAGGCATTTATTTGATGAATTTAATGATGTCTCGGTGACAGAAAGGTGTTAAGGCAGTTGTGTGGAGAAAAGCGTGGCCGGGCGACCACGCTGACAAGAATTATTTCTTACGGCCAGTAATGCGGCACCACTCTTCTTTTTCGACGACCGGGTCGAGAGTGA [...]
+NODE	540	1027	53273	52512	0	0
+GCGAGAGATAAAAGCCGCAGAAATCAGGCTTGCCGCCTGTACCGTCGTCAGCCCAAATTCGCTTTGTACCTCAGTCAGTACAAGAGCAATCAACACAAAATCAAAACCATCAAGCAGATATCCCAGCCAGGCAGCGGAAAATGCCCGCCACTGCGCCCGGTTGAGATGGCGATACCACGGGATGTTCTGGGTAGAAGTACTCATTTTACTCTCCCGACGATTTTTGTTGTCGTTATGCCGAATGGCGGCTCCGCCTTATCCGGCCTACCGCTCACACTGTTGTAGGCCGGGCAAGCGTAGCGCCCCCGGCATTATGCTGTTACGCCTTTTCTTCTATCAGTTGTTGCGCCAGCGCCTTGAGCGCCGGCAGATATTTTTCATCAACAGGCGCGAACGGTTTACGACACAGCGGCACCGATACCACGTCCATATAATGCAGGACCGTTTTCAGGCCGCGGAATACGCCGGTTTTAATCAGTAAATCAATAACCT [...]
+TGTCGGGACGGTAAGCACCGCAGAAAGCCAGCAGCTTGCCAGCGCCGCAAAGCGTTACGGTTTTGATGCGGTCTCTGCGGTGACGCCTTTTTATTACCCTTTCAGTTTTGAAGAGCACTGTGACCATTATCGGGCAATCATTGATTCCGCAGATGGATTGCCGATGGTGGTATACAACATTCCGGCGTTAAGCGGTGTAAAACTTACCCTCGATCAGATCAATACGCTGGTGACATTACCGGGCGTGAGCGCGCTGAAGCAAACCTCCGGCGATCTCTTCCAGATGGAGCAGATCCGCCGCGCGCATCCGGATCTGGTGCTGTACAACGGTTATGACGAAATCTTCGCTTCCGGCCTGCTGGCGGGCGCGGACGGCGGTATCGGCAGCACATACAACATTATGGGCTGGCGTTATCAGGGGATTGTTCAGGCATTACGTGAGGGCGATGTGGCGAAAGCGCAGCGTCTGCAAACCGAGTGCAATAAGGTTAT [...]
+NODE	541	6303	401045	394691	0	0
+GACCACTACCGGCAGCGCCATACAGCGTTCGCCCGCGGAACCAAATGCTCCGCCCATAATGGCGTTGACGGTGGCGTCCAGATCTGCATCCGGCATGACGATTGCGTGATTTTTGGCGGCCCCGAAGGCCTGTACGCGTTTGCCATGGGCGCTGGCGGTGGTATAGATATGTTCCGCGACGGCGGAGGAACCGACAAAGCTGACGGCCTGTACGCGAGGGTCGCTGGTCAACAGGCTAGCCGCCTCATTGCCACAGTGAACAACGTTAAACACGCCGTCCGGCAGGCCAGCCTCCTGCAGAAGCTGCGCCATACGTAACGATGCGGACGGCACCAGTGCGGGCGGCTTCAGGACGAAGGTATTGCCGCAAGCCAGAGCAACCGGGAACATCCACATAGGCACCATTGCCGGGAAGTTAAACGGTGTGATGCCTGCCACAACCCCAAGCGGCTGCATTAATGAAAAGCTGTCAACGCCTGAGCCGACGTTAAA [...]
+CGCCATGGCAAGACTGCGCACACAGCATCCTGCGGAACCGATCGGCTCAAAGGCCAGCCGCATCTGGCTTTCTTCCGCCACTGCCGCCATCTCGCGCAGACGCTTCACTGAATCTTTCACCGTTTCCCCTGGCGGAAAATTTCCCCCCTGACGAATGGTGGGCACCACGACCAGACAATCCCCCCCCACCACTGAGCCAGCATGGCAGGCGAAAGCCAACTGCCGCCGTTTCTCCGCCCAGCTTTCGCTATCACAAAACGTAATGTCTTCCAGCGAATTGTAGCCCCAGGGCTTAAGGTGGCCGACGGCAAAAATGTCTGCCAGCTCGCTTAACGTATGTTTCTGCAACCACTCCTGCAACATATCCAGACGGATTTCGATGTAGTCATAGCCAAAACGTTCCGCCAACACAACATCCTGTGCCAGCATGGAGTTTCGCATACAGGTCGCTTCATTAAATCCCAGCTTCATCATTCAGATCGACTCCTGCCG [...]
+NODE	542	153	16581	16524	0	0
+ATGGGCGGGCAAAGGCTTCGGGATGATCCAGATCCCGCGTATCGGCCAGGAAGTGCTGGTGGATTTCAAAAACGGCGATCCGGATCTGCCGATCATCGTGGGGCGTACCTACAACCAGGACACCATGCCGCCGTGGGGACTGCCGGGAATGGC
+CCCCACGATGATCGGCAGATCCGGATCGCCGTTTTTGAAATCCACCAGCACTTCCTGGCCGATACGCGGGATCTGGATCATCCCGAAGCCTTTGCCCGCCCATGGGTAGCTGACGCGTATCCAGCAGGAGCTGTTTTCATCCATTTTGCCGTA
+NODE	543	30	3625	3615	0	0
+GTGGAACTTCACTTCCTCCGCGCCCGTTTT
+CACGGTGAAGAATAATGAAACGCATACGGT
+NODE	544	123	5468	5426	0	0
+GTCGTCAAAACGCAGCATGTTGCCGTTCGTTGGCCCGCCATACAGCGAGTGGCTGAAGATCCCGCTCTGCGACGCCATTCCCGGCAGTCCCCACGGCGGCATGGTGTCCTGGTTGTAGGTACG
+GTCGCAGAGCGGGATCTTCAGCCACTCGCTGTATGGCGGGCCAACGAACGGCAACATGCTGCGTTTTGACGACAAAACGGGCGCGGAGGAAGTGAAGTTCCACGCGGAAAAAGATCTCAACAC
+NODE	545	5089	242494	238699	0	0
+CATGGTCAGCGACAGGCCGTCCAGCACCAGGTTAAAACCGATGTTGAAGTTACCGACCGACATCCACGTCCACAGCGGCTGGCTGAACGCCTGTTTGCCGTTGGCGAAGAAATCCATCCCGACAAACGCTGTCACCAACGCCGCCAGACCAACGGAGCCCACGCCAATGGTCGCGGAGAGATTTTCCGACCAGCGTCCGCGAGAGAACGCCAGCAGTACAAAGCCAATCAATGGCAGAATAATGGTTAAGGCAAGCATGTTCATCCACGCATCTCACTTACTGAATCGATGTTCAGGTTCTGGCGACGGCGATGGAGTTGCAGCAACAGCGCAAGTCCAATACTCGCTTCCGCAGCCGCAAGGCTGATGGCGAGAATGTACATCACCTGACCATCGGTCTGGCCCCAGTAGCTCCCGGCGACCACAAAGGCCAGCGCGGAGGCGTTAATCATGATTTCCAGCCCGATCAGCATAAACAGCAGATTGCGGCGG [...]
+AGGATATGACCGTGATGACGGGTCACAGTTTCCGTCGCTACCGTTTCACCAAACGTACCCACCGCAACCAGGATCTGGGGCCGTTCATCTCTCACGAAATGAACCGCTGCATCGCCTGCTACCGTTGTGTACGTTACTACAAAGATTATGCCGACGGCACCGATCTGGGCGTCTATGGCGCGCATGACAACGTCTACTTCGGGCGTCCGGAAGACGGTACGCTGGAAAGCGAATTCTCCGGTAACCTGGTCGAGATTTGCCCGACCGGCGTATTCACCGATAAAACGCACTCCGAGCGCTACAACCGTAAATGGGACATGCAGTTTGCGCCGAGCATCTGTCAGCAGTGTTCCATCGGCTGTAACATCAGCCCGGGCGAGCGCTATGGCGAACTGCGCCGTATCGAAAACCGTTACAACGGTACCGTTAACCACTACTTCCTCTGCGACCGCGGTCGTTTCGGCTATGGCTATGTGAACCTGAAAGACCGTC [...]
+NODE	546	3533	185270	182608	0	0
+GCCTCGGCCGCCTGCCGCGCGCGGGCGATCATTTCGCCAGACAGATCGCATAACGTCACCTGATGGCCGCGTTCCGCCATCTTAATCGCCGTTTGCCCTTCGCCGCCGCCGGCATCCAGTACCCGCAGTTTTCGCCCGCCAATCTCCTCCAGCACGCGATCCAGGTCTTGCCACAGAATGGCTTGCCGCAGTTGTCCTTTGGTCGTGCCGTAAATGTTACGGGAAAACTTTTCAGCAATGTCATCAAAATTGCGATCCTGCATCGGACTCTCCACAGGCTGGCTCAGGCGTTATCTGATAAAACCGCTATTTTGTCACAGCCGCGGCCAGAATGAACCTGTCTGGTGTAATATCAGCGTTAATCCTCCGCTATATGGTTAAAAAAGGAACCAAAAAGGATGCTTTTTACGCTAAAGAAAGTGATTGGCGGTATGTTATTGCCGCTTCCGCTGATGTTGCTGATGATTGGCGTCGGCCTGGCGCTGCTCTGGT [...]
+TATTATACCAGGGCCGTTTAGTCGGGCGAATGGATGCCAAAATGCACCGTAAAACGGGGGTGCTTGAGGTTATCTCGCTGTATCTGGAGGACGATATTCGCCCTGGCGTTAGTCTGCAAAAAGGAATCTGGCAGGCGATTAGCGCGTTTGCTGCCTGGCAACGGGCATCGCGCGTGACGCTGGGACAATGTCCGCCAGGCCTGTTTAGCGCCATGCGTCATGGCTGGGAAATAGACCCTGCACCCTAACCGATTATGTTAATATTGAAGGATTCACAATCCGGTCCATCTGGAGGAACTATGGATCATCGTCTGCTTGAAATCATCGCCTGCCCGGTATGTAACGGCAAACTCTGGTATAACCAGGAACAGCAAGAATTAATTTGCAAACTGGACAATCTCGCTTTCCCGTTACGCGACGGCATTCCTGTATTGCTGGAAAATGAAGCTCGCGCCCTGACATCTGATGAGAGTAAATCATGAGTTTCGTCGT [...]
+NODE	547	3136	154873	153247	0	0
+CGTTAGGGTGGACCACCGATCGTCACGGTTATTGTTATGCTGTGCGCGATCCGTTGACCGATAAACCCTGGCCTGCGCTGCCGTTATCGTTTGCCAGCGTATGTCGTCAGGCGGCAATCGCGGCAGGGTATGCGAGCTTCCAACCGGACGCCTGCCTGATCAATCGCTACGCGCCCGGCGCAAAACTGTCGCTGCATCAGGATAAAGACGAGCCGGATCTGCGCGCGCCTATTGTCTCAGTTTCGTTGGGGGTGCCGGCGGTTTTTCAGTTTGGCGGCCTGCGTCGCAGCGATCCGCTCCAGCGGATCTTACTGGAGCATGGCGATATCGTGGTCTGGGGCGGCGAGTCCCGGCTGTTTTATCATGGTATCCAGCCGCTTAAAGTGGGCTTTCATCCCATGACCGGTGAATTTCGTTACAATCTCACCTTCCGCCAGGCGGCTGAAAAAGAATAAAAATAAGAATTATTATTGCTGTGCAGGTGGAGTTAGT [...]
+TCAATGAGTTATATAGATGCTTATATAACGAAAATCACTAATAGTTGATAATTTCATTTACATTATCAATATCGGAATATTCCACTATATAAAAAGACGCTATTTTATTAATAATCTTGAAAATATGAGTAAATACAGATTAATAGATAATATGAATGTGTTAATCTGTTGCCCGTGCATACCGAAAACAGCAGAAAGGAAATACTGTGAACAATCAAATGAAGATGTTTGTCCCTGCCGTCGTCTTCGCCGCCCTCGCCAGCGCCTCTGCCTGGGCTAACAATAGCGATACCGCCCAGCCGCTGGAAAAAATCGCCCCCTATCCGCAGGCGGAAAAAGGAATGAAGCGGCAAGTGATAACCCTTACCCCTCAGCAGGATGAATCTACCCTCAAAGTGGAACTGTTGATTGGCCAAACGCTGAATGTGGATTGTAACCAGCATCGCCTCGGCGGCACGCTGGAAACAAAAACGCTGGAAGGCTGGGGCTATG [...]
+NODE	548	51	3686	3686	0	0
+CGGCAACAGCATTTACCTCTATCGGGGTATGCATCTCTTACACATCCTGAA
+GGATCAAAAGAGTGCCAGGTAAAGACCCGTAAACGTGCTTTTTCTCACATT
+NODE	549	599	31609	31157	0	0
+ACGTCATGCTGTGCGGGAACCCGCAGATGGTGCGCGATACGCAGCAACTGCTGAAAGAGACCCGACAGATGACTAAACATCTGCGCCGCCGACCGGGGCAGATGACGGCTGAACATTACTGGTGATGTTTTACCGAATGGCGGCTGGGGCTTATCCGGCCTGCAAATCATCACCAATCTGTAGGCCCGGTAAGCGTCAGCGCCACCGGGCAAATTACGGTTTACCGCCCGTTTACGGTTCTGCTTTAAACTTCACGTCCTGTGTCGCTTTCCCAAACTTATTTTCCCCCTGAACACCGACAAACGCGCCCAGATCGATAAGCATCATCACCAGGATCAGCGTCGGAATAAATCGCCCGACGACCCACTGCCACATCCCCGGCAGCATCACCCAGTTTCCGGCCAGCAGCATCCACGCCAGAATCATTAGCAACGCCCACGCGCCGGAACGTCCCCGGTCATGCAGACGTTTGACCATGACGGCGGCGGTCGG [...]
+GGGAAAAATCTGCTTGATATCCAAACGGCGGCATTTTGCCTGGTGTGCCTGCTGTGGCCGACCGCCGCCGTCATGGTCAAACGTCTGCATGACCGGGGACGTTCCGGCGCGTGGGCGTTGCTAATGATTCTGGCGTGGATGCTGCTGGCCGGAAACTGGGTGATGCTGCCGGGGATGTGGCAGTGGGTCGTCGGGCGATTTATTCCGACGCTGATCCTGGTGATGATGCTTATCGATCTGGGCGCGTTTGTCGGTGTTCAGGGGGAAAATAAGTTTGGGAAAGCGACACAGGACGTGAAGTTTAAAGCAGAACCGTAAACGGGCGGTAAACCGTAATTTGCCCGGTGGCGCTGACGCTTACCGGGCCTACAGATTGGTGATGATTTGCAGGCCGGATAAGCCCCAGCCGCCATTCGGTAAAACATCACCAGTAATGTTCAGCCGTCATCTGCCCCGGTCGGCGGCGCAGATGTTTAGTCATCTGTCGGGTCT [...]
+NODE	550	9746	561377	551740	0	0
+AGCTGCGCCTGAAAGGCACGCTCCTGCTCCTGCGGCGTGGAAAAATTACGATTGAAATCCAGCCCGCACTCACCGATAGCGACGACTTCCGGCTGGTTCGCCAGCGCAATAATGGCGTCTTCAGACGCGGGTGACCACTGACTGCTGTCATGGGGATGGACGCCAGCCGTCGACCAACAATGGGGGTAGCGCCGCGCCAGTTTTAACGCCTGCTGACTTTCATGGATGTTCGTTCCGGTCAGTAGCATACCTTTTACTCCCGCCGCAAACGCACGGGCGACCACATCATCACGATCTTTTGCAAACTGGCTACTGGTTAAATTAACGCCAATATCAAACATGCTTGCCCCCATATGACAACCGCCCTGGCGGGCGGTTGTGTTTAGTCTTCAGTGTGCTCGGCCTTTTCGGTTTCGGCCTCGTTATCTTCGTCGCGCGTCCGTCGCTTACCGACATAAAAGCGTGAGCAGAAAACGCCAATTTCAAACAGGC [...]
+TCATCGGTCTCTCTATCGACGGCCCGGCGTCGTTACACAACCACTATCGGCTTAATCGCGCTGGAAAAGGAACTCATGAACAGGTCGTCGCAGCAATGGCGCGGCTTAAAGCGCACCATGTCGACTTTAATACCTTAACCGTCGTGGGAAAACATAACGTCGGTCATGCAGCAGACGTCTACGAATTTCTTCTGGCGGCGGGATCGCGTTTTATTCAGTTTATCCCGCTGGTAGAGCGAATGAGCACCGATAACTCATCGGTACTTAATCTGGTGATGCCCGGCGAAAGCGCGGCGACGCTGGCGCCATGGACGGTACCGTCGTGGCAATATGGCGAATTTCTCAACCAGATCTTTGATATCTGGGTTCGTCGCGACGTAGACCGCGTCTATGTGCAGATGTTTGACGTGGCGTTAGCCGCCTGGACGGCGCAGCAGCCGGTACTGTGTGTACATTCCGAGACTTGTGGACATGCCTTCGCGTTGGAGTCGA [...]
+NODE	551	6135	374830	372749	0	0
+CCGATATGGGTACCGGCATTATGCTCGACTCGCGGCGTAAAATTGGTCCGAAGGGCAAATTCCGCCCGTTCGTGCTTTACGCGGCATTTCCGGTAACGCTACTGGCGATTGCTAACTTTGTCGGCACACCGTTTGAGGTGACGGGAAAAACCGTCGTCGCAACGATGCTGTTTATGCTGTACGGGCTGGTTTTCAGCATGATGAACTGCTCGTATGGCGCGATGGTGCCCGCGATTACCAAGAACCCGGATGAACGCGCCTCGCTTGCCGCGTGGCGTCAGGGCGGCGCCACTCTCGGCCTGCTGCTGTGTACCGTTGGCTTTGTGCCGGTCATGAACCTGATCGAAGGCAATGCCCAACTCAGCTATATTTTCGCCGCCACGCTATTTTCATTGTTTGGCCTGCTATTTATGTGGCTGTGCTACGCCGGCGTTAAAGAGCGCTACGTCGAAGTGAAACCTGTCGATAGCGCGCAAAAGCCTGGATTATTGC [...]
+CTCCACGTAAAAATGGTTAGGGTAATGAATCGTGTCGATATTGATATACATCATGACCGGTTGGCTGCCAGCACGTTCGGCCATGATTTTCTGGATATAATGGATCTGGTTATCCATACTTTCTTTAACCGTACAGGCAAATCGTGGATGCCAGTAACTCTCTTTAAACATCGATGGGAACACTTTTCCCATGCCGGAGCGGTTATTAAAGAAAGAGACGCCGCCAATACAGATGGTCTGGTAGCCTTTATTTTCCAGACTTTTTATCCATGTTGCGTCATCAAAGGCAAATGCATTTTTCGGCCCTTTACGACCAAGTCCGATATCTTTTGGGAAAAACAGCATGGTCTGATTAACGGTATCATCAATAGGTTTTGGCATAAAACCTGAAAACATGGCGTGATGCGAAGGCCAGGTGAAATTACCGGCCGCCTCGCATTTCGTCCATTGTCCATAATGATTAAGGTTTGGCGTATTTCCGGCGGTTTGTTC [...]
+NODE	552	2158	111510	107173	0	0
+CGTGTTAAAACTGGCGAAGCAACTGCTGTCGCAAACCGGTTTGCGTCAGGGCAGTCTGAGTAAGGCGGCGCGAGGTTATCACCTGGCGCAGGGGAATGCGCCGCGAGAGAATACACCAACGGCAATTCTGCGGACTGCCGCGAAAGCCACGGTAGAGCAAGGGCTGGAGGCCTCGCTGGATCTGGCGTTGTCACAGTGGCAGTACCATGAAGAGCTCTGGCTGCGCGGCGACGAGTCGGCGAAAGAACACGTGCTGGATGCTATGGGATTAGTGCGCCATGCCTTAATGCTTTTTGGTGGCATTGTTCCGCGTAAAGCGAGCGCTCACTTACGTGATCTACTTACCCAGGCGGAAGCGACGATGACATCCGCGGTGTCCGCCGTCACAGCCGTTTATAGTACGCAAACGGCGATGGCGAAACTGGCATTGACGGAATGGCTGGTGACGAAAGCCTGGCAGCCATTTCTGGACGCGAAGGCGCAGGCCAAAAT [...]
+GATCGTCGGCAGGCAGCGTTTGCGTCTGTTCGTCATTGATGCTTTGCAGCAGATTCTCCAGACGACGTAGAAAAAGATAGGCCACGCGCAGTTGCGCCACGTCATTCTCAGGCAGCAAATGCAGCGCAGCGATAGCATCCAACGTCGGCAGTAACGAACGCGACTGTAGCGACGGCTCGCGTCCGCCGCGGATGAGCTGGAATACCTGCACGATAAACTCAATTTCACGAATACCGCCCGCGCCAAGTTTAATGTTGTCTTTCAAACCGCGGCGTCGCACTTCGCGGGCGATCATCCCTTTCATATTGCGTAGCGACTGGATGACGCTGAAATCGATATAGCGGCGGAAAACGAAAGGTCGCAGCATGGCGCGTAATTCACGAGACCAGGCGTCGTCGTTATCGCCCATTAGCCGTGCTTTCACCATAGCGTAGCGTTCCCAGTCGCGTCCTTGCTCCTGATAGTAATCCTCCAGCGCGGCAAAACTCAGTA [...]
+NODE	553	6673	337098	334330	0	0
+AAAGATAGCGGTGCCGATGCGCACCATTGTGCTACCTGCCGCAATCGCGGCTTCCATATCGTCGCTCATACCCAGAGATAAGGTATCAACGTCAGGGTAGCGCGCTTTCAGCCCGGCAAATGCTACAGCCATTTGACGTGCGACTTCAAACTGCCTTACATAATCTGACTCTGGCGCCGGGATCGCCATCAGTCCGCGAAGCCGCAGACGCGGCAGTGTTGCCACCGCCGCGGCCAGCTCATCCAGTTCCGCCAGCGGAATGCCTGATTTGCTGTTTTCATCGCTGATATTAATTTGGATCAGAACATTTAGCGCTGGCAGATTATCCGGACGCTGTTCGCTCAGCCGCGAGGCGATACGCAGGCGATCGATGGTATGACACCAGTCAAAATGCTCGGCCACCAGCCGACTTTTGTTGGACTGTAAAGGGCCTATAAAGTGCCAGTGCAGGCCTTCCACTTTCGCTTCCTGAAAGTGGCGGATTTTTTCCAC [...]
+TACTGCTGGAAAACATCGACACCTTTATAGCAGAGGTCGTGCCGCATGAACTGGCGCATCTGTTGGTGTGGAAGCACTTCGGACGCAAGGCTCCGCATGGCAAGGAATGGAAGTGGATGATGGAAAGCGTGCTGGGCGTTCCGGCCAGACGTACTCATCAATTTGCGCTGCAATCCGTACGGCGCAATACCTTTCCCTACCATTGCCAATGCCAGCAACATCAACTCACCGTCCGCCGTCATAATCGGGTAGTACGCGGCGAAGCGGTTTATCGTTGCGTTCACTGCGGCGAACCACTGGTCGCCGGGTAGTTCCCGAAACGTCCGGGAACTTTCCTGAGCGGACTGATTGCATACAGACACAACTTTCGTTACGTTGCGGGCTCGTTTTGCTATGGAGTGTGCAATGTACCGTAATTTTTCTTTTGCCGCTGCGTTGCTGGCCGCAGCGTTTTCAGGCCAGGCCCTGGCCGATGGCATTAACAATTTTTCT [...]
+NODE	554	3485	239105	236050	0	0
+ACTGACGGGTAATCCATGTTACCTGTTGCTCAATCACGGTTAGCCGACGGCTGGCCCAGTCGTGGTCCTGCGACAGATGATTTTCCAGCATGCGTTGACTGAAGGCTGGCTCGTCCCAGGGGATTTTGCCTTCATCGGGTAATAGCCGAATGCGATGCGTTGCAAAAATAACGGCGCTGATATCCATCATCATCTCCTTAGCGATTGTCAGGCTGGGCGCGAACGTTGTTCAGCCCGGTTGTATTAATGCGGTAGGGCTGACCGTTAACGGATTTGATCAGCTTTTTGGTTTTGAGTTTTTTGAATACAGCGAGCGTGCAATCGGCGAGCAACAGCCCTTCGCGGCTATAGCACTCCACGGCGGTGACGCGGCCTGACGCATCGCGGATGTGCGTAATGCGTCCGCCTTTGGCGAGAACGTGTAAGGTACGTTGTTCCTGACGGGATAAATTCATACTGAAGAACCTGTTTAATCATCATAGGCAAAACGTG [...]
+CTGTATGGCTGCGGCATCAAGACCATAACGTTGCAGCGTTTCGGCGGGATGATAACTGACCAACGTTCGCCCATCGGCTTGCTGGCTAATGAGCACCCGAAACGGTAAATCCAGCGCCAGTTCGGGATGCGCCAGCATGAGAGGCGTTCCGCCTTTAGGATTGCCAAAGACCAGAACCGTTGTCGGCGGCATTTTCAGGTTAACATTCTGTGCCGCTCTGGCATGATCAAATTCCCCAAATAACACCAGACCGTGATCGGCGACAGCGTGCATCAACCGCGCTCGGGTCTGCAAATAGTCATAAGCGCTGTAGGTTTTAACCATGGTTATCGCTCCATCCTCCGTTGCAAAGCCAGGCCTTATTAAGATTAACATCAGGGTTACCGCCAATAAAAAAGGCTTTAAAATAGTACTCATTCTTCTCTCTCCCTGACCCAATACCCATGAGTAAATGCGACACAGATGATATTCAGTTTAAAAATCAGTCATCGT [...]
+NODE	555	4935	286110	284903	0	0
+ACTTCCCTCATTTTCAGCATAACTCATGCTTCATCATCATTGAATAAACAATTAAGTTTGTTGAACGAAAATTTACTTAAAGAAAAAATAATAAGCCTTAATATTTTTTGCAGTATTTCAACTTATAGCAGAATAAATGTGCGTAGATGGCGTAAAAACCTGATGAGCAGGAATATCGATAGCCAGTAAATCACTCCTGTGGTAATGCAGGACACCTGATGACTGTGAAGGTAGCTTCATCTGTAGCGCCGGTGAAGTTCAGCGATTTAAGTGAAAAGTAGCCAGCAGGCGCTTCTGCTGGTCCATATTCCTCTATTTTGCCAGACCATACTGAAGTGCCACCCAAGTATCTGCCAGAACGATCCTGAGATAATAAATATAAAAGCAGTTACTGCCTACCTCAAGAAGTATGTGCTCATGATCATTTAAAGCTCTTTTAAAGAGACTGATAATAAGCTTGTCAATATAATATTATGCAGTCTCTATTAAGCG [...]
+TTCGCCCACTATAGATAAGGGGTAACATTGTCCCGTTTGATAACTGCGAATGCTTTCAGCCACCAGCGGAGAACGTAAATTCGGCGCGTTCAGAATCTCGTCGGCGCTCACCCAACGGCAGCAATCGATGTCATTGTCATGGGGTTCGGTCGCGCAAATATGATCAAGCTTGATAGCGAATAAAAAGCGCAGGAACGGGGTCTTATCCGGCGCAATCCACTGATGCATACGGATAAAATACTGTGGTTGCGCCGTGATGCCAGTCTCTTCCCACAGTTCACGCGCGGCGGCCTGCGCCAGCGTTTCATCTGCCTCCAGGTGTCCGGCAGGTTGATTCCATAACGATTTACCGTTGATGGTCTCTTCCACCACCAGAAATTTATCTTCGGCATGTACGATGCAGGCAACGGTCACGTGCGGCTTGAACATAGGCATCCTTATTAAAGCGGTTTATCAATGTGGTCATAGATCGCGTCAAGCTGTTTCAGACGC [...]
+NODE	556	6580	304702	302105	0	0
+CTATTAACTTTTGTACGATGCTGCGTAAGGTGCGGTTTTCGCCGTTAGTGATGTTATAAGCGCGGCCAGAAGGCAGATGATCGCAGCCCGGCTGGCTGGCCAGCCACATGGCGTGGATCGCATTTTCATAGTAGGTCATATCGACCAGCGCGCTGCCCCCGTGCGGTAATAAGACGCTACCGTAATGGTGCATCATATGCGCCAGACGTGGGATAAATACTTTATCGTGCGGGCCAAACAGGCTTTGCGGACGCAACACCGTAAAACGTGTTTGCGGATTAGCCTGCGCCAGCAGATTAATCACCTCTTCACCGGCGGCTTTACTGCGGGCGAACTCATTGGCAAACCGATGCGGACGGAAATCTTCTTTGATATCACGGTGATGGTGGTAATCAAAATAGAGTGAGGGAGAGGAGATATGAATAAAATTGCGCACGCCCCAGGCGACCGCCCATTCTCCCAGGCGGCGGGTGGCGCGAACATTCGCCAGAT [...]
+GTTTCAACAAACTGGAGTTCGGCGACATCGAAGGGCTGCCGCGTCTGGTCGATGCCGGTCAGTGTAACGATGCTTACTCCGCGATTATCCTGGCGGTGACGCTGGCGGAAAAACTGGGCTGCGGCGTCAACGATCTGCCGCTATCGCTGGTGCTCTCCTGGTTTGAGCAGAAAGCGATCGTGATTCTGCTGACGCTGCTGTCATTAGGCGTGAAAAATATTATCACCGGGCCGACCGCGCCGGGCTTCTTCACGCCGGATCTGCTGGCTATCCTCAACGAGAAGTTCGGTCTGCGTTCCGTGACCACCGTTGAAGAAGACATGAAGCAATTGCTGAGCGCGTAAGGAGGTCAATAATGACGATGCCAACCTCACAATGTCCCTGGCGAATGCAGGTGCATCACATCCGTCAGGAGACGCCGGATGTATGGACAATTGCGCTATTATGCCATGACTACTACCCTTATCGCGCCGGGCAGTATGCGCTGGTGAG [...]
+NODE	557	63	4698	4698	0	0
+CGCCTGTCCGGCCTGGCCTACGGTACCGACAGTTTCATTTTTCTCGTTAAGGACATCTGCGCC
+GGCCGGACAGGCGTACGTGCGCGGCGTAGAACAGCAAGGCGAACTTCGCGTGGTGTGGGGCAG
+NODE	558	2987	151509	150545	0	0
+CCAAGCGCGATCGCAACACGGCTATTGGCGCAGGTGCGGGGGCGTTAGGCGGCGCAGTGTTAACGGACGGCAGTACATTAGGCACCCTGGGCGGCGCGGCGGTCGGCGGCGTGATTGGTCACCAGGTTGGAAAATAATCCAGACGTTTAAATATTGAACGGCTCAAAATAATACGTTTATTCTTTTCAGGTCTGGATTACAAAAATAGACAAAGTTGACTTTTACGCCACGGTAATTTACAACCGTGGCGTTTTCATTAGCCGCCAGCTAATTTTACTTTCATTCCTTTAGCTTCCAGCAATGATTTTATCAAGTCGCGTTTATCACCCTGAATTTCAATAATCCCTTCTTTTACTGCCCCGCCACAGCCGCATTTTTTCTTCAGTTCAGCCGCCAGTTTGGTTAATTCAGCATCATTCATCTCGATACCGGTAATCAAACATACGCCTTTACCCTTACGGCCACTGGTTTGACGCTGAATGCGAACGATAC [...]
+TGGGCGCGCAGAATGATCAACAGGTGACGTTTAACTACCTGCTGGCGCAAGGGGAGTATCGTATCTCCACGTTGCTTGCTGTGCTGTTCGCCGTCGGTTTTGCGATTGGCTGGCTGATTTGCGGCCTGTTCTGGCTGCGGGTCCGCGTTTCCCTTGCCCGTGCTGAACGTAAAATTAAACGACTGGAAAACAAGCTTTCGCCAGCAACCGACGTTGCGGTCCCTGCCGATTCGTCGGTTGTAAAGGAATAATCATTTATGTTGGAGTTGTTATTTCTGCTGTTGCCTGTAGCCGCTGCCTATGGGTGGTATATGGGTCGCAGAAGTGCGCAACAAACAAAACAGGATGAAGCTAACCGCCTGTCGCGCGATTATGTCGCAGGGGTTAACTTCCTGCTGAGTAACCAACAAGATAAAGCGGTGGATCTGTTCCTCGATATGCTTAAAGAGGATACCGGCACCGTTGAGGCTCATCTCACTCTCGGTAATCTGT [...]
+NODE	559	4682	250149	245834	0	0
+TTTATAGAGCGCGGCCAGTGATTCCATTTTTTACCCTTCTGTTTTTTTGACCTCAAGTTCCCGCATCTTAGCACATCGCCCCACGAGAGCGTGATCTCTGCCGAGCGTGATCACATCGGCATTTCTTTAATCATTTATTTGCATTTTATTAACACAAAACACACACTTCGCTTCATCTGGTACGACCAGATCACCTTGTGGATTCAGGAGACTGACATGCTTTATAAAGGCGACACCCTGTACCTCGACTGGCTGGAAGATGGCATCGCCGAACTGGTGTTCGATGCTCCAGGCTCGGTCAATAAACTCGACACCGCAACCGTCGCCAGCCTCGGCCAGGCGCTTGAGGTGCTGGAAAAGCAACACGATTTAAAAGGGCTGCTGCTGCGCTCGAATAAAGCGGCCTTTATTGTCGGCGCGGACATCACCGAATTTCTTTCACTGTTCCTCGTCCCCGAAGAGCAGTTAAGCCAATGGCTGCATTTCGCTAAC [...]
+TGTTTGATATCCTCGATCCTTATCGTGATGTGATAATGAAAACTCTCGATCAGGGCGCTGTGTGCCTGAATATCGACGCCAGCCAGTCCGGCCATACGTTGAGCGAAGAAGATCTGGCGGCGCTGGACTCCTCCGACAAATTCGGGGATATCGTGGGTAGTGGGGCTGGCCGCAACTGGGCGCATGTCAACAGCGTCGACTATGACAGTGAAGATGATTCCATCATCATCAGCTCCCGCCACCAGAGTGCGATTATCAAAATCGGCCGCGATAAGAAAGTGAAGTGGATACTGGGTACGCCTGCTGGCTGGAAAGCGCCATTTAATGCCGCAATTCTGACGCCAGTGGATAGCAAAGGCCAAAAAATCGCTTGCCAGGACAGTGGCTGCGAGGGTGACTTCGACTGGACATGGACGCAACATACGGCTTTTAAAATTGATAGTAAGAGTAAAGGCGATATCTTATACCTTTCCGCTTTCGACAATGGCGATG [...]
+NODE	560	4947	272038	270066	0	0
+CGCACCCCAGCGCCAATGGTGTATATCGGCAATCTGGGTCGCGAACTGAGTCTGCCCGCCGCCAGTTTAACGCTGGTCGATAAGCTGGCAATGATGGAGCAATATATTGGCAAAAAAGTCATTGACGCAGTAGTGGTTGGGCCGCGAGTTGACGTCAGTGCGGTGAACGATCGGCTGGTGATTCAGGAAGTGCTGGAGGCCAGCGATATCCCCTATCGCCACGATCGTCAGTTATTACACAATGCGCTGGAAAAAGCGCTACAGGCGTTGGGTTAAGCCCGTTTACCGACGACGCTGCGCTTATCAAAAGCCTGTTTACACCGAAGGGTAAACAGGCTCCCTCCCTCCCTCTTCTGATAAACTGCGTTCAGCTACCGCCAGTAGGCGCTCATGAGCGAGCTCACCTCTTTTTTCAGCAATATATTCTCCATGAGCTCAGTACAGAGTGACTGATTAATTTCTTCCATTATTTTTTTCCCAATAGCACGCTCT [...]
+GCGGTGGAGTATTTCGTCTCCTACTATGACTACTATCAGCCGGAAGCGTATGTGCCAAGTTCGGATACGTTTATCGAAAAAGACGCTTCGGTAAACGAACATATTGAGCAAATGCGGTTGTCGGCAACGAAAGCGTTGCTTGAGCGACGCGATGTCGTGGTGGTGGCTTCCGTGTCCGCGATTTACGGTCTGGGCGATCCGGATCTCTACCTGAAAATGATGCTGCATCTGACGGTGGGAATGCTGATTGACCAGCGCGCGATTTTGCGTCGGCTGGCGGAATTGCAATACACCCGTAACGATCAAGCTTTTCAGCGTGGTACCTTTCGCGTGCGCGGCGAAGTGATCGACATCTTCCCGGCTGAATCTGACGACATCGCGCTACGCGTTGAGCTGTTTGATGAAGAAGTGGAACGCCTGTCGCTGTTCGACCCGTTAACCGGGCAGGTAGAGTCAACGGTGCCACGTTATACTATCTATCCCAAAACGCAC [...]
+NODE	561	1143	244527	242483	0	0
+AAAAAACCTATCCAAAATTTCACGTTTTGTACCATTCTTAAATGGCGCATAATCACCTATACCTTCACCATTCAAATCAACTTCATATATTTCTCGCCCCTCTGACTCACAACGTTGTTTCATAATCGAGTAAATAAATTTATCTGGTTTCTGATCCCAGAACCACAACCCCCAATTTTTCAATATTGCCTGGTCTGCAATAACCCCCTGAATAACACCTTTACCCGTTTGCGTTGCGCCTAAAATTTTAATATTTACTTTAGACAAATAGTCATCTGTAACGTAGATTGCTTTATCATTTTCATCTAATCCTAAAAAGAAATGACCATCCTTATAATAATCTAAAGGATTGAAGTTTTTAGGCGAATATTTACCTTTCTCAACACGAATATCACTCATAGTATCCGAGGTCTGAGACACACGAAAACGACGAAGCCATGATGATAGTTTTGGTCTTATAAGACGGCGATTAATTATCTGACAAGCATAGGG [...]
+GGTATTCACTCAGGAGGGTGGCAGGGTTTAGTGAGTTACGTAGACAGGTATTTAAGTTACAGAGATATGCAATGACAGAGTGGAAACGTTCCAGAAGAGGTGAATATCCTTATGAGAAGATTTTTGTTGGATGGTTAGGACGATTTAAACAAAGTGAAACCATCACAGATGAAGAGCTTTTGTTAATATCGAAGTCAAAAAAAGCTGATATCTTTTAGTTTTATCAACATAGCGTGAGGTGCTTATGCAAGCAAATGATGAGTTTCTTCGCTTGGTTTTTGAAAACATATGGCCCTGGTGGACATATGCTTGGGTTTTAGTTTTTTCTTTGTTATGTGTGTTTACATTTTCGGGTCATGCAGAAAAAAGTGGTGATAAGAGTACTCTGCGTTTCATTATTGAAGCAGCCAGGAAGAAATTACTTGTTGCATGGATTTTATGTACTCTTTTGTTCTTTCTATTTGTGTACATAATAGCGTGGAAACACTTTGG [...]
+NODE	562	117	10636	10636	0	0
+CGTTTTTCTGATTATCTGATTCATGCCGTTATCATAATGTGGATAGTTGTTACGAGTGTTTCTATTTCACTCAGCGCCATCATTAGCATCGTTTTCTGATAGAATCAGCCCCTTGCG
+AAATAGAAACACTCGTAACAACTATCCACATTATGATAACGGCATGAATCAGATAATCAGAAAAACGTGATGTTAACAACTCATTGAAAATAATGGGTAATTATTAAGACGAGAAGG
+NODE	563	3641	176214	174359	0	0
+GACAATCAGCTTGACGATGGCAATCACCAGCGCCAGCAACAGTCCGCCTGCGCTGAAGGTTTCCATCTGTCCCCACGGCAGAAACACGCCGACGAACATTTGCAGCACCACCAGTTGCTTAAGGCTGATGCCCCATTTCAGCACCGCAAAGCCGCTACCGCTGTATTCGGTCAACGGCCCTTCCTGCAACTCCTGCTCCGCTTCCGCCAGGTCGAACGGCAGCTTGCCCATTTCGATAAAGGTGGCGAAGGCGCAGGCGCACAGCGCCAGAATCAGCGGAATACTGCGCGCGACAGGCCAGTGATAAATGGTATCGGCGATATTGCTGATATGAGTTGAACCCGCCACCTGCGCGGCGACCCACAGACCCAGCAGCAGAATCGGCTCCACCAGCACGCCGAGCATCGCTTCACGGCTGGCGCCGATCGCGGTGAACGGGCTGCCGGTATCCAGGCCTGCAATAGAGAAGAAGAAGCGTGCAATCGCGAACAG [...]
+AGATGGCGAAGATAAACAATTGATTGCACAGGCGCAGCTCGATATCGACGGCAAGGTTGACGAACGGGTTAACAACCGCGATCGCGAGCAGGTGCTGGAGCACTATCTGGAAAAAATCGCCAGCGTTTACGACAGCCTCTATACCGCTGTAGAAACCAACTCGCCGGTTAATTTGCGCCAATTGGTAAAGGGAAACAGCCCGGCGGTATAAGCCTGAGGCGTTGCCCGCTTTGATTCGCGATGTGGCGTTGCGCCATGTCATGAATGTTTTGGGGATGGGCGTGTCGATAAGTGTCGAAAATGACATTTCAACGGCATGTTTTCGTCAAAAATGACAATCACCTGAGGAATGCCTGGTGAATCGTTTTGTAATTGCTGACTCCACTCTCTGTATCGGCTGCCACACCTGTGAGGCCGCCTGTTCAGAGACGCATCGCCAGCATGGCCTGCAGTCAATGCCGCGCCTGAAAGTGATGCTGAATGAAAAAGAAT [...]
+NODE	564	1936	97733	95303	0	0
+TCCGGTGGCGGTGGTCTCCTCCGTCAAGCTGGACACTCAGCGCGCCTATACCGTCATTCAGGCACGTCCAACCGCGGGTTTGCAGCGTTTGCGCTATCTGCTGCTGTTGTGGGGAGCCGATCGTAACGGCGCCAATCCGATGACGCCGGAAGAGGTTCACCGCGTCGCCAATGAGCGCCTGATGCAGATGATGCCGCAGGTGTTGCCTTCTCCGGATGCGATGGGGCCGCCGGCGCCAGTGCCGGACCCGGCGACGGGGATTACTCAGCCATCTGCGGGCCAGACTGCGCCGGTATCAACGCAACCATCGCCTTCGGGCGCGACCACGCCGCCTGCGCGTGCGCCGGGAGGGTAATGGTGGCGAGCTATCGTAGCCAGGGGCGCTGGGTTATCTGGCTCTCGTTTCTTATTGCGCTGTTGCTGCAAATCATGCCCTGGCCGGACGACATCATTGTTTTCCGGCCAAACTGGGTTTTGCTCATCTTACTGTAC [...]
+TCACTTTCGCTTTCGATACGCTGGGAAACGCCAACGTGTGACGCGCCGGGCATAAAAACAAGGTAACGGGAGGGCAACGTGATGTCCGTGGTCAAACGCGCGCCTTTCGTGCCGAGCGGATCTTTCACTACCTGCACCATCAGATCCTGTCCCTGACGCACCAGTTCGGAGATATCGCGCACCGTAAACTGTTTTTGCTCGTCGCCCGCCACGCATTCGGTATGCGGCATAATATCGGAAGCGTGAAGAAATGCGGCTTTATCCAGCCCAATATCTACAAAAGCCGCCTGCATACCTGGAAGTACACGACTTACACGACCTTTGTAGATATTGCCTACGATTCCGCGTCGCGCTTCGCGCTCAATATGGATTTCCTGAAGAATACCGCCATCAATGTACGCCACGCGCGTTTCCGATGGCGTTACGTTTACCAACAATTCAGCCGTCATGTTTATCCCTTTTATCACGCAGTGCGTTAAAATGACTCAACAA [...]
+NODE	565	2731	134727	133505	0	0
+GTATGGTGTTCTATCTGCCGAGTGCGATTCCGTCAGTGTCCGTGGGCCTGGGCATTCTGGTTGCTTTCAGCCAGGGGCCATTGCAAATGAACGGCACCCTATGGATTGTGCTGACAGCGCACTTTGTGCTGATTTCCGCCTTTACCTTCAGTAACGTGTCGACCGGACTGGCGCGAATTTCCGCCGATATTGAAAACGTCGCGTCGAGTTTGGGGGCATCGCCCTGGTATCGTCTGCGTCACGTGACGTTGCCGTTATTGATGCCGTGGATGATGTCAGCGCTGGCGCTGAGTTTATCGCTCTCCATGGGGGAGTTGGGCGCGACGATGATGATTTATCCGCCGGGCTGGACGACGCTGCCGGTGGCTATCTTTAGCCTGACCGACCGTGGAAATATCGCCGACGGCGCGGCGCTGACCATTGTGCTGGTGGCCATTACGCTGCTGCTGATGATGAAGCTGGAGCGCATTGCAAAACGGTTGGGGCAGAAAT [...]
+CAGCGAATAGGCATGAATGCATTCGACCGCCGCAGCTGGCGCATCCAGCGTTGCCGTACTGACGCCAAACATTTGACCGGTGGCGTAAACCAGAAATGGCCGCAGGCGTTTACCGCCTAATAATGCGCCATACTGCATGGCTTCGACCACGGGAGTGTTCTGAAAGGGCAGTGGCGCGATAAAACGGCTCAGCGCCTGATTCGCTTGCGTTACGCAAGCCTGTAGCTGCTGCGTAAAGTCCATTTACTCATTATCCGCGATAAAAGGCTCAGGTGAAGCCTCTTCATTATCAGACAGCAAAATTTGCACGCGCTGTTCCGCCTGCTGCAGTTTTGCCTGCCCCTGACGCGCCAGTTGTACGCCGCGCTCGAATTCATTCAGCGCGTCTTCCAGCGGCAAATCGCCGCTTTCCAGGCGGGTAACAATATGTTCCAGCTCGCTCAGCGCAGTTTCAAAGCTGGCGGGCGCCTCATTTTTCTTCGGCATGATGAC [...]
+NODE	566	754	46102	45698	0	0
+GACGCATTACTTTGATCCAGGGATTCTTCGGTTGCGCTTATCGACGGTGTGGCAATCAGAGCGCGGTAAATCTCGATAAATGGCGGTAAAACGTTTTTCATTGTTGACACACCTCAGGTCATGATAGTATCAATATTCATGCATTAATTATGAATAAAAATACATTAACGTTGAGCATAAAGGAACCCGATGTTGAATACGCTGATTGTAGGCGCTAGCGGTTATGCGGGCGCAGAGCTTGTAAGCTACGTAAATCGCCACCCACATATGACCATAACCGCTTTGACCGTCTCAGCGCAAAGCAATGATGCAGGAAAGTTAATTTCTGATTTACATCCGCAGTTAAAAGGGATTGTCGACCTGCCATTGCAACCGATGTCGGATGTACGTGACTTTAGCGCAGATGTTGATGTGGTGTTCCTGGCGACAGCGCATGAAGTGAGCCACGATCTGGCGCCGCAATTTTTACAGGCCGGATGCGTCGTATTCGAT [...]
+AGAAGCCCGCCGTCAATCAGCGGTTTTAGCGACAACTGCGCTGCGGTTGGATAGCAACCAGGAACCGCAATCAGATTCGCCGTGTTCAGTTTATCGGCATTCCACTCCGCCAGACCGTACACCGCCTGCTCCAGCAGCTCAGGATACTGATGAGTAAATCCGTAGTACTTTTCATAGAAGGCGCGATCGTTTACCCGAAACGCGCCGGAAAGATCGAATACGACGCATCCGGCCTGTAAAAATTGCGGCGCCAGATCGTGGCTCACTTCATGCGCTGTCGCCAGGAACACCACATCAACATCTGCGCTAAAGTCACGTACATCCGACATCGGTTGCAATGGCAGGTCGACAATCCCTTTTAACTGCGGATGTAAATCAGAAATTAACTTTCCTGCATCATTGCTTTGCGCTGAGACGGTCAAAGCGGTTATGGTCATATGTGGGTGGCGATTTACGTAGCTTACAAGCTCTGCGCCCGCATAACCGCTAGCG [...]
+NODE	567	954	47569	46921	0	0
+GCCGACTTGCCATATTAAATTTGGCGAAGCCAACGCAATCCTGGCGGGAGACGCGTTGCAGACGCTGGCGTTTGCCATTATCAGCGACGCGCCGATGCCGGAAGTCACCGATCGCGATCGTATCGCGATGATCGCCGAACTGGCGAACGCCAGCGGCATCGCCGGTATGTGCGGCGGTCAGGCATTGGATCTGGCAGCAGAAGGCCAGCGGATCACTCTGGACGCGCTGGAACGCATTCATCGCCATAAGACCGGCGCGCTCATTCGCGCCGCCGTTAGACTTGGCGCGTTGAGCGCGGGCGATAAAGGACGGAATACTCTGCCGATACTTGACCGCTATGCAGAGAGTATCGGCCTTGCCTTCCAGGTTCAGGATGACATTCTGGATGTGGTGGGCGATACTGCAACGTTAGGTAAACGTCAGGGCGCAGACCAGCAGCTTGGCAAAAGTACCTACCCTGCACTTCTGGGTCTTGAGCAAGCCCGGAATAA [...]
+GACGACCGGTAAGGATTTTATGTGGATAAGCCTGGTGTCCAACATCCCAGATTAGCTGGTCAAACGGGGTGTTGTAGACATAATGCAGCGCCACGGTAAGTTCTACCGTGCCCAGCCCGGAAGCGAAGTGCCCGCTGGAACGGCTTACGCTGTCGAGTAAGTAGCGGCGTAGCTCGTCGCAGAGTTTCGGCAGACTCTCTTTCGGTAACAGTCGTAACTCCTGGGTGGAGTCGACCAATGCCAGGGTAGGGTATTTGGCTATATCAAAACTCATCGCAAGCTCATTGGATATGGGGTTTATTTATCACGCTGGATTATGTAGTTCGCTAGCGCTTCCAGTGCCGAGGTGTCCAGTGATTGCGCGGCCAGCTGATGTAACGACTGACGGGCGTCCTCTATCAGGTCCCGGGCTTTATTCCGGGCTTGCTCAAGACCCAGAAGTGCAGGGTAGGTACTTTTGCCAAGCTGCTGGTCTGCGCCCTGACGTTTACC [...]
+NODE	568	19	2653	2585	0	0
+CGAGCTACCAGGCTGCTCC
+AATCCGGCCCCCGCAACCA
+NODE	569	8	1080	1078	0	0
+ACCCCGCG
+TCGGTTCA
+NODE	570	3	160	160	0	0
+CCT
+TCG
+NODE	571	3138	196885	195509	0	0
+GAAACGTGGCAAATTCTACTCGTTTTGGGCAAAATTTGCAAATACTGCTGGGATTTGGTACCGAGGACGGGACGTAAAATCTGCGCACAGTATAGTGACCAGGCATGAGTTATGTCAACCCTATTCCCAATATGCAGATGAATGAATATCACTCTTCGTTATACTCATCCCACCTCTCCGGCTTATACATGCATTTCACAACGTTATTTCAGTAAACCTTCACTAAACGCTTCCTGTCTCTGCTAAAAGATGATTAAATGAAAACTCATTTATTTTGCATAAAAATGCACTAAAGCAGAAACCGATCTCATTATCAGTCAATCAAGCAGGGTTCTATTCTATGACGACGATTCTTAAGCATCTTCCAGCAGGTCAACGTATTGGTATCGCTTTTTCCGGCGGTCTGGACACCAGCGCCGCACTGCTGTGGATGCGACAAAAAGGAGCTGTCCCATATGCCTATACTGCGAATCTGGGACAACCGGATGAGGA [...]
+TACACGCGTCCCTGGCATGGCCCCGTCAATACGTTGAGATAGCCCTCCATACATACTCATGTATGTCCTCTCTGGTGATCTCCCTGCGTCAGGTTCACTCCACCGATTACGAGATCATCTCCGTTCATTGAAGACGGTAGTTGCTCAGCTATAATCTGAAATGCTTGTATCTGTTATCCCCCTCCATATCTTTTGCTCAAGTAGTTTTATCTAATCTTCCTTTGCACTGAGCCGAATATCTAAGGAAGAGATTAATGAGTTTATTTTTCGATCGTGCTGGATTGATTGCCGAATTGCGCACATCCAATTTGAGCTCTGCTATTCAGGAGAACGTCGTGCAACAGGCACGTGCTGCTATTGCATTTAAACGTTGTCTGCGGGATATGGAAACAGTAAAGGTGGGGGCATCGCGGTTGGGCAGTCTACCCGACTGGCCATTAGGACAAAACTGGCCTATACGAAAAAAATCGGTTAATGCCACATCTCGCGTGC [...]
+NODE	572	2777	145471	141352	0	0
+ATAAAAACTGGAATAGCGCGCAGCTGGCGGGAAAAGTGCGCGTCCTGCTGCACATTGCGGGTCGAACGTCAGCGAAGGAAAAAAACGCCACGCTGATTGAAGCGATTAAATCAGCCAAGCTCCCGCATGACAGATACCAGACGACCACAATTGTGAACACTGATGATGCGATCCCAGGCTCCGGTATGTTCGTGCGTAGCAGTATAGAAAGTAATAAAAAGCTCTATCCGTGGTCGCAATTTATTGTCGACAGCAATGGCGTGGCGCGTAACGCCTGGCAATTAAAAGAAGAGGGGTCCGCCGTCATCGTGCTTGACAAAGACGGTCGGGTTCAATGGGTGAAAGATGGCGCGTTAACCCAGCAAGAGGTACAGCAGGTGGTCGACCTGCTGCATAAGCTCCTCAGTAAATAGTCACCCGGAAGCCGGGGTTAAGGAACGATTCACGAGGGGTATAGTCCAGCGTTTTTCCCTGCCAGTCGTGAACGTGCGC [...]
+GAGATAAAGATCGGCGGCGTTACGGAAGGTCAACTGGCCTTTTTCCACTTCGACAAAACTGGCAGGATCGTTCTTACGCCCGCCAACTTTAAACGGCGCGGCGGCGGACAGCACCGGCAGTTTCGCCAGATCCGGATCGCCCTGAATAAAGTGTTCCACATACGCTTTTTGCGCGTTATTCACCACCTGTACGGTAGGATCGTCCTGCACCAGAGCAAGATAACTGTACATGTTATCGGCGGATTTACCGATGGGCTTGCTGACAAACTCGCGGGTGGCATCGTGATCGGCTTTCAGAATACCGACCAGCTTACTGTCTTCCGCTGCCAGCGACTTTTTAGCGGCGGCGTCATAGATAGGCCGCGCTTCCGCTTTCGCCTGCGTAACCTGCCATTTGCCGCTGTCGTTATTGAGCACCAGATCGACCACTCCCAGATGGTCGCCCCACATGCCAGGCATTACCGCAGGAATGCCGTTAAGCGTACCTTTGGC [...]
+NODE	573	1507	71435	71077	0	0
+TATGCGTACCGCCGGACTGGACTCCTCCCAGGGGCCAACGGCCGCGAAATACATCCTGGAAACGGTGAAACCGCAGCGCATCGCTATCATTCACGATAAACAGCAATACGGCGAAGGACTGGCGCGCTCCGTGCAGGATGGCCTGAAGCAGGGCAATGCCAATATTGTCTTTTTTGATGGTATTACCGCCGGTGAAAAAGATTTCTCCGCCCTGATTGCTCGCTTGCAAAAAGAGAATATCGACTTTGTGTATTACGGCGGCTACTACCCGGAAATGGGGCAGATGCTGCGCCAGGCGCGGGCTAATGGCCTGAAAACGCAATTTATGGGGCCGGAAGGCGTGGGTAACGCGTCGCTGTCCAATATTGCGGGCGGTGCGGCGGAAGGCATGTTGGTGACGATGCCAAAACGTTATGACCAGGACCCGGCGAATAAAGCGATTGTCGAGGCGCTGAAAGCCGAAAAGAAAGATCCCAGCGGTCCGTATGTCTG [...]
+TAGGGGTTAATTACGCCATAGAACTGGCCGAGCAGCACGCCCGCCACCGCCGCCATTGCCGCGCCGATAACAAACGTTAGCGCAATGACGCGGTCGGTATTAATGCCGAGCAGGCTGGCCATTTTCAGATCCTCCGCGCAGGCGCGGCAGGCGCGGCCCATCCGGGAGTAGCGAATGAAAATGGTGAGCGCCAGCATAGCCAGAAAGGTGACTATCCAGATAACCGCCTGCATGGTGGTGATGGACGCGGCAAAGTTTTCGCTGCTGCCCACAATCCACTGGCCGTTAAACAGGCTGGGTAACGCCACGTCGCGCGAACCTTCCGTCAGGCTGACGTAGTTTTGCAGAAAGATGGACATCCCGATGGCGGAAATCAGGGCGATCAGGCGCTTGGAGTTGCGCACAGGCCGGTAAGCGACTCGCTCGATACTCCAGCCGTAGGCGCTGGCAATAATAATCGCGCCGATAAATCCGGCGGCCACCAGGAGCCAA [...]
+NODE	574	10882	681715	677009	0	0
+CATTGCCTCCCGACGGCTTGTTCAATCCAAGCCGGTTCACCAGTTCACGCTCTCGCTCATGCAGATAATCCATCGCCTTCTGGTGTTGCTCCGTCATCTCTCTGACGCTGCGCAATTCAGCTTCGTCACGTTCACGCTGCTGTTTCGCCTGGTTAATGCTGGTTACGGTCATAGATACCTCTCCCGCCCTGATGAATCATTAAAACGCCGTTAACGATGGCGTGATGCCTGGCTTCTTTGTCGTACAGATAACGCCTGACTGTATTGCGGTGGCACGATAAGCGCCGTGCTACTTCTGTCTGGTTTCCATATGTCTCTATGAGCATGTCTGGAATGGTTTTGATAGTGTGTGTCATGCGGCCTCCCGGATAACCTGCTCATGACTCAGATATTGACCCCAGCAACTGACCAACAATCTCGCTTTCACAGCGGCTTTCTCTTCGTTGCGCCACCTGCAGAACCAGTTAACAGCGCCTTCCATTTCTTGCCTGA [...]
+CAATTTCAAACTGAAAGTCACGGCACTTAAGGTCTTTGTTAAATCCCTTGAATGTCACAATTTCTTTGGTCATGTTGTTATTCCTTAAATTTTGGCAATAAAAAAGGCCGCATTGCGACCTGATTAGACGTGAGCATTGCTGTAGAAAATTCTGGATTGTGCCTGTCTTTTAACCACATCAGGCTCGGTGGTTCTCGTGTACCCCTACAGCGAGAAATCGGATAAACTCTATTCACCCCTACAGAGAGCAAAAAGAGAATCGCCGATGAACAACTCATGGTGGCAGGAGCTAATGCGTTTTTTCCTGCAAGGAATGACACTTAAACAGTTGATTCATATGCTAATCATCCTGATCGTATTGATTATTGTTATGCCGGTAAGCGTAAAAGAATGGATAAACCTGCATAATCCAGAAATACTTCCTCATTACTGGATGTATTACATCCTGTTGCTCTGCGTTAGCTATGTGCTTAACGGTGTTGTTAATTCCGT [...]
+NODE	575	4480	259079	256614	0	0
+CCTCTTCCGCCAACATCATAAACGGACTACGCTGCGCCAGTTCGCTCTCGGTTACCCGGCGCGCCAGGTATTCATGCCCCATCAGGTCGCCCGGTAGCGGAAGCCAGCGAGTGCTGATGCGCGTGAGATCGTTATCCAGTTGTTCCCGAACGTCAGGACGGATGCAAGAAATATGGATATGCAAATGGTCCTGTGAACGACCAAGCCGCGAATTAATCGCCAGCGAGACTGCGCTATCCGGAATATCATGCCCGTATTTTTTACTCATATAGCCGCGAGCCTGCCAGGCCAGCCAGAAAAAGTTGGGCGTAGCGGGTTCCAGCAATAGCGGGCTTTCTGTACCGTTGATACGGTAGGTGGGCATCAATAAATATTGCAACGGACCGTGACGATCTTTAAAGACGACATAGCCGGCGCGAGGTTTGACTTCCGCGCAAGGCGCTGGGTTTTGATGCTGTAACTGATCGGGCAGGCATTGTTCAAGCACGATTT [...]
+ACCGAACATCAGCGTCAGCAGATGCGAGATCTTATGCAACAGGCAAGGCACGAACAGCCTCCTGTTAATGTTAGCGAAATGGAGACAATGCATCGGCTTGTCACCGCAGAAAAATTTGATGAAAGCGCTGTGCGCGCTCAGGCAGAAAAAATGGCGCAAGAGCAGGTCGCCCGCCAGGTCGAAATGGCCCGCGTGCGTAACCAGATGTATCGCCTGTTAACGCCGGAGCAGCAAGCGGTTTTGAATGAAAAGCATCAGCAACGAATGGAGCAACTGCGCGACGTGGCGCAATGGCAAAAAAGTTCATCGTTGAAATTATTGAGTAGTAGCAACTCACGTTCCCAGTAACAACCCTGTTTTCCTTGCCATAGACACCATCCCTGTCTTCCCCCACATGATGTGGGGGTTTTTTTTATCTCCAGTTTGTCATTCTGTTATTAGCTTACTGTTTTAAACCATCCGTTATACTACCGGCAGAAGATAGCGGGAGTA [...]
+NODE	576	14	528	528	0	0
+TATAATTGTGAGAG
+ACCTGCCGCTGCTG
+NODE	577	987	62953	62953	0	0
+GGCTTTGCTTTGATATCCAAAAGAGCGCTAAGCAGACCGAGTACCGCGCTTATCGTCAGGACTCCGGCAGCTTCAACACCGTTTATCGTGCCGTGCATAACGCTTTCAATAATGACGTAAATGCATGAACCGATCCCCACGCCCCGAAGGGCGTTTTTCAGATGTTTATTCAAACGTGCAAAATGGTTTAGCGGCGTCATTTTTGGCATTCCTGCGCCTGCGTTATGATGATGATATCTTTATTGTTGGTGTACATGACGTTCCTATTCAGAATATGCGTCTTATCCGGACAGGAGGATGCTGTTCGGTAAAGCTGGCTGCCAATCCACGTATAAACGTAGCGGTTATCATACGCAAAACGTTCGGTGACTTTTAGCGGCCCATTGATGCTAAAGACCTGAATATCCTGAGCCTGCTGGCTATTATGCATAAAGTAGCCGTGCTCTTTTCCGGCGTTAATTTCCCGGTTCAGGAAGGGGGCTGTGCTATCCA [...]
+AGTACAGCGAGTGTCTTAAACACGTTTTTCATTATGGATTGCCTGTAAGTTCATGCTTTCTATTTTCTATCATCGCAGGAGAAGGCGTAAAAGCAAGCGTTTAGGGGCTCTTTATAAAATCTGAAAAGCGGCGCGTTGCCATGATTATTGCGCATTTACATCAGGAAACATGCTTTGCTCATCACTTCAGGTTTACGTACCACGTCCGGATGACCTTATGCAATATCGTAATTTGTTTTGCCTTTTTTCGCTTTCACTTCTGCTGCCTCCCGCCTGGGGATGCCGGCTGAGTGAACCTCCGCACAATGTTTATCAACGGCAAGGCAGCGGCGTGGTTTATCTCCAGCCAGAAGAGGAGAACAATCTTTTGTTGCCGGAGGTGAATTTCAAACGCCTGCGTCGGTTACCCAATTCATTGATTAACCCGGCAACTCAGGGCTGGAACTGGATAGCACAGCCCCCTTCCTGAACCGGGAAATTAACGCCGGAAAA [...]
+NODE	578	11626	616116	605479	0	0
+TTAAGCGTATACGCTTTTGGCATTGGGCTGGCGAATGCCGGACTGGTGCGTCTGACGCTCTTCTCCAGCGATATGAGTAAAGGAACGGTCTCGGCGGCGATGGGAATGCTACAAATGCTGATTTTTACCGTTGGCATTGAAGTCAGTAAACACGCCTGGTTAAGCGGCGGCAATGGGCTATTTAGCCTGTTTAATCTGGCAAACGGTATTCTTTGGCTACTGCTGATGCTGGTCTTCTTAAAAGATAAGCGGACGGGTAATTTGCAAACAGTCTGAGAGAGCGGCTACGCCTGATAAGCTTTCTGTTATCAGGCATAGAGAGGCATCCGCTAGACGTTGAACGGCGGCTCGTTGTTTAATACGCTGTCGATAATATCCAGCACGCCTTCCTGGTTGTTCGATCCGGCGCGGTATTTCGCCGCCGCCGCGACCGCTTCGCTGGCGTGCGACATGGCAAAACTAAACCCGGCCTGACGCAGCATCTCAATATCG [...]
+CAGATAGGCTTCGAAATAGAGCGGATCGTCGGTCAGTTGCAAAAAATTGCCGAGGTTGAGCGTAATCGACAACTGACCGTCAGCCCATTCCAGCAGATCGGTATACGGCGGGATCGCCCGCGCCATTTCCGCCAGACTTATCTTAAAGACGATAAGAAACGGCAGTAAAAACAGCAGAATGAGCCAGATATAAGGCAAAGCAATAACCAGCTTACGCCCATGTTTCATTTGCATTCGCGCCAACCATAGCGCCGCGCCGCCAGGTTTACTGATGCGTGCCGGAGGTTCAAGTGTGCTCATGTTTACCCCTTATACCGTCAGGACCACGCAGCTATCCGCTTCCCAGCACAAACGCACTTCATCGCCCCAGGTCGGTAACCCTTTCCGGTAACGGTGCGCATTCTGCAGTTGAGCGCTGATCATCTGCCCGCTTTTTAGCCGCACATGATAAATAGACAGATCGCCGAGATACGCAATATGCGCCACTTCGCC [...]
+NODE	579	635	30687	29264	0	0
+GAGTTCGACGCCTTGCTATTGCCGGGAGGCCATTCGCCGGACTACCTGCGCGGCGACAGCCGTTTCGTGGATTTTACCCGCGATTTCGTTAACAGCGGTAAACCGGTTTTTGCCATTTGCCACGGCCCACAGTTGTTGATCAGCGCCGATGTCATTCGTGGCCGCAAACTCACGGCGGTGAAACCGATTATTATCGATGTGAAGAATGCGGGCGCGGAATTTTACGATCAGGAAGTCGTCGTCGATAAAGATCAGCTGGTGACCAGCCGCACGCCTGACGACCTGCCGGCATTTAACCGCGAGGCGCTACGCCTGCTGGGCGCGTGAGTCACGTAACCAGTGCAGTTTTTTACCAAACCCCAGCGTGTTGTCGGTGAATTTAATTTCATCCAGCCGAATTTCCCATACCGGCGCTGGCAGCACCCTGGCGACCGGGAAGCGACGAAGGTAAGCTTTACGCGCGGCGTCGCTCTCCTGCCCCTCCAGACGGCG [...]
+ATGTCCGGCGCGTGCGCGCCAGTTGCGGGAACGGTCAATGGTCAGCCGAAAACGGTGGCGCGCATTCGCGGCGTGCAGTTTAAAGGGGAAATTCGCCGTCTGGAGGGGCAGGAGAGCGACGCCGCGCGTAAAGCTTACCTTCGTCGCTTCCCGGTCGCCAGGGTGCTGCCAGCGCCGGTATGGGAAATTCGGCTGGATGAAATTAAATTCACCGACAACACGCTGGGGTTTGGTAAAAAACTGCACTGGTTACGTGACTCACGCGCCCAGCAGGCGTAGCGCCTCGCGGTTAAATGCCGGCAGGTCGTCAGGCGTGCGGCTGGTCACCAGCTGATCTTTATCGACGACGACTTCCTGATCGTAAAATTCCGCGCCCGCATTCTTCACATCGATAATAATCGGTTTCACCGCCGTGAGTTTGCGGCCACGAATGACATCGGCGCTGATCAACAACTGTGGGCCGTGGCAAATGGCAAAAACCGGTTTACCGCT [...]
+NODE	580	16726	924814	911347	0	0
+CACCTCCATCAGCAGACGATCCGGCAGTTGCCCGGCTTTTACTTCCAGTACCCCATCGTCACGCTGGCCGAAAGTCCAGGCGCTGGCGCAAATATTACGAATGAGATTTTCCAGGCCGCCGACATTCCCTTCCAGGGTCTCCTGCATCAGTTGGCTAATAATTTCACTATCCAGCGACAAATCGTGATGAAGACGCTGCGCCTCGCGACGGAAAAAATGGTGAATAAACGCCAGCCGCTCATACTGTCCGCGTTCGGCGATGGGCAGAATTTTGACAATGACCGGTATCCGGCGAATAAATGTCGCCAGAAAGTGCTTTTCCAGATCTTCGGTAGAGGCGAATATCAGGCGTACGGTGGCGCTGCGTTCATCGCTGCTTTCGCCTAAGCGACGCCAGGTGCCGTTATCCATAAAATGGAACAGTTTTTCCTGCCCTTCCGGCGGCAAACGGTGCACTTCATCGATAAACAATACGCCGCCATTACTGGTCTC [...]
+CGAAGAACAGATTGCATTTGCCCTGAAACAGGCTGAAATCGGCACTCGCGTCGGGGAAGTCTGCAGAAAGATGGGAATTTCTGAGGCCACATTTTACAATTGGAAGAAAAAATTTGCCGGGCCGGGCGTGACGGAACTGCGGCGTCTGCGGCAACTGGAGGATGAGAATCAGCAGCTGAAGAAGCTGGTCGCTGAGCTGAGTCTCGACAAGGAGATGCTGCAGGAGGTACTGAAGCAAAAGTTCTGAGGCCGGCTCAGAAGCGCCAGGCGGTGATGCGGGTTGCAGATGCAGAGCAGAACCGTTTACCACTGGCAGAGCCGGCGTGACGATCGGGCGATAACCCTGCGTATTCATATTCAGTTGCGCCGGGAGGGATGGCCTGTTAACCACAAGAAAACCCACCGGATTTATTGTCCGGAAGGCCTGAACCTGCGCAGAAAACGCCCCGCAGACATGTCAGTGCAGCACGCCGTCAGCAGCGCCCGGTCCTG [...]
+NODE	581	3711	195310	193187	0	0
+CAGCAACGCTACCAGCAAAAAAACGCCTACCCAAATTTCATTTTTTTTCGTTTGCATGAACTCAATTCCCAAACATCAGTGCGGTCAGCACAAAATCCAGCCCCAGAACGGCCAACGATGCGTGAACCACGGTACGCGTCGTTGCCCGGCTAATCCCGGCAGAAGTCGGTATTGCGTCATAACCGTTGAATAACGCAATCCATGTTACCGTAATGGCGAACACCACGCTCTTTATCAGACAGTTCACCAGATCCATACGCCAGTCGACGGCATTCTGCATCGCGGACCAGAAGAACCCGGCGTCGATTCCTTTCCAGCTTACGCCGACCAGCGAGCCGCCCCAGATACCGACCGCCACAAAGATAATGGTCAGTAGCGGCAACGAAATCACGCCCGCCCAAAAGCGCGGCGAAATCACCCGGCGCAATGGATCGACCGCCATCATCTCCATACTGGAGAGCTGCTCCGTCGCCCGCATCAGGCCGATTTCCG [...]
+CCCATATCGAACACGCGACGTAAATCGCCGTCGGTGAAGATACCGTCGATCTTCATGGATTCATCGCAAATGACGGTCATACCGAGATTTTTACGCGTAATTTCTAACAGCGCATCACGCAGGGTGGCATGTTTATTAACATGCGGGATCTCATCGCCAGTATGCATAATATCGCTTACGCGCAGCAGTAGCTTACGTCCCAGCGCGCCGCCAGGATGCGACAGAGCGAAATCCTCGGCGGTAAAGCCGCGCGCTTTTAACAATGCCACGGCGAGCGCGTCGCCCATCACCAGCGTTGCGGTGGTACTACTGGTAGGCGCCAGTCCTAACGGACACGCTTCTTTGGGCACTTTAACACACAGATGCACATCTGCCGCACGCGCCATGCTGCTTTCCGGTCGCCCGGTAATGCAAATTAACGGTACGTGCAGACGTTTAAGCACCGGTATTAGCGCCGCGATCTCGCTGGATTCGCCGGAGTTGGAGATAGCG [...]
+NODE	582	4668	237166	235066	0	0
+GGAGAGCGGAACGGCAGACAGGGTATAACGGGGAAATCGCACGCGCGGAACAGGACGTCGGGGGCGAAGATCGGCTAAAATAGTGTTTTTCTGATTTTTAGCCTTAGCCTCTTTTAGTGAAGCATTAATGATGAAACCTCTTCGCCAGCAAAATCGCCAGATTATTAGCTATATTCCGCGTGTTGAACCCGCGCCGCCGGAACATGCGATAAAAATGGATACGTTTCGCGACGTCTGGATACTGCGCGGTAAATATGTTGCCTTTGTTCTGACGGGGGAGTCATTTCAACGGTCGCCCGCCTTTAGCGTGCCAGAATCGGCGCAACGTTGGGCGAATCAGGTTCGCCAGGAAAACGAAATCGCTGACTAAGAAAAAACAAAACGCCGGTACTGGAGACCGGCGTTTTTAGTGACAGACATTTTGAGTTGCCGATCGTCGTGTCTCAGACGATGTGAACGCCCGATAATGTATTATCGATGCGCCAGTTCAGC [...]
+TTTGACAACGCGCTCTCTACCACGCCGCAGCCGAATACCTGGCAACGCCGTTGGTCGACTTTTTTCGCCGAACAGCGCATTGGCTGGCAACTTGAACTCGCTGCGGAAAAAGGCATTACCTTTGGTAATATTGACGCCATTGTTGAACATGTTCAGCAACGTCTGGCGTCGCATCAACCGCAGCCTTCTCTTTTGCATGGCGATCTATGGTCGGCGAACTGCGCGCTTGGCCCTGACGGCCCCTATATCTTCGATCCAGCCTGCTATTGGGGTGACAGAGAATGCGATCTGGCGATGCTGCCACTGCATACCGATCAGCCACCGCAGATTTATGACGGCTATCAGTCCGTTTCGCCGCTACCGCTGGATTTTCTCGACAGGCAGCCGATTTACCAGCTCTACACCCTGCTTAATCGGGCAAGGCTGTTTGGCGGTCAGCACCTGGCTACTGCGCAAAAAGCAATGGATCGGCTGCTTGCAGTATAGGTACAG [...]
+NODE	583	3953	191783	187279	0	0
+AATAGCGCGACGCTGTATATATGCATATTTTATGATTAAGAATATATTTATTATACCGATAGTAAAAACCATTTTTTCCCGTTAGCGAAGGCGGTGGATTAGCGCTAGCGTAACAGTAATATTCAACTGATTTTTATAACAATTTATTTTCATTTGTTTTTCCTGAATATTACTGTGGAGTATGTGATGGCTATCAAAATTACGCCTGACGAGTTTAGTTTGCTTATCCAGCGATTAAACAAAAAATGGCGCGTGTTTGCCCCGTCCGCAGAGTTTCGCGGCGGACGTTTTTCCGACACTGACAACATTATTTATCAACGGATTAGCGGCTGGCGCGATCTCATCTGGCACGAGAAATCGCACATGTCGCCGAATACCATTATCGCCCCTATCACCGAAACGCTCTTTTATTTCGATAAAGACACCATCCAAATTGCCGAGACAGACACTTCCCCGATAATCATCTTTGCCCGCGCCTGCGACATTAACGCC [...]
+AGCAGTTGAGCGCGCTGCTTAATGCGGTGGCGACGCATCCTGAGCGGGCGGGCGGATCGTTGCTTCTGCTGAGTTTTATGTATGGCGTGCTTCATGCGCTGGGGCCGGGACACGGCAAAGTGGTGATCGCGACATGGCTGGCGACGCATCCTTCGAAGCTGAAATCAAGTATCGTGCTAACCCTCGCCGCCGCGTTATTACAGGGGCTCGTGGCTATCGGGTTGGTGGTGGGCGTGCTGACCGTATTGCAACTTCCGGCCAGGCAGCTCCATCTGAGCGGTTTCTGGCTGGAAAAGGGGAGCTATGCGTTAGTTGGCGGGCTGGGCATCTTGCTGTGCTGGCGGGCCATAAAAAGGTTACGCGCGCTGCTACGTAAACCTGCCTTTATCGCTTTTACGCCGCGCCATGTTCACCATGAAAAATGCGGCTGCGGACATCAGCATTTACCGACGCAGGAACAATTGCATAGCGGCGATGACTGGCGCGCGCGAC [...]
+NODE	584	23	7413	5428	0	0
+CCAGCTATCTCCCGGTTTGATTG
+CCTCGTGAATTCATCTCCGGGGG
+NODE	585	5	1671	1648	0	0
+GCCTT
+TAGCG
+NODE	586	17	5798	3269	0	0
+TCACCCCCAGCCACAGG
+CCCGAAAGCTATTTAGG
+NODE	587	5	1724	1472	0	0
+TCATC
+TTCTC
+NODE	588	16	5747	2777	0	0
+CGCTAATTTTTCAACA
+ACCGGGAGATAGCTGG
+NODE	589	28	10904	10540	0	0
+ATTAGCGGATGACCTGTGGCTGGGGGTG
+TCCTCCAGTTAGTGTTACCCAACCTTCA
+NODE	590	876	44737	43391	0	0
+ATCACAGGGTGTTAGTATTTGGCAATCAAGACGTTTAGATGTCTAAATATAATAACAGCGGTGAGAAGACCCTAAGGACAACACAACATGAACCACACTGAAATCCGCGTCGTTACCGGCCCGGCGAATTATTATTCCCATGCCGGAAGTCTCGGAAGACTGACAGACTTTTTCACGCCGGAACAGCTTTCCCACGCCGTTTGGGTGTACGGCGAACGCGCGATTGCCGCCGCCCGGCCTTACCTGCCGGAAGCGTTTGAACGTGCTGGCGCAAAACATCTGCAGTTTACCGGCCATTGTAGCGAACGCCATGTTGCCCAACTGGCGCACGCCTGCAACGACGATCGTCAGGTGGTAATAGGCGTCGGCGGCGGCGCGCTGCTCGATACCGCCAAAGCGCTCGCCCGCCGTCTGGCGCTGCCGTTTGTCGCTATCCCGACCATCGCAGCGACCTGCGCCGCCTGGACACCGCTTTCCGTCTGGTATAACGAC [...]
+CAAGGCCGCCGACCATACCGCCGCCAGCGATAATCGCATCCACCACGTCGCAAAATGCCTGGGTCAGCCGACGCTGCTGTTTATCCGCTAATGCTTGTTCGCTGTTGTCCAGCAGGAGATCGCGAATAGCGCACGCGCTGTTAATGCCCAGTCTTACGGTCAAAGGTAACGTTTCAGGCTGCGGCGCAAGCACAACGGCTTCATACCATTTCGCCAGCGTATCGCCAATGCCAGCTAACAGATAGTCATCGGGCGCCTGCAGAATAATGCGCGGTTCGACCAGCACCAGAAAATTGGCATCATCAAAAATTTCGAACTGTAACGCCTGTCCCGCGTCGTTATACCAGACGGAAAGCGGTGTCCAGGCGGCGCAGGTCGCTGCGATGGTCGGGATAGCGACAAACGGCAGCGCCAGACGGCGGGCGAGCGCTTTGGCGGTATCGAGCAGCGCGCCGCCGCCGACGCCTATTACCACCTGACGATCGTCGTTGC [...]
+NODE	591	6749	358715	351015	0	0
+CTGGGAATGTTCACCCAGAAAGGGAGTTTTGAGGCGGAGCTGTTCAACCGCGAAGGCGAACTGTGGCCGGAAGCGGATGTGACGCTGATAGACCTGGGGCACCTGGCCCGTGAGGGGTATGAGGCGCAGATGGCGCTGACCATGGTGTCGATGACCAACATGATCAATAACATTGCCGAACGTGACCAGTATCTGGGGCGTGATATTGTGTTTGCCGTGGATGAGGCGCATATCGTGACGGTGAATCCGCTGCTCTCGCCCTATATGACGAAGGTGGTGAAAATGTGGCGTAAGCTGGGAGCCTGGCTGTGGCTTGCGACGCAGAACCTGAAGGACTATCCGGATATATCAGAGAAAATGCTGAACATGGCGGAATGGTGGGTGTGTCTGACGATGCCGCCGGAAGAGGTGAACAACATTGCCCGTTTTAAATCCCTGACGGAGGAGCAGAAGGCGGTGCTGATGTCGGCGAGCAAACTGTCCGGCTGTTAT [...]
+ACATTACCTTCTGAAGCAACAGTTCTCAGTTTGCCTGTATAGAACGGATGCGACTTAGAAGAAACGTCAATTGTAACATATGGGTAAGTTACCCCATCCAGTTCAATTACCCGGTCAGTTTTGATCGTCGACCCGATCCTGAAGTACTCATCAACACACGTGCTTGATGAAGTGATTTCGTTACTGATTGATATCATCGATCCACAATAAAAATAAGCTAAAGTAGCTGGCATTGACACGATTTACGTTTCTTATCATCTCTCTGCCGCTTCTTTCTTCCATTGAACATTTATAATACAGCACGTATGATATCACTGTGATAACTACCTGCTCAGGGGAGCTGCGCTATGAAAAACGAAGCAGAAAAGGCGATGTGGAGTTGCAAAACCTCGGATACCCCATGGACCTTCAGTTCCCTGCTGAAAAAGGCTGTCTGCGCGATTTTGCCTGATGCAGAACCGAAGATTGAGAATGCCACAAAAGGATGTTCTG [...]
+NODE	592	15	777	777	0	0
+TTGATGCGAAAAAAG
+TGGGTAAAGCGTGCA
+NODE	593	208	11327	11259	0	0
+GAAGTATGGCATTAACTTTCGGGGCAGTTCACTACTCGACAGAGAGTAGGACAAAAGCGAAAGCTTTTGAACGTTGCGAAGCAACGGCCCGAAGGGTGAATCACGAAGTGATTCATAAACTGCCAGGCATCAAATTGCAGTAAACCGGGATGAAAATCCGGGTTGTGACAAAGAAATTCGGTGGAGCGGTAGTTCAGTTGGTTAGAAT
+GATTTTCATCCCGGTTTACTGCAATTTGATGCCTGGCAGTTTATGAATCACTTCGTGATTCACCCTTCGGGCCGTTGCTTCGCAACGTTCAAAAGCTTTCGCTTTTGTCCTACTCTCTGTCGAGTAGTGAACTGCCCCGAAAGTTAATGCCATACTTCTAATTTGATGCCTGGCAGTTCCCTACTCTCGCATGGGGAGACCCCACACT
+NODE	594	27	1296	1296	0	0
+ACCCGCGACCCCCTGCGTGACAGGCAG
+TTATTAAGAGCCCTGAGCATTAGCTCA
+NODE	595	3965	220226	217116	0	0
+CGATTTCGCAGATTTCTGAAACGTTATTCATCCTGACCATTCCGTTCTTCCTGAGCCGTTATGGTATTAAGAACGTTATGCTTATCAGTATTGTGGCGTGGATGCTGCGTTTCGGCCTGTTCGCTTATGGCGACCCGACGCCGTTCGGTACCGTTCTGCTGGTATTGTCGATGATTGTGTACGGCTGCGCCTTCGACTTCTTCAACATTTCTGGCTCGGTGTTTGTCGAAAAAGAAGTACGCCCGGAAATCCGCGCCAGCGCGCAGGGGATGTTCCTGATGATGACCAACGGCTTCGGCTGTATCCTGGGCGGCATTGTGAGCGGTAAAGTGGTGGAGTATTACACTCAAAACGGCATTACCGACTGGCAGACCGTGTGGCTCATCTTCGCAGGCTACTCGCTGGTGCTGGCCTTCGCGTTCGTAGCCTTGTTCAAATACAAACACGTTCGCGTTCCGGCAAGTTCGCAACCCGTTGCACATTAATCCTTGC [...]
+AGGCGCATTAAACCGTAATCGCCTCGCTTCGTCAACGAAATTTCTTCAAATCAACGTAGACTGCACAATCTATCACCACTTTGTTGTTATTGCACGCAGAGTCAGGCAAAAAACATCGCCCATGCGGCGGAGATCGGCATCGCCAGCAACAGCGCCGGGAGCATATTCACTACCGGAAACATTTTGATTCCACATACACGCAAGCCGGTCGCCACCAGCAGCAGTCCGCCCACGGCGCTAAAGTCGCCCATCATTGCCGGCGTAGTTAGTGGAAGAATGAGGGTGGCGCAGGCGGCAAGCGTTAACTGGATAATCAACATCGGCGCGCAAATCGCCGAAACGGCGATGCCAAGCGAACAGGCGAAAATAATGGCAGTGAAAAAATCCAGAAAAGATTTAGCGATCAAAATGTTTGGATCGCCGGTCATCCCTTCATGCATCGCGCCGAAAATACCGGTGCCGCTGGCGCAAAAAAGTACAATGATAGCGACG [...]
+NODE	596	10	441	423	0	0
+ATTTTGGGTT
+ACCAGCCTGG
+NODE	597	1877	96061	94769	0	0
+TCACACCGCACATCACCCACTACCTGCATAACATCCCGACGTTTATGTACTGACATCGGACAACGCAGGATCCTGTTTTTTGACAGCAGCCACAGGCTGGATTCTTTATGCTCGCTCTGCAGGCTAAATCGCCCGGAAGGTCCCAACGACAAAAATGGATGGTTCAGTGGCTGTGCGTCCAGCAGCGGTCTGCCATCCTTGTCCAGTACGCGGCCAACGTACAGTCGGCTCATACTGGCGCTGATGTTGTGAACCAGCAGATGCCCGGGTGTCAGGAAGTAACGCCTGCTTCCCCCTCCCGCTTTTACGCCTGCCATACCCTGTGAACTAACCCCTGCATCCTCAATGGTCACCTCCGTGGCGTTATAGCCTTCCATCAGCAACAGCGACTGCTGACCAAAACCGAGACTGAACGGCTGGCTGCTGCCACGAACGCTGACTACTTTCCCGCTACTGCCCTCGTCCCCCTCTGACTCCACGTTCACCGCCATG [...]
+CAGTCTGCTTCCCCTGAGCCGGTTTGATGGATTACGAACCGGGACCACCCAAGCTTATGTTAACCATGAGGTGGACCAGAATGCCACTCCGGTTATGGTTCAGGTTACCCGAAATGCCCGTATTGATATTTATCGTGGCAGCGAGTTGCTGGGGAGTCAGTTCCTGACCCCGGGAATGCATACCCTGGATACTCACTCTCTTCCACCGGGAAGCTATCCTCTGGCGTTGCGGGTGTATGAGGATGGGATTCTGCGGCGAACGGAGACCCAGCCCTTCAGTAAGGGGGGCAATAGCTTCAGTGCACAGACCCAGTGGTTTATTCAGAGCGGGCTGGAAGATACCGGGGATAAAGCCAGCCATTATGACGGTGAGACTGTCATGGCTGCCGGATTCCGAACTGGGCTGCGGAAAAATATCAGTCTGACCGAAGGTATCTCTCTGGCACATGAGGCCTGGTACAGTGAAACCCGACTGAATTCACAGCATGCAGT [...]
+NODE	598	14447	793309	782150	0	0
+CTATTGAGACGAAGATGAGCGATCTGTTTTCCTCCCCTGACCATACGCTTGACGCCCTGGGGCTGCGTTGCCCTGAACCGGTAATGATGGTGCGCAAAACGGTGCGCAACATGCAAACTGGCGAAACATTGCTGATTATCGCCGACGATCCGGCGACGACGCGTGATATTCCGGGGTTCTGTACCTTTATGGAACACGATTTGCTGGCGCAAGAGACGGAGGGTCTGCCGTACCGTTATTTATTGCGTAAAGCGCATTAACCGCACGGCAGATAGCATTCTGATTAGAAGCTTTCCCAGTTCGCCTGTTCTGCGGCGGGCTGTGGCGTTAAGCCTTTGCTTAACGGCGTCGGCGACGCCTCCCGACGAGGTTGTTTCTGGATGCGGAACGCGGCGACCGCCTGACGAAGTTCGTTAGCCTGATCTTCCAGCGCCGCCGCCGCTGCTGCGGATTCCTCTACCAGCGAGGCGTTTTGCTGCGTCACGCTGTCCA [...]
+GATCATCAGAATACCTTCATCTTCATAGATATCGGATGCTGGCTGAGTAGAAGAAGAACACAAGTGACCAATAACGTACTGAATACCGTCGTTAACGATTTTGTTGGCCACCGCCACCGCCTGTTTTGGATCGCAGGCATCATCGTACTCTACGCCGACCAGCTTATCGCCTTTAATCCCGCCTTTAGCGTTGATGTCTTTAATGGCCTGGCGCGCGCCGTTAAATTCCATATCGCCCCATTGCGCTACCGGGCCGGACATCGCCCCGACTATGGCGACTTTAATATCATCTGCCATTGCCCCCTGCGAGACTGCTAATGCAACAATCCCTGCGATTATTGTTTTCGCTTTCCGTTTCATGTGCCTGTATCCCCATTCGTGATGTTATATGTTTTGTTTTTTGCTGGTTAAAAAGCAGACTGTACTTTTTATAAATGGTGCGCTTTTTACTGACTCATTAATGAGTTAGCGCAGCATTTAAAGCATAATAAG [...]
+NODE	599	34	2286	2045	0	0
+ACCAGCCTGCCGTTTGACGTGCAGATGCAGATTG
+TAAATCTCGTTAGAGGTCAGTCCTTCCGGCTCAA
+NODE	600	7135	433592	430405	0	0
+TCCGTTCCATGCAGGGCATGGAGAACGCGAAGATCGTTCGCCCTGGTTACGCGATTGAGTACGATTTCTTCGACCCGCGCGATCTGAAACCGACTCTGGAAAGTAAATTTATTCACGGCCTGTTCTTTGCTGGTCAAATCAACGGTACTACTGGCTATGAAGAGGCTGCGGCGCAGGGCTTGCTCGCTGGTCTGAATGCCGCGCGTCTTTCCGCCGACAAAGAGGGCTGGGCGCCTGCGCGTTCTCAGGCTTATCTCGGCGTGCTGGTGGACGATCTCTGTACGCTGGGCACCAAAGAGCCGTATCGCATGTTTACCTCCCGCGCCGAATATCGCCTGATGCTGCGTGAGGACAACGCCGATCTGCGTCTGACCGAAATGGGCCGCGAGCTGGGTTTGGTGGATGATGAACGCTGGGCGCGATTCAACGAGAAGCTGGAAAATATCGAACGCGAACGTCAGCGGCTGAAATCGACATGGGTAACGCCGTCTG [...]
+AGTATCCAGCAGCGCTTTCGGGTCTGGTTCATACAGGTAATCCCAGGCTTTACGCTTCAGATCATCATCTTCTGACGCCGGCAGCGGCAGCAGTTGAGTGATCGTCGGCACCTGAGACATGGTGTTAATAAATTTGTTGCTGACAATGTAAAGCTTGTCCAGACGGCCTTCGTCGTAGGCCTGCAACATCACTTTAACCGGACCGATCAGTTCGGACAGAGAAGGGTTATCCCCCATACCTGTCACCTGAGCGACAACGTTGCCGCCTACGGAATTAAAGAATGACACGCCCTTAGAGCCGATCATTGCGAGTTCGCACTGAACGCCTTTATCGGACCATGCCTTCATATCCGCCAGCAGCTTTTTGAACAGGTTAATGTTCAAGCCACCGCACAAACCACGGTCGGTCGACACTACCAGGTAGCCCACGCGTTTAACGTCGCGCTCTTCCAGGTAGGGGTGCTTATATTCCAGATTACCGTTCGCAAGGTG [...]
+NODE	601	94	37593	35611	0	0
+TGTGGGAAGGCCCAGACAGCCAGGATGTTGGCTTAGAAGCAGCCATCATTTAAAGAAAGCGTAATAGCTCACTGGTCGAGTCGGCCTGCGCGGA
+GGCTGCTTCTAAGCCAACATCCTGGCTGTCTGGGCCTTCCCACATCGTTTCCCACTTAACCATGACTTTGGGACCTTAGCTGGCGGTCTGGGTT
+NODE	602	5	2005	1999	0	0
+AGATG
+ATGAT
+NODE	603	12	5024	5010	0	0
+TAACGGGGCTAA
+CGCTTTCTTTAA
+NODE	604	6	2662	2642	0	0
+ACCATG
+CTATTA
+NODE	605	20	9006	8936	0	0
+CACCGAAGCTGCGGCAGCGA
+AGGCCGACTCGACCAGTGAG
+NODE	606	1	203	202	0	0
+C
+C
+NODE	607	4	262	262	0	0
+GCTG
+CGCG
+NODE	608	56	21615	19163	0	0
+CCCTGCCCCGATTAACGTTGGACAGGAACCCTTGGTCTTCCGGCGAGCGGGCTTTT
+GCAGGGTGAGTCGACCCCTAAGGCGAGGCCGAAAGGCGTAGTCGATGGGAAACGGG
+NODE	609	10621	509051	502181	0	0
+TGGGACTATCACTGTTTCAGCGGCATTGATCACATCGAGAATCCCGACGAAGACGGCATTTTTAAGATCGTCAATGACTATACCGGCGATGGCTGGAACGATCAGGTTGATGATGAGATGGGTAATTTTGACTATCTGATGGGGGAAAATATCGATTTTCGCAATCACGCGGTTACGGAAGAGATTAAATATTGGGCTCGTTGGGTCATGGAACAAACCCACTGTGACGGCTTTCGCCTGGACGCGGTAAAACATATACCCGCCTGGTTTTATAAAGAATGGATTGAGCATGTACAGGCGGTTGCACCAAAACCGCTGTTTATTGTCGCAGAATACTGGTCGCATGAAGTGGATAAACTGCAAACGTACATCGATCAGGTCGACGGGAAAACCATGCTGTTCGACGCGCCGTTGCAGATGAAATTTCATGAAGCCTCGCGCCAGGGCGCGGAGTATGACATGCGCCACATATTCACCGGCACGCTGGTAGAA [...]
+CTGTGCGGCGATACCATCTGGAGCTGCGCCTGATTGTCATCCAGCTTGAGCGAAATATGCACCTGACCTAACTCTTCCGGATGCAATCGAAGCTGCGCGCTTTGCTGTCCCTGACGCGTAAATAACATGACCTGCTGACTGAACGTTTGCTGCCATTCATGGCTGCCTAACGGCGCGCTGAGTACCGGGGCTGAGGCGACAGGTAGCGGTTGCGGTTGCGCCGTGGCGCTGCTGAGCGTCGGCATTGCCGCGCCATGCGTTACTGGCGCGGGCGAGCTATCCACCTCCACTTTCGCGCTGGTCGCGGCGGCAGCAACCACCAGCGGCGTCAGTGCTGGACCCGTGGCGCGATCGTCGCTGGCGCGCGCAAGCGACGCCTCGGTTTTCCCTTTTTCATGCTCGCTAAAAGAGAGCGTATGTGTCTCTTCCTGCGGCGCCGATGGCATGTCGCCGCGCAACAGTGACGGCAAGGCGATGTGATTTTCAGCAGGC [...]
+NODE	610	5191	296884	294936	0	0
+ATCATCTATAATACCTCCTGTCTATGGCAAGGCTTCCATATAGCCTTACGGTCCCTCTCACTTCTCCTTTAAGATAAACCTTATCAGCCCGTCATTTCCATAACATTTATCTCACATTTTATTTTTTTAATCATTTTTCAATGACCTTCGTCTGAAATAAAATTATCACTGTAAAAACAATGCATTAAAAATAATGATTAGCTTATTTTTGCTACGGGAGAAATATTTACGCTTCTTGATAAAGAATTTCTGGGCGCGAGTAAATAACTGGTGGTACATTAGCCTGCCTGGCGTTCATGCCCTCGTGGTTTAGTACTGACTTAGTTTTACACTCCTTACGGGAACCATTGTCGTACATGATGGCCTAACTATACGCAAATCATTCAAGTTACCCTGATGAGCTTACTCAAGTAAGTGCTTCGGATAAGCGAACGCAACTTGAAGGATGATGCGTATTTCAGAGTGTACCGCTGCGGATAATGACTCTTCTGC [...]
+GGAGCGACAGCAGCAGCATCGTTCGGGCACGCGGGTGGAACATAATCTCTTCCTTACACGGGGTCGTATACCTATTTTGCACAGCCTGCCCGACGGCATTGCTGCAATTGGTGCTGAAACAAGAAAGTAATTCTGTGATGAAGATCTATATTTATAGGCAGTCAGCCTGATGGCCGTTGTTGTTATGCCCCCATGAATTTACAGTGTGACAAAGACTTATTTTGACTTTAGCGGAGCAGTAGAAGAATGACAAAGTATGCTTTAGTAGGAGATGTAGGCGGCACGAATGCGCGTCTTGCCCTGTGTGATATCGCCAGTGGAGAAATCTCGCAGGCCAAAACGTATTCCGGCCTGGATTATCCGAGTCTTGAGGCCGTGGTGCGCGTTTATCTCGATGAGCATAGCGTCAGCGTGGAAGATGGTTGTATCGCCATAGCCTGCCCGATTACCGGTGACTGGGTAGCGATGACTAACCATACCTGGGCTTTTTCT [...]
+NODE	611	3921	186482	183560	0	0
+ACAACAGAATCGCGATAACGTTACCGCAGCGAATGTGCTTATCACGTAGCCAGAGCGCGCTGGCAAGCGCCAGCATGGCGCCTGCGGAATCCCCGGCGAAACCGATTTTCTCCACGTTGAGCGAGTATTCATCGGCATGTTGAGAGAAGTAGCTGCATACCGCGACGGTTTCTTCGATGGCCTGCGGATAACGCGCTTGCGGCGACAGCGAATAATCAATACCGATCACGGTGCAGCCGGTATAACGCGCCAGCAGACGCATTATCCGGTCATGCGTATCCAGATTACCGAGGATAAATCCGCCGCCGTGCAGATAGTATAAGGTGGCCTGGCTGGTCGGCTGCGGCGAGTAGAGCCGGGTTGTTACATCGCCATAAGGCGTAGGGACGACGCAGGTGCGGGTGGTCATGGACGGCGCGTCGGCATTCCAGAAACGGCGCTCAAGAAGATAATACTGACGCTGGGTCTCAATATCGCCATCGGCAGGCCAGG [...]
+TCAGATCGTATCTTTTTATAAAACACAACCATTTTTTATAAACATCCTGATTGAAATTGTCATAAACTATTACCCGGAGTTTTGGAGTCCAGCAACCAAAGGAGACGGAATGCATCACGCTACCCCGCTTATCACCACCATTGTCGGCGGCCTTGTGCTCGCTTTTATTCTCGGCATGATTGCCAACAAATTGCGTATTTCTCCACTGGTGGGATATCTGTTAGCGGGCGTTCTGGCGGGACCTTTTACCCCGGGTTTTGTTGCGGATACCAAACTGGCGCCGGAGCTGGCGGAGCTCGGCGTGATTCTATTGATGTTCGGCGTCGGGCTGCATTTTTCGCTGAAGGATTTGATGGCGGTAAAGTCTATCGCCATTCCCGGCGCTGTCGCTCAGATAGCGGTGGCGACATTGCTGGGTATGGCGCTTTCCGCCGTGCTGGGATGGTCATTAATGACCGGCATCGTTTTTGGGCTTTGTCTGTCTACCGCCAG [...]
+NODE	612	4519	251559	247682	0	0
+TGGCTGTCAGGCTTATCGCCCGACTCTGGCGCTTCGGAGGGGTCGTCTTTTTCGACAGCGAAACGGTAGTATCTATTTAGCATAACATGTCTCCCTTAGTTACATTCACTTGGCAATATCTACCTGGCCGTTATAAAAATAACGGCAAAACAAAAAAACAGCGTCTTCAAGACTATTTGCAATTTCAGCAAAATACGCTTAGCTGAAAGTTAAGAATAGACGTAAAACGATAACCTTCAAGTCAACGCGGTTTACGGGACGGGGGATTAGCACAGGGAGAATGACCGCAACGCTCGCTGCGCGGCGGCCATTTTATATGGTCTATCAAAAAGATAACCGTTAAGGTCCATTCAAACCCGTTAGTTTGCCTTCCCCTCAATCAAGCCATTGATCGTAGAAAATACCGCCGGCGCGCTGGTCGCTTCCGCAAACTCGACATTGATATTTTGCCGACGCAGCATATCGAAGAATTTACGTTGCGCATCAAGAATA [...]
+CAGAAATCCTATAAAGAACCGACCGAACAGTTTCCAGAAGGGAAATGGCGGCCGGTGCCGTTAACGGTGTCAAAAGGGCTGAGCGGCGGCGGCTATACCTATAAAATTACCACGCCGAACGGTACGGTACACGAAAGACTATGGGCTTATCCTGAAGCCAGTTACCAAAAACTGGTGGCCGATAATCTGGTCTATTTTGGCAAAGATAACGGCGGTATTCCCCAGCGAGTCATGTACGCGCACCACAGTAAAGGGCAGCCAACGACCAATTACTGGGATAACGTAGCGTCGAATAAAGAGGGGAAAAAGGAGATTTTGGATCTCTTCGGCGACAACGTTTTTGATACGCCGAAACCGACCGCATTATTGAAGAAAATCATCAAGCTCGCTATCGATAAAGACGGCGTCGTTCTGGACTTTTTTGCCGGTTCCGGTACTACGGCCCATGCGGTGATGGCGCTGAATGAAGAAGATGGGGGACAGCGCACGTTT [...]
+NODE	613	2463	122633	117953	0	0
+AATTCTGCTGCCGGCGAAGTAAATTCTGAATCTTCAAATTCATCGGTAATCAAAACGGCAATTTTCTTACTCATGCGTTTCCTCCGCAGTGGTGGCGTCGGGTAAGGCAAATTTTCCACAATGATGGATACTTACCTCGTAGACTATTAAGCCTGGTCGATAGGGCCGAGAGTGCAAGGTGGACAAATCTGTAAAGGAGCGAGGATGAGTCAGGTACTGATTACCGGCGCGACCGGACTGGTCGGCGGACATCTGCTGAGAATGTTAATCAACACGCCGCAGGTGAGCGCTATCGCCGCGCCGACGCGTCGTCCGCTGACGGATATTGTCGGCGTTTATAACCCTCACGATCCGCAGCTTACCGACGCGTTAGCTCAGGTGACCGACCCGGTGGATATTGTTTTTTGCTGCCTGGGCACGACCCGGCGTGAAGCGGGAAGTAAAGCGGCGTTTATTCATGCGGATTATACGCTGGTGGTTGATACCGCGCTG [...]
+CTGGCTGGAAAGCAAAGGACTGCGGTTTATCGCCGCCAACGTGCGCGAGCGCGGCGGCGAAATCGATCTGATCATGCGCGACGGAAAAACGACGGTTTTTGTTGAGGTCCGCTATCGGCGCTCCGGGCTTTATGGCGGCGCGGCGGCTAGTGTGACCCGCAGCAAGCAACACAAATTATTACATACTGCCCGCTTGTGGCTCGCCCGCCAGAATGGGAGTTTTGATACTGTGGATTGTCGGTTCGATGTGTTAGCCTTCACCGGAAATGAGATTGAGTGGTTTCGGGATGCGTTTAACGACCACTCATAATTGAAGATTTTAAGGATTAGCGTGCTCGAAAGAATCAAAGTTTGCTTTACAGAAAGCATTCAAACTCAAATTGCTGCGGCGGAAGCGCTTCCGGATGCCATTTCCCGCGCCGCCATGACGCTGGTTCATTCCCTGCTTAACGGCAACAAAATCCTCTGTTGTGGAAACGGGACGTCCGCGGC [...]
+NODE	614	906	44701	44508	0	0
+TCTGCATTCAGTGCCTGCGCCCACTGGCGGGCAGACCTTTCCAGTAATGTGTACACCGCCTCAAACGCATCGCGGCTTTTGCGATACGGGTCCGGTATTTCACGCTCGCTGTCCCAGTGACCAAACAGCATTACCTTGCCGCGCATTTCCGGCGCAATGTCGCACAGGGCGGCGATGTGACGTTTCTCCATCGTCAGAATCAGGTCATATTCCCGGCACAGACGCGCGGAAATTTGCCTTGCGCAGTGATTTTCCAAAGACAGATCGTGGGCGCTCGCCACGCTCGCCGCCGCAGGATCGGCTCCTTTGCCGACCAGCGCGCCTAACCCGGCGGACGCAACCGTCAGCGAGGGATGAAAGCGCTTTAGCAAACGTTCTGCCGTCGGGGAACGGCAAACATTCCCCACACAGACCACTAAAATTTTGTTAAACATAACGATTACCAGGAATGAATGTCGCTGGCCGTATCCGTCATATAACGGACACCGCTAA [...]
+TACCCTGGCGACATTCTGTATGTGCCGCGCAATGACGATCTGAAAGTCTTTGTCATGGGCGAAGTGAAAAAACAGAGCACCCTCAAAATGGATTTCAGCGGCATGACGCTCACCGAAGCATTAGGCAATGCGGAAGGCATCGATCTGACCACCTCCAACGCCAGCGGCATTTTTGTGATTCGTCCGTTGAAAGGCGAGGGGGGACGCGGCGGCAAGATCGCCAATATCTACCAGCTTGATATGTCTGACGCCACGTCATTGGTGATGGCGACGGAATTCCGACTTCAGCCTTACGATGTGGTGTACGTCACGACCGCGCCGGTTGCTCGCTGGAACCGTCTGATCAATCAGTTGCTGCCGACCATTAGCGGTGTCCGTTATATGACGGATACGGCCAGCGACATTCATTCCTGGTAATCGTTATGTTTAACAAAATTTTAGTGGTCTGTGTGGGGAATGTTTGCCGTTCCCCGACGGCAGAACGTTTGCTAA [...]
+NODE	615	4313	238634	237029	0	0
+AGAGCGCGTGCAGCGTAAACTGCATTATGCGCTGGTGGATGAGGTTGACTCCATCCTGATCGATGAAGCGCGTACGCCGCTGATTATTTCCGGCCCGGCGGAAGATAGCTCGGAAATGTACAAAAAAGTGAACAAAATCATTCCGCACCTGATTCGTCAGGAGAAAGAAGATTCTGACACTTTCCAGGGCGAAGGCCACTTCTCCGTTGATGAGAAAGCGCGCCAGGTTAACCTGACCGAACGCGGTCTGGTGCTGATCGAAGAGCTACTGGTGCAAGAAGGCATTATGGATGAAGGCGAGTCGCTCTACTCGCCTGGCAATATTATGTTGATGCATCACGTCACCGCCGCGCTGCGCGCGCACGCGCTGTTTACCCGTGACGTGGATTACATTGTGAAAGACGGCGAAGTCATCATTGTTGATGAACATACCGGTCGTACCATGCAGGGGCGTCGCTGGTCTGACGGTCTGCACCAGGCGGTAGAAGCGAA [...]
+ACGACAGTTTCAACAGGCTACGTCGCCCTATGTGTTATGGGTTGTGCCTCTGCTGGTTGAAAACAGGCTGTATCAAAAAGCCAACCGCGTACTGGTGGTTGACGTGACGCCCGAAACGCAGCTCATACGCACAATGCAGCGTGATGATGTTACGCGCGAGCATGTTGAACACATTCTCGCTGCGCAGGCGACGCGTGAAGCGCGCCTTGCCGTGGCGGACGATGTTATTGATAATAACGGCGCACCGGATGCTATCGCATCAGATGTGGCCCGCCTGCACGCCAGTTATCTTAAGCTCGCGTCGCAGTTTGTCTCACAGGAAAAACCGTAATGCACACCCAGGTCCTATTTGAACACCCTCTCAATGAGAAGATGCGTACGTGGCTGCGCATAGAGTTTTTGATCCAACAGCTCTCCATCAACCTGCCAATTGCAGACCATGCTGGCGCACTGCATTTTTTCCGTAACATCAGCGATCTACTGGATGTGTTC [...]
+NODE	616	3409	182936	182158	0	0
+ATATAGAGCGGCGTCAGAACGGTAAACAGCAGCAGTTCGGATACGGTCAGGTAGAGGTAAGCATGGAAGCTCAACATATACATGATGCCAAGCTGCATCGCCCCCACCAGCATATACAGGCTGATGGTTTTTAGGTTGTGCCCGCGAGAACGCAAAAACGGCAGAAAAACGAGCGCCGCCAGCCCAACGCGTATCAACACCGCGAAATAGCTATCGACATGCCCGGCAAGATACTCGCCAAATAGACTAAAGGAGAAAGCCCACAGGATAGTGGTAATGATGAGTAGCGCCACAATGGATGTCTCTTAAAACAGGGAACACCCATTGTAGCGGAGAGTGAAGTTGACAACTGGTCAACTAACAAACAATCACATCAGCGTAAGAAAAGATCGCGCAGGTAATGCGGCACGGCGTTATCCGCGTTGATGCCGATCACCTCAAGTTCGGGATACAGGTCTTTCAGACGCTGGTGCGCATTGCCCATGATGCAGC [...]
+TGTACCTGTGCTGGATGGGCTATCAGATGCTGCGCGGCGCGCTGAAAAAACAGGATGCGGCGGCGTCTTCTCCGCACATTGAACTGGCGCAGAGCGGGCGCAGCTTTCTCAAAGGGCTGCTGACCAATCTGTCGAATCCGAAAGCGATTATCTATTTTGGTTCCGTTTTTTCACTGTTTGTCGGCGATAACGTCGGCGCTGCGGCGCGCTGGGGTATTTTCGCGTTAATCACCCTGGAAACGCTGGCCTGGTTTACCGTAGTCGCCAGCCTGTTCGCGCTGCCGAAAATGCGCCGCGGCTATCAGCGTCTGGCGAAATGGATTGATGGCTTTGCCGGCGCTCTGTTTGCGGGCTTTGGTATTCACCTGATTATTTCGCGCTAATTTACCTCCGGGCCGGATAAACATCATCCGGCACGACTATCACGCGTGTCTTGCCGACGCCAGGAGCGCGCCTACCAGCATAAACAACGAACCAAACGCTTTATTCAGC [...]
+NODE	617	7213	377696	374924	0	0
+GTCCATCGAACCCGAGACGTCCATCAGACAGAACATCACCGCCTGGCTGGAGGGCTCAGGCCGTTTTTCATAATTTTTATAGCGTAAATCAAAGGTGTCGATAAACGGCACTCGCTCGATTTTAGCCCGTAGTTCGGCAATCTCCCGACGTAACCGCTCCTCTTCAAGCAGTTGCGCTGGTTCGCTGTGGCTGATGGTCTCCAGTTCCGTTTCCAGCGCGTGCAGTTCGCGGCGTTTTCCTGCCGTCATTGCTGTACGGCGCGCCAGAGAGTTTTGTAGCGAACGTACCACGCTGATATTGGCCGGTACGCCGTTTGAGGTGAAACCGGCGCGGTGAGTTTTATACTCGTTAAGCTGGCGATGCTGGTTTTTTTTCAGATTAGGCAGCGCTAAATCTTCAAAGAGCAGATCCAGATACTCATCTTTTGAAATCTGAAAAACAAACTCATCCTGGCCTTCGCCGTCCTGGCTGGCCTGACCTTGACCGCTGCC [...]
+GTCACACGGCTTTGCGCGTAATCTACCGTGGGCGCTAAAAGCGCATAATGAAGATGATAATGGCGTAATGCTGACATTTGAGCTGCAAAGCAGTGAGGCCACCCGGAAATACTGGCCGCACGATTTCACGCTGCTGGCACGTTTTAAAGTGGGCAAAACCTGTGAAATTGAACTGGAAGCGCATGGCGAGTTTGCAACCACATCCGCGCTCCACAGCTATTTTAACGTTGGCGACATCGCCAACGTTAAGGTCAGCGGACTCGGCGATCGGTTTATTGATAAAGTTAACGACGCTAAAGAAGGTGTCCTGACCGACGGTATACAAACCTTTCCGGACCGTACCGATCGCGTTTACCTCAATCCTGAAGCATGTAGCGTGATCCACGATGCGACATTAAACCGCACGATTGATGTAGTCCACCACCATCATCTTAACGTCGTAGGCTGGAACCCTGGCCCGGCGTTGTCCGTCAGCATGGGCGACATGCCGGA [...]
+NODE	618	2613	147397	146957	0	0
+GTTCGGTACTAACTTTAACTACGCGTTCTAATCTCTTTCTGAAACGGATCAAAAAGGTGAGCATTGCGCTCACCTTTTTATTTACTGCCGTTTATTCCGAGTCGATCTCTTTGAGTTCGTCCTGAATCGCCTGCGCGTTCGGGTTTTCCTGCGGCTTGAGTTTTCCGCCATTGGCGATAAAGTCATGACGCTGGAAGTACGCCTCGCGCACCATAATATAAGGATCGGAAGACTGGCGCAGCAAACCATCGGAGTCCAGCAACTGCGCGCGGGTTTCTATCCCTTCGATAGTCCATTTTCCTATGGACATTGGCCAGGTCAACCACGAGAGCACCGGATACAAGGTATCCGCCATATCCCCGCCATCTTCACGCAGCGTGAAGCTGCCGTAGAACGGAAGTTGCATATAAGGCCCATACCCCACGCCATAATGGCCCAGCGTACTGCCAAAGCGATGCGGTTCAACGCGCTGCAGCTTAGGATTCGCCATTC [...]
+ATTTGCGGGTACGGTCCGATGACCAGTGTCTTTTCCTTGCCGTCGAAACGGTAACGCATTCGCCACACCTTTTTTCCTGATGGAGGTACGAACAGGAACAGGCCTCCAGAATCAGCAAGGCGATATGATTTTTCTGCAGGTTTTGCTGCGTCAATTTGCTTTACTGTGAGCATGTGGGCATAAATCCGTGGTCATTTTAACATGTGCCCACAATATGCCCGCATTAATGTGCGGCAGTCAACGATCCGCTACGAACGTCTAAGAACTTATTTTTGGTATAAGTAGTGATTATAAAGGGGATTCTAGAACTGTAACGAACGAGGAAGAACTGAAAAGTGGTGTCCCCTGCAGGAATCGAACCTGCAACTAGCCCTTAGGAGGGGCTCGTTATATCCATTTAACTAAGGGGACAACGCGGCGCCAGTATAGCGTTTTTTATTCGCCGGAGTAAGTGTAGCGCCGCCTGACTGGTTAAACCGTCGCCACTCAGCG [...]
+NODE	619	1219	241336	233181	0	0
+ATGAAACGCTAGGTTTTCTACCTCGATGTGGAACTGTTTTTAGTTCATAACCTGAAACAGAAATACGAGTTTTTTTATTCATACCATCATAAAATTTTTCTTCATTGTATACATCCCCTTCTGTTGCAAGTAACACCCATAAAAGAGTTGCATTTTTTTCATCAAACCAGACAAGAAATTTGCAGTTTGCTACTCCTTTTTCTCTTCTCCTGAAACGTTGTTGTGCTGTTGCATTGATAGCATAGAGTTCATCAAAACGTGCTTTTAGTGACACGAATTTATAGTGAGGGTTTAGAGGAATTTCGCCACCAAACCACCTTGTATATCCCAGCGAAAACAGCATGGCTATCTGACGCATAAAATCGGTTTTAAAACGGTAAATCATCGAAATCCTCATAAAAGCTATGTAGTAACCGCTACATAAGAGAAGTCAACATATGGGAATACCTTATAAAGAGATTCCTTGCGCTGCGCTTACAGGTTAAATATTAT [...]
+CCCGCCACTGGCTCAGACAAACTACTAGGCTACGCCTTACCATTTCTGGCTTTCAGGGGGCCGAGATTCCAAAGCACCTCCCTTACTCATAATTTGCCGTCAACACCATAGCCAGACACTTAAGTCATGGCTGGTTATCACTTACCCGAATGCGACCTCTTCGGACGCAATTACAGGCTTGAGCTTTACAGCGATCTGCAAAGGTTGCCCCTCACAGTACCGACGTTTCCAGGTTTCCCCTCAACGCCCTGACACCTCACGATGCCCTCAGCAGCCCACCTGTCGGGAATATGTTGTACCTTCTCAAGCACCCCATATTCGGGATTTTCACCCGTTCAAGATCAACAGGGATCACGTAGTCACCTACGTTCCCGTTTCCGTGTCGCCCAGTCTCACGCTTTGGCGTGGATTGGGTCGGACAGGGGAGTTTCACCCCCGAACGCCCTTCGTAGCCGTACCAGCCCAATTACAGGCATACGGCTTCGGCAGTAA [...]
+NODE	620	51	2863	2795	0	0
+TGGGTACCGGTGACGGCTAATGCGCGTGAAGAAGCGATGTAATCTTCGCGG
+ATCTTTCTCACCCCAATACGCGCGCCGCCGTTCTTAAAGCGCTGGAGTATG
+NODE	621	3080	178995	177643	0	0
+CGCGCCGTCCGCGGTATTTTTATCGCCGCGTCCCAGCCATTTGTAGCCAGCCAGCGCCGCCGCTTCGGTCACACGGGAAAATTCGATGGCAAGTTCTCGTCTCATAACAAACTCGTAGCAAAAAGGAGTGGCGCGCAGTGTAGCACAGGGGAAGGAGGGAATAATTGATGTGTGTGCGGAGTTGCCCCCGCACAAAGATTTTGCCGGATGGCGACCTTACTTGTCGTGATCTTCCCACGCCATTGCGCGTTTAACCGCTTTCTTCCAGCCGCTATAACGGTAGTTACGCTCGGTGGTTTCAATGCCGGGGCGGAATTCTCGCTCAATGACGGCTTTTTCCTGCAGCTCGTCCAGGTTCTGCCAGTAACCGACGGCCAGACCAGCCAGATAGGCGGCGCCCAGCGCGGTCACTTCGCGCACTTCCGGGCGTTCCACCCGCGTGCCGAGAATATCTGACTGGAACTGCATCAGGAAGTTGTTGGCCACTGCGCC [...]
+TGTACTTTTGCTTCCAGTTTCTCAAACACTTCTAAAGACATGATCTTACCTCTCCTGAATTGCAAGGCGACGCTTCACGTAAACGCGCACAATATATAGTGTCGATTGTATGAAGCCCCGCTCTCGCTGTCCAGCGACATACCGCGTAGATCGCGGTTTGCAGCAATTTTCATCCATCTCCTGGTAACATTCATTCAATAACTTAAAAGTGTTAACATATTGGTTAATGAAATGATTCAATTCACTCTCTTCTGCTGTCTCAAAATGCGCCTCATGGCGCGATAACGCTCATTTTATTGACGCAGTACACACATTTTGATTTCGATATTTCTCGTTTTTGCTCGTTAACGATAAATTAACAGTGTGCCTACAGGGCATCGTGGATGTCCATGACCTCCTCGCATACCAATAATCATTACATACTCTTCAGGATCCGATTATGAGTCAAACATCAACCTTAAAAGGCCAGTGCATTGCTGAATTCCTCGGTAC [...]
+NODE	622	961	65148	61393	0	0
+AGCCGGCGCGCTGTTCCGTGACCGCCAGCGAGTGCAGCAGGGCGGTGCCCGCCAGCCACGGCATAAAGGAGGCGTTCTCCACCGGGTCCCAGAACCACCAGCCGCCCCAGCCCAGCTCGTAGTAGGCCCACGCCGAGCCGAGCACGATGCCCAGCGTCAGGAACACCCACGCCGCCAGCGTCCACGGACGGGCAAAACGGGTGAACGCGCTGTCCAGACGCCCGCTCAGCAGCGCGGCGATGGCGAAGGCGAAGGCCACCGAGAAGCCGACATAGCCCATGTACAGCAGCGGCGGGTGGAAAATCAGCCCCGGGTCCTGCAGCAGCGGGTTCAGGTCGCGCCCCTCCACCGGAAAGGCCGGCAGCGTGCGGGCGAACGGGCCGGAGGTGAACAGGATGAACGCCAGAAAACCGGCGCAGACCATCCCCATCACCGCCAGCACCCGGGCGACGATATCCGCCGGCACCCGCCGGCTGAACACCGCCACCGCCA [...]
+TGGCCAAGCATGACGAGAACTACACCCCGCCGGAAGTGGAAAAGGCGATGCAGGAAAACCACCGCCGCCCGCAACGCGCTGATAAGGACACCTCATCATGATGCCTGAATACGGCCACGCACTGCTGTGCCTGGCGCTCGGCGTGGCGCTGCTGCTGTCCGTTTACCCGCTGTGGGGCGTGGCGCGCGGCGACGCGCGGATGATGGCGTCGGCCGGGGTGTTCGCCTGGCTGCTGTTCATCTGCGTGGCGGGCGCGTTTTTCGTGCTGGTGCACGCCTTTGTGGTTAACGACTTCACCGTGGCCTATGTCGCCGGCAACTCGAACACGCAGCTGCCGGTGTGGTACCGGGTGGCCGCCACCTGGGGGGCGCACGAGGGCTCGCTGCTGCTGTGGGTGCTGCTGATGAGCGGCTGGACCCTGGCGGTGGCGGTGTTCAGCCGGCGGGTGCCGGCGGATATCGTCGCCCGGGTGCTGGCGGTGATGGGGATGGT [...]
+NODE	623	2958	156851	155835	0	0
+CTGGCTGGCGTCATGTAGCTCCGGCGGAGAGAATAAAAGCTATTATCAGCTCCCGATAGCGCAAAGCGGTGTGCAAAGCACCGCAAGCCAGGGCAACCGTCTCTTATGGGTAGAGCAGGTTTCCGTACCTGACTATCTGGCAGGTAACGGCGTGGTGTATCAAACCAGTGATGTCCAGTATGTGATTGCCAATAACAATCTGTGGGCCAGCCCGCTGGATCAGCAATTGCGTAACACGCTGGTGGCGAATCTTAGCGCCCGGCTTCCTGGCTGGGTCGTCGCTTCCCAGCCGTTGGGAACCACCCAGGATACGTTGAACGTTACCGTAACCGGATTCCATGGACGTTACGATGGTAAGGTTATCGTCAGCGGGGAGTGGTTATTAAACCACAACGGACAACTGATTAAGCGGCCTTTCCATATCGAAGCCAGCCAGCAGAAAGATGGCTATGATGAAATGGTCAAAGTACTGGCAAGCGCATGGAGTCAGGA [...]
+GTTACTGTGGATGCGTCTGAAAGCCATCGTTAGCCGCGAGCGTTTTGACTGGGTGGCCTTTGACGAGTCGCGTCCATTACCGGTCTCCGTGCCATCCATGCCGCTCAAACTGAAGGTGATTCTGGTTGGCGAACGTGAATCACTGGCTGATTTTCAGGAGATGGAACCGGAGCTCGCGGAACAGGCTATCTACAGTGAATTTGAAGACAATTTACAGATAGCGGACGCAGAAGCTATGACCCTGTGGTGTCAATGGGTGACGCGTATCGCTTTACGCGATAATTTGCCCCCTCCGGCTCCGGACGCCTGGCCCGTTCTGATACGCGAGGCTGTGCGCTATACCGGCGAACAGGATACGCTGCCTCTTTGCCCACTGTGGATAGCCCGCCAGTTTAAGGAGGCGTCGCCTTTATGCGAAGGCGATACCTGCGGCGCAGAAGCGCTCAGCCTGATGCTTGCCCGACGCGAATGGCGAGAAGGCTTTCTGGCGGA [...]
+NODE	624	14	546	495	0	0
+TATAATACCAGAAT
+ACCCTCGGTTTATT
+NODE	625	2279	127401	126587	0	0
+TCGGCTGGAATTTCACTGCGCGCCAGCAGCTCGCCTACCACCATCTTGCCGAGATCAACAGCGGGAATACCATGAAATGCAGTGGCCTGACGAGCAAAGGGGGTTCGTAACCCACTGACAATAGCAATGCGATCGCCCTGACGGGTGACCAACGGTAAAGCCTGACGCATAGTACTCCCCTGTAAAAAAATAAATTAGTGGTCTGACCTGATCACAGTCTTAACCAATTTTTTACATTTAGCCAAGCAGAGAGAAAAGAAAGTGGGAGCTAAGGCACAGTGAAGGGAAGCGACAAAAAAAGAAAACGCCTCCGCCAGATGATGACGGAGGCGTCGTGAATGAACGGATTAACGCAGGCCGAGCTGGAAGATCAGCGTTTCTGCTTCGCAGGCGAAAACAAAATCAATATCCAGACGAACGCCTTCGGATTCCTCGGTAAAGGTTGGCGTAATTTGGCAAGGTTCAGACTCCACGCTACGCGCTTTTTCGGTT [...]
+CACGCTCTGACCATGCATATAAGAGACGCCAACGTCGACAGACGCATCTTTATTAAAGGCGTAAGTCGTACCGGCGCTCAGCCAGAAACGGTCCTGGTCCGGAATAGAGATAGAACGGTTTTGCGCTGGTACCGGGCTGTCATCGAAGGCGATACCGGTACGGAACGTCCAGTTGTCATCGTAGTAATAGGTGGTGCCCAACGCAATGCGGTAAGCGTCTTTAAAGCCTTCATGCTTCTCAAAGAGCGTATCGCCAGCGGTCGATTTTGCCTTCAATTCCTGGAACTGACTCCAGCTGGTATAGGCCAGGCTATAGTGGATGGCCCACTGTGGCGCCACACGGTTATAACCGGACACTTCCCACATTTCCGGCAGATTCAGCGTCAGGTAGCCTGACTGCGTCGCGCCACCGGTTGCCGTTGGGATAGGCAGGTTAAAGCGGTTTATAGCGATGGGAAGATCGCTACTGTAGTTGCCTTTAAAGTCAATTTT [...]
+NODE	626	8251	460304	457545	0	0
+GATGAAGAGGCATTGCCGCTTGGCAGTACCGCTGAGCATTTAAGCGGCCTGTTTTACATTCAGGAGGCCAGTTCGATGCTGCCGGTCGCGGCCCTGTTCGCCGATGATAATCATCCGCAGCGGGTCATGGATATGGCAGCGGCGCCTGGCTCAAAAACCACGCAGATCGCTGCCCGCATGGGGAACCGCGGCGCCATTCTGGCCAACGAATTTTCGGCCAGCCGCGTCAAAGTTCTGCACGCTAATATCAGCCGATGTGGAATCGCCAATACCGCACTGACGCATTTCGATGGTCGCGTATTTGGCGCTGCGTTACCGGAGATGTTTGACGCTATCCTGCTGGATGCGCCCTGCTCTGGCGAAGGCGTAGTACGTAAAGATCCTGATGCGCTAAAAAACTGGTCGCCAGAAAGTAATCTGGATATCGCGGCGACACAGCGGGAACTGCTCGACAGCGCTTTTCATGCTTTACGACCCGGCGGCACGCTGGTC [...]
+GTAGTGTTCAGTTTCAGACACTGCCGGACGGGCCCGAGTAGTCGGCGGTTCTCCTCTTTTAACCCGAGCATGTCTGCCAGTGCAGAGATGATGCAGAACCGTGAGTGCTCGTCGCTAATCTCCACCACACTGACTTTTTATTGATTGTGAATGAGTCTGTCATTCACGTAAATATCAAGCAGGTAATTCCCTGGCGCAATATAGCCATCCCGGCTGAAGGCGGAGAAATCCACACTGAGGTGGTCACTGTTTTTAAGAGAATCGGCGCTGAACTCCGTCGTCTCTACTGGCAACGACAGTATATTCAGAGTAATTAGCAGTGTAGGCCGATTCAGTTTCATGGTATAAGCCGCTATCCGTGTTGCCTGAATAAATGAAAATCCGCCGCTGCTGATTTAAACCGTTCCGTGAAATAACAGCGCATCACTGAAGAAATAAACAATTCTGGCGTCCGGACATACCAGATAAATGGACAGCGAAACTGTTTATTAA [...]
+NODE	627	507	21975	21938	0	0
+CGCGTTAAAGGCGACTGGCTGGTCGCGCTGCCTGCGGGACTGAGCAGCCGTAACGCCATGATCATCGGCACCGCCGGTTTTACCGCCATGCTGTGCGTCATGGCGCTTGAAGATGCAGGTATTCGCCCGCAAGACGGTGAGGTTGTCGTCACCGGCGCCAGCGGCGGCGTGGGCAGCACTGCCGTTGCATTACTGCATAAGCTGGGCTATCAGGTTGCAGCAGTATCAGGACGTGAAAGCACCCACGGCTATCTTAAGAGCCTGGGAGCTAACCGTATTCTCAGCCGCGATGAGTTTGCTGAATCTCGCCCGTTGGAAAAACAGCTGTGGGCCGGTGCAATTGATACCGTTGGCGATAAAGTGCTGGCGAAAGTGCTGGCACAGATGAACTATGGCGGTTGCGTGGCCGCCTGCGGCCTGGCGGGCGGCTTCGCGCTGCCGACCACCGTTATGCCATTCATTCTGCGTAATGTGCGTTTGCAAGGGGTGGAC [...]
+ATGGCATAACGGTGGTCGGCAGCGCGAAGCCGCCCGCCAGGCCGCAGGCGGCCACGCAACCGCCATAGTTCATCTGTGCCAGCACTTTCGCCAGCACTTTATCGCCAACGGTATCAATTGCACCGGCCCACAGCTGTTTTTCCAACGGGCGAGATTCAGCAAACTCATCGCGGCTGAGAATACGGTTAGCTCCCAGGCTCTTAAGATAGCCGTGGGTGCTTTCACGTCCTGATACTGCTGCAACCTGATAGCCCAGCTTATGCAGTAATGCAACGGCAGTGCTGCCCACGCCGCCGCTGGCGCCGGTGACGACAACCTCACCGTCTTGCGGGCGAATACCTGCATCTTCAAGCGCCATGACGCACAGCATGGCGGTAAAACCGGCGGTGCCGATGATCATGGCGTTACGGCTGCTCAGTCCCGCAGGCAGCGCGACCAGCCAGTCGCCTTTAACGCGTGCGCGTTCGGCCAGGCCGCCCCAGTGGTTTTCGC [...]
+NODE	628	3465	199988	196298	0	0
+TCAATATACGCGGTACGGCTGGCAATCAGCTTGCTCCAGTCGAACTGATTAATCGTGGTGTCAAAACCGTAGTCCGGGCCATACAGATGAATCGCTTCACGAATCTGCGCGGCATGCCACATCACTTTCTTCGGCACGCAGCCCACGTTAACACAGGTGCCGCCCAGCTCTTTGGCTTCGATGAGCGCGCATTTCTGGCCGTACATAGCGGCGCGGTTAATCGAGGCGATACCGCCGCTGCCGCCGCCGATAGCGATGTAATCATAGTGTTTGGTCATGACCGCTCCTTTATGTTCGTTGTCGGACGGATAGATTCTGCGCTACCCGCCAAAATATTCGCGATTGTATACCTGAAGGTGAAAGGTTCCACCGATGGCTGTGATTACTCCGGCACGATCCAGCTTACCGAAGTGTGTCCGTGACCGTTTGGCGCCAACCTGCTGTGCAGCCACGGTAGCACGTTGTTCATCTGCTGCTCCAGTTTCCACGGCG [...]
+GTCCAGCCCATGGTGGCATCGAGCACATTATTGCTGTACTGGTTGCCCAGCTCAGACAGGCGAGTGGCGATTTCGCCGTAACGCTGCTGTTTCTCTTTCGGCAGACCGATGCCGGACAGTTCAAAATCACGCAGCGCGTTATCGACCGCTTTCTTCTGCGCGGTATTCAGAGTGGCGTAATGATCGCCGTCGCGCAGGTCGCGGTACGCGTTGTACAGTCCTTCATGTTGCCCAACCCAGGTGCTGTATTCAGACAGCAGCGGCAGCGTCTGTTCGTAGGCTTCACGCAGCTCCGGACTATTTTTCACCGAGTTTAAGTGGCTAATTGGCGAGAAAATACGCCCCAGAACATCGTCGGCTTCCGCCAACGGCTGGCAGAGGTTTTCCCAGCTATACGGCGCGCCATGCGCCACAACGCCTTCTACCGCCGCCCGGCAATCGGCCAACGCTTTGGTGACCGCAGGCACCACATGCTCCGGTTTAATTGCAGAA [...]
+NODE	629	6793	359632	357100	0	0
+GTTTAATCCGGCGAAGTTACTGCTTGACCCTTATGCGCGCCGGGTCGAGGGCGAACTAAAAGATCATCCGCTGTTGCACGGCGGACACGATGAACCGGACTACCGCGATAACGCGGCGGTGGCGCCGAAAAGCGTGATAATCAGCGACCATTATGACTGGGAAGATGACGCCGCGCCGCGCACGCCGTGGGGAAAAACGGTCATCTATGAAGCGCATGTCAAAGGGCTGACCTACCTGCATCCGGAACTCCCCCAGGAGATACGCGGCACCTATAAAGCGCTCGGTCATCCGGTCATGGTGGCGTATTTCAAACAGCTTGGCATTACGGCGCTGGAACTGTTGCCGGTGGCGCAGTTTGCCAGCGAGCCGCGCCTGCAACGTATGGGACTGACCAATTATTGGGGTTATAACCCGATGGCGATGTTCGCGCTGCATCCCGCCTGGGCCAGTTCGCCCGAGACGGCGCTGGACGAGTTTCGCGACGCGGTGAA [...]
+TGATCGCCAAAGTTAATCAGCGAATCTACCAGATCGCGGTAACGACCTGGCTCTTCCGGATTAAAGACGCCGCTACCAATCTGCGTCAGTACCTGATGTAGCTCTTCATCTTTTTCATAATAGTCGCGAGGCTTATAACCCTGCCTGCGCAACGCTTCCACCTCTTCGGCAGTATTACCGAAGATAAAGATATTCTCCTCGCCGACATGCTCCTGCATCTCTACGTTCGCACCATCCAGCGTACCAATGGTGAGCGCGCCGTTCAGGGCAAATTTCATATTACTGGTGCCGGAAGCTTCTGTCCCTGCCAGCGAAATCTGCTCAGACAGGTCAGCAGCGGGAATGATCACCTGCGCCAGGCTGACGCTGTAGTTCGGGATAAACACCACTTTCAGCTTGTCGCCAATCTGCGGATCGTTGTTAATCACTTTCGCCACGTCGTTGATCAGATGAATAATGTGTTTTGCCATGTAATAGGCGGAAGCCGCCTTA [...]
+NODE	630	3306	173596	172492	0	0
+TTAGCGCTAACAGGATGTGACGACAAACAGGACCAGCAAGGCGGCCAGCAGATGCCAGAAGTTGGAGTTGTCACACTAAAAACGGAACCACTGCAAATCACAACTGAACTTCCGGGTCGTACCGTTGCTTACCGTATCGCCGAAGTTCGCCCGCAGGTAAGCGGCATTATCCTGAAGCGTAATTTCGTTGAGGGAAGTGATATCGAAGCGGGAGTCTCTCTCTATCAGATTGATCCTGCGACCTACCAGGCGACTTACGACAGCGCTAAGGGCGATCTGGCAAAAGCGCAGGCCGCCGCGAATATCGCTGAACTGACGGTGAAGCGTTATCAAAAGCTGCTGGGTACGCAGTACATCAGTAAGCAGGAATACGATCAGGCGCTGGCTGACGCGCAACAAGCGACTGCCGCCGTTGTCGCAGCAAAAGCCGCCGTTGAAACCGCACGTATCAACCTGGCGTATACCAAAGTCACCTCACCGATTAGCGGTCGT [...]
+ACGTGCCTGGGTGAGTTTTTCATGACCAAGTCCCGCCTGGTCAATCAACTCGAAGTCAAACCCGGTTGCGGTGCCCAGTTCAACAATCGCCGGTAGGTTAAAGGCGAAGACCATCGCATCTTTAATTTGTGAAAACGCTGCGGTTGCCCGCTGGGTAATCGCTTCAACCTTGTTTTTTTCGCCTGGACGATCGGCCCAGTCTTTCAACGACACGAATGCAATACCGGTATTCTGACCGCGCCCTGCAAAACCGAAGCCGTTGACGGCGAATACCGATTCAACGTTGGCTTTCTCTTTGTTCAGATAGTAATCCGTGACCTCATCCAGCACTTTTTGCGTGCGCTCTTGCGTCGCGCCGGCGGGGAGCTGGACCATTGTCAGGAATACGCCCTGGTCTTCATCCGGCAAGAAAGAGCTTGGCAGACGAACGAACAGATAAGCCATACCGACGACAATAATGAGATAGAGCAGCAGGTAACGCCCGGTGCTGCG [...]
+NODE	631	69	2474	2474	0	0
+CCCTGCCGGCACGCCGCTCGCCATCACCGTCACTTTCGCGCCGATGGAGTCACCCTCTTTTTTCAGCGC
+GAGCGGCGTGCCGGCAGGGCTTGGCGAACCGGTTTTTGACCGACTGGATGCGGACATCGCCCATGCGCT
+NODE	632	4575	246837	245627	0	0
+TTCAACAGCGCAACTTTATGTTCGAAATTGTCGGCACGGTAGTACCACTGGTGAATTTTCTTACGCTCGCGGGTTGACGGATTGGCGGAAACCTCAACCGGGTCTTCCAGCAGGCGCTCGGCAAAATCTTTAATCGCATCGCCTTCCAGCGTGGCGGAGAACAGCATCGTCTGTTTACGCCAGCGGGTCTCACCGGCGATATGCTCAATGTCCTGAGCGAAGCCCATGTCGAGCATCCGGTCAGCTTCGTCAAGGATCAGTGTTTCAACCGCCCGGCAGTCAAAGTTCTCTTCTTTTATATATTGCAGCAGACGGCCCGTTGTGGCGACCACGATATCCTGGTTTTCGCTAAACACTTCAGCATGGTTCATATAGGCCACGCCGCCGGTAATTGTGGCGATATCCAGATGAGTATGCTTAGCCAGTTCACGAGCGTGATCGGCAACCTGCATTGCCAGTTCGCGGGTTGGCGTCAGGATCAGAATACGCGGC [...]
+CTGCGCCGCCCACGGACGCACTTTTTTCCAGAACGGCATTTTCTGCCATTGCTGCGGAGCGGGTTGGGCCTCAGGAATTAATGGCGACACCTGACGTACTGGCTCGTTTTCAATAGCGGCCATCACGCGAGCGGATATATCGAAATGGAGAACGTCAGGCGTATCCCCCCGCATTGAATCGCGGATCAGGTGATAACTCTCCCAGGTTTTCTGCATTTCCGGGTCGTGCGTAAGCGCTTTGAGCAGCTCACTATCCAACGTTTCGCCATCCATCAAAGCGGAAAGTTTTTCTTTCTGCATGCCTAATACCTTTTCCAGTATCCCGCTATCGTCAACGCCTGATAAGCGGTTGAACTTTATTATCAATAGCTTCCCGCGCCCGGAAGATACGTGAACGCACCGTCCCCACCGGACAATCCATGATAGCCGCTATCTCTTCATAGCTCAGGCCATCCAGCTCCCGTAAGGTGATTGCCATACGTAAATCTTCCG [...]
+NODE	633	2822	143825	139962	0	0
+GCACCTGATCCAACGGCTGGGAAGAGGTATCGTAGATTTTTAATTCAGCGGAGGGATCCGCCGGCGCGCTTGCTGTAGCAGGGGGAGTTTGTGGCGCGCTGACTGGCGTAGCGGACTGGGATGGAGCGTCATCAGTCAGATCGCTCACCGAGGCCTGCGACGGACTGGCGACGCCGTTGGTCATTTGTGGCTGCGTCTCCTCCACGCCAGGTTCGACCGGCGCGTCAGGCGCGGCGGCAGGCTGCATCTCTACCGCCTGGGTGCCGAGGTTTTTCGCGGCTTCGAAACCTTGCTGGATGGTACGGCCAAACACGGCAGCCTGACCGTTCAGCGGCAGCAGCAGAGCGATTTTGCTGGTGGAAGCTGGTTTAAAACGTTGTACATTGACGAGCTGCGTCGGCAGCATTTTCGCCCCCGGATTTTGCGGGTAGCGTTTTTGCCAGTCGGCGATCCCGGCTTTCAGCATGTCCGGATCGTTGCGGTTGTCAAACC [...]
+AGTCATTCTGGAAGATCGGTATCAACTCGCCAGCGATCCGAAAAAGCGGATTGCCCAGGCGGCTGCGGCAATGGTTGAAGAAGGAATGACCATCATTCTGGATAGCGGGAGCACAACATTACTGATTGCGGAAGCGCTCGCGCGAAAAAGCAATATTACGGTGATCACTAACAGCTTGCCTGCCGCTTTTACGCTATCAGAAAATAAAGATCTCACGCTGGTGGTCTGCGGCGGTACGGTACGGCATAAAACCCACTCAATGCACGGCACGATTGCGGAACGCTCGCTACACGGCATCAGCGCCGATGTCATGTTTGTCGGGGCGGATGGCATTGATGCGACAAACGGTATTACCACGTTTAACGAAGGTTATTCCATTAGCGGCGTCATGGCGGCGGCGGCACACAAAGTTATCGCGGTACTGGACGCGACCAAATTTAACCGTCGCGGCTTTAACCAGGTATTGCCGATGGACAAGATCGACTGTGTGAT [...]
+NODE	634	3263	155196	153085	0	0
+GCGTATACTTTCGCCTTTATTAATCTGACCGTTATAGTTACGCCACAACTCTGGCCGCTGATTTTTCGGGTCCCAGCGATGGAAACGGTCACGAAAGGAGTAAATACGTTCTTTCGCGCGGGATTTTTCCTCATCGCGCCGTGCGCCGCCGAACGCGGCATCAAAACCGTACTTATTCAGCGCCTGCTTTAACCCTTCGGTTTTCATAATGTCAGTGTGTTTAGCGCTACCGTGAACGAACGGATTGATGCCCATCGCCACGCCTTCCGGATTTTTATGTACCAGCAATTCGCAGCCGTATGCGTTGGCGGTACGATCGCGAAAGGCGTACATCTCACGGAATTTCCAACCGGTATCAACGTGCAATAGCGGGAACGGTAACGTACCCGGATAAAACGCCTTACGCGCCAGATGCAGCATGACGCTGGAGTCTTTACCAATGGAGTACAGCATGACCGGATTAGCGAATTCCGCTGCCACTTCACGGATAAT [...]
+GCGGGGATAAACCGAGATGACCATCCCACCAAGCAGGCGAAGAAAAGTGTTCCCCGCGCCAGCGGGGATAAACCGGTGCCGCTGATTTTCGTAACGCCTCAATGTATGTGTTCCCCGCGCCAGCGGGGATAAACCGAAAAAACAATGGTTTTACCGTCCGGCTGAACAGTGTTCCCCGCGCCAGCGGGGATAAACCGCCGATGATCCAGAAAGTCACAAATGCGAGGAGGTGTTCCCCGCGCCAGCGGGGATAAACCGAGGGGTTCAGGGGCGAGCGGGCGTTAAAGCGCGTGTTCCCCGCGCCAGCGGGGATAAACCGCAGACCAGGGAGTTTCTGGCCGAACTGGAGAGGTGTTCCCCGCGCCAGCGGGGATAAACCGATGTGCGCATTATTGCTAACCATAGAGACTCAGTGTTCCCCGCGCCAGCGGGGATAAACCGGGCGACGGCACAAAACGCTCAAAACTCATAACGTGTTCCCCGCGCCAGCGG [...]
+NODE	635	7123	374736	370804	0	0
+AATCTGACGCGCTTTTTCCGCTGACCCTGAGCATCTTGTCCCTCATTATGGCCTCGCTGCTGCTATTTATTGTGCTGTGGTCCGATCCGTTCCTGCGTATTTTCCCTCCCGCCATGGAAGGGCGCGACCTTAATCCCATGCTGCAACATCTGGGGCTGATCTTACATCCGCCGCTGCTCTATCTGGGTTATGGCGGCCTGATGACCGCGGCGAGCGTAGCGCTGGCCTCGCTACTGTGCGGCGGCTTTAACGCCGCAACCGCCTGGGTGTGCTGGCGCTGGGCGTTACCCGGCTGGTGCGCTCTGACGCTGGGGATCATTCTCGGATCGTGGTGGGCGTATTGCGAACTGGGCTGGGGCGGCTGGTGGTTCTGGGACCCGGTGGAAAATGCCTCGTTGTTGCCGTGGCTTGCCGCCAGCGCGTTGCTGCACAGTCTGTATGTCAGCCGCCAGCGCGGGAGATTCCGTCACTGGTCGTTGCTGCTGGCGATAC [...]
+AATCTGTTTCCTGGGATGAAGCGCTCAATTACGTCGCTGAACGTTTGAGCGCCATCAAAGCGAAGTACGGTCCGGATGCAATCCAGACAACCGGCTCCTCTCGCGGTACCGGAAATGAAACCAACTATGTAATGCAAAAATTCGCACGCGCCGTTATTGGTACCAATAACGTTGACTGCTGCGCTCGCGTCTGACACGGCCCATCGGTTGCAGGTCTGCACCAATCGGTCGGTAACGGCGCAATGAGTAATGCGATTAACGAAATTGATAACACTGATTTAGTGTTCGTCTTCGGGTATAACCCGGCGGATTCCCACCCTATCGTGGCGAATCATGTGATTAACGCTAAACGCAACGGGGCGAAAATTATCGTCTGCGATCCGCGCAAAATTGAAACTGCGCGCATCGCTGACATGCATATCGCGTTGAAAAACGGCTCGAATATCGCGCTGCTCAACGCCATGGGGCATGTCATTATTGAAGAAAACCTGT [...]
+NODE	636	1344	62086	59134	0	0
+GGACCAATCAGCCCGACCATACTACGGGCGGGAATGTCCAGCGTGATATTGTTCAGCGCGACCGTTTTTCCGTAATGCTGGCTCACCCCCTCAAGCTGCGCCACGGGAGGAACAGGCACCAGCGTCAGCGACGTCATTGCGACAGCCTCACGTTCAGATCGTCAGGCCAGGGCACGCGCTCATCCAGACGAACCCATGCCATTCCCGGTAAACCGGTTTTGACATATTCCAGATGCTGTCGCAACAGCTCTGGCGGAATACGCGCTTTGACGCGGAACATCAGCTTTAACCGTTCATCGTGGGTTTCCACGGTTTTGGGTGTGAACTGCGCCACGCTGGCGACAAAACTGATCGTCGCCGGAATACGCAGATCCGGCGCGGCGTCCAGCACCAGTCGCGCTTCGCCGCCGATCTTCAACAACCCCGCCTGTTCGGTCGGCAGGAAAAATGTCATATAAACGTCGCTGAGATCGACCATGTTCAACACCCGGC [...]
+ATTCTTATCCCGGATGGAAACCCCCGCTGAGCGCACGCCCGGCGGACTTTGTGACACGCATGGTTAGACAACAGGGATTACGGCGGGTCGATTATGGACAAAATGAAGCGTCATCTGGTGTGGTGGGGAGCGGGGATTCTTGTGGCGGTGGCCGCGATAGCCTGGTGGATGCTGCGCCCTGCGGGAATACCGGAGGGGTTTGCCGCCAGTAACGGCAGAATTGAAGCCACCGAAGTGGATATTGCCACTAAGATTGCCGGGCGTATTGATACCATCCTCGTTTCGGAAGGGCAGTTCGTTCGTCAGGGCGAGGTGCTGGCGAAAATGGATACCCGCGTATTGCAGGAGCAGCGGCTGGAGGCGATTGCGCAGATTAAAGAGGCCGAGAGCGCAGTTGCCGCCGCCCGCGCCTTGCTGGAGCAACGCCAGAGTGAAATGCGCGCCGCGCAGTCGGTCGTCAAACAGCGGGAAGCTGAGCTGGACTCCGTCTCT [...]
+NODE	637	2726	115869	113111	0	0
+GCAGCATTTGCGCATCGCCGCAGCGCAGCGCCGGGTTATCCGCAAACTGCGTGATAAGCGCCATCAATCGTAAGGCATGGCGGGAGAGCGTGGCATCATCGTAACGCTGTGCATTCGCCAGCAATTCAATATCCAGACCGCCGTTTTCATCCGGAAAAAGCGCCAGTTCAAGATCGTTAACCGGCCCCGTCGCCAGGGTATGGGTTTGCGCCTGTATGCCAGGAAGATCCAGATGATAATCAAACACTTTTATATTGAGCACCGGGCCAAATAGCGGCGTCTCCCCTGCGGCTCGCCCGCTATCGCGTACAATCTGTTCGGCGTCGTAACGCTGGTGACGGCGCATCTTCTTTAACTGCGCCGCAAGACGCTTCGCCAGCGTTGGCAGATCTTCCGTCGCATGAAGGTTAACCGCCAGCGGCAACACGTTAAGGACAGGCCCGGTCGCCGTTAACGCCGCCGAACCCATCCGCCGCATAAAGATAAATCCGG [...]
+CGGGTCACTTTTTGGTGGCGCGACCCGCAGGGAAACGAAACACACTCCCCGATACGGCGTGTCTGGGTCTACATCACTGGCGTAACCGATCATCATCAAAACGCGCAGCCTCAGACGATGGCGCGTATTGCCGGAACGGATGTCTGGCGCTGGAGTACGGCGCTTAGCGCTAACTGGCGCGGCAGCTACTGTTTTATTCCTACCGAACGCGATGACGTTTTTGCCGCTTTTGCGCCGGGCGAAACGCCCGATCGGAACGCACTGCGTGAAGGCTGGCGACAGCTATTACCGCAGGCGATTGCCGACCCGCTTAATTCGCAAAGCTGGCGGGGAGGACGTGGTCATGCGGTTTCAGCGCTGGAAATGCCGGATGCGCCCCTTCAGCCGGGGTGGGATCGTCCTGAAACGCCGTACTCGCCGCCTTTGATGATGCAGTGGCATAGCGAACGTCTGGATAACTCCCGCCGCGTATGGATATTGACGATCGGAGAC [...]
+NODE	638	9260	511456	501391	0	0
+TACGGCTATATTCAGGCGGTGAACTATCTTGTTCGTCAGTTTGCCCCGGATGTGGCTTTTGGCTGGCAGACGAATGTCTGGGCGACAGGAACGGCGGACTGGGTGCTGCGCGATACCGCTGATCCGGTAGCTGAAGGGCAGGCGATCGCCGGATTTATTCATGAACTGGGCGTTTACAGCGGAGAATATGCGCCGGACTTTATTGCGTTTGATAAATTTGAGCGTGACTGTTTCAGTCCTGATGCGCTTGCCCACTATGGCTGGAATGCGACATGCTGGCTTAATTACCTGGCGATGGTCAAACAGGTGACGAAAGTGCTGCTGACGCCCGCCATGCTGTGGCAAATCCCAGGCGGCCATATGCCTACAGTAGAAGAGGGCGTCAGTAAAATCAGCGCTGCGCACTTTGCATCCGGCGGAACCTTTTTTATGGGGGACGCCCGCATTGGCAGCGATCCTGACACGCTCTCTTTGCAGCTACTCAATACGGCC [...]
+CCAGTTGAACATACGCCTGTTGTTGCGCAATCTGCTGACGCTGATGCAACGTCTCGCTGGCGGCGACCAAAAATTCCGGATGTTCGGCCAAATACGTTGCCACCACCTCTCCCACTTTATCCGGATGACTGACGATGTAGGCTTCCGCCGTCGGGCCAATTTGCGACGTCGGGGCAGAATCGGCGGCGATTGCCGAGGCGGATACGGCAACGCCTGCCAACGTCAACATCGCCAGTCGGGAAAGTTTTAACGCGTGATAATACATAATAAAAGTCTCGTTCGATAAGATCGGAAAGCCTCCCGCTATCGGGAGACGCCTGAAAAATAGGTTAATGAATACGCGTCAGATCCACGGTTTGCGCTGGCATTACCCGCCCATAGTCATTAATACTTTGCCAGCGCACAGTGCAGCGAACCGTGTGCCGGCACCAGTCCGTTTGACGCGTTGCAAAGGGAGCCACGACCCCGGCGTTGTCCTGGGCGCGCTCGTTA [...]
+NODE	639	14155	825508	817811	0	0
+GTTCGCTCGCCGAGCTTAAAAATGCGCTGAAAGGCAAAGTGCAGGAGACGCTCTCGGCGGTGGCGGATGACGGCATCGAGCAGAGCGGGCTGCATATCTGGAGTTTCGGCGAGCTGCCGGAAAGCTACGAACAGAAACGCGGTAATTATAAAGTGAAGGCGTGGCCGGCGTTAGTGGATGAGCGTGACAGCGTCGCTATCAAATTGTTTGATAATCCGCTGGAACAACAACAGGCGATGTGGTGCGGTTTACGCCGTCTGCTGTTGCTCAATATTCCTTCACCGATTAAGTATCTGCATGAGAAATTGCCGAATAAAGCCAAGCTGGGGCTGTACTTTAACCCGTACGGCAAAGTACTGGAGTTGATTGATGACTGTATTGCCTGCGGGGTAGATAAACTGATAGATGCCAACGGCGGGCCGGTGTGGAGCGAAGCAGGTTTCACCGCGCTGCACGAAAAGGTACGCGCCGAGCTGAATGATACTGTGGTGG [...]
+AATAACCGCCAGCCCAATACCGCCTAAACCAAAAACGGCAACGGTGTCGCCCGCTTTCACTTTAGCGGTGTTATGGACGGCGCCAATACCCGTCGTCACGCCACAGCCCAACAGACACACTTTATCCAGCGGCGCCTGCGGGTTCACTTTCGCCAGAGAAATTTCCGCGCAAACGGTATATTCGCTGAACGTGCTGGTTCCCATATAGTGATAAACGGGTTCGCCGTTATAAGAAAAGCGGGTAGTGCCATCCGGCATCAGCCCTTTTCCCTGAGTGGCGCGTACGGCCTGACAAAGGTTAGTTTTACCGGACTTACAGAACTTACACTCGCCGCATTCCGCCGTATACAGTGGAATAACATGGTCGCCGGGTTTCAGGCTGGTGACCCCCTCGCCGACCTCAACTACCACGCCGCCGCCTTCGTGACCCAGGACTGCCGGGAATACGCCTTCCGGATCATCGCCGGAAAGGGTAAAAGCATCGGTATGGCA [...]
+NODE	640	51	2970	2928	0	0
+ACCTTCTTTAAGCGGCTGCCTGCGGATTACGGTCGGCACCCGCCAGGAAAA
+TTGTTTGTTCTGATCGCGTAAGATAATGCCCTGATCCCATAAGGATTTAAA
+NODE	641	21	1150	204	0	0
+GCCTTACGTGCGGAGCCAGTA
+TGCCGACCGTAATCCGCAGGC
+NODE	642	2820	132573	131485	0	0
+CAGGTATCAATCCCGACGACAATGCACTGTACGCCAAAACGGTCAGCCAGACGGGTAATCAGCGTTGGGTCAGCCAGCGCCGGGGAGTTGATAGAGATCTTATCCGCCCCGAAAGAAAGAATTTTGGCGGCGTCGTCAATTGACCGGATACCGCCCGCTACACAAAACGGAATGTCGATCACCTCGGCAACGCGCGCCACCCAGCTTTTATCGACTACGCGGCCATCGCTGGAGGCGGTAATGTCATAGAACACCAGTTCGTCCGCGCCTTCGTCGGCATAGCGTTTGGCCAGCGGAACGATATCGCCAATGATCTCATGGTTGCGAAACTGTACGCCTTTTACCACCTGACCATCACGAACATCCAGACACGGAATTATACGTTTTGCCAGCATTGGATGGCCTCCTTAACGGTAAATTTCCCTTCTAACAGCGCGCGCCCGACAATCACCCCGCGCACGCCGGTGCCGCGCAGGGCGGCAATATCATCGA [...]
+TGAGTCAGAAGTATCTTTTCATCGACCGGGACGGAACCTTAATTTCCGAACCGCCGAGCGATTTTCAGGTAGACCGCTTTGATAAACTGGCCTTTGAGCCAGAGGTGATTCCCGTATTGCTGAAGCTGCAAAAAGCCGGTTTTAAGCTGGTGATGATCACTAACCAGGATGGACTTGGCACGCAAAGCTTCCCGCAGGCGGACTTCGACGGACCGCACAACCTGATGATGCAGATTTTCACCTCTCAGGGCGTACGCTTTGATGAGGTGCTGATCTGCCCTCACCTGCCCGCAGACGATTGCGAGTGCCGCAAGCCCAAAGTGAAGCTGGTGGAGCGTTATCTTGCGGAACAAGCGATGGATAGCGCCAACAGCTATGTGATTGGCGATCGTGCGACCGATATCCAGCTCGCTGATAATATGGGCATTACTGGTTTACGCTATCACCGTGAAACGCTGAACTGGACGATGATTGGCGAACAGCTAACGAAAC [...]
+NODE	643	899	39165	38887	0	0
+CGCGTAACGGGGCATGTAGTTTATCGGGCGGTGATTGATTGCGACGATATGCCGGACGATTTACGTATTAACGCACCGGTGCTGTGGGCAGGCCCGCATTGTCACCTGGTCCATTATCCGCTCCGTGGAGGCCAACAGTACAATCTGGTGGTGACATTCCACAGCCGCCAGCAAGAAGAGTGGGGCGTGAAAGACGGCAGTAAAGAAGAGGTGCTCTCTTATTTTGCCGGTATTCATCCCCGCCCGCGTCAGATGTTGGATAAGCCGACCTCCTGGCGCCGCTGGTCGACCGCCGATCGCGAGCCGGTCGCGAAATGGGGAACCGAGCGTATCACTCTGGTGGGCGACGCCGCGCATCCGGTGGCGCAATATATGGCCCAGGGGGCCTGTATGGCGCTGGAAGACGCCGTCACGCTGGGCAAAGCGCTGGAACGCTGCGACGGCGACGCGCAGCAGGCATTTGCGCTGTATGAGTCGGTGCGTATTCCCCGC [...]
+GTAATCATTCACTTCGGTCAGCAGCTCGCGCACTAACGCGTCGAGCACGCCTTCCATCGGCGCCAGTAAAACACGCATATCGGTATCCACAGCAAAAAAAGAGGCGCTATCATAACGCCTCTCTGCGATGAGCAAAACTTTTTGCCGGGTGGCGGCGCAAACGCCACGCTACGTCACGTAAAGCGCTCAACGCGGCTCAAGACAGTTATCTTCTTTCCAGCCGTACAGCCATTCGATACCGCGATAAAACGCCTCCTGCGATTTTCCTTTCCACAACAGATTACGTACCTGACGCTCCACCCCGGCGGCGTGATAGAGACGCCCCATCTCGCGGGTAGACCAGACGATACGCGCCGTGCGGGGAATACGCACCGACTCATACAGCGCAAATGCCTGCTGCGCGTCGCCGTCGCAGCGTTCCAGCGCTTTGCCCAGCGTGACGGCGTCTTCCAGCGCCATACAGGCCCCCTGGGCCATATATTGCGCCACCGG [...]
+NODE	644	11761	688693	683999	0	0
+TAGCACGTTAATTATCTATCGTGTATATGGAGGGGAATGATGATAAAGAAAAAGGCTGCGTTTAGTGAATATCGTGATTTAGAGCAAAGTTACATGCAGCTAAATCACTGTCTTAAAAAATTTCACCAAATCCGGGCTAAGGTGAGTCAACAGCTTGCTGAAAGGGCAGAGAGCCCCAAAAAAAGCAGCGAGACAGAGAGTATTCTTCATAACCTATTTCCACAAGGCGTTGCCGGGGTTAACCAGGAGGCCGAGAAGGATTTAAAGAAAATAGTAAGTTTGTTTAAACAACTTGAAGTACGACTGAAACAACTTAATGCTCAAGCCCCGGTGGAGATACCGTCAGGAAAAACAAAAAGGTAAAGCATAATGTCTTCAGGAAACATCTTATGGGGAAGTCAAAACCCTATTGTGTTTAAAAATAGTTTCGGCGTTAGCAACACTGATACCGGGGGGCAGGATGACTTATCCCAGCAAAATCCGTTTGCCGAA [...]
+TTAAGGTGCCGAAAATAAGACGTAAATCTCTAATAGAAACCCGTTCTGATACAAGCCGTTGCAAAGTTTCAGCGATTTTATTAATGGGTAACTGGCGTTGAAGCTCTTTCACCAGCTCAGAGTAGTTTTTTTCCATCGCATTCATTAGATAACGCGTTTCCTGAACACCAATAAACTCTCCCATATGCCGAAGCAGGACACATTTTAATAAGGCAGAGATACGTTGGCTGCCCGCGAAAACGTCCAGTCCAAAACCTTGCGCCTTATGGGCCATCTCTTTTGTAAGCCAACAGATCTGCCCCATCCCGTTCGGTAACGTCTGGCTGTCACCCACCACACTAGCGTCCGCGCCTATCAATAAATAATCCGCCTGAGCGGGAATAGATAAACTAAATACGGGTTCCTGATATAGCAGTACCGTCAATTTTTCGGTGGGTTCAGGCAAAACCTCAATATTCACCTCAGGGAGAGGGACGCCGGTATCCTCAAATA [...]
+NODE	645	19594	1021317	1009869	0	0
+ACCAGCCGGTCGAGCAGGTGGCAAGCCTGCGCGTAACGCCGAACATGTCCACATGGCGTCCGTGCGATCAGGTGGAATCCGCGGTGGCGTGGAAATATGGCGTAGAGCGTCAGGATGGCCCAACCGCGCTGATTCTATCCCGTCAGAACCTGGCGCAGCAGGAACGTACTGAAGAGCAACTGGCGAATATCGCCCGCGGTGGTTACGTACTGAAAGATTGTGCGGGCCAGCCGCAGATTATCTTCATTGCGACCGGTTCTGAGGTTGAGCTGGCGGTTGCCGCTTACGAAAAACTGACTGCCGAAGGCGTGAAGGCGCGCGTGGTTTCCATGCCGTCCACCGACGCGTTCGACAAGCAGGATGCGGCCTACCGTGAATCCGTGCTGCCGAAAGCGGTCTCTGCGCGTGTGGCGATTGAAGCGGGTATCGCTGACTACTGGTTCAAATACGTCGGCCTGAACGGCGCTATTGTCGGGATGACCACCTTCGGTG [...]
+TTGACGCCTTGCCCTGCCAGCGGGTGGATGGTGTGCGCGGCATCGCCGACCAACGCCAGACGATGCGCGGCAAACTGGCGAGCATAGCGGCCCGTCAGCGGAAAAACCTGCCGTTCGCTTTCCAGGCGGCATAAGCCCAGCCGATTATCGAAGGCGATAGTCAACGCCTGGTTAAACGCCTCGTCGCCGCTCTGTTGCATACGCTCCGCATCCTGCGGAGAAAGCGACCAGACAATGGAACACAGATGCGGATCGCTTAACGGCAAAAACGCCAGAATACCTTCACCATGAAACACCTGGCGAGCAACCGCGCCGTGCGGCTCTTCGGTGCGGATAGTCGCTACCAGCGCATGGTGACGGTAGTCCCAGAAGGTTAAGGGGATATCCGCTTTGTTACGCAGCCAGGAGTTGGCGCCATCCGCGGCAATCACCAGACGCGCGGTTAACATCGCGCCGTCTTTTAAAGTCAGGAAGGCGTCGTTCTCTCCCCAG [...]
+NODE	646	4608	229460	227380	0	0
+GAAGAAACCATTACCGTAACCGCAGCGCCTGCCGCGCAGGAAAGTGCCTGGGGACCGGCTCCGACCATCGCCGCGAAGCGTTCCGCCACTACCACCAAAACTGATACACCTATCGAAAAAACGCCACAGTCGGTTTCGGTGGTCACTAACGAAGAGATGCAGATGCATCAATTCCAGTCAGTAAAAGAAGCGTTGGGTTACACACCAGGCGTAACGGTAAGCAGCCGCGGCGCTTCCAATACCTATGACTTCGTGATTATCCGTGGCTTCTCTTCCGTCGGCCTGAGCCAGAATAACTATCTGGATGGCCTGAAATTGCAGGGTAACTTCTACAACGATGCGGTTATTGATCCCTACATGCTTGAGCGTGTTGAGTTGATGCGTGGCCCAACGTCCGTTCTCTACGGTAAGAGCAACCCGGGCGGTATCATTTCTATGGTTAGCAAGCGGCCGACTACTGAGCCGCTGAAAGAAATTCAATTCAAAATGGGG [...]
+CAGATTACGCGCAACGCCGTCATCCAGCCCCATCAGCGTCATCGGACGTAGCAACAATAATGTGAGCATCACACCGCCCAGCAACTGCGGCCACAGACGCTGCACGCCGCTCCAGTCGGTTTGCGTCAGCGTTCCGGTGCTCCATAAAAACATGCTTTGCAACTGATCGTGGTGGAAAATCACCAGTAACTGGTTGATTGCGCCACAATAGAGGCTGACCACCAGCCCGGCGAGGATCAGGGTTACCGGCGACAGGCGTTTGCCCCACGCCACGCCGAACACCAGCGCGCCGACGATACAGGCTCCCGTCAAGGCGGCAAACTGCGTGGTCAGCGCGCCGGGAATCGCCCATAGCGTAGTCACCGTGATCCCCAATTGCGCGCCGGTCGCCACGCCCAGCGTGGTCGGTTCCGCCAGCGGGTTACGCAATACTTGCTGGAACAGGACGCCTACCAGCCCAAGTCCCGCGCCCACCAGTAGCGAAATCGCCAG [...]
+NODE	647	4959	290995	288823	0	0
+ATTGCAGGCGGAAACAATGGCGGCATTCTCTTCCAGCGCGCGAAATAGGGTCGCTTTATTACACTTTTCAGGATCGATAGACAGATTGATAAACGACGGCGCGGCATGGTACCAGCGTTTAAAACGCATAACGTCAGAGAAGATGGGCATCACACCGTACGCGCCGGGAGGAACCCGGCTGGCCATATCTTCCAGCAGGGAATACGCATCAATACCTAACCTTTCAGCGATTAGTTTTTCCTCGGCGCAAAAGGCGTCGCGGAACCAACGCATCGTTAACCCAGTAAAAAAGCTAATAGACTCGGTTTGTACCATACCGGGGATCACATGAGGATTGATGCGAACGTTCATGTTTGGGTCGGTGACCGGCGCGGGAAGATTGACGACCTGTTGCCAGAAGGTTCCGCCCAGCACGGCCGTTTGCGCCGGGCGTACGACGCCCAGCCCCAGACAGCCTAACTGCACATCGCCGCCGCCAACGATGACCGGCGT [...]
+GGGGATACGCAGCAGCACTAACACACTATCGATTTGCGTAAGAAAATAAGCGCCGAGAATAGCGCCGATGACCGTGCCTGACCCGCCTAACAGGCTAATTCCCCCCAATACGCAGGCCGCGATGGCTTTCATTTCCAGCCCCGTGCCGGTTTGATTGGGAATGAAGCCAATCTGCGAGGCAAACACGATTCCAGCCAATGCCGCCATACCGCCATTAAGTGAAAATGCCATGATGCGTACCATCTCGGTACGGACACCCAATTGCCGGGCACCCTGCAGGTTATCGCCGGTGGCGTAAAAATTGCGGCCAAAGGCGGTTTTCGCCAGGAGCCAGGCCATAAGCAGCGCTAACACCAGGGTAAACCAGCCGATTGCGGAAATTCCCAGAAACACAGGAGCAGAGAGTTGCTTTAAGCCTGCGGGTAATCCTTCAATCCATTTCCCCCCTGTCCATAGCAGCATGATCCCACGATACAAGCCCAGCGTTCCCAG [...]
+NODE	648	2706	129329	127733	0	0
+TTCGGCGGCTGCCGTTTATCGCTGGCAACGCCGGTTGACGAAGCCTGGGACGGCCCGGCGGCGCTGGACGGTAAACGTATCGCTACCTCTTATCCGCACCTCCTCAAACGCTACCTCGACCAGAAAGGCGTCTCTTTTAAATCGTGTCTGTTAAATGGTTCTGTCGAAGTCGCGCCGCGCGCGGGGCTGGCCGACGCTATCTGCGATTTGGTCTCTACCGGCGCGACGCTTGAAGCTAACGGCCTGCGTGAAGTCGAAGTTATCTACCGCTCTAAAGCCTGTCTGATTCAGCGCGACGGTGAGATGGCACAGAGCAAGCAACAGCTGATCGATAAATTGCTGACCCGTATTCAGGGCGTGATTCAGGCGCGCGAATCGAAATACATCATGATGCACGCGCCAAGTGAACGCCTGGAAGAGGTTATCGCCCTGCTGCCAGGCGCCGAAAGGCCGACAATTCTGCCGCTGGCGGGCGAGCAACAGCGCGTGGCG [...]
+GCTTTCGACAATGTGCGCAGGATAACCAGATGAGGATATTCAACCAGCCAGCCTGTCAGCGTGGCCTGCGGGCAAAACTCAATATAAGCTTCGTCGGCGACGACTATCGCTTTACCGCGTGTCAACTCCAGCAGCGTGCGCAGATCCTGCGGGTTGATAAGTTGCCCGGTGGGGTTATTGGGGCTACAAACGAATACCACTTTTGTTCCGTCAAGGTTGTCGGAAATCCCCTGTAGATCCAGCTGCCAGTTTTCAAGCGCGGGAACCGTCCGGCGCTCTACGCCAATGGTTTCGGCGCTGACGCTGTACATACCGTAAGTAGGCGGACAGTAGAGAATGGCGTCTTTCCCCGGTTCGCAGAAGGCGCGGATCACCAGCTCGATCCCTTCATCCGCGCCGCGGCTGACCAGCACCTGCTCCGGCTTTACGCCAGCATATTGCGCGTAGTTTTCAATCACGGCCTTTGGCTGGCATTCCGGGTAGCGGTTAAGC [...]
+NODE	649	99	4103	4044	0	0
+CGTCGCGCCGCTGGTCATCTTCATGGGCGTGGGCGCGATGACCGACTTTGGCCCGCTGCTGGCGAATCCGCGCACCCTGCTGCTCGGCGCGGCGGCGCA
+AAAGTCGGTCATCGCGCCCACGCCCATGAAGATGACCAGCGGCGCGACGCCGGAGCCAATCGCCACTTTATAGAACAGCGCCAGCACCCCCGGCGTGTA
+NODE	650	7904	406813	404007	0	0
+ATAATCGCCAGCGTCACCATCAGCCCTTTACGACGTCCGATTCTGTCAATATAGGCGCCAAGCACAATCGCGCCGACGGGGCGCATTAAAAAACCGGAGCCAAAGACGGCAAAGGTCAACATTAATGAGGCAAATTCGCTTTCCGCCGGAAAAAACGTTCTGGCGATATAGGTGGCGTAAAATCCGAACAAGAAAAAATCAAACTGTTCAAGAAAATTGCCGCTTGTCACGCGCAGTATTGCGCCGAACGTGCCGGCGCGCGATGTTGCAGGTGTGTGTTGTGCCATAGGGTTTGCTCTCCACTGTCTTTATTGTTTTATGGGTAAGATGTTGCGGGTCAGTTGCCTGTATCCCCCGCATGTTTTCCGCGTCGCTTCTCAACAGCCCATTTGAGTAAGGCCGCGCAGCGGAAAAATCCGTGGGCGAATTTTCCGTAGGGAAGGGTAAGAAAGAGCGCCATCACCACGCCTAAATGGAGCGCCAGCAGTATGC [...]
+CCATTGGGCGGATTATATTTAATACCGCCATCTTCCGGCGGGTTGTGCGACGGCGTAATGACAATACCATCAGCCAGCGGGCCGCCTTTTTTGTTATGGACCAGGATAGCATTTGACACCGCAGGCGTTGGCGTGAAGCCATTATTTTCCTGCACGATAACGTCTACGCCGTTTGCCGCCAGCACTTCCAGCACGGAAATGAAGGCCGGTTCCGAGAGCGCATGGGTGTCTTTCCCTACATAGCAGGGGCCGGTAATGCCATTTTTCGCCCGCTCTTCAGCAATCGCCTGGGCGATCGCCAGAATATGCGGTTCGTTGAAACTGTGACGACCTGCGCTGCCGCGATGGCCGGAAGTGCCAAATTTCACGGCATGTTCTGCATTCCCTGCCTCCGGTTTCAGTACATAATACTGCGCCGTCAGTTGGGCGACGTTAATCAAATCACTCTGTTGCGCGGGTTGTCCTGCGCGGTTGTGGATTGCCATTGCCTGG [...]
+NODE	651	94	4214	4214	0	0
+ACGTTTGACCATACGATGCAGCGTTACGCCCGTTTCGCTTTCGCCGTTAACCAGAACCCAGTTTAGCGGCGCACGGCCACGATAGGCAGGCAAT
+GCGAAAGCGAAACGGGCGTAACGCTGCATCGTATGGTCAAACGTGCCGACGCCGGAGAGATTGTCGCCAGTCAACGCGTCGCTATTGCGCAGGA
+NODE	652	1077	72049	71249	0	0
+GTCTTTATTCCAGCCGCCTTCAACCTGGTGTGCGGCAACCGCGCCGCCCCATAAAAAATCTTTTGGCAGGGTGAGTTTTCTCATTGTTGCATAATCTCAATTTATTTAGTCTGTTATCATTCATTCTGCACCAAATGGCATGTAAAGCGTACGCAAAATTCCAGGATGCTCGCGTGTCGGGACAAGAACACATTCAGATCGTAACATCCACTTCAAGGGGCCATATTCAGGGGATAACCACATGCAGCCAAACGACATTACTTTCTTTCAACGTTTCCAGAATGACATTCTGGCAGGGCGTAAAACCATCACTATTCGTGATGCCTCCGAGTCCCACTTTAAAGCAGGCGATGTGCTACGCGTGGGACGGTTCGAAGATGATGGCTATTTTTGCACAATCGAAGTGACAGGAACGTCAACTGTGACGCTGGATACGCTGAACGAAAAACATGCGCAACAGGAAAATATGTCGCTTGATGAGCTGAAACGGGT [...]
+AGCAGAAATGGCGTATAGGTTCCGGCAATGAGCAGATAGATAGCGCAGTGATCAAATTTCTTTAACCAGATTTTTGCCCGCTGATGAGGAATGGCATGATAAAGCGTTGAGGCAAGAAAAAGCAGGATCATGCTCCCGCCATATAAACTGTAGCTGGCGATAGCCGTCATACCCGCATTCGCCTCTACCGCCTGAACCAACAACAGCACCAGGCCGACAATACCAAATACCAATCCAATGCCGTGGCTAATACTGTTGGCGATTTCCTCAGCCAGCGAATATCCCTGCGTCATTAATGGTTTTTGCACCATAACTTACTCCGGAGAAACGTTCATAACGATGAACTGCGCCTCTAGCGTAACTGAGAATGGTTCCAGTGAACACATGTTAGCTAAAATAAATTCTCAAAATTAAATTTTGTTTATTATTCAATAAGTTAATTACAAAAACTCAACTAACACGCGTTCATATTTATCAAAGGCATTTAAAATC [...]
+NODE	653	4112	205646	204598	0	0
+CGCCCTCTGGCTGGTCGAAGAGGGCGGGTTATCCGCAGAACTCAGTCAGGCTGTATGGGCCGGTTTCCGGCGTCCGCGTGGAAATCTGGTGGCGCAGTCGCTGGCGGCGCACGGTAGCGACCCTTTAGCCGCGACGCTGGTCGGGCGTCGCGTAAGCCGTATCGCAGTGCACCCCGCCCGCCAGCGCGAAGGCATCGGTCAGCAGTTGATTGCCTGCGCGTGCATGCAGGCGGCGCAGTGTGATTATCTTTCCGTCAGCTTCGGCTATACGCCGGAGCTGTGGCGTTTCTGGCAACGCTGCGGCTTTGTACTGGTACGGATGGGCAACCATCGGGAGGCGAGCAGCGGTTGCTATACGGCGATGGCGTTATTGCCGCTGAGCGACGCGGGAAAACGGCTGGCGCAGCAGGAACACCGACGTTTGCGCCGCGATGCGGATATCCTGACGCAGTGGAACGGCGAGGCGATACCGCTGGCGGCGTTACGCGAACA [...]
+CCGCAACTGCAAATTGATATTGACCAACGAAAAGCGCAGGCGCTGGGCGTATCGATTGACGATATCAACGACACCCTGCAAACAGCCTGGGGATCGAGCTACGTCAACGACTTTATGGACCGGGGCCGCGTGAAGAAGGTCTATGTTCAGGCCGCAGCGAAATATCGTATGCTGCCGGATGATATTAATCTTTGGTATGTCCGTAACAAAGACGGCGGCATGGTCCCCTTCTCCGCCTTCGCCACCTCGCGCTGGGAAACCGGATCGCCGCGTCTGGAACGCTATAACGGCTATTCGGCGGTAGAAATTGTCGGAGAGGCCGCGCCGGGGGTCAGTACCGGGACGGCGATGGATGTCATGGAGTCGTTGGTGCATCAGCTACCGGGCGGTTTTGGCCTGGAATGGACAGCCATGTCTTACCAGGAACGGCTCTCCGGCGCGCAGGCGCCCGCGCTGTACGCTATTTCGCTATTAGTCGTCTTCCTGTGTCTG [...]
+NODE	654	4357	228381	224334	0	0
+AGAGATTGTCGTGGAAACGCTACAGCTTGAGCAGGCGGTTAAAGATGCCGATCTGGTGATTACCGGAGAAGGGCGGCTGGACAGCCAAAGTATTTGCGGCAAGACGCCGATTGGCGTCGCCAGAGTGGCGAAGCGGTATCATAAACCGGTTATCGCGCTCGCCGGTGGGCTGCAACACGATCATCACGTTGTGTATCAACAGGGTATCGATGCGGCGCTGTCGATTTTGTCGCATATCGTTACGTTGCCGGAAGCCTTACACGAGGCGGAATATAACCTGAGCCTGTCGGCGCGCAATGTGGCGGCGATATGGCGTCTGGCGCGGCAAGCCTGACGGCGCATTCCCTTTCCAGGCCGCACATCAGCGCGGCCTGAGGCTTTTACGCGTTTTCTTTCAGCCAGTTCAGCACCACATCATGGTGATTGCTGGTTTTAAAATCATTAAAGACGTGCTCAATCTTACCATCAGCGTCAATCAAAAAGCTGATGCGG [...]
+TCTTTGTCCATTTTGTCCAGCGTCTCTTTATCCCACAGGCGGCTGCCGTCCGGCGAAAACTCATCGCCCAGCACCACTTCGCCTTTATACAGGCCAAACTCCAGTTTGAAATCCACCAGGATAAGGCCCGCGTCATCAAACAGTTTTTTCAGTACGTCGTTGGCTTTGTAGGTTAGCTCTTTCATACGCGCCAGATTTTCCTGACTTACCCAACCGAACGTTTCACAGTAGGAACTATTCACCATCGGGTCGTGCAGCGCGTCGTTTTTCAGGAACAGATCGAATATCGGCGGGTTAAGCTCCATGCCTTCTTCCACGCCCAGACGCTTGACCAGCGACCCAGCCGCACGGTTGCGCACCACACATTCAACCGGCACCATCTCCAGCTTCTTCACCAGACACTCGGTATCAGACAGCAAACGTTCCATCTGGGTCGGGATGCCCGCCTCGGCCAGTTTGGTCATAATGAAATGGTTGAATTTGTTATTTACC [...]
+NODE	655	529	28165	28102	0	0
+AATTTTCTTGGCACTATGGGTGGCTTTTTAAATATTTGCGGCAACCTTTCGGGGATCGTTAGCCCAATTGTTATTGGGGTTATTCTCCAGCGCACGCAAAACTTCCAGTATGCCATGTGGTATATCGCAGGCGTCGCCGGACTGGGCTTATTAGCCTACATATTCCTGGTGGGCAAAATTGAAGTGATCCTGCCTGAAAAAAAGAATGCCGACACTGTGGATAAGAATGCCATTAACCCGGCAACTGCCAACAAATAATGAGGTCATTATCAAAATGGAAAAAATAACCTGTAACGCTTGTCTGGCCCATGCGGAAAAAGACGTACGCTTTGAATCACGTGAAATCGAGCACAGTGAACATGACGTCGTCGTGAAGGTCGCCTGCGGCGGCATCTGTGGCTCTGATATTCACTACTATCAGCATGGCCGCGCGGGGATGTCTGTCCTCAAGCATCCGATGGTGATTGGCCATGAGTTTGTTGGCGTGATCAG [...]
+CAAACTCATGGCCAATCACCATCGGATGCTTGAGGACAGACATCCCCGCGCGGCCATGCTGATAGTAGTGAATATCAGAGCCACAGATGCCGCCGCAGGCGACCTTCACGACGACGTCATGTTCACTGTGCTCGATTTCACGTGATTCAAAGCGTACGTCTTTTTCCGCATGGGCCAGACAAGCGTTACAGGTTATTTTTTCCATTTTGATAATGACCTCATTATTTGTTGGCAGTTGCCGGGTTAATGGCATTCTTATCCACAGTGTCGGCATTCTTTTTTTCAGGCAGGATCACTTCAATTTTGCCCACCAGGAATATGTAGGCTAATAAGCCCAGTCCGGCGACGCCTGCGATATACCACATGGCATACTGGAAGTTTTGCGTGCGCTGGAGAATAACCCCAATAACAATTGGGCTAACGATCCCCGAAAGGTTGCCGCAAATATTTAAAAAGCCACCCATAGTGCCAAGAAAATTACGGGGAATTACA [...]
+NODE	656	745	46331	46331	0	0
+GACGATAATAGGGAGAACAGCCTGTGCAGACAGGCATAGCCCTATTTTTCCCTTCTCTTTTCAGATTAATTTCTGCATCATGAATTGAAACCTTTTCTGACATTAAGGATGACAAACATGTCTGATATCGAAGCACAACGAATTGCCGCACGCATTGATACCGTGCTGGATATCCTTGTTGCTGGCGATTACCACTCGGCCATCAATAACCTTGAAATATTGAGAGCAGAGCTGTTAGATCAGGTTAAAGACGGTATCTCGCCATCCCAGGCTCCCGGGTCGCTCTGGGAAATCTGATAGCGATTATTTGTCCGGGATGGCCGTTAGCCCTTCCCGGCTCTCTGACTGTCTGTTGACTCCTCTTAACGAATAAAATTAATACTATGAACTCCCGACAACAATCAATTTTGCAAATGGTGGTTGATAAAGGCCAGATGAGCGTTGCTGAACTGGCGAAAATTACCGGCGTATCTGAAGTCACGATTCGTCAGG [...]
+CGTCCGGGCCAATAGCGCATTGCTGCTGCCATTTTCAATAAAAACGGATTCCCCTGGACTGACCAGCGAGGCGGCGAACTCCGCCAGTCGGCGTTTTAGCGTGTAGTTCGTCATCATGCGAGTCTCTACGTCATCGCTCTCAAGCGAAACGGCGAAACCGTGCGCACGGCGTAAATAGCTCTGCTTTTCCAGGGTATTCAGATCCTGACGAATCGTGACTTCAGATACGCCGGTAATTTTCGCCAGTTCAGCAACGCTCATCTGGCCTTTATCAACCACCATTTGCAAAATTGATTGTTGTCGGGAGTTCATAGTATTAATTTTATTCGTTAAGAGGAGTCAACAGACAGTCAGAGAGCCGGGAAGGGCTAACGGCCATCCCGGACAAATAATCGCTATCAGATTTCCCAGAGCGACCCGGGAGCCTGGGATGGCGAGATACCGTCTTTAACCTGATCTAACAGCTCTGCTCTCAATATTTCAAGGTTATTG [...]
+NODE	657	2727	138533	136732	0	0
+GAGCCGTCAGCGGCATTGTTACAGAGTCTGGTAACGAAGCTTGATGCGCCGGATATCTGCCCGTTGGAAGCGCTGGTTATTCGCGGGTTGCTGGGGCGGGCTGCGGCTGTCGCCACACCGTGTGAAGCTGTAGTCGCAGATGAAGAACCGGTGACGACGGTGACTTCGCCGAGTACGGAGGAATCTGGCGGCGGCTTTGGCCTCTGGCAGGTGATTAAAATCATTTTATTTATTGGCGTTGTCGGCCATGTATTACGCCAGTTTATGCATTAGGGATATCGAATATGGACAAGGAAGAACAATATTTACTTTTTGCGCTCTCCACGCCGATGGAGGTGCTATATATCGGCAATGAGCCTTCGCATACCTCTCCAGCAATGTATACCGGAATTCCTGCTGTCGATCTCTCCGATTCATGGGGGATTGATAACCGTGAAGATCTTATTCAAACCATCTATCGGATGACGGACGATGGTCATGCGGCAGATTTGG [...]
+CTGAAAATTTATCCCCGCGATATGCTGATTAACCGGACGTTTAAAGCACAGTTAGAGGAGCAGTGGTCACGCGCGTTAGGCGATGAGCGCGAAATGCTGGGGGAGATTATTACCGATTTCGACGCGGCGCTGCTGTCTAATGATATGCAGCGCGTCGATGACGTGCGCCGTCGCGCCTGCGAATATCTGGGTATTGACGAGCCGAAAGCGCCGTAACGGCGCTTTCACTGCCCCTGTTCAGAAAAAATGGAAGAATCGATTTAACGCGCAGACAATCAACGCGATCAAACCGACAATCTTCATGATTTTCATCACCCCGCCAGATTCCGCCTGACGGGGTGCTTCGGTTTTCGCTTCAGAAGACAATTTTTTCTCAGCCGCCAGCCTGAGCTCTTCCGCCAGCTCCTTTTTGTCGCGAATATCGCCTGGCTTCATGGCAATTTTAGATGACAATGCCTGCGTTATCAGCGCCTCCAGCGGACAGGATTGCCC [...]
+NODE	658	51	2214	2112	0	0
+ACCTCACTGACGACGCAGCAAATCGACGCCAGCCGCGAGCGCCTGCAGGCG
+TGGCATTGTGACTGATGATTCTGGATTCACTCTTGCCGTCTTCCAGCAGCA
+NODE	659	8010	485433	480893	0	0
+CGTCAAAGCGGCCGTTATTGTTATAGTTAGCCATACTCACCAGCCTTTGTAGCGTCGCTGACGGCATGGTCAGGTCGTCGAGGCTGCCTTTAAACTCCTGCTGCACATCCTGATACATGCTGCCGACCCAGACGTTTAGCTTGCCCGACGGCAGATGCATCTTATCTATACCCGGGGTGGTAAAACGGTAACCAACGCGAGGTGAGACGGTAAAGGCGTCGATGCTGCCATCAAGAATATCGAACTGTGTCTGGGTGTAGTTAGCATCAACAGCGGTAAACCAGTTACCTACGCCGCCGACCAGTGTGGTGCCGATGCCATAGGTAGTGCCTTTAAAGTCGAGTTTAAACTTGAGGTTTTGCAGATCAGCGGGATGAAAAACGTGGCCATTTTTCGTCATCAACCCAACACCAATTTGCGAAATGGAATGACCATCGGTATAGCCCACCAGGCCGTACACATTCATAAATGGCAGCAGCCAGGCATCCAGCT [...]
+CATGAGCCAGGCGCCACTACCGTGCCGGCGCGGAAATTCTTTGATATCTGCCGCGGCCTGCCGGAGGGCGCGGAGATTGCCGTTCAGTTGGAAGGCGATCGGATGCTGGTGCGTTCTGGCCGTAGCCGCTTCTCGCTGTCTACGCTGCCTGCCGCCGATTTCCCGAATCTTGACGACTGGCAAAGCGAAGTTGAATTTACGCTGCCGCAGGCCACGATGAAGCGCCTGATTGAAGCGACCCAGTTTTCGATGGCCCATCAGGATGTGCGCTACTACTTAAACGGTATGCTGTTTGAAACGGAAGGTAGCGAACTGCGCACTGTCGCGACCGACGGCCACCGCCTGGCGGTGTGCTCAATGCCGCTGGAAGCGTCTTTACCCAGCCATTCGGTGATTGTGCCGCGTAAAGGCGTGATTGAACTGATGCGTATGCTCGACGGTGGCGAAAACCCGCTGCGCGTGCAGATCGGCAGTAATAATATCCGCGCGCAC [...]
+NODE	660	8488	458709	453231	0	0
+ACGTTCGAGGACCTCCGCCAGTTGGATAGCCTGCGTCACCCGCCAGCACTCCGCCTGTTGCGCCGCGTTTAGCGCCGGTGGTATCTGCGTCCAGTTCCAGCTCGCGATGTCGTTATACCGCTGGGCCGCGCCGTGAATGGCGCGCTCTACGGTATAGCCGTCATTGTTGAGCAGCAGGATGACCGGCGCCTGCCCGTCGCGTAACATCGAGCCCATCTCCTGAATCGTGAGCTGCGCCGCGCCATCGCCGATAATCAGAATCACCCGCCGATCGGGACAGGCGGTTTGCGCGCCAAACGCGGCGGGCAAGGAATAGCCGATAGACCCCCACAGCGGCTGTACCACAACTTCCGCGCCGTCAGGAAGCGACAGCGCGGCAGCGCCAAAGGCGGCGGTCCCCTGGTCGACAAGGACAATATCGCCCGGTTTGAGATACTGCTGTAAGGTTTGCCAGAAGCTTTCCTGGGTCAGTTCTCCCTTATCAATCCGCAC [...]
+CATTCGAACCCTCGCTGAAAAGCGGGGGTTTTTGTTTTTTGTCACAAAATTTATGGCCTCTGATCTGCTCTTCAGGTGCGTTTGTTTGCCGCTGCTTTTGCGGTCAATATGAGCTTTTGTTAGATTGCTTCATAATGCGAATATACTTATTATTCATGCGCCTTATATAATGATGTGAGCATTAAAGCAATGCCGGATAAGTGTAACGTATTAAAAAATATAAAAATATTCTTACTGGCCTTCTGCCTGACCGTTCCGGCTATTCTGCTATCTCGTCTCATTTCTCCCCGCGCCACAATTGATTCCAGCTATATCTTTCTGGCCTGGCTACCGCTCTGCGTCATGTTTTCCGTGCTGTTCTTATTTGGCCGCCGTGGCGTCGCGCCGATGGTAGGCGGAATGATGTTGACTAATGAATGGAATTTTCATTTACCTCTGCCACAGGCGATGGTGCTGCTATTTTGCCAGACGTTTCCCGTGTTGCTGGTTTGC [...]
+NODE	661	4364	237306	233037	0	0
+TTCGGTAAAAACGCCGTGGTGCCGACAGGCTTCGGCTGGCTGGGAAATAAAGGGCAAATTAAAGAAGAGATGGGCACCCATCTTTGGATCACGGCGCGTATGCTGCACGTTTATTCCGTGGCGGCGTCGATGGGCCGACCGGGCGCTTATGATCTGGTCGATCACGGCATCAAAACCCTGAACGGCGCGCTGCGCGATAAAAAATACGGCGGCTGGTATGCCTGCGTTAACGATCAGGGCGTGGTGGATGCCTCTAAACAGGGTTATCAACACTTCTTCGCCCTGCTGGGCGCGGCCAGCGCCGTCACTACCGGGCATCCTGAAGCCAGAAAATTGCTGGATTACACCATAGAAGTGATTGAGAAATACTTCTGGAGTGAAGAAGAGCAGATGTGCCTGGAGTCCTGGGACGAAGCCTTTAGCAAAACCGAAGATTACCGTGGCGGTAACGCCAATATGCACGCCGTCGAAGCGTTCCTGATTGTTTATGAC [...]
+CCTGGTAAACCCAGCACATCGGTATAAAATTTGAGTAAATAGAGGGTTCCGATATCTAACAGGATATTAGAACCTAAATCCCCCAGTCCATAGGCAAGTTTTTCTTTAAACGGCAAGCGTAGGGTTGCCGGATTCGATGATGTTTGACTCATTATTCTTCTCCATCTGCCCGCAGGTTTCCCTGCGGGCGAGCCGTATTAGATATTCCGTAAAGAAGCAAAAAGTGAAGCCCACTCGCTCTTCGCGCGATAGAAGACCGGCGGCTTGCCAATGGGCGCATCCACGGTAATTTCACCGCCGTGGTGAGCTTCGCCGGTCCAGATATTCACCCAGTGATCTTCCGGCAGGTACAGCGTCCAGTCGCAACGCCCCTGCTCATGAACCGGCGCGACCAGCAGATCCTGACCGAGCAGATATTGATATTTCAGGGTGTAGGTTGCGGCATCGTTCTCGTAGTGCAGGAATAGCGGACGCATGACTGGCAGACCGGTA [...]
+NODE	662	3234	181511	178145	0	0
+AAAGCCGAGAAATCATCTACGCCTGTAGCGATAATGGCCAGCATACTGACGATAAATACCAGCGCGTAGGCAGAAAAGAATCCCCAGACGGCTTCCAGAATACGTTCTGGCAGCGCCCGGTTCCCCAGCTTAATACTGTAAACGGCATTCGGATGCACCAGACGTTTGAGTTCGCGGTTCCCCTGTTTAAACAACAACAGAATACGGATGACCTTTAACCCCCCGCCCGTTGACCCGGCGCAACCGCCAATAAACGCGGAACATAGCAGCAAGACGGGCAAAAACAGCGGCCAGCGCGCAATGCTGTCCGTGGTAAACCCTGCCGTTGTCGCCATCGACACAACCTGGAAGAATGCCTGATTTAGCGTTGTCAGCGCCGAGTCGTAGATATTATGGAACCACAGTACCAGCGTGCAGATCACCACCAGCGTCAACTGTACGCCGATGAACATGCGGAATTCCGGATCGCGCCAGTATACTTTCAGGCTACGC [...]
+TAAGCTGGATGCGTTACTTATTCACTCCGGCGAGCTATTCAACGTCTTTCTCGACGATCACCCTTATCCGTTTAAGGTCAATCCACAGTTTAAAGCGTGGGTGCCGGTAACTCAGGTTCCAAATTGCTGGCTGCTGGTCGATGGCGTCAACAAACCCAAATTGTGGTTTTATCTGCCGGTCGATTACTGGCATAACGTTGAACCGCTGCCAACGTCCTTCTGGACAGAAGAAGTCGAGGTCGTCGCCTTACCGAAAGCGGATGGCATCGGCAGCCAACTGCCTGCCGCGCGTGGCAATATCGGCTATATCGGCCCGGTTCCTGAGCGCGCGCTACAATTGGATATCGCCGCCAGCAACATCAACCCGAAAGGTGTTATCGACTATCTGCATTACTACCGCGCCTATAAAACGGATTATGAACTGGCCTGTATGCGCGAAGCGCAGAAAATGGCGGTGAGTGGTCATCGTGCGGCGGAAGAAGCCTTCCGTTC [...]
+NODE	663	5418	263898	262785	0	0
+ATATCTTATTTACAAAAACAACTACTCATAAATTGTACGGTTTTTATTGGTATTCACTCCCTATGGAAGCGTGTCGTTATGGAAGGGCGATATCATGGTTGATTTATCCCGTCGAAGCATGTTGACCGGCAGTTGGCGCAACGCCAGCAATGGGATTCTTCCGCCGTGGGCCAGAGAAACAACCTATTTTTTCGCACATTGTCTGCGTTGCGACGCCTGCATCCAGGCGTGTGAGGCCGACATCCTGCAGCGAGGGGCGGGGGGATATCCGAGCGTAGATTTCAAACGGGGCGAGTGCAGCTTTTGTTATGCCTGTGCGCAGGCCTGTACTGAATCGCTTTTTCTTCCGCGCCACACCAGGGCCTGGGATCTGATTTTTACGCTCACGGAAAACTGCCTCGCCAGGCAATCGGTTGAATGCCATCGTTGCCAGGACAGTTGTGAACCTATGGCCATTACCTTTCGTCCCACGCTATCCGGTATTTACCAGCC [...]
+GCAGGCAGAAATAACGACGCGGCGCGACGTTGCCCGACACTTTACCGTCGCTGTCCATAAAGTGCGTCGGACTGATACGCGGCGCGCCCGTCGTACGATAACTTTCCACACCGTGGCATTGCAGACAGCGGTTGGTATTGGTCGTCACCTGGTAGCCCTCGACGCTGTGCGGGATCATCGGCGGCTGGTTGACGTAATTTAGCGGCATACGTTCCTGCTCTTTCGGCATACGAATCGCCCCTTCCTGCGTCCCGGATACTTCCGGCGACTGGCTCAGATCCACTCCGTTTGCCGCCCAAACCGCACCACTTACCACCAGGGCAAGCGTGGCCATCCATTGACACAGCGCTTTCATCAGGTCATGGCTTTTCATTGTTTCGCTCCCGAACTCCATCGCATTTACACTTCATCCTTCGAGCTGCCTCTTTGTTGGCTGCGCTCCAAAATCCCAGTCACATCGTTATCTATGCTCCTGGGGATTTCCTCGCTTAC [...]
+NODE	664	3078	168122	165621	0	0
+GACAAAGAAATTTGTAAAAGCAAGAAAAGCCTCCGGCGTTAACTTCAGCAATAATCCACCGACATTTCACGAGATCCGAAGTCTGGCCGGGCGGCTGTACAAAAACGAGCACGGCGAGGTGTTCGCCCAAAAACTCCTGGGCCACACCTCAGAGAACACCACAAAACTCTATCTCGATGAACGCGGTAATAAAGCTTACGTGATGCTCTGATTTTGTTGTAAAAGAAATGTTAAACTGAATTTGGATGTGATATAACCAAAAAGACCGAAATACAGAAATTCGAGGAAATTTCGAGGAATTTCGAGGGGAAACACATAACCCATTGATTTATAATCTAAATAAAAAGAGACCGAATACGATTCCTGTATTCGGTCCAGGGAAATGGCTCTTGGGAGAGAGCCGTGCGCTAAAAGTTGGCATTAATGCAGGCTAAATCGCCTTGCCCTTTAAGAATAGATGACGACGCCAGGTTTTCCAGTTTGTGACGAAGG [...]
+ACAGGCGCCATGACTTTTGTGAAACATGAGCGGCGACGTTAGCCATGGGGCAAAAATAGCGATGCCTTTTACGAAGCGGCAGTTATGCTCAACAGGCATACCCACAATGATAGTCATATGGTGGGTATCGGCCGCATGAGTGAGCGGCTGTAAAAGCGCCTCGTCAGGCGGGGCGGGCAACGGTTTATTTCTTTCGTCGCAGCCTAATAGCGACAGCGACGGAAAGACCAGCAGTTCGCACTGTTGACGAGCCGCAAGCTCAATATATTCCAGATGATGGGCGACATGCTCCGCCGGCGAGGCGTTCAGGGGCGCATACTGCGCAGCAGCAATTTTCCAGGAGGACATAATGACTTCCTTTTCATAGTCTCTACAGCCATTCTAAAAAGCATAGGTTAAGAATCGCCTTATAATGTAGTCGTCTGCATGTAAGGAAGTGTAACGTTATATAATTTTTATTTAACTTTGGGTTCGTAAGGGAGTCGGGATAGT [...]
+NODE	665	1	161	157	0	0
+A
+T
+NODE	666	3050	184721	183505	0	0
+AGCATACCAAAGAATAACCCGCCGAGCGGACGAATCAGGAAGGGAACGGAAAAGGTGGCCAGCGCGGCAATCATCTGGACGCTGGGATCGGCGCCGGGGAAAAAGACTTTACCCAACGCGTAGGCAACAAATCCATAAACACCAAAATCAAACCACTCCATCGCGTTGCCCAGCGAGGCGGCGGTAATCGCTTTGCGAAGTTTACCATCATCAATGATGGTCACATCGCCCAGTGTAATCGGTTTTATTTTTTTCCTTTTCAGCATAGCTGTCCTCATAGGCTAAGCCCTGTAGCGCTATATACGGCGGGCACTGGCATACCGCGCCAGCGTCGCCGTCGAGCGGAGGGAGGGGCGCGAACGCTATCCCTCATACAAGCGTAGCAGGTTTACTTACACTGTCCGGTTACGGACTGTACAACCGAACCTGTTGACGCCTGAATGGGCAGTTAATGACCTTTTTACCCTAACAGGGTTTAAATATGTGATCAAC [...]
+GTCGTCATTCGGTGTGCTTAATCCAAGATGGTAACGTACTGAACCGGCATAGGGGTCGCGATGTTTTCCCAGATAGGCTCCGGGAGGCAACTCGGCGAACATCGCCGCTTTGATAGAGGGGATGCTGTTGACCAGCTTTGTCGTTATCGGGCATAACGTTTCCGCCGACGGGTGGGCATCGGAATACCATTTAAGGTAAAACCGTTTCCAGCCGCGCTTGAAAAAGGTATTGAATCCGGCGTCGTTATTGGCCTGCGCGGCTTTTATGTGATGCTGAAGCCGTAGCGCCTCTTCGCGAATCACCTGCCAGTTTTCCGTCAGCTTCTGCAGCTCTGGAAATGCCATGGTATCAAAGTACGGCTGCTTTGCCGGTAACGTTGAGAAGCGAGTCATGAACATATTGATCGGCGCCATAAACGTCGAGTGGTCAAAGAGCTGACGGGAAAGTTTTTGTTTTTCCACACCGCGTGAATGCGCATAAATGACGCTGAT [...]
+NODE	667	5968	329975	328264	0	0
+AAACGCGTGAGTGTACCATTTCCACGTAGCATTTTAATAGCTGCGATGCAGGTTCCAGGTCACTCGCGCGAACCTCATATTGTTGCATACTTTAGCTGAAGATGCATTCCAATACTGTATATTCAAACAGGTTAAATTGTGTCATAATTAGCCGTTTCTGCCGTTTGTCCTTCAAACAAACCAGGCATCCGAGTCTCTACCGGGAAAGGTGAATGGATAAGATCGAAGTTCGGGGCGCCCGCACCCATAATCTCAAAAATATTAACCTCGTCATCCCCCGCGACAAACTGATTGTCGTGACCGGGCTTTCGGGTTCAGGCAAATCCTCACTGGCTTTCGACACTCTGTATGCCGAAGGGCAGCGTCGTTACGTTGAATCGCTCTCCGCTTACGCGCGGCAGTTTTTGTCGCTCATGGAAAAACCGGATGTCGACCATATTGAGGGGCTATCACCCGCGATCTCAATTGAACAGAAATCGACATCGCACAACC [...]
+AGCAGCGCGGTATGTTCAGCTATACCGGGTTAAGCGAGGAGCAGGTCGAGCGGTTGCGCGATGAGTTTGGCGTTTACCTGATTGCCAGTGGCCGCATGTGTGTCGCCGGGCTTAATGCTTCAAATGTACACCGCGTGGCGAAGGCATTTGCCGCTGTCATGTAATATTCAGGCCGGACGGCGATAACATTGCCCTCCGGTCTGACAATAGCTGTTGTGATCATCCTCTTTTTTCGTAACAAAACCGCAGATAATCCTTCCTTTTGACCGTTACTGGCGTTATGGTCAGATAGTTTTTTGAGCAAAGACTCATCTTAATAACTATAATATTCTGAATTTTAAGGGAAAAGCATGAAAAAAATAACCCTGGCGCTGAGTGCCGTCTGTTTGTTGTTTACGCTAAACCATTCCGCGAATGCGTTAGTATCTTCCCCTTCGACGCTCAATCCGGGCACTAACGTTGCAAAACTCGCGGAACAAGCGCCTGTCCATT [...]
+NODE	668	2315	129177	127396	0	0
+CATTTAGCGCGTTGCTGGCGGTGATTGGCGCCGGGATTATTCGCTACGATCGCGTGACCGACCATTTTTGGGTCGGTTTGCTCCTGGTGCAGCTTTCTAATATCAGTTTCGCTATCGGAATGGTGGGGTATAAACGTCTGATGGAGACCCGTCCCATGCCGCAGCACAACGCCTTTGCGTGGTTCTATCTGGGGGCGTTTTTGGTGGCGGCGGTGGCGTGGTCGCTGTTGGGGAACGCGCAAAAGCTGCCGGAAACCACGCTGCAATGGAGCATTCTGGTGTTTCTCGGCGTGGTGGCGTCCGGCATTGGCTACTTTATGTGGAACTATGGCGCTACCCAGGTAGATGCCGGGACGCTGGGTATCATGAATAATATGCATGTTCCCGCAGGACTACTGGTTAATCTTGCCATCTGGCATCAGCAGCCCCACTGGCCAAGCTTTATTACAGGCGCGGCTGTGATCCTGGCTTCGCTGTGGGTGCATCGAAAAT [...]
+GGACCCACTCAACACCACGCTTCGCCAGTTCAGCCAGCACGTGCTGATACACCGGCAAAATGTCTTTCAGCAACGTCAGGCGGTCAAACGGCTCGCCTTTCACTTTACCCAGCCACAGATACGTGACAGGCCCCAGCAGTACGGGTTTGATCTTATGCCCCAGCGCCAGCGCTTCGTCCACTTCCTCCAGCAACTGGGTCCAGGTGAGTCTGAACTGCTGGCCTTTGCTGAACTCCGGTACTATGTAGTGATAGTTAGTATTAAACCATTTGGTCATTTCCGCTGCCGCCGCCGGTTCGCCGGTTGGCGCGCGACCGCGGCCAATGCGGAACAGAGTGTCGATGTCCACGGAACCGTCATTGTTCTGATGACGAGCCGGCACATTGCCTAACAGCAGGCTGGTGGTCAGAACATGGTCGTACCAGGCAAAGTCGCCTACCGGTAACAGGTCAATACCCGCTTGTTTCTGCTGTTCCCAGTGACGCGCGCGCA [...]
+NODE	669	686	39618	39245	0	0
+CGCTCCCGTTCATTGAGCGGAATACGCGTGGCAGGCAGCCCCAGACGCTGCATAAAACGGTGCGTATTTTCAGAGCTGCTGGAGAAGTAGACGAGCGCGCTCATGCGTTTGCCGCGTGGGGTGTCGGGTGCAGACGGTTAATCATGTCCGGGCGGAAGCCAGACCAGCTCAAATCGCCCGCCATCACCACCGGTAATTGACGAAATCCTTGCGCCCGGAGCGTATCCGCTGCATCCGGCACCAGATCGACGTTCACCATCTCAAATTCAAATCCACGGCTTTCCATCGCCCGCTTTGTGGCGTGGCACTGAACACAGTTATTGCGAGTGTAAATAGTAATGCTCATGATTCGTATTTCCATTTAAAATGAGAAAACGGCGCGATGAAACGCGTCGGATTGTCGGGTGTTGATACAGGAAATACTAGATGTAGTTGAATTAAGATTCAACCATACAAGATATGGGAATTTTCGATTGATTTTAACGTCGCTGA [...]
+GATCGGTATGCGAATGTGACGCATTGTTGCCGGATGGCGCTGATGTCAGCCAACTCTGTTATGCGTGAACCTGCAGGCCGGATCGGGCGTTCACGCCGCCATCCGGCAAAAATTAGCCATGCCGCCCCTACCCCGCTGCGTTCATCAGCGACGTTAAAATCAATCGAAAATTCCCATATCTTGTATGGTTGAATCTTAATTCAACTACATCTAGTATTTCCTGTATCAACACCCGACAATCCGACGCGTTTCATCGCGCCGTTTTCTCATTTTAAATGGAAATACGAATCATGAGCATTACTATTTACACTCGCAATAACTGTGTTCAGTGCCACGCCACAAAGCGGGCGATGGAAAGCCGTGGATTTGAATTTGAGATGGTGAACGTCGATCTGGTGCCGGATGCAGCGGATACGCTCCGGGCGCAAGGATTTCGTCAATTACCGGTGGTGATGGCGGGCGATTTGAGCTGGTCTGGCTTCCGCCCGGACA [...]
+NODE	670	648	31511	31333	0	0
+TAGGGGAGGTGGATGACGCTAAATTCAACGTGCTTGGCGGCTCAATCGCCTACGGGCATCCTTTTGCCGCAACGGGCGCGCGGATGATAACCCAAACGTTGCATGAGTTACGGCGTCGGGGTGGCGGTTTTGGCCTGGTCACGGCCTGCGCGGCTGGCGGTCTTGGCGCGGCGATGGTTCTGGAGGCGGAATAATGACTACCACATCAGCTTTTATGCTTAACGTGCGTCTGGATAATGTCGCGGTTGTCGCTATTGATGTCCCTGGAGAAAAGGTGAACACCCTGAAAGCGGAGTTTGCCGCGCAGGTACGCGCCATCCTGAAGCAGATCCGGGAAAACAAAGCGTTGCAGGGCGTTGTTTTTATCTCAGCCAAAGCAGATAACTTTATTGCTGGCGCTGATATCAACATGATAGGTCACTGCCAAAACGCGCAGGAAGCGGAAACGCTGGCGCGTCAGGGGCAACAACTGATGGCGGAGATCCAGGCGTT [...]
+AACGGTTTTAACGTCATCGGTACAGATGCGCCGATGGCAGGCCAGCGCCATTTCAAGGCCGCCCCCCAGACAGGCGCCATGAATGGCGGCGATAACCGGAACAGGCAACGCCTGGATCTCCGCCATCAGTTGTTGCCCCTGACGCGCCAGCGTTTCCGCTTCCTGCGCGTTTTGGCAGTGACCTATCATGTTGATATCAGCGCCAGCAATAAAGTTATCTGCTTTGGCTGAGATAAAAACAACGCCCTGCAACGCTTTGTTTTCCCGGATCTGCTTCAGGATGGCGCGTACCTGCGCGGCAAACTCCGCTTTCAGGGTGTTCACCTTTTCTCCAGGGACATCAATAGCGACAACCGCGACATTATCCAGACGCACGTTAAGCATAAAAGCTGATGTGGTAGTCATTATTCCGCCTCCAGAACCATCGCCGCGCCAAGACCGCCAGCCGCGCAGGCCGTGACCAGGCCAAAACCGCCACCCCGACGCCGTAAC [...]
+NODE	671	170	65719	46436	0	0
+GTGCAATGGCATAAGCCAGCTTGACTGCGAGCGTGACGGCGCGAGCAGGTGCGAAAGCAGGTCATAGTGATCCGGTGGTTCTGAATGGAAGGGCCATCGCTCAACGGATAAAAGGTACTCCGGGGATAACAGGCTGATACCGCCCAAGAGTTCATATCGACGGCGGTGTT
+GAGTACCTTTTATCCGTTGAGCGATGGCCCTTCCATTCAGAACCACCGGATCACTATGACCTGCTTTCGCACCTGCTCGCGCCGTCACGCTCGCAGTCAAGCTGGCTTATGCCATTGCACTAACCTCCTGATGTCCGACCAGGATTAGCCAACCTTCGTGCTCCTCCGTT
+NODE	672	48	20621	19731	0	0
+TGGCACCTCGATGTCGGCTCATCACATCCTGGGGCTGAAGTAGGTCCC
+CACCGCCGTCGATATGAACTCTTGGGCGGTATCAGCCTGTTATCCCCG
+NODE	673	225	97385	92700	0	0
+CGTCTTCAACGTTCCTTCAGGAGACTCTAAGTCTCAGGGAGAACTCATCTCGGGGCAAGTTTCGTGCTTAGATGCTTTCAGCACTTATCTCTTCCGCATTTAGCTACCGGGCAGTGCCATTGGCATGACAACCCGAACACCAGTGATGCGTCCACTCCGGTCCTCTCGTACTAGGAGCAGCCCCCCTCAGTTCTCCAGCGCCCACGGCAGATAGGGACCGAACTG
+CCTAGTACGAGAGGACCGGAGTGGACGCATCACTGGTGTTCGGGTTGTCATGCCAATGGCACTGCCCGGTAGCTAAATGCGGAAGAGATAAGTGCTGAAAGCATCTAAGCACGAAACTTGCCCCGAGATGAGTTCTCCCTGAGACTTAGAGTCTCCTGAAGGAACGTTGAAGACGACGACGTTGATAGGCCGGGTGTGTAAGCGCAGCGATGCGTTGAGCTAACC
+NODE	674	2047	120964	120002	0	0
+TCCACCGCGAAAAAACCTTTTGAAGGTAATCTGAATGCGGGCTACCTTGCTCAGTCAGGCAATACTAAAAGTTCTTCCTTAACGGCTGACACGGCGATGACCTGGTATGGACAACGTACCGCCTGGTCATTATGGGGCAATGCCAGCAATACCTCCTCTAATGATGAACGCTCTTCAGAAAAATATGCGGTAGGCGCGCGTAACCGTTTTAATATGACGGATTATGATTATACCTTTGGCCAGGCCAGTTGGCTGACAGACCGTTTCAACGGTTATCGTCAGCGCGACGTACTGACCGCCGGTTACGGGCGGCAGTTCCTTAATGGTCCAGTGCACAGCTTCCGTTTTGAATTCGGTCCAGGGGTTCGCTATGACGAACATACGGACGATACCACTGAAACGCAGCCGTTGGGTTATGCTTCCGGCAGCTATGCCTGGCAGTTAACTGACAATGCTAAGTTTACACAGGGGGTGTCAGTATTTGGCGCAGAA [...]
+TTAATAACAGATAAACATCGAAGCCATCATAGAAAATGAGCTCAAAAGAACACAACGTGATATTCATATTGATACCAAAAAACATCGTATTATATGCATAATCGTGAAGCCAATAATTTCTCGCACTCAGATAGCGAATGAAAAATGGATATTCAATAATATCTGGCGCATGTTTTTCAACACCATTTTTCAACATTAAGGCAACGTATCCTCTCAATGACTCGCTGCTGGCAGGAGTTTAGTTATATTTAAAGGTTTAATAAGCACTGCGCATCATGCTGCTGTGCTTATTACTTTGTAAAAATAAGAGTATTCACTTTCATATTCAGGGGTAAAAAGTGAACAAATACAGCTATTGCGCAACGATGATTGCCGCCATACTCAGTACGACCACAATGGCCAATGCCAGTAGCCTTGCTATTTCAGTGGCGAATGATGATGCAGGTATATTTCAACCATCCTTAAATGCCCTTTATGGGCACAAGGCTGCAG [...]
+NODE	675	1574	75226	74692	0	0
+CAGATCGAGATAAACGATACCCACCTGCGACTCGCCAGCCGAGGCAATAGCATGATTAATAAATTCATGGATAGCATTGCGATTGGGCAGGCCGGTGACGGTGTCTGTATTCGCCAGTATGCGTAAACGCTCCTGAGCCCGCCTCTCTTCGGTGATATCCGTGCCTGCGCAGATCAGGAAAATTTCGTTTTTTCCGCTACCGTTATGGACAAATTTATTACGAAATAAGAACAGGCGTTGGCCTTTACGGGTCTTTATCCAGCGTTCGATTTCATAGGCATTGCCATTGCGAAAAAAATTCTCAATGTAGTGCCGGGAGGCAACCGCCTCCCGGCGACTCATAAATAATTTAAAGACGCTTTGACCAATTACATCTCGCTCTTTTAAGCCCGTGTACTCTTCGCATAACCGATTAAATCGACAGATTTTTCCCCGACTATCCAGTATCGCAATGACTGAGTTGGCTTCTGATACGATTTGCTCGGCAAAAGA [...]
+ACTTCTCCCATCCGTAAGTATGGCGATATGATTAACCATCGCCTGCTGAAAGCGGTCATCAAGGGGGAAGCTATTGCGCGTCCGCAGGAAGATATCACCCAGCAAATGGCGGAACGCCGTCGCCTGAACCGCATGGCGGAGCGCGATGTCGGCGACTGGTTATATGCACGCTTCCTTAACGATAAGGCGGGGACAAGTACCCGTTTCGCGGCAGAAATTATTGACGTCAGCCGCGGAGGTATGCGTGTGCGACTGGTCGATAACGGCGCTATCGCCTTTATCCCAGCTCCGTTCCTGCACGCCGTTCGCGATGAACTGGTATGCAGCCAGGAAAACGGTACGGTACAGATTAAAGGTGAGACGGTTTATAAAGTGACGGATGTCATTGATATCACTATTGCGGAAGTTCGCATGGAAACCCGCAGCATTATTGCCCGACCGGCAGCGTAACCACGCTTAGCTCGCTCAACGGCCTTTGCTGAGAAGGCAAAG [...]
+NODE	676	4822	268616	263088	0	0
+TAGTTCCTGGAGCCGTAAACAGCCCTGTAATGCCTGTTGACCGTCACTGAGCGTCGTGAGTTGAAAATCAACGTTTCGCGCGCCGATTTCTGTTTTATTGATATTGATAGTGACGTAATAGGTGCCTGGCAGCTGGCTTTTGTCGTTATCAAATGTCGACAGATCGACGCTTGTGCGACTCGCCTGCCCATGGTTTTCAATAAATGCCGGATTGAAATAGTCGCGCGCCCATGCAACGTGTGCGAACGTGCTGCCCAGCGCGATACACACAGCGCAGCGCGATAAATAAAATACCCGGTGTTGCCTTTTGCGCATCGGCACTCTCATCCCTGTCACTCTTCTCAAGGCGTTTGTTTATGTTCGGGGCCAGTACCGCCAAAATCGTTGATGATAGACCAGATAATCGGGCCGCTGGCGGCGGCAGGCAGCGTGTACTGCGCGTTGCCGAAAGGCGCCACATAGCGCGGGGCTTTCACTTTTTGACTGCCAACG [...]
+TGATGAAGCTATCCCCTTATCTGGCCGCACTGTTATTGTTGAGCGCATCCGGCGCAGCCTATGGTGCTATGGAATGTAAATTTTACAATGGCGATACACGACAGATAATGTCGCCAGGCGTTCAGCCAATCATTACCTTTCACCCCTCGGTGCAAACCGCCACGCTGCTGGCTAGCGGTATTACGATGGAATTAACGCCGGAAATGCATAGCCACTGTGCAGTGGGGGATGATGGAGAGAACATTTACCAGATGACGGACAACACCTTACTTGAAGGGTATGTCGACGGTAAGGCGTTGTTTCGCACTAATATACCCGGCATTACGTATGCCATTGGGTTATACCCCGCAGGGAAAGGCATTACCGGATGGTTTCCCGTCAATTCCGGTCAATATTATATGACCGCTTATGCTGACGACAACGAAGGCTATTTCAAGAATGAAAAAAAATGGTACGCCGTGATGGAAATCTACCAGATGCCCGGCTTTAATG [...]
+NODE	677	2805	150327	148499	0	0
+AGTATTAACCAAACATTATTGCCTCATTGTCAGTCTCTTACAGAAAGATTACACGATTATTTCATCGGCAGGAGACTAAAAAAGATAATCATTAGCTACTGCGGGAATTAATGGTGAAACTACCCATAAGTCATTGAATATTCAACATATAAAAGGTTAAAATGGAGTAATTAACGTATCCTCTCTCCCATCACTAAAACGGCATTATTTATGCAAAATTTTGTGCGGCATACTTACGCGAGTAACGCTGACTCGTTTTAATTTTTGTCATTACCCTATTGCGTCAAGGCTATTGGTACCATTAACAGGCGATTTCATATATGGCCAGTTAGTGATTACTAGAGACGTATTACGCCCGCGTTAACGGCGCTCAAGGGCTAAAAATAGTTTGAGAGTGCGTCCTCATTTACCTGAACATCTTCAGTCAATCGGTCCGGGACTTATCAGAGGACCAGGCAGGCGTATAACGCCGCCTGGTAAAATATGTCCGAT [...]
+CCGGGCGGCGCCAGGCGGCAGTGATGGCGGCGCGAGAGACGGATTGGGGAAGAATCTGTTCGGCAAACTCCAGAAAGGGCTGATGCGGCTCATCCTGCGGCGCGACCGGCTCCTCGCTTTCATTTGCCGCGCCGGCAAACAGCGCAGGTAGCTCCGGTAGCGTATCGCTATTTTCCAGCTTGTCCAGATAGCTAAAGATTGCCTGTTTTATTAACCAGTGCGGCGTGCGATCGATACGCGACGCGGCCATTTTGATCCGTTCGCGCGTGGCGTCGTCCAGCTTAACCCCCATCGTGGTGGTTCCCATACCCTCTACTCCTGTTATTCGCTCTATCTGCTAACCAATAGTTAGTGGAAAATATCCACTATGTTGCAACTTTGTGCAACCGCGTTAAATGTGACCTGCGTTGCAAGCTTAAAAATGAATAAATTGTTAAAAAAAGAAAGGGGGAGTCTGACGGGGAAAACCATCTGGATTTATTTTCTCTGCGG [...]
+NODE	678	4786	249353	247146	0	0
+GCGGCGGGTCGGCAAGATCCGCTGACCAAACGCGAGCGTCAGGTGGCGGAAAAACTCGCCCAGGGTATGGCGGTAAAAGAGATTGCCGCCGAGCTGGGGCTGTCGCCAAAAACGGTGCATGTCCATCGCGCGAATCTGCTGGAAAAATTAGGCGTCAGCAATGACGTTGAACTGGCGCATCGCATGTTTGATGGTTGGTAATGAACACCTTTTTTTCCCGTTTAATCACCGTTGTTGCCTGCTTTTTTATTTTCTCCGCCGCGTGGTTCTGCCTGTGGAGCATCAGCCTGCATCTGGTAGAGCGCCCGGAGCTGGCGGCGCTACTCTTTCCCTTCGGCCTGCGCCTGGGACTTATGCTGCAATGCCCGCGCGGATACTGGCCAGTATTGCTGGGCGCGGAGTGGCTGCTGGTGTACTGGTTGGCGCAGGAAGTTGCGCTGGCCCATCTGCCGCTTTTGATGATCGGTGGTGTGTTGACGCTACTGCCCGTGG [...]
+CATAACGGTAAATTTATAACTGTCGACGTTCTGGCCTGTCAGGATGTGATTTATTAACGCCTGTCTTCATTTACGCAAGACGCCGGATATCCTGTCTGACGAACGCAAGGCATAAAAAAGCCCGGCGTTAAGCCGGGCAAAACGTTACCAAATGCACACATTTAAGCGATATTGACTTGCTGAATTTTTTTCTCACGGCGGATTTTGCGCTCTTCCATCACGGCGACCATCGCCATCAGGCAGATACAGCCGATCGCGGCGGCGTCCAGCGCGGCGAAGGTGCCCGCCCAGCCGGTCAGACCAAAAACGGGGGTGCCGTCGGCAATCATGCCCAGACCCAGCTTGGCAAAGCTATCGCCGATAAGATAAGCGAAGGTTCCCTTGATACCGTCCGCAGCGCCGATGGCTTTTTTCGGTACGAAACCGACAGCCGCCACGCCAATTAACAGCTGCGGCCCAAACACCAGGAAACCGAGCGCGAACAGCGAGGCC [...]
+NODE	679	5859	303362	300651	0	0
+ACGCTTTCTTACTGCCATAAAAACGAAGCGAGAGCGCCGGACAGCTTTCCGTGAAACCGTTATCTTCGCCGGCAACCATAAATTCGCGCGCGTGCTCGCTTGTGGCGGCCAGCGTATCATTGAAAAACCGCAGCACGGTGTGGTTATGGTGAGGGATATCCGATCCCAGGACGTGAATCAGTACAGTCATGCTCGCCTACGCCAGAGTAAAAATACGCCGCAACAAAGTGAAAAATAGACAATATAAGTGGCCATATAAGCCTGTGCCGCACCCAGCGCGCCGTGAGCGGGAATCAGCCAGTGAGCGAACGCCGTTAACAGAATGAACTGGCTAATTTCAGCCAGAATGTAAAATCGCAACGACGCTTTGGCAATCACCAGATAACCGAAAACATAGGCGCCGACTTTCAGCACGTCGCCCACTAACTGCCAGGCGAACAGATCGCGCATCGCGGTGAATTTGGCGGAAAAAAGCAGCCAGATAGCAAAATC [...]
+TTTACGACCATTTCTGTTATTGGGCTGGGGTATATCGGATTACCGACTGCGGCCGCTTTTGCTTCCCGCCAGAAGCAGGTTATCGGCGTGGATATCAACCAACATGCGGTAGACACCATAAATCGCGGTGAAATTCACATCGTGGAGCCGGCGTTGGGCAATGTGGTGAAGATGGCGGTGGAAGGCGGCTTTCTGCGTGCGACGACGACACCTGTCGAGGCCGATGCGTACCTGATTGCCGTGCCGACGCCATTCAAAGGCGATCACGACCCTGACATGGCCTATGTGGAAGCCGCGGCGAAATCCATTGCGCCGGTATTAAAAAAAGGGGCACTGGTGATTCTGGAATCAACATCGCCGGTCGGCGCAACGGAGCAAATGGCCGGCTGGCTGGCCGGGATGCGCCCGGATCTGACCTTTCCCCAGCAGGCGGGCGAGCAGGCCGACGTGAATATCGCCTATTGTCCGGAGCGTGTGCTGCCGGGTCAGGTG [...]
+NODE	680	15902	753905	741919	0	0
+GCTTTACCAACAGCGCAGTGGTTGAAACGGTTGACACGCCGGTCGTCGTCGACGAACCACGCCCGGTTGAAAACGTTGAACAGCCCGTTCCAGCGCCGCGTACCGAGCTGGCGAAAGTTGATTTACCTGTCGTTGCCGATATCACGCCGGAGCAGGATGATAGCGTAGAACCTCGCGATAATACCGGTATGCCGCGTCGCTCCCGCCGTTCTCCGCGCCACCTGCGCGTAAGCGGTCAGCGTCGCCGTCGCTATCGTGACGAGCGCTACCCGACACAATCGCCGATGCCGTTAACCGTCGCCTGCGCGTCGCCGGAAATGGCGTCCGGTAAAGTCTGGATCCGCTACCCGATTGTCCGTCCTCAGGAAACGCAGGTTGTTGACGAGCAGCGTGAAGCAGATTTGGCGCTGCCACAACCGGTTGTCGCTGAACAGCAGGTTATCGCTGCGACCGTAGCGCTAGAACCACAAGCGTCGGTACAGGCGGTAGAAA [...]
+CACGCTGGAACGGCTTGCCAGCCGTGAGGACGGCCCATATGTCGTCCGTCTGGCGCGTGAACCGGGTAAGCGCGAAAGCCGTTATATGCACCTTTTTTGCGGCGACGTCGATGAACTGTCTCTCCAGACGTCTGCGCCGGAAAGTGCGTCGGGCGATCTTCAGTCGCGCGTCGAAGCGCTGGAAAGCGAAGTGGCGGAGTTAAAGCAGCGGCTGGATTCTTTGTTAGCTCACCTGGGAGAGTAATGTGAGAACATTACGGATTGGCATTGTCGGGTTAGGGGGTATTGCGCAGAAGGCCTGGCTGCCGGTATTAACCAACACCGCCGGATGGACGCTACAGGGCGCCTGGTCTCCTTCGCGGGATAAAGCCTTACGTATCTGCGAAAGCTGGCGCATACCGTATATGGATTCGCTGGCGAATTTAGCGTCCGGCTGCGATGCGGTCTTCGTCCACTCCAGTACCGCAAGCCATTATGCCGTGGTCAGCGAAC [...]
+NODE	681	5366	265611	262675	0	0
+GAAAGACTATCAGAACAAGTAAGGATCGTACCGGAACGTCTTATTCGGCCTGACTGCTTTACGGCATCAGGCCGAATAAATCAGATATATTTCGCCGTCAGGTATTTGGCAGCAAATACGCCTGCTCAACCAGACTATTTTTAAATTGCTTACGATAATCGTTGGGAGAACATCCTACATGCCGCATAAACAATTTGGCAAAATGGTCCACATTTTCATATCCTACCCGCCATGAAATTTCTGCCAGTGGCGACTCAGTGTTTGTCAGCGCAAACTTGGCCTCGGTCATACGTCGTTGAATAACATAGTTGATAGGGGATATATGATATTCCTTGGCAAATTCATGGCATATATAACTGACGCTGGCGCGAAATTTTTTCGATAGCTGGTCAAGCGTGATTTTTTCACGATAATTATTATTGAGATAAACAAGCACATCCTTAATTAATACATCTTTTTTAATGTAGCCTTGTTCAGAACGATAGGCATTTT [...]
+ATAAGATCGACCGGACGATTGTGTTTGAACACGGTGGGGGCGAAGAATATTTTAGCCTGACATTTGTTCAGCACCCAAACCAGCTCTGCTTCTCGCCAGGCGGGAAGTAGCGGGACAGATACCGCGCCCGTTTTCAGGCAGGCCAGATAAATGAGGGTAAACTCACACCAGCCCGGAAGCTGAAAGGCCACGCGATCGCCCGGTTGAATCCCCTGAGACAGTAACCAGTTTGCCAGGCGGCTTGCCGCGCAGTCGAGTGCGGCGTAGGTCCAGGACGCGCCATGATTATCGACCACGGCGATTTTATCGGGTACGGCGTGTGCGGTTTGCCGCCAGTAGTCGCCCAGTGAAGCATCGCCCCAGTAGCCGGACTCGCGATAGGTTTTCCGCCTTGCGGCGTCAAACGTTAATGTAACACTCATTGACTTGTTCTCTATTAATACAAATGACGTAATCTCCGGGGGCAAGCCGAATAAGACGCCGTAGCGTCGT [...]
+NODE	682	6136	317036	312798	0	0
+TTGGGGAAAATAACCGTTTCGTTTCAACCTGGTTGCGAACAGTGAATATTTTACACGAAGTGACTATATATAAACGGGAGGGAACATGGAGTTTGATGCCTTCTTTTTAGCGAGACTCCAGTTTGCCTTTACCGTCTCTTTTCATATTATTTTCCCCGCGATTACGATTGGCTTAGCTAGTTACCTGGTGGTACTGGAAGGTTTATGGCTAAAAACGCGTAATCCTGTCTGGCGCTCGCTCTATCAGTTCTGGCTCAAAATTTTTGCCGTCAACTTCGGGATGGGCGTGGTCTCCGGTCTGGTCATGGCTTACCAGTTCGGAACGAACTGGAGCGGTTTCTCCCAGTTCGCCGGCAGTATCACCGGGCCTTTATTAACCTATGAAGTGCTCACCGCATTCTTCCTGGAAGCGGGATTCTTAGGCGTGATGCTTTTTGGCTGGAACAAAGTCGGGCCGGGCCTGCATTTCTTGTCTACCTGTATGGTGGCGTT [...]
+ACGCCCATGACACGCTGCCTACAATGCTACGCTCGGCGCCAAAATAACAATAAGAGAGCGAATTACAGGCAGCGACATAGCGTTTGTCCGTCAGGTTATTTACGTTGAGCTGGGCGCTCAAGCCATTTAACCCAATGCTGGATAAATCATACCCAACCACCATGTCGACCAGTGTATAGGACGGCAAGGTGTGGGTATTCAGGCGATCGCTGGTCACGCCGTTGACGTACCGGATGCCGGAGCCCAAAGTCAGCCCCTCTAACAGACCGCTTTTCACATCGTAGCTTAGCCAGGCGCTGGCCTGGTTCCGTGGAGCATAAACCGCGCGCTTACCCTGCTCTTGCGGGCTACTTTTCTTATAACGGATATCAGTATAGGTATACGCCGCCTGCAAACGGACGCTATCCGACAAATGGCTAATGGCCTCCAGTTCCACCCCTTTAGACTCAATTTCACCAATCGAGCGGTACGGATCGGTAGGTTCTTCTTTGG [...]
+NODE	683	9656	719175	716158	0	0
+ATCCCTTTCAAAAAAGAGAAGCGCATATCTTACGGAAAAATGTCGCTTATCGCCTCTGGCCGACTCGCCTCGGCACATCATTATCCAGCCGAAGTTCATAAATGTACTGCAATAACACGGATTGTCTTAAATATGAAAGAGAAAACTCATCTGCAAAATATATAATTTATAGCCATTTTTTGACAACAAAAAGATATTATAAAATAACGTTAGAGAATGGTCGGTATTATCAATAGTTAATTAAATGTTTGCTTTAGCTTGTGATGAGCTCAAATATGATATGTGCATCTTGCTTTATTTTTAATTGCTGAAGATAAAGTTGTTACTTATAGCTGGCTTTATATAAAAAATGGTTTTATTTGTGTGTGTTTTTACGCAATTCTGATTTTTTACTCCCCACTTATTATATTTTTAATGATTTAAGTTATATTGAAGTCCCTATGACCCTATGTTTTAATTGTGAAAATTAATTTTATCCTCTGGAGGCAAATT [...]
+CTGCAGGGCAAATGTCGGCTGGGTGCGATTCGTCATGTTATCGCCCTGGACACCGGTATCGTCCGCGCTATTCAGTACGATGACCGGCACTGACAGCGTGGTATCCACCGCGAAATCGATGGTCTTCGTCACGGTATTGCCTGCTTTATCAGTCGCCTCCACCGTTAGCGTGTATTGACCATCTGCCAGGTCTGTCGGCCAGATATACTCCCAGCTTCCTGCCACGCCCGGAGTTGCCTGAACCCACGAATTACCACCGTCAATGCTCAGACGGACTTCATTGACATCCGTAGGTACCGTCACACGAAAGTGGGGACGGTCGTCGTTGGTCATATTATCGCCTTTCACGCCGCTATCGTTGACCAGTTCCACCCCATCAATGGCGATTTGGGTATCGATAACGACCGTCAGCGGTGCTGAGTAGTTGGTATTTCCTGCCTTATCTTCTACTTTCACCGTTAACGTGTAGCTGCCATCCGCCCACGTATTCCC [...]
+NODE	684	886	148213	146795	0	0
+ACACCTAATTTTACGGTCAAAAATCCGGTTAATGGTCATGCACACCTGTTTTATGGGTTAAAAACGGCGGTTCGTGTTGCCAAAGACGGTAGCATTAAGGCGATCGAGTTTGCTGCTGCTGTAGAGCGAGGATTACGTGACAAACTTAAATCAGATACCGGCTATGCAGGGCTGATTTGTAAAAATCCTCTCCATACATACTGGCAGGTTGTTGAATGGCGTGGAGAACTTTATGAGTTAGCTGAACTGGCTGATTATGTTGATTTGTACGCGCCAACAGCGGCTAACGATGAACAGGCATTCGATATCGACTTTAGTTATGGGCTTGGGCGAAATTGTTGGCTCTTCAATCTGACCCGTATCTGGTCATATACAGCAATCCGGCAGGGCTGGCCTGATTTCCCGCAATGGAAAGAAGCGGTAATTCAGCGTGTCGAAATGTATAACGTGCAGTTAAGCGTGCCTTTGTCTCACAAAGAATGTGTATGCATT [...]
+CTGAAAATCGGAAGATCACTAAAGGCAAAGGAGCTGTCTGCAAGGATCAAGATCCGGTGCTGTTATCTGATATAGGTTGTTTATTTGGTCTCATTTGCCCTACGTCGATAATAGGTTGCCCGACTGATCCCTAACTCTACCCACGGTTTCAAACTCCGCGCAGAATCCTCAACAATCCCTCTTTTAGATATTTTCCCACCTTTACGCCCCTTAGCTGCCTGCACTTCTGAGCGATTCTTACGCCCTCTACGAGCCTGAATTTCTGATGTATGGGTATCAGCCACATATTGCTCAAATCCAGCTTCAGTGAAGCGTTTATGCGTCCATTTGGCGATGCTGGAGCCAATGCATACACATTCTTTGTGAGACAAAGGCACGCTTAACTGCACGTTATACATTTCGACACGCTGAATTACCGCTTCTTTCCATTGCGGGAAATCAGGCCAGCCCTGCCGGATTGCTGTATATGACCAGATACGGGTCAGATTGAAG [...]
+NODE	685	585	40041	39719	0	0
+TGTTTTCGCTGATACCCAGCGAAGTAGGCGATGCCCTCCTGATACGTGCGCAAGCGCTGGCTGTCGCAGAAGACAAATCCTGCGAACTGGAGTGTCATGCGATGCTGATTTCTTATGTGAATAACCGCTATCTGGAAAAGGTGTATCAGCAGTTCCTGGACGGTTATGTCTCTTATGTTATTTTGCATCTGAAAAAAGATAATCAGGAGTCGGCGCAGCTTTTCGCTGAACTGGCTGACGTCATACGCCAGGGGCGGCGTGATGAGATTGGGCAAGTTATGCAGCGTTATTTCCTCTCTTTAGCAGAAATAATGCGTCAACATATGAAGGATTGGGAAAGTGCAGAAGCCTAAGTTAGGGAAGATTAAGCTTCTTTCAGCGAAAGAACAGGTCGCGGCGGTGCTGCGTAAAGCGATTCTTTCGAGGGAGTTAGTGGAAGGGCAGGAGATTACGTTAGAAGGCATTGCCGGAATGGTCGGCGTGTCCAGTATG [...]
+TCAGCCCATCCGCCGCCAGAATCTGAAACGCCTCGCGCACTGGCATACTGGACACGCCGACCATTCCGGCAATGCCTTCTAACGTAATCTCCTGCCCTTCCACTAACTCCCTCGAAAGAATCGCTTTACGCAGCACCGCCGCGACCTGTTCTTTCGCTGAAAGAAGCTTAATCTTCCCTAACTTAGGCTTCTGCACTTTCCCAATCCTTCATATGTTGACGCATTATTTCTGCTAAAGAGAGGAAATAACGCTGCATAACTTGCCCAATCTCATCACGCCGCCCCTGGCGTATGACGTCAGCCAGTTCAGCGAAAAGCTGCGCCGACTCCTGATTATCTTTTTTCAGATGCAAAATAACATAAGAGACATAACCGTCCAGGAACTGCTGATACACCTTTTCCAGATAGCGGTTATTCACATAAGAAATCAGCATCGCATGACACTCCAGTTCGCAGGATTTGTCTTCTGCGACAGCCAGCGCTTGCGCACGT [...]
+NODE	686	2	371	360	0	0
+TA
+AC
+NODE	687	3356	190283	186529	0	0
+CTGCGCCGCCTGAGCTTTACACAATGCTTCCATATCCAGCGTGCGTGTTGGGCTCACTTTACTCTGCTGGGCTTTTTGCGTCGGTGGCGGTGTCGCTGTGCATCCCACCAGAACGATGGCTATCATCACAGTACAGAAATACTTCATTATCATTTTTATTACCGTCTGGTTTGCTGGTCAGTCTTATTATTAAGGTTTGTGGGTAGCAGACACATTGTGCGAATCTCCTTACGCCATCACAAGATGTAGCGTAGAAAGTCGGATTTTTCCAGTGAGCCACCGCACTGGAACTCTATTCAAACGGAAGCTGAGGAACTGATGCAGCCTAAAATTAACTGGATTGATAACCTGCGAGGGATCGCCTGTTTAATGGTAGTGATGATCCATACTACAACGTGGTACATCACCAACGCCCACAGCGTCAGCCCGCTAAACTGGGATATTGCGAATGTCCTGAATTCGGCTTCGCGCGTTAGCGTTCCCCTGTTTTTT [...]
+TCGATCTTGGTACATCGGGTGTAAAAGCTATCCTGTTGAATGAGCAGGGCGATGTGCTGGCTACGCATACTGAAAAACTGACCGTATCGCGTCCGCATCCCTTATGGTCGGAACAGGAACCAGAGCAGTGGTGGCAGGCGACGGATCGTGCGGTTAAAGGTTTAGGTCGGCAACAGTCGTTAAGTGGCGTCCGGGCGTTGGGCATCGCCGGACAAATGCATGGCGCGACATTGCTTGATAGCCGTCAGCAGGTTCTGCGACCAGCGATTTTATGGAATGACGGACGCTGTAGCGAAGAGTGCGCCTGGCTGGAAAAACAGGTGCCGCAGTCGCGTGCGATAACCGGTAATCTGATGATGCCCGGTTTTACCGCGCCCAAATTAGTCTGGGTGCAGCGCCACGAACCGGATATTTTCCGCCAGATAGACAAAGTTCTGCTGCCGAAAGATTTTCTGCGGCTGCGAATGACGGGCGTCTTTGCCAGCGATATGT [...]
+NODE	688	10	3911	3784	0	0
+GTTTCCCTCT
+TGGGAAACGA
+NODE	689	6760	362540	357794	0	0
+CGGCGGGACTGGACGAAGACGCGCTGGCTTTCGCACTGTTACCTCTGGCGGCGGCCTGCGCCCGTACCGATTTGTCCCATTTTAACGTCGGCGCGATTGCGCGCGGCGTTAGCGGCAACTGGTATTTCGGCGCGAATATGGAGTTCCTGGGCGCCACCATGCAACAAACTGTGCATGCTGAACAAAGCGCGATTAGCCACGCCTGGCTACGCGGCGAAAAAGGGCTCGCCGCCGTCACCGTTAACTACACCCCTTGCGGCCACTGTCGCCAGTTTATGAACGAGCTGAACAGCGGTCTGGATCTGCGCATTCATCTGCCGGGCCGCGCGCCGCATACGTTACGCGATTATCTGCCTGACGCTTTCGGGCCAAAAGATCTGGAGATCAAAACGCTGCTGATGGACGAGCAGGATCATGGCTTTACGTTAACGGGCGATACGCTAACGCAAGCGGCGATTACGGCAGCCAATAAGAGCCATATGCCTTATAGCC [...]
+TGCGAAGGCGTTTTCCTATAATGCTAAGATCGTTATTATGGATGAACCGACCTCATCGTTAACTGAGAAAGAGGTTAATCATCTGTTCACCATTATTCGCAAGCTGAAAGAACGTGGCTGCGGAATTGTTTATATCTCGCATAAAATGGAAGAAATTTTTCAATTGTGCGATGAAATTACTATTTTGCGCGACGGTCAGTGGATTGCCACCCAGCCGCTGGAAGGGCTGGATATGGATAAGATCATTGCGATGATGGTCGGGCGTTCCCTGAACCAGCGCTTTCCGGATAAAGAAAATAAGCCGGGCGATGTGATTCTGGAGGTCCGTCACCTGACCTCGCTGCGCCAGCCTTCCATTCGCGATGTCTCCTTTGATTTGCACAAGGGCGAAATTCTGGGCATTGCTGGTCTGGTTGGGGCAAAGCGTACCGATATCGTCGAAACGCTGTTTGGCATTCGTGAGAAGTCGTCCGGGACAATCACTTTACATGG [...]
+NODE	690	4667	255121	253848	0	0
+GGGCATTAAACAGCGGAAAATTCGCGCCCGTAGCGCGCTGCGTCCGCTGGATATTGTCGGTTTAAGCCAGCTGCTGGTCCAGGTTTCAAACCTGATTGTCGACTGCCCGGAAATTCAGCGTCTGGATATCCATCCGCTGCTGGCTTCCGCCAGTGAGTTTACCGCGCTGGATGTGACGCTGGATATTGCCCCGTTTGATGGCGATAACGAAAGTCGACTTGCGGTACGCCCCTATCCCCACCAGCTTGAAGAGTGGGTGGAGATGAAAAATGGCGATCGCTGCCTGTTCCGTCCTATCCTGCCGGAAGATGAGCCCCAGCTGCGACAATTCATCGCACAGGTCACCAAAGAGGATCTTTACTACCGTTATTTCAGCGAGATCAACGAATTCACCCATGAAGATTTAGCCAACATGACGCAGATCGACTACGATCGAGAAATGGCCTTTGTGGCCGTGAGGCGGATGGACAACGCTGAAGAGATCCTCGGCGT [...]
+TGCACCGCCGGATGGCGGCTCCGCCTTATCCGGCCTACAGGAATTATCCCGCCTACGAAGCTGGTGCTCTTGTAGAACTGATAAGAGCACAACCCACCCAATCGTTAACGATGAACTATCCTTTACACGTGCTTATATAAGCAGTGAGGATTTTCATTGGCTATCAAACCTTTTAACTACCAGCAGGACTTTTCCAGCATCGACTTCCGCCAGCAGCCTGAATTGTATCAGGTTGGACGAGGCGAGCAGGGGGTGCTACTGGTTGAACCCTACAAAAGCGAAATTCTTCCTTTCTGGCGCTATAAAGATAAAGCATCGGCGATGAAATCCGCAGAGCAAATCTACCAGTTGTTCGAAGCTTACCGGCAGCAGGATGATTTCGTTGGTATGGACATGGCGCGTAAATTTATTCAGATGGGATACACCCGCGCCAGGCGATACGCTAACTATAAAGGCGGTAAAAAGTATGCCGAAGACGGCAGCCTGAATACA [...]
+NODE	691	4008	216891	213548	0	0
+TGACGGCGACCCTGACGGCGGCGGGGATTATATCGTTCCCGGTGGCGTTGTGCCTGGTCATCGGCGCCAATCTGGGATCGGGGCTGCTGGCGATGCTCAATAACAGCGCCGCCAATGCTGCCGCGCGTCGCGTAGCGCTCGGCAGCCTATTGTTCAAATTGATCGGCAGCCTGGTCATCCTGCCGTTTGTCCATCCGCTGGCGAATCTGATGGATGAGCTATCGCTACCGAAGTCAGAGCTGGTGATCTATTTCCACGTTTTCTATAACCTGGTGCGTTGCCTGGCGATGGTGCCATTTGCCGAGCTGATGGCGCGTTTTTGTAAACGAATTATTCGTGATGAGCCTGAACTGGATACCCATCTGAAGCCGAAACATCTGGATGTCAGCGCGCTGGATACGCCAACGCTGGCGCTGGCTAATGCTGCCCGCGAGGTGTTGCGCATTGGCGATGCGATGGAACAGATGATGGAAGGGCTAAAAAAGGTCATGC [...]
+GCCTGGCGCGCTGTTCTCAGTGTGGCACAACCTTTCAGGGTCACTACTGGCTGGTTACTGGTCCGGGAAACCGATTGTTGAAAAATCGGGCGAAACGGCAAAGGTAAATTAAAATATTGCCGGGTGGCGCAAGCTTACCCGGCTTACACGCTATCCGCCCGTTGCGTATTGCCGTAGACTAAATGCATCGGCTAACTGAGGGCACCCGTATGGCACTCCCCCGCATTACCCAAAAAGAGATGACCGAGCGCGAACAGCGCGAACTGAAAACGTTGCTGGACCGCGCCCGTATTGCGCACGGGCGTCCGCTGACCAATTCTGAGACCAACAGCGTAAAAAAGGAGTACATCGATAAGCTGATGGCGCTGCGTGAGGCTGAAGCAAAAAAAGCCCGCAAGTTGAAGAAAAAGCAGGCGTATAAACCCGATACGGAAGCGTCATTCTCCTGGTCGGCGAATACGCCGACGCGCGGCAGACGTTAACGTCCTTTTT [...]
+NODE	692	2169	121030	119866	0	0
+GGGCGACCTTGAAACCTTGCGCAGCTACTATCTGGATCGCGGCTACGCGCGTTTCAATATTGACTCCACGCAAGTGAGTCTGACGCCGGATAAGAAAGGGATCTACATCACCGTCAATATCACCGAAGGCGATCAGTACAAGCTTTCCGGGGTTCAGGTGAGCGGTAACCTGGCCGGACATTCCGCTGAAATTGAGAAACTGACGAAAATTGAACCGGGCGAGCTCTATAACGGCACCAAAGTGACCAAAATGGAAGATGACATCAAAAAGCTTCTGGGTCGCTATGGTTACGCCTATCCGCGCGTGCAGTCACAGCCTGAAATTAACGATGCTGACAAAACCGTAAAACTGCGCGTAAACGTCGATGCGGGCAACCGTTTCTACGTGCGTAAGATCCGCTTTGAAGGCAACGACACCTCAAAAGATTCCGTTCTGCGCCGTGAAATGCGCCAGATGGAAGGGGCGTGGCTGGGCAGCGACCTGGTTGACCA [...]
+TAGTACGATCGCTACCTGCTTTCATGGATTGCAGACGCTGCATTTTAGATTGCAGATCGGTTTCCATTTTTTGCAGTTCAGCCGCACGGCCTTTAAATTCGTTTTCCAGTGTATTGGATACACCCGTCTTCTGCGCAACCTGTTGGAACAGATTACCCATGTTGACGATTGCAATTTTGTCAGCAGCCTGTGCGGACGTTACCATCGCCAAACCAAGACCTGCAGCTAATAACCACTTTTTCACAATAAACTCCTTACCATCCCATTTGCACCCGAAGGTACAGCTCTTTGCGTGGCCTGGCGATCCCTGGGGGCATCGCCAAAAGTCATCGCTACACTACCAATGCATTCCTTTGCAGTGAACAATTACCAGGTTTTACCAATGTTAAACTGGAACTGCTCGGCTTTGTCTCCATCGTACTTTTTAAACGGCTGGGCGTAGGAGAAGACCAACGGCCCCAATGGGGACATCCATTGTAATGCGATACCCGC [...]
+NODE	693	7632	417371	412152	0	0
+GCAGCGCCACAAACGTCAACGCCAGCGCAGCGTTGCCGATGGAGGGGCCGAAGATCGCTACCAGCACCAGCGCCAGCAGCAGGCTCGGCAGGGCCAGCATAATATCGACCACGCGCATGATGATGTTATCGACCAGACCGCCGAAGTAGCCCGCGACCAGGCCGAGAATAATCCCCATTACCAGCGACAGGACGACCACCAGACAGCCGACCAGCAGTGACAAACGCGCGCCATACATCAGGCGCGAGAGGACATCGCGACCAACATCATCCGTTCCCAGAATATGCGCCCAACTGCCGCCTTCCTGCCAGACCGGCGGTGCCAGCAGCGCATCGCGGAACTGCTCTGCCGGGTTGTACGGCGCAATAAAGTTGGCAAACACCGCAATCAGGATCACGATGAGAACATACGCCAGCCCGACGACCGCGCCTTTATTGCGTTTGAAATAGTGCCAGAACTCCCGCAATGGCGTCATGGGCGCCGGTGCGGCAT [...]
+GTCAGCAACAGCCCGCAGGGCGAGCCACGCAGTGGCGAGTCATCCTCTATCACCGACAGGTTGACGCTCGCACCACCAGCTCAGGCATGATCCCGTCGCTGTGACTGACCTTCTTGCCCGCCAGCAAATCAAATAATAGTGTGATTGCCTGTCGCGCCACCTCATCAAGATGCATATTCACTGCCGTCAGCGGCGGCAGCGATTCGCGCGCGCGGATACCGTCATAGCGGGTGACCACGCGCATCCGCTCCGGGATAGCGACTGCCTGTTCCTGAAAAGCGCGTACCGCGCCGCTGGCAAAGGTATCGATCAGCACCAGCACGCCGTCAACGTTGGGATGTGCCTGTAATAGCTGCTGCGCGGCCTGGTAGCCGGCATTTTCACCCTCGCTTTCATTGAGAGAGTAGACGACGGGGGCCTGGCGCCCCGCGCACCAGCGCTGGTAAGCCGCTTCGCTCTCCAGAACTGATGTTCGCCGTGTGTTACCGACAA [...]
+NODE	694	238	13771	13684	0	0
+CGGAAGAGCATGAGCAACAGTTGGATCAGCTCAGCCAGCGTCATGCTCTACAAACGCAAATCGCGGCGCATACTGAACAAGTAGCGCGCTTTACCGCGCAGATTGCGCAGCGTCAGGCCTCGCTGACGGCTGATTTGGCGCAGTATACGCTTTCCCTTCCAGCGCCAGAAGACGAGGCTTCGTGGCTGAATGAGCGCGCCGACGAAGCGAAAATATGGCAACAGCGTCAGACCGAGTT
+CAGCCACGAAGCCTCGTCTTCTGGCGCTGGAAGGGAAAGCGTATACTGCGCCAAATCAGCCGTCAGCGAGGCCTGACGCTGCGCAATCTGCGCGGTAAAGCGCGCTACTTGTTCAGTATGCGCCGCGATTTGCGTTTGTAGAGCATGACGCTGGCTGAGCTGATCCAACTGTTGCTCATGCTCTTCCGCGGCGGTCAACCAGCCCGCGAGGTCTTCTTGCGGCTGGAGCTGAACGCCC
+NODE	695	162	9145	9145	0	0
+CTGTTCCTGCAGGGTTTGCAACTGGCTTTGTAATGACACGCACTCATCATGCGCCTGCCGCCAGTTATCCAGCGGCACGTCGTCGTCGGAATCCGCGGTATCCGTTTGCGGTAGCGTCTCCAGCAACGGGGCAAGCCTGTCGATCTGCGTTTGCAAATCCGC
+ACCGCAAACGGATACCGCGGATTCCGACGACGACGTGCCGCTGGATAACTGGCGGCAGGCGCATGATGAGTGCGTGTCATTACAAAGCCAGTTGCAAACCCTGCAGGAACAGACGACGCAGGAGCAGCAGCGCGCCGCCGAGGCGATAGCGCACTTTGATGC
+NODE	696	4747	244402	241936	0	0
+CCTTTAAAAAGCTCGCTTCGGCGAGCTTTTTGCTTTTCTGCGTTTATAAATTCCGAAAGAGGTTTCCCCCTCAATGCCCTGCTATCAGTAAAACGCTATGATAAAGCCTTACAGGGATCGTTCGGTAACCTCACAATGAATTACCAGTTTTGTTGGTATCTCTTTTTGCGGCCATTAACATTTTTTATGGTCGTCTTGCTCTGCGCTTTCACCTTCATTGATATCACGGCCAGCGCCGCCTGGTTGATTATTTTGGGTCTGGTTTACCCCGTGGCAGTGTCAATGAGGCTACATATACTGCACCAGAAAAAGGCCGTCATGTTGCGCCAGAATAGTGCGGAATGGATAGTGTATCTGCCAGGGATCCCTGTGCAAGAAAAACAAAGCGCGCTGATTAATGTCGCGTTTTCCTCGAAAACGGCGCTGCGTGGATTCTATATTCGCGCCCTGTCCAGCAAAGTCATTCTTCACATCATCACTTTTTATATTCTG [...]
+TTCCCAGGCTTCATAGGCGTTAACAATGCGGGCAACGACCGGATGGCGCACCACGTCTTCGCTGTGGAAGAAGTTAAAGCTGATTTCATCGACTTCCGCCAGCACTTCAATGGCATGACGCAAGCCGGATTTGGTGTTGCGTGGCAGGTCAATCTGCGTCACGTCGCCGGTGATCACCGCTTTCGAGTTAAAGCCGATACGCGTCAGGAACATCTTCATCTGTTCGATAGTGGTGTTCTGGCTTTCATCCAGAATGATAAAGGCGTCGTTTAATGTGCGTCCGCGCATATAGGCCAGCGGCGCGACTTCAATCACATTGCGCTCAATCAGCTTCTCGACTTTTTCAAAGCCGAGCATTTCGAACAGCGCGTCATACAGCGGACGCAGGTACGGGTCCACCTTCTGACTTAAATCGCCTGGCAGAAAGCCCAGTTTTTCGCCCGCTTCCACCGCCGGACGGGTCAGTAGAATACGGCGAATCTCCTGGCGCTC [...]
+NODE	697	2520	132477	132010	0	0
+GTGCGGTATGCTGCAGGCCGGTTCTCTGCTGTGTTTCGACAAGCTGGTGGCAGAAGGCACCGACCCGGCATACGCCGAAAAACTGATTCAGTTCGGCTGGGAAACCATCACCGAAGCGCTGAAGCAGGGCGGCATCACCCTGATGATGGACCGTCTGTCTAACCCGGCAAAACTGCGTGCTTACGCGCTGTCCGAACAGCTGAAAGAGATCATGGCGCCGTTGTTCCAGAAACACATGGATGACATCATCTCCGGCGAATTCTCGTCCGGCATGATGGCTGACTGGGCTAACGACGATAAGAAACTGCTGACCTGGCGTGAAGAGACCGGTAAAACCGCGTTCGAAACCGCGCCGCAGTTTGAAGGTAAAATCGGCGAGCAGGAGTACTTCGATAAAGGCGTGCTGATGATTGCGATGGTGAAAGCGGGCGTTGAGCTGGCGTTCGAAACCATGGTCGATTCCGGCATCATCGAAGAATCCGCTTACTACGA [...]
+GATAACTGGCGGGCGCATAGGTTTTGCTGGCACCGTCGTCAGCCACCGCGCCGTGGGCGATGATCACATCGCCCAACGCCAGCGAGTCCTGCAACGCGCCGCAACTACCGATACGGATTAGCGTGTTGACGCCAACCTGGCGTAACTCCTCAATGGCGATAGCGGTTGACGGTCCGCCGATTCCCGTGGAAAGCACGACTATTTCAACCCCCTGGTACCAACCGCGCGCCGCGCGAAACTCCCGGTTTTGCCCCAGAATCTCAGCCTTATCAAGAAAACGGGCGATTCTATCCACCCGCCCGGGGTCGCCGGGCAAAAGCGCATATTTCGCGCGGGTCATGCTTGTGTTAAGCCGAATATGGGGTTGCATCTCCCGTCTCCTTATTGTTCTGAGAGGTTCAGATTTCCGCCTCCTGTTTGAGTTTTTCAGGAGCCAGTAAAATGATCCGCTCACCGTCGGTATCGATAATGTTCAGCGATTTCAGATCGTGC [...]
+NODE	698	51	19098	18545	0	0
+GTCTTGCCGCGGGTACACTGCATCTTCACAGCGAGTTCAATTTCACTGAGT
+CGGAAAGACCCCGTGAACCTTTACTATAGCTTGACACTGAACATTGAGCCT
+NODE	699	11084	594246	585512	0	0
+TGGATCTGAATTTCCAGAAACATCCGGATCAGATCAAAACGCCCGAAGCAGACGCTACGAAACTGCCGCATCTTTTCACGTAATGGGTAATTATCCGCTTTTCCGACCCGAAAGGCGTTCTGCGCGGCTGTACGTGAATCGCCGTGTAAATTCATACGATCCATCAACTGACTGGCGATATGAATATCCGCTTCCGTCACCCGTCCTTTTGATTTGGTTAAGTGGCCCATCACCTCAAAGGTGGTGGCAAAAAACAGCGCCTGCCGTTCCCGCTGGTTGGCAAACCACGCCATTTTTCGGCTGCGGGCTTTGTCGAACATATGGCCCACCAGCAGACCCAGGACCACGCCCCAAAAGCCGCCGCCCATCATCAGGGCTACGGCGACGCCAATTATCTTTCCCCAGTACTGCATAGACTCCCCAAAACGTTACGCTATCGGTGAGGCTATCTCCCACAAAATAAGGTGCTTTTCTGCGAATGAAGGCTACGGT [...]
+GCGCTGGTCGGCCCCAAACTGGCTTCAACAATTACGCCTGGTGGGCCAGGCTCTAAGTACCTGACCCATTAGGTTAATTTATGCGTCGGCGATCTGGCATCCAGCGTGTCTGGAGGTTCAGATGCTGTTGGCGCTGCGCTTATTGGGCCTGTGTCATCATGTAATGGATTGATATTACAGTCATTACAGGCAAATTTAGCGCAGCGCCGCCCGACAAGAAGGCCTTAAACCGATTGGTCAGCAATTTAAGGCTGCCATCATCACCAACCTTTCCACACCGGATCGCGCTTTTCCGCAAACGCCTGCGGCCCTTCGAGAGCGTCTTCCGGGGGCAGGATGGCGTCAACTCCTGGCTGGCGTTAATTCAATTTTTTCTGGTTAGCCGCTCAATAATATTCACTATTAGCCTGGCGAATTTGTCACTACACTTTGTAATAAAAAACAGATCATCACAGGCTAATCATGATCCTCATTATTTATGCGCATCCGTAT [...]
+NODE	700	166	8039	8039	0	0
+CGACAATGAATATGCCCACGGCGTCTGGCAACGATAATCCCTGAAGCCCTGTTACCAACAGAGCGGCGCCAGGCGTTGACCAGGCGGTTAAAACCGGCGCACGATACCACAAGGTTAACGTTAGTGTGCTTATGCCCATGGCTATACCGAGGGCGGTCATCCAGCC
+AACCTTGTGGTATCGTGCGCCGGTTTTAACCGCCTGGTCAACGCCTGGCGCCGCTCTGTTGGTAACAGGGCTTCAGGGATTATCGTTGCCAGACGCCGTGGGCATATTCATTGTCGCCAATGCCCTGATTGTGCTGTGCGGCGTCACGGGATTGTTTGCGCGTTTG
+NODE	701	1673	83239	83090	0	0
+GGCGATCTCTGCGGGTGTTGCGCCAGCGGCAAGCGCCGCCTGCCAGATAATGGCGGCGGAACTCGCATAGCCGACCAGAACGGCGACCAGACCAGATAATACAGTAGGTAACGGCAGTGATAACAGACGCATGATCGCCTCTTGTGCGTTATAACGGTCAGTCAATGTAGCATTGTGCGTTATAGCGTACAAGTGATACGCTATGGTCTTACTGGGGGGAAAAATGGATAACCTGACACACTATCTGGCGACCACGTTAAGAACGTTACGCCATCAGCGAGGCTGGAGTTTATCGCGTCTGGCGGAGATCTCCGGCGTCTCAAAAGCCATGTTAGGGCAGATAGAGCGTAATGAATCCAGCCCGACAGTCGCAACGCTGTGGAAAATTGCGACGGGCCTGAACGTTCCATTCTCAATGTTTATTTCGCCTCCGCAGGCCGAATTTCCGCCAACCTTCGATCCCCAGCAGCAAGCGATGGTAATTACACCGCT [...]
+AGCATCTGACGATAATGCGCGGTGATGTTTTTGACATAGCTCATGTCTTTGTAGCGCCCTTCAATCTTGAAGGAACGTACGCCTGCATCGATCAACGCGCCGAGGTTAGCCGTTTGGTCGTTATCTTTCATCGATAGCAAATGTTTTTCGTAAGAGACCACCCGCCCCTGATCGTCTTTTAACGTATACGGTAAACGACAGGCTTGCGAACAGTCGCCCCGATTGGCGCTGCGCCCGGTTTGCGCATGAGAGATATAACACTGCCCAGAATAAGCGACACACAGCGCGCCATGAATGAAGAACTCAATCGTGGCGTCAGTAGCCTGATGAATAGCCGCTATCTGACTCAAATTAAGCTCGCGCGCCAGTACAATCTGTGAAAAACCGACATCGGCAAGAAACTTCGCTTTTTCCACGCTGCGAATATCACACTGTGTACTGGCGTGAAGCTCAATCGGCGGGATATCCAGTTCCAGAATGCCCATATCCTGC [...]
+NODE	702	88	28795	22945	0	0
+CCAACCCGATGCAAACTGCGAATACCGGAGAATGTTATCACGGGAGACACACGGCGGGTGCTAACGTCCGTCGTGAAGAGGGAAACAA
+ATAACATTCTCCGGTATTCGCAGTTTGCATCGGGTTGGTAAGCCGGGATGGCCCCCTAGCCGAAACAGTGCTCTACCCCCGGAGATGA
+NODE	703	17	6162	3947	0	0
+TCACGACGGACGTTAGC
+CCAAAGTCATGGTTAAG
+NODE	704	21	7018	6106	0	0
+ACCCGCCGTGTGTCTCCCGTG
+CCCAGACCGCCAGCTAAGGTC
+NODE	705	13607	677831	666352	0	0
+GCCCCGACGTCAATCAGGTGACTGGCGCGGTGGAGCTCAAGTTTCGACAGTGCCAGCGCCCGTACCGCCTCTTTGGTCATTGGCACGTTCTCGCCGCGCAGAAAAAGCTCATCTTTCATCCAGGATCACCACTGCATTCATTTCATAGTCGGCGTTGACCGCACTGACGGGTAGCCAGTGGATCCGCTCATTTTCCATCGCCAGATTTTCACCAATCACCATTAAGCGATGCCCTTTACCGCGCGCGACCAGCTCCCGCGCGATTTCCCGCGGCCCGCAGCGGGCATCCGTGACCATCGCCACTTTGCGATGGTTCGCCAACTGCTCGAAGCTGACGCAACGACCGTGGCTACTGGTCAACCACATGTCATTCATATCAATTCCAGCCTGTGCGCACAGATACTGTACGGCGCTGATGCCAGGGATAATACGAACCTGTTCGATACCAAAATGCGCCACCAGGCGTGTACCGATGCCATAAAACAGCGGATC [...]
+ACGAGCCGCCGACCAGCACCACGAACGGAATATCGCGAATGTTGCCGGTTGGACTGACCTGGCGCAGCGCGCGCAGGGCGTTGGTGACAAAGACGCGCTCTTTGGCGCTGCGGCGAATGGCGCGCACTTTTTCCAGCGCTAAGTCGCCGGGAAGCGGTACCAGTTCGTCCGGTTTCACCACGCAGACGCGGGCGAACACGGCGGGAGGCAGCGGCGTCGGGAAGAACTGGACGCTGCCGTCCTCGTGGCGTAAGTGGAACAGGCTTTCGACCTTAGCCAGCGGGTATTTTTTGATCTCTTCCGCCAGATAGCGGTCTTCCAGCCCCAGTTCGCGGGCAATAATCATCGTGACCATGTCGCCTGCCCCGGCGAGATGGGTGGCGATGATTTCACCTTTAGGGTTGATGATGGAGGCATCGGTGGAGCCCGCGCCGAGGTCGAGGATCGCCAGCGGTCGGGTGGTACCCGGCGTGGTCAGCGCGCCCAGAATGG [...]
+NODE	706	5381	252259	249076	0	0
+TGCCGCGCTACGGCTGCTTGATGAGAATCGTCAGCGCTTTGCCTGCGGCAATATCGATATTCTCCCCGGCGAAGCGCCAATGACCATAACCGGGAAAGCCGATGCGGTGTTTATGGGCGGCAGCTGCGGGCATCTGACGGCGCTGATTGACTGGGCGATGGGCCATCTGCATCCCGGTGGCCGTCTGGTGATGACCTTTATCTTGCAGGAAAACCTTCATAGCGCGCTGGCGCATCTTGCCCACATCGGCGCATGTCGAATGGACTGTGTACAGCTTCAGCTTTCATCGTTAACGCCGCTGGGGGCGGGACACTATTTCAAACCGAACAACCCTGTTTTTGTTATCGCCTGTCAGAAGGAAGAAAACCATGTCAGAGACATTTGATCCACGCTGTGTATGGTTCGTCGGCGCCGGGCCGGGCGATCGCGAGCTGATCACGCTTAAAGGCTACCGCCTGCTGCAACAGGCGCAGGTAGTTATCTATGCCGGTT [...]
+CAGGCCAGCGCCCACACTGGCGGTAAAAAGCCCTCCATGATATGCATCGCAAACGCCTGTTGCGGGACAACCATCAGCAATAGCGCTGCAGCCAGTCCACTGAAAGACAACTGTCGAAGCTGCTGTTCAAGTTTCATTCTGCATACTCCCACTGTTTATTGACCAGAATGGTCGAAAAATAGGGCAACGGTCGATCATCGTTGACCTCGTGGAGATGGCGCCAGCACTGCTCGCCGGGCAGTGTGGCCTCGGACATCATTAAGGCGCATTCCAGCAGGCCAGCCTGCGCCAGCAAAGCTTTAATACGGGCGAACCGGCCATACACTTTCATCAACACCAGGCTATCATGCTGTTGTAGCGCCTGGGCTATTTCCGCTTCCGGCGCGGTACAAGAAATAACCGCCAGCGATTGCCGTTCTATGGCGAGCGGCATTTTCGCGCGGGCGGCTATCGCGGCGAAGGACGTGACGCCGGGGACAATCTCCAGCCACT [...]
+NODE	707	18166	928144	917339	0	0
+CCACCAGCGCTTTAGCCATCGGCACCGCGTGCTCCAGTTTATTGACTACAATGACCGGGACAACCGGGCCGGTGGTCAGGATTGCTTCTGCACTTGTTTTCCAGTTTTTCATCGGAATTCTTCTCTCGCCTGATTACTAGTGTGTCATCTTAAAAAGTGATACAGGTTGCGCCCTGCTCCGCACCCGACAGCTTTTCGCGCAGCGCGCCAAACAACTCACGCCCCGTTCCGACGCGCGACGCGCTCAGGTCCGGAATATGAGGCTGACGAGCGGCAAGTTCCGCCTCGTCGACCAGCAGAGTTAACTCACCTGTCTGCCCATTCACGCGAATGATGTCGCCATCGCGCACTTTTGCCAGTAAGCCGCCATCGTAGGCTTCCGGCGTTACGTGGATAGCTGAAGGCACTTTACCCGAAGCGCCTGAAAGTCGTCCATCAGTAACTAACGCGATTTTGAAACGGCGGTCCAATAATACACCAAGTGGCGGCATG [...]
+GATGTCCGGCTTCGACCGCTACTATCAGATCGTAAAATGCTTCCGTGATGAAGACTTACGTGCTGACCGTCAGCCGGAGTTTACTCAGATCGACGTCGAGACCTCCTTCATGACCGCGCCACAGGTGCGCGAAGTGATGGAAGCGCTGGTGCGCCATTTGTGGCTGGAAGTGAAAGGCGTGGATCTGGGGGATTTCCCGGTCATGACGTTTACCGAAGCGGAACGTCGTTACGGTTCCGACAAACCAGACCTGCGTAACCCGATGGAACTGGTAGATGTCGCTGACCTGCTGAAATCGGTAGAGTTCGCGGTCTTCGCGGGCCCGGCTAACGATCCGAAAGGCCGCGTGGCAGCGCTGCGTGTGCCTGGCGGCGCACAGCTTAGCCGTAAGCAGATCGACGATTACGGTAACTTTGTTAAGATCTACGGCGCGAAAGGCCTGGCGTATATCAAAGTTAACGAGCGCGCGAAAGGTCTGGACGGGATTAACAG [...]
+NODE	708	339	66171	59727	0	0
+ACCCTTTCAGGTACACTCTGAAGTATTTTTTCGTAAACACTCACGAGATGGTGGAGCTATGCGGGATCGAACCGCAGACCTCCTGCGTGCAAAGCAGGCGCTCTCCCAGCTGAGCTATAGCCCCATCGTGTAGTCAGAACCTCTTACCTTTGATTCGTTTCCGGGCGCGGCGTGGTGAAGCGAAGCATACTGAAGTATGCGAGCTTTGCCACAACAAAGCACGGGAGCGAATCTGGTAGGCCTGAGTGGACTTGAACCACCGACCTCACCCTTATCAGGGGTGCGCTCTAACCACCTGAGCTACAAGCCTGTAGAGGTTTTACTGCTCGTTTTTCATCA
+AGAGCGCACCCCTGATAAGGGTGAGGTCGGTGGTTCAAGTCCACTCAGGCCTACCAGATTCGCTCCCGTGCTTTGTTGTGGCAAAGCTCGCATACTTCAGTATGCTTCGCTTCACCACGCCGCGCCCGGAAACGAATCAAAGGTAAGAGGTTCTGACTACACGATGGGGCTATAGCTCAGCTGGGAGAGCGCCTGCTTTGCACGCAGGAGGTCTGCGGTTCGATCCCGCATAGCTCCACCATCTCGTGAGTGTTTACGAAAAAATACTTCAGAGTGTACCTGAAAGGGTTCACTGCGAAGTTTTGCTCTTTAAAAATCTGGATCAAGCTGAAAATTGAA
+NODE	709	25	4716	4621	0	0
+GACAATCTGTGTGAGCACTGCAAAG
+CTACAGGCTTGTAGCTCAGGTGGTT
+NODE	710	1929	116309	114341	0	0
+TAATAATACATTATGAGTCATTTATGGCGAATCCTCGCCTGTATCATTGATGGAACCAGAGGAAAGCATGATGGGTATGAAAGAGACAGTTAGCAATATTGTGACCAGCCAGGCAGAGAAAGGAGGCGTTAAACACGTCTATTACGTGGCGTGCGGCGGTTCTTATGCGGCGTTCTATCCGGCGAAAGCATTTTTAGAAAAAGAAGCGAAAGCGTTGACTGTCGGTCTGTATAACAGCGGAGAATTTATTAACAACCCGCCGGTAGCGCTGGGAGAAAATGCCGTTGTGGTTGTCGCCTCCCACAAAGGTAATACGCCAGAGACAATTAAAGCGGCTGAAATCGCCCGTCAGCACGGCGCGCCGGTTATTGGTTTAACCTGGATAATGGATTCACCGTTGGTGGCGCATTGCGACTATGTGGAAACGTACACGTTTGGCGACGGTAAAGATATTGCCGGAGAGAAAACGATGAAAGGCCTGCTGAGTGCGGT [...]
+CCGCATGGCGCGTAACACGCTTTCTTTATCGGGTTCCGCCATACCCGATTGCAAAATGGAAAGCAAAAAACCGGTTAAGAAGGCGTCGCCTGCGCCCAGCGTATCGACAGGTTCGATATAAGCAGGTTGCCACTCCAGATAATCCGCGCCGGAAAAATAATAAACTTTTTCATGCCCGCAGGTGGCAATAATATGCCGACAGCCATAACGATAAAGTTTATTGAGTTTTATTTTGATTTCATCTGGCGATAACCCGCTACAGGAGACAAATCCATAATCTACCCACGGGCATACCTTTTCAAAATAGTCGTCTGTACCGCGCCCGGAAAAATCAAAAGAGAGTAAGACGGTTTGTTGTTTAATTTTCTCCAGTTCCGATTCCAGGTGGCCGTTAATACTGGAATGGACTAAGGTAAATTGTGATATATAGCGAAGATCGTCGTCAGACAGACTAAAAGGATGTTCCCGCAATACGCCGTTTTTGTTGCTGGC [...]
+NODE	711	4	796	779	0	0
+TTTA
+ACCG
+NODE	712	51	3933	3933	0	0
+GACCACTAAACATGCTGAAATCACAAAACTGATCTCCTTCGACCCCGTTAC
+CACCGGAACACTGATCTTTGCTGTCGTCACTTTATATAAAAAGAAAGCAAC
+NODE	713	8704	446280	440789	0	0
+TCACCTGGGAGGTTAATAAATATTGCCGCGGCATTATACAGAACGTAATCGGTTGCATCTACATATTTTTGCAAATAGTGCTTGCGATCCCCCGTGAGCAGGTTACTATCGATTGAATAACCTGCTGATTTAGAATTTGATCCCGCTCACATGTTATCCTCTCAAACTTCCTCAATTTTTACCGTAAGCCGCCTTAACCAGACGGTTCGTCTGCTGTTAGAACAGGAGATGGGGCAGGTATGGATCAGCGGCGAGATTTCTAATTTCACGCAGCCTGCGTCGGGTCACTGGTACTTTACGCTCAAAGACGATACCGCTCAGGTGCGCTGTGCGATGTTCCGTAACAGCAATCGCCGGGTGACGTTCCGCCCGCAGCACGGGCAACAGGTGTTAGTCCGCGCCAATATCACGCTGTACGAGCCGCGCGGCGATTATCAAATCATCGCCGAAAGTATGCAGCCCGCGGGCGAAGGGCTATTGCAGCAAAAATAT [...]
+CTCAGCACAAAATGGTCTGGCTTCACTGGCGATGACGGTAAGTTGCGGTTTACGTTAACTCAGGATAAATCGTCGGGGTTAAAAACGTCTGTCACGGCGGCGCTTGCGAATCAATTTGATGAGGCGGCGAGCGTGGATGCAATCTTTACGGTACAAACCAGCCCGGATACGCCGTATGCGTCATACTGGGGTCATATGCCGGATACCGTGCAGGTGAACGGCGTTACGCTGCGCCGCCCGTATCTGAAAGCCGAGCTCTCTGCCATGCCCCAGTATACCTGGTTGATGACTAACGAATACTGGGCGTCGAACTATTATTATCAGTCCGAGCACGTTGAAACATCGCTGACACATCTTTGCGGATCGCAGGAAAATATGGCCTCGCTGGATGATCTGAAAGCGTTGCAGAGCGTTATCGGCACGTTGCAATGGCCGACGACATCGTCCTGGGATTATGTGTCGCAAGATGAAGGTCAAAGCAATAAGGTCTAC [...]
+NODE	714	6374	373240	367187	0	0
+ACGTAGAGGCCCAGCTTCTGGCACTCGACACACAGCGGCTGACGTTTCAGGTACTGAGCGCGGTACTTCTCCCATGATGCTGAGTAACCACGGGCGCGACGGTGGCCGCGTCTGGCATCTTCCGCCCGCCAGGCTTCCCGCTTGTGCTCATCGCACTTACCAGACTTCACCCGCTTATTACATCCCGGCTCAGTGCACCGGCGCATTGGTTGCCACGGCATCAGTACACCCCCACATCGCGATACACAGACCACAATGCAGAGATAGCAAGGGGGATCTCTTTCGCCTCCACATCACTAATCATCGTGCGGTATTCGTACAGTTGGGAAACGTACATAAGGCATCCGATCTTGATGGCAGGAGTGAATTCCAGACCAGCACCGAACCGCTTACCGATATGCTTCTGGCAGACTTCCAGCGACGCTTCGATGTATGCCTGAATCATTGCATCTTCATAGGAATCATCGTTATCGATGCGACAGTGAAGTTTTG [...]
+GCATAACGACAGCCTGTTACCGCTTGATGAGGTAGGACAGGGCAGCAGTGCCAAAGATGTTGCCACGTCTGCTTACACCCTGTTTAACGGTGCCGGAAAGTTGCAGGGAGCCAAAGAGGGCGGCAATCGGGAGCTTAAACGCTGGCGCACTGTGGCGATCAGCACCGGGGAAATGGATATTGAAACCTTCCTGGCTGCTGGTGGGCTGAAAGTGAAAGCGGGCCAACTGGTGCGCTTGCTCAACATCCCTATGGAGAAATCGACGGCCTTTAACGGTCTGCCAAACGGCAAGGCTCATGCTGACGCACTGAAAGAAGCCTGGATTGATAACCACGGGGCGGCGGGGCGTGAGTGGGTTAAATGGCTGGCGGCTAACCAGCAGGAGGCTAAACAGGCGGTGCGTGACGCGCAAACGCGCTGGCGCGGCCTCATCCCGGCGGATTACGGTGAGCAGGTACACCGCGTGGCCGAACGCTTTGCAATCCTCGAAGC [...]
+NODE	715	6864	311694	305024	0	0
+CCGATCTTGCCAGTCGCTGCTTACCTCAGAGAGCTGTGGCAACGACTGTAGCGCGTTCTGCAGTTTTGGCACCCAGTGGCTGAGCGCATCGAGCGTCGTGGCCTGCAGGGTAAACTGATACTGTGTGCGGCTGACCTGCGTGTCGATGGTTAAATCCTGCGTCGGCTGGAGATACAGCGCCACGCCGGGAATCGTCGCCACGGCGGTTTGCAGCCGGGAGATCACCTGCTGCACGCGGTCATCACGCGCATCCAGCGGCTTGAGGTTAATTTGCAGGCGCGCGCTATTGAGCGTGGGGTTAGCGCCGTCTACGCCAACAAAAGTCGTCAGGCTTTGCACCGCCGGGTCCTGTAATATCCGCTCCGCCACCTGGCGCTGACGTTGCGCCATACTGGCATACGATGACGATTGCGGCGCCTGCAGCGTCCCCTGGATAATGCCGTTATCCTGTACCGGAAAGAATCCTTTCGGGATGACTATCCACAGCATAAC [...]
+CCAGCTTTTGGCTGGTCTCACTCAGGCTGTGGACCAGCGAAGGGGAAGTGTTGGAAGAGCGCGCGTTCCGGGCAGGGTTAGCCGACTCCGCGCTGCATCACGCGCTTGACCGACGGGTATTCCATGAGTTTTTCCACCATGCGGCGACCGCCGTCGCCAGCAAGGGATTAAGCGTTGCGCTGCCGCTGTCCGCCGCGGGATTATACAGCGCGACCCTTATTGATGAGCTGCTGGAACAACTGGAGCATAGCCCACTGCCGCCACGGTTATTACATCTGATTATCCCGGCTGACGTTATCGTTAAGCAGGCGCAGACCGCCGCTGCGACTCTGCGAAAACTGCGGCAACGCGGCTGCCAGGTGATTCTCAGCCATGTCGGGCGCGATTTACAGCTGTTTAATTTACTGCCCCCGCATATCGTCGATTATTTACTGCTGGATAGCGACCTTATCGCCAACGTTCATGAAAGTTTAATGGATGAAATGCTGACCT [...]
+NODE	716	8951	509206	502484	0	0
+TTTTCGTCAGACAGCGGCGCATCGGAAGCGCCAAAATCAACGGTATTCGCGGTGATTTGTTTCACGCCGCCGGAAGAGCCTATCCCCTGGTAATTGACTTTGTTACCGGTTTCTTTCTGGTAGGTATCCGCCCATTTGGCATACACCGGCGCAGGAAACGTTGCACCGGCACCTGTCAGGCTTGCTGCTGCAAAGGCAGAGAACGCGCTCATCGATAAGGTCGCGGCGACAACAGTTGCGACAGTGGTACGCATAACTTTCATAATGTCTCCTGCACGGTTTCGGTAAATCGTTGTTTGAGTTGCTACGATGAGCAAAATAGGACAAATTGATGACAGTTATATGTCTTGATTATGACGGTTTGATGACAATGGAAATAAAAAAGCTGGCCCGGGGAGACACCAGACCAGCCTGCAGGGGGAGATGAATTAGACTGTTTGCGCAACCGCAGACGGTTTCAACAGCGCGTACATCAGGCCGCAGGCAATAGTG [...]
+TGGAAGATATAGCTGGTTGGTTGTTCTCGGCGCTTTTATGCTGGTGGGAATGCTGGCGACCCGTCTGGCGGATAATGCGGGGACTAATCAAACGCAACTTATCGGGCTGGGGATTTATGTGTTGGCAGAATCCTTGATTTTTGCCCCCCTGTTAACGCTGGCGGCTTATATTAATCCGTCCATCATTGGCGCGGCGGCTATTACCACCCTGTTGCTGGTCGGCGGCCTGACGTTTACCGCTTTTTCCATAAAAAAAGACTTTTCTTTTCTGCGCTCGTTTCTGACTATGGCTGGGTTCATTGCTTTTGGCGCGATTATTGCCAGCGTCATCTGCGGCTTCTCGCTGGGTGTCTGGTTTTCTGCGCTAATGGTACTGCTGTGCGCCGGGTTTATACTTTACGATACTTCTAACATTATTCACCATTACCCTACCGATCGCCCTGCTGGCGCGGCATTACATCTGTTCGCTTCTATCGCGACCATGTTCTGGTA [...]
+NODE	717	3191	147443	144646	0	0
+TGTTCGCTGGCAGGTACGCTGGGACTGGGCAAACTGATCGGCTTTTACGATCACAACGGCATCTCCATTGATGGCGAAACCGAAGGCTGGTTTACCGACGATACCGCCAAACGTTTTGAAGCCTACCACTGGCATGTCGTGCATGACATTGACGGGCACGATCCGGAAGCGGTGAAAAAAGCCATTCTCGAAGCCCAGAGCGTAAAAGATAAACCTTCGCTAATTATCTGTCGGACGGTGATAGGTTTTGGCTCGCCGAATAAAGCCGGGAAGGAGGAGTCGCACGGCGCGGCGCTGGGCGAAGAAGAGGTGGCGCTGACCCGCCAGAAGCTGGGATGGCATCATCCGGCGTTTGAGATCCCAAAAGAAATTTACCGCGCGTGGGATGGCCGTGAAAAAGGCGAGAAAGCGCAGCAGCAGTGGCAGGAAAAGTTTGCAGCTTATGAGAAGGCTTATCCTGAGCTGGCCGCGGAGTTTACCCGCCGGATGAGC [...]
+CCGTGTTATTGCTTAACTATTTACAGACGTCTCATCTAATGGACTGAAAAAAAAGAAATATATTTCTTTACACAAAAAAGACCAATCCGATAAATCTGATTGAGAACCCTGAGGCGCGCAAGGAAGATACCGCCTTAGCTGTGTTGTTCTGAATCTGGGGTTGTTCCGTTCATGCGCTACCGCGTTATTCTTTTTTGTCTGTTTGGCCTGTTGCCGGTCCAGCTACTGTGGGCTGCGCCAGCGCAACGGACTTTTTCCGACTGGCAGGTCACCTGCAATAACCAAAATTTTTGCGTAGCGCGCAATACTGGCGAACATCATGGGCTGGTGATGACATTAAGCCGCAGCGCCGGGGCGCGTACCGATGCGGTACTGCGTATCGATCGCGGCGGTTTGGCGCCGCCCGACGCTAAAGAAGCCGCAATTGCGCCTCGCTTATTGCTGGATGGCAAACCGCTTTCGTTCAACAGTCCACACTGGCGCGTGTCGCCC [...]
+NODE	718	3611	185950	185148	0	0
+CTGCTGGCGATTAATTTTGACCTGGTGATGGCGACGGCGCTGATTAACTTTGGTGCGCTGGTCGCGTTTACCTTTGTTAACCTGTCGGTGATTTCGCAGTTCTGGATCCGTGAGAAGCGTAATAAAACGTTGAAAGATCACTTCCAGTATCTGTTCCTGCCGATGTGCGGCGCGCTCACGGTTGGTGCGTTGTGGGTTAACCTGGAAGAGAGCTCAATGGTACTGGGCCTGATCTGGGCGGGTATCGGGCTGATTTATCTGGCGTGCGTAACTAAAAGCTTCCGCAACCCGGTTCCACAGTACGAAGACGTCGCGTAATCGCACGTATTATCGGCAATAGTAAAACCGGAGGCAGTGCCTCCGGTTTTTTGTCATCCAGCATGTTTACCGGATGGCGGCGTCACTCTTTATCCGCTCTGGATTAACAATGCCCGTCAGGCATTGGTCAATTACACAATCTCAGTTGCGTACTGCCACAGTGATTTCAGCAAC [...]
+GACTGAGAGCGCTGTGGATGGTTTTTTAAATCATGAACATAATAATGGTAAAAGTATTCTGATGACCATTAACAGCCTGCCCGATAAATACAGACAGGAAAAAGTCCGGGCAATGGAAGACCTGGTGAAGTCATTTCGGAGTGGCCGCTTATCAGAGGAACGTATCCGGCCAGTTGAAAGTTCGCTGGTGAGCGTACTGGCCCACCCCCCCTATACGCAAAGTGCGCTTATCAGCGAGTGGCTCGGGCCTGTTCAGGAACGTTTTTTTGCCCACCAGTGCCAGACCTATAATGACGTTCCCCTGCCGGCTCCTGACACATATTATCAGCAGCGCATACTGCCTGTGTTGCTGGATTCGTTTGACAGGAACAGCGCCGCCATGACCACTCACAGCGGACTCTTTAATCAGGTGATTTTACACTGTATGACAGGCGTGGACTGCACTGATGGCACCCGCCAGAAAGCTGCAGCGCTTTATGAACAGTATCTTGC [...]
+NODE	719	3858	196790	194724	0	0
+CCGTCGCGACGCGGCGCGAAGTGGTAATTAATGGGTTTACCGCAGGCTTTACTAAAGGCGTTGACCACATCCAGGACGCTACTGCCGACACCCGCGCCGAGGTTATAAATATGTACGCCGGATTTGTCCGCCAGTTTTTCCATCGCCACGACGTGCCCGTCGGCTAAGTCCATAACGTGAATGTAATCGCGTACGCCGGTGCCATCCTCGGTCGGGTAATCGTTGCCGAAAACGGCGAGCGATTCGCGACGACCCACGGCGACCTGGGCGATATAGGGCATCAGGTTATTCGGAATACCTTGCGGATCTTCTCCCATGTCGCCCGACGGGTGCGCGCCGACCGGGTTGAAATAACGCAGCAGCGCAATACTCCACTCCGGCTGGGCTTTTTGCAGATCGGTGAGGATCTGTTCTACCATCAATTTACTTTTGCCGTAGGGGCTTTGCGGCGTGCCGGTAGGAAAACTTTCGACGTAAGGAATTTTGGGCTGA [...]
+CAGATGCCGCCACGTTAAAGGAAGGCGATGACGTGATTGCCTGGTTTAATGCGGACAGAGTGATTATTGCAACGTTGTGCTAAGCACATTGACATCCGTTGCCGAAAGACGTATCCCTGTCATTCATCGCTGCAAAAAATGGGATGCAAAATGTCATCGTTGCAAATTTCGCAAGGCACGTTTCGTCTGAGCGATACAAAAACACTTCATCTGGATTCGCTGACGCTCAATGCGGGCGATAGCTGGGCATTCGTTGGGGCTAACGGGAGCGGGAAGTCGGCGCTCGCCCGCGCGCTGGCGGGTGAACTGCCGTTATTAACTGGCGAGCGCCAGTGTCGGTTTACCCGCATTACTCGTCTGTCCTTTGAACAATTGCAAAAGCTGGTCAGCGATGAGTGGCAACGTAATAACACCGATATGCTCAGTCCTGGCGAAGACGATACCGGGCGCACTACCGCGGAAATTATTCAGGATGAAGTTCACCATCCTGCC [...]
+NODE	720	1427	82848	81563	0	0
+GACCTTTATGGCGAGGCGATGTTGAACATGGCGAATTCGCTTATTCGCCAGCCTCAGATAAATCGCACGCACCTTCAGGAGGCTGGTCTTACCGCGCGGCAAGCTGAACGTTTTTTACAGCTTCCAGCAGGTGTGCTTGATGAGACGTTACGCTGGCTTGAACTACCGCAGCACCATTTTCTGTGTGCGGATAGTGAAATTTATCCTCCCCAACTGCGTGCTATTGACGATTATCCCGGCGCTATTTTTATTGACGGCGATCCTGCCTGTCTGCATACCTGCCAACTTGCCGTCGTAGGGAGCCGGAGCCACTCCTGGTATGGAGAACGTTGGGGACGTCTGCTTTGCGAAAGCCTTGCGAAAAGCGGTTTGACGATCACCAGCGGCCTTGCCCGGGGAATTGATGGCGTAGCACACAACGCCGCGGTGAGTATGGGGGGAAAAAGTGTAGCGGTGTTAGGGAATGGCTTGGCAAAGATTTATCCTCGCCGA [...]
+TCAATCACCATTTCTCGTGTTTCGAGGTTTAGCACCTGAATCTGCTCAAGGAATAACAGGAACCCCCGGCAACTGGCATCAAGCCTTTCACACTCTTCAACCGTATAAATGCGCATTGAAAGAGGGTCGGAAGCAAGTTGCATGGGTTCCGCGAGGCCATCCTGATAGTCAGCGAGTTTTTCCAGCCACAGCAGCGCATTGTAGATGTCTTCGCGATCAAACCCAGCGTCGGTGAGATCACGCTCCAGTCTGTCCTGATCCACGCGCAGCTCGGCTTCGTTATGGATGTATGTTTCAAACAAATACATTAGTACGTCGAACATGGCTTGCCCTCCTTAATCGGACATAGCCGCCGGGTACAGCTGCGATCCATCCTGCTAACTCCAGTTCGAGTAGCTGAGCCACTACCGCTGGCACAGGTTGGCCGGCACGTTCAGCGACGACGTCAACAGGTGTTACCTCATCTCCTACGTTAGCCAGGAGCTCAGGAAA [...]
+NODE	721	5046	259417	258016	0	0
+GCGTCAGCCTTCAGCCACAACGTGACGTCCAGCGGATCTTTCTCGCGATATTCGAGAATGATGAAATTGTTGCGATCGACAAAATCGGTGCGGCTGCCCATTAAGGAGTGCTGAATTTTAACGTTTTCCGGATCGAGTTGCGCCGTCAGCGGCGTGCCTATCTGGTAGTTCACGGTCGCGTTAACGCTAAAATCGTTACTATCGCCAGTACCGGCTTTGTAATCCGTACCAACCGTGACCAGCGGTACCGGCGTATATTCCAGCCCCAAAGTGACGGCATGAGGATCTTTTTGCAGATTATCGGTGCCAAACAGCGCTACTTCATCGCCGTAGTACTGTTCGTAAACTAATTTAGCGCCAAGCTGCGGATAAAACGGCAGCCAGCTTTCCATGCGGATATCCCAGCCGCGCGCGGGTCGTTCTTCATAAAAGTCGAAATCTTCGGAGTCTTTCCAGTCAGAAAGAGGATGGTAATAGTTGCCGGAGAATTTC [...]
+GCGTGCTGCTTCTCTGGCGTATCAAAATGCGGTGACGGCGGTAAGCGCCGATAAGCCGGATAGCATTCCCGCCGCTGAAAAATTCGCGGCTGAGAATAAAAATACCTATGGTGCGCTGGCGTCTATGGAACTGGCGCAGCAGTTTGTGGATAAGAATGAACTTAAAAAAGCCGAAGCCCAGTTGCAGCAGGGGTTGGCGGCCACCAGCGATGAAAATCTCAAAGCGGTGATTAATCTGCGTCTCGCTCGCGTTCAGTTGCAGCTTAAGCAAGCTGACGCCGCGCTGAAAACTCTGGATGCCGTTAAAGGCGAAGGATGGACGGCCATTGTCGCTGATTTGCGCGGCGAAGCGTTGCTGAGTAAGGGTGATAAAAAAGGCGCGCGCAGCGCATGGGAAGCGGGCGTCAATAGCGATGCTTCTCCGGCGTTGAGCGAAATGATGCAGATGAAAATCAATAATTTGTCCATCTGAGAGGGACCCGATGCAATTGC [...]
+NODE	722	7119	432604	425220	0	0
+GGGCTAATTACTCGTTAATTAGTTTTGAATTGAAGAGGGCGCTTCGGCGCCCTTTTTGTTGCCTGCTATTTAGCCGCTGTTATATTTATTTGCCTTTTTTAACGCTTCTCCCGTGGCGTAAATCGCTTTGTGCTATTGTAATCATAACCATTCTCATTTACACTTTGTGCGGAAATTGAACGGGAGCGATCATGTACGTTTGTTTGTGTAATGGTATAAGCGATAAAAAAATCCGCCAGGCTGTACGACAATTTCATCCGCAGTCATTTCAACAGTTGCGTAAATTTATTCCTGTGGGAAATCAATGTGGTAAGTGTATTCGCGCCGCGCGAGAAGTGATGCAGGATGAGTTAACGCAAATGCCGGAATTTAAAGAGATCGCCTGAGTCACACTCTTTTTTTTGACATCCCTGTAGCCCCATCTACGCTCTAGAGAGTGGAAGCGGAGGGACTATAAAATGAAAGGTGATGTTAAAATCATAAATTATCTCA [...]
+CACATCACCTTTTTTGACCTTACCACGCGGAATCGCTTCTTTGATGGTGATCTTAATGATGTCGCCTACGCCTGCGTAGCGACGGTGCGAGCCACCCAGAACCTTGATACACATTACGCGACGTGCACCGGAGTTGTCGGCGACGTTCAGCATAGTCTGTTCTTGGATCATTTTAGTGCTCCGCTAATGTCAACTACTACTGAGACCCGAAAATCAGGTCGTTAAAAAAACCCCATATCGAGGGCGCGGCATTATAACACCGCAAATCAGATATGGGTAGAAAAAATAAACGGCCCATCGCTGAGCCGTTTATTCGTTGAGAATGCGTACTGTATTACAGAACCGCTTTCTCTACAACGCGAACCAGAGTCCAGGATTTGGTCTTGGACAGCGGACGGCATTCGCGGATTTCAACCACGTCGCCGATACCGCATTCGTTGTTCTCGTCATGTACGTGCATTTTGGTCGTACGCTTGATGAATTTACCGTAGA [...]
+NODE	723	4308	239834	234769	0	0
+GACCAGCAGCGTAGGTACGCTCCTGATAGTTAACGGTCAGTGGGAAGAAGTCCTGGCCTGGCTTGGCTTTTTTCTGGCCGACAACGGTAACGAATACGGCGGTGTCATCCATGCTTACCATAACAGCGGCAGTGGCCTGACGCGCCATCATGCCAGTTTCCAGCGTAACGGTATGCTGACCGTACTGGAATTTACGAACGATCGGATTAAGCAAAATAATATCCTTTCCAATTTTTGACGGCATAATACGCGCCGTCGTTAATACCCGATCTTCTGCGCATCCTCGCGACTAATGACAACCCTAACCCTGATATGGGTAAAGCCTCTCATTAGCCGCGCGAACCTCTGCAACGGAAGATCATTCATAGCAACAATACATTAGTTTCCAGCGAATTGCTGCCATCTGCTGGAAAAAAGGGGCCATGAAGGCCCCCTCTTTCTGAAACTCGAAAGAATTAGCGACGCAGACCCAGACGCTCAATCAGCGCGGTG [...]
+AAGGCGGCAAGCGTAAAGGGTCTTCTTTACAGCAAGGCTTCCAGAAGCCCGCTCAGGCCGTTAACCGTGACGTGGTGATCGGTGAAACCATCACCGTTGGCGAACTGGCGAACAAGATGGCGGTGAAAGGTTCTCAGGTCATCAAAGCGATGATGAAGCTGGGCGCCATGGCCACCATCAACCAGGTCATCGACCAGGAAACCGCACAGCTGGTTGCCGAAGAGATGGGCCACAAAGTTATCCTGCGTCGTGAAAACGAACTGGAAGAAGCGGTAATGAGCGACCGTGATACCGGCGCTGCGGCTGAACCGCGCGCTCCGGTTGTGACCATCATGGGTCACGTTGACCACGGTAAAACCTCTCTGCTGGACTACATTCGTTCCACGAAAGTAGCCTCTGGCGAAGCGGGCGGCATTACCCAGCACATCGGTGCTTACCACGTTGAAACTGACAACGGGATGATCACCTTCCTGGACACCCCAGGTCACGCCG [...]
+NODE	724	51	2083	2023	0	0
+TATCATTAGCGCGACAGCGAAAAAACTCGGCATGTCGATGGACAATGTCGT
+ACGCAGGTTAGCCTGATGCGGCACCAGCCAATCGAGTTCTGAGCGATCCAG
+NODE	725	1556	96471	94975	0	0
+CTGTTCAACGATTTTCTGAAGGCGCAGGAGTATTCATTACTGATATCCTCCATTGCGCCTTCGGGAACCCACAGGACCAGCTATTTTACCGATAGTGTTTAAAAGGCGTAAGTAATGCCGAGCATGAAGTCATTGGAGGCAGCCTTTGTGTCTGCATCATAAGCGGTATGTTCATCACCAGCATAGTGATTTTTTGAAATGCTTACTTTGCCAGCATTAATGTATTTATAACTGGCGTCAATCATAATATTATCTGTTACAGCATATTTTGCACCGATACCTGCGCCCCAGGCAAAGTTATTTTTTGAAGCAGACAGAGTTTCATTAATACCAAAACCAACAGGAATGGTGTTATTACTTAGCTTCACATGAGCGAGGCCAACGCCTGCGCTGATATAGGGAGTAAATGCCGTACTATTGTGAAAATCATAATAGCCATTAACCATGTAAGTGGTCATTCGGACCTGATTTTTTACATTTATGTGTACTGGA [...]
+TTCTTTTGGCGCTTTCGCCACCGCTGTCCCCAATCCTCCCCTGCCCGCCCAGGATCCTATTGTCCAGCATCTGAAGCTGACAAACGATCAGATTACCCGGATCAAAAAACTTCACCAACAACTGGAAACCGACGTCAGTCAGATTTCTATGAAGGGAATTAAAGACGGTGCGCTGATAGAGGTGATTAAATCCGGTAAATGGGATGACGCCGCCGTAAAACAGCAGCTTGCAGCCTTCAGTAACATAGAACAACAGGCTCGCTATTATCGGGTTAAATATTATTTTGATTTAAGCAAAGTCTTAACACCAGAACAGCGTCAACAGGTACAACAAGATCTCGCCCAGGCACTTGAGTAAATATTTTTGCCCGTTATTCCTGGATAACGGGCTTTATCCAGGTCGGGTACAAATTCATCTTCATCTTTTTGTTACAGCATCGCTCTATCTAACACTACCCGTTACATAACGTAGAAGTGAAACCGTACGTGGGG [...]
+NODE	726	127	8116	8116	0	0
+ACTGGGATAGGCTCTAAGATAATTGCTCGCCATTCGTGGGTAATAAGAACGGTTAATCACTCCCTTATCAGGATATCTTCATGAAAAACTTTGTACGCACAACTTTACTGGCAGCGACTCTGGCGGG
+GATATCCTGATAAGGGAGTGATTAACCGTTCTTATTACCCACGAATGGCGAGCAATTATCTTAGAGCCTATCCCAGTAGGCGTTATTGGCGCAGCCAGTTTGGACACGGACAGCGCGCAAAAACCGG
+NODE	727	10378	586697	577500	0	0
+ACCATAAGTAAAAATTGTGTCTGAGAGGCATCCATCTTGATAGTAAACAGATCCTGATGAGCCGGGCAGGCCAGATGTTGTAGCCGTTTAAAGGCGTAAATTTTATTTATATCCTCTACGTTAACTTCCATCTCTCCAGGTTCACCACGGCCCTGTCCGTGAATGATGGAGTGTAACACTTCCAGAGCATGGTCCTTTTTTTCCGCTCTAAAATGATCCTGGACTTTATCCCAGCCCCCCATATGGATTGCTTTTTCTTTATCTGCGCTTAACAGATGAGCAAGCCGACTTTCATTAAGCGTATAATTTTGATGATTACCGAAGCTTAAAGTGACTGGCATAATATTTTCCTTCAAATTTATATTATTCAATATCCGGAGTAAAATATATCGTTCAATTCTCTCTTTTTTATTAAACAGATAAAGTTTACTACAGGAGAGAATTTGAACGACATTATTAATACAGCACATTTATGGTTGGTAATCCTTTGTG [...]
+TTTATCCCCGCTGGCGCGGGGAACACTTACTGTCTGACATAATTTTCCTCATAAATTTCGGTTTATCCCCGCTGGCGCGGGGAACACGTTGCGGCGCTCGGTGCGCGTCAGCCAGCCCTCGGTTTATCCCCGCTGGCGCGGGGAACACGATCAGATGTCCGGCGGGCTGGGTGAAGGCGGCGGTTTATCCCCGCTGGCGCGGGGAACACGCCGCTTTTTCCAGGGCTGAACGGTGGGCGCGCGGTTTATCCCCGCTGGCGCGGGGAACACGGCGATTTCCGCAATCATTTCGGCGGTCACGTCGGTTTATCCCCGCTGGCGCGGGGAACACTCCGATTTAAAAAACGTGAATATTCCTACCGTCGGTTTATCCCCGCTGGCGCGGGGAACACCCAACAAACACCCGGGGAAAAGAGGGGGGATGCGGTTTATCCCCGCTGGCGCGGGGAACACATTATCACGGGGCGCCCCGGAGGGGCTGAGAGCGGTTTA [...]
+NODE	728	3244	182690	179897	0	0
+GGGACTGGGACAGCGCCTTGTGGATGATCGGCGGCCCGATCTTCTTCTCGTTGCTGGCGATGGCGATTTATCAGAATTACAGCAGCCGCATGAGCGCTGATCCGGAGTGGGCGGCGGAGTAATCTTTGTCCGGATAGCGTTAGCTCATCGGCTTTATGAAAAGGATATTTATAATGAGTCCGAAAATGTTTGCATTGTGCGCTATCTGGATTTTACTGGCTATCCCACTCATCGCTGTATTTTCAGTCCTGGATAAAGAGTGGATGATTGGCGAGAGTGGGATAACCAACATTTGTGATGTGATGAGAACTGTCGAAAATGATGATTCCAGAGGTTTTGGCGCGATGATGACGCTGCCCCTGTTTTTCCCGTTTTTTTACGTTACTGTGTATAAGAAAATACGTAGTTGGTTTTTGTACTGTGTCGCGTTGGTGATATTTGCTTACTGGTCCTGGCAATTCTTCTTGCGCTATCAGTTTTGTGTGTGATCTA [...]
+AACAGCCTGCGCCAACGTGAAGCGGAACGCGCGCTGGAAAGCACTGAGCTGCTGGCGGAAAACAGCGCCGGTTTGCCGGAAGGCATCGTCGAACAATTTAAAGTCAACCGCGAGCTGTCACAGGCGCTCAATCAACAAGCGCAGCGGATGGATCTGGTCGCCTCGCAGCAGCGACAGGCCACCAGCCAAACGTTACAGGTGCGTCAGGCGCTCAATACGCTGCGGGAGCAGTCGCAATGGCTTGGCGTGTCCAACATGCTTGGCGAAGCGCTGCGCGCGCAGGTCGCCCGTCTGCCAGAGATGCCTAAGCCGCAGCAGCTTGATACGGAAATGGCGCAGCTACGCGTTCACCGTATGCGCTATGAAGAATTACTCAATAAGCAACCGCAGCTACGGCAAATACGTCAGGCCAATGGACAGCCGCTGACCGCCGAGCAAAACCAGATTCTTGACGCCCAGCTTCGCACTCAGCGCGAGCTGCTCAACTCTTTG [...]
+NODE	729	1708	81635	80993	0	0
+AGCCCACGAGAATATCCGCCGTCCAGCTATTTCCCTGCTCATCAAACACCGTAACGTCATCCGGCGTCTGGCGGATATCGACAATATGGGTCGAGGTACGATACTCCACGCCAGGGTGCGTCAGCGCCGCTTCCCATACCGTTGCATGAATATCTACCCGGTGAATTACCGCATACGGCCCGCCAAAATGGTCGCGGAACGCCTGTCCGGTTTCAATGCATACCACTTCTTCGGCATTCACGGCATCCATCATGGTAATGTGATCGGTAAACACCGCACGCTGGCGGGCAACATCGCCCCCCCCGAGACTATCCAGCGCCGAAAAAGCGTTCGGCCCAAGCTGAATACCCGCGCCAATCTCGCCAATTTCGTGCGCTTTTTCCAGCAGCATGACTTTTATTCCCTGGCGCGCCAGCGACAGCGCGGTCGCCGCGCCGCCGATTCCGCCACCTACAATAATTGCGCTTGTCACGTGAGTCATGGTCATTCTCC [...]
+GCGGAGGGGGATACCCTGGAACTGCCGTATCCGGCGCAGACCGATAACTACCATTATGAAATTGAGCTGGTGGTGGCGATTGGTAAAAAGGGGAGCGATATTCCGCTCGAAAAAGCCCATGAATATGTCTGGGGATACGCCACCGGTCTGGACATGACGCGTCGCGATCGTCAGATGGAAATGCGTCAGATGGGACGCCCGTGGGAAATCGGCAAAGCGTTCGATCTCTCCGCGCCCATTGCGCCATTACACAAAGCCGCTGAAACGCATAATGTGGATAACGCCCCTATTTGGCTACAGGTTAACGGCGAAGACCATCAACGCAGCGATATTCGTCACCTGATTTGGTCGGTGAATGAAACCATCAGCTATTTGTCCGGCTTTTTTGAATTGCAGCCAGGTGATTTGATTTTCACCGGTACGCCAGAGGGGGTGGGCGCAGTGGTGAAAGGGGATGTTATCACCGGGAACGTAGAAGGTCTGACGCCGATT [...]
+NODE	730	12497	652032	646201	0	0
+TTATAAGATTCGAACCTGCCGCAGGTTCGGGTCTTGCCTGATGCGCTGCGCTTATCAGGCCTACAGACGACACCGCACACGTAGGCCGGATAAGACGTTAATCGCCATCCGGCACAGACGACACCGCACACGTAGGCCGGATAAGACGTTAGTCGCCATCCGGCACAGACATCATACCGTCAACGCCGCCACCAGTTTCTCCAGTGCTGGCGTTGCCTGCTGCTGGTCATACACAATATACAAATCCGCCGGAATACGTTCCTCTAACGGACGGAACACCACACCCGGCCAGCTCATTTGCGCATAGCCATCAGCCATCAGCGTAATCCCGATCCCCATACTGATCATCGCCAACACCGTTTGCGGCTCAACCACTTCCCGAATAATCATTGGCGAGAAACCCGCCTGTTGGCATACACGTTGTAAAAATCCCCAATCAGAATGTACGGAAGGCAACGTAACAAAATATTCATTGCGCAACGCCGACAGCGG [...]
+GCCTTTTGCTTCTTTAACAAACTGAGCAGCAGGGCGGGTGTGCAGACCGTTCGGAGCGGTAATGGTAACTTCTTGCTGGAACATTGTATTTCCCCAACTTATAGGTTTAGTGTTGTGGAACTAAAGTCTAGCCTGGCGGCTCAACTTTAGCCTGTATTGTTAGCGCCGGCGTAAACGGGACGCGACACAAAAGGTGTTCTACGCAATCCGTTGCTGGCAACTTATGGCCGCTGACGTTTCGCTCGTCATTAAACATTATGCCGCGAAAGGAAGATTTGAACCAAATCATAAAATCGATTCAGCTAACGCTTTTCCTGTAACGATTAATTTCGCGCATCAAAATAATTAGTCTGGTTAAATACCAGTTCCGGCAGGGTGAATCAATGCCAGGTGAGGTGAAAGTTTGAAGCAGGCCACAAAAAAGCACCCAAAAAGGTGCTTTTTTACGCGTTTTTAACATGCTGGCATCACTGTTGCAGTTCTTTCTCAGTA [...]
+NODE	731	1163	68137	67597	0	0
+TGGTCTTCGAGTTCACCGACACCCAGGGTGTGATGGGGATGCACTACGCGCGTCACGATGGTGAAGCGGAAGATGTGGCCGTGGCGCTTAACGAGCAGTATCAGCCGCGCTTTGCCGGTGATGACCTGCCGTCTAACCCGGTGGCCTGTGCGTTGGCGATCGCCGATAAGATGGACACTCTGGCGGGTATCTTCGGTATCGGTCAGCATCCGAAAGGCGACAAAGACCCGTTTGCGCTGCGTCGTGCCGCGCTGGGCGTGCTGCGCATCATCGTTGAGAAGAACCTTGTTCTTGATCTGCAAACGCTGACTGAAGAAGCGGCGCGTCTGTATGGCGACAAGCTGACCAATGCCAACGTAGTCGATGATGTGATCGACTTTATGCTGGGTCGCTTCCGCGCCTGGTATCAGGATGAAGGTTACACCGTCGACACCATCCAGGCGGTACTGGCGCGTCGTCCGACCCGTCCGGCAGATTTCGATGCTCGTATGA [...]
+TCAGGTGGGGCTTTTCTCTGTCTGCCTTTTGATGAATATCTGAGACAAACAGTCTCAAGCACCCGCAGCTATTCTAACGCCAATATCCGTACCGCCAGCGTTAATGTATTCATGAAATATTTTTTGCCAATCAATAGAAATAACCGCGTCTATGAGTTACAGAATTATTAGCGAATCGACTGATACTATTTATGTTATAAAAAAACCTGCCCGAAAGCAGGTTTTTGTTTAATTAACTGAACGCTTATTGCAGTAACGAAATATCTGCAACCTGCAGGAACAGTTCGCGTAGTTTCGACAACAGCGTCAGGCGGTTGATACGGATATCTTTCTCTTCCGCGTTAACCATGACATTTTCGAAGAATTCATCCACCGGCGCGCGCAGAGCAGCCAGCTCAATCAACGCTTCCTGATAACGACCATCGGCAAAGTACGGCTGAAGCTTATCACGCAGCACAACCAGATGTCTGGCCAACTCAATTTCCGCCGCTT [...]
+NODE	732	1	211	211	0	0
+C
+G
+NODE	733	5	1619	1619	0	0
+CAGGA
+GTATA
+NODE	734	1	333	141	0	0
+A
+G
+NODE	735	3	951	613	0	0
+TCG
+TAT
+NODE	736	11	4130	4060	0	0
+AATTATTTTGG
+GCATAGATAAC
+NODE	737	326	22619	22560	0	0
+TCAAATTCAAAATTTACTTATTCTGATATATCTCATTTACATTTTGACGAATGCCGATTCACTTATTCGACACTGAGTGGTGTAGTCTGCAGTAATACGAAATTTAGTAATTCAGACATGAATGAAGTGTCTTTACTGTATTCAATTACTACACAACAACAGCCCTCTTTTATTAATACAACATTAAAAAATACGCTTATACCTTACAAAGCCAACCTCTCCGACGTTATTTTAAATGAACCGGATAATTTATCACCTCCGTCAGTGTCAGGGGGCGGAAATTTTATTCGTCTAGGTGATATCTGGCTGCAAATGCCACTCCTTTG
+GCCCCCTGACACTGACGGAGGTGATAAATTATCCGGTTCATTTAAAATAACGTCGGAGAGGTTGGCTTTGTAAGGTATAAGCGTATTTTTTAATGTTGTATTAATAAAAGAGGGCTGTTGTTGTGTAGTAATTGAATACAGTAAAGACACTTCATTCATGTCTGAATTACTAAATTTCGTATTACTGCAGACTACACCACTCAGTGTCGAATAAGTGAATCGGCATTCGTCAAAATGTAAATGAGATATATCAGAATAAGTAAATTTTGAATTTGAAAAGTTGAACCCCTTGATAATATCGCCGTCTCGCTTCATGAAGCTGGGGG
+NODE	738	51	2783	2736	0	0
+TTCTTCGCGCACGCCCTGATAGCGCTCGTTCATCACCCATGTGCCATCTTT
+ACCTTCCTCTTTTGCGTCATACGGTACCTGGGCGCGGACGGCGGATAAACT
+NODE	739	10	542	523	0	0
+ACCTTCACAA
+TGATGAACGA
+NODE	740	19	936	905	0	0
+GAAAAAGATGGCACATGGG
+TCCGCACAGGGCAGCACGC
+NODE	741	1104	57529	56868	0	0
+TGGAAATGCGTGGTAAATTCATGCAGGAAGCGGTTCCGGAAGGTACTGGCGGCATGTCTGCGATCATCGGTCTGGATGATGCCTCTATTGCTAAAGCCTGTGAAGAATCTGCCGAAGGGCAGGTTGTTTCGCCGGTTAACTTTAACTCGCCGGGACAGGTGGTTATCGCCGGGCATAAAGAGGCGGTAGAACGCGCGGGCGCAGCCTGTAAAGCCGCTGGCGCGAAACGCGCGCTGCCGCTGCCGGTGAGCGTACCGTCGCACTGCGCGCTGATGAAACCAGCGGCAGATAAGCTGGCGGTTGAATTAGCCAAAATTACCTTTAGCGCGCCAACGGTGCCGGTAGTGAACAACGTTGACGTGAAATGTGAAACCGATGCTGCCGCTATCCGCGATGCGCTGGTTCGCCAGTTGTACAATCCGGTACAGTGGACGAAGAGCGTGGAATTTATCGCGGCGCAGGGCGTTGAACATCTTTATGAAGTGGGTCCAG [...]
+TAGTTTGCCTGACCTGCATTTCCCATGGTACCAACCACAGAACCAATAGTGATAATGCGACCACAACGCTTTTTCATCATAGCGCGCATTACCGCTTTTGACAGGCGGAAAACGGATGATAAATTGGTTTCGATAATATCGTTCCACTCATCATCTTTCATTCGCATCAACAGATTATCACGAGTGATACCGGCATTATTAACCAGGATATCCACTTCACCAAATTCTGCGCGAATATTTTCCAGAACAGATTCAATAGATGCAGGATCGGTCACATTCAACATCAAACCTTTCCCGTTAGCACCTAAATAGTCGCTAATGTTCTTCGCACCATTTTCACTGGTCGCAGTCCCGATAACTTTCGCGCCGCGGGCAACGAGAGTCTCTGCAATTGCGCGGCCTATGCCACGGCTTGCACCAGTCACCAGCGCAATCTTTCCTTCAAAGCTCATGGTTTTCCTCTTTTATTGCGTAAGTGCCGCAGACAGCGCC [...]
+NODE	742	162	63096	51901	0	0
+CCAGCCACACTGGAACTGAGACACGGTCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCACAATGGGCGCAAGCCTGATGCAGCCATGCCGCGTGTATGAAGAAGGCCTTCGGGTTGTAAAGTACTTTCAGCGGGGAGGAAGGTGTTGTGGTTAATA
+GCCTTCTTCATACACGCGGCATGGCTGCATCAGGCTTGCGCCCATTGTGCAATATTCCCCACTGCTGCCTCCCGTAGGAGTCTGGACCGTGTCTCAGTTCCAGTGTGGCTGGTCATCCTCTCAGACCAGCTAGGGATCGTCGCCTTGGTGAGCCGTTACCTC
+NODE	743	12	4563	4471	0	0
+ACCGCGGCTGCT
+GTAAAGCGCACG
+NODE	744	9	3611	3541	0	0
+GGCACGGAG
+TTACTGGGC
+NODE	745	23	9377	9193	0	0
+TTAGCCGGTGCTTCTTCTGCGGG
+GAGGGTGCAAGCGTTAATCGGAA
+NODE	746	2070	91608	90896	0	0
+ATGATGCGCCCGTCGTCCATTACGATGATTTGATCAAAACGGGCCAGGCCGCGCAAACGGTGAGTCACCATCAGGACGGTTTTCTCGCGCATCACATCAGCAAGTAATTCCAGCATTTCGCTCTCGGTGGTCGCATCCAGCCCCTCAGTGGGCTCATCCAACAGCATCAACGGGGCATCGTGCAACAGCGCGCGGGCGATGGCCAGGCGACGAAGTTCGCCGCCGGATAGCAGACGACCGCCTTCGCCGAGCCAGCTATTAAGCCCACTATCTTCGAGCAGATTTTCGAGGCCGACGCGACGCAGCATGTCGGAAAGGGCTTCGTCGCTGGCATTGGGCGCCGCCAGTAATAAATTATCACGCAGCGTGGCGCTGAACAGGTGGACACGCTGCGGCACCACGCTGATAGTCCGGCGTAAGGCGGATTCGCTCAGCGAGGATAGCGGAAGATCGTTGAGCAGAATTTCGCCTTGTTGCGGGTCCCAGGCGCGG [...]
+TTTTACCGCTGCTGCCGCAGGGAGTAGACACCCCGCTCGGCAATCATGCCAGCAGACTTTCCGTCGGCCAGGCACAGCGTGTAGCGGTCGCCCGTGCGCTACTTAATCCCTGTCAACTGCTACTGCTGGATGAACCAGCGGCAAGCCTGGACGCTCACAGCGAGCAACGCGTCATGCAGGCGTTAAAAGCGGCGTCAAAACGCCAGACCACATTAATGGTGACGCATCAGTTGGAAGATCTCGCCGACTGGGACGCTATCTGGGTTATGCAAGATGGCGCGATTGTCGAACAAGGCAGTTATGCCGAACTCAGCGCCGCCAACGGCGCTTTTGCGACGTTATTGGCTCACCGTCAGGAGGATATTTAAATGCGCGCGCTACTCCCTTATCTGACGCTTTATAAACGCCACAAATGGATGCTAACGCTGGGAATTGCGCTGGCAATCCTGACCCTGCTTGCCAGTATCGGGCTGCTGACGCTTTCCGGCTGGT [...]
+NODE	747	6222	349151	344299	0	0
+AAAATTGCCATAAATAACAATTGGTTGTTTTGATATGTTTTGAAAGGTTTTACTTCGTTTTTAATTTAATTTAGGAGATTTACTTCCCAATACAGAAGCTGGAGAAAATCCGTCCCAGCAGGTCGTCGGAGGTAAACTCGCCGGTAATCTCGCTTAAGCTTTGCTGCGCCAGGCGCAACTCTTCCGCCAGCAGTTCCCCCGCCCATGCGCCTAATAGCTGCGCTTTGCCCTGCTCAAGATGGTCAGCGGCTTCCGCCAGCGCCTGTAGGTGACGGCGGCGGGCCAGGAAGCCGCCTTCCATATTGGTATCAAACCCCATGCTCTGCTTGAGGTGGTTACGCAACACGTCGACGCCTTCGCCGGTACGCGCCGAGAGGCGAACCAGTGAGTGACCGTTTACTTCACTAATACCCAACGTTTCGCCGGTGATATCCGCCTTGTTACGTACCACGGTAATCGGTAGATTTTTGGGCAGACGGGCGATAAAGTCCG [...]
+CGGTCAGAGAAAGCGTACCGTCCGCTACCTGGAGGAGCAGGTTACCGAGAATCGGCAGCGTAGGACGACCGCCCAGCGGGCCGCTGACCTGCTGAAGCGGTTTTAATAAATGTTCACGTTCAACGGTAAATTTCATAGGATCACGACGATAGTGTTCTGATTAAATTCGAAAAATCTTCTTTGATATCGTGGCTTTCTTCACGCAGTTGCTCAATTTTACGACAGGCATGAAGTACGGTAGTGTGGTCGCGCCCGCCAAACGCATCGCCGATTTCCGGCAGACTGTGGTTGGTGAGCTCTTTTGCCAGCGCCATAGCCATCTGGCGCGGACGTGCTACCGAGCGAGATCGACGCTTAGAAAGCAGATCCGCAATTTTGATTTTGTAATACTCGGCCACCGTCTTCTGAATATTGTCGATGGTGACCAGTTTTTCCTGCAACGCCAGTAAATCGCGCAGCGCTTCGCGCACAAAGTCGATAGTAATCGCCCGG [...]
+NODE	748	2	383	383	0	0
+CA
+AA
+NODE	749	15	5303	5180	0	0
+GCGCGCAAAAACCGG
+GGTGGGATAGGCTCT
+NODE	750	6	2579	2331	0	0
+AGCGTA
+ACGCCT
+NODE	751	9	3406	2964	0	0
+CACGTAGTA
+GCGCCAATA
+NODE	752	7	3100	2743	0	0
+CGTGAGG
+ACTGGCT
+NODE	753	54	5243	2659	0	0
+GAACGCCGCTAGCAGCGGCCCGAAGGGCGAGCGTAGCGAGTCAAACCTCACGTA
+GTTCAAAACGCTAACGCGTTTTGGCGAGCACTGCCCAGGTCCAAAATGGCAAGT
+NODE	754	7	1796	1171	0	0
+CTACGTG
+TAGCGGC
+NODE	755	2117	119808	119029	0	0
+GAAGCCGACTTCAATCTTCGTATGTGAATAGCGCAGCGCATTACGAACAATATTTTCCAGCGCGCTTTCCAGCGCGTTTGGGTTGCCATAGAGCGGCCACGGCCCCGGCGGATAATTTACCGTTAACGACTTGCCCATCTGTTCGGCTTCAAAGGCGGCGTTATCCAGCACTTCGCCCCATAGCTGATTGGCTTTCATCGTTTCGCTGACCAGCGCGTTTTTCTGTTGGTTACGCGACATCACCAGCAGGTCATTGATCATGCTGTCCAGACGCTGCGCTTCGGTTTCAATACGCTCCAGCTCTTTGCTTTCGCCGCCACGACGACGCAGCAGCGCGGTACCCAGTTGCAGGCGCGTAAGGGGCGTTCGCAGCTCATGGGAGATGTCTGACAGCAAACGCTGCTGCGAGGTCATCATCCGTTCCAGCGCCGTCACCATCTGGTTAAAACTGGCGCCAGCGGCGAGGAACTCCTGCGGACCCGCCTCCAGCTC [...]
+CGTCACCGGGGTGCCAGTTATCGCTTGTAACAACTTCAGCTGCGTGGCTTAAAAAACTGAATGCCAGCGTTGAGGCCATAACAGCAGCGGTAACTTTGCGCATCGCTTGCTCCCAAAATCTTTTCTGTCGCGATTCAACGAGAGACAGTTTACGATTCGGGCTGCAAACATGCGTCAGGGGGTGTAAAACAACGTAAAGTCATGGATTAGCGACGCCTGATGACGTAATTTCTGCCTCGGAGGTACGTAAACAATGAATAAAATCCTGTTAGTTGATGATGACCGAGAGCTGACTTCCCTGTTAAAAGAGCTCCTCGAAATGGAAGGTTTTAATGTCCTGGTGGCCCACGACGGCGAGCAGGCGCTTGAGCTTTTGGATGACAGCATCGATTTACTTTTGCTTGACGTCATGATGCCGAAGAAAAACGGTATCGATACGTTGAAAGCGCTTCGCCAGACACACCAGACGCCTGTCATTATGCTGACCGCGCG [...]
+NODE	756	9252	525811	521433	0	0
+CATGGTCACATACATCCGGAAGGCGCAACGTCAAAAGCGTATCAGGATGCCCATGAACGCGCCCATGCTGCCGATATTCAACGCCGTTTTGATGGTCAAACAGTGACTAATGGACACATCCTACTGTTCGGCCTGACCGGAGGGCTTATCCCCTGTCCGGCTGCGATCACCGTTTTACTGATTTGTATCCAGCTTAAAGCGTTTACGCTGGGCGCCACGATGGTGCTGAGCTTTAGTCTTGGCCTGGCATTAACACTGGTGACGGTAGGCGTTGGCGCGGCGATAAGCGTTCAACAGGCAGCAAAGCGCTGGAGTGGTTTTTCGACGCTTGCCCGGCGGGCGCCCTATTTTTCGAGCATTCTGATTGGTCTGGTCGGCGTGTATATGGGAATTCATGGCTATACCGGGATCATGCAGTAAATATGTAACGCTTCTGCTCAGGCCGTATCATTCACGTCGGGTTTCATTCCAGAAGCGTTTTTACTTATCAAA [...]
+TCAGTGAACTTCTATTTTTGTCAGTTTTTATTTTTCAGTTTATTTATTATTAAATACTGTTTCTGGCCTGGATATATTTTCGTGAATAGCCTCCCGACAGCCGCAGACAAAGATATTTGCTGGCGTAACAGCGCTCATAATTTAAAAGATTTATTTATAGTTTGTTATCACGGAAAGATTTTAACTTAATACATGCCAGTAAGGCATCAGGTAAAAATAACCGGAGAGAAGAAGATGAACAAAATGCTATTAGCCGGAAGTGCCGGTATTGTTCTGCTGTCTGCTGCAGCCAGTCCGGTATGGGCAGACGATAATGCCAGTACATTTTCACTTGGATACGCCCAGTCCCATACTAATCACGCCGGGACGTTGCGTGGGGTACGGCTGGCAAACAACTATGAAATGTCACCGGACTGGGGGCTGACAACCTCATTTGCATGGCTAAATGGAAGCCAGCGCTATTCCGATGAAAGCAGTAATGGTCGTGTAACA [...]
+NODE	757	340	5468	5468	0	0
+GGCTGGAGAGGTTAAGAAATCTATTGATAGCATGAGTGGTGAGTGATTTTTTAAATTTAAAGGACTGATATGAAAAAGATACTTTTTTGTTCGCTGCTTCTTCTTTCTGCAAGTTCATTTGCACAACAATTCCATTATCAGTGTGAAGGACGAGATTTAAAGATAATGCTTTCACCTAATGCAGCTTTTCTTGATGGTAAATCATTCGAATATAAGAATGGAGAGACGAATGGGGAAACGACAAAGATGACATTCTTTGGTCCTTCTGGTGAGGTTCTAAAGTTTTTGGTTAATCCTGTCAATAACTTATCTCGTATGCCGTCTTCTGCTTGAAAAAAAA
+ACCAAAAACTTTAGAACCTCACCAGAAGGACCAAAGAATGTCATCTTTGTCGTTTCCCCATTCGTCTCTCCATTCTTATATTCGAATGATTTACCATCAAGAAAAGCTGCATTAGGTGAAAGCATTATCTTTAAATCTCGTCCTTCACACTGATAATGGAATTGTTGTGCAAATGAACTTGCAGAAAGAAGAAGCAGCGAACAAAAAAGTATCTTTTTCATATCAGTCCTTTAAATTTAAAAAATCACTCACCACTCATGCTATCAATAGATTTCTTAACCTCTCCAGCCCTCTCGACTAAAGCATGATTTCTCTTCAGCATAAATGTATAGCCGATCCG
+NODE	758	3293	222287	220832	0	0
+AGTGAACCAGACATGGTGTTCAAGAAGCTTGCTGTGAACGATGAGCGCACATGTTTTCTCGGGTGGGAGCTGGAATATATCCAAAAGGGGGCTTTTCTATCAAGATATTTTTTGTTTTGGAGTGACATGTTTATATTGAAGCGCAACTGCTGGATGGGATATTTTATTATGATATCCCATCAATATTTAAATAGGTGAGAATAACTAATTCTGATTTTTAAACACATTAACTGAACTATCCCAGTTAACTCCTCAATAATTGTTTGTAATATTTCCTTGACTAAATGAAGGGAATAGTTTAAACCCTTGAAATGTGTATTTTTTCATATTAAATAAAGAATATTTTCCTGAAAGATTGACCGCGCTGAATAAAGATTCTGAGAGGATTATATATTTTCTCAGCCACATTTTTAACTCTTCTTCTGTGCTTATGCAAATCTGAAAGTTGTTATCTTTACCTTTTATATAAAAATAAGGAACTTGACAGGTAGG [...]
+GTTATCGGCTTTGCCACTCAATGGTTTAGGAACCATCCAACATCTTGTTATCACGGAATTTTATGACAACCATTTCCAGACGATGCTGTAATAAATACCGTCAAAATGATGAAATTTGTGATATTAATCATGTTGTTATAATGGTTTACAAACTCGCTCTTTAAATTCGTATTATTGCCGTACAACACGCATTAGGGCTATCAGGCCATTATCAGACGCTTAAACAGCAGCTGCTGCACGTCCTGCCGATGTGCCAGGATCGCATATGCTGTCACTAACGTTCCGTCTACGGAATACAAAACCCGGTAGCCTTCAGCGTGGTTAAACTCCCGGTATTTGGCGCAGCCAATTTTCAGCAATTCGGGGCAAATCTGGCAGCCCAGCGGGAACTGACCCACGGTACTCTCAAACTGGGTGAGAATATCTGCGATAACCGGACGAGGCTCAACATCAACACGCTTCAGGAAACTCGCTATTGTGTCGATACAGTGC [...]
+NODE	759	25	10759	7470	0	0
+GCGTACTTTGCAGTGCTCACACAGA
+ACCGCAGGTTCCCCTACGGTTACCT
+NODE	760	10	4051	2805	0	0
+CTGATGAAAA
+AAGGAGGTGA
+NODE	761	2	511	265	0	0
+GT
+GT
+NODE	762	147	10232	10232	0	0
+AAATAGCAAGGCGTTTACGCGTTGGGAGTGAGGCTGAAGAAATAAGGCCGTTCGCTTTCTATTAATGAAAGCTCACCCTACACGAAAATATCACGCAGCGCGTGATAAGCAATTTTCGTGTCCCCTTCGTCTAGAGGCCCAGGACAC
+TGCGTGATATTTTCGTGTAGGGTGAGCTTTCATTAATAGAAAGCGAACGGCCTTATTTCTTCAGCCTCACTCCCAACGCGTAAACGCCTTGCTATTTACTTTTCATCAGACAATCTGTGTGAGCACTGCAAAGTACGCTTCTTTAAG
+NODE	763	19	3826	3734	0	0
+ACCGCCGTGAAAGGGCGGT
+CTTGCGCGGTAATGTGTGA
+NODE	764	1723	84717	84013	0	0
+CGTTTCGGCTCCGGCTGGGCGTGGCTGGTGCTGAAAGGCGACAAACTGGCTGTGGTTTCTACCGCAAACCAGGATTCCCCGCTGATGGGTGAAGCCATTTCCGGCGCTTCCGGCTTCCCGATCCTGGGTCTGGACGTGTGGGAGCACGCTTACTATCTGAAATTCCAGAACCGCCGCCCGGACTACATCAAAGAGTTCTGGAACGTGGTGAACTGGGACGAAGCAGCAGCGCGTTTCGCCGCTAAAAAATAATTTGCATTGCACGTCTGTAGAAGCGAGTCTGATGACTCGCTTTTTTTGTATCCGCGTAAGGAGCAGCAGATGCATTATCCGGTTGACGTGTTTATTGGCAAAATTCGTGACTATGACGGCAGCCGCCCGAGCGCTATCGCCAAGGTGCAAATCGACGGCGAACTCATGCTGACCGAGCTGGGTCTGGCAGGCGATCAGCAGGCCGAAAAGAAAATCCACGGCGGCCCCGACCGCGCGCTA [...]
+CGTCAGCCCTGAAGACCGCGAGCAGATATTCCGTCCGTTCTATCGCACTGATGAGGCGCGCGACCGTGAATCCGGTGGTACTGGCCTGGGTCTGGCGATTGTCGAAAGCGCCATGCAGCAGCACCGCGGCTGGGTTAAGGCTGACGATAGCCCGCTGGGTGGGTTGCGGCTCACGCTGTGGCTACCGCTGTACAAGCGAACCTAAAAACCATCGGCCTGCGAATGCAGGCCGATTTTTTATCTCGCCATCAAGATTTACCGGGAAATGTCTGGCGCTAAAATCCACTCGGCGCTGTCGTTCCACACGTCCATCCGGGTAATTTTGCCATCGCGCACTTCGAAACGATCGATAAAGCGGTTATCGGCAAACGGGCGACCGTCGGGCCATTCGCCATACAACGTACCGTTGGAATAAATCACAACGTAATCATCATGCTGCACCGCATCAAACTCGCCCAGCGCCTTCTTTACCCACTTGTAGCGAGCGCCGTT [...]
+NODE	765	4319	227178	222552	0	0
+GGAAGTGGGCACTGGTTACTTCGACAAAGTCACCACCATTATTCAGGGTGGCGCGTCATCCGTTACCGCGTTAACGGGTTCCACCGAAGAATCGCAGTTTTGATTGATGCCCGGTGGCGCTGCGCTTACCGGGCCTACAGATAGCGTAGGCCGGATAAGCGAACGCGCCATCCGGCAGGACGTGGTGCCGGATGAGGGGAAAAAATGCCGCGTGGCCTGGAATTACTGATTGCTCAAACCATCCTGCAAGGCTTTGACGCGCAGTATGGTCGATTTCTGGAAGTGACTTCCGGCGCGCAGCAGCGTTTTGAACAGGCCGACTGGCACGCCGTCCAGCAGGCGATGAAAAGCCGTATCCACCTCTATGATCATCATGTGGGTCTGGTGGTGGAGCAACTGCGCTGTATTACCGATGGCAAAAGTACCGACGCGGATTTCCTTTTACGCGTTAAAGAGCATTACACCCGGCTGTTGCCGGATTACCCGCGCTTC [...]
+TAGCATTCGGCAATCCGCGACAGTTCCTGGACGTACTGGCGCAGTTCATCTGGCCCCAGCGCGCAGTTAAGGCCAAAAGTGAGCGCCTCGGCGTGGCGCAGCGAGTTATAAAAGGCTTCGGTCGTCTGGCCGGAAAGCGTACGGCCAGACGCGTCGGTGATGGTGCCGGAAATCATGATCGGCAGATCAACGCCCAGCGCTTCAAACTCTTCTTTCACCGCAAACACCGCCGCTTTCGCATTCAGGGTGTCAAAGACGGTCTCAATCAGAATCAGATCTACGCCACCTTCCACCAGCGCTTTAGTGGATTCACGGTAGGCCGCCACCAGCTGATCGAAGGTGATATTACGAAACGCCGGGTCGTTGACGTCCGGCGAAATGGAGGCCGTGCGGTTAGTTGGACCAAGCACGCCCGCAACAAAGCGTGGTTTTTCTGGTGTTCGCGCCGTCCATTCATCGGCGCAGGCGCGTGCCAGTTTGGCCGCCGCATAG [...]
+NODE	766	76	10734	10734	0	0
+CATGATGAGACAAAAGGGAAAATCTCTGGAGGAAATCAAAGATTTTCTGGATCTGACAGATGAGCAGTTGCTGCAG
+GAGATTTTCCCTTTTGTCTCATCATGAGCACTAATCTGGAGCGCTCTTCAGCACGACCTTTCTCCAGACCTTTCTC
+NODE	767	84	5051	4953	0	0
+GTCAGCTCAATATCTGTCACTGCCAGAAACTACCAAAAAAACGCCTGCACAAGGCAGGCGTGGTGTAAAAGGGAACAGAGTCTT
+GGTAGTTTCTGGCAGTGACAGATATTGAGCTGACTGGTAAATCAATCACACTGACGGATAAGTATGGCAGCAGCGTTCACCAGA
+NODE	768	4419	278918	277261	0	0
+CCCCCCACCACCAGATAATACAAAACACGCCTCCCGTGGCTGGCCACCAGACCCTGAAGCATTGATTCGCCCAGGCTGGTGTGACAACTGGCCATCAGATATAGAGAAACCAGATTTTTGGTGTCAAGTATGTGGTTGTTAATTTTTTACAGAAAACTATAACAACCATATCAGAACTGAGAGTATATCTGGTTATTATGTTTCATCAATTCCTGATGAACTGAATATGACTTCAGGCTGGCGTGTTTTATTAACGTCAGCCTGATTTTTTACAACATCATATGACTGACTTCCAGGCGCAGCCAGCGCGTTCTATATCTAAGCTGGTGATTGTAACGACCCCGACAGTACTTCTGCTTCACCGTTATGGCAGATATCATCGCCTCTTGTCAGATGCCAGACACCTACTCATACTCAACCAAAGCTCTAAATACAAAAATCACCTTATATCTTTTTTTATTATTCCTTGTATAAATGTGACTTGACTCACAC [...]
+TAATTTAAAACATTGCGTTCATGATCTTTTTTAACATTATGTTTTTTAAAGTTTTTTAATATAAATGGTGGTGTTGTTTCATAATACTGTCTGAAAATCAAGCGAAGGAAGTGTCAAACGTGTGATTTTACTGGAAGCGATAACCGCTAACGGTTAATATCGTACCAGAAGCACAAATTGTATCGCTTCTGTCCGAGATCCTGGTACGAAACTGACTCACTAACTTTCAACCAATCATCGTAATGTAGTAACTGGAGGAGCTATGGCTACCAACCCAAGAGAGCACGCCCGGCGAGTGCTGGACACGTTCTGGTGCGGGCGCGGTTTCCCTGTTGATCCAGCTAAGATTGCGAACGACATGGGACTTGATGTCTTTATAACTGAAATGCCTGGCAAGGTTTCTGGTGCCTTGATAAAGCAGAAAGATCAGGATCCAGCGATCTTCCTGAACAGCGATGATAATAAGGTCCGTCAACGTTTCTCATGTGGTCA [...]
+NODE	769	1530	92450	91286	0	0
+AAATGCGCTGTTCTTTGCCGTTGTGCGTCAACACGACGTTGCGCCAGTCCGCCATATCGGTCAGACCGCCCGCGGCGTTAATCGCATCCAGGACGGTTAGCGGTACGTTAGTAATGGCCTGCTGACCGGATTTATTCACCTGGCCGGAGATATACGCTTTTTGCGAGCGGAAAGCGGCGATATTGACATCCACCTGCGGGTCCGCGATGTACTTCGCTAAACGCCCGGTAATATCGCTGCGAATCTCTGACAAAGTTTTACCGACGACGCTAACCTTGCCAATGTAGGGATAAAACATGGTGCCGTCCGGCTGTACCCAGTTGCCGGTATCGCTTGAGCTACGGTACTGGCCTGCTGGCGTGGTCAATTCCGGGTGATCCCAGACGGTGACATTCAGCACATCGCCAGGCCCGACGCGATACTGATAGCTGGCGATCTCCTGGTCCAGCGACATATTCGGTTGCGCGACATTGGGCCGCGGGCGTAATTGCT [...]
+GGTCGCGCTGCCCCGGCGGTAGTTTTTCAGCGAGGATGGCAATAAAGACCAGGTTATCAATGCCGAGAACAAGTTCGATAACGATTAACGTCACCAGTCCGGCCCAGATTGACGGATCGGCAATCCATTCCATAGTAAGAGCAATACCTTCTGTAATATGACAATTGTCACAATTCGATCATGGATAATACGGCGGAAAAATGCAATGCCGCAGAGCAATTTATCTTTGTTACGCGGCTATAAAATAACTTTAAAATAGCCGTAATGTTTCTGTCGGAAACTAAATAATGTCAAGAATATATTTAGGAAATATCGCAGGTGGAGTGGGGTAAATAAATATTGTCAACATCAATAAAATCCTAAAATCATCTGTTAATTCATTTAATATTAATCTTAAAAATATAGAATGGCGGGTTTGTTACCTTGCCTGTCATTAGGTTAGCTGCAACAATTCTTGCAGGATTAAGATAGCGCTCTTAAATATCCTGTCAC [...]
+NODE	770	3022	147467	146233	0	0
+TACGGCCAGGGCGAGGAACCCTTTAGTTAATACACCCAGACCGCAGGTTGCGCCCAGTAGCAAAAACATCCCAATCTTGCCCGTTCGGGTCGTGGCCTGCATCCCCTGCCAGAAACAACACATCCCGGCCGTAAGCCAAAGCGCGATCATCGGGTCGAGTGCCGCATACGTCCCGATACTGTAAACGGCAAAGAGGGAGAGAAAGATAACGGAGGCGAGCAACGCGGTACGTTTATCCCGCCATAAGCGGAACGTCAGCCACGCCACCAGCGCTGCAGCCAGCAATGTCGTTAAAATAGCGCCAGCCCGCACGCCAAAATTGGTAGCGCCAAAAAGCCACTGACCCAGACAGTTTATCCAGTAACCGGCTATCGGTTTTTCAAAATAACGTAATCCCAGAAAATGCGGCACGATCCAGTCGCCAGACGCCAGCATCTCCCGACTTATTTCGGCATAGCGCGTTTCATCCGGCTGCCAGAGCAGGCGGCTATT [...]
+CGATGTTGCGCTTACCCTGCATCATAAGCTATGTCAGGCCGCGCGCCAGTTGCTTAATAGCATCCTGCCCACCATGAAATGCGGCGATATACCTTCTGTTCCCCAGCGTGAGTCTGACGCTACGTATTATGGTCGCCGCAGGCCGGAAGATGGCCTTATCGACTGGCACAAACCGGTTTCCACGGTGCATAACCTGGTGCGGGCGGTAGCCGCCCCCTGGCCCGGCGCGTTCAGCTATAACGGCTCGCAAAAATTCACTATCTGGTCTTCCCGAATTTGTCCGGATGCGCAGGGCGCGCTTCCCGGCTCGGTAATTTCGGTCTCTCCGCTGCGGGTCGCCTGCGCCGATGGCGCGCTGGAGATTATTACCGGCCAGGCCGGAGACGGTATTACTGTACAGGGCTCGCAGCTTGCACAGACGCTTGGTCTGGTGGCGGGCGCGCGTTTGAACCGTCCACCAGCGACCAGCGGTAAACGTCGCATTCGCGTTCT [...]
+NODE	771	11	392	374	0	0
+GCCTCTTCCGG
+AAGACAGGCGA
+NODE	772	3017	160668	157916	0	0
+ATGGCGGCATGGTCGTTCTGAAGTTAACCAGCCGATACCCGGATCTAGCGCGCGCTGCTATCGTCGGCGGCGCAACGCATCGCTTTGCTACGACCCATTACATGTAGGGGATGGAAATTTTTTATGGTAAAGGAATGCCTCAGGGGCAATTGACGGATCGCGATCTGGATAAAATGGCTTCGGATGCGCCCGGGATGGTTAAATTTTATCAGAACATGCATCATCCAGAGCAAAAAGACTACTGGCGCACGTTCCTCAAAGGTGTCTGGCCAATGTGGACAACGCCCACATCGCTGGCGGAAGAAGAGGTGAAAAAAATCCACATTCCTGTGCTATTACTGGACGGCGACCGGGATGAATTTTTCACCGTTGAAGAAGTTACCGAGCTGTACCGGCTGCTGCCTCAGGCGGAGATGACCCTCATTCCCGGTAGCGGTCACGCCATTTTCCAGACGCCAGGAAAAACACCGCTGTTTTACGCATTAGTGCTTG [...]
+CAAAGCGGTCGCGGTCGGCCCAGGACGGGTTGGTCGGGTTGTGGTTCAGGAAATCACGCCACAGGACTTCGGCAATGTCAGCCATACCCATCGGGGCACCCGGGTGACCGGATTTGGCTTTCTGTACTGCGTCCATGCTCAGCGCACGAATAGCATTGGCAAGCTCTTTACGTGAGGACATTTTGACTCCAGATCGGATGTTGAAAGGCCATGCCCGTAACGACTTGACGACAGCGCGTTTTGGGCTACGCCGGAAAATTTGCCAACAATTTACCCCAAGCCGCGCGTCATGTACATGGAACATCCTTTTACCGCTTCAGAAATCTCCGGATCGTGCTCGTATGTTGCGCAATTAGCTAACTTGCCTGCCATGCTTTTCTTTATACTTAACCCAGGCGCTAATTCATCTGCAACGGGCGCATTTCAAAATAATATTGATTCGTATGGAAGAGAAAAATGAAAATTCGCGCTTTACTGCTTGCTTTGGGCATG [...]
+NODE	773	8577	434152	428842	0	0
+CGCCTCGCAGATCAACCTGCTGCACACCCTGCCGCCCGCAGAGAATGACACGGAAGCACCCGTTGCCCCACCGGCGGATTTCCAGAACATGATGAAGAACTTACTCAAGCGTTCCGGGAGATCCTGATGCGCCGTTTGTTATTCCTTTCTCTGGCGGGTCTGTGGCTTTTTAGTCCCGCCGCCGCTGCGCAACTGCCGGGGCTTATCAGCCAACCATTAGCGGGCGGAGGCCAAAGCTGGTCATTATCCGTCCAGACGCTAGTTTTCATCACCTCGCTGACGTTTCTGCCGGCGATTTTACTGATGATGACGAGCTTCACACGTATCATCATTGTTTTTGGCCTGTTGCGTAACGCGCTGGGCACGCCCTCGGCACCGCCAAATCAGGTGTTACTCGGGCTGGCGTTGTTTTTGACCTTTTTTATTATGTCGCCCGTCATTGACAAGATTTACGTGGATGCTTACCAGCCGTTTAGCGAGCAGAAAATTTCT [...]
+GCGACAACCGGATTCACATAGGCGTAGCTGGTCGCCAGCGCCGGACTGACGTTGCGAATCAGGTACATATAGGCATTAATGGCGATAATAGAACCGAACAACGCCAGGTAACCGACGGCCATAAACCCCGATAAACCAGGCAGCGTGGCGAGCTTTTCGCCGGAAAGAAACGCCGCGCAAAGCAATACCACGCCCGCCGCCAGCATTTCAATCGCGCCCGCCATCATGCCCACAGGGAGGGCGATGCGCGAGCCGTAAACGGAACCAAATGCCCAGCTCATCGAACCTATCAGGATCAAAATCGCGCCCCACGGATTGCCGCTTAAATTACCGCCGCTGTTCAGCAGAATAATCCCGGCAAGTCCAATGGCAATCCCCACCCATTCTAATTTGCGCGTTTTAATACCAAAAAAGTAGCTAAAGCACAGCGTAAATAGCGGGACAGTGGCGACCACGACGGCAGCAATGCCCGATGGCACGTTTTGATGCTCC [...]
+NODE	774	8	3454	113	0	0
+AATTGCTG
+AGCCGCGG
+NODE	775	15	927	927	0	0
+CGGGGAGCTGCTGCG
+CAGCGCCTCCGCGTA
+NODE	776	146	5042	5042	0	0
+TCAGCTGGTGAGCCGCGACCACACGGATATCCGGGTGTTAAGCCTGTATGCGTTCAGCGCCTTTGAGCAGCAGCGCTTTGGCGAGGCGGTGGCGGCCTGGGAGATGATGCTGAAACTGCTGCCGGCGGGTGACGCCCGGCGGGCGG
+GCCGCCACCGCCTCGCCAAAGCGCTGCTGCTCAAAGGCGCTGAACGCATACAGGCTTAACACCCGGATATCCGTGTGGTCGCGGCTCACCAGCTGACGCAGCAGCTCCCCGCCGCGGCGGTTATCCTCCGGGTCGGACGAGCGCGT
+NODE	777	7483	437507	431963	0	0
+GGGATCGCGCGGCGCCAGCTCCAGCGCCAACCTGCAAGCCATTATCGCTGGATTAATTATCGCGCTTATTGCCGCCATTCTGTGGAAAGGCGCGATTAAACCTGCGGATATCACCTTCCCAGCCGCAAACGAAATCACCTTTTCCCGGCTGTGTACCGCCCTGGCGATCATGTTCTGGGGATTTGTGGGAATTGAGGCTTTTACGCATTTGTCGTCTGAATTTAAAAATCCTGAACGTGATTTTCCGCGCGCATTGATCATTGGCCTGATGCTGGCCGGCGCCATTTATTGGACCTGTACCGCCGTGGTGCTGCATTTTGGCGTCTATAGCGACAAGATAGCGGCAACAGCCTCGCTACCGCTTATTATTGTTCATCTCTTCGGTATCCAGGCGTTGTGGGTAGCCTGCATTATTGGTTATCTCACCTGCTTTGCCAGCCTGAATGTGTATGCTCAGAGTTTTGCGCGTCTGATATGGACGCAAATGCAATA [...]
+GGGCGCATTAAACCGTAAAGGGGCGCGGTCGTCAACGGCTTTACACGAAAAAAGTGATAAAAGCGCGCTGACTGCCTGCTTTTCAGGCAAAATGCATAAAATCAGTACCCGTCAGGTGAGCGCTCCACCCTGACGGCACTGTGCAAAACGCAGAATATCTTCCGCCAACCGCTGAGCGGTATCTACATCAGCCTGACTGCGGTTGACCAGCATTCGGCTGAGACAACCTTCCAGCACCAGCTCCATCTGCCTTGCAACCATCGCCGGATCGTCAATTTCCAGCGTGGTCAGTAGTTCATGGGTAAAATCATGTGCCGCGCGTTTTTGTTGATTAGCCAGTTGGTGAATAGGATGGGTTGGGTCGGGATAAAACGTACAGGCGGCAATGAACAAGCAACCAGGATAACGGTTATTACTGACACATTCCGAAAGCGCGCTGTAGCGTGCCAGTAGCTTTTGTTCAGCAGAAAGCGTCTCATCAAGAAGAAGCTG [...]
+NODE	778	899	45527	44828	0	0
+GCTCGCCCATTAATAACGGCAGTTCGGTGACTTTCACCGGCTCCGCCAGCAGGCCGCCGTCGCTGGCGATCACATAAAGCGGACGATTATCGCTGGCGGCGATATTCAGCGAACGCGCATTACAGCCATTTAGCAAGCGCAGACGTAGCCAGCCTTTCGGCGCGGAATGCTGCGGATAGATAGCGCCATTGGTCAGCAGCGTATCGCCAAACCAGCCGACGGCGGCGGTCATAATATCCAGTTGATAATCAATCTGGCCATCGGCGGAGAAGCGTTTGTCCTGAATGATCACCGGTACATCGTCGATGCCCCACTGTTTCGGCAGGCGCAATTTGCGAATCTCGTCATCTTCAATCAGCACCAGTCCGGCAAGGCCCATCGCCACCTGGCGCCCGGTTTTGCCGTGTTTGTGCGGATGAATCCAGCAGGTCGCGGCGCGTTGCTGCGGCGTAAACGTCACCGTGCGGGTTCCGCCTGCGGGAATAATCCCCT [...]
+AGGAAATGATTATGTTACGCCGTGATTTCTTAAAATATTCAGTGGCGCTGGGGGTTGCATCAGCGCTGCCGCTGTGGAGCCGCGCCGCTTTTGCCGCCGAACGTCCCGCGTTGCCTATTCCTGACCTGTTAACGGCAGATGCGAGCAACCGTATGCAGTTAATTGTTAAAGCCGGACAGTCGACATTCGCCGGTAAGAACGCGACAACCTGGGGCTACAACGGTAATTTGCTGGGGCCAGCGGTACAGCTTCACAAAGGAAAAAGTGTGACCGTTGATATCCATAACCAACTGGCCGAAGACACGACGCTTCACTGGCATGGTCTGGAGATTCCGGGCATCGTCGACGGCGGTCCGCAGGGGATTATTCCCGCAGGCGGAACCCGCACGGTGACGTTTACGCCGCAGCAACGCGCCGCGACCTGCTGGATTCATCCGCACAAACACGGCAAAACCGGGCGCCAGGTGGCGATGGGCCTTGCCGGACTGGTGC [...]
+NODE	779	5036	281944	277779	0	0
+TTATAAAATATAAAAGGGTCGATTTAAATAATTAAATCGACCCACAAGCGGAATACTCTTAATTACTCATCTTCAAGATAAGTATAACCGTACAGTCCCGCTTCAAATTCCTCAAGGAACTGCTGCTGCAACGCATCGTCCAGATCCGTCTGTTTTACCTGGTCGCGGAAATGCGTTAACAGCGTTTTTGGATCCAGTTGCACATATTGCAGCATATCCGCAACGGTATCGCCTTCGTCCGACAGCTCAACCTCGACGCTACCATCCGGGAAGACAAACACGTCAACCGCTTCAGTATCGCCAAACAGGTTGTGCATGTTACCGAGGATCTCCTGATAGGCGCCGACCATAAAGAAGCCGAGCATCGGCGGATTCTCTGGATCATATTCCGGCATCGGCATCGTCGTGGCGATACCGTCGCCATCGATATAGTGGTCAATAGCGCCATCGGAATCACAGGTTATATCCAGCAGCACGGCACGACGTTCCGGT [...]
+GCCATGCGCCGCTGTAGCTGAACGCGGTATCTGACAGATAAGCGCCCAGAATCCCGATGGTGATCATGAGTTGGTACATTGAGATCATACTGCCGCGAATTTTTTCCGGCGCGATCTCGGACAGGTACAACGGTGCAGTGTAGGAAGCGACGCCGACGGCCAGACCCAGCAGCACGCGAGAAATAATCAGGACTTCAACGTTAGGCGCCGCAGCGGAGAACAGCGAACCGGCGACGAACAGGATAGCGCCGATCATCAGGCTTTTTTTACGACCCAGCTTAAAGGAGAGCCAGCCGCTGCCGACAGCGCCGACGGCCGCGCCAAACATCATGGAGCTGACCACCCATTCCTGAGTGTGTGCGGTAATTTGAAACTCGTCGGTAATGAAGGGTAAAGCACCGGCGATAACGCCGATATCCAGGCCAAAAAGTAATCCTGCCAGGGCTGCAAGAAAGCAGACAAAAAATGTCATGGCCTTGTTGGAACGCCCTT [...]
+NODE	780	106	8060	6530	0	0
+CTGGTTAAAGGAACTGGGCAACCCGTATGCGCTGAGTTTATCGGACAGCGACGGGATGCTGGGGCTGGACCTGGGCGTGTACGGCGCGCCGGAAACCTTCCTCATC
+TCCCGTCGCTGTCCGATAAACTCAGCGCATACGGGTTGCCCAGTTCCTTTAACCAGGCCACCGCCTTCGCCCGGTCGTCCTTATAGTTCAGCCCGACCACCCGGAT
+NODE	781	399	19301	19112	0	0
+TGGCGGCTCTTCCCCTCCTGCATCAGGTCATACACCCTGCGGCGCATGTCGGTGGCTATCATCGCGTTCGAGTCCGCAATGCTGTTGTTCTGGCATTTCGGGCAGCGCAGCTGCTCCGTGAGCTGGCGGAACTGCTGCTCCTGCGCTTCATCTTTAAACGGCATCACGTCGGTGGTCGCCCGCGCTGACCCGGCGATAACCAGCGCCAGCATCAGCATCACCATGCCCGGTAACAGTCTCATTGCGCCGCCTCCCGGCTGTATCTGTCCCACAGCGGTTTCAGTTCACTTTCCCATACCCGGGCATTCAAATCGCCCGCATGGCGGTAGCGGATAATCCCCCTGCCGTCGATGAGGAAGGTTTCCGGCGCGCCGTACACGCCCAGGTCCAGCCCCAGCA
+GACGGCAGGGGGATTATCCGCTACCGCCATGCGGGCGATTTGAATGCCCGGGTATGGGAAAGTGAACTGAAACCGCTGTGGGACAGATACAGCCGGGAGGCGGCGCAATGAGACTGTTACCGGGCATGGTGATGCTGATGCTGGCGCTGGTTATCGCCGGGTCAGCGCGGGCGACCACCGACGTGATGCCGTTTAAAGATGAAGCGCAGGAGCAGCAGTTCCGCCAGCTCACGGAGCAGCTGCGCTGCCCGAAATGCCAGAACAACAGCATTGCGGACTCGAACGCGATGATAGCCACCGACATGCGCCGCAGGGTGTATGACCTGATGCAGGAGGGGAAGAGCCGCCAGGAAATCATCGATTACATGGTGGCGCGCTACGGCAACTTCGTCACCTACG
+NODE	782	12540	687709	675680	0	0
+GACTCTTTTCGTTAATGGTGACGATATGCGCCGCCAGCTCCACCTGCGCCACCGGCAGATCCATTTGCGATACCCATTTTTCCAGCTCCGCCAGGGCCGCGCGGTTATCGCGCAACAGCAGGCGGTTGGTGCGCTTATCTACCATGATGGTTCCCTTCGCGCTCAGGAGTTTCTCGCCCGCTTTCGCCAGTTCGCCGGCATCGGCGTATTGCAGGCTAATGCTGCGGTTTTCCAGCGGTAAATTAGCCTGAAGCCTTAACCGCTCGGCATCCTGCCGCGCACTGTGTTCTTTCTGCCAGGCCTGTGAATGAACATGGAAAATATTCCCCTCCTGACGCAGCACCAGCCCCGCGCTATTGACCACCGTCTGTAGCGCCTGTTTCCACGGCACATCCGTCAGATGTAGCGATAATGTCCCGCTGACGTCCGGCGACACCACCAGATTCTGCCGCTCCTGCTCGGCTAAAGCCTGCAAAACCTGCACCACAGGGA [...]
+TTTGACCGACATAATGTGACTGTAATCGCATTCATGTAAGAAAGTTACGTAACACCAACATTAACAATATCGATTCACCTCTCTGCGTTTTTTTCTGAATTATGCATGACGACGCCTGGCGGTGAACAGATGATGCAATAATGCGACTTTCTCATCATTCTGGATAACGACATGGAAAGTGTAGCGCTTTCACGTACTACTCGCTGGGGTATGTTGCTCACCGGTTTGCTGCAGGGCGTCTTGTGCTACCTGCTGATGGCCTGGCTGGTACCACAAAATAGCGACTGGCTGTTCTATGGTATGCCTGCAACGATAGCGTTGTCGTCAATGCTATTGCTTACCGTGGTTTCTTTTAAACAGCGCGCGCTGTGGGGCTGGCTGGGGCTGACCTTTGTGGTCGTGCTGGCAATGAGCGGCTGGCTGAAATGGCAGGTTGAGACGGTGGAGAAATGGCGCCTGGCCGAGCTCCTCTGGCTGTATGGTCTCCGGCTT [...]
+NODE	783	13020	635106	627660	0	0
+ACCTAATAGCCAGCCCCAGAAAATTAACGACAAAAATACCACTAAGGTTGAAAGGCCTAAACCACGTCCCATAATTCGTGGCTCAAGGATATTGCCGAAGACCAGATTAATCAGCAGATAGCCTGCCAGCACCAGCAGCGCATCATAAAACCCGTTAAATACCAGCACCTGAATAATGGGCGGCAGGGCAGCGAGCACCGATCCAATATTAGGGATATAGTTCAGCGCGAAGGCCAGTAGACCCCAGACAAAGGCGAAGCGGACATCCAGTGCGGCCAGCATGCCCCATGCGACCAGCCCCGTCACGATACTGATCGCTGTTTTTAACACCAGATAATGGGAAACGCTATCAAGCGCGCGTTGAATTGCCGCCATGCCTTCCGCCGGACGGCTCATCATCTGCTGCAGTTTTTCAGGCAATTGTGGAACCTCCAGCAGCATAAATACCACGGTCAATAACAATAAAAAGATGGACGACATGGCATTGGACAG [...]
+CGCTGAAAGCGCGTCAGGTCGATCTGCTGTATCTCGGACAACGGCATTTGATGCTGGTCTTTACGTCCATGTTTTTTGCTTTACTGGTCGGTATCCCGAGTGGGATTTTACTCAGCCGACCTGCGGCAAAAGGATTTGCTGAATATGTCATGCAAATCTTTAATGTTGGTAATACCTTGCCGCCGCTGGCCGTTCTGGCCTTAGCGATGGTGATTATCGGGATCGGCGATACGCCCGCCATTGTCGCGCTATTTCTGGCCTCCCTTCTGCCTATCGTCCGCAATACCTATGCAGGCCTCTGTTCCGTCCCCGCCTCACTGATTGAAGCGGCGAACGGGATTGGGATGACAAAATGGCAGCGGCTTCGCCAGGTAGAGCTACCTAATGCGTGGCCAGTGATGCTGTCCGGTATTCGCATCGCGACCGCCATCAATGTCGGCACCGCGCCGCTGGCCTTTCTGATCGGCGCCAGCAGCTACGGCGAGCTGATTT [...]
+NODE	784	3724	204464	202663	0	0
+GCGCTGGGCGCCCTCTCCTGGGCCAAGCGCCAGGGTCTGAAAGTGCCTGACGATCTGTCGATTATCGGCTTTGACAATATCGCGCTAGCCGAGTTTTGCGACCCTCCGTTGACAACCGTGGCGCAGCCGCGTTTTGACATTGGTCGCGAGGCGATGCTGCTGTTGCTCGATCAGATGCAGGGGCAAAATGTGAGCAGCGGCTCGCGTTTAATGGATTGCGAGCTGATTATTCGCGGTTCTACGCGCGCTTTACCCTAAAGTAAATAGCTTTAAGACTCACCTGTCTGGTCAAAGGCCCGCCGCTTCAGTAACATGACGGGCTGACGAACGAATAAATACAGCGAAACGATAGTGGCACAACGAGATTATGTACGTCGCGGCCAACCGGCTCCTTCGCGGCGCAAAAAGAGCACCTCACGGAACTCACGGAAGAAGCAAAGCAACATGCCTGCCGTCTCGCCGGCAATGGTCGCGATTGCGGCAGCCGTCCTT [...]
+TCAGCACGACGGTAATGATTAACGCCCGCTTCATCTCCTGCCGGGTGATGACGCCTTTTTGCATCCCCCGCAGCGGCCCGATGCGATCCGGTTTATCACTGCCTTTGACAGCGTCGCCATAATCGTTGGCGAGGTTGGATAAAATTTGCAACAGCCCGGCGGTGATAAGGGCCAGCAGCGCGACCAGAGGATCGAAATAGCCTTGCCACCATGCCAGGGCCGTACCGACGATAATCGCCGCGAAGGCGAGGGGTAAGGTTTTGGGTCGTAAGCTTTCCAGCCAGGCCTGAGTGCGGCTAATTTGTTGTTGTTCAGTCATATTTAGCGCCAATAAAAATGGGGCTTTTCAGCCCCATCAACAGTGATGAAAATGCATTGGACGCGATTATAAGATAAAACGGCTTAGATCTTCATCTGCGACCAGCGCATCCAGATGTTTGCTCACATATTCCGCATCAATTGTGATGTTTTGGCCGTGCAGATCGCTGGCGT [...]
+NODE	785	48	2699	2699	0	0
+CACTCCCGTCGCGTATCTTATCCCCGTTAAGCATAGTGTCTCATATCT
+GGTGGTGGGGGAAGGATGACTCAGCGCTGCGCGCTTCGCCCTTCGGGT
+NODE	786	4043	196350	194063	0	0
+AAAGGCTTCGGACGTAAACGCGAGATGCTTTGCGGAGTGATGGAACAACACCTCATGCCGACCCTTTCCGCGCCCTGGTTTTACCGCAGCGGAAGCGAAAAACGTGAAACGGCAATCATTGGCGGCGGCATCGCCAGCGCGCTGTTATCACTGGCGTTACTGCGTCGCGGCTGGCAGGTGACGCTCTATTGCGCGGACGACCAGCCCGCCCAGGGCGCCTCCGGTAATCGACAGGGCGCGCTTTATCCGCTCCTTAGCAAACATGACGCCGCCATTAATCGCTTTTTCCCGACCGCATTCACCTTTGCCCGTCGCCTGTATGATGCCCTGCCCGTCTCTTTTGATCATGACTGGTGCGGCGTGACGCAGCTCGGATGGGATGAGAAAAGCCAGCAGAAAATCGCCCAGATGCTGTCCCTGGCGCTGCCCGCCGGACTGGCCTCGGCGCTCAATGCCGAAGAGGCGGAACAGGCGGTTGGCGTGACGACACGC [...]
+AAAGGGCGCCACGATCCGTGTGTGGGGATTCGCGCAGTGCCGATCGCAGAAGCCATGCTGGCGATCGTGCTGATGGATCACCTGCTGCGCCATCGGGCACAGAATGCGGATGTAAAGACAGAGATTCCACGCTGGTAAGAAATGAAAAAAACCGCGATTGCGCTGCTGGCATGGTTTGTCAGTAGCGCCAGCCTGGCGGCGACGCCGTGGCAGAAAATAACCCATCCTGTCCCCGGCGCCGCCCAGTCTATCGGTAGCTTTGCCAACGGATGCATCATTGGCGCCGACACGTTGCCGGTACAGTCCGATAATTATCAGGTGATGCGCACCGATCAGCGCCGTTATTTCGGCCACCCGGACTTGGTCATGTTTATCCAGCGGTTGAGTCATCAGGCGCAGCAACGGGGGCTCGGAACCGTCCTGATAGGCGACATGGGGATGCCTGCCGGAGGCCGCTTTAATGGCGGACACGCCAGTCATCAGACCGGGCTT [...]
+NODE	787	131	7713	7713	0	0
+CTTTCCCACAACCTACGGCTATGCGCGTCACACAGTCCTTCCCCACCAGACTCGGCAGGAAAGGCACTGATTCCCATAACGCATATTTGACGTTTGATGCCGGGTTTATTTGCGGCAGGGCGGCGGCGCAT
+CGTTATGGGAATCAGTGCCTTTCCTGCCGAGTCTGGTGGGGAAGGACTGTGTGACGCGCATAGCCGTAGGTTGTGGGAAAGAAACGACCACTCTCTGGCAGGGAAATTGTTTACCATAAACATTAGGATTT
+NODE	788	51	3457	3407	0	0
+ACCCGTTATTGTCCGCCGGGAAAGCCTGCGAGGAACAAGGCGGTAGCGTAT
+TATGCGCCGCCGCCCTGCCGCAAATAAACCCGGCATCAAACGTCAAATATG
+NODE	789	604	40205	39975	0	0
+CGCCGTCATTGTTGGCTTGTTTTTGCTGTTAGGCGGCTGTTCCAGCGGAATGCAATCTAATAATGGCTCTTCATCCGACGTCGGCACCGCCTGGGGCGGCGACGTGCATTCATCGGTACAAAGCGTTTCGGTAGAACGTGCCGATCGAGAACCTGCCGAAATGGTGGTAATAAATTACTCCACTCAATATCCGTCAGGTTACGATAAAGTTTATAGTATACGTATCAGCGATCTTGAATATGCTGTGCGCGACGCTAATTTTAATTCGATTCCAATTACTCGTCGCTACAACGCATCAATGGGACAATGGCAATATAGTATTCCTGCAAGATCAGGGATGAACTATCAGTTATATATTCGTAATTACAGTCATGATACCAATTACGAAATCGTCGCAACGGTTGATGGCCTGGACGTGTTGAACGGAAAAGCAGGCTCGCTGAATCATCATGGCTATATTGTTAACGCCGGCGACTCACTGGCGATTAAAGG [...]
+CATAAGCGTCAGCTACGTCGGCGAACTGGAATGCCGCCTCAGTGTGTTTATCTTTGCGAAACCCTTTAATCGCCAGTGAGTCGCCGGCGTTAACAATATAGCCATGATGATTCAGCGAGCCTGCTTTTCCGTTCAACACGTCCAGGCCATCAACCGTTGCGACGATTTCGTAATTGGTATCATGACTGTAATTACGAATATATAACTGATAGTTCATCCCTGATCTTGCAGGAATACTATATTGCCATTGTCCCATTGATGCGTTGTAGCGACGAGTAATTGGAATCGAATTAAAATTAGCGTCGCGCACAGCATATTCAAGATCGCTGATACGTATACTATAAACTTTATCGTAACCTGACGGATATTGAGTGGAGTAATTTATTACCACCATTTCGGCAGGTTCTCGATCGGCACGTTCTACCGAAACGCTTTGTACCGATGAATGCACGTCGCCGCCCCAGGCGGTGCCGACGTCGGATGAAGAGCCAT [...]
+NODE	790	1633	97457	96850	0	0
+TGATCAGCAGGACAACCGGTACCATGATCAGCATAAAGCGTATCAACAGCCAGCTCACGCTGTTGACTCCGCGATCGAAAGCCGTCTGGGTACGCGTACCCACAATGGATTTCGCCAGCGAGCCGAACCAGGTACGGCTTCCCGTCGCGACCACGACCGCTTGCGCTCTGCCGCTGGTTACATTGGTTCCCATCAGACAGATATTGCCCAAATCTAACAGGCTTTTATCTTTGTCAGGCAATTGCTCGCTGTCTTTACCTGCCACATCAGCCATAACATCGTATTTTTCTACGGGTAATGATTCACCACTAAGAATTGACTGGCTGATAAAGAGATCGCGCGACGCCAGCAGTCGGACGTCGGCGGGCACCAGATCGCCTGCGGCCAGAAAAACCACATCGCCCGGCACCAGTTCTTCAATGGGAATCTCTTCCTGCACCGCGCCTATATTGCCCGGCCCACGACGCAACACCGTGGCGGTGGTGCGAACCA [...]
+ACTGAACACTGCGGCAACGCTATGGTGTTCGGCGGGCATCGGCGTGTTATGCGGCTTAGGGCAGTTCAAAAATGCGCTGGCGGCGACGATCATTATTCTTTGTGCCAATATTTTATTGCGTGAAGCGGCGCAGCGTATAAATCAACTCCCGGTATCCGCCGAGGGAGAAAAACGTTATATCCTGAAAGTAACCTGTAATAAAGAAGATGAGAGCGCGGTTCGTCAGTGGTTACTGAATATCGTAAAAGAGGCCGCGATCTGTTTACAAGGGTTAGGTTCGGTCCCCGCTCAGGAACAGGGCTATAAAGAAATTCGTGCCGAGCTTGTGGGTCATGCTGATTATCGTAAAACGCGAGAACTGATTATATCCAGAATAGGTGATAACGATAATATCACCGCAATTCACTGGAGCATTGATAGTCAATAATAGTTTTTTATTCAATTTCAACATTACGCCAGGCGTATAAGGAGGGAATGATGGATATTCCCGAG [...]
+NODE	791	296	17999	17944	0	0
+CGCATACCCCAATAAATACATAGCAAGAATATTAATAGCTAACGAAGTTGTGAGTTGGTTCATGTTTTTTATCTGTTACGTATGAAATAAGAATTATCTGCAATGTTAATGCGAAGTGTCAGGCGCAGTCGCCTCGTTGAGTAAAAACTCAACAAGATTTACGGAGTTACAATGATCGATAAATTAGTACTTACGGTTACACCAATTTTCTCCATACCACCGCGTGGTGCAGCCGCAGTAGAGATATGGATGTACCAAGTTGCACGGCGAACAAAAACTACCAAACAGAATCGCTT
+TATCTCTACTGCGGCTGCACCACGCGGTGGTATGGAGAAAATTGGTGTAACCGTAAGTACTAATTTATCGATCATTGTAACTCCGTAAATCTTGTTGAGTTTTTACTCAACGAGGCGACTGCGCCTGACACTTCGCATTAACATTGCAGATAATTCTTATTTCATACGTAACAGATAAAAAACATGAACCAACTCACAACTTCGTTAGCTATTAATATTCTTGCTATGTATTTATTGGGGTATGCGAACCTTTCGACTTTTACACTGATGATGGCCGCAGCGATGTGCTCAATGAA
+NODE	792	4632	290158	281972	0	0
+ACCGCTGCTGACGGAACCGTTCGCGATGATGTACTGAGGGCTATTTTCGACCACGGCGTTAACCAGTTCCAGCATTAACAGGTCGTCGGCAAAAAGCTTGTAGCGAATCAGGTTGATATTGCGGTTGATTTGCTGAACGGCATGTTCGTCGTATTTATTAAAATCGGCGGCAATACAGATTAACCGTGTGCCGGACCAGTCAATGGCTTTGGCCGCGGTTTTACTTATTTTTTCCATCACCAGCAACTGAAATTCCGCTTTATGATCGAGCAGCCAGTCGAGATAAAACAGCCCCTGGTTAATGACGTTTTCATTGCTGTGGCGCTTATATTCAATAATCACCGGGCAGTTATTTTCATCGAGGCCGAGGGAATCAATTCGCCCACGATGGGTTTTACCCGTGTGGTATTCGGTCTCGAGAAAGCGGACGCCAAGGAACGTTTCCATATGGGATTCGATCAGCATTTGCAGATCTTTTTCAATGGCTGCGGC [...]
+GGGAGTGGGTTGCATTACAAGAAATATGTTCATTAGAAAATGGTGACAGAAGTAAAAACTATCCGAATAAGTCAACACTAGTAGAGACAGGAATACCATTTGTCAACGCAGGTCATCTTGAAAATGGAAATATACGACAAGAAGACATGACATTCATTACACCAGAACATTTTAGCATTCTCCGCTCAGGAAAATTCCTCGGTGGTGATATTTTATTTTGTCTTAGAGGTTCTCTAGGTAAATCAGCAATTGTACAAAACCTATCAGGAGCAATTGCTTCATCACTAGTAATCGTTCGTGTTTTTAAGCCTACATTTAATAAATATATTCATTTATATTTCGATGCGCCATTATCTTATGATTTTATAAATAAATATGATAATGGGACAGCCCAACCTAATCTGGCAGCTACAGATTTAGCTCGTTTTTTAGTTCCATTACCACCACTAGATGAGCAATCTCGCATTGTTAATAAAATTACGGAGCTAATGA [...]
+NODE	793	3690	190706	188808	0	0
+GGTGACTGACGATAACCCGCGTACCGAGGAGCCGCGCGCCATTATCAACGATATTCTGGCCGGAATGCTGGACGCCGGGCAGGTCAGGGTAATGGAAGGCCGCGCTGAGGCGGTAACCAATGCCATTATGCAGGCAAAAGACAATGACGTCGTGCTGATTGCAGGTAAAGGGCACGAGGATTACCAGATTGTCGGCACGCAGCGTCTTGATTATTCAGACCGCGTGACCGCAGCGCGTTTGCTGGGGGTGATCGCATGATTAGCGTAACGCTCAGCAAAATTGCCGATGTCCTTGGCGCCGAACACCGCGGGGCGGATCTCACGCTCGATACGGTCATTACCGACACACGGAAAGTGACGCCGGGATGCCTGTTCGTGGCGCTGAAAGGGGAACGCTTTGATGCGCATGATTTTGCTGATAAAGCAAAAGCGAACGGCGCTGGCGCCCTGCTGGTCAGTCGTCCTCTGGATATCGATCTTCCGCAGGTGATT [...]
+GATCCAACGTACGCCGTTATGCTCCAACGCCAGCTGGAAGCGATGCGCCAGACCGGTAAATGTCGTCAACGCCTTCAAACTGCTGGCGCGCGGCAGACCTACGGCATCCGCCAGCGCCAGCGCCGCTAACGCATTGGTATAGTTATGCTGCCCGGGAAGCTTCATCTCTTTCACGTTCAGCACCTTCTCGCCTTTGACTCGCAGCCAGGTTTCGCCCTGCTGACGATTAAGGTGATAATCACCCATATTGACGCCAAAGCTGACGCAGCGCTCATCGGCCCCGCGTACCGGCATCGTCAACGCGTCATCGGCATTCACCACGCACACTTTAGCCTTCTCGTAGACGCGCAGTTTCGCCGCCCGGTACTGTTGCAAACCAAACGGATACCGGTCCATATGATCTTCAGTGACGTTGAGCACCGTTGCCGCCGCCGCTTGCAAACTTGACGTGGTTTCCAGTTGGAAACTGGATAATTCCAGCACGTACAATTC [...]
+NODE	794	4753	272083	267901	0	0
+TAAATTTCTAGTTTAATCTTTGAACCCCGATGTTCCTTTTGGATATTAAATTTATGCTCACATGGCTTTTCACGTTTAAGTATATGCTGAGAGTTATCTTTATTGATCTGATAATACGTACATACTGTAGTAAAAGTTTCCGCAGACTGATAGTTATTATCCGGGTCTCTGATGCCTACATTTCTGGCATTCCTCGCAATAGTCATTCCCGGAAAAGGTGTATACTTTTCAATAGAAAAGCCAAGTCCATTAAACTGCAATTCGTAGGTATCACGAGGTGTTCCAGGCCTGTGCCCAACGCTCGGCGCCGTAGGAGGAGAAAATATCCCGACGGTTGCCGCGGACGTTGTCGACGAATCTGCCAAGACGCTTATCGGCGCAGCCGCCAGAAGCAGGCTATAGATAATAAGATTATGTTTCGACATACGCACTGTTGATCCTTTTTAAAACATTAATTCGCATCAGAGGTTGCGGTATTACCCTTAGCATTTT [...]
+ATATTACCTGATCACTACACCGTACAGTACTGTCAGTAATTTTTCTCCGGTGTCGCGTGCACGCAATTTATTTTTTTCAATTCTTTCAAAACGTTAACTATATTAATAGTCACTTATTTTACCAGAATCAATACTGAGAGTTTTATTACCGTTCTGAAAAGAGAAGACTTTTCAGATGAAATGCGTGGATGGTACGAAGTCATTACAGTACAGGGATGTAATAATAAAGATCGACAATGGATTCATTATTCTGTTGCTTTTGGACGGATGCCAAATGGAAGTATTCAATATCTTCTCCTTCTCTCCTGATAAGATTCAGTTTTGGCAATATACACATATATATTGTATTGGAAAATTGTTGATATTGTTCCTTATGACCAACGAAATGGAATTTTGCATATTTACCACATTTTATTACCCTCGACATGGGTATTTTGCCTCCATCGACGGAATTATGTTCCATACCAAAAAAACTGCTTACGGCGATGACCT [...]
+NODE	795	2754	154887	152080	0	0
+CCGCTGTGTGGAGTCGCATTATAGGGAGAGTTGAAAATGAGTCAACGCATTTTCTAAAGTTTTTGTTTGTTCGTCGTAAAATTAAACAAAACGATCGTGAATTACCCCGCACTGCATGATTTCTATACGGAAATAGCAAAGCGCAGCGTTCTGACCGGATCAACATTGAGGAATCAAGCCACAGTGATAGAATACAAGGCTATTCATCTTTCCAGGATTTGCCGGTTGTCGGCATCTTTATAAACGTAAGGCCATTTCATGAAAATCAAAACTCGCTTCGCGCCTAGCCCGACAGGTTATCTGCACGTCGGCGGCGCGCGTACTGCTCTTTATTCCTGGCTTTTCGCACGTCACCACGGCGGTGAGTTCGTGCTGCGTATTGAAGACACCGATCTTGAGCGTTCCACGCCGGAAGCCATTGAAGCCATCATGGATGGTATGAACTGGCTGAACCTGGAATGGGACGAAGGCCCATATTTCCAGACCAAACGT [...]
+CTACGTAAAGCTTGTCGAGTTGACGGGCGGCATCATATGAATTCCCTCGGCATGTGTCAACGGCAAAATGAACTTGCCGAATTCAATCGCTGAAAAAGCATTCAAATAAAGGACATTGCGGCACAACTCGCATTCAGTAGTTAAACACGTCACGGTTTCGACTAAAATGGTGCTATAAAATGAACCACTAATTAACCCCACGACTATTCAGGGAATCGTTATGTTCAAGGAACGGATGACGCCAGAAGAACTCGCTAATCTCACCGGTTACAGCCGACAAACCATCAATAAATGGGTACGGAAAGAAGGCTGGGCAACATCGCCCAAACCTGGCGTCCAGGGCGGTAAAGCCCGTCTGGTTCATGTAAACGAACAGGTTCGTGAATATATCCGCAGCGCTGAACGTTCAGTTGACCATCACGCAGACACATTCACGCCTGCCAGCAACGCATCGCTTGAAGCGCTGCTCATGACGCTTGCCAAAGAGATGAC [...]
+NODE	796	5	957	957	0	0
+ACCGA
+AATAC
+NODE	797	27	5029	5029	0	0
+ACCGCCAGGTGAGCGAGTGGGCGAGGA
+CGCTATCATCTCACTCATAAAAGACTC
+NODE	798	19	3320	3320	0	0
+GGCGCAAGGGAGTCAGAGG
+TCGCTGGGGCTGCGGCAGG
+NODE	799	1412	67499	66982	0	0
+AACGTAAATGCCATGCGGCATGAACTTCTCCGCCTGGCAGTTCATTACGCAGTTCGATTTCGCCTTCACCGACTTGCTCGCTTAAAAGACGACTGATAGCTTGCCACATAATGTCTCTCCCCACGTTGTCTGCCAGATCATAAGGTTAGCGCAAAAATGCGGTTAAAAAATACGAACTAACGCACATCACGGACGCGCCGCGGCGGGAATGGCACTTATTGTGCGTTTTTACTCCACGCCTCCCAGGTCGCCACGGTAATGTCGACATCCTTATCTAACGCGCTTTTCGCAAGTCCGGCGACAAGCGCTTTGATTTCATCAGCGCTCTGAGCGCTAACAAAGCCAAACGTATTGGTGCCGAGCTCATGCACATTCCCTTCATCGTCCGTTAATGTCAGCAAAAAACCGCTGCGCGTCAGATGATTATTGAGTTCGTTAATCTCGGTCAGGGAATCTTCATGGAAGGTTACGGTAATAACATAACGGGTAATA [...]
+TTTCCCGGCTGGCGGCGCTACCGGCGAACATCTGGTCGCACTACTGGCTGACGAAAATGTCCCCGTGTCTACCGTCGATGCGAAAGACTGGACGCGTCAGAACCTGCACGTCCACGTCGAGTCCAGCGGCGAACAGTATCGTTTTGTTATGCCCGGCGCCACGCTGGACGATGACGAATTTCGCCAGCTTGAAGAACAGGTACTGGAAATTGAATCCGGGGCAATTCTGGTTATCAGCGGCAGCCTTCCGCCCGGCGTTAAGGTCGAGAAACTCACGCAACTGATTTCCGCCGCGCAGAAGCAAGGCATTCGCTGCATTATTGATAGCTCTGGCGACGCGCTCACCGCCGCGCTGGCGCTTGGCGATATCGAACTGGTGAAACCGAACCTGAAAGAATTGAGCGCGTTGGTTAATCGCGATCTGACGCAGCCTGATGATGTGCGTAAAGCGGCCCAGGAATTAGTGCAAAGCGGCAAGGCTCGCCGGGTAGT [...]
+NODE	800	1450	93199	93199	0	0
+AGTGAAGCCTTCACCTAATAGCACCGAACTATTCATAATAAAGTCTCAAATTTAATAATCTAAAATAGAAAAGTAATATCAGGCATTAATAGAAGGGATAAAATACCGGTAGTAAAATCATACTAACGATAAAACAAACCAAACTAATCGCCAATCCGGGTTTTAAGAAATCTTTAAATTTAACATTCCCCGGGCCAATAATCATTGAGTTTGCTGGAATAGCCATTGGGGTACAAACAGCAACACTACTCGCAATAAAAACAGCAATAACAACTGCACGAGGGTCTGCGCCAATAGACTGTGCGATAGTCCACCCTACCGGGCATAACAACGTACATGCTGCAGTGTTACTCATAACTTGAGTCAAAGCCCATGTAAGTATCCACAATGATGCCATAATAATCATAACGCCAGAATCTCCGGTTACTGAAATAACGGCATTGGCAATCATTTCTCCAGCACCAGTAGAATTAAGCGCGGCTCCTAAAGGCA [...]
+GACTGTAATGAGTTGTTTTTGTACCCTAATAATATAAGGACTATACATGTCACCAGCGATTATTACTTTGTTGGTTTTAGTGGTTGCAATAATTATCTTTGTTAGCGATCGTCTTCCTATGGGATTAGTTGCATTTATGGTCCCAATGGCACTTTATTTTACCGGTGTTATCGATGCTAAGGATATTTTTGCTTCAATCGTAAATGCGAATGTTATTCTTATCGTCGCCATGTGTGTACTCGGTGCGGCATTTTTTAAAACAGGTTTGGCATGGCAATCAAGTAAAATTTTACTAAAATATGCTAAAACAGAAAGAAGCCTTAGTGTATTGATTTTTCTTATTGGTGGAGTTATGTCTGCCTTTGTTTCTAATAGCGGAACAGTTGCTGTGCTAATTCCTATTGTTTTAGGTATTGCCGCCAGTAGTCAGATTAAGCCTATTAAACTTCTTATGCCTCTGGTTTTTGGGGCAACAATCGGTGCTGATATTTC [...]
+NODE	801	7143	438161	434380	0	0
+TACAGACCATAGTACGAGAACCGTGGCCGATTACTTTGATGCCTTTGATGTGGAGCTATTTTTAACAGATAACGTATACCACACTCAAAATACTCCCCCAGATCAATGCCCTCCTCTGAACACCTCCCTCTTGTGCCATTCCACAAACCGTTCACCCGGATAATTTTCTTTCATCTGCGGCAACGCGATCTCTTTCCCCGCAAAATCCCAGAACAGCCGCTGTACCACTCCGCCACCATTCACCGCGTCGGAAACCACCACGCGCATATTTTCATCCAGGCCAATCGAACCGCGATCGAACGCTTTATGATGAATTGCGCACAACGCCAGGCCATTAGGTACTTCACAAGGACCATGATGCTGCTTCCATCTGATATGGGCTGCTTCAAGGGCTATAGGGGCGTTGTCGTGGCGCATATTGAAGCCGCAGACCGCACATTGATAATTGTAAGCTCGTAGCACCGCCTGGCGGAACTTCGGATCGCGTTGACG [...]
+TGGCGTATTGGTTTTTGTAGAAGCTGACCAAATCGTCCCAGTCTTCCGAGAAATCTTTAAGATCGTCGGCCGCTGTGGTGATTTTTTCAATGACCGCGTATTCCTCTTTCTCGTTAAGGATCCCGTTCAGCAATACCAGGCCTTCTTCTATCTCTTTACGGCCAGGGTTTTGTCCACTCTCTGCACGAGTTTTAAAAACAGTCAGTTCGCTCTTCCAGCGGCCAAAGAGTTCGCGAATATGAGAGACCAGCGGCTGCTCTTCACGCTCGTTAAACGGTTCTCCAGCAATATCAGCCATCAGTTGCGCGGCTTTAGTCAGCTGCGCTTCGTCATGGCGACGTACTTTATGCAAACGCAAATCGCTGTAACGACGTGAATTATTAAACGCGTCCCACGCCTGCTTCAGTGCGATTTCACTGCCTTGCAGAGTGAAGCTGTATTTTCCGCTGCGCGCCAGCCGAGCAACCAGCAATTTGACCTCATCTTCCGGCC [...]
+NODE	802	2569	121968	120951	0	0
+TCAAATTTGATCCCCGCGCGACGCTCAACTTCCGCTTTAAACGTCTCCAGTCCCACGCGCTCAAGGGTGTATTTGGTTTTGGCATTTTTCCTGTCGGTACGGTTACCCCAGTCGCGCTGCGTCGTCACTACCGCTTCGGCCACCGCCAGGGTGTGCTCCAGCGGCAGATAGCCAAACTCGCTGGCCGTACGAGCGTAGGTTTTCTTATTACCATGCTCAATAGACAGACCGCCGCCCACCAGCAGGTTAAAGCCGACCAGCTTGCCGTTCTCGGCAATCGCCACAAAGTTCATGTCGTTGGCGTGCAGATCGATATCATTTTGCGGCGGGATCACCACCGTGGTTTTGAACTTACGCGGCAGATAGGTCTGACCGAGGATCGGCTCTTCATCGGTGGTCGCGACCTTCTCCTGATCGAGCCAGATCTCCGCATAGGCGCGGGTACGCGGCAGCAGATGTTCAGAGATCTTCTTCGCCCATTCGTAGGCTTCC [...]
+TGTGACACTGGTGAACGCCGGCGACTATAAATTCAAACAGATTGCCAGTGAAAAACTGCTGGTGATAGTGACGTCCACCCAGGGAGAAGGCGAGCCGCCGGAAGAGGCCGTCGCTCTGCATAAGTTCCTGTTCTCGAAAAAAGCGCCGAAATTGGAAAACACCGCTTTTGCCGTGTTTAGCCTCGGCGACACCTCTTATGAATTTTTCTGCCAGTCCGGAAAAGATTTCGACAGCAAACTGGCGGAACTGGGCGGTGAACGTCTGCTCGACCGTGTCGATGCTGACGTTGAATATCAGGCAGCTGCCAGCGAATGGCGCGCCCGCGTGGTTGATGTTCTGAAGTCTCGCGCACCTGTCGCGGCACCTTCGCAATCCGTCGCTACTGGCGCGGTAAACGACATCCACACCAGCCCCTATACTAAAGACGCGCCGCTGATCGCGACCCTCTCCGTGAATCAGAAAATCACCGGTCGCAACTCGGAAAAAGATGT [...]
+NODE	803	1343	86349	86270	0	0
+ATTTTCAGAAAAATGTCATAAGACATATCTACTATCCTTTTAACTACCTAAATTAAGCCCTGATTTATCTGCTTTATTAGGTGAACAGATTAACTATTCCTGTACAGCTCTTTCTTACCCATAAATTCATCAGAGCAAGAGAACGTATGCTTTTAATATCTTTGAATTTTACTTCTCGACACGCCTTTTAATTAATTCATTTAATTCCCTGTCATGGATAAAATCTATGCACTTCATGGTATTAAAATCTGATGATATCGAACCGTTATATTTCAACCCTGAATATTTTTTCGCAATCTCATCAATTTCATGGTAAATCTCCACAGATTGTTTACCATATTCAAGGTAAGCACTGGCCGTAGCTCTGGCATCGTTTTTAACGACATCATCTTTGTATACTAATGCCAGACAATGACTCAGCGCCCAATTTTTTAAGAGTTCCGACTGTGAATATTGTGTGGTCAATGCTTCTTGTGCAAAGGATGGCTGCCA [...]
+CGGATTTATTGTTTTGATTTTAAAGGAATTTACAGTGAATGAATGGCGTAACCCCACTCGGTGGTTATGTGCGGTAGCTATGCCTTTTGCACTGCTCCTGCTTTCCGGATGCGGCAGTAGCGATGCGTTACCTGACCCCTAATCGCAGCGGCCTGGCTTGAGCGTGAAAGCATTTTACAAGGTGAATTCTGACAATCAGAAGAAAGCGGCGTCCATGAAGATACGTGTTGAGAATTAATGATCTACACAGAATTTTTAGAGGGTAAGCAAAATGAACAGACCTTCATTCAATGAAGCGTGGTTAGCTTTTAGGAAGGTGAATCATTCCGTCGCTGATGTGGGTAGCATTATTGGTGGAAACGTTGGGAAAAATATAACTGGTGGTTATTTTCAAAATGCCTGCCCTATTCGAATGAGCTATGTTTTGAATGCGACAGGATTCCCAATAGCCCGTAACTCTCCGTATGCAAAGGTTAGTGGTGCCGATAATAA [...]
+NODE	804	117	6098	5997	0	0
+ATTTTATCTTTTGTTTAAATCGCTAAGCAGAACGGCGATACTCTGCCCGCCGGTGGTCTGTTCGAGGGCGATTTTGACAATGATGGTTAACGGAACGGAGAGCAACATGCCCACCGG
+CCTCGAACAGACCACCGGCGGGCAGAGTATCGCCGTTCTGCTTAGCGATTTAAACAAAAGATAAAATGCAATACATACACAAAATCATTCAAGATGCATCGCGGCGGCAAGGGAAGA
+NODE	805	3559	179839	177267	0	0
+ACCAGAATTTCGCGGCCCACTTTTTCCTGCAAGCGCTCAGCGGAGATTTGCTGTTGCAGTTGCATAAAGCGGTTCCAGCGCTCTTCTTTCACCTCTTCCGGCACCTGATCCGGCAGCTCATTCGCGCCTGCGCCTTCCACCGGGCTGTACTTGAAGCAGCCTACACGATCGAGGCGCGCCTCTTTCAGGAAGTCGAGCAGCATCTGGAAGTCTTCTTCCGTTTCGCCGGGGAAGCCGACAATAAAGGTGGAGCGTAGGGTCAGTTCCGGGCAGATTTCGCGCCACTGCTTAATGCGCGCCAGCTGGCGGTCAACGGAACCGGGACGTTTCATCAGTTTAAGAATCCGCGGGCTGGCATGTTGCAGCGGAATGTCCAGATAAGGCAGGATTTTGCCTTCCGCCATTAGCGGAATCACATCATCAACGTGTGGGTAGGGGTAGACGTAGTGCAGACGTGTCCAGACGCCCAGTTTTGATAACTGTTCGCACAGG [...]
+TGCCGACTATCTGGCGATGAATCCCAATGGGCTGGTGCCGCTGCTTAAAGATGATGAAACCGACCTGTTATTGTGGGAATCCAATGCCATTGTCCGCTATCTGGCGGCGCAATACGGCCAGAACCGGCTATGGGTTGATAATCCGGCGCGGCGTGCGGAGGGCGAAAAATGGATGGACTGGGCGAATCAAACGTTAAGCCCGGCGCACCGTGTGATCCTGATGGGACTGGTCAGAACCCCGCCGGAAAAACGCGACCAGGCGGCAATTGAAGCTGGTATCGAAAAGTGTGATGGCCTGTTTGCGCTTCTTGATGATGCTCTGGCCCACCAGCCGTGGTTTTCCGGGGATAACTTTGGCACCGGCGATATCGCTATTGCGCCTTTCGTCTATAACCTGCTGAACGTGGATCTGAAATGGACGCCGCGCCCGAATCTGGAACGCTGGTATCAACAGCTTACCGAGCGCCCTGCTTTTCGCAAAGTGGTGATGAT [...]
+NODE	806	4504	256415	255332	0	0
+GGTTGTATGCCCACAATAACCAACTGACCCGCCTGCCGGAAAGCATCACGGGTCTGTCTTCAGAGGCAAGCGTAAATCTGGAAGGCAATCCTCTGTCTGAACGCACTCTGCAGGCGCTGCAGAATATCACCAGCGCGCCAGGCTATTCAGGCCCCAGGATACTATTCGATATGGCGGGAGCCTCAGCCCCCCGGGAAGCCCGGGCACTGCACCTGGCGGCCGCTGGCTGGCTGGTGCCTGCCCGGGAGGGCGAACCGGCTCCTGCAGACAGATGGCATATGTTCGGACAGGAAGATAACGCTGCTGCCTTCAGCCTCTTCCTGGACAGACTGAGTGAGACGGAAAACTTCATGAAGGACGCGGGGTTTAAGGCACAGATATCGTCCTGGCTGGTACAACTGGCTGAAGATGAGGCGCTGAGAGCAAAAACCTTTGCCATGGCAACAGAGGCAACAGCAAGCTGCCAGGATCGGGTCACACTTGCTCTGCACC [...]
+GTATTAAGAATGAAGGTTATAGCGATTTTTTAAAGGTAAATGACCATTGTTCTGTTCATCGCATAGGTTTCAGCAGACTCTATAAGCGCCTCTTTCAGAAGTGGACTCGCCTTGACCCGCTCCCCTACTCACAGCGCATTCTGAATATTGCAAAAGACTTTAACGTTACCGATGATAGTGTAATCATCGTTCATAACAGCATAAAGCTGTACCGCCAGATCCGCAAAAGAGCCCCAAAGGCAAAAATGGTTATGCATATGCATAATGCTTTCGAACCTGATGGGTTAGATCAAAACGTTAAAACGATCGTCCCCAGCATGTTTTTGAAGAAGCATTATCAGGCGTACCTGCCGGATGCTGATATCGCTATCGTCCCTAATGGTATTGACCTGGAGGCCTATCAGAAAAACGCTGTACCACTGCAAAAGTCTGACCTGGGAATAACTCCGGAGAAAAAACGATTTTCTTTGCAGGCCGTATATCACCGGATAA [...]
+NODE	807	3607	772488	761032	0	0
+GCCTTATATTTGCAAGTTATCCGGTGAAGGGAGGTAGCCGAGACTGGGGATTGATTGTTTTGTACAAGTTCTAATGCATAATGTGTACATATAGTAGCGTTAGCATAGGGCGTAGTATGCACCAAGAGCAGGATATAGCAGATGCACTTCATGAATCCCTAGCCTATTTCAATCGATATTGTCGCTATTCGCTAAAAAGGCTTGCTGCGGATTATCAGGAAGAGATTGATAACTACCAGGATGATGTATGGGAGGCTCCGCAGCGCGCTGCGCGGTTAAGTGCAGCGGTAAAAAACTATAAAACCTCACGGATGATTGAGTTTATTTTTTATATGGCGATAAAGCTCAATCTTGATTTAACCCCGCTGGTTGTTAAGCGTTTATGTTCTTGTCTTTTTCAGCGTACTGGTAGCCAGGAGCTTATTGTTGAGATTTTTGGAAAAAAGCAGCGTGTAAATCGTAGTGCTGATAATACAATGGAACGAATCAATG [...]
+GGCACCGAAATTACATTCCTGAGTGTGGGAGAGTGGACGAGTAGGCGCAAAAATCTACAGACGATATAGCCGAAGTCTGTAGATGAATCTGAAAATACTGGAGGCAACCAGTACAGATAAGTAGCTGAAAATTCACGGTAGTAACATGGCAGAGGAAACATTCATGTTTCCTCTTTTTCGTCCTCTTTCTGTTGGTTCAGTAAGAGGACTTCCCAAAAAAACGTAGGTATATTTTGTTATGAAATTGACTAAAAAATCATGTTTAACACATGTAAGACAACAACGATTTTCAGTATTGATGCAGGATCATTTCTGCAAAAAATTCTGCTTACGTTGTTGATAAAACGCTCACATGTCCTGTCTAACGATAGGGCATTGTAATGAACAATCATCGCGTTTTTCGCGATCATAACTAACGGTAACAGGCACTACCAATGACAAATTGCCCTCTGATAATCAGAGGGCAATTCTCCCAAAAATCATGCTCATTTA [...]
+NODE	808	314	15346	15346	0	0
+CTGACGCAGCCGTATCCCACGGAGTTTCTGGTACGCAGCGCGCTGGATATGGAGCTGAGCCGCATTACGTTCTTTTAATACAGGGCATTATTCATGGATCCACGGCTACTGGAGTATTACAACCGCGAACTGAGCTACCTGCGGGAGACCGGTGCTGAGTTCGCCACCCTCCATCCCAAAATTGCCGCCCGACTGGGGATGCAGGGAACCGATATTGCCGACCCGTATGTGGAACGCATGATCGAGGCGTTCAGCTTTCTGAGCGCCCGCACTCAGCTAAAAATTGACGCCGAGTTTCCCCGCTTCACACAGCG
+GCTCAGAAAGCTGAACGCCTCGATCATGCGTTCCACATACGGGTCGGCAATATCGGTTCCCTGCATCCCCAGTCGGGCGGCAATTTTGGGATGGAGGGTGGCGAACTCAGCACCGGTCTCCCGCAGGTAGCTCAGTTCGCGGTTGTAATACTCCAGTAGCCGTGGATCCATGAATAATGCCCTGTATTAAAAGAACGTAATGCGGCTCAGCTCCATATCCAGCGCGCTGCGTACCAGAAACTCCGTGGGATACGGCTGCGTCAGAATTTGTCCGCGAATTTCAAACTGTAGCGTGTTATAGCTACCCTGCCGGG
+NODE	809	1031	47065	46260	0	0
+CTCGCGCAATATTCCAGGTAGCGTCGGGATGTAGTGCGGCTTATCGTTAAGGCCTGCGCGACCGTTTCAGCCGTATGGCGTACGGTTGGATCGGCAAACAGCTTCATCACCGCATTAAGGGTTAAGGCATCAATACCGGTCGGCAAATCCCCTTTCGGTTCGCCGCGCGCATAGGCGTTGAACATTTCATCTATCTGCTTCTGGCTAGCGCTATCCGCGCTCGCCAGCATACGTCTGCGCTGTTGATAGCGGGTCAGCGTCTGCCCCAAACGCTCATAAGCAATAGGTTTGACCAGATAATCAAACGCGCCGCTACGTACCGCTTCCGCTACCGTCTCCATGTCACTGGCGGCGGTCGTAAACACGACGCCGCCGGGATAGCGCGACTGCATTAATTCATGCAGCAGCGTAATCCCCTTCCCATCCGGCAGATAATTATCTAACAGAATTAATCCAGGTTTGAACCGGTCAATCATCATTCTCGCCTGCGCC [...]
+CAGCTACATCAACTGCCGGAGGGGCTGGATAGCACGGAGTTCGCCGCCATCGTCGGGAATCTGCTGGATAACGCGTTTGAGGCGAGTTTACGTACACAGGAAGGCGACAATACCATCGAACTTTTCCTGAGCGACGAGGGCGACGAGGTGGTGATAGAGGTCGCCGACCAGGGCTGCGGCGTTCCTGAAGCGCTGCGGGAAAAAATTTTTGAGCAGGGCGTAAGTACCCGAACTGACGAACCCGGTGAGCATGGTATCGGGTTATATCTGATTGCAAGTTATGTGGGGCGCTGTGGCGGGGTCATTACGCTGGAAGACAATGATCCTTGTGGCACCTTATTTTCTTTATTCCTTCCGAAAGTGAAAAAAAACGATGACAGAACCATTAACCCTATTGATCGTTGAGGATGAAACGCTGCTGGCGGAAATGCACGCAGAATATATCCGCCATATTCCTGGCTTTAACCAGATATGGCTGGCGGGCAATCTGGC [...]
+NODE	810	3533	194116	192592	0	0
+ATGGTTACCGACGATGTTGATCTGTTGGATCTTCGCCGATACGCCCTCCTGGAACACCAGTTTAAGATCAACACGGTTGCGCGGCAGCGGCGTGACGACCGCCTTAACGCTGGCGCTGTATTTACCTACGCTATAGTAAAAGTCTTCCAGACCTTTTTCGATATCAGACAACGTGGTGCGATCCAGAGACTCGCCAACACGTACGCCAGACGCTTCGAGGTTTTGCTTGAGCATGTCATCTTTCACCGACTTGTTCCCGGAGAAAGTGATGCTGGCAATGGTCGGACGTTCTTTTACCTGAACCAGAAGGGTATTACCATCGCGCAGGACGCGGACGTCCTCAAAGTTGCCGGTGGCGAACAGAGCGCGAATGGTGTTACTGATATCTTCATCATTAACCGTGTCGCCTGTGCGCACCGGCATACTGAGGAGAGCCGCACCAACGGCGACTCGCTGCAGGCCTTCGAAATGAATGTCCTTCACTACGAACCC [...]
+CAAGGGAAGATCCGGGCCTTTGGGCATAAAGCCGGGGCGAAGTCCGTCCGGCGAGCGGTCTCTTTTGCTGCCAATAACGGTATTGATGCGTTAACGCTGTATGCCTTTAGTAGTGAAAACTGGAACCGACCGGCGCAGGAAGTGAGCGCGTTAATGGAGCTGTTTGTGTGGGCGCTGGATAGCGAAGTCAAAAGCCTGCACCGCCATAACGTTCGCCTGCGTATTATCGGCGATATCAGCCGATTCAACTCACGTTTACAAGAACGTATTCGCAAATCAGAAGCGCTTACCGCCCATAATACGGGTCTAACGCTGAATATCGCTGCGAATTACGGCGGACGTTGGGATATTGTCCAGGGAGTCCGACAACTGGCGGAACAGGTGCAGGCTGGAGTGCTGCGCCCCGATCAGATTGATGAAGAGAGACTAGGCCAGCAAATCTGTATGCATGAGCTGGCGCCTGTGGATTTAGTAATTAGGACTGGGGGAGAG [...]
+NODE	811	12254	666036	654247	0	0
+TTGCACCAAGCTTTTGCAAGCCAATGCTACTCGGAATTTGAAAGATTAAATATGATATGAAGAATATAGAAGAAATATTAGCGAAATCCTCAGGCGTAATACCGAGAGATTCATTCATGCGTAATGCAGCAAACCCAATATTGACACGATCCATATAGTTAAAAAAGTAAAGAATAAAGGCCAAAGGAATGATTTTCCTTTTTACAATACGAATTGCATCGTATAAATTTTCTTGTGGACTACTCATTTTGCATCACCTTTTATGATTCAATGAATAAGGGTATTGACCGGAATCGATGTTACGTAAAAAACAATACAATTCAAAAGCTAATGTGTCATATCTGATATATCAGCAAGCAAACTTAATGAAATATACAATAACAACAATAAAGTATGTAAATTTTCTTATATCTGATATATTAGATCCGTTAATTTTGAATAAATTAATTACAATGGAGCCGGGTTTAACCATGGAGGAGAAGAAAATGAAAA [...]
+GTTCGGCGTGGTCGAACAACACAATACCGCGGCTGACGTTACGACCGCTGGGATCGTCATCGCTGGCCACCAGCGGGCGGACGCCGGAATACGCGCGCAGAATACGCGTCTTCGCCATGACAGGGGCCAGTTTTTCCCCTTCACGCAGCAGGATATCGACTTCATCTGCGGTGACGCGGTTGCTGTCTATCTCATTGTAATCAATATGGGTAGAGGTGGTGCCGATCAGTGAAATCGTATCGCCAGGTACCAGAATGTCGGCATCCGATGGTTTCCGGCAGCGGTTAATGACATGCTGGTTGATCCGATGGTCCATGATCAACAGCGAGCCTTTCGCCGGGAACATGCGAATACTCAGGTCGGCGTATTCGGCGATCCGTTGCCCCCAGATACCTGCCGCATTGACCACCACCGGCGCGTGAAGCGTCTGGGTTTCGCCAGTGAGATGGTTGCGCACATGGACGCCGCAGACCGTTGCGCCTTCACGAATGA [...]
+NODE	812	5932	330985	321636	0	0
+ACCGCTGCTAAGCGGCTGCGACAGCGGATAAGGCTGCCGGTCGACACGCGCGCCGACGCAGGCGTGGCCGATATCGGTATGCACGGCGTAGGCGAAGTCCACCGGCGTAGCGCCAGCGGGCAGTTCGACAATGCGTCCTTCCGGGGTGAAAACGTAAATCTCATCCGGGAAGAGATCGGATTTTACGCTTTCGATAAATTCAAACGAACTACCGGCGCTCTGTTGTAGCTCCAGCAGGCTCTGCATCCAGCGCTGGGCGCGGATCTGCGCCGTGGTGCTGGTCTCACCGTGTTCTTTATACGCCCAGTGCGCCGCGACCCCCATTTCCGCCATCTGATCCATATCTTCGGTACGGATCTGGACTTCAACAGGAACGCCGTGCGGGCCGATCATCGAGGTGTGCAAAGACTGATAGCCGTTCGCTTTGGGAATGGCAATATAGTCTTTCACCCGTCCCGGACGAGGCTTATAGAGACTGTGCATCTGGCCGAG [...]
+TCCGTTATCACTGTTTAAAGCGTGGGCTAAGCCTATAAAGCCGTTTCAAATCACAGAAGGCGTGTGGTATGTCGGCACGGAAAATCTCTCTTCTATTCTGCTGACCACTCCGGCAGGGCATATTCTTATTGATGCGGGGTTGGATGAAAGCGCACCGCAAATTAAAGCGAATATTGAAGCGGCAGGATTCCGCCTCACAGACGTGCGCTATCTGTTGAATAGCCATGCGCGGCTGGATCAAGCGGGGGGCATGGCACGTTTGAAAGCGTGGAGCGGCGCACAATTGGTCGCCAGCCAACCCAACGCCGATCAGATGGCGAGGGGTGGACGAGAGGATTTTGCGCTTGGCGATGCGCTCCCCTTCCCGCCCGTCACCACCGATAAAATTATCCACAACCAGGAAAGCATCAGCCTCGGAGGGATAACCGTGACAGCGCTATTCACGCCTGGACATCTACCCGGCTCAACCTCCTGGCGCGTAACGCTCCGCAA [...]
+NODE	813	72	1584	1528	0	0
+CACTATACATCCACTTTCTGGTTTGGGAATATTAACCCAATTCCCTTTCGATAGAAGGGGCGCCGAAACGCC
+ACCAGAAAGTGGATGTATAGTGGCAACGGATTTCTCCTATCTCTTAGGATCGACTAACCCACGTCCAAATGC
+NODE	814	53	1357	1224	0	0
+CACCTTGCAACGGATTTCTCCTATCTCTTAGGATCGACTAACCCACGTCCAAA
+GTGGGCGTTTCGGCGCCCCTTCTATCGAAAGGGAATTGGGTTAATATTCCCAA
+NODE	815	36	1638	1638	0	0
+CCAAAAGGAAAATTTTATGGCACAAGTAATCAACAC
+CCAATGTTATGCCAGGCTTACCTGTGTCATCCAGGT
+NODE	816	102	5792	5792	0	0
+TAACAGTCTGTCGCTGCTGACCCAGAATAACCTGAACAAATCCCAGTCCGCACTGGGCACCGCTATCGAGCGTCTGTCTTCCGGTCTGCGTATCAACAGCGC
+TGCGGACTGGGATTTGTTCAGGTTATTCTGGGTCAGCAGCGACAGACTGTTAGTGTTGATTACTTGTGCCATAAAATTTTCCTTTTGGAAGGTTTTTGATAA
+NODE	817	336	18992	18992	0	0
+TAAACGTACCGACAGCAAGGTAACGGGAAACGTAGGGAGTAGTATTGATAACACGTTGCGGGGCAATTTAACGCTGTCCGGCGGCGGATCGTGTTCTGTGTGGACTTTCCGGCGTTAAATCCCGTATCACCTGCGAACCTGGACTATCTCTGTGGTATCAACTCTGTAGTAATTTTGTCCCCTTCGTCTTCATTAGCCAATGAAACCGGTTTTACGTTACCGTTCGAATGTTGCGAACGAACAGCTCTGTATGCGGACTATCGTCACCGCTCTGCGATTTTTATAGCGCATCAGCCACACGATTTATTGGTTCTTGAAAACCAAGGTTTTTGATAA
+CTATAAAAATCGCAGAGCGGTGACGATAGTCCGCATACAGAGCTGTTCGTTCGCAACATTCGAACGGTAACGTAAAACCGGTTTCATTGGCTAATGAAGACGAAGGGGACAAAATTACTACAGAGTTGATACCACAGAGATAGTCCAGGTTCGCAGGTGATACGGGATTTAACGCCGGAAAGTCCACACAGAACACGATCCGCCGCCGGACAGCGTTAAATTGCCCCGCAACGTGTTATCAATACTACTCCCTACGTTTCCCGTTACCTTGCTGTCGGTACGTTTACCTCATTGTCTGAAAGGTTATTTACGAAGTTATCATTAATAATCCACGGG
+NODE	818	36	1471	1465	0	0
+GGTTTTCAAGAACCAATAAATCGTGTGGCTGATGCG
+CCAATGTTATGCCAGGCTTACCTGTGTCATCCAGGT
+NODE	819	1306	116777	115377	0	0
+CTGATTAGCGGCGTTGACAGATGTATCCATCTGAATGCAATGAAGAAAACCACCATTACCAGCATTAACCGTCAAACTATCAAAATATAACGTTGACGATGTAGCTTTAGGTGTCTGTAAAACAGGTGCCGAAGAAGCTGGAGTAACAGAAGTGAGAACCAGCTTATCAGAAAAAAAGTTTGAATTATGGCGAGAAATAAAAGTCTGAAACATGATTAAACTCCTAAGCAGAAAACCTACCGCGCTTCGCTTGGTCAACCCCTCAGCGGCAAAAATTAAAATTTTTACCGCTTCGGCGTTATAACCTCACACTCAATCTTTTATCACGAAGTCATGATTGAATCGCGAGTGGTCGGCAGATTGCGATAAACGGTCACATTAAATTTAACCTGACTATTCCACTGCAACAACTGAACGGACTGGAAACACTGGTCATAATCATGGTGGCGAATAAGTACGCGTTCTTGCAAATCACCAGAAGGCGGTTCCTGA [...]
+AATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACAACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCATGATGTTATTTCTTCATTTGGAGGTAAAACCTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTTGATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTCCTGAGCAT [...]
+NODE	820	5228	255036	248253	0	0
+GGCAGACTTTTCTCCGCTGGCGCGCTATCTGACCGGCGATCGTATCCGCCTGTATTGCTTTGGGCGCGATGGCGCGCAGCTTGCCGCGCTGCGTCCGGAAATCGCCCAACAGACTGAGACGATGGAAGAGGCGATGCGTTTGCTGGCGCCGCGTGTTCAGCCGGGTGATATGGTGCTGCTGTCGCCCGCCTGCGCCAGCCTCGATCAGTTTAAAAATTTTGAGCAACGGGGCGATGTCTTTACCCGTCTGGCGAAGGAGTTAGGTTGATGCGTTTATCTCTCCCCCGTCTGAGAATGCCGCGCGTACCAGGCTTTGGCCTCCTGGCCTGGCTGTTTGCGGCGCTTAAAGGCTGGGTGATGGCTTCGCGCGATAAAGACGCCGACAGTCTGATCATGTATGACCGCACGCTGCTATGGCTGACCTTCGGGCTGGCGGCGATTGGTTTTGTCATGGTGACGTCGGCCTCCATGCCAGTCGGGCAGCGCCTGGCG [...]
+GGAATAAAATTCCTGCAAGACGCGTTCCATTATTGCGGCGTGAAGAAGGCGTCTCTTCATCACTGTTTCGCGTGTTCAGCGCAGCCTGCGACATATCAGTCCGCCAACTCCAGAATTCGTACCACTAACTGCGAGAAGCTCATTCCCGCCTGACGCGCCGCCATCGGCACCAGACTATGGCTGGTCATCCCCGGAGAAGTATTGGCTTCCAGCAGATAAAACTGACCATCGCTGTCCAGCATGACGTCAATACGCCCCCATCCCGTGCAGCCTAAAGCTTTCCATGCCTGCAGGACGAGAGACTGTAGCGCGGCTTCCTGGGACGCTTCTAAACCGGCAGGGCAGAAATACTGAGTCTCATCAGAGAGATACTTCGCCTCATAATCATAGAAGGTTCCTGCCGGTTGGATACGAATTGACGGTAAAATTTCTTCGCCAACTATCGCCACCGTAAATTCCGGACCGCACAGCCATTTTTCAATCAGTATTTCG [...]
+NODE	821	1412	89167	88670	0	0
+AATACCAGAGACAATCTGCGCCGCAATTCTCCCGGGGCTGTCTGGCGATGTCGTCATGGAGCTCAGAATAAAAACGGCGGCGCCTGTCGCCACCAGCGCATTAGTGCGTAATCCCGCCATACGTTGACGCCATTGTCTTTCCGCGCCAATCAGCGCGCCCAACAGCATAGCGGCCAGTAAATTTAAAATATAAGGAAACATTAACATACGTTCCTCCATTTTTTCTGGAAGAATAAGTACGTGCTATATTTAGCACACGACAAATTTCTGCCCTGAGGCAATTAGCGTCGTGTTAACGGCGGAGGAAATAAAGCGTGTTTAAACATGAACATGACGATTACCTCGCGACAATGCGCGTGTTGTAACATTATTGGGATGACAATCGTCACAAGGGGAGATTGCTGCCCACCGGTTCGGCAAGCAGCGCAGGAATAGCGTGCGTTAACTTGCCAGATGATTTACGTAAAAGTGACTGTCCAACATATTACTCCT [...]
+ACCGCAAAGTGCGTTCCTTCTTTAGCGTAGAAGGGCAGCAGAATAAGGCCGCCAAAGGACATACTCCAGCCGACCACTGGCAGCGTGCCGTATTGGGCGATTAGCCTGGAAGGCCAGGTCGTATAAAAGGCGGCGGCAAATGCGGAGGCGATACCCCAGAACAGCGCGCCTGAAGAGATCGACAGCGATGTTGGATTGCCGTGAGTCACCAGTAAAAAGGTGCCGATAAGCGATGTAAGAATGGCGGTTAAGACCAGAATGCCTGGTCGTGTTCTTCGCGCTAATGCAAACCACGCGACAATAATGGTCGGCGATAAAAATTGCAGCACTGTCGCGGTGGCGGCATTGGATTTTTCAATCGTAAGCAGGAAGGTTAGCTGAACGGTGAGCGCGCCCACCACGGAGAAAATCAGCAGACTCAGTGCATCTTTGCGGTTTTTAAGAATCGAAAATATCTTATCGCCGTGCATAAAGGAGAAGGTCACCAGTATC [...]
+NODE	822	3092	154790	153837	0	0
+CGGTGCCGGAAGGCTTATTCAGCACCAGAATATGGTCGTCTTCATACAAAATGACGTCCGCCAACGCCGCCACTTTTTGCAAATGCGGCGACACGGCCTCTTCTTCGCGTTCAGCAACGCGAACCGGCGGAATGCGGACTTCATCGCCCGCTTCCAGTTTGTATTCCGGTTTAATGCGTTTTTTGTTCACCCGCACCTCGCCTTTACGCAAGATGCGATAAATCATACTTTTTGGTACCCCTTTCAGTTGGGTGCGCAAAAAGTTATCAATGCGTTGCCCCGCTTCGTCAGCGGCGATGGCAACAATTTTTACGGATGGCGTTTCTGTTTTCATGGGGGGCGATTCTAAATAGCCTGTGAGATTCGCGCCACACATTTTTCTATGCTTATAGAGACGTCTACGCCAGTGGATGAACATTTTTCACTGCGGTTTTGCTGGTTATTAAAGCGATTGGCTCGCGCTGGTGAAAAAACTGTGAGTAAGCGGGTGAT [...]
+ACGCGTTCTTCCTGCTCGGTCTCCTGGACAGGCTGTTCTTCGCGGTTAAGCGCTTTTACTTCCTGCTGCGCCTGGCGCTTGTCATCATTGCGGCGGCGGCTGCGTTCGCGACGCGGCGTCTGTTGCTGCTCATCGCCGGTTTTCACTTTTTCCGCCGTTTCCTGCTGGCGGGTATCGCGCGTTTCCGCATTTTGCTGCTGCGCCTGGCGACGGTTACGACGATTATCGTCGCGGCTCTCGCCGCCGTCACGTCCGGCACGGTTATCACGGGTGTCGCGGCGTTCGTTACGATCGCGACGGTTGTTCTGCCGTGGCTTGCGACGATCCTGCTGACGCTCCGCTTTTTCTTCCGCTTTCGGCGCGGCTGTTTCGACGGCTTTCGTTTCTTCACCGCTGAACAGTTGTTTCAGCGCGTTAAGGAAGCGGCTAAACAGACCCGGCTGGGCAGGCTGCGCGGCGGCAACATTATCCTTTTTCGCCGTGGCGACGCTA [...]
+NODE	823	3060	179023	177645	0	0
+GAAAGTTATTGACTCAATCAGTATCAAAATCATCTTTTCAGTAAAGAAATGAAAATACAAATAAAGCGCAATCAGCTGAAATAATGATGTTATTTCAATACTTTTGACAACCTGCCCTTCCTTACGGCCATCACGTAATTTCTTTTCTGTAGGCTGTTCTGTTTTCTCGCTCATACAGATGGAAACCAGTCTTTTAGATAAATATAAAATTTATCGCTTTCAACCAAATAGTGATGAAGAGCATAAGGGAATGAGATCAGGAGCGTCAGTAGAACCAATATACTTTTGAGCGGCATTGAGAAGAAAAACACATTCAATTGTTGTGCCGACCGATTTAAAAGACCTAAAGCCAGATCGGCTAATACCATACATATTATGGCAGGAAGAGAGAAGCTGATGCATAATTGATAAAGCGTTCTCCACTCTGCCTGGATATATTTTAAAAATTGCCGATCAAATAATAAAGTACGCCCTGGTGGTAAATATTGATAT [...]
+GTTAAGAATCAATGTCCCTCATCATGAAATTTACCGTTCGATGAAAGCGCTAAAGCAGTGGCTGGAGTCTCAGTTGCTGCATATGGGGTATATAATTTCCCTGGAGATATTCTATGTTAAGAATAGCGAATGAAGAGCGTCCGTGGATGGAGATGCTTCCAACGCAAGGCGCTACCATTGGTGAGCTGACATTGAGTATGCAACAATATCCAGTACAGCAAGGGACATTATTTACCATAAATTATCATAATGAGCTGGGTAGGGTGTGGATTGCAGAACAATGCTGGCAGCGCTGGTGTGAAGGGTTAATTGGCACCGCTAATCGATCGGCTATCGATCCTGAATTGCTATATGGAATAGCTGAATGGGGGCTGGCGCCGTTATTGCAAGCCAGTGATGCAACCCTCTGTCAGAACGAACCGCCAACATCCTGCAGTAATCTACCACATCAGCTAGCGTTGCATATTAAATGGACAGTTGAAGAACATGAGT [...]
+NODE	824	4147	262539	260794	0	0
+TTCGGTATAACGGGTCTTTTTCATGACAATGCGCCTTTCTGTGAGATGGAAGAAAGACCGGAAACTTCAGTTTAGACTGGCACTGTTTACAGGGGGAAGGTCAAGATAATGCGAAAATACAGGGATGATTTAAAACTTACCCTGATACTTACACTGCAGGATAATTTTAGATGATAGGTTTTTTGATGTAACTGCTTGATTTATCAATGGCGCGCCCTGCAGGATTCGAACCTGCGACCCACGGCTTAGAAGGCCGTTGCTCTATCCAACTGAGCTAAGGGCGCCTTGTGAAGTGAAGACTTCGTGTAGACGAAACGCGAGAATTATACGGTCAGGCACTCCTGAGTCAATGGCTTTTGTTCTGGTTGCTGACTAAGTGTACGAATATCGTCTTTTCTGGCGCAATGCCAGGTTCCAGGAAATCGCCTGGACACATCTCAGCACGCATAAAGTGGGAATTAAGGCCGCCAGTATTTAGATAATCAATCAGTT [...]
+TGAGTCAGGCCAACTCATCTCTGGGCGAAGTGAATATTGAACTGCGCGGTAACGTGGTGGATTTTACCTGCGCCGTGGTTGCGGGCGACAGTAACAAGTCGGTTAACCTCGGCACCTGGCCGACAAAACAGCTTCACGCCGTCGGTGACGCCACGCAACCGGTAGCCTTTAGCCTAAAACTTGAAGGTTGCCCGCCGGGGGCGGCGTCTATAACGTTTTCCGGGACGCCAGCGCCCGGCACGGCATTACTGGCGCTTGCTGATACGGCAATGGCGCAAAAACTGGCGATTGAAATTCGCGATGGCGATCAACGTCGATTGCCACTTGAACAGGCCAGCAAGGCCGTCGATATTGACAACAACGGCAATGCTACCCTGAAATTCTATGCGAACTATATCGCCTTAGCAGATGGCGTGCAGCCCGGACTTGCTAACGCGGATGCGACCTTCCTGATCAATTACAATTAGTGTCCGTTATTGTGGCTCCCGAACG [...]
+NODE	825	1937	113458	112881	0	0
+AGATCCAGGGGAGAGAATAGTCGCTGGTGGTATCACGTACGCGCCCTATGGACATTGTTAAGCCTGCGGGCGTGAGTTCGCGTAAATTAAAAGATACTGCCGGCACCGTGAAGGTTGTCGTTGAGCCATCGGTTTCAACGACGCTGACGTTAAGGTCGGTATTGCTGCGTATGATGGGGACATTTTCAAGGGTAAATGCCCCAGCGTTCACTGGTGCGGTATAAATAATCTGTCCGGACTGACGAACTTCAACGCGAGCCTGGTGGGTTCGGGCAATACCGTTAATGGTTACGCCTTGTGTATCCTGTGCCAGCCCTTGTTCAGGGATAAGCTGTACGCCGTTGATCGGCGCGCCACTGAATAGACTGGAGTTGACGTTGATCTGCCCAACTTGCGCACGCATTTTTTGTGCCTGAAATACGTGCTCCGCATAGGTATATAGACTATCGGTACGGTATTCTCCATCATTATTCGTCAGCATGTAGCGGCTGC [...]
+TCACGCTTAAATATCTCTGATCCAGACCGTATAAAAAGGTTATTGATCTGTCTCCCTTATTATGGGGAGACAGATTAAAATTAAAGGACTAATTCTGATGCCAGCAGTGACTAAACTTCCATTATTATTACTCAGCGTCCCCTTTGTTTTTTCAGCACTCTTTTCACAGGCTAACGCTGCCGGCATGGTACCGGAAACTACGCTACTGGTGATTGAAGAATCCACACACAGCGGCGTAATGAATGTTAAAAACACCGACAGCAATCCGGCTTTGTTATATACCACCGTCGTTGATTTACCTGACGACAATGGTGTGAAGCTGGATGTCACTCAACCGGTTGTTCGCGTTGAAGCAGGCCAGCAGCAGCAACTACGCTTTATTATGGAAAGCACGGAACCGCTCACCGTCGAGCACTATAAGCGCGTCACGTTTGAAGGTATTCCTCCGAAATCTACCAATAAGGGAATGAAAATAGGTTTTAATCTACGCCA [...]
+NODE	826	230	10375	10146	0	0
+GAACCTTGAGTACCCAGACCTATACCTGATGGATGTTCTGACAGGAAGTTTAATGAATTAATTGCCATATCTATCCGTCCCTGTGTAGATCCACGCGATGCCTGAGACGAATCTGTAAACCTGCCGATCAAAATTTCTGTATAGTTGTCAAAAATATTAGTAGAAATTGCTAAAACGGGTATAATTATTACAAATAAAGTTATTCCACAAAGAAGCATCTTCCGATTTGA
+ACCCGTTTTAGCAATTTCTACTAATATTTTTGACAACTATACAGAAATTTTGATCGGCAGGTTTACAGATTCGTCTCAGGCATCGCGTGGATCTACACAGGGACGGATAGATATGGCAATTAATTCATTAAACTTCCTGTCAGAACATCCATCAGGTATAGGTCTGGGTACTCAAGGTTCAGGAAACATGCTTTCGGTAAAAGATAATAGGTTAAATACGGATAATTATT
+NODE	827	1528	82271	78869	0	0
+ACGGGACTTGAACCCGTAAGCCCTATTGGGCACTACCACCTCAAGGTAGCGTGTCTACCAATTCCACCACCTCGGCACGGATACTGCTATTAGCGCGGGATATCGCTGGTCGGCTGGGCCGGTGCAGCAGGTTGAGTCTGCTCGGTCTTCGCCGGCGCGCTCAGATTTTCCCACTCGCTTCCTTTATTGGTTTTGTTGCTATTGATATTACCCAACACCAGACTGATGATGAAGAACAGCGTCGCCAATACCGCCGTCATTCGGGTCATGAAGTTACCAGAACCACTTGAACCAAATAGCGTAGCGGAAGCGCCTGCTCCGAAGGAGGCTCCCATATCAGCGCCTTTACCTTGCTGCAGCATGATCAGACCTACAAGGCCAATTGCCACAATAAGGAAAACAACTAAAAGAGCTTCGTACATAATCAACCTGTTCCTTGCGGAGTTGCCGCGTACCAATGCTTCTACCAATAAAGCGGGATTTTTACTGTTT [...]
+TCCCGAACGAACTGAGCCTCAACGGCCTGAAAGTGGTTGTGGATTGCGCCAACGGCGCTACCTACCATATCGCGCCGAATGTGCTGCGCGAGCTGGGCGCGACCGTTATCGCCATCGGCTGTGAGCCAAACGGCGTCAACATTAACGAAGAAGTGGGCGCGACCGACGTGCGCGCGTTGCAGGCGCGCGTGTTGGCGGAGAAGGCGGACCTCGGCATCGCGCTTGACGGCGACGGCGACCGGGTCATCATGGTTGACCATGAAGGCAATAAAGTCGATGGCGATCAGATCATGTATATCATCGCGCGCGAAGGGCTGCGCCAGGGGCAACTGCGCGGCGGCGCGGTGGGGACGCTGATGAGCAATATGGGGCTGGAGCTGGCGCTCAAGCAGCTTGGCATTCCGTTTGCCCGGGCGAAAGTGGGCGACCGCTACGTGCTGGAAAAATTGCAGGAAAAAGGCTGGCGCATCGGCGCGGAAAACTCTGGTCACG [...]
+NODE	828	4010	213729	209694	0	0
+GATGAGCGCTCATCTCCGGCAAGCTGAACAGCATGTCGCATTCAGGACAGCGCTGGTAGTGGCTGCGCGGCAGCGCTTCGCTAATTGACCTGATCGTTAGCTTTTTTGTTGGCGTGACGTGTGAGGTGTTCAGAGCCATGTATCGTGAATCAAAGTGTTAGAATAATGTAATCTTAACTCATGACAGGAATAATCTTGAGCAAGAACGCATTTAATGCTTATTTTAATAGCCTGTGTTTAGGAGTAAGACCACGAAGTGATTATATAATGAGCAAAACAGAACTATACGCGGCGTTAAACCGCGATTTTCAGTCGTTAATGGCAGGTGAAACCAGCTTTCTGGCCACGCTGGCGAATACCAGCGCGCTACTGTTCGAACGTCTTACCGAGGTGAACTGGGCAGGATTTTATCTCCTCGAAGGCGATACGCTGGTGTTGGGGCCGTTTCAGGGGCGAATCGCCTGTGTGCGGATTCCGGTTGGTCGCGGCGTG [...]
+TGAAATAAAAGAACCGCCAAAACCAAACAGCAGCGCCATGATCAGCAAGCCTTGCACGCTGCTCGACTGTATCCCTGTCAGGCTCAGAACCAGCCCGAAAACGACCATCACGGCCAGGTTCGTCAGCAGGAAGAGCGCGATTCGCATCATAATTTTCTTTTAACCTCAATTTAACAAAGCGCACTATGCGATTACCCACATCGTATGGGTCTTATGGCTATTTTCAAGCATCACCAGGCGGTAAGTCACGAGAAAAACACAACTTTACATTTTGTAGCATTATCCTGACGACTTCTGCGCTTGTTAAAAAAAAACAGGCACAATTTTTTGTGCCTGTTTAGCGTTACTTATTGGCTGCCGCCTGCTCCGCTGGTTTTTCTTTTTCAAGATGCGCCAGGTCCAGAGCAATCTTCACCGTTTCATCAAGGTACGGGTCCGGCTCCTGGTAATCCTTTGGCAGATCGTCCAGTTTCTTCAGCAACGGTTTACCCT [...]
+NODE	829	10930	586905	579491	0	0
+GCGCGGCGTTAAACGGCGTCAAAGCGATGAGCGGCAGCGCGTATCGCGTGACTATTCCGGCGGTGTTGCAAATAGCCTGCCTGCGACGAATGATGGCAGCCGTTCAGGCGTGAATGCCCTCACAGGGGGAAATATTTTCTTTTCCCCCTTATTAGATCATAGACAGTCCTCTTCCCCCTGATTATTATGCCGCGCCCCGAATACAGAACTCGTTATTCTGGGAAACTATTTCACCATTCAATTATGATGATTTTGAGGAATTATGGGCAACACTAAGTTGGCTAATCCGGCACCGCTGGGCCTGATGGGCTTCGGCATGACCACCATTCTGCTTAACCTGCACAATGCCGGTTTTTTCGCCCTGGACGGTATTATTCTGGCGATGGGGATTTTCTACGGCGGTATCGCGCAAATTTTTGCCGGTCTGCTGGAGTATAAAAAAGGCAATACCTTTGGTTTAACGGCCTTTACCTCTTACGGTTCGTTCTGGCT [...]
+AGCGGAAAATATCGGCGCAGCCGCCCGGGCTATGAAGACCATGGGATTTACTGACCTGCGTATTGTCGACAGCCAGGCGCACCTGGAGCCCGCCACCCGTTGGGTCGCACATGGATCTGGAGATATTATTGATAATATTGAGGTTTTCCGCACCCTTGCCGACGCGCTCCACGATGTGGATTTTACCGTCGCGACGACAGCCCGCAGCCGGGCAAAATTTCATTACTACGCTTCGCCCGCTGAACTGGTTCCCTTATTACAGGAAAAATCACACTGGATGCGTCATGCCGCGCTGGTTTTTGGCCGTGAGGATTCCGGTTTGACCAATGACGAGCTGGCGCTGGCGGATGTATTGACCGGCGTGCCGATGGCGGCGGATTACCCTTCGCTCAATCTGGGTCAGGCGGTCATGGTGTATTGCTATCAATTAGCAGGTTTAATGCAACAGACCACAGAATCCGTTGATATTGCTGATGAATCGCAGTTACAGGC [...]
+NODE	830	115	7865	7865	0	0
+AAACTGATAAGCAGTACGATACGGGTCATGCGAGTGTTAAATCGATGTCGTTTTCGCATACTGTTGGCCTGACTCACAAAGGGTTCCTTAACGTTGGCCCAGCGATATGGGCGGG
+AACAGTATGCGAAAACGACATCGATTTAACACTCGCATGACCCGTATCGTACTGCTTATCAGTTTTCTCTTCTTCTTTGGACGTTTCGTCTACTCTTCTATCGGCGCCTGGCAGC
+NODE	831	513	37421	36535	0	0
+CTTAAAACAGGTAGTAAAATCGAAGGGAGAATGAGCGGTAGTCCCCACCATTTATCTCTGATATTTATATAAGTTTTATTTAGTTTCATAGATGCTCAGCAGAACCCCCCAATCCCAAAGGGGCGTTAACAGACAGGCATCCCACCTGACTTTAAATTGATGATGCGATATACATCACACGATAGTCATCGATTGTAATTATTAAACAAAAGTAACATTTGATTTAAGTCAATTATTACCTTTCTCCTGCAGCCTTTATTCGTCTTTTTATTCTTTGTTATCATTAATTTATTATTAATGTAAATACTAAAATTATCTTCCATAACAATATAAGATAAATCAACTGACGCAATTTTACATTAAGAGGAATTGACCATCGGTTCGCAGTATGCCTTAATGTAGAGTGAACGCAGGCTTGTTACGTTCTTCGCCTTGATAATACCCTTGAAGAACCCAGCCTGATCCCGCCCATATCGCTGGGCCAACGTTAAG [...]
+ATCAGGCTGGGTTCTTCAAGGGTATTATCAAGGCGAAGAACGTAACAAGCCTGCGTTCACTCTACATTAAGGCATACTGCGAACCGATGGTCAATTCCTCTTAATGTAAAATTGCGTCAGTTGATTTATCTTATATTGTTATGGAAGATAATTTTAGTATTTACATTAATAATAAATTAATGATAACAAAGAATAAAAAGACGAATAAAGGCTGCAGGAGAAAGGTAATAATTGACTTAAATCAAATGTTACTTTTGTTTAATAATTACAATCGATGACTATCGTGTGATGTATATCGCATCATCAATTTAAAGTCAGGTGGGATGCCTGTCTGTTAACGCCCCTTTGGGATTGGGGGGTTCTGCTGAGCATCTATGAAACTAAATAAAACTTATATAAATATCAGAGATAAATGGTGGGGACTACCGCTCATTCTCCCTTCGATTTTACTACCTGTTTTAAGTAGCGCAAATACTTATGCGCTTACCAGCA [...]
+NODE	832	4858	233250	229292	0	0
+GGCCAGCGCGGCGGCAAGCTGCTGTTGACCGATAACGCCCTGTTCGAAGACCAGTTTTTTCACGGCGGCGAGGCTGTTGCCCAGGTTGGCGATACCGACCTGCAGACCGGATACCCAGTCATATTTCGCGCCGCCTTGCTTGATACTCTTCGCGCGTTCAATACAGTCATCTACTAGCGCTGAGCAGAGAATATCGTGGACGTTCTCTTCCAGCATGGTGTCGACCACATACTCAATTTCGATCGATTTGCGCGTGTAGTAGCGAATTTGGGTATCCCAGGCGGCCATCACTTCGTCAAAATTGTTAAAGTTGCCTGCGGAGAGCGCCTTTTCCTGCGGCAGAAATACCTTGCCGCTGGTGGCGTCGCGACCGCCTTCCAGCGCCGCCAGCATGACGCGGGCGAAGTTAATAAAGCTCATGCCGGTGCAGCGATAACCCCATTTCCCGCCGACGGCGGTTTCGATACAGCCGATCGCCGCGTAATCGTAAGC [...]
+GTCCCCGGCTTTGATAATTCAGCTATGGATGGTTATGCGGTACGCGTGGCGGATTTGTCCGCCGATAAGCCGCTGCCCGTCGCCGGCAAAGCATTTGCCGGTCAGCCTTACCAGGGAGAGTGGCCTGCGGGCACCTGCATTCGCATTATGACCGGCGCCCCGGTGCCGACAGGTTGCGAGGCGGTAGTTATGCAAGAGCAGACGGAACAAACCGATGACGGCGTGCGTTTTACCGCCGATGTTCGTTGCGGACAAAACATCCGCCGCCGCGGCGAGGATATTCGCCAGGATGCGGTGGTCTTTCCGGCCGGTACGCGCCTGACTACTGCCGAACTGCCAGTGCTGGCGTCGCTGGGAATTGCCGATGCGCAGGTTGTACGTAAAGTGCGCGTAGCGCTGTTCTCGACCGGCGACGAGCTCCAGCTTCCGGGCCAACCGCTGGAGGCGGGACAAATTTATGACACTAACCGTCTAACTATACATTTGATGCTG [...]
+NODE	833	501	65238	53886	0	0
+TAATGGTGCTGTCGGTATTCCTCCGGTGTCATATTGTTCAGCGATTCATGCGGGCGTTCACAGTTATATTTTGATAACCATTTTTCCGTGATTTCACGTACTTCACTCAGCGTTCTGAACAGATAAAAATCGAGTATTTCTGTGCGATATGTCCTGTTAAAACGCTCAATGAAAGCATTTTGTGTCGGCTTACCCGGCTGGATAAACACCAGTTTTACGGCATGTTTCTCTGCCCATTCAGTCAGTGCCAGAGAGATAAATTCTGGGTCGTTATCCATGCGAAGCATGGCCGGATAGCCACGGTTTGCCGCGATCCTGTCAAGCACCCGGACCACTCGTGGGGCTGGCAGATTCAGATCTATTTCAATCGACAACGCCTCACGGTTAAAGTCATCAACGACATTGAACGTGCGAAAACGACGCCCACAGACCAGGGCATCATGCATAAAATCAACAGACCAGCTCTGGTTCAGCGCTTCCGGCGTGGCCAGT [...]
+ATTTTATGCATGATGCCCTGGTCTGTGGGCGTCGTTTTCGCACGTTCAATGTCGTTGATGACTTTAACCGTGAGGCGTTGTCGATTGAAATAGATCTGAATCTGCCAGCCCCACGAGTGGTCCGGGTGCTTGACAGGATCGCGGCAAACCGTGGCTATCCGGCCATGCTTCGCATGGATAACGACCCAGAATTTATCTCTCTGGCACTGACTGAATGGGCAGAGAAACATGCCGTAAAACTGGTGTTTATCCAGCCGGGTAAGCCGACACAAAATGCTTTCATTGAGCGTTTTAACAGGACATATCGCACAGAAATACTCGATTTTTATCTGTTCAGAACGCTGAGTGAAGTACGTGAAATCACGGAAAAATGGTTATCAAAATATAACTGTGAACGCCCGCATGAATCGCTGAACAATATGACACCGGAGGAATACCGACAGCACCATTATTTGGCCGGGAACTCAAAAAATGTATGGAACTAAAACGGGT [...]
+NODE	834	47	5150	2902	0	0
+TTCGCCACTGGCCACGCCGGAAGCGCTGAACCAGAGCTGGTCTGTTG
+TTACGCACCGGCAGCCGTTGTTTGCCCTTACGGCGAAAATTCAGCTT
+NODE	835	252	14741	14741	0	0
+ATCGCGAAGATCGGCAGTTGCGGTAGGCGATGCCATATCCTGAGCTAAAGGTCTTTCCAGGGCGTGTTTCCCTTCCAGAAAGGCGCAGACGGTTTGTAGATGATCGGCGATAAAACATCCTTCTTTGCTGATAAGCCCAACCTCCGCCGCGTTCTCTGTTGCGACGATAATATTTCTGCCGGCCCTGATGGCTTCCGTTGCACTTGATATTGCGCCAGGAACGCCGCGTAATGCGCCTGTAAGCGCTAACTC
+TGCAACGGAAGCCATCAGGGCCGGCAGAAATATTATCGTCGCAACAGAGAACGCGGCGGAGGTTGGGCTTATCAGCAAAGAAGGATGTTTTATCGCCGATCATCTACAAACCGTCTGCGCCTTTCTGGAAGGGAAACACGCCCTGGAAAGACCTTTAGCTCAGGATATGGCATCGCCTACCGCAACTGCCGATCTTCGCGATGTGATCGGTCAGGAGCAGGGTAAACGCGGCCTGGAGATTACAGCGGCAGG
+NODE	836	51	2830	2830	0	0
+TGAGTTAGCGCTTACAGGCGCATTACGCGGCGTTCCTGGCGCAATATCAAG
+ACCCACCAGCTCATATGCCTCAAGATTCGACGCTGTAAGCTGCTCAGACGC
+NODE	837	59	23323	21615	0	0
+CATACCCTTGGGACCTACTTCAGCCCCAGGATGTGATGAGCCGACATCGAGGTGCCAAA
+AAGGGTATGGCTGTTCGCCATTTAAAGTGGTACGCGAGCTGGGTTTAGAACGTCGTGAG
+NODE	838	497	30254	27417	0	0
+CAGTGAACCCAGTAGCCCGACCATCCCACTGTTACGCCAGGCTGAAAGACTGGTGGGAAAACGGTTCTCGGAGGTGATCAATGAGATCCCGGTGGAGTTGCTGGAGAAGTGGGATGCCCTGGAATGATGATGCGCATGTCTGGCGGTTCTCCGTGATTATCTGAGTGACATCAACATTACGCAGTCTGCTTCTGCGCTGAACATGTCCCGATCCCGGTTAAGCACCGCCATGAGGCCGCGCCTTAAATGCCAGTGGGATCAAAATAGCCATGACAGTGAAAGAAGTGGCGGTAATATCCTGTTCGTCATCCAGGCGTAGGCCCATTTGCGTTAGATTCCACGATAGGCGGTGGCACTGCTGAAGACGAAAAAAAACCGTATCCCTTTTACAGTGATACGGTTTTTTTTACTTCACAGGATGTATAAAAACACCCTGAGATTTGTATCTGGCGGAACGGACGGGACTCGAACCCGCGACCCCCTGCGTGACAGGCAGG
+GATACAAATCTCAGGGTGTTTTTATACATCCTGTGAAGTAAAAAAAACCGTATCACTGTAAAAGGGATACGGTTTTTTTTCGTCTTCAGCAGTGCCACCGCCTATCGTGGAATCTAACGCAAATGGGCCTACGCCTGGATGACGAACAGGATATTACCGCCACTTCTTTCACTGTCATGGCTATTTTGATCCCACTGGCATTTAAGGCGCGGCCTCATGGCGGTGCTTAACCGGGATCGGGACATGTTCAGCGCAGAAGCAGACTGCGTAATGTTGATGTCACTCAGATAATCACGGAGAACCGCCAGACATGCGCATCATCATTCCAGGGCATCCCACTTCTCCAGCAACTCCACCGGGATCTCATTGATCACCTCCGAGAACCGTTTTCCCACCAGTCTTTCAGCCTGGCGTAACAGTGGGATGGTCGGGCTACTGGGTTCACTGCTCTCAAACCAGCGACGAATGCACCGCAGGCGCTCCAGCGCATCATTACG
+NODE	839	27	3624	2837	0	0
+TATTCTAACCAACTGAACTACCGCTCC
+CGGGTTCGAGTCCCGTCCGTTCCGCCA
+NODE	840	483	27963	27789	0	0
+CCCGCTACGGCATTTATTCTTTGGGCGGAACAGCGGCTATAACGTCGCACAGCAGAAAAGAACAGTGTGGAGAGGCACAAATGGGTGGGGGCCCTGCCAGCTACATCCCGGCACACGCGTCATCTGCCTTGGCTGCTTCCTTCCGGACCTGACCTGGTAAACAGAGTAGCGTTGCGGGAGAACCAACAGAGCCCCCATTGAGAGCGTTGTGAACCAACGCGCAGGCGCATTATCACTGCTATATCGTGCAATTGCAACCCATCAGGCATCGGATGCTGGTTTCTTGCGCATCCGGGCTTTCCTCCCCCCTTATTCCAGATTATCCTGAAGCATTAACGCAGGATTCTATTATGGATATTCAGGACACATTTCCTCAACGCGTCTGGCAAATCGTCGCTTCGATCCCGGAAGGATTTGTCACGACCTACGGTGATATCGCCCGGCTTGCCGGTTCGCCTCGGGCGGCGCGTCAGGTCGGCGGAG
+TCACCGTAGGTCGTGACAAATCCTTCCGGGATCGAAGCGACGATTTGCCAGACGCGTTGAGGAAATGTGTCCTGAATATCCATAATAGAATCCTGCGTTAATGCTTCAGGATAATCTGGAATAAGGGGGGAGGAAAGCCCGGATGCGCAAGAAACCAGCATCCGATGCCTGATGGGTTGCAATTGCACGATATAGCAGTGATAATGCGCCTGCGCGTTGGTTCACAACGCTCTCAATGGGGGCTCTGTTGGTTCTCCCGCAACGCTACTCTGTTTACCAGGTCAGGTCCGGAAGGAAGCAGCCAAGGCAGATGACGCGTGTGCCGGGATGTAGCTGGCAGGGCCCCCACCCATTTGTGCCTCTCCACACTGTTCTTTTCTGCTGTGCGACGTTATAGCCGCTGTTCCGCCCAAAGAATAAATGCCGTAGCGGGTAGGGGTTTACTGTATAACCAGCCCTGACCATAATGTACGCCATGCTGGC
+NODE	841	2833	143423	140283	0	0
+CGCTTCCAGCGCCGCGTGAGAGAGGAAGGCCTGCAACGGCATCAAATCTTCATCTTCGTCGTTGTAGCTGAACTGCCGCGTCGCCGTCACCAGTTCCTCTAAGTTTTCGATGCGCGTCTGGCCTTTCTCGCCTTTTTCTTGCTCATACATGGTGCGCAGGCCGGAATCTTTGATCACCCGGTCAGTCTGCACATGCAGCGGCATGTCGGCGGTTTCCTGCGCCAGAGCGTCAATCAGTTCCATAAAGCGTTGTAGCGCGCTGGCCGCACGCCCGGCCAGGGCTTTTTCCTGTAACAATTCACGGCACGCCTGCCACAATGTTAGCTGGCGATCGCGCGAGGTCTGGCGCACCACGTCCAGCGTGCGGTCGCCGATGCCGCGCGTTGGGGTATTCACCACGCGTTCAAAGGCGGCATCATCGTTGCGATTGGCAATCAAACGCAGATAAGAGAGCGCATCTTTGATCTCCTGGCGTTCGAAGAAGCGCATCCC [...]
+CTGTTCGCCAGCGATGAAGAGGCGTTATTCCTGTCGAAGCTCGGCAAGCGTATCTCCGCGCGCAATGTCCAAAAACGGTTCGCCGAATGGGGCATAAAGCAGGGGCTAAACAGCCACGTGCATCCACATAAGCTGCGCCATTCGTTCGCGACCCATATGCTGGAATCGAGCGGCGATCTGCGCGGCGTGCAAGAGCTGCTGGGTCATGCCAACCTTTCCACCACCCAAATTTATACTCATCTTGATTTTCAACACCTTGCTTCAGTGTACGACGCGGCGCATCCGCGCGCTAAACGGGGGAAATAATGCGTTTTTACCGGACTTTGGGGCGTATTGCCGCGCTCACCTTTGACCTGGATGATACCCTTTATGATAACCGTCCGGTGATTTTGCGTACTGAGCAGGAAGCGCTCGCTTTTATGCAAAATTATCACCCGTCGCTACGTTCGTTTCAAAACGTCGATTTACAGCGGATACGGCAGGCGGTGCGTG [...]
+NODE	842	251	16307	16307	0	0
+ATCAGTAATGGATTACCGGGATTAACCATGGTTGGCCTACCGGAAACCACGGTAAAAGAGGCGCGTGACCGGGTACGTAGTGCGATTATTAATAGCGGATATGAATTTCCGGCTAAAAAAATAACCATTAACCTTGCTCCAGCCGATCTACCGAAAGAGGGTGGAAGGTATGACCTGCCTATTGCTGTTGCGCTTCTGGCCGCGTCTGAGCAGCTTACAGCGTCGAATCTTGAGGCATATGAGCTGGTGGG
+GGCCAGAAGCGCAACAGCAATAGGCAGGTCATACCTTCCACCCTCTTTCGGTAGATCGGCTGGAGCAAGGTTAATGGTTATTTTTTTAGCCGGAAATTCATATCCGCTATTAATAATCGCACTACGTACCCGGTCACGCGCCTCTTTTACCGTGGTTTCCGGTAGGCCAACCATGGTTAATCCCGGTAATCCATTACTGATATGCACCTCTATAGTGATAGGCGGCGCATTGACGCCAAGTGCGGCGCGGG
+NODE	843	1559	83315	82935	0	0
+GATTTTGTCGGCTTCCTGATTTTGGGCGGGCTGTCGATTATCGCCGCCATCACCTACACCGTGGGTAATCGGCCCTACGGTTATATCGGGCTGGGTGATATCTCTGTCCTGGTATTCTTTGGCTGGCTAAGTGTCATGGGGAGCTGGTATCTCCAGGCGCATACGCTGATTCCGGCGCTGATTCTCCCGGCCACCGCCTGCGGTTTACTGGCGACGGCGGTGCTGAATATTAATAACCTGCGCGATATTAATAGCGACAGAGAGAACGGCAAAAACACCCTTGTAGTACGACTGGGCGATGTCAACGCGCGTCGTTATCACGCCTGCCTGTTGCTAGGCGCGCTGCTCTGTCTGGCGCTGTTTAATCTGCTCTCGCTACACAGTCCGTGGGGATGGTTGTTTATTCTGGCCGCGCCATTGCTCATTAAACAAGCGCGCTATGTAATGCGCGAAAGGGAGCCTGCGGCAATGCGCCCGATGCTTGAACGTACC [...]
+AAGAAAAGAACAACAGCCTGACGCAGGAAGTGCAGTCTGCACAGCATCAACGTGAAGAACTCGAGCGTGAAAATAATTCTCTGAAGGAACAGCAGAGCGGCTGGCAGGAACGTTTGCAGGCGCTGCTTGGTCGTATGGAAGAAGTCTAATCCTCGTCATATTTCACGTTATGGCGGCGTTGGCTGCGTGCGTTCACCCCAGTCACATAGTGGCCTATGCTCCTGGGGATTCACTTACTTGCCGCCTTGCCCTGACGCGAAATCTATAGAGGATTTAGAATGCGGATACCGGTGGGCCGGATAAGGCGTAAGCCGACATCCGGCAATCAGCGACAATGCATAAAAAAGGCGCCTTACGGCGCCTTTTTTGATCACTCGATATCAAGCGGGTCTTCGGAAAGGATAATCCCGGTGTTGTCGGCATAGAGATGATCGCCGGAGAAGAACGTCACGCCGCCGAAATTGACGCGCACATCGCTTTCCCCAATGCCTT [...]
+NODE	844	26	47	47	0	0
+CTTTTTGCTATACGGCTGGCTGGCGG
+CCCCACGGCAGCACGCTCACCACCGG
+NODE	845	147	8140	7998	0	0
+GAGCATCGCGGCGTACTTCCGCGAGGTGCGCAAAAAATACCACGCCTTTGAAGGCCAGCTGAGAGGCTACGACAGCCGTATTCTGGTGGCCCAGGTACCGGGCGGAATGCTCACTAACCTCGAAAGCCAGCTGAAGCAGCAGAACGC
+TACCTGGGCCACCAGAATACGGCTGTCGTAGCCTCTCAGCTGGCCTTCAAAGGCGTGGTATTTTTTGCGCACCTCGCGGAAGTACGCCGCGATGCTCTCCAGCTTCAGGATATCCAGCCCGGTGTCGTGCTCAGTACCTGCCAACGT
+NODE	846	63	5142	5142	0	0
+GAGTTTGTCCGCCGCGTTCTGCTGCTTCAGCTGGCTTTCGAGGTTAGTGAGCATTCCGCCCGG
+GGCGGACAAACTCGACCAGGTGCTGGCGGAAATCCCCCGCGTGCGCGAGGACCTCGGCTTTAT
+NODE	847	4696	273977	268601	0	0
+ACCTGGCTATTTCCGAACTGGTCGTACGCGCCGTGGACGGTAAGCTCTTTACCGAAGACAGTGTGAACTGGAACAAGCTGACCAGCAATCTGCCGCAAACCGCGCCGGTTTCAGAAAACGCTAATGCGGTGGTGATTCAGTACCAGGGTAAGCCATACGTTCGTCTGAATGGCGGCGACTGGGTGCCTTACCCGCAGTAAACCGAAAAAGGCCGCAAGGTTTCCCCTGCGGCCTGGTTCGGGCGCATGTTGCCATTACGGCGGACAGACGCTCAAAACGCATTACTTCCTGTCACGTAGCCAGTTGACGATCACACTGGCGATAATGCCAGCAATGATCGGCGCCGCCAGATCGTGCCAGAAGGCCACGCCCAACTGCGTAAGCGTCATATAGCCGCCTTGTTGCAATGGCAACCGTTCGCGGCTATCCTTGATGTGTTGAGGTTCAAGTTAGCCCCCGTCAGGTTGCCAGGTTTATACCAGTCAACGTGCG [...]
+TTCTCGATATGGCCGCCCTCGGCTTTCTTGGCATGGGCGCACAGCCGCCTACGCCGGAATGGGGCACCATGCTCTCTGACGTATTGCAGTTCGCGCAAAGCGCCTGGTGGGTGGTGACCTTCCCGGGGCTGGCGATTCTGCTGACGGTACTGGCATTTAACCTGATGGGTGACGGTCTGCGTGACGCGCTCGATCCCAAACTGAAGCAGTAAGAGGTTCGAGATGGCGTTATTAAATGTAGATCAATTATCGGTGCACTTCGGCGACGAAGGGACACCGTTCAAAGCCGTCGACCGCATTAGCTACAGCGTGAAGCAGGGTGAGGTGGTCGGTATTGTCGGCGAGTCTGGTTCCGGCAAATCCGTCAGCTCGCTGGCGATTATGGGGCTTATCGATTACCCAGGCCGCGTGATGGCGGAAAACCTGCTCTTTAACGGACAGGATCTGAAGCGCATTTCCGAGAAGGAACGTCGCAACCTGGTGGGCGCTGAA [...]
+NODE	848	1688	85608	84926	0	0
+AGACGATTCGGGGCGTAATTAATGAAAGGCAGCGCGACAGCAAGCAGGGTCAGAACAACCAACAGCAACAGCACACGATTAACCGTGATTTTTTTGGCAGCATCACTCACAGATTACTTCACCCACCCTTTTTGTCGGAGGTAATCAGCGGCGACTTTTTTCGCATCCAGCCCTTCTACGGCGATTCTGGCGTTCAACTGTTGCAGCGTTTTCTCATCAAGGCTGGCGAAAACGGGCTGCAGCCAGTCGGCTATCTGCGGATAGGCCTGTAACACCGATTCACGCACTACCGGCGCGGGGGCATAGATAGGCTGGACGCCTTTCGGGTCGCTCAGGGTTTGCAGACCCAGCGCGGCGACAGGGCCGTCGGTGCCATACGCCATCGCGGCGTTAACGCCGGATGTTTGTTGCGCGGCGGCTTTGATCGTGACCGCCGTATCGCCGCCCGCCAGCGACAAGAGCTGGTTCTGATTCAAGGTAAAATCATAGGCT [...]
+AAACAAATACACCTCACGTTATTTTGACGAAGCAAATGGCCCGCTCTATCCGTTTGGTTACGGTCTGAGCTACACCACATTTACGGTGTCTGACGTCACGCTCTCCTCACCGACAATGCAACGCGACGGCAAAGTCACGGCCAGCGTAGAGGTCACGAACACCGGTAAACGCGAAGGGGCTACGGTCATCCAGATGTACTTACAGGATGTCACGGCGTCAATGAGCCGCCCGGTGAAGCAATTAAAAGGCTTTGAAAAAATCACCCTCAAGCCCGGCGAACGTAAAACCGTGAGTTTCCCGATTGATATCGAGGCGTTGAAGTTCTGGAATCAGCAGATGAAATATGACGCGGAACCCGGCAAGTTCAACGTCTTTATCGGCGTGGATTCCGCTCGCGTTAAACAAGGATCGTTCGAGCTACTGTAAGCCTGCCGTCAACAGGGCGCGATAGCTGCGCCCTGTCTGGCAATGACTTTTCCTGTCCCCCCTTT [...]
+NODE	849	4675	186724	182996	0	0
+AATTATCTCACAAACCTTCATGTGCTCCTGGACAAATCTTACCGCACCCACGTTATTACACGCTTTATCATAAGCACCCATTTCTTCATTCCTTAGCAGGTGTTTTTAAAACCACCATGTTCATTATTTCTCCACCAGTCGCAGCGCATCCACATACCGCCCTTCACTGTTCTGCTGCCAGAACCAGCCTTGCCCCGGTGTTGCCTGCCCCAGCGTCTTACCCGGCCAGCCCGGCCACGGCAGATAACGCACGCCCGGCAGTTCTACTACCGGTGCTTCATCCGGCAGCCCGGTCAGTTCCCGGCTGCGCTGCGATGTTCGTCGTAACCCGCGCAGCCACTGCGCCCACCACGGCCCCGGCTGCCACATCGCCCATAGCTGGTCCACCTGCTCCGTCAGCCGCCCGCGCCGCATCGTGTCCAGCGTGATATGCTGCGCCGCCAGCCTCGCCAGCCAGTACAGCCAGCCCTGCGTCTCCTGCAAACTCTCGTC [...]
+TTGCTGATGCTGCTGGTACTGTGGCTGGTCAACTGGTCGATGAGTATCATCGGCATCAGTGTCCTGTGCCTGGCGATTGGCTTCGTCACACCGCTGCTGGCCCTGGGCGATGTCCATCCGTTTGCGCCGCTGTGGGTCCGCCTGACCCTGATTGGTTTCATCCTGCTGATGTACGCGCTGTACGGCCTGTACCGGCTGTGGCGTGCGCTGCGTATGGATGAACAACTGCTGCGTCGCTTCCTGCATCCGCGCGGGGAAGAGGTACCGGTGGCAGGCGAGATCAAAGCCGACCTGCGCACCGTCAACCATATTGTCACGCAGGCCATCCGGCAGCTGCGGCAGTTGCGGGTGGATATGCCTGGCTGGCGTAAAATCTTCGAGGGAAAACGCTTTCTGTATGAGCTGCCGTGGTTCATGGTGGTCGGCAGTCCCGGCGATGGCAAAACCACGGCCCTGCTGAACACCGGATTGCAGTTCCCGCTGGCGGAGCAA [...]
+NODE	850	212	9654	9654	0	0
+ACGGTCCCAGCCAAACTGCACCTTTACCCGCCCGTACTGATCCGTCCAGATTTCCTGGCCCGACGGGCCGGTGACAATGGCGCTCTGCGGTCCTTTGGTGTGGGGTTTGCTGATGGTTCGCTGCGGGCGGTACACCTCGCGGGTGGGGTGCAGTTCAAAACTGGTGGAAAAGGTAAAGTGCTGGTCCTGCCCGCTGTGCTGCGCGTTGTCCT
+AGTTTTGAACTGCACCCCACCCGCGAGGTGTACCGCCCGCAGCGAACCATCAGCAAACCCCACACCAAAGGACCGCAGAGCGCCATTGTCACCGGCCCGTCGGGCCAGGAAATCTGGACGGATCAGTACGGGCGGGTAAAGGTGCAGTTTGGCTGGGACCGTTACGGCAAAATGGATGAAAACAGCTCCTGCTGGATACGCGTCAGCTACCC
+NODE	851	51	5680	3787	0	0
+AGACTACTTCGACAAGAGTGAAGGCGAGATGCTGACGCGCATTCGTATGGA
+TCCCGGCCACTCATAATGCTCGTAGGTGGCATGACCGGTTTCACGCGGGTT
+NODE	852	26	2893	1438	0	0
+AGCGCAGCGCAGCCCCGGCAGTCGGG
+TCGCCTTCACTCTTGTCGAAGTAGTC
+NODE	853	3534	204715	203405	0	0
+GACACCGGGCGGTACTGAACCGGACCGTCGCCGGAGTGATTGGCACGGCGCTGATGGCGGCAATGGCGGGCAGGAAGGTTTACTGGGTCGGGGGCATTGAGGGATACCGAACGGAGGCGCTTGAAGATCTTTACTGGTTCCAGATGGATATGCCGGCCCGGATGCACTCTGACCGGTTGCGCAGGGATTACCGGAATTTTGATGAATACCGTCATATTGCGAAGGTGACGAAGGATGTGGAAATGAATCAGTCCATACGACTGCTGGAGCTGTGTTTTCCGTTACCAAAAAAACTGGAGCTACTCAGGGAGCACACAGTCACGAACGAGCGGGAGGCTGATCTCACGGTTTCAACGGCGCACCGCAGTAAGGGGCTGGAATGGGAGCGGGTTGTACTGGGGGATGATTTTCAGGATATCGCTGATCCGCTGATGTCAGAACAGGAGCGCCGGGATGAAACTAACCTGTTGTATGTGGCGGTGACCCGGGCAC [...]
+GGTGGTTCGATTCCGCCTCCGGGCACCAAACGCATCAAAGTACGCTGGTTAAGGGATGAGATCCTTAACGGGCGTTTAATACGGGGTCCGGTCATAACGAAATCTCCGTGTAAGTGTGGTTACACTATGGTTTCAGTATCGGTTCCTCAAACAGAGCACCTGTCCCCTCAGGTGCTCTGTTCTCGTTTCCGCTAAAAATGCTTACACCATTCCAGCCTGATGTCAAGATGTCTTTATTCTGTGTCTGTCGACTCCACTTCAGAAACATCTGAACTCTGCTCGACTTCACTGTAACCATAAGAGTGTTTTCTGGCCTCATGAATACGTCTCTTCGTTCCCTCGTCCGTGGATAACGAAAGTTCAGCTTCCAGCGTCTGGGCTGCCACCTTCAGTGAAAGATCAACATACTCCATCGTGGTGGCAACACTCCTGTGTCCCAGAATGGATTTCACCATATGCAGATTGCGCTCCGGTGCCTCCATCAGTTTTGTC [...]
+NODE	854	110	41151	36657	0	0
+CAACTGTTTATTAAAAACACAGCACTGTGCAAACACGAAAGTGGACGTATACGGTGTGACGCCTGCCCGGTGCCGGAAGGTTAATTGATGGGGTCAGCGCAAGCGAAGCT
+GTCACACCGTATACGTCCACTTTCGTGTTTGCACAGTGCTGTGTTTTTAATAAACAGTTGCAGCCAGCTGGTATCTTCGACTGACTTCAGCTCCATGAGTAAATCACTTC
+NODE	855	51	19174	18498	0	0
+AGCCTGGCCATCATTACGCCATTCGTGCAGGTCGGAACTTACCCGACAAGG
+TGTCTCCACCCGAGACTCAGTGAAATTGAACTCGCTGTGAAGATGCAGTGT
+NODE	856	110	38254	37132	0	0
+AATTTCGCTACCTTAGGACCGTTATAGTTACGGCCGCCGTTTACCGGGGCTTCGATCAGGAGCTTCGCTTGCGCTGACCCCATCAATTAACCTTCCGGCACCGGGCAGGC
+CCTGATCGAAGCCCCGGTAAACGGCGGCCGTAACTATAACGGTCCTAAGGTAGCGAAATTCCTTGTCGGGTAAGTTCCGACCTGCACGAATGGCGTAATGATGGCCAGGC
+NODE	857	847	48259	48192	0	0
+GCAACTGCTTTAATGCGTTTGCCCCGGCTTCAAAGGTAAAGTCGCCACGGGCGATGTAATGCGGATCGACCACAATGCCACTGCGTCTTAATGCCTGTACGTAACCTTGTAAGCGATAGTGACAGAGCGGCATATCTTCCGGCCCCGCAATACAACCAATCCGCTTGTGGCCCAAATCCAACAGGTAGTTCATGGCATTGAACGCGGCGGTCAGGTTATCGATATGTACCGTCGGCAGTTCAAGCTCCGGCGCAAACTCATTCGACATCACCATCGGAGGCAAATTGCGCTGCTCCTCAACGCTGGCGTCAAAGGGCAGTCGGGAACTGAGAAGTACCATGCCGTCGATCTGTTTGGTGATGATGAGATTAAGAAAGGTTTTTTCTTTCTGGTTTTGATGGGCGCAATCGCCAATCAGCACCAGATACCCCTGTTCTGCCGCGGTCACTTCGATACCGCGGATAATTTCACTGAAGAAGGGATCGCAAATAT [...]
+GCACTATCTGATAAAAATGTTTTCGATGAGTGTTACCAGGGATAGATCTGCGCCAGCAGTTCCCAGGCGAGGAGAAAGAGTGAAATCGAACAAGCAGGTTACTGCCGCTACGATGAAGGATGTTGCGTTGAAGGCGAAAGTCTCTACGGCAACCGTATCCCGCGCGTTAATGAACCCCGATAAAGTCTCCCAGTCGACCCGTAGCCGGGTTGAACAGGCCGCGCTTGAAGTGGGTTATTTCCCGCAGTCGATGGGGCGAAATGTAAAACGCAATGAATCCCGTACGATTCTGGTGATTGTCCCGGATATTTGCGATCCCTTCTTCAGTGAAATTATCCGCGGTATCGAAGTGACCGCGGCAGAACAGGGGTATCTGGTGCTGATTGGCGATTGCGCCCATCAAAACCAGAAAGAAAAAACCTTTCTTAATCTCATCATCACCAAACAGATCGACGGCATGGTACTTCTCAGTTCCCGACTGCCCTTTGACGC [...]
+NODE	858	3134	161907	160523	0	0
+GACTTCCGCCGCCGCGCGCAAATCTTCAATGCGCGAATTGGTACAAGAGCCGATAAAGACTTTATCGATAGCAACGTCCGTTAACGGTACGCCCGGCTGTAAGCCCATATAAGCCAGCGCTTTTTCGGCGCTGGCGCGCTCAACCGGATCGCTAAAGGAGGCGGGATCGGGGATGATGTCGGTGACGGAAATCACCTGGCCCGGATTCGTGCCCCAGGTCACCTGCGGCGCGATCTCTTCTGCTCGCAGGGTGACGACAGTATCAAAAGTCGCGCCGTCATCGGTTTTCAGCGTTTTCCAGTACTCGACGGCTTCGTCAAAATCGCGGCCCTTCGGCGCGTGCAAACGCCCTTTTACGTAGTTGAAAGTGGTTTCATCCGGGGCGACCAGACCGGCTTTGGCGCCCATCTCAATCGCCATATTGCACAGAGTCATGCGGCCTTCCATACTCAGCGCGCGGATAGCGTCGCCGCAAAATTCAACCACGTGCCC [...]
+CGCGTCAGGTTGAAGGCGCGATGAACGGTATCGGAGAACGTGCCGGTAACTGCGCACTGGAAGAAGTGATCATGGCGATTAAAGTGCGCAAAGACATCATGAACGTACACACCAACATCAATCACCACGAAATCTGGCGCACCAGCCAGACCGTCAGCCAGATCTGTAACATGCCGATCCCGGCCAACAAAGCGATTGTCGGCAGCGGCGCTTTCGCCCACTCTTCCGGCATCCACCAGGATGGCGTCCTCAAGAACCGCGAAAACTATGAAATCATGACGCCAGAGTCCATCGGTCTGAATCAGATACAGCTGAACCTGACCTCCCGCTCTGGCCGTGCCGCCGTGAAGCATCGCATGGAAGAGATGGGTTACAAGGACACAGACTACAACATGGACCACCTGTACGACGCGTTCCTGAAGCTGGCGGACAAAAAAGGCCAGGTGTTCGACTATGACCTGGAAGCGCTGGCCTTTATTAATAAACAGCAAG [...]
+NODE	859	3836	278221	272111	0	0
+AAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCTGGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGTCCCTAGTTTTGTTTCTGGTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAATCA [...]
+GTCGGGAGAGGAGTGGCATTAACACCATCCTTCATGAACTTAATCCACTGTTCACCATAAACGTGACGATGAGGGACATAAAAAGTAAAAATGTCTACAGTAGAGTCAATAGCAAGGCCACGACGCAATGGAGAAAGACGGAGAGCGCCAACGGCGTCCATCTCGAAGGAGTCGCCAGCGATAACCGGAGTAGTTGAAATGGTAATAAGACGACCAATCTGACCAGCAAGGAAGCCAAGATGGGAAAGGTCATGCGGCATACGCTCGGCGCCAGTTTGAATATTAGACATAATTTATCCTCAAGTAAGGGGCCGAAGCCCCTGCAATTAAAATTGTTGACCACCTACATACCAAAGACGAGCGCCTTTACGCTTGCCTTTAGTACCTCGCAACGGCTGCGGACGACCAGGGCGAGCGCCAGAACGTTTTTTACCTTTAGACATTACATCACTCCTTCTGCACGTAATTTTTGACGCACGTTTTCTTCTGCGT [...]
+NODE	860	1140	55099	52838	0	0
+GCGGTTAAATTCGCCCTTCCAACCTGGGGTTGGCTGGTATTAATGCTGTGTATCGCGCCGGTATTCTTCACCCTCCTGCTGGAAAATAACTGGTCTGGCTATGTGCTGGCCATTGTCTGCGTCTTCGCGGCGCAACTTATCGCCCGTATTATGGTTAAATTTCCCGAACACCGTCGCGCCTTGTGGCAAATCGTTCTGTTAATGATCACCGGCACTCTCTTCTGGGTTCTGGCGCAGCAGGGCGGAAGTTCGATCAGTTTATTCATCGACCGTTTTGTCAACCGCCACTGGCTGAACATGACCGTCCCCACCGCATTGTTCCAGTCGGTCAATGCGATTGCGGTGATGGCGGCGGGCGTGGTGCTGGCGTGGCTGAGCAGCCCGAAAGAGAGCGCCCGCTCGGTGCTGCGCGTCTGGCTTAAATTTGCCGTGGGACTGGTATTAATGGGCGGCGGTTTTATGCTGCTGGCGCTAAACGCGCATCAGGCCCGG [...]
+ATATATGGTGGATTTTCTGCCGAAGGTAAAAATTGAAATCGTTGTGCCTGACGACATCGTGGATACCTGTGTTGACACCATCATTCGTACCGCGCAGACGGGGAAAATCGGCGACGGTAAGATCTTTGTCTTTGATGTCGCCCGCGTTATTCGTATCCGTACTGGCGAAGAAGACGACGCGGCTATCTGATGTGCCGATTCGCTGCCCGTCTCCTCCTTGTGGGCAGCGAACCACCGTTTAATCGCCCTGCGGTAGCGCCGATGTAGTCCGGGTGCAAACCCATCTCAGGCCGACAATGGCGACGATCAGCGCCACGCAACTTAGCGTCCACTCGCCCATTTGCGAGAAAAAGTGTCCGTAGGCGGCTACCGCCGTATCACTAATTTGCGATTCCGTGGTTTGTTGCGCGACGACGCCAGCCAGCCAGTTAGCGACCGCGCCGGTCGCCAGCATATAAATACCGGTCAGCACGCCCGTGACGCCAGGCAGGT [...]
+NODE	861	5554	306542	305074	0	0
+CTATCCACGGGGCGATCCCCTGCGAGAACATGTAGCGTAATGAAAAAATCATGCCAATTATGTAACTCATTGTTTTAACAGAAGCGTCAATCATTCCTGTGCACAATAAGTCGGGCAAAACCAGTATGCCGCACCGTTTTGGGGCACTGATTTAGTGCATGAATAACAACGTAGAGATACAGGGTCTATTTAGCGTAAAAATTGTTGTTAAAACAATCTTTAATTAACGATTGTGTGATGTAATTATTACAAATGATTCACTTTTATCGGAGGGGAGTACAAGACGTGTGCACTATTTAAGTGCAAAACCCCTGTGACAGGCAGGGGGATAGGGATGACTTATATACCTGTGTACATCAAGTTGCAGGTGCGTTCGCTTCAGTGACCGACGGAAGTCAGGCTTCTGCGGATTCGCTGCGTTTGTACCTTCCTGCAACTCGAAGTATTCAGGGTAGAGATAGATTTATTCGATGTTGGATTCGATAAACCACA [...]
+ATTTGAATAAATCCTAACGATGCCAGGCGCTTAAGCATTTTGGCCACAGTCGGCTGGGAGACGCCGAGCCGCGCCGCCATATCCACCTGACGCGCTTCCCCTACCTCAATAATTAAATCGGAAATCAGCTCAACGTAGTCGTCTATCAACTCACGGCGATGCGCCTCTCTGACCTGACGAAATCCTTCAACGTGTTCTTCTACGTTCACCAATTGCGTCACTTTTTTTGTTGTTGGCGTACCTGCGCGACGACCCATTTTGCTTCCTCGTTTCTGTGACGCGTTAACGCGTCAGCTGACAGAGCGCTCATTGTAAACCAGAGTTGTCCGGGCACAAAAAATTAACGTTTTAGCAATAGCTATAAAACATAGCCTGTGCTATATCTGTATGTAATGCAGACATCCCTCACGGATCGATGGGATAGAAACATCAGGAGGTTTATATGAACGAATTTAAGAGGTGTATACGCGTGTTCAGTCACTCTCCCTTTAA [...]
+NODE	862	19	956	956	0	0
+AAAAACAATGTGGAAGCGC
+TCTTGCTGAACCTGAGCAA
+NODE	863	3319	181742	178060	0	0
+ATCAGTGTGCCAATCGGCCAGAATAGGGCGACGCCCAGACCGCATAGCCAGTAGGCGGCTTTACGTTGTTCGGGTGTTTTTTGCGACAGGCCGAACACCACGCTCTCATCATTCATAATATGGCAGCCGAAAAAGCTGGCGGCGCGGGTGCCAACCAAATCGCGCACCGTTACGCCAAACGGCACGTGGCGCGCATTCACCAGCAGTCCTGCCGCCGCCGCCGCTAACGGATTGCCGCCGCTGGCAACAATGCCGATAAACATAAATTCGGACGCGCCCGCCAGTACAAAAATAGAGAGGACAAACGGCACCCACAGTGGGAAACCGTAGGCCATCGCCAGTGAGCCATAGGACATGCCGACGACGCCCACGGCCAGGCACACTAAAAATATCGCTTTTATCGTGTCTCCCTTGAGACAGGAAAAATAGTGTTTCATCTTCTTTAGTCATATCGAACGAATTTTCATTATAATGAACGGAACAGATTTGCTT [...]
+GCTTAACCCACGACGCGGTACCCACCTCTGAACTCCCGGCGCATTTCCTCTCCCACTGCGAACGCATCAAAGCCACCCACGGCAAAGACCGCGTCATTATGCATTGCCATGCGACTAACCTGATCGCCCTCACCTACGAACTGGAAAACAACACTGCGCTGATCACCCGCAAACTGTGGGAAGGCAGCACCGAATGTCTGGTGGTATTCCCGGACGGTGTCGGCATTCTGCCGTGGATGGTGCCAGGCACCGATGAAATCGGCCAGGCCACCGCGCAAGAAATGCAGAAACATTCGCTGGTACTGTGGCCGTTCCACGGCGTGTTCGGAAGCGGACCTACGCTGGATGAAACCTTCGGTTTGATAGATACCGCAGAGAAATCCGCTGAGGTATTAGTCAAAATCTATTCGATGGGCGGTATGAAGCAGACCATCACGCGCGAAGAACTGGTCGCACTCGGCAAACGTTTTGGTGTGACACCGCTGGCCAGCG [...]
+NODE	864	6330	317658	314539	0	0
+AGGTGTAGTGGTCGACAATCTCATGGTCCGGCCGGTTGAACTGTGCGCCTAACGTACGCTCGGCAATCGCCAGCCCGACGGCATTCGCCAGCCCCTGGCCCAGCGGTCCGGTGGTGGTTTCAACGCCGGGCGTATAGCCAATCTCCGGGTGACCTGGCGTTTTGGAGTGCAGTTGACGGAAGTTTTTTAGCTCCTCCAGCGGCAGGTCATAACCGGTTAAATGCAGCAGACTATAGAGCAGCATGGAGGCGTGACCGTTGGAAAGGATAAAACGATCACGGTCATACCAGGTCGGATCGGTGGGGTTATGTTTAAGAAAATCGTTCCATAGCACTTCAGCGATATCCGCCATCCCCATTGGCGCGCCGGGGTGCCCGGAATTGGCTTTTTGAACGGCATCCATGCTCAGCGCACGAATCGCATTGGCAAGGTCTTTACGGGACATAAATCACTCCATGCAAGGTTTATAGTTTGGCGGCAAGCAGGTCTTCC [...]
+GGCTGCCAGGGTTCCGCCAGTTCGATTTGTAGCCACACGGTCAGCGCGATGGCGCTGTCGAGCGCGGCGCGAAAGCCGAGGCGCGGGTCGCTTTTGGCGACCATTTTGTCCGCCGTCAGATGGGTCAGCGTATCGGGCTTTTTCACCACCGGCTGGCGGCACAGTTCACAGCAGGCCTGTGGGTGCGTATCGCTACTGGTTAAGCCATGTACCGGCTGCGGCTGCTGTTCGTCATCATCGACAAACAGCCGGCCTTGCTGATCCAGAAACTTAATGCGCAGGCGGCGGCTTTCCAGCAGTTCCCGGGCCGAGGGCGTCAGTCGTGCATCAGCGGGCAGATGGATTTCCGATCCTTCGCTGAGCGTGTGATTCGCTCTGAGCCACGTTTCGGTGATGAAATCGTTCATACGGATTGCCAGTTTGCAGGCCAGGCGACGTACAGAAAGCGCACGGACGTTGGCGTGCCAAATTCAATGCTGGAGCCTTTAGGGA [...]
+NODE	865	8945	485247	478008	0	0
+GAGGTGCGTCATCTGAATCAATACCAGACGCGCGGCGCCTTTGCTTACATCTCAGATGATCAGAAAGTCTATGCGCGCTTCTTCTGGCAACAGACCGGACAGGATCGCTACCGCCTGCTGCTTACCAACCCGCTGGGCAGCACCGAGCTGGAGCTTAACGCCCAGCCGGGCAACGTCCAGTTGGTGGATAACAAAGGCCAGCGTTATACCGCCGATGACGCCGAAGAGATGATCGGCAAACTCACCGGGATGCCGATTCCGTTAAACAGCCTGCGGCAGTGGATCCTCGGTCTGCCTGGCGATGCCACCGACTACAAACTGGACGACCAGTACCGCCTGAGCGAAGTGAACTACCGCCAGGATGGTAAAAACTGGAAAGTGGTTTACGGTGGCTATGACAGCAAAACGCAGCCTGCCATGCCTGCCAATATGGAGCTTTCAGACGGCAGTCAGCGCATTAAGCTGAAAATGGATAACTGGATTGTGAAATGA [...]
+AGAAAAGAACTTACCCTGTTAGATCTGCGTTAATTTAACGAATTGATTTTTATAGATGAATGAAAGACATTAGAGTCTATTATAAAATAGACTGTAATTAAAATTGCACATCTGTCTGTTTTTGATATGTGTATTCCAACAACAGAGTCAGGCAGCTTGTGGACGAATTAAAATTCTGCGGCTCGCTACGAAAGTTGCTACAGCCCTTAAAAACTATAGGCGCTGTCGAATCGCTATGGACAGCCTTTGAGAAACGCAAAGTATTTCTGACGGAGGCAAGATTATTTATCCGGCGATCAAGGATGCGTCAAAAAATGGAGTGTGTTGCTCTGGAGTGCTGGTGAAGAACCGTTTTATTATCGGAGTTTGGTGACCGTCTGAACGATCACCTTCAAGAAAGCAGGCAGTTAAAGAGAATTACTAGTAACCTCTGATAACAGGCACTTTTCATACTCTTCTATGCATCATAAAATGCTGTCTGAACTTGTTAAG [...]
+NODE	866	1005	50507	50446	0	0
+GGCATCTTCTTTAGCATTTTCTACACCTTCGGCAATCACTTGTAAATTTAGCGCCTGAGCCACCGCGACAATCGCCCTAACCAGAGATTGCGACAGCGGTTGCTTATGGATATCTCTGACGAAAGCCTGATCCAGTTTAACGGCATCAATAGGGAACCGGGCGAGTTGAGAAAGCGAAGAATACCCTGTGCCAAAATCATCCAGATGAATCTGGGCGCCGAGCTGACTAAATTGCTGGATAACCGATAGCGCCAGCGTGTCGTTTTCGATCAGGCAGCTTTCCGTTAGCTCGACATCGATCGGGCAATACTCAAAATTCAGATCGTACAAAGCCTGTTTAAGCGCAGTAAAAAGCGTCTGGTCGGCCAGTTGTCGCGCCGAAAAGTTAACGGCTACGCGCAAGTTAATCCCCTTATCGCGCCATTTCGCAATCTGGCGAACTACATCCAGAATCACCCAGCGGCCCAGCGGGACGATGAGTCCTGACTCTTC [...]
+ATTGCTGGCCAGACTGGGGGGAGATGAATTCATTGTCCTCGCTGCCCATACGTCTCAGGCCGCGCTGGAAGCAGTAGCCTCACGAATCCTTACCCGGCTGCGGCAACCGTTTCGCATTGGACTCATTGAAGTTTACACGGGATGCGCCATTGGCATTTCGTTGGCCCCCCGGCACGGACAGGACAGCGAAAGTCTCATTCGCACTGCCGACACCGCAATGTATAACGCCAAAGAAGGCGGCCGCGGTCAGTTCTGCGTTTTTTCGCCGGAAATGAATCAGCGCGTATTTGACTATCACTGGCTGGATACAAACCTGCGAAAAGCGCTGGAAAACGACCAGTTACTTATTCACTATCAGCCCAAAATTACCTGGCGCGGCGAAGTACGTAGCCTGGAAGCGCTGGTACGCTGGCAATCGCCGGAACGCGGATTAATTCCGCCGCTGGAGTTCATCTCATACGCCGAAGAGTCAGGACTCATCGTCCCGCTGGG [...]
+NODE	867	51	2807	2807	0	0
+GCTCTTACAGGCCGTTTCGCTGGCGCTGTTGAGTTGTCTGGAGGAAGATCA
+CTGATCGCCAAACATATGCCCATAGGCGTCATTAATTTTCTTGAAGTTATC
+NODE	868	4276	236032	234877	0	0
+TGTTCGCCTGGGCACTGATGTTAAAAGGAATGCGGATTACCCCTACGCAACAGGCTATCACCTGTTAATTATCTGCAGCCAGTGATGTGCGCAGTTTCTGGCGCACCGGGTTAACCCTATATATTGCAGGCTAATTATCTGCTGTCACTGCGGTAATTCAGGAATATTCCTGGGCGCTGACGAAAATATTCTAATGCTTTACCCTTCCAGTAAAATAAATACGCAATTCAGACTTTGCTTAAGCATAAATTAGTACTATAGTCTGTACGAGGTTTTTTAAAAAAGAGGATGCACGCTAAAATAAGGAGAAACGAGATGTTAGGCAGTATTAACCTTTTTATCGTTGTATTAGGAATTATTTTATTTTCCGGATTTCTGGCCGCCTGGTTCAGTCACAAATGGGATGATTAATGAACGGAGATAATCCCTCGCAGAGCCGGCCCCTTGCTGCATCGTTGCGCAAGGGGCCGCTTTTGTCTGGATGGCAGGCAA [...]
+CATTGCCTGGCAGGATTAAGCCCGGAAGAAATGACCGTCGCTGCCGAAGCGGCGCGTGAAAAAGGCCTGGAGGAGCGCTGGTTCATTCCGCTCCTTAATACGACGCAACAGCCTGCGCTTGCTACGCTGCGCGATCGCCAGACCCGCGAAAATTTATTCGCAGCGTCATGGACTCGGGCGGAAAAAGGAGATGCCCACGATACCCGCGCTATCGTTCAGCGTCTGGTAGAGATTCGTCGCTGTCAGGCAAAACTGCTGGGTTTCCCCAATTATGCCGCATGGAAAATGGCCGATCAGATGGCGAAAACGCCGCAAGCCGCACTGAGCTTTATGCGTGGCATTGTGCCGCCAGCGCGTCAGCGGGTACTCAATGAACAGGCGGAAATTCAGAACGTCATTGATGGTGAGCAGGGTGGCTACACCGTTCAGGCCTGGGACTGGATGTTCTATGCCGAACAGGTACGGCGGGAAAAATATGCGTTAGATGAAGCG [...]
+NODE	869	51	3396	3396	0	0
+GCCGTGGTGGAACGTCGTCGGCGATCGTAAATACCAGAAACAGAAGCTGGC
+CACTTCGTCACGCAACTGGAAATGGGAAATGAGTTCTTCGGTGCTAAAGGC
+NODE	870	5834	311713	307654	0	0
+CGCCGTTTTCCGCGCTGGCGCTGGCGGAACTGGCCCGGCGCGCCGGAATTCCCGCAGGCGTATTTAACGTCGTTACCGGTTCGGCAGGCGATATCGGCGGCGAGCTGACCAGCAACCCGCTGGTACGCAAACTGTCGTTTACCGGCTCGACGGAGATTGGCCGCCAGCTAATGGAACAATGCGCCAAAGACATTAAAAAAGTGTCGCTGGAGTTGGGCGGCAATGCGCCGTTTATCGTCTTTGACGATGCCGATCTGGATAAAGCCGTCGAAGGCGCGCTGGCTTCGAAGTTTCGCAACGCCGGGCAGACCTGTGTCTGCGCCAATAGATTGTATGTTCAGGACGGCGTTTACGATCGTTTTGCGGAAAAACTCAACCAGGCGGTAAATAAGCTCGCGGTCGGCGACGGCCTGCAAGCCGACGTCGCTATCGGGCCGCTGATTGATGAAAAAGCCGTGGCGAAAGTCCAGGAGCATATCGCCGACGCGCTGG [...]
+CCAGTTGCGCATGTGGAATATGCTCGCGCAGATATTCGTCGGCGTCGCGCACATCAATCAGTTTCGCGCCTTGCGCTATCAGCGCTTGCGCCTCACGGGGGGAAACTATCCCAATGGACATCGTGCCTCCTTATGGACAATAGAGATTCTTTAACGTGGCGATAAGCGTATTAACCGCCTCATTTTTAATGAAATAGTGAATGCGCTGGGCATCGCGTTGACTATCAATCAGTCCTTCTTCCCGCATCCGCGCCAGATGTTGCGACGTCGCGGAGGGGCTTAGCCCGGTAATGCGCGCCAGTTCGCCTGCGCTGGTTTTTGGCGAACCGCAAAGCATACATAAAATCAGTAATCTTTTTGGGTGGCTCATCGCTTTGAGCAGGGCCGCCGCCTGTTCTGCGCTGGCCTGAAGTTGTTCAAGCTCTGTCATAGTTATTTAAGCATTTTCTAAATTTAGTTAATTCTAAAATAAACGTCAACCTAATGCCAGCG [...]
+NODE	871	3384	181197	180173	0	0
+TAGCGTAATGCTGACATCATACGGTAAACCGTATTTTATCGCCGACAATCAACTGTTGCGAAACGCAGGAGAGTTCTCCTTTGTTATCAATCATTTCACTTTTTATCAGGATCAGCGGATAACCCTCGTTGACGCTAAGATAATGGGCGACTTCAAAGCTGGCATAAACCAGTTCGATCATCTTACGGGAGTGGGTAAACCATAAGTGGTGTTTCTCGCGTAAGCATTCATACAAAGAGTGATTATTAAGATCTTCGTCCAGCAAAAACGCAAAACGTGGGGGAAGATGTACGGTTTCCAGCGATACCGCCACATCGTCGGCATAGCGGATACGTTCAATGACGACCGCTTTTTCGCCATCGTTCATATTCAGTAACGCTTTTGTCTCATCGTCTACCGATTCAAAAACGGATTTGATGGTGCGTGACCCCGGGCGACGTCCCTGGGACTGGCATAACTCGCTGAAACTCATGATGCCGGTCATGCTGCGCT [...]
+GTACGCCTGAAGAGCGTGAGCAACTTATTTCCGGCGCTTTGTGGGGCGGGGTTGGCGTCATGACGCTGGCGATACTGGCGGGCGCGTTCTGGCTATTTAGTTCGTCGTCGCCAGGCTCCGATAACGGGCAAGCTCCCGCAATGGCGCAGGATGAACCGCCGCGCGAGGCGCCTTCCGCGCGGGAAACGCTCAATCATATGGGGATTACCTGGGATGCGTTTACCATGCGGGCGGCGATAGAGCGCAATGATACGCGGGTGACGGCGCTGTTCCTCCAGGGCGGAATGAACTGGCAGCTCGCGTGGACGGAGCAGGCGTTTGCGGCAGGACATACCGAGGTGCTGCAACTGTTGTTGCGTTATCCCGCGCTGATGGATGAGGTCAAACCCTGCCGACGATTTATCACAACGTTAAGTCATGACATGTCGAGCGGCGCGCCGCTGACCGCGATGCATAAAACCTATTTGCAAACGTTTTGCACCGTTCCGGCTG [...]
+NODE	872	51	2059	418	0	0
+TCTCCCCCGGCCTGCCGATCTTTAAGCCGCGCGGTTTCCCAGAACTGGCGC
+ATAAGCATGAGATTAGCGAGAGCATAGAACCACCGCGTAAGCGGCCTCCGC
+NODE	873	1268	77965	75345	0	0
+AATTCACGTTCATCCGCCAGCAGAAACGAAGCGGGATTCACGCGAGTACGTTTTTCGGCATAGGCGCGCTGGATGGGCCGAACGATTTGCTGATACTGAACGTTTAGCAGCATAAGCTGCGCTGAGGTGAGCGGCTGCCTGGCGATAACCTCGTTTCGCGAGAGGCGGCAATCATCCAGAAACATACGCAGGGTGGTGCGCGACTCGGCGAACAGCGTTAACGCTGAGGCGTCATTAAAAATTCTGACGTAATGACGGGCAAATAATTTTTTATCGACCACCATAAGCGCCAGTTCGCTGAACAACATGCCTTCCAGCGCATGTTGATCTTCTCCCTGTTTTAACCACTGGCGCAAACGGTCCGGGCCAAAATGTTGCTTGAGGTAGTGATTCAGCGACGCCCGATCCGGCCATGCGCGCGCAATAAGCGCTTTTAACGTCAGTTCTATCGCCCGAAGCTGACGCTGCGCCTCAAGATGCGCCTCCTGGTCG [...]
+CTGCCACTGTTTAATAAACGCGATGCAGGCGGAGCTAAAGCGAGATGAAATGTGCGGCATGGCATCTTTCTCATAAAAAGCGCGATTATAAAGTGTGCTGCACGCGTGGCTAGCGGTCAGACGGCCAAACGCAGGCAGGGAAAAGGTCTATGCCGTTCAGCGTCACGCCGCGTTGACAGAATGAAAAACTGATGTTTTTGGTTAGTAACCGATCTTCTTATAAATTTGCAATCATTAAGATTAAGTCACTGAAATGTGGCTAAATCTGTTATATCTATGAAAAAACATAATTAAAAGAAAACGAAGATCTCGTCGCGGGATCGTCTTTTTAGGGAAGATAATGACGAATAGCGCTTCGCAGGCGACACGCGCGCCTTTTGAACATAGCCTGGGGATTATCCGCCAGGCATCAATAGAAATCCTGCTGCTGCTGGGTATTCATACCACCGAGGGAAAAGAGCCCCGGTGGTTCATGGAACAACTTGAGCAGGC [...]
+NODE	874	2511	138194	137600	0	0
+TCCTGGGTTATTTATCGCGATGTATGCAGCCTGGTTTGCGACGCTGGCGGTCATGCTGCAATCAGAAACGCTGGTGGGGTCAGTGTGGCTGTTAGTGGTGTTATTTATCGCATTTAATGGCTTCTTCTTTTTCGACATCGCCCCGCGTTATCACTATAACGACATCGATGTGCTGGACCTCCGGGTCTGTTACAACGGCGAATGGTACAACACCCGCTTTGTTCCCCCCACGCTCATTGAGACGATTCTTCAGTCTCCACAGGTGGATAATGAACATAAAGTCCAGCTGCAAAAAATGGTTGCCCGTAAGGGCGAACTTTCCTTCTACGATATTTTTACGCTGGCCCGCGCAGAAGCCAGCCGGTAATAAAAAAGTGCGCACCCTCCCTGGTACGCACTGCTTTCCCTGAACTGTTGGTTTTTTAACGTCTTTTTTTACGCCCCTGAACCGCCTTAAAACGCGGATTTGTTTTACAAATCACGTATAAGCGT [...]
+GTTTGAGCGTTTTCGCCATTTCAATAATATGCGGCGTGACGTTTTTATATTCCAGCGCATCGACAAAAGATTTATCAATTTTAAGGACATCCACATCCAGATTTTGTAAGTAGCTGAGGCTGGAATAGCCGGTGCCAAAGTCATCAATATAAATGGAATGTCCCGCGTTACGGTATCTGGCGACAATGGGCGCGCTGGTTTTCGGATCGGCGAACTCGCGTTCCGTTAACTCAAGCGCGATTTGCGACGGAGAAATTTGGCTACGGTTCAGCAGCGTGCTTAACAGCGTCGGCAACGTTTCCGACGCCAGATCGGATGCCTCAAGATTGATTGAAATATGTTGTTCGGGATGGGACTTTAACCAACTCCCCATGTCTTCAAAAACGGTTTCGATGATTAGCCGGGTTAGCGGCTCCGTGAGCCCGGTTTGTTCAGCCAGCGCGATAAAAATTTCCGGCGAAAGGAAGGTGCCGTCCGCCTGTTGCCAGCGAG [...]
+NODE	875	4507	245045	243375	0	0
+CGATGGTCGCGCTGTATCCTTTCTCCTGTAAACCAGAAGATGTGATGTTTGCTCAGGAGTCGATGCGTGAACGCTACGTCTTTACCGATGTGCAGCTGCGCGGCTATTACCCGTCCTATGTGTTGAACGAGTGGGAGCGCCGCGGATTTAACATCAAAATGGAAAATGGCGATCTTGAAGTGCTGCGCGAAGGCACCTGCGATTATCTTGGTTTCAGTTATTACATGACCAACGCGGTCAAAGCCGAAGGCGGTAGCGGCGATGCGATTTCCGGTTTTGAAGGCAGCGTACCGAACCCCTATGTTAAAGCATCTGACTGGGGCTGGCAGATTGACCCGGTGGGTCTGCGCTATTCATTGTGTGAACTGTACGAACGCTATCAAAAGCCGCTGTTTATTGTCGAAAACGGTTTTGGTGCTTACGACAAAGTAGAAGAAGATGGCAGCATCAACGACGACTACCGAATTGACTACCTGCGCGCCCATATTGAAG [...]
+CCTCTGATGTCCATCCGCAAACTCTGGACGTCGTGCGTACGCGTGCCGAAACCTTTGGCTTTGACGTCATTGTGGATGACGCGGCGAAAGCACTGGATCACCAGGATGTGTTTGGCGTGCTGTTGCAGCAGGTTGGCTCCACGGGCGAAATTCACGACTACAGCGCACTGATTACTGAGCTGAAATCCCGTAAAGTTGTGGTCAGCGTCGCCGCCGACTTTATGGCGCTGGTGCTGCTTACCGCGCCGGGTAAACAGGGCGCGGACATTGTTTTCGGCTCTGCGCAACGCTTCGGCGTACCGATGGGGTACGGTGGCCCGCATGCGGCGTTCTTTGCCGCCAAAGACGAATTTAAACGCTCCATGCCAGGCCGTATTATCGGCGTCTCAAAAGATGCGGCGGGCAATACCGCACTGCGCATGGCGATGCAGACTCGCGAGCAGCATATCCGCCGTGAGAAAGCGAACTCCAACATTTGTACCTCGCAGGTAC [...]
+NODE	876	2996	217479	217137	0	0
+TACGTCAACAAGAGAAATCGGTTTAATAATTTAAAATAAAACATCCATAAAATAACACCCAGACTAAAACTATTCTTTATCGTCCGAAGATTTTATTTCCCTGGCGCTACTATAAAAGCATAACAATTATGTAGCATTAATGCATTGTGACCAATAGCCTATACCTTTTTTATGGTTGGCATAGGCCTTGCGCCATAATTCAAATTATTTTATGCCAACAATAAATCAATCAAAGCATATCAATATACTGATAAAAATTAACACTACTATCATTTTATTTTTAGAGCGACTAAAAATAAAATTTTAGTTTTTCTAAAAAACCATCATTTTTGTGACACGATACGATTTTCTCTGGAAAAAAGACGCTATTACAATCACACCAGTTGATCCACAAATTTAATATGCATATTATTATCGCTACCCCAATTAAACCCATTAAATAACATCATGACTATTTATTTAATTAACAGCACGCACACTTACAATGATAAG [...]
+AAGAGGGAGTTGAACGTTATATTATTGTCGAGAATATTATCACGCCGATATCGTCTCCTCATGCAACGGTAAAACGAGATTATTTGGATGAAGATAAGCAATTAACAGTGCTACGCATTGTCTATGACTGAACCGCGTAGCAGACCGCAGATGGTGTCCCGTCAGTGTCGTGTGAGGATATTATGAAAAATGTTCTCACCTTCCCGGGACACGGTCTACAGACTTTATCTTCAGATAAACGGCGCTAAAAAGAAAAGCACGATCAATAAAAAAAGAGTGGGAATACCAATGGATATAATTTTATTACATCGGTGAGTATGATGTTGAATAGCTTGTGGCGGTATGTCAGCAGCGTCAATGATAAATCTTTCATCGATTTTTATCCCCTGCCTGGGGAGCGTAACGAACAGTTCGAAAAGCCCGATTTGTTGTAAATCTCGTCGCAACAGATAAAGAAGTTGCGTCAAATTAGCATCGCTAACAAATTGACTT [...]
+NODE	877	106	50950	30265	0	0
+ATTGAAGAGTTTGATCATGGCTCAGATTGAACGCTGGCGGCAGGCCTAACACATGCAAGTCGAACGGTAACAGGAAGCAGCTTGCTGCTTTGCTGACGAGTGGCGG
+GCATGTGTTAGGCCTGCCGCCAGCGTTCAATCTGAGCCATGATCAAACTCTTCAATTTAAAAGTTTGATGCTCAATGAATTAAACTTCGTAATGAATTACGTGTTC
+NODE	878	5	1889	1300	0	0
+ACGGG
+GACTT
+NODE	879	4	1408	502	0	0
+TGAG
+GTTC
+NODE	880	5	1604	622	0	0
+TAATG
+TTACC
+NODE	881	1183	63338	63106	0	0
+CACCAAATTTATCGCCGCAGCGGCGCAGTATACGGACGGCGTCGATCCGTGGCACATTCTGGAAACCGGCGGTACTGAGATTCGTAGCGCAATCCCGATGGGGTCTGTGCTAACCCTACCGGCAACCGGCTCAGAATCGAACGCCGGCGCAGTCATTTCCCGTAAAACCACTGGCGACAAACAGGCCTTCCACTCCTCGTTCGTGCAACCGGTGTTTGCCGTACTGGATCCGGTCTACACCTATACATTGCCGCCGCGCCAGGTTGCGAACGGCGTCGTGGATGCTTTCGTCCATACCGTTGAGCAGTACGTCACTTACCCGGTTAACGGCAAAATTCAGGATCGTTTCGCCGAAGGCATTTTACTCACACTGATTGAAGAAGGTCCCAAAGCGCTGCAAGAGCCTGAAAACTATGACGTCCGCGCTAACGTGATGTGGGCCGCTACTCAGGCGTTAAATGGCCTGATTGGCGCTGGTGTTCCGCAGGACTG [...]
+CTTCATTCTGATATGCTGTGGCGGTATCAATCGATCGATAGCCCACCTCCAGCGCTTTATGAATCGCCGCGATCACCTCTTCATTGCTTGCTTTCCAGACTCCCAGCCCAAGTTGTGGCATTACGTTGCCATCCTGTAGCCTGATAATGGTTGGATTAGCCATGATGTGTTCCTCTTTTAATTGGCTCGCCGGAGTCGGGTCCGGCGAGACTAAGTGACTTAAGTCTGGACGAAATGGCCAAAAACGAAAGTCAGAGGCGAAAAAACCTTAGCGCGCCGCTTCATAAATCCGACGGCTGACATCCAGCGTAATATCCTGATTTTCACCTAAATTTGTGCATCCATGCGCCTCAAGTTTAGCCAGTAGCGCCGGAATAGTGCTGCCATCCAGACCGTAATCGGACAAGTGGGTAGGCACGCCCATCTGTTCAAAGAAACGGCGGGTGGCGGCAATGGCGGCATCAATACGCTCGTCGTCGGAACCGTCGGTGA [...]
+NODE	882	9219	501017	498668	0	0
+AACGGCCAACTGTGGGATGTGAATCGCATTGATATTACCGCCCAACAAGGCACCTGGGAGCGCTGGACGGTACGCGCCGATATGCCGCAGTCGTTCCATATTGAGGGCGTCTCTTTCCTGATTCGTAACGTCAACGGCGCTATGCCGTTCCCGGAAGATAGAGGCTGGAAAGATACCGTCTGGGTGGATGGGCAAGTCGAACTGCTGGTCTATTACGGTCAGCCGTCCTGGCCGCACTTCCCGTTCTATTTCAACAGCCAGACGCTGGAAATGGCTGACCGCGGCTCGATTGGACAAATGCTGGTGAATCCGGCGTCGTAAAGCGTCCGAGTACGGGTCTGAATAGCGCAGACCCGTCAGGGTTTTCAGGAAGGAGCAAACAGCGTGGGAAGCAGCAGACTCAACTGCGGGAAGTAGCAAATCATCGCCATGACCACAAAGAGTGCCAGAAACATCGGTAATAGCGGTTTGACGACTTTATCAATACTGATT [...]
+TTTATCACCACCAAGTTGTGGAATGACGATCAAAAACGTCCCCGCGAAGCCCTGCAGGAGAGTCTGAAAAAACTGCAGCTTGATTATCTCGATCTCTATCTGATGCACTGGCCCGTACCGGCTATCGATCACTATGTCGACGCCTGGAAGGGCATGATCGCGCTGCAAAAAGAGGGGCTGGTAAAGAGTATCGGGGTCTGTAACTTTCAGATCCATCACCTCCAGCGTCTGATCGATGAAACCGGCGTTACCCCTGTGATCAACCAGATCGAGCTTCACCCCTTGATGCAACAGCGCCAGCTACATGCGTGGAATGCGACGCATAAAATCCAGACCGAGTCCTGGAGCCCGCTGGCGCAGGGCGGCGAAGGCGTATTCGATCAGAAAGTGATTCGCGAACTGGCGGATAAATACGGCAAAACGCCCGCCCAGATTGTTATTCGCTGGCATCTGGACTGCGGGCTGGTCGTCATTCCGAAATCCGTCACCCCT [...]
+NODE	883	1275	73647	73113	0	0
+GCCACTTCAACCACAAGTTTATCCGGCACGGTAAACCTCTTTGGCGCGAACCGTAAACGCCTGCACCATGTTGGACGCTAACTCTTTGAATATACGACCAAACGCCAGCTCAATGAGTTTATTGGTAAACTCAAAATCAAGCTGAAACTCAATACGGCACGCCTCGGGGCTGAGCGGGGTAAATTTCCAGCCGCCGATCAGCTTTTTAAAGGGGCCATCCACCAGATGCATCAGAATGCTCTGGTTACGCGTTAGCTGATTACGCGTCGTAAACGTCTTGCTGATACCCGCCTTCGACACGTCAACAGCCGCCGTCATCTGTGCTGGCGATGACTCCAGGACGCGACTACCAACACACCCAGGCAAAAACTGGGGATACGATTGCACGTCATTCACTAACTGATACATCTGTTCCGCACTGTAGGGGACTAAAGCAGTCCGACTAATCTGAGGCATAGCAATTCCCATCAACATAAATCGTGTAAATAATAC [...]
+TGATAAGCGTCAGACGCAAAGAATATATTTTCGAGGCATGAATGAGATATGAATATTGACCAGCTTCATACTGAGAAGCTGGTCACAAAAAATGTCTATTATCGGCCTGCATTTTTCATAATGCGTGCTTTATCCAGTTGCCACTCACGTTCTTTAAGATCGGAACGTTTATCATGTTGTTTTTTACCTTTCGCCACGCCGATCTTCACTTTGCACCAGGCATTTTTCCAGTACAGAGAAAGCGCGACGACAGTATAACCTTCACGATTAATACGGCCATACAGCGAATCAAGCTCACGCTGATTTAACAACAGTTTGCGGGTTCGGGTTGGGTCGCATACGACATGTGTCGAGGCGACCGCCATCGGCGTAAAGTTTGCGCCAAACAGCCAGGCCTCGCCATCTTTGAGGATAACGTAACTGTCGCCGATATTGGCTTTTCCTGCGCGCAGAGATTTTACTTCCCAGCCTTGCAGGGCGAGACCAGCCTCG [...]
+NODE	884	10978	534992	530227	0	0
+TCCACGCGGTCACGAACGCGGATGGTCGCAGATCGCTGAAAATTTTTATGGCACCACTATGGGTAAAACTTTCAGTAAACGCACATTAAAACTGGACGCTCCCCCTGCTATTCATGTGTATGGCAATGCCGCCGTTGCAGAGTTCGACTGGCATTTTACCGCGGTACGCCGTGATAATGGGCAGACTCAACACACGACAGGCCGCGAAAGCCAGGTGTGGGCGAAGATACCAAACACAGGATGGCGAATCGTTCATGTCCACTACTCCGGTCCAGCCAAAACCGGCGTTGGAGAAGGCTATTAAGCTTTGCTCTTCAGGTTATGGCGCAGATGAACATTCTGCGCCAGTTAAGTCGAGCTCAGGTCAGTTGATAGTGCTTATCCGGTATCCGTTTTGCCGGAATATCCCTTTCATCATTCATTTGCAGTAAATCGATTTCTATCGCATTGCATATCGCATCCAGCGGTAAATCATTATTTTCAGTACCGAAC [...]
+AGGATGACGCCGCTGGCCAGCGGGTTTACCGCCGCACCCAGCCAGCCCAGCGATTGCGCTGAAAAATAGCTGGCTTTCATCCCGGCAGGCGCAATGTTGTCAATTAACATATATTCGCCGGGGGCATAAATAATTTCGCCAATCGTAAATACTGCCGCTGAAAGCCCCCAAAAAAACAGATTGTCGCCTGAAAAAATAAATCCGATGAGCCCGGCGATAAAAAAGACGGTGCCGGTCGTCATCATTGGTCGAATATTGACGGCGGTAAGTCGACGGCCCACGGCGTATTGCAAACTGACCACAATAACCGCATTAACCGGCAGGACGACGGCTACCACTTTTTCCGCGAAGCCGCTATCGGCAACGACCATAACGTACTGTGAAATACAGGACGCAAAGGCGCCCCCCACAAAGGAGGCCAGAAATGCCGAAAGCGTAAACCACAATAATGCTTTGTCGCGCAGCAGAACGGAGGGAGACCAGATAGCGGCA [...]
+NODE	885	1342	72360	69665	0	0
+CTCGTCTTCGACCGCCATAATAGCGTCGGGGTCGGCGCTAATGTGGATAGTGATATGGGTTCCTTCAGGGCTATAGCGATGCGCGTTTTCCACCAGATTTCGCAACAGCATACGCAGTAACGTCGCGTCACCGCGCACCACCACGTCCGCCGCGCTTTCCGGCAGCAACAGAGTTTGCTGGCGCGTTTCCAGCATAGTGTTCAGCTCATCGTAGGAGGGGAGGATCACATCTTCCAGCAGTTTTACTTCCTGATAATTCCCGGAAGAGAATGACTGGCCCACGCGCGCCAGTTGCAGAAGCTGGGAGACGCTATCCATCATCTGGTCAAGACGGGCGATAAGCGGCGCGACATCAACATTGTGGGTTTTTGACAATAATTCCAGATGCAAACGCACCCCCGACAGCGGCGTGCGTAGCTCATGGGCCACATCGGCGGTAAAAAGGCGTTCATTGTCGAGCGTGGTGGTCAAACGCGTAACCAGTTGATTGAT [...]
+TTACCGGGCTGGATGTCGGCGCAGATGATTATCTGGTTAAACCCTTCGCCCTGGAGGAGTTGCACGCCCGCATCCGCGCGCTGCTGCGCCGCCATAATAATCAGGGTGAAAGTGAACTGACGGTTGGCAATCTGACGCTCAATATAGGCCGCCATCAGGCATGGAGGGATGGACAGGAACTGACCCTGACGCCTAAGGAGTACGCGTTGCTCTCACGGTTGATGCTCAAGGCAGGCAGTCCGGTGCACCGGGAAATTCTTTATAACGATATCTACAACTGGGATAACGAACCCTCGACCAACACTCTGGAAGTGCATATACATAATTTGCGCGACAAAGTCGGCAAGTCGCGCATTCGCACGGTTCGCGGGTTTGGCTACATGCTGGTTGCCACTGAGGAAAGCTAAGTGAGCCTGATGCGTTTTCAGCGAAGAGCGATGACCCTTCGCCAGCGTTTAATGCTGACAATTGGTCTTATTCTGCTGGTGTTCC [...]
+NODE	886	4021	223829	220494	0	0
+CTGCCCGCCAAGCTGCCCCTGCGAGACGCACCAGTCGGTGGAGAGCGCCAGCGCCGGCGCCCATAGCTGCGCCATTTTGTAGCAGCGATCGATCCAAACGAAATTATCGCGCGGGGCGAAGTCGGCCAACTGGAACCGTAGCGGAGCGGAGTATTCACTTTCCGGTAACGGCTCGACGCGCTTATCCGATACGCGCAGTAGTAACGGCAGGCGGAAGTGGCTGCCGGAAAACGCGATCATGTTTTTGTCCCGATCGACGGTAAAATCTTTTATCTCTTTCGGGAAATTCCACAGGCGAATGATATCCGGCTTCATCGCCAGCACTTTCTCTTTTACATTCAGGAACACTTCCGACAGCGACTGCCCGGAAAGGCTGCTACGTCCCAGACCGATAAAATTATCGCCGCCGAGAATATCCAGCACCGTTGCGCCGTTGTCCATCGTGTTGCGTTTGACCGCCAGCGTCTCCTGCTGCGGTTTATCGCCGCGCAG [...]
+AATTGGCCTCTCTGTACCGGGATTATGGCTGTACCGCAAACGCCCCCGCGTGTGAATGGTGGAACGCCTCCTGCTGTTCTTACAGGTCTGTGTGGTACTATAAAAACAGTCGCCCTTCTCGGTTGTTGTTCCATATTGAGAAACATTATGTCTTCCAGAATTTTAACGTCGGACGTCATCGGTATTGACGCCCTTTTACACGATCATCATGCTGTGCTGGCGAAGTCAACGGGCGGCGCAGTGGCGGTATTCGCTAATAATGCGCCTGCCTTTTATGCCGTGACGCCTGCACGCATGGCTGAACTGCTGGCGCTTGAAGAAAAGTTATCACGTCCGGGAAGCGATGTGGCGTTAGACGCGCAATTTTACGAAGAACCCGAAGCCGCCCCCGTTGCGATTCCCTGCGGAAAATTCGCCATGTATCCCGCCTGGCAGCCGGATGCGGATTTTCAGCGTCAGGCTGCCCTTTGGGGAGTGGCGCTTCGGGAGCCG [...]
+NODE	887	1561	89483	88784	0	0
+CAGAGGAGACAGCCAGCAAATTAGGGTTGGTGTTATCTGCCTGACCAGAGAAAGCCACGGCAGCGGTGGCCGCCACTTTCGGATCGCAGTCATTCAGGACGATGGAGAAAGGCACCTGCGCGGTCGTATCATCAATCGCCGTAAAGCTGGCGGTACGGTATTGGCCCAGCGTCACCGTTTGATCGGCGGATTTAGTGCTGACGGCACAGGCTGCATTAACCAGTTTACCTTCGAAATGAATAGTACCGCCACTCACGCTCACCGGAGTAGGATCAGCCGCAACCGCTGCGCCAGCGACAAACATCAGACTCGCAATAGTAGAGGTCATTAATTTATGTTTCATGGATTTCCCTTGAATTACACACACCCGGTTTCGGCATCCTGTCGGCTCCGTTTGAATTATTATCGACATAGCATGTCAGAAAAGTTATCTCTGCATCCTGTAAAGATAGATATCGCAGATTAATTAGTTTTCTGTTTCTCCCCTGAGTA [...]
+CAATGAGCAAATCAGCATGCTCGACATGGTGACGCAGATCTTTGGTAAAGCGGTGCGTAACGGTAGTCGTACAGCCAGCCAGCAGCAGCTCCATGCTCATCGGGCGTCCAACGATATTGGACGCGCCAATGACCACCGCATTCAGGCCGTAGGTATCAATATTGTAACGCTCAAGCAGGGTCACAATACCGCGGGGCGTACAGGGACGCAGGCGTGGCGCACGCTGACACAGACGACCGACATTATAAGGATGGAAACCGTCTACGTCTTTATCTGGCGCGATACGCTCCAGCACTTTAACGTTGTCGATGCCTGCCGGTAAAGGCAACTGCACCAGAATACCGTCAATCGTGTTATCTGCATTCAGAGTATCGATAAGCGCCAGCAGTTCGGCTTCGCTGGTGGTTTCTGGCAGGTCATAGGAGCGGGAGACGAATCCCACTTCGTCGCACGCTTTACGTTTACTTGCGACATAAATCTGTGAGGCCGGAT [...]
+NODE	888	760	39930	39760	0	0
+GCGATGGCCGAAAACGTTGCCGTAGGCGACGCCAAATTTAAAGGCCAGCACGTCGGCATCGGGGAGCATCGCCAGCACAACACCGGCAAACAGCAGGCGAGGAGGGATAACTTTCAGGCCTAAGCCTGCGCCAAAACACAGGGGAACGGCGGCGTGGGTGATAACGGTAGGCATAGCGATGGTTCACAGGGAAATAGCCATGCTATCAGTTGGAACGCAGAGGATTAAGTGGATGATTATCTGAAAAGACAGCGTAATCAGGCCGGATAAGACGCTTTGCGTCGCTATCCGGCACTCTGTATTAGGCCACGACGTTCACACTTTGGCCTTCAAAGCTAACAGTTTGCCCGGCGACAATTTTGCAGCGTTTACGCGTTTCAACCACGCCATCAACCTTCACCAACCCGTCGGCAATGGCGATTTTCGCCTGCGCGCCGCTTTCGCTCCAGCCTTCCAGCTTGAGCAGATCGCACAGCTCGACGTGCGGGTGCT [...]
+GCAATTGTGATTGATGTCGGTATTAACCGTCTGGAAAATGGCAAGGTCGTTGGCGACGTCGTGTTTGACGAAGCCGCGGCGCGCGCGTCATACATCACGCCAGTACCGGGCGGCGTCGGCCCGATGACGGTCGCCACGCTTATCGAAAACACGCTGCAGGCGTGCATTGAATATCACGATCCACAAGGAAAATAACATGGCGACATTCTCTTTAGGCAAGCACCCGCACGTCGAGCTGTGCGATCTGCTCAAGCTGGAAGGCTGGAGCGAAAGCGGCGCGCAGGCGAAAATCGCCATTGCCGACGGGTTGGTGAAGGTTGATGGCGTGGTTGAAACGCGTAAACGCTGCAAAATTGTCGCCGGGCAAACTGTTAGCTTTGAAGGCCAAAGTGTGAACGTCGTGGCCTAATACAGAGTGCCGGATAGCGACGCAAAGCGTCTTATCCGGCCTGATTACGCTGTCTTTTCAGATAATCATCCACTTAATCCTCT [...]
+NODE	889	611	34930	34631	0	0
+CGATATGAACCAGGTGCTGGCTTCAAGCGCCGGTAACGCGGTGGAAGTGCGTGAAGCCGTGCAGTTCCTGACCGGTGAATACCGCAATCCGCGCTTGTTTGATGTCACTATGGCGCTATGCGTGGAGATGCTGATCTCCGGTCAGCTGGCGAAAGACGACGCCGAAGCGCGTGCCAAACTGCAGGCGGTGCTGGATAACGGTAAAGCGGCAGAAGTCTTTGGTCGTATGGTGGCCGCGCAGAAAGGGCCGAGCGATTTCGTTGAGAACTACGATAAATACCTGCCGACCGCCATGTTGAGCAAAGCGGTATATGCTGATACCGAAGGGTTTATCAGCGCAATGGATACGCGTGCGCTGGGGATGGCGGTCGTCTCGATGGGCGGCGGCCGTCGTCAGGCGTCAGATACCATTGATTACAGCGTTGGCTTTACCGACATGGCCCGTCTGGGCGACAGCATCGACGGGCAGCGCCCGCTGGCGGTGATTCATGC [...]
+GCTTTATCGTCAAGGATAATTGCCGCTTTGACGGCCTTCGCCGCTTCCTGCCAACTGGCTTCGTCTTTGGCATGAATCACCGCCAGCGGGCGCTGCCCGTCGATGCTGTCGCCCAGACGGGCCATGTCGGTAAAGCCAACGCTGTAATCAATGGTATCTGACGCCTGACGACGGCCGCCGCCCATCGAGACGACCGCCATCCCCAGCGCACGCGTATCCATTGCGCTGATAAACCCTTCGGTATCAGCATATACCGCTTTGCTCAACATGGCGGTCGGCAGGTATTTATCGTAGTTCTCAACGAAATCGCTCGGCCCTTTCTGCGCGGCCACCATACGACCAAAGACTTCTGCCGCTTTACCGTTATCCAGCACCGCCTGCAGTTTGGCACGCGCTTCGGCGTCGTCTTTCGCCAGCTGACCGGAGATCAGCATCTCCACGCATAGCGCCATAGTGACATCAAACAAGCGCGGATTGCGGTATTCACCGGTC [...]
+NODE	890	51	3960	3960	0	0
+CTGATCTGATCAATTATTTTTGAAGCACTAAGTACGGAGAAGATATGAAAC
+GTATACAACTATTCAGTAATTCGACGATAGACCGAAGGTGTGCTTGCTGGC
+NODE	891	2467	134195	133809	0	0
+ATTGCCAGCACCCTTGATAGAGTGAGCTTTGCTCCCAATGACAGTGCCCTGGATAGTCTGTTGCTACATAATAACAACGGTATTATCGCGATGGATAATAATCAGCAGGTCAGTGGGAAAATGATGAACGTCACGCTGACATTAACACCTGTCTTGAACGATAATCAATTTACGCATTCTACCGATACGGTCATGCTGGAAAGCAATTTACAGTGGGAAGTGCTGACGAAATAACCGATGAAGGGGGCCTGCTCTGGCCCCCTTCACAATCTTATTCTTTATCGCCCAGCAGCACAGATTCCAGCGCGATTTTGATCATGTCGTTGAAGGTCGTCTGACGCTCAGCGGCAGTGGTCTGCTCGTGGGTACGGATATGGTCGGACACGGTGCAGATGGTCAGCGCTTTCGCGCCAAACTCAGCCGCAACGCCGTAGATGCCCGCCGCTTCCATCTCTACGCCCAGTACGCCGTATTTTTCCATCACGTCGAACA [...]
+GTGCATTTATTATGGTGCTGGACTCATTCGGCATCGGCGCTACTGAAGACGCGGATCGTTTTGGCGACGTAGGTTCCGACACTCTGGGCCACATCGCAGAAGCTTGCGCCAAAGGCGAAGCTGACAATGGCCGTAAGGGCCCGTTGAATCTGCCTAACCTGACTCGTCTGGGGCTGGTGAAAGCGCATGAAGGCTCTACCGGTAAAATTGCCGCCGGTATGGACGGCAACGCGGACGTTATTGGCGCATACGCATGGGCGCACGAACTGTCCTCCGGCAAAGATACGCCATCCGGCCACTGGGAAATCGCCGGCGTGCCGGTACTGTTCGACTGGGGCTATTTCAGCGACCACGAAAACAGCTTCCCGCAGGAACTGCTGGATAAGCTGGTGAAACGCGCCAACCTGCCGGGCTATCTCGGTAACTGCCACTCGTCCGGCACCGTTATTCTGGACCAGCTCGGCGAAGAGCACATGAAAACCGGCAAGCCGA [...]
+NODE	892	843	38932	38605	0	0
+GCGGAACTGCCGCTGACCAGCAGTACCCACTCTCCGGTTCCCGCCCCGATACTGTCGATAGCGACGGCACACTGCCCGTCGGGGTTGCCCTGGGCATCGATCATTTCCACCATCAGCAATTTGTCATGCGCCAGTCCCTGATGGCGGACGGTACATACGATTTGTCCTGTGACGACTGCCAGTTTCATATCCGCCTCCATGGATTGCCCGTTGGGTCGTAGGCCTTGAATCTGCGCACCATCAGGCAATGGCGCGCATTCATGCCGGATGGCGACGCTGCGCGTCTTATCCGGCCTACCATCAAATGTTGCTGTCGCCTTTGAAGCTGATCGGGAACACTTCTTCCAGATCGCCGTGCGGGCGTGGAATCACGTGTACGGAGACCAGCTCGCCAATGCGCTGCGCCGCAGCGGCGCCAGCATCGGTTGCGGCTTTGCACGCCGCCACGTCGCCACGCACCATGGCCGTACACAGGCCACCGCCAATCTGCTT [...]
+TATCGCGCTGTTGGGCCGCTAATTCAGGGGCTTGCCGCGCCGCTTCACGACCTCTCCCGAGGCTGTAGCGTGCAGGAAATTATCGAACTGGCGTTGGTGGCAGCCGTGCCGCGCCAGGCTGACGTGAGCCGCGAACGCAGCTTACACACACTGGTTGAATGAACGGTCCCGTTCTGGACCCCTTTAATGAGAGGAAAACACGATGGAAGCATTAGGAATGATTGAAACCCGGGGCCTGGTTGCGCTTATTGAGGCCTCAGATGCGATGGTAAAAGCCGCGCGCGTGAAACTGGTCGGCGTGAAGCAGATTGGCGGTGGCCTGTGTACGGCCATGGTGCGTGGCGACGTGGCGGCGTGCAAAGCCGCAACCGATGCTGGCGCCGCTGCGGCGCAGCGCATTGGCGAGCTGGTCTCCGTACACGTGATTCCACGCCCGCACGGCGATCTGGAAGAAGTGTTCCCGATCAGCTTCAAAGGCGACAGCAACATTTG [...]
+NODE	893	1794	93699	93340	0	0
+TTGAACGGGGCGAATATTAACGAGGTGCCCCTGGCTTGTCAAAGCCTGTTTTCACAAAAAAAGTTCGTTTGCTGCTTTATTCCACACTTCGGTTAAAATTCACCGTTTCCTGATGATTTTCACAGCAAAAAGCGCTTACTCCCTCTTTACGCGCGGGTATCTCCACAGCCAGCGCCCGCTTACCAGACGCCAGTAAAACAGTGCGCCGCGCACGGCCCAGTCAAGAAACATCCCCAGCCAAACCCCTACAACCCCCATACCCAGCACAATACCAAGCGTATACCCTGCCACAACGCGACAGCCCCACATCCCCAGCATCGATACCCACATCGCAAATCGCACATCGCGCGCGCCTTTAAAACCCGACGGCAGCACCCACGCGGCCGCCCAAATTGGCATAAAGGCAGCATTAAGCCAGAGCAGAACTTTCACTACCTCTTTTACGTCCTGCTCCTGGGTATAAAATGAGGCAAACAGACCCGCGAACGGCGC [...]
+GGGTCGTATATTAGCGGCGGAAAAATTTTTGTCAAACCCCATTTAACCTCTTACAGATTCGATTGCGGGTTATCTCATCACTTTGTTGCATTTGCAGACATTTTTTCTGCAAAAAGCTTTGCAGCCTTACGATTTCTCGCTCATTATTGAAATGTGGTTTCAACTCTCTTCTTTAAGGTCCATTTTGAACGTCTCCACTGCCTTACGCCAGGCTGTCGTCCGTACGCCCTGGTATGCCAAACGCAAGAGCTACAAAGTGTTGTTCTGGCGTGAAATCACCCCACTTGCTATCCCCATTTTTCTGGAAAATACCTGTGTTTTGCTAATGGGCGTGCTCAGTACTTTTCTCGTCAGTTGGCTGGGCAAGGAAGCAATGGCGGGCGTGGGGCTTGCCGACAGTTTTAATATGGTAATTATGGCTTTTTTTGCGGCTATCGATCTTGGTACTACGGTGGTGGTTGCCTTTAGCCTGGGCAAGCGCGACAGGCGACG [...]
+NODE	894	1073	46405	46172	0	0
+GTCGTCCGGCGGGATAACATCACCGCCGTCGTCCGGCACGTCATCAGACTCGGAGCGCAAGTACCAGTCGCCGCCGTCTTGTTTCAGCGTATAGGTCCAGGCGTTAATATCAACATGCCCTTTGTAGAGCGTAAAATCACCGTCGGACTGACCGCCCACCTCAATAACTTCAATACCGTTAACTGTTTGTGCGCCCAGGCCATTGACGTTGGTGATATGCAGCGTGGTGCTGCCGGCGGTGTCGCCGGTGACGATCAGTTTATCGGTGGGCGAGCTGTCATCGCCCAGTTGGGTATTGAGATAGAGATGACCGTCGTTGCCGGTATAGTTTCCCGCGATCGTCAGCGTATTGTTGGGCTGGTCGCTGCCGCTTATCATCGCGCTGCTGTTGACGACATCGCCGTTGACGGTGAACGTATCGACAAAGTACAGGTTGCCCAGATTGTTAACATGGCCGTTCACCGTGGCGTTGTGGCCGCCAAAGGCGGCGTT [...]
+GACCACGCCAACCTGGGCGGCACGCTGGATATTACCGGCATCGGCAACGTGGCGAAATCCTGGACCCGCGACGCGTACGCCTACACGCTGATTGACACGGACAGCGCCATCAATAGCGATTTTGCGCAATTCACCGTAGCCGGTATGGACGCCAAACAGGTGGATTTTCTCACCGTCGATGGGCGCGTGAACGCCGCCGACGACACCCGCTATGACGTAACCGCCTCGTTGTCCTGGTATGCCGACAGCGACAACGCCGCCACCGACGCCCACGGTACCTTCACCCTGAGCGAGCAAGGTCACTGCTTCACGCTGAACACCGCGCTGACGGACGTTGACGCCACGCTCAATCCCGACAGCGCCACCTACTGGGACGGCAAATCGCTCATCAAACGGGGCGCTGGCACGCTGATCCTGGGGGCGCAAAACACCTACAGCGGCGACACCGACGTGCAGGAGGGCGTGCTATGGCTGGCCGAAACGGCGACCATC [...]
+NODE	895	3701	193621	186080	0	0
+ACTTCTCCCAGGCAGAAGACATCTGATACGGCGGTTAATTCGTCTGATAAAGCAGGTAAAAAATAACCCTTTCCGGTCCTGCGGAATAAAGAGAAACCATGATGAAAAAAGCACTGATGGCGGTGGCCCTCTTCAGCGCCCTGCCGGTCCTGGCGGCGGATTACAGCGAGAAGACGCAGTACCTGGGCGTGGTGAACGGTCAGGTGGTGGGCAACAGCGTGGTGAAGGTGACGCGCACCCCGGCGGACCCGGTGCTGTACCGGACGGAGAGCAACGGTCCGCTGCCGGAGACGCTGGTCATCCGTAATGCCGAAAGTCGCCCGGCATCCGGAAACATGGCGTATATCACGGTGAAACGGACACTGGGAGACGGCCGGGACGCACGGCTCACGCTGAAGACCACCCTGATGGTGGACGGGCAGCGGGCGGCCCTCTCGGCCAGCCAGCGGGGAGAGGATGTGGTTATCACGGTGCCGGCGGCAATCCGGCAGG [...]
+ACCTTTCCTGCGGAACTGTCAAAAAAAGAGCGGCCACCGGCCTCATATAAAGCAGCAGAAAACTCAGACAGCGACATTCTGGTCATGAATGTCGTGCCTTCCCCGAATACCAGCCTGACCCGGCCGTTATGTTCCTGCGCCTGCCGGATATCCCGGACACTCACAAAGAAAAACACGCCGTCAGCCCGCTCCAGCCCCACAAAAACGGCGGGGTCCGGAACGGGTGACCGGGGGCCTGCAGCCTTACCGGTATTCAATGCTCACCGCCAGGGAGGTGTGCCAGCGGGACGGTACCGCCCCCTTAAAACGCAGCTCACCGCTGTCCGCCACCGTCTGTGCGCCGTATACCCCGTCAACCTGGCGCAGGGCGGCGTCACTGAACCGGCTCAGTCCGGACACGCTGCTGACCGTCATCTCCCGGAGCCAGACCGGGCCTTCACTGTCAAACAGGGTCTGCAGCACACCCGGCGTCTGCCCTGCCGGCATCACCTG [...]
+NODE	896	1548	88058	87662	0	0
+GCGGATGGACAGCCGTTATGGCGGAATTGGCCTGGGGCTGAGTATCGTCAGCCGCATCACCCAGCTACATCAGGGACAGTTTTTCCTGCAAAACCGTACGGAAAGAACAGGCACCCGTGCCTGGGTACTGTTGAAAAAGGCATAACAGGCGTTTAATACGTCGTGACCCACACATAGATAAAACTGCTGACAATCAGCACACTACACAGGGTCGTCAAACTTTTATAAATATAGCTTTTCATGACGCTCTCCTCCAAAGGTATGGAGGAGAGTATGCCCGCGAGAGATTAAGCGAACCTTAAGCGCGAAAATTATTCATCGATACGCGGATGTTGCTGTACCAGACGCGAACGTTTGACCTGCAGCTCCGCAATTTCCTGATCGATGTCGTCGATTTTCTGCTCAATATTATCGTAATGCTCGCCCAGAATTTCCTTCGCTTCCTGGATGTCCGACGCTGCTGGCGTTGCGCCTTTTAGCGGGCGATTGGCC [...]
+TGTCGATCAGTACCTTCTGTATCGGGTTAATCCCCTCTTACGCGACGATCGGTATCTGGGCGCCAATACTGTTGTTGCTGTGTAAAATGGCGCAGGGCTTCTCGGTTGGCGGGGAATATACCGGCGCGTCGATCTTTGTCGCGGAATATTCGCCGGATCGTAAACGCGGATTTATGGGAAGCTGGCTGGATTTTGGTTCCATCGCCGGGTTCGTGCTGGGCGCGGGCGTGGTGGTCTTAATCTCAACGATTGTCGGCGAGGAGAATTTCCTTGAGTGGGGCTGGCGTATTCCGTTCTTTATCGCCCTGCCATTGGGGATTATTGGTCTCTACTTACGCCATGCGCTGGAGGAGACGCCAGCGTTTCAGCAGCACGTAGATAAACTGGAGCAGGGCGACCGCGAAGGGTTGCAGGATGGGCCGAAAGTCTCCTTTAAAGAGATTGCCACCAAACACTGGCGTAGCCTGTTGTCGTGTATCGGTCTGGTGATTG [...]
+NODE	897	2193	93502	92649	0	0
+CTGTTGGGGGGAATGGGCATTGATAAAACGCTCTCTGTCATCACCAGCGGATTCGGTACGACGCTGGGCAGCATTGGCCTGGTGATTGGTCTTGGCGTAATGATGGGGCGCTTGCTGGAGGTTTCCGGCGCGGCGGAGCGTATCGCCTGGAGCTTTATCAAATGGCTGGGGAAACGCCGTGAAGAGTGGGCGCTGGCGATCACGGGTTATATTGTCAGCATTCCCATTTTCGTCGATTCCGCTTTTGTCATTCTTTATCCGGTGGCGAAAGCGCTGGCGAAAAGCGGTAAACGTTCGCTACTGACGCTGGGCGTCGCGCTGGCGGGCGGGCTGGTGGTCACTCACCATACGGTACCTCCGACGCCCGGTCCGCTGGGGGTAGCCGGGATTTTTAACGTCGACATCGGCGCAATGTTATTAACCGGGATGGCGCTGGCGGTGCCCTGTGTGATCGGCATTGTGTTCTATGCGCAGTGGCTGGATAAACGCTAC [...]
+GCGTCCTCTTTTACCAAAAAGGCGTGAATTTACTCAATGCCGCGAAAAATTTGCAGGATGAAGTGCGTGCCAGCCATAGTGGGCTGGGCGGCGAGTTACGTATTACCACTACGCCCGAGTTTGGCGAACAGGTGGTCATTCCGGTACTGGCGCAGTTTAGTCAGCGCCATCCCGATCTCCGTATTCGGCATATGTCCTCATCACATCATGCCGATTTAATTGCCGAGCGCTTTGATGTGGCGATTCGGCTTGGCTCGCTGGCCGACTCCCGCTATCGCGCCGCGCTGATATCCCGCTTTACCATTCTGCCGGTCGCCGCGCCGCAGTGGCTCGCCCGCCACCCCGTGTCGTCGCTGGAGTCGTTGGCCCAGGCGGAATGGATTATTCATGAGCGATTACCTACGCCGCTACGGTGGACAGTAACGAATAATCATGGCCAACACTCACGCCTGGAGATAAGCAAAGCTGGCAAAATTTCTGTCGACAGCGCGC [...]
+NODE	898	1878	103474	100425	0	0
+CATTCGGGTTCTCGGCGAACTCCGGACGCAGCGCCAGGACGTTACCGTCGGCGTCAATCGGCGCTGGCGTAGAACCGGTGCTGTCAACGCCAATGCCAACGATATTTGCGCGTTGCGCGGCGCTTAATTGTGCCAGAACGGCTTTCAGCGCGGCCTCCATTGACTCCATGTAGTCGCGCGGATGATGACGGAACTGGTTGTTCGGGCCGTCGCAATAACGGCCTTCTTGCCAGCGCGGATACCACTCTACGCTGGTGGCGATCTCGTCGCCGGTGGCGCAGTCCACTGCCAGAGCGCGCACTGAATCACTGCCAAAATCGAGGCCAATTGCAATTGCCATCGTCTTACTCCATCCAGAAAAACAGGTATGGAGAAACAGTAGAGAGTCGCGGCAAAAACCGTCAGGCAGGATCCGCTAATCTTATGGACAAAAATGCTAATGCTTTGCAAAGTGTGACGCTGTGCAAATATTCAATGTGGACATTCCAGCCA [...]
+CCAGCCAGGCATGCCAAAAATTGAGCTCGCCGCTGCCGATAAGCGCGCCCAGCCCCGCCATCAGTACCGTGCCGGGTAAAATCAACCCCACCAGCGCCAGCGATTCCAGGAAGGCGACCAGCAACACGGCGATAAGCGAATACAGAGTGGATTGGGTGATAAAGTGTTCCAGCAGTGCTTGCATAGTGTGTCCGTCAGCGTGATGAAGCAGGGATTCTGCTTACCCCGTCCCCCTTCGTCAAGCCGTCAATTATCCGAATAGTTACGGCTTATGACATCTTTGTGGACACATCATTCACTTTTTATTCACATCCGGCCCTGAACTCGCTAGGACTTGCCCCGGTGCATTTTTTAAATACCCGTGAAAAATAGAGCTGATCGTCAAATCCAACATTGCGCCCAACGGACGCTATCGGCATTCGCGTAGTGCTAAGCAGAAGTTTCGCCTGGCTGATACGCTGATCTTCGCGCCAGCTCAATACGCTAATGCCT [...]
+NODE	899	7728	374928	370548	0	0
+GGCAGCTTTAATCACGAGTCCCATTACCTTGCCTTAACACGCTAATAACAACAGCGTGTAGCATAACGGAACCGCTCTCGTTTAGAAAAGATTTATGGAAGGGAAAACAGAGGCGGTGTATGTTGGCGTTTTCTATTCTCCATTTATAATATGAACCGCATTGTATTTGTTGAAGATGACGCTGAAGTGGGTTCTCTCATTGCCGCTTATCTGGCGAAACATGATATTGATGTCATTGTTGAGCCGCGTGGTGACCGGGCGGAGGATCTTATCCTCACCACTCAGCCCGATCTGGTTTTACTGGATATTATGCTTCCAGGTAAAGATGGCATGACGATATGCCGCGATTTACGCCACCGCTGGCAAGGCCCGATTGTCCTGCTCACCTCGCTGGACAGTGATATGAATCATATTCTGGCGCTGGAGATGGGCGCCTGCGACTACATCCTCAAAACCACGCCTCCGGCCGTTTTGCTGGCGCGTCTGCGCTTA [...]
+TTCGCGATAAATCCCACGCTTTCGCCTATATTGTCAAAATTGGCCGTACTCACCTGCAGGACGCGACGCCGCTCACCTTAGGCCAGGAGATTTCCGGTTGGGTAGCCATGCTGGAACATAACCTCAGGCACATTGAGCACAGTTTACCGCACGTCGCGGAACTGGCGCTCGGCGGAACCGCAGTGGGGACAGGGCTTAATACCCACCCGGAATATGCCCGGCGCGTGGCCGAGGAACTGGCAACGATTACCGCAGCGCCATTTGTTACCGCCCCGAATAAATTCGAAGCGCTGGCGACCTGTGACGCGTTGGTTCAGGCGCATGGCGCATTAAAAGGATTGGCGGCCTCGCTGATGAAAATCGCCAACGATGTTCGCTGGCTGGCGTCCGGCCCGCGCTGCGGCATTGGCGAGATTGCTATCCCGGAGAATGAGCCAGGCAGTTCCATTATGCCTGGTAAAGTGAATCCGACCCAGTGTGAAGCGGTAACGA [...]
+NODE	900	2913	157345	156705	0	0
+CATCCGGCCCAAAACGGTTGCGCAGTTCGCCGATAACCGGATCATCAAGATGATCGCGGGTACTCCATGCAGCGTCTTGCGCGGTTAAGTCGGTCATATTGTTCACCATTGCAAATGGTCCGTGGTGGTCGGCAGTGCTTCGCGCTATTAAAATAGTGGTTAGCGAAGTGAAGTGCTGCTGCCGACAGGCGCAAATTAAATCTCGTCCGGGGTACGCAGGTTCGTGACGGCAATACGCTCGCCGCGTTTACGTTCGCGTTCTGGCTGCATATTGGCGCGATACACGCCCTGATCGCCCACCACCCATGAGAGCGGACGGCGCTCTTTGCCAATCGATTCTTGCAGCAGCATCAACGCCTGCATATACGCTTCCGGACGCGGCGGACAGCCAGGGATATACACATCCACCGGGATAAACTTATCAACGCCCTGCACTACCGAATAAATATCGTACATGCCGCCGGAGTTGGCGCAGGCGCCCATAGAAATGAC [...]
+CGATAATTAACCTCGATCTCGATCTGCTGAGAACGTTCGTGGCCGTTGCCGATCTGAACACCTTCGCCGCGGCGGCGGCGGCGGTATGTCGTACTCAGTCTGCGGTCAGTCAGCAAATGCAGCGTCTTGAGCAACTCGTGGGAAAGGAATTGTTCGCCCGCCATGGCCGTAACAAACTTTTGACCGAACACGGTATCCAGCTTCTGGGGTACGCCAGAAAAATCCTGCGTTTTAATGATGAGGCGTGTTCATCATTAATGTTCAGTAATCTTCAGGGAGTGTTAACAATCGGCGCTTCTGATGAATCAGCTGATACTATCCTGCCTTTTTTGCTTAGCCGAATCAGCTCGGTTTATCCGAAACTCGCGCTTGATGTACGGGTAAAACGCAACGCCTATATGGTGGACATGGTTAAATCGCAGGAAGTAGATTTGGTGGTGACGACTAACCAACCTCATTCGCTGGACTGTCTGAATTTGCGGACCTCGCCCA [...]
+NODE	901	2153	110060	108531	0	0
+CGCGAGATTGATTACACGCGCCCGACCTGTATTCTGATGGGTCAGGAGAAAACCGGTATTACGCAGGAAGCATTAGACCTGGCGGATCGGGATATCATCATTCCGATGATCGGTATGGTACAGTCGCTGAACGTTTCCGTCGCCTCCGCGCTCATTCTTTATGAAGCCCAGCGCCAGCGTCAGAACGCGGGCATGTATCTGCGTGAAAATAGCATGTTGCCGGAAGATGAACAGCAGCGCCTGCTGTTTGAGGGTGGTTATCCGGTGCTGGCGAAAGTCGCTAAACGTAAAGGTCTGCCTTATCCTCGCGTCAATCAGCAGGGCGAAATCGACGCCGATGCTGACTGGTGGGCGACGATGCAGGCGGCAGGGTAATCACCATGTCAGGCCGCTTGTTAGACGCTGTTCCGCTCAATTCCCTGACAGGCGTCGGCGCAGCGCAAAGCAGTAAACTGGCGAAAATTGGCCTGCATACCGTGCAGGACCTCCTGC [...]
+GGCCCAGCCGCTCGGGGTTTTCAATAATCATCAGGCTGGCGTTAGGAACATCGACCCCCACCTCAATCACCGTAGTGGCGACCAGCAGATGCAGTTCACCCTGCTTAAAGGCCTGCATCACCGCCTGTTTTTCGGCGGGCTTCATGCGGCCGTGTACCAGGCCAATATTCAACTCCGGTAACGCCAGCTTGAGTTCCTCCCAGGTGGCCTCCGCCGCCTGCGCTTCCAGCAGGTCAGACTCTTCAATCAGCGTACAGACCCAGTAGGCCTGACGGCCTTCGGTTGTGCAGGCGTTGCGCACACGATCAATGATTTCATGGCGACGGGTATCCGGAATAGCAACGGTAGTGACAGGGGTACGGCCCGGCGGGAGCTCGTCAATCACCGAGGTATCGAGATCGGCGTAGGCAGTCATCGCCAGGGTGCGCGGAATGGGCGTTGCGGTCATAATCAACTGATGCGGATGAAAGCCCTGTTGTTGGCCTTTTTCCC [...]
+NODE	902	2201	441286	429440	0	0
+TGTTGAAGGGATTTCAAAAGATGCCTTTGTTGGTGAATTGCAAATACAATTAAAAAAGCAAGGAAAAACTCTAGGGGAATTACAGGAAAGACGTTTAAGGTTAGGTGATAACGATACGACAGCCTCTATCCAGTTTTTAGCTGAACAAAATGAACAACTGTTACAACAAATTCAGAGTTTACAGTTACAGCAAGCAGAGGCGATGAAATATAGTGGTCGTCTTGAGGATCACTATTTTAACAAGCGAGCGCAACAGGAAGAATTAAAGGCACGTCAGTTACAGAGGGCATGGCAATGAAAAAATATCTGATTCTTTTCTTCATGATGTTTTCAGCCTCGGCAATGGCTAAGATTGGCTATGTTGATGAGCATCAAAAGGAAGTTGACCTAAAAATTGACGCTCTGATTTCTAAATATGAAAAAGAATGTGAAGGTAAACGCAATAGTAATATGTGTAAATCCCAGGCATGGGATAAGGCCCATTTTGAATAT [...]
+CCGCTTCTGCATAATCCCGTTCTATAGTCTCTTTTAACTGTCCATAGCGCTTCTGCACATACTTTGACAGCAATGAGTTCACTGTTGGTGTATATATAGGCTGCTCATTGTCTGGCGTAAATTGTGATATTTTATGTGAACCATCAGGCAATAATTTCACCCATACTACTTCTGTAGTATTCTGGCTTTTTTCTATTGCCTCCTGAACAGAATATGACTGATATATCGTCGTCCCGGCAAGAAGCAAGGCAATCCAGAAAAACAAATTTCTGTCTTTTTTTAGTTCACCAACACGATCCTTAAAGGCTGTGCGATTTACTTTTTCGACTTCTTTTTTTTCAAGCAGCATACGTTCACCTTACAATAATGCTTTAGCCGCTTTCTTGGCTAGTTTTACTGCCATATTATTCAACCCCTGACTTGCAGAGCCGACACCAGAACCAATCATGTACGCAAATATAAAACAACTGAACACCATAATTGCAGCGATTA [...]
+NODE	903	51	3608	3608	0	0
+CGACTTACATGGATAGCGATACCATCAGGTAAATACAAAGTACCGAGTTTA
+GTAAAGATAATCATGTTAGCCTTGAAAATGGGATTATTGCTGTTAACCGCA
+NODE	904	90	5694	5694	0	0
+ATTTACTCCCGATAAATTTGGCGTATACGTAAAAGCACTATGGGGCTATAGCTCAGCTGGGAGAGCGCTTGCATGGCATGCAAGAGGTCA
+TAGTGCTTTTACGTATACGCCAAATTTATCGGGAGTAAATTTGGTGGAGCTAAGCGGGATCGAACCGCTGACCTCTTGCATGCCATGCAA
+NODE	905	1504	97383	96245	0	0
+TACAAAACCGCCGACAATAAATAACCCTATGATTTTACTGAATTATAAATTTATTTTGCTGTTTTTAAGCACGATTCATTGATCTACAACAGTGGATTGTTCAAAGTTTGGCCTTTCATCTCGTGCAAAAAATGCGTAATATACGCCGCCTTGCAGTCACAGTATGGTCATTTCTTAACTCATGCGCATCGGACAATATCAGCTCAGAAATCGCCTGATCGCAGCGCCCATGGCTGGCATTACTGACAGACCTTTCCGGACGCTGTGCTATGAGATGGGAGCAGGATTGACAGTATCCGAGATGATGTCTTCTAACCCGCAAGTGTGGGAAAGCGATAAATCTCGTTTACGGATGGTGCACGTTGATGAGCCAGGAATTCGCACGGTGCAAATTGCCGGTAGCGACCCTGTTGAGATGGCCGATGCCGCACGTATTAACGTGGAAAGCGGCGCCCAGATTATTGATATCAATATGGGGTGCCCGGCGAAGAA [...]
+TTTTTTTAATTTTTTACGCAGCGTACCACGGTTGATGCCCATCATCAGAGCAGCACGGGTCTGGTTACCACGGGTGTATTGCATCACCATGTCCAACAGGGGCTGTTCTACTTCAGCCAGTACCAGCTCATACAGGTCATTAACGTCCTGACCATTCAGTTGAGCAAAATAGTTCTTCAGTGCCTGTTTAACCGAGTCACGCAGGGGTTTTTGGGTTACCTGATCCTGAGAGTTAACGGTAGAAACGGTCAGTACGTCAGAATTTACGCGTTGTTCGAACATAGTTCTGTCAGCTCTTTATTTCTGTTTACGCAAAATTTTCGAAGTATGCCTCCAACGCCTCCAGCTGTTCGCTGGCGTCCTCAATAGCGTTGAATGTGCGCCGAAACTGGTCGTCTGGAGCGTGCTCCTGGAGATACCAGGAGACGTGTTTACGCGCGATTCGGTACCCTTTTGCCTGACCGTAAAAGTCATGCAGTTCCCGAACATGCG [...]
+NODE	906	1193	70138	67855	0	0
+ATACTGGCGCGCGAGATGATCTGTGAACATTTACGCTCGGTAAATTCGCGGCCAAACTCTTTCTCATACTCTTCACGCTTAGACACCACGAAGGAAGAGACGATGGGCGAAAAGTTAAAGGAGAACACCATGATAGAGATGCCCAGCCACACCGTAACCAGTATGCCATCGTGCCCGGTCAGCGCGATATTACTGAGATCAACCTGATCGATAACCGCCGAGTTCCAGTAAGGAATCAGCGATAATGAGATTAGCACCAGGCTGGCGATAAACGGCCATACCAGGTAACTCATCACCTTAACCATCAGATCTTTACCAAACCAGATCACAAAGGCCATCAGCAGCAGCAAGAACAGCGCCACGAAACCGCGGTTCAACGCTGGCATCTGCAACTGGTTTTCCCAAAACGTCATGAACGTGTTAGTAATGGTGACGCCATAAATCCACAGCAGCGGACAAATCGCAAAGAAGTAAAGGAACGTGATAACTACC [...]
+CGGCGTCTTATTACGCTGGCGAAATAACCACGCACCGAACGACCGGCACCCTGGCGGATGGTTGTGATGTCTCCCGCCCGGGTAATTTAACCTATGAAATTGTTCGTGAATTAGTCGATGACATTGTTCTGGTTAGCGAAGATGAAATTCGTAACAGCATGATCGCTTTAATTCAGCGCAATAAGGTTATTACTGAAGGCGCTGGCGCTCTGGCCTGCGCCGCACTATTAAGCGGGAAATTAGATAGCCATATTCAGAACAGAAAAACGGTCAGTATTATTTCTGGCGGCAATATCGATCTTTCTCGTGTATCACAAATTACGGGTTTAGTTGACGCTTAATCTTTTCGTGAGGATAGGATATGAGTACTACTGATAGCATTGTATCCAGCCAGGCAAAACAGTCGTCATGGCGTAAATCGGACACGACGTGGACGCTGTGTTTATTTGGTACCGCCATTGGCGCCGGGGTGCTGTTTTTCCCTATCCGCGC [...]
+NODE	907	251	13574	13511	0	0
+CTTTTATCTTTTTAATATCAGAAGGTTCCATGCCGCCGTATCTGGACTTCCAGTTATAGTAGGTGGCCTCAGAGATACCGGCCTCCCGGCAGACATCTTTAACGGTTCGTCCAGCTTCAACCGACTTAATCACAGTGATGATCTGATGCTCAGTAAAACGGGCTTTACGCATAGCGATCTCCTTCGCTGGCAGATTGATTATGCCGGATGATCTCTAAATGTGAATGGCACGATTATGCGGGATACTTACA
+TAATCAATCTGCCAGCGAAGGAGATCGCTATGCGTAAAGCCCGTTTTACTGAGCATCAGATCATCACTGTGATTAAGTCGGTTGAAGCTGGACGAACCGTTAAAGATGTCTGCCGGGAGGCCGGTATCTCTGAGGCCACCTACTATAACTGGAAGTCCAGATACGGCGGCATGGAACCTTCTGATATTAAAAAGATAAAAGATCTTGAGGACGAGAACCGACGCCTCAAACAGATGTTTGCCGACCTGAGC
+NODE	908	9087	412281	406418	0	0
+CTGACCGGCGCCGGTTTCAGCGATAATCTCGCTTTTCCCCATCCGTTTGGCCAGCAGCGCCTGACCCAGTACCTGATTGGTTTTGTGTGCGCCGCCGTGCAGTAAATCTTCGCGCTTTAAATACAACGTGGTACGCGTACCGGCGGTAATGTTCTGGCATTTCGTCAGCGCGGTGGGGCGTCCCGCGTAGTTTTTTAGCAGATCGGCGAATTGCGCCTGAAATTCAGGATCTTTTTGCGCGCTGACGAAGGCCTCTTCAAGCTGGTTCAGCGCAGGCATCAGGATCTGCGGCACATACATGCCGCCGAATTCACCAAAGTAGGGGTTGAGAAGTGTTGTCATGTTTTTTCCTTAATATGCGCGCAGTGTCTGAAAAACCGAGGCCAGAAGACGAGCATCTTTGATGCCCGGCTGTGACTCCACACCTGAATTAAAATCGAGACCGGCACAGCCGACTTGCGCCGCCTGGACGCAGTTATCGGCCGCCAGCCC [...]
+AAACAAGATCTATTGCAAAACCGCATTATTCTGGTCACTGGCGCCAGCGATGGCATTGGGCGGGAAGCCGCGCTCACGTATGCGCGTTACGGCGCAACGGTGATTCTGCTGGGACGTAACGAAGAGAAACTGCGTCGGGTCGCGCAGCACATTGCTGACGAGCAACATGTTCAACCACAGTGGTTTACGCTTGATCTACTGACCTGCACCGCTGAAGAGTGCCGGCAAGTGGCCGACCGCATCGCCGCGCACTATCCCCGCCTGGATGGCGTCCTGCACAATGCCGGGTTACTGGGGGAAATCGGTCCAATGAGCGAACAAGATCCGCAGATCTGGCAGGATGTCATGCAGGTAAACGTTAATGCCACCTTTATGCTCACCCAGGCGCTGTTACCGTTATTGCTGAAGTCCGATGCCGGCTCGCTGGTCTTTACGTCATCAAGCGTTGGCCGTCAGGGACGCGCCAACTGGGGCGCCTATGCCACCTCGAAG [...]
+NODE	909	96	6539	6539	0	0
+AGGGGACGCCACTTGCTGGTTTGTGAGTGAAAGTCACCTGCCTTAATATCTCAAAACTGACTTACGAGTCACGTTTGAGATATTTGCTCTTTAAAA
+TTAAGGCAGGTGACTTTCACTCACAAACCAGCAAGTGGCGTCCCCTGGAGGTTTGACCTCATCAGTTTGAACGCTGGCGTCCCCTAGGGGATTCGA
+NODE	910	15	6197	6182	0	0
+ACCCGAAGATGTTTC
+CCCTGGCAGTCAGAG
+NODE	911	6	2119	1100	0	0
+TCGCGA
+TGGATG
+NODE	912	29	11112	3131	0	0
+TTCATCGTCGTGTTGCGAAAATTTGAGAG
+TGTGAGGTTAAGCGACTAAGCGTACACGG
+NODE	913	10	4172	1236	0	0
+CTCACGAACA
+CATCTTCGGG
+NODE	914	387	19527	19527	0	0
+CAACACGGAGAACAGCACTTCCAGCAACAGCGACAGCGTAACGCGCCAGAAACCACCATACTCTTTGGTGCCTTTACACCAGATCAGCATAATACTGAGCAGCTTCGGCAGGAACAGCAGCACCATCGTTGACGCAAACAGCGCGATTGCCAGTTCCGGACGCCACTGCGGCCAGACCGGAAAAAGCTGGCGCGGCTGAAGGAAATATTGCGGCTCTGTTAACGCATGAACGACCTGCAGCGCGGTAGAAAGCGCGAGGAACATAAACCATAACGGCGCGGACAGATATGACATTACCCCCGTCAGGAACACGGCGCGATGCACCGGGTGCATTCCTTTCACCAGGAACAGACGAAAGTTCATCAGGTTGCCGTGACACCAGCGGCG
+AGGAATGCACCCGGTGCATCGCGCCGTGTTCCTGACGGGGGTAATGTCATATCTGTCCGCGCCGTTATGGTTTATGTTCCTCGCGCTTTCTACCGCGCTGCAGGTCGTTCATGCGTTAACAGAGCCGCAATATTTCCTTCAGCCGCGCCAGCTTTTTCCGGTCTGGCCGCAGTGGCGTCCGGAACTGGCAATCGCGCTGTTTGCGTCAACGATGGTGCTGCTGTTCCTGCCGAAGCTGCTCAGTATTATGCTGATCTGGTGTAAAGGCACCAAAGAGTATGGTGGTTTCTGGCGCGTTACGCTGTCGCTGTTGCTGGAAGTGCTGTTCTCCGTGTTGCTGGCGCCGGTGCGTATGCTGTTTCATACCGTGTTTGTGGTCAGCGCGTT
+NODE	915	11985	638276	631351	0	0
+CCGCCCGGATGCGCGTCGCAGTGAACATGCCAGCGCAGAAGCGCTGGATGTCAGCGGGTTTCAGCTATCAGATGGCCGAAAAATCACTGTTCTGCGCGGCTGGGGGCGTCAGGAGACGGGGCCCTGGTTACGCGCTATGTTAAACGCCAGTTGCCATTATTATGGCAATGGGCTCGGGCCTGACTATAACGCTGCTCATGCTAACCATTTTCATCTTGGAATGCGGGGCTACGGCGTGTGTCGTTAAAGCATAAACGTCTGCCTTGCGCGGCTATATAATGTGACATGTTTCACAAAAATGATGAACGGGGAGACAAAATAGCAAAGTGTGACGTATCGCACCTCTGGAACCACCAGGAAAAAGAGAACTTGCTAAGCTAACGCGTATTTTCAGCTACTTACCGTTACGAGTCTTATGGAATCCTGGAAAGTTAATCTAATTTCCGTTTGGTTTGGATGTTTTTTTACCGGGCTGGCAATCAGCCAAATCCT [...]
+GGCGTTAAAAAATAGCCCGTTTGACAGCCAGGCAACGTTCCTGGCGGCGTTGTTGGATGAAGAGACCGTGACCCGTCTGGAAAAACAACAACAAACGCTGGAAAGTCAGCTACAACAAGCGAAGGCGTTAAGCGCGCAGTCCGCGCAGGCGCTGGCTGACCATCAGCAACAGCCGCCCGCCGGTCTGGACCCAACGTGTACGGCGGAGCAGCTCGCGCAGCGGCTGGCGCAGTTGGCGCAACAACTGCGTGAAAACACGACACGCCAGGGGGAAATCCGCCAGCAAATTAAACAGGATGCAGATAATCGGCAGCGCCAACGGGCGCTGATGGCGGAAATGAAACAAGCCTCTCAGCAAGTGGAAGACTGGGGCTATCTCAATGCGCTGATCGGCTCTAAAGAAGGTGATAAGTTCCGCAAATTCGCCCAGGGACTGACGCTGGATAATCTGGTCTGGCTGGCGAATCATCAGCTCACCCGCCTGCATGGCCG [...]
+NODE	916	1034	52528	52040	0	0
+GATTGTATTAATCGCCGCCATTTATGGCGAGCAAACATCGCGGCGGGAATAAAAATCTTCAGCGTATCGACTCTTCTCCCACAAGCGGTGGTTATCCCGCTTGTGGGCATGAGTGGCGGTTAAACAGGCGCTTCCATCTCAAGTCTGACCGGATGAAAACGGCGTTTGAAATAAATCAGGCCATGCCCATCCTGACTAAGAATAATATTTTTGATCGCCACCAGATACACCAGATGCGTGCCAATGGTTTGTACCTCGCTGATCTCGCCTTCAAGACCGGCCAGCGCGCCGTTAAGTACCGGCTGGCCCAGCGGCCCGTTTTGCCAACATGGCTGGTGAAAACGCTCCTCCATCGCCATCCCCGTCATACCGGCAAAGTGGCGCGCCATCAGCTCCTGCTCATGGTTAAGTACATTAATGCACAGCCTGCCGTTGCCCTGAAAAACGGGGTTCATGGCGCTATTGGCATTAATACATACCATTACGGAGGGC [...]
+ATCTGAATAATCCGCAAATCGACCAGTACCTGGCGAAATACGTACGCGGCTCTAACGGAATGGACCATGTTGAACGTATCAAAATTCTTAAATTGATGTGGGATGCCATCGGCAGCGAGTTTGGCGGTCGCCATGAGCTGTACGAGATTAACTACTCGGGCAGCCAGGATGAAATTCGTCTGCAGTGCCTGCGTCAGGCCCAGAGCTCCGGCAATATGGATAAGATGATGGCAATGGTCGATCGCTGCCTCTCCGAATACGATCAGAATGGCTGGACGGTTTCGCATTTGCACAATAACGACGACATCAATCAACTGGATAAGCTGCTGAAATAACGCGGCAGGAGGTTCTCATGCAAGTAGATGAACAACGTCTGCGTTTTCGCGATGCGATGGCAAGTCTGGCGGCAGCGGTCAACATCGTAACCACGGCGGGTCACGCCGGACGCTGCGGTATCACCGCAACAGCGGTCTGTTCCGTCACCGATACGCC [...]
+NODE	917	2837	153550	151165	0	0
+CTTACGGCAGTGAAGCCGTCGCCGTTCTGCCATAAAAAACTCATTATAATGGAAGGTTCAGCGTCGAATGGGGATAGCAGGCAATGCCAGATGGCCGAGCTCCTGCAAAAAGTTCAGGAGACCGTGAGAACGCTTGAGAACAACGGCGTTAACGCGGCCCTGCAGCATTACCCGGGCCTGGGCCACGGGCCCATGTTTAACGCCTCTTTTCGCAGTGCATTGCTGGATATCAGTCGCGAACCGGCAAGCCAAAAACCACGCTGTCATTAACCCGCCGCCAGAATATGCCCGCCAGCGACGGGCATAATCCATCAAAACGAGGCCGTCACACCGGCATAATAAGCCCGACCCGGTTCGTTATAGGTATTTGCCCCTTCGGCGGAGCGATAGATCTGTTTATCGAAGATATTGCTGATACCGACATTAAGACGCAGGTTCTTATTGATATCGTAGTTAACGTTAGCGCCGACCAGTGAGTAAGCCCCCAGCGCT [...]
+TGCTTTGAAAAATAATTAATTTCCTCTATTCCTGTTTTGTAAAACCTTCGTTCAGTAGGCGCATTCTGCCCCCCTTCCCGGATTTACTGGCAAAGTGGAGCCCGGACAGAGAGTCATATTGCAAAATCCCGTTTCCGTTTTTTTATTACCAGATTTTTGTGGTCGAAAGATTGCCTTTTTCTTAATTGAATGATAATTATTATTATTAGCATATGATAATAATTACTATATAGACGTAACCTGGCAAGGATGTGAGCTTGAGGGCAACAGCGCTACTTTAGACATTATTTAGGGAATGGGTATGAGAGTTAATAAGTTCCTCTGGTTAATAACCGTGGTTTCTACAGGGGTTAATAGTCCATTATCAGCAGCAGAATCTACTGACGACAACGGCGAAACGATGGTGGTTGAATCCACCGCCGAGCAAGTATTAAAGCAACAGCCGGGCGTTTCGATTATTACTCGTGACGATATTCAAAAGAATCCTCCCGT [...]
+NODE	918	1530	86914	83735	0	0
+TTAGTTCCCAAATTTCTCTACGACTACTTTCCTCTTGAGGTTCGTGGTTTGGGTACCGGGCTGATTTATAATCTTGCTGCGACATCAGGCACATTCAATTCAATGGCGGCGACCTGGCTTGGAATAACAATGGGGCTAGGCGCTGCGCTAACGTTCATTGTTGCTTTCTGGACCGCAACAATTCTACTCATTATTGGCCTATCCATTCCGGATAGACTAAAAGCACGTCGTGAAAGTTTTCAATCAACAAAAGAATTTTAATAGAGGATAAATGATGACGAAATACGGTGTTGTAGGTACAGGTTATTTTGGCGCTGAACTGGCGCGATTTATGTCTAAGGTTGAAGGGGCGAAAATCACTGCGATTTACGATCCGGTAAATGCGGCTCCGATAGCGAAAGAGTTGAACTGTGTCGCCACTGCAACGATGGAGGCGCTTTGTACCCATCCTGATGTGGATTGCGTAATTATTGCTTCACCAAATTACTTACA [...]
+GACCCGTCCATTGCCGGATGGCGGCACAGTTCACAGGCGCCTTATCCGGTCTACATAAGCGCAGCGCCACCGGGTAATAACACCACCATCCGGCTTTCAATTTTAGCCAAGAATTTCAGTGAGTTTTACTTTGCGCCCCTCGTTTGAGGAAAGCGTCGCAGCATCAGCGGTAGCAATGGCATTTGTCGCCGCTTCTCCCGTTAGCAATTTAGCAAACTCCTCGCCTGGCTCCAGACCGTTTATCACATCATGCAAGTACTGCATCTCCAGTTTCATAATTGATGAGAGCCACATCGGCGTACGTTTACCGGGTTTACCATAAGCGATTGCGCCATCCATCTCGCTGGATATGTTACCGTTGCGACGATCATCATCCTCCGCCTGGCTTTCATGCACAAGAAAGTGTGTTTTTTTGCCCGCTTTTATTAGATAACCCGCCGTGTCTTGCATATCAATGAGAATTGCACCTGTCGTGCCCTCAATTAATACATA [...]
+NODE	919	2096	132404	130912	0	0
+CCGCCAGGCTTCCTCTCTTTCCGGTGCCTGAGTACTGATAACACGTATTGTTTTTTTTGTTCCCGGGGAAAGGGCAAATTTCTCCGGGGAGACAACAAGTCCTGTCTCTATATCATTCCCTGCTGGTACCTCCTTCTCCTGTGGCATACCAGGGTGTTCAATACGCATGATTCTTGTTCGAATATATTGCACATGATCTGATTTAGAATAGACGAACAGCGAGGTGGCCTCTTCGCGGCTACTATTAATTTCTGCCGCCATGGGATAAACGAGCATATTCGCCCTGGCATGACCACATGCAAACATAGCGACACAGAGAAACACCCCGGGAAGAGTATCTTTAAAATTCATACCAGATTTTACCGTATAAAAGTCATCTAAATTTTAGTATTAGCATAGACAGAAAGTTATCAGCATAAAGAAGCAAATTACGATTCAGTGTTAATACATTTTGTGTGGAGGGCATCATACGGAATAAAATTTTTCGCTCAA [...]
+AGTCTGGATACGGCGGCATGGAAGCTTCTGATATTAAATCTTGAGGATGTCAACGCCAGGATTTATGGTCGTTTTTCGCTATTTTTAATATCCGCTGTTTGATCACTTCTGCTGTCCGCTTTCCGCCATTTCATCTTCACTGATTGGCGTTGCGCTTTTGGTCAGCGCCCCGACTTTGCGTTTTTCCTTCAGTTGGTAACTTTCTCCTTTGATATTCAGTGTGGTTGAGTGATGCAGTAGCCGATCCAGGATCGCTGTTGCCAGCACGTTATCACCGAACATCTCACCCCAGTCTGCGAAGCCTTTGTTTGACGTCAGGATAATGCTCGCTTTTTCATACCGTCGGTTCAGCAGTCGGAAGAACAGACTGGCTTCCTCACTGGTCATTGGCAGGTAACCTATTTCGTCCAGGATCAGCCCCCGCGCATAGCTCAGTTGTTGTAGCTGGCGCTCCAGGCGGTTTTCCAGCTTCGCTTTCATCAGCGTCTACCA [...]
+NODE	920	156	9148	9057	0	0
+TCGCCGTAGGTCTGCCACCAGACGTCATTCATCAGTTACTGTTCTCTTTTGTCTAACAAGGATGCACCTATGCTAACAGTACCGGGATTATGCTGGCTATGCCGAATGCCGCTGGCGTTAAGCCACTGGGGGATTTGTTCCGTATGCGCGCGCGCC
+TTCGGCATAGCCAGCATAATCCCGGTACTGTTAGCATAGGTGCATCCTTGTTAGACAAAAGAGAACAGTAACTGATGAATGACGTCTGGTGGCAGACCTACGGCGAGGGAAATTGTCATCTTGTGCTGCTGCACGGATGGGGATTGAACGCGGAGG
+NODE	921	3352	157736	156504	0	0
+AGATTTGCCAGATGCCTTCAACATAACCCTGAACGAAGTTGGCGGTGTTTGGCTCGCTGCCGTCGGTAATCACCTGAATCGGCGCGCTGTCACCGGCGCGCGCCATTTGCTGCGCGAAATCCACCGGAATCACCACCAGTCCGCGAATGCGTCCGGCCTGCATTTTTTCAATTAATTCATGGCGATTATCGCTAATGGTCGCGTCGATATAGGGTGAACCGGTCATCGCATGAGTGAAATCCAGCGCCTCCTGGCTTTGCTGTTCAAGCAGAATCCCCACCCGCAGCTTGCTGGAGTCGAGGTTAATGCCGTAACCAAAAATAAACAGCAACAGCAGCGGGATCACCACCGCAATCAGCCAGCTACTGGGATCGCGCACGATCTGGCGCGTCTCTTTGACGCACAACGCACGCACGCGGCGCCAGGAGAGAGACTTACTCATGCGTATGCTCCTTATCCCAGTCATTGATGAGAGTGATAAAGGCCTGCTCC [...]
+GCGTTTCGTCTCGGCAAAGAAACTATTCTGTTACGTACCGGCTGGCCGCAGTTTGATGAAGAAAAAGCGGAGCTGATTTACCAGACGGTAACCTGCCACATCGATCTTATTCTGCACGGTTTAACGCAAAGGAGTCTGGACTGATGAAAAAACCTGTCGTTATCGGACTGGCAATCGCAGCGATCGTCGCTGTGATTGCCGGTGGAACCTGGTGGTATCAAAGTCGGCAGGACGATGGGCTGACGCTATACGGTAATGTCGATATCCGTACCGTCAATATCAGCTTTCGCGTCGGCGGCAGGCTGGCGTCGCTGAATGTTGATGAAGGCGATGCCATCAAAGCCGGACAGGTGCTCGGCGAACTGGATCACGCGCCATACGAAAACGCGCTAATGCAGGCGAAAGCTGGCGTGTCGGTCGCGCAGGCGCAATATGATTTGATGCTGGCAGGCTATCGCGATGAAGAGATAGCCCAGGCCGCCGCCGCCGTCA [...]
+NODE	922	1506	67601	66302	0	0
+ATCTGACGAAACGGAGACTGACTGGCGACAAACCCGATATCGTCTAATAGCGACTGCGCCGCGCGAAACGCAAAGCGGCGCAACACCACCGCGCCAGGCGCCAGGGGCTCTTGCCAGGGCGCTTCATCAGCAAATAGATCCAGCATTGCTACTCCTCTTTTTGCGCTTCTCGCTTTAATAGCTGCGCTTTTCGACGCACGCCCCAACGATAACCGGAGAGCGCGCCATCGCGACGCACGACCCGATGACACGGGATCACCATCGCCAGTTTATTCGCGCCGCACGCGCTGGCGACCGCGCGTACTGCCGTGGGTTTGCCGATAGTCGCGGCAAGCTGTTGATAGCTTACGGTTTCGCCGCAGGGAATCGCGCATAACGCCTGCCAGACCTGCTGTTGAAACGCGGTTCCCTGGATATCCAGCGGCAACGAGAGCAGCACATCGCGTGTGTTGATAGCCGCGACAACCTGCCGCACCCGTTGCTGAAAAGGCG [...]
+AGCGGACGGCTGGGACACCGGCCTGATGGTGCTTGGTACGCAAAAGGCGCAAGAGGTCGTGCGGCGAGAAGGGCTGGCGGTCTTTATGATCATGAAAGAAGGTGAAGGCTTTAAAACCTGGATGTCGCCGCAGTTCAAAACGTTCCTAGTGAGCGATAAGAATTAAAACGCAAGATTACGGGTTTTTGTGGGCGGATTTACGGACACACTGCATGTAAGCAAGCACTATGCTTAATGAAGGAGTCTATGATGAAAAAAGCGTTACTTACCGATGATGAATGCTGGCTGCGGGTGCAGGCGCGCGATGCCAGCGCGGATGGGCGTTTCGTTTTTGCGGTGCGAACCACCGGCGTTTTTTGCCGCCCTTCTTGTCGCTCGAAGCGGGCGTTACGTAAAAATGTTCGCTTTTTTGCCAACGCGCAGCAGGCGCTGGACGCCGGTTTTCGCCCCTGCAAGCGCTGTCAGCCGGATAATGCGCGCGCGCAGCAACGG [...]
+NODE	923	5469	247923	245537	0	0
+ACGTTGATGAAGACGCCAGCGGCGCGATGGTCGGCTTTAATGTGCATTTCCATTCGCTCGCCAGCGCCTCGATCACGGCGATGTTCAGTTAAACGCTGTGCCGGATGGCGGCGTAAACGTCTTACCCTGCCAACGGGTTGGGTAAGCCGAATACGCGCCGCGCCATCCGGCAGCATTCACATAAAGTCCGGCACCAGACGCTGTAACGCGCCTTGCGCCAGCAGCGCCGTCGCACACTCAATATCGGGCGCGAAAAAACGATCCTGCGTATAGTGCGCCACCTGCTCGCGCAGTGTCTGCCGCGCCTGTTCCAGTAACGGGCTGGAGGTTAACCCTTCCCGTAAATCTATCCCCTGACAGGCAGCCAGCCACTCCACGGCAATGATGCCGCGGGTATTCGCCGCCATTTCCCAGAGTCGCCGTCCTGCCGCCGGGGCCATTGAGACATGATCTTCCTGATTCGCCGAGGTCGGCAGGCTATCCACGCTGTGC [...]
+CGCATGGGCAGATCAGGGCCGGCTACCGGGCGGATTTTGTGGTGTGGGATGCTGAACAGCCGGTAGAGGTTGTGTATGAGCCGGGGCGTAATCCTTTATATCAGCGGGTATACAGAGGACAAATCTCATGACGCAATGGTATCCGGCTTCTCCGGCGCTCTGGCAGGGGCGCGATGACAGTATAGAAGCGCCGGATGCGCGGCGTCTGTTTCAGACCGTCACGCGCAGCGAGACCTTTTCCCCCGAAAACTGGCAGCAAAAGATAGCGTTAATGGGATTTGCCTGCGACGAGGGGGTAAAACGCAATGCAGGGCGTCCCGGCGCGGCAGGCGGCCCGGACGCGTTGCGTAAAGCGCTGGCGAATATGGCCAGCCACCAGGGACATGAACGGCTGGTGGATTTAGGCAATTGGGTTGCGCCGACGCCCGATCTGGAAGGCGCGCAGCAAGCCTTGCGCGATGCGGTAAGCCGCTGTCTGCGGGCCGGGATGCG [...]
+NODE	924	11	1292	1292	0	0
+CTATCTGCGAT
+TCGTGCAGGAT
+NODE	925	114	10444	7357	0	0
+ATGGAAGATTCGAACCTGCCGCAGGTTCGGGTCGAACGCAGTGAGACAACGGAGCCGTTTACGGCGACGGCCCGAAGGGCGAGCGAAGCGAGTCATCCTGCACGACCCACCAAT
+CCGTAAACGGCTCCGTTGTCTCACTGCGTTCGACCCGAACCTGCGGCAGGTTCGAATCTTCCATATCGCAGATAGCAAAAAAGCGCCTTTAGGGCGCTTTTTTACATTGGTGGG
+NODE	926	99	4459	4374	0	0
+GACTCGGCTTCGCCTCGCCCTTCGGGCCGTTGCTGACGCAACGTTATCCTTCACGCTCAACATCTGAGTTTGATGTTAAATTGGTGGGTCGTGCAGGAT
+GGATAACGTTGCGTCAGCAACGGCCCGAAGGGCGAGGCGAAGCCGAGTCATCCTGCACGACCCACCAATGTAAAAAAGCGCCCTAAAGGCGCTTTTTTG
+NODE	927	3666	198543	197605	0	0
+TGGTGGAAATCATGTACACTCTGCGGCAGGTGGTGTGCGTTAAAGGATAGAAAATGGCAAGGATTATCGCGCTGGATGGCGCACAGGGAGAGGGCGGCGGGCAGATTTTGCGCTCGGCGCTGAGTTTATCAATGATAACCGGCCAGCCGTTTGAAATGAGCGGCATCCGCGCCGGGCGCGCTAAACCGGGGCTGCTACGCCAGCATTTAACGGCGGTGCGGGCGGCAACGGAAATCTGCGGCGCGCAGGTGAACGGCGACGAGCTGGGCTCGCAACAGTTGCGTTTTACGCCGGGGCCGATTCGCGGCGGCGAGTACCGTTTCGCGATTGGCAGCGCGGGCAGTTGTATGCTGGTGCTGCAAACCGTCCTGCCCGCGCTGTGGTTTGCCGATGGTTCATCCCGCGTGGAGCTTCACGGCGGGACGCATAATCAGGCCGCGCCCAGCGCCGATTTTATCTGCCGCGTCTGGGAGCCGCTGTTGGCGAGGATGG [...]
+TTGATTGTGCGCGTGACCGGCGAAGAAAACGGCCAGATGCGGCTGGAGGAGATTGAGCGCCAGGGGTTATTCCTGCAACGCATGGACGACACGGGCGAATGGTTCAGCTATCACCCGTTGTTTGGTAGCTTTCTGCGCCAGCGTTGCCAGTGGGAACTGGCGGCGGAACTACCGGAGATCCACCGTGCGGCCGCGGAAAGCTGGATGGAACAAGGTTTTCCCAGCGAAGCTATTCATCATGCGCTGGCGGCGGGTGACGCGCAAATGCTGCGCGATATCCTGCTTAACCATGCGTGGGGGCTGTTTAATCACAGTGAACTGGCGCTGCTGGAAGAGTCATTAAAAGCGCTGCCGTGGGAAAGCCTGCTGGAAAATCCGCGGCTGGTGTTGTTACAGGCCTGGCTGATGCAAAGCCAACACCGCTACAGCGAAGTGAATACGCTGCTGGCGCGCGCCGAGCAAGAGATCAAAGGGGTCATGGACGGCACGCTG [...]
+NODE	928	1347	69837	69592	0	0
+CTGCTGCTCCAGACCTAAATATTCACGCTGCGCCGCACGCAACGTGGCAGCATAATCTTCCGGCAACTGAGGTAACAGCCAGTCAGCCGCCGCATCCTTAGAGGTAAATCTCCCGGTAGAAAGGGTGTACCAGATACGCGCCAGGGTTAAAACGATATGATACTCATCTCCCTGCATATCTGCCGTGGATTGCCAAAGGTCGAGGGGATAACGCAAGGCCTTCAGCAACTGCGCCGCAGGGGCTGGCGTGAACAGCCGTTCCGCGCGTTCGCCCTTTAGCGGTATACTGGTTTCCAGAATTTGGGTTATCAGTAACACCATGTCCCAGTCCTGTTGCGCTGGTTCATAAATCCCCTGGCAAATGTCCTCTCTTAGCCACTCGCCAAATTGCATTTCCCGGGCAGGTGGAAAACACCAGGGAACCAGCTGCGAATAAAGCACGACAGTGACCTCCAGAGCGCGTTTTTCTGCCGACGCCCCCGGCGGCGATGA [...]
+GGATGGTATGTGGCAATCCGTCTATCCTTATCTGGTCAGCGGCGAGCTGGACCCTGTCTTCAGGCAAAAGGCGAAGAAAGACCCGGAGAAAACGTTTGAGGATATTAAAGCGTATTATCGCAAAGGATACGCGACGAATGTTGAGACGATCGGTATTGAAAATGGCGTTATAGAATTCCATCGCGACAATAACGTTGCATCCTGTAAATACAATTATGCCGGCTATAAAATTCTGACTTACGCATCGGGTAAAAAAGGGGTGCGCTACCTGTTCGAATGTAAAGATGCGAATAGCAAAGCGCCTAAATATGTTCAGTTTAGCGATCATATCATTGCCCCGCGCAAATCGGCGCACTTCCATATCTTTATGGGAAATACCTCGCAGCGGGCATTGTTGCAAGAGATGGAAAACTGGCCTACCTATTATCCTTATCAGTTAAAGGCGAATGAGGTCGTTGACGAAATGCTACATCATTAAGTCTGATTGCAATG [...]
+NODE	929	46	3765	3719	0	0
+ATTTAGGGTCGGCATCAAAAGCAATATCAGCACCAACAGAAACAAC
+TGCCTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC
+NODE	930	4345	277416	273584	0	0
+ATTTGACGCAATGCGCAATAAAAGGGCATCATTTGATGCCCTTTTTGCACGCTTTCACACCAGAACCTGGCTCATCAGTGATTTTATTTGTCATAATCATTGCTGAGACAGGCTCTGTAGAGGGCGTATAATCCGAAAGGCGAATAAGCGTTTCGATTTGGATTGCCTCGCGATTGCGGGGTGAAAATGTTTGTAGAATACTTCTGACAGGTTGGTTTATGAGTGCGAATACCGAAGCTCAAGGGAGCGGGCGCGGCCTGGAAGCGATGAAGTGGATAGTTGTTGCCATATTGCTGATCGTCGCAATCGTCGGCAACTACCTCTATCGCGACATGATGCTGCCGCTGCGTGCGCTGGCCGTAGTAATTCTGATTGCTGCAGCGGGTGGTGTCGCGCTGTTGACGACAAAAGGTAAAGCAACCGTTGCTTTTGCCCGTGAAGCGAGAACCGAAGTCCGTAAGGTCATTTGGCCGACTCGCCAGGAAACGCTGC [...]
+GTAGCTCTGAATCGGGAACACGGAACGGAAGGCTGCTTCCAGGCCGTACTGCCCTTCAGGATCTTGCTCGATAAACTTCTGAAACGAGTCAAGCTGGATAGAAAGGAGATAAGGTACATCCAGAACTTGTGGACGTTTACCAAAATCCTTACGAATACGTTTTTTCTCGGTATAGGAGTAAACCATAGGGTTCCTCAGCTCGCTGACAAGTCGACCCATCTGTCCTGCGGGGGACAGTTTGTGCAACACTATTTTGTTGACCGGAAAATGGATACTTTCCGCAATGCCTGTTGCTATCACGCTTAAACCATTTCATTGCGATTTACACAGAACGTACGCTCTGTCGCAGTATATTAAGTCGTCGATAGAAACAAGCATTGAAAGGCACAGCAGTAGTCAAACAGTGTGAAACGCTACTGGCGCCTTACAGCGCAAAAAGGCTGGTGACTAAAAAGTCACCAGCCATCAGCCTGATTTCTCAGGCTGCAACCG [...]
+NODE	931	4158	201738	196804	0	0
+ATTGCTGCCTGACCACTTGGGGGGCAACGGGGCGCTACTATAGGGAGTTGCGCTAAAACGGTCAAGCAGAATTTACATATTCACTGTCGTTTGCTCATGCAATAGACATAATCCCCGCCCAAACTGGCGCGGGGAGGCAAATTAACGCTGTGAATCCAACATTTCGTTGTTTTTCACCACATCCTGCGCTTTGCTGTAGCTTTCGATCAGCAGTTGATAGGCCGGGAATACCTGAGTATAAACGTCGGCCCACGCGGCGGCGTCTTCACGGTTCCAGGTGCCTTGCAGCTCAGAGGCGACTGCGGCAGTATCCATCGGTACGACGCCAGCCTGTACGATACGCGCCAGGGTGATCTCCTGCGCCATCTTACTGTAGGTGCCGGATGCGTCGATCACGGCAAATACCTTATAGCCTTCCGCTACCGCGCTAATGGCCGGGAATGCCATGCACACGCTGGTAATCGTCCCGGCAATGATCAGCGTCTTACGACC [...]
+AGTTTAAACAACGTCTGTAAGCTATTATTGAACGATCCGACTTGCATACTGGAGTTTCGCCGTCATGCGTCTGGTTCAGCTTTCCCGACATTCTATCGCCTTCCCTTCGCCGGAAGGCGCTTTACGCGAGCCTAACGGTTTACTGGCGCTGGGCGGCGATCTCAGCCCTGCCCGGTTGTTAATGGCCTATCAGCACGGGATTTTCCCGTGGTTTTCGCCGGGCGACCCGATTCTGTGGTGGTCGCCCGATCCGCGCGCCGTGCTGTGGCCTGAAAAGTTTCACCTCAGTCGCAGCATGAGGCGCTTTCACAACGCATCCCCTTACCGCGTGACGCTCAATTACGCTTTCGACCGGGTCATTGATGGATGCGCCAATCACCGTGACGAAGGCACCTGGATAACGCGTGGTATTGAGGAAGCCTATCGCCGATTACATGAATTGGGCCACGCGCACTCCATTGAAGTGTGGCGCGATCGGGAACTGGTCGGCGG [...]
+NODE	932	786	37004	36146	0	0
+TATGCCCGCACGCGGCGTACAATCGGCGTGCTGTAGCGCTGATAAATGATCATCACGGTCAATACCGCCGGAAAAATCAAAATCGCCACCAGCGCCATCCGCCAGTCAAGGCTGAACATGGCGACCAGCATGGCGCCGATCAACGCCGCGCTACGTAATACCGTTGCGACGACCGTGACGTACAGATCGCGGATGACTTCCGTATCGTTGGTCACACGTGAAATTAATTGTCCGACAGGCTGCGTGTCGAAAGCGCTTAGCGGCTGGCGCAAGGCGGCATCCATGACGTCCGTGCGCAAGGACTGAACCACGCCAACGGCCGCCCGGTTAAATAATAAAGACTGGGCGTAATGGAGACCCGCCGCCAGAAACTGTAGCCCCACATAGGCGGCCGCCAGCCCCGCGACCTTGCCCAACGGTAAATGGTGGCGGGCCACCATGTTATCAATGAAATAGCTGATCAGCAGCGGACCGCTAACCTCCGCCGCCGCC [...]
+TATGCAACATGGTCATGTTGTTCAGCGCGGCGATCACGATCAACTGGCGCAGCAGATTGGCTGGTATCGCGATATGTATCGCTATCAGCAACTGGAGGCCGCTCTGGATGACGCGCCGGAACGCGGCGAGGAGGCGGTGAATGCGTAGTTTTGGACAGCTATGGCCGACGCTGAAACGGTTGCTGGCGTATGGCTCGCCATGGCGAAAACCGCTCTCTGTCGCGGTGATGATGCTGTGGATTGCGGCGGCGGCGGAGGTTAGCGGTCCGCTGCTGATCAGCTATTTCATTGATAACATGGTGGCCCGCCACCATTTACCGTTGGGCAAGGTCGCGGGGCTGGCGGCCGCCTATGTGGGGCTACAGTTTCTGGCGGCGGGTCTCCATTACGCCCAGTCTTTATTATTTAACCGGGCGGCCGTTGGCGTGGTTCAGTCCTTGCGCACGGACGTCATGGATGCCGCCTTGCGCCAGCCGCTAAGCGCTTTCGACA [...]
+NODE	933	16108	1002467	993205	0	0
+AAACGCCGTCAACGAGATAGCGCAACCGATAGCCAGCGGCAGATTCGCCCAAAGCCCCATAACGATAGAGCCGACGCCTGCGACCAGGCAGGTCGCTACAAAGACGGCAGCAGGCGGGAACCCGGCTTTACCCAGCATCCCTGGCACCACGATGACGGAGTAAACCATCGCAAGAAACGTGGTTAAGCCAGCAACGACTTCCTGGCGAACGGTGCTCCCGCGTTGTGAAATTTTAAACCAGGCGTCGAGTGAACCGCCGGTACGCGCTGAAGGCGTAGACATAGAAAACATCCCCTGAGAATTTATTATTCGTCGGTATACGTGGGAGGTAATCCACTAACAGCGCAACGTTATCTCCTTGTGCTACATTTACGACAGCCGGGGCGCCGCAAAAAAGCAAACGTTTAGCTCCACATATACAAAACGGGTGGCAAAAAAAAGCAAACGATTATCCAGCGATCATAAACGCTTTTTCAACTGAACTTTGCCGCT [...]
+TAACGGTATTCCCGGCGACAACCTGACCAATGACGTTCGTCCACACTTCCGCGTCACGGTGCCAGGGGATGTCAACGAGGTACGTCTGAGTATCGACGGCGGTAATACGTGGGTTCGTGCAACACAGGGCACGGCAGGGATCTGGGATTACACCTGGCCGAAAGATGTGACCGACGGGCTACATACCCTGACGGTAGAAGCGACCGATAAGGCGGGAAATAAGACGACGCAGACGCTCGATTTTACCATTGATACCCGGCTGTCAACGCCTACCATCACTATGGATAGCAGGGACGATACAGGCGCCATTGGCGATCATATTACGAGCGTCAAAACACCGGGCTTTACCATTGGCAATATTGACGCCGATGCGCACTCGGTCATTTTGCGGATCACGCAGGGCAGCAATAGCCAGGAAGTGAAACTGACCCAGGTCGGCGGTCAGTGGCGCTTTACGCCAGATACTGACTGGGCGGACGGTAGCTATACGCT [...]
+NODE	934	304	33738	33413	0	0
+ACAGCGGAACAAAAGGCGATAATCTGACCAATGTGAATAAGCCGACGTTTATACTGGGCAATATTGACGCGGACGCACGGTATGTCACGGTTGAGGTACAGCATGGCGGCACGAAAGAGGTGCTGACGGCCACCAAAGGCGCGACCGGCATCTGGAGCGTGACACCGACCGGCACATGGGCAGATGGCAGTCATACGCTGACGGTGAGGGTGGAGGATGATGCGGGTAACGTAAAATACTCATCGCCGCTGACGGTTACGGTCGATACCCATATTGCCATTGATGATATTGAACTGGTTAATGA
+CGTCAGCGGCGATGAGTATTTTACGTTACCCGCATCATCCTCCACCCTCACCGTCAGCGTATGACTGCCATCTGCCCATGTGCCGGTCGGTGTCACGCTCCAGATGCCGGTCGCGCCTTTGGTGGCCGTCAGCACCTCTTTCGTGCCGCCATGCTGTACCTCAACCGTGACATACCGTGCGTCCGCGTCAATATTGCCCAGTATAAACGTCGGCTTATTCACATTGGTCAGATTATCGCCTTTTGTTCCGCTGTCGTCCGTGCTGTCCAGAGCGATAGTCGGCTCTGACAGTAGGGTGTCGATG
+NODE	935	4	1076	230	0	0
+ACTG
+AAGC
+NODE	936	24	4475	1535	0	0
+CAAATCTGCCGGGAGCAGATTTGA
+TATGCTCCTGGGGACTCACTCCCT
+NODE	937	14	2691	2222	0	0
+GCGACGGCCCGTCA
+CTCACCCCAGTCAC
+NODE	938	13	2175	2117	0	0
+GGGCGAGGCCCAT
+GGCAGATTTGTCG
+NODE	939	2361	125992	125375	0	0
+GGTTTCAGTGGCTTCTATTTGCTCCAGGCGCGTAAACTCAGCGGCAATTTCCGCCTCCGATTTACCCGCCATAAAATGCCGCAACGAGGTGATCGCCTGTTTGCCATGAATAAAGCCCAGCACCTCATCATGAGCAAGGTTAAAACGATCGGCCCAGCTACACCACGCGCGTTCGACGGCAGGTAATGAGTCAACCAACGTTCCATCCAGATCAAACAGAAAACCTTTACACTGCACGCGAGCCTCCTCAGGCATTAATGATTTGATTGATTTCATTCGCGCTCAGGTGGTACTGACGCGGGCAGGCATGCCAGACATTCAACATCCGCTGGTATTTTTCCCACATCGGCGTCTGGGCATTAAAGCCGTGCGTCCCGGCGTCAAAGTGAGTGTAGCGTCCTTCTATATTCACCATAAAACGGACATAGCCGAGGTAACGCGCTTCCGTCGCAGCGTCAAACCCCAGGAAGGTGACGCGACGTTCGTCGATGG [...]
+CCCATAGAGGTATCCACGCATTTACCGTTACGGATAGCGGAAACAGAACCGCCGTTGCCCAGGTGGCAGGTGATAATGTTCAGTTCTTCTACCGGCTTGTTCAGCATTTTTGCCGCTTCCTGAGTTACATAGAAGTGGCTGGTGCCGTGTGCGCCATAGCGACGAACGCCGTGTTCTTTATACAGGCTGTACGGCAGGGCATACAGGTAAGATTCTTCCGGCATGGTCTGATGGAAGGCGGTGTCGAATACTGCAACGTTTTTATCTTTCAGCTGCGGGAAAGATTTCAGCGCTTCGGCGATACCAATCAGGTGAGCCGGGTTATGCAGCGGTGCGAAAGAAGCGGAATCTTTGATGCCCTGAATGACGGACTCATCAATGACTACGGAGCTGGTATACTTCTCGCCGCCGTGTACGATACGGTGACCAATTGCAGTTAACTGCGCAGACAGTTCTGGTTTTTGTGCCAGAATAGTGTTAACGATAAAGTTC [...]
+NODE	940	5	252	247	0	0
+TCAGA
+ACCCT
+NODE	941	155	7976	7976	0	0
+GATTAAGGCGTTATCTTGACATGAAAAATGTTCAGCGACCTGCAGCTCCACAAATAGCATGGCGTGTAGTAACGCGCGAATATCTTTGTCCTGAAGGACAAGCTGCGCCATACCCCGATCGATATTTACGATACAGAACAGGCCGTGGCGTAGAA
+CAGCTTGTCCTTCAGGACAAAGATATTCGCGCGTTACTACACGCCATGCTATTTGTGGAGCTGCAGGTCGCTGAACATTTTTCATGTCAAGATAACGCCTTAATCGATCCTTTAATACACGCGCTTCATAAGCAACCTAATCCATTATGGCTGGG
+NODE	942	945	66282	65494	0	0
+CTTATCTGATGTAAAGGAGAAAATCATGGCTACTATTGGGTATATTCGGGTGTCAACAATTGACCAAAATATCGATTTACAGCGTAATGCGCTTACTTGTGCAAATTGTGACCGCATTTTTGAGGACCGTATCAGTGGCAAGATTGCAAACCGCCCCGGCCTGAAACGAGCGTTAAAGTATGTAAATAAAGGCGATACTCTTGTCGTCTGGAAATTAGACAGACTGGGCCGCAGCGTGAAAAACCTGGTGGCGTTAATATCAGAATTACATGAACGTGGAGCTCACTTCCATTCTTTAACCGATAGTATTGATACCAGTAGCGCGATGGGGAGATTCTTTTTTCATGTAATGTCAGCACTGGCCGAGATGGAGCGAGAATTAATTGTCGAGCGAACCCTTGCCGGACTGGCTGCCGCCAGAGCGCAAGGACGACTGGGAGGGCGCCCTCGGGCGATCAATAGACATGAACAGGAACAGATTAGCCGGCTATT [...]
+TATCGACACTTGAGGCATAAACTTTACTATTTTTTCTGTCCGTAATTGCTTACATCTAACATTTTGATTAAAAAGCCTTTCCAGGTGAATACTGTGTCTGGTAGTGTTTTGAGCGATGTCGTCTATAGCTGGATGTAACATAGGCCTTATCGTGAGCGCGCTACACTATATATGTTAATGCGTTGAATTTTGTCTCTTTTTAATTAGATGCTGTCTTTTTCGTGTACCCTTCCGGTTTATTTATGCCATACGCCTGCATTACAAAAATGTTATATCCATCCTGTTGTAATTTTTATTTTAATTCATTCGTTTTTTTATACGGCTTGCCGGAAAATATCTGTATAAGGTAGATACGCCAATACCAAAAATAATAGCTAGTTGCTGCCGAGGATGGCCTTTCTCTAATAGCCGGCTAATCTGTTCCTGTTCATGTCTATTGATCGCCCGAGGGCGCCCTCCCAGTCGTCCTTGCGCTCTGGCGGCAGCCAGTCC [...]
+NODE	943	47	8222	5333	0	0
+AGGCGTGACGACGAGGCACTACGGTGCTGAAGCAACAAATGCCCTGC
+TGTTAAAGTGAACCGGATTTACCTGGAACACACACCTACACGCTTAA
+NODE	944	3913	200620	198608	0	0
+CGGCGCGCCGAAGTACGGTAACGACGATGACAGTGTCGATACCCTGCTGGCGCGCGCTTATCAGACCTATATTGATGAGCTGAAGCAATACCATAACCCGCGCTACGGTCGTGGCCCTGTCGGCGGCAACTATTACGCCGGTACGTCCTCTATCTCAGCAAACGTGCCATTTGGCGCCGCGACTATGGCAACCCCGGATGGCCGCAAAGCGCATACGCCGCTGGCGGAAGGCGCAAGCCCTGCATCAGGTACGGATCATCTCGGCCCGACGGCGGTGATTGGTTCCGTAGGCAAATTACCTACCGGTTCCATTCTCGGCGGCGTGCTGCTCAACCAGAAACTGAACCCAACGACGCTGGAAAACGAATCCGACAAACAGAAACTGATGGTTCTGCTACGGACGTTCTTTGAGGTGCATAAAGGCTGGCATATTCAGTACAACATCGTGTCACGCGAAACGCTGCTGGATGCGAAAAAACATCCGGACCAGTA [...]
+AGATTGATAAAATCAAGCTGGAAGAGGTGAAAGCCTCCAGCCGTCAGAACCCGTTCATCCGTTTTGAGCAGGATAAAAAACTGTTCCGTAACGCTCTGGAAGTGGAGGCGCTGACGAAAGGTTTTGATAACGGTCCGCTGTTTAAAAATGTCAATTTGCTGCTCGAAGTCGGCGAGAAGCTGGCGGTACTCGGCACCAATGGCGTGGGTAAATCTACGCTGCTGAAGACGCTGGTTGGCGATCTGGACGCCGATCACGGCACCGTTAAATGGTCGGAAAACGCGCGTATTGGTTACTACGCGCAAGACCACGAATATGAATTCGAAAATGACCTGACGGTGTTTGAATGGATGAGTCAGTGGAAGCAGGAAGGCGACGACGAGCAGGCAGTGCGCAGTATTCTGGGCCGCCTGTTATTTAGCCAGGATGATATCAAAAAGCCTGCGAAAGTCCTCTCCGGTGGCGAGAAGGGCCGTATGCTGTTCGGCAAAC [...]
+NODE	945	1	91	91	0	0
+G
+C
+NODE	946	2912	172960	170488	0	0
+TAAAATGGGTAATTTATATCAGCAACGGCTTAATTCTCCCGCCTGCCAGGCAAAACAATGCCACTGTTTTCTCGCTTATCAGCACCGTCTCGATATTCCATTGCTGAATCACCTGGATACCTCACGCTGTTTTAGGATCGGGCGCTCATGCGATATCGTTTAATCGCTTTTGATCTTGATGGAACGCTGCTAAACCGTAATAAACAAATTCTGCCAGAGTCGCTAACCGCTATCCGTCAGATGCAGGACATGGGCTGCCGAATAATGCTTGTCACCGGTCGCTCTCATCGTGAAGCCTATGCGTATTATCAAACGCTGGCGCTCACCGAACCGATGATCTGTTGTAACGGAAGTTATATTTATCAACCGGCTCAACAGCAGGTCCTTCACCCGCTGCCGCTGACGCACTTACAAACGGAAAAAATACTGGCGCGGGTATATCCGCTTAAACCGACAATTCGTGCTGATGATAAAATAATCTTTCAGGCTGAT [...]
+GACTCTGCAATACTTGTTTGCGGAGGATGTTTGTGATCCTGTTTTGTAGTGCGATTAATCCGTGTACAATAACGCGCTATTTCTAATGCCTGAGGCAAAGTTGTGATCGAAAATTTGCGTAACATCGCCATCATCGCGCACGTTGACCATGGTAAAACTACCCTGGTTGATAAGCTGCTCCAGCAATCCGGTACGTTCGACGCGCGTGCCGAAACTCAAGAGCGAGTGATGGACTCCAACGATTTGGAGAAAGAGCGTGGTATTACTATCCTCGCTAAAAACACCGCTATTAAATGGAATGATTACCGTATCAACATCGTTGATACTCCCGGGCACGCTGACTTCGGTGGTGAAGTAGAGCGCGTCATGTCCATGGTTGACTCTGTGCTGCTGGTGGTTGACGCATTTGACGGCCCGATGCCGCAAACGCGCTTCGTGACCAAAAAAGCCTTTGCTCATGGCCTGAAACCTATTGTGGTTATCAACAAGGTT [...]
+NODE	947	51	3672	3672	0	0
+GCACCAATGTGGTGCTTAATGTTCACATTAAAGCACTATTTTGGTGCAACA
+CAATAGAACGCAAGCCACCCTTTTAACGCTCCGTGAAAGCGATCACAAAGA
+NODE	948	3547	172267	170858	0	0
+TTATGGCCGGGGCGAACTCGATTTTCTATGGCTGCAAATTGTTAACTACGCCAAATCCGGCAGAGGACAAGGATCTGCAGTTATTCCGTAAGCTGGGGCTGAATCCGCAGCAGACCAGGGTGCTGGCGGGCGATAACGAGCAGCAGCAACGTCTGGAGCAGACGCTGATGACGCCTGACACCGATGATTATTACAACGCGGCAGCCTTATGAGTTGGCAACAACGCGTCGACGATGCGCTGACGGCGCGTCGGGCGACGGATACGTTGCGCCGCCGCTATGTGGTGTCGCAGGGCGCCGGACGCTGGCTGGTAGCGAACGGGCGACAGTATCTTAACTTCTCCAGCAATGATTACCTCGGCTTAAGTCAACACCCGCAGATTATTCGCGCCTGGCAACAGGCAGCGACGCGTTTTGGCGTCGGCAGCGGCGGGTCGGGTCATATCAGCGGTTATTCCGTGGCGCACCAGGCGTTAGAGGAGGAACTGGCGCA [...]
+TATAGCGTCCGGCTGATCGCCAGAAGGTTTAAAAGCGGAATTCAGTTTGAACGGTTTACTCATGAGCGGCTACCTGAAGGAGTGAGCGGGCAGGGGTGTAATTTTACTCTCGACGGTGAATATTGCCAATAAAAAATACTGGATGAAAAAACAGTAACACTCCAGTGTATAATGGCTATCGGCAGATACCCCACGCTATTTAGAGGTAAAACATAGACAGTCGCGGGGTAAAATTCCAGCAGTGTGCTGGTTATCCCCAGACCAGAGTCTTTTTTAACATTTGTCAAGTCGAATGATGAAAGTTTTATGTCAACGTATCCCCCTTCCTTTACAACCATTGATTTTATATAACTTGCTGTCTGAAAAGGGATATTTTCTCAAGCCGTCTTTCGCGCCAATTTAGTCGCAGGCCGCGTCGCCTCTCGCTTACGTTGTGTTTTCTAACTCTAATACACAAGGTTATCCACAGGAATAGTGGATAACTGCTTCCAG [...]
+NODE	949	3995	208043	206307	0	0
+AATTATTCGCTACCGTGGGCAGATAAAGTCCTGGGGTTGTCGCTTCTTCCGGATGCGCTCCGCGCCAAAGTCCCGCCGTCTGCCAGGCGGCATACGCCAGTTGTATGACGACCCCCACGCTGAATAGCGCAACGGCCAACGGGCGATACCAGGGAACGAAACCGATCGCGACCAGCATCGTGGTGGCGGGAAACAGGCTGACAAAACTGCTCATTACCGGATGTCGCACTTCAGCCATCACGCTATGGGGAAAGCGCACCAGACGGCTAAGGAACGCCAGGGTCAAGAGTGCCCAAATAATCATCGCCAGGATCACCATGATGTCGCCGGGCCAGTGGCTTATTGCCCATATCTGGCTGGCATAACGCCAGGCGAATCCCATACCGATGGTGCCAAGGACGATGCCAAAATAGCCCGCAGGCAGATTGAGCACGCGATCGCTCTGCTTGTGATTACGCATTTTGTTTAATTTATAAAGTATATTTGAAATGC [...]
+CCGGCGCCGACGTCAAACACATGCAGCGTCAGGCCAAAACGCTCAATCATCACTTTGATCGGCGGACTGAGACTGTCGATCGCCATGACGATCACCAACCCCATGCCGACAAAACCGATGCCGACCGTCACCCCGGCTTTCACCGCCTGTAGCCAGGGAATACGAAAGATTAAGCCGATGATAATCATAATGATGGGCACAAAAACGGTGCCGCCGAGAGACAGGATGTAATCAAACATAATGCCCCCTTTATTGTGTTAACAGCGCCTTGATTTCTTGTTTTAATGCGTCGTCGTTGATGCCTGTCAGCAGGGCGGCGCCGTTGAGCGTCGGGATGCCATAGTCACTGTGCGTACGCATGGACGTTACGATGAGATCCATACCGTTACAGTTCAACGGGATCTCATTCAGACAACATTGCGCCGTGGTTGCCGCAATGCCTTGCTCCGCAAGAAAGTCCTGCAGTTTTTGTGCAATCATGGTTGATGTCGA [...]
+NODE	950	18315	1019449	1010778	0	0
+CAGGCCGACCAGCGTTCCGACCGAACGGTGCAGAATACGTACGCGCGTCGCGCCATAGCCGTTTTGGGTGACAAACAGCACCGTCATGAGGATCCAGTACGGTTTAGGCAGGTGCAACGCGCTGCCCATCAGACTGGCGATGCTCATCATCACGCTGATGCGTCCGGCGTTGCGTAGCGCCGGCGATTTTAGAGACATATAATTTTTCAGCGCCGGAAGTAGCGGCAGACGACGCTGTTTATCGGCCATCAGGTCGCGGGCGTACAGCGGCCGCTGAGTACGCAGCACACGGGCGATTCGACTGAAGTGCCAATAGCAGAACTGGCCTACCGGATTTTCAGGATGCTGATTAGCGATCTTCTCCAGAGCGCCAATCTGTTTTTCCATGGAGAAACGCGTCGGCAGACGATGATAAAGAATGTCATCCGCCAGCACGCGCAGACGGGCGGCGACCGTTTGCGCATTCCAGCGAATCACCTCTTCCGCATGGCT [...]
+AGCGTTATCGATCTGGTCGAATGCACGAGCAGCACCGCCGTAGGTTTTAGCCAGTACGGTGGTGATTGCAGCGGTCAGGGTAGTTTTACCGTGGTCAACGTGGCCGATGGTGCCGACGTTAACGTGCGGTTTTGTACGTTCAAATTTTTCTTTAGACACGGCTATATTCCTTACTATAGCGCTCTCCCCTTCAGGAGAGAGCACGGGATTTTGGTTTTTAACCCTGCGGCTTATTTACCACGGGCTTCGATTACGGCCTGAGCAACGTTGTTCGGCGCATCATCATACTTCAGGAATTCCATAGTGTACGATGCGCGACCTTTGGTCAGAGAACGCAGCTGAGTTGCATATCCGAACATTTCAGACAGCGGTACTTCAGCGTGGATCTTAACGCCTGTAACTTCAGATTCCTGACCTTTGAGCATACCACGACGGCGGCTAAGGTCGCCGATAACGTCACCGGTATTCTCTTCAGGTGTTTCTACTTCAACC [...]
+NODE	951	692	32579	30694	0	0
+GTGGGCATGTCACGTAAAACGATGGTTGGTCAGTTACTTAACGTGGGACCATCAGACCGTCTGAACGGCAGCCTTGCGTGCGCGGTAATTGCCGCGATGCAGGGCGCGCAGATCATTCGCGTCCATGACGTCAAAGAAACCGTAGAGGCGATGCGGGTGGTGGAAGCCACTCTGTCTGCAAAGGGAAACAAACGCTATGAGTAATCGTAAATATTTCGGTACCGATGGGATTCGCGGACGTGTAGGCAATGCCCCCATTACACCTGATTTCGTGCTTAAACTGGGTTGGGCTGCCGGAAAAGTGCTGGCGCGTCATGGCTCGCGTAAAATCATTATCGGTAAAGATACGCGTATTTCCGGCTATATGCTGGAGTCCGCGCTGGAGGCGGGCCTTGCCGCTGCGGGACTGTCGGCCTCGTTTACCGGACCTATGCCAACGCCAGCCGTCGCCTATCTGACGCGGACTTTCCGCGCGGAGGCGGGTATCGTTAT [...]
+CTCGCTTTCCCCAGCTCGGCGGAGTCTACGCAGGTGATCTCTTTTTCCATTTCGGCTTCGATGGCTTCTTCCACATCGTCAGGCAGTTTCGTACCGTCGATAGAGAAGAATTTAATGCCGTTATCATAGAACGGGTTATGCGAAGCCGAGATAACGATACCCGCCTCCGCGCGGAAAGTCCGCGTCAGATAGGCGACGGCTGGCGTTGGCATAGGTCCGGTAAACGAGGCCGACAGTCCCGCAGCGGCAAGGCCCGCCTCCAGCGCGGACTCCAGCATATAGCCGGAAATACGCGTATCTTTACCGATAATGATTTTACGCGAGCCATGACGCGCCAGCACTTTTCCGGCAGCCCAACCCAGTTTAAGCACGAAATCAGGTGTAATGGGGGCATTGCCTACACGTCCGCGAATCCCATCGGTACCGAAATATTTACGATTACTCATAGCGTTTGTTTCCCTTTGCAGACAGAGTGGCTTCCACCACCCGCAT [...]
+NODE	952	4637	267847	265714	0	0
+GGTCTGGATACGGCGGCAGGGATACGCGTGGAATCACAAAAGGCTCCACCGTATTTACTGTCTGCTCAAGCTGAATTTTCGCCGTAAGGGTAAACAACGGCTGCCGGTACGCAATCCCTCGCCACTGGTCACGCCGGAAGCGCTGAACCAGAGCTGGTCTGTGGGCGTCGTTTTCGCACGTTCAATGTTGTTGATGACTGTAATCGTGAAGCGTTGTCGATTGAAATCGATCTGAATCTGCCAGCTCTGCGAGTGGTCCGTGTACTCGACAGGATTACAGCAACCGCGGTTATCCGGCCATGCTGCGTATGGATAAGGGACCGGAATTTATCTCGCTGGCACTGGCTGAATGGGCAAAGAAACATGTAGTAAAGCTGGCGTTTATCCAGCCGGGTAAGCCGAAGAAAAACGTTTTCATCGAGCGTTTTAACCGGACATACCGTACAGAAATACTCAATTCTTATCTGTTCAGAACGCTGAATGAGGTGCAGG [...]
+CCGTAAGCCCCATTCCATGCCAAGTGCAATGCGCTGTTATTACCACCACCTGGCGGGGCATCGGCACGGTAACTCTGACGCACCTCCCAATCCAGTTGCTGACTGAATGCCTCTCCGTTGACCCCCACTTGTTGCGTCTGACCACCGTGTGATGGTGAAGTCATCTGCCAACTAGCACTTACATTATTCCCCGTCCAGCGGCTTAATGGCATACTGAACCACAGGCTGGTTATGTTCTCTTTACGGTGCGCGCCATTGCGCCACAGCGTTCTGTTTTGATTCCAGTTCAATGACAGCGAGCCCCCTCCGATAGAGGTTCCCCAACTCAGTCCGTAGCTGTCATCATGACCGGGGCGATTACGCCAGTCGGTACGGGAACCGGTTAAACTCAGATTGCCCAAATGCCTCCCCCATGACTGACTCAACATCAGGGTAGTACGCGAGCTCGGCTGCAAATTTTCCCGCCACGACCATAGACGGTTGCCATTATGT [...]
+NODE	953	9905	548632	543637	0	0
+AGGTTCCAGAGTTTCCAGCCATTAAATTTTGAGTTACCTGCGACACGTTCAGCACGGGCATATTCGACAACATCTGTTTGACCTCCAACCCATGAAAGTATACCTTTCATGAAAAGGTTACGTTCTGGTAATAGCTTGATATTTTCTACAATCTCGCGCGACATCAATCGAAAATCACCGACATTCTCTTCAATCTTTGGCGTACTGATTTTGTTATGCAGCCTGTAGAACCACTCAGCGCTTTTACGCTTCAGGTGGCCATCCGTTGAACGATCGATACGCTTAGCCAGCACCATTTCTGCACCAGCCTGCCATTTATTGATCAAATGTGGGATTACTTCGATGGGATCTTGTAAATCAACATCGATAGGGATCACCACATCTCCGGTCGCGTAATCCAATCCGGCAAAAAGTGCAGGTTCTTTACCAAAATTGCGGGTAAATGAGATCGGAACAACAAGAGGATCGGCAACAGCTAATGCGCTGATGATT [...]
+TTCTCTAAAGGAGATTAAAAGATTCCTGATGCCTGATACATCAAAATACGTCTGAACGATAACGAAGAGAGAATATTATCTCTCCCGGTAAATCAAGGAAAGCGTATATGGAAACATTATCTGTTGTACATACCGTGGCGAATAGACTACGTGAATTAAACCCTGATATGGATATACATATTTCATCAACCGATGCGAAAGTATATATCCCAACAGGACAGCAGGTAACGGTATTAATTCACTACTGCGGTTCGGTTTTTGCCGAACCAGAAAATACGGATGCCACGGTACAAAAACAACTAATCCGGATTTCCGCCACCGTTATTGTTCCGCAAATAAGTGACGCGATAAACGCGCTGGATCGTCTACGTCGCTCGTTGGGGGGCATTGAACTTCCCGACTGCGATCGTCCGCTCTGGCTGGAAAGCGAAAAATATATCGGCGACGCCGCAAACTTCTGCCGTTACGCCCTGAATATGACCGCCAGCACCC [...]
+NODE	954	1504	82416	81563	0	0
+CCTTTTCGAAACCGGCGTCAAAGGCGGCATCGATGCCCGCCATCACCTGGCGGAATTTGTCCTGACCGGTAATCGCATGGAACTGACGCGCATCCAGACTATCCACGCTAACATTGACGCCCGTCAGCCCCGCTTCGCGCCAGTTCGCGGCATCGCGCGCCAGTCGATAACCGTTAGTGGTCACCGCGATCTGGCGAATAGCATCATTTTCACCCACGGCGGCAATGATGTCGGTAAAATCGCGGCGTAATGAAGGCTCGCCGCCGGTAAGACGCACCTTCTCCGTGCCAAGACTGGCAAAAGCGCGCGTAACGCGACGAATTTCATCAACGGTAAGGAAACCGTTGTTAGTGACGCCGCCAGGTTTGTAGCCATCCGGCAGGCAGTAGGTGCAACGAAAGTTACACACATCGGTAATCGACAAACGCAAGTAGTAAAACTTACGCGCGAAAGCATCGGTAAGTTGTGAAGCCATGTACACCTTTCCAAATA [...]
+TATAAAAACTGCCAGGGCCAATCAGAATCAGATCCGCGTCATTAATGGCCTGTACCGCTTCCCGCGTCGCCGGAACGTTTGGCGTTAACATGATCTCCTGCGGCGGAGTCGCTAACTGATCGATATTCACCTCGCCATAAATCTCATGCCCCTGATCGTCAATCGCCATCAGATCTACCGGTAGCTCCGACATCGGGATCAGCTGCGCGTCCACTTTAAGCAGATTACGAATTAAATTAATCGCTTCCAGAGGCCGCACGCTCAGATGATCTAACGCCTTTAACATCAAATTTCCGAGGTTATGACCAGAAAGTTCGCCATTACCGCCAAAACGGTACTCAAACATAGCGGATGCGACGCTGGGTTCGGTAATTAACTGATTCAGACAGTTGCGCATATCGCCCCAGGCGATCCCGCCTTCCGAGCGGCGAATACGGCCAGTTGACCCCCCGTTATCTGTGGTAGTCACAATGCCGGTCAGGCGCGAACCTA [...]
+NODE	955	35	14642	4815	0	0
+TGGAGCTGAAGTCAGTCGAAGATACCAGCTGGCTG
+ACCTACGTGTCAGCGTGCCTTCTCCCGAAGTTACG
+NODE	956	15	7390	2579	0	0
+CAAGAATCCGTATCT
+GAGTGAACACGTAAT
+NODE	957	18	8361	2864	0	0
+ACAGATTGTCTGATAAAT
+CTCGGACGAAAAATGAAT
+NODE	958	156	31715	27815	0	0
+CGGGGTTCAGACCAGAACCTCACGGAGAAAAGCGAAAATAAACGCTTGACTCTGAAGCGGGAAAGCGTAATATGCACACCCCGCGCCGCTGAGAAAAAGCGAAGCGGCACTGCTCTTTAACAATTTATCAGACAATCTGTGTGGGCACTCGAAGAT
+CGCTTCGCTTTTTCTCAGCGGCGCGGGGTGTGCATATTACGCTTTCCCGCTTCAGAGTCAAGCGTTTATTTTCGCTTTTCTCCGTGAGGTTCTGGTCTGAACCCCGCTGACCCGGCGGCCTGTGTGCCGTTGTTCCGTGTCAGTGGTGGCGCATTA
+NODE	959	3	1184	1180	0	0
+ACG
+TGC
+NODE	960	3332	156047	152096	0	0
+GACAACGAGGACTTTATGTTCCTCAACCTCGGCCCGAACCACCCATCTGCGCACGGTGCGTTCCGTATTATCCTGCAACTTGACGGCGAAGAAATCGTCGACTGCGTGCCGGATATCGGCTATCACCATCGCGGCGCCGAAAAAATGGGCGAGCGCCAGTCCTGGCATAGCTACATTCCCTATACCGACCGTATCGAATACCTCGGTGGTTGCGTCAATGAAATGCCGTACGTGCTGGCGGTAGAAAAGTTGGCAGGGATCACCGTCCCGGATCGTGTGAACGTCATCCGCGTGATGCTCTCTGAACTGTTCCGCATTAACAGTCATCTGCTGTACATCTCGACCTTTATTCAGGACGTCGGCGCGATGACGCCGGTCTTCTTTGCCTTTACCGACCGGCAGAAAATTTATGACCTGGTGGAAGCCATTACCGGTTTCCGTATGCACCCGGCCTGGTTCCGTATCGGTGGCGTCGCGCACGACTTGCCGCGC [...]
+TCGTCAATAGAGATAAAGGTACCGTCGGTGGCTGGCGTCATACAGGACATCACCAGGCGACCACGCGTATCTTCCGCGTTTTGGTATTGCTTCACCGCACACTGGCGGCAAGCACCGACGCTTCCCAGCGCCGGGTGCCAGCAAAAATACGGAATATCAAGGCCGAGGGACAGACATGCCTTTAGCAGGTTGTCCGCGCCGTTGACCTCGTATTCTTTGCCGTCTACATGAATCGTAGCCATTAGCATGCTTCCAAATTAAAAATCGTTAACTCACCAGCGCTCTTTGAGCAGGTTCGGCTGAATACCATTGATTAAATGGGTATTGCTGAACGGCTGCTTGATGCCAGCTTCGAATTCTTCGCGGAAATACTTAATTGCGCTTTGCAGTGGCTCAACCGCGCCCGGCGCATGCGCGCAGAAGGTTTTACCCGGTCCGAGGAAACGACACAGTTGCTCAAGTGTCTCGATATCCCCCGGCTGGCCTTCGCCA [...]
+NODE	961	5005	270151	266166	0	0
+TGGTCAGTCAGGATGCCCAAAGCAGAGAGATTCAGATGAGATTCACGGCGAATGAGACGCTTAAGCGTATTCAGGCTGACCCGGACAGGCTGACTCAGGTGCTGTTGAATCTGTACCTGAACGCTATACATGCGATTGGCCGCCAGGGAACGATTACCGTAGAGGCAAAAGAAAGTGGGACCGACCGCGTTATCATCACTGTTACCGATAGCGGGAAAGGGATCGCCCCGGATCAGCTGGAGGCGATTTTTACGCCTTATTTTACGACCAAAGCTGACGGGACAGGCCTGGGGCTGGCGGTGGTGCAAAATATCATCGAACAGCATGGCGGTGCGATTAAGGTGAAAAGTATTGAGGGTAAAGGCGCGGTCTTTACTATCTGGTTGCCAGTGATAGCGAGACAACAGGATTAACAAGGGTGATACGCGGAAAAATCGATATTCTGGTTGTGGATGATGATGTAAGCCACTGCACGATTTTACAGGCGCTGCT [...]
+TCTCTGCTGACCGCAATAGAAAAATTGCAGAAAAATGACTGTTTGCTGCATTCCCCAGCAAAACCCCTGGTTATACCAATTTACGCACAGACTTATCCACAAAATATGCGTTCATTTCCTGGATCTTCTCACTCTGCAAACGATCTTTCAGGGATAAAAGCCGGGCCAGAATTTAAAAAGAAAAATTCGCGAGCGTTGCGCAAACGTTTTCGTTACAATGTCGCCGCAAAATGAGAATGCCCCATAAGGGGCGTTAGCTGAGTTTTTCACGAAAAATTCAGCTAACGCTCTCTGTAATCGTCAAATCCAGGGGATTTACCATGCAACAACGTCGTCCAGTCCGCCGCGCTCTGCTCAGTGTTTCTGACAAAGCCGGTATCATCGAATTCGCCCAGGCACTTTCCGCACGCGGTGTGGAGCTGCTGTCTACGGGGGGCACCGCCCGCCTGTTAGCAGAAAAAGGCCTGCCGGTGACCGAAGTTTCCGATTACA [...]
+NODE	962	1442	72810	72353	0	0
+GGCGCGAACAGATTTTCCGGCAGATAGCCTTTCCACAAGCTGTGCATGGAGTTATCCGGATCGCACACCGACATCGCGCCGAACGTGTCGCCATGATAACCGTGGCGAAACGTCAGAAAACGCTGACGCGATTCGCCCCGCGCCTGCCAGTATTGCAGCGCCATCTTCATGGCCACTTCCACCGACACCGAACCGGAGTCGGCCAGAAAGACACACTCCAGCGGCTCAGGCGTTATCGCGACCAGCTTACGGCACAGATTCACCGCAGGTTGATGGGTTATGCCGCCGAACATGACATGCGACATGGCGTCAATTTGCGCTTTCATCGCCGCATTCAATTGCGGGTGGTTATAACCATGAATGGCCGCCCACCAGGAGGACATCCCCTCAATCAGGCGTTCGCCCGAGGCGAGAACCAGCTCGCAGCCTTCGGCCCGCTCAACGGGATATACCGGCAGCGGCGAGGTCATGGAAGTGTAAGGATGCCAAATA [...]
+CGCACGTATGAGGTCGGCATCATGATGCGCGCCACGGCGATAGTACGAATAAAATCAAACGCATCCACGTCATCGTTATCCGCAAGCGGTGTGCCTTTCACCTTCACCAGCATGTTGATTGGCACGCTTTCCGGCGGCGTCGGCAGGTTCGCCAACTGCAACAACAGTCCGGCGCGATCGGTAACCGTTTCGCCCAGACCCACAATGCCGCCGGAGCACACTTTAATCCCTGCTTCACGGACTTTTTCCAGCGTGTCGAGGCGCTCCTGATAGGTACGAGTAGTGATGATATTGCCGTAAAACTCCGGCGAGGTATCGAGGTTGTGGTTGTAGTAATCCAGCCCGGCGTTAGCCAGACGCTGCGCCTGGCTCTCGTTCAACATGCCGAGCGTCATACAGGTTTCCAGCCCCATCGCTTTGACGCCCTGTACAATCTGCTCCAGATAAGGCATATCGCGTTCATGCGGATTCTTCCAGGCCGCTCCCATACAG [...]
+NODE	963	5695	299430	297783	0	0
+CCGGAATATAACGTGGCGGTAGACCGTTACGGCGACTGGGCAGTGATTCAGGAATATGCGCCGCCGAAAACGGTGGATGCGCAAAAAGCGCGGCAGCGTCTGTTCGATATTATTGCGGCAACCTTGTCAGTGCTCGGTATTCCGCCGAATAAACTGGTGTTAAAAACCCGTGAACGGCAAAAAGGAAAAAACCAGTATCAGAAAATGAGCGAGAAGGGCGAGTTCCTTGAGGTCAGCGAATATAATGCGCGCTTATGGGTAAATCTGACGGATTATCTCGACACCGGTCTGTTCCTCGATCACCGTATTGCCCGCAGAATGCTGGGAGAAATGAGCAAAGGCAAAGATTTCCTGAATCTCTTTTCTTATACCGGCAGCGCCAGCGTACATGCGGGTCTGGGCGGCGCGCGCAGCACCACAACGGTGGATATGTCCCGTACCTATCTGGAGTGGGCCGAACGTAATTTGCGTCTGAACGGACTGAGCGGCCGC [...]
+TCAGGATCTTTTTTATCCTTCGCTTCAAATACCAGCGCGTTGCTCTTCTCGTTCAGAGTTTTCAACACCGGTTGTAACTCACGAAGCACCTGATCGAGACGCTGCATATCCGCCACCATTTTGTTATACGCCGCCGATCCAGGCTGGAAGCCTTGCATACTGCGGTTAAGTTCGCGTAACGTCGTTTGCATATCTGCCGGAAGCTGCTGCATCGACTGACTGGAGGTAATCTTGTTCATATTATCCAGCGTGGTTTGCAGCCGACGCATAGTACGCTGGCTTTCAGACAGCGTATTGGTCGCTTGTTCTATCATCGGATTCAACGGCAGGTTGTTGATCTTATCCAACGTTTCCACCAGTCGCTGTTGAATTTGCGCCAGGCCGCTGCTGACGGTGGGAATAATTTCATAACCATCAAATTCGCGTAGCCCGGTAATCGGCGGTTCCTTAGGATAAAAGTCCAGATCGACATACAGCGCTCCGGTCACCAGA [...]
+NODE	964	3040	161937	160711	0	0
+AGGTCGCTGGCGTAAAAGCGGTTGAAACCGGCTGGTTTAGCCGTGACACCTTACCGGAAGAGCTGAACTTCAAACCGGTAGCCGATGCTATCTTTAATGGCGGTCTGGTAGGCGAAAACGGTACGCCGGGGCCGAATTCAGATATTATCACCGTAGATGGCGACCGGGCTTTTGTTGTGCGCGTGAGCGAACATAAACCTGAAGCCGTGAAGCCGTTGGCAGAAGTGAAAGAACAGGTCACTGCCCTGGTGAAGCATAACAAAGCGGAACAACAGGCGAAGCTGGATGCGGAAAAACTGCTGGTCGAGCTGAAAGCGGGTAAAGGCGCGGAAGCGATGAAAGCGGCGGGTCTGAGTTTTGGCGAGCCTAAAACGTTAAGTCGTACCAGTCAGGATCCGGTGAGTCAGGCGGCCTTTGCGTTAAGCCTTCCGACGAAAGATAAGCCAGTTTATGGCGTGGCGAACGATATGCAGGGTAACGTCGTTCTGCTGG [...]
+ATACGATGGCGGAACAGCTTCGACATTACCTGGCGACGCTCGGCTGTGAGTTAACGTTGATTTTTCATAATGCCAAAAACTGGGATAACTGCCCTGCGTTGGCGCAAGCGGATCTGATGATGGGCGACAGGCTGATCGGCGAAGCGCCGGAATATACGCTGGAGCAGTGGCTACGTTGCGATCAGATCTGGCCGCATGTCCTGGACGCGCCTGCGTTTTCCCATCTGCAGGCTACGCTTGACGCTCTGCAAATTCAGCCCAATGAAAAAGATCGCCGCGCCGCGCTACAACAAGTTTTTGCCAACCTGATGGATGACGCCACACTTACGCCGCTGTTTAATTATCACTATCGCATCAGCGCCCCACCGGGCGTTAACGGCGTTCGACTCACCCCTCGCGGCTGGTTTGAATTTAGCGAAGCCTGGCTTCCGCCGCCTTCGCCGTGAAGAAGCTGGTCGGGATTATCCGTACGCGTTACCATATTGGTTTTCG [...]
+NODE	965	30	12711	11445	0	0
+ACCGTGTACGCTTAGTCGCTTAACCTCACA
+GCGATGAAGGGCGTGCTAATCTGCGATAAG
+NODE	966	11507	639989	634408	0	0
+TTCTGCTGCAACGCATAGTAAGCATCCAGCGCTTTTTCTTGTTTCACTTTCGCGGCAATGTCGTCGCGAACCTCGCTTAACGGTTTCACTTTGGCAGGCTGAATATCATCCAGACGCGCCACCAGAAAACCGACAGACGACTTAATCACGCCAGATATCTGTCCTTTTTCTTTTAATCCGGCGTTTTTCAGTTCCGGCACCGTGGCAGACTCTTCCAGCCAGCCCATATCGCCGCCATTACGCGCAGAGATGATATCGGTAGATTTCTCTTTCGCCAGCGTGGCGAAATCTTCGCCCTTGTTCAGCGCATCCAGTACCGCTTTTGCATCATCTTCCGTTTTGGTCTGGATAATGCTGTAACGAATGCGCTCCGGCTGAGTAAACTGATCTACATGCTGGTCATAATAGGCCTGAATATCCGCATCGCTAACCGGTGCCTGCATCGTCGCGGCATCCAGCTTGATATAGCTTACGCGGAACTGTTCCGGCGTC [...]
+AATAAAACAATTACTTAACAATTTATTATCAATAAAAGGACAATCAACGGCAGAAATTTAAATTTAATCGGCTGAATCGTGTAAAGAAAATAGGTAGCGTAGAAATTACCAATAATTTCCAAAATTCTGTTGCGCACAAAAAGACAAATATATTTTTTATCAATTGATGGTTATTTAGCCGTTATAATTCCGGGTCGTTATTACAACGGCAAATAATGTTTTAGAGCAGGCGTGTTTTTCGTAGCGCCAGGTAGTCCAGCAACCCGCCAAAGACAATGCCGCACACGGCAACCACTACCGCGGTCTCAAGCAATCCGGGCAGGAATGAGAAGTTAGTGTAATCCACCGCGTTCATGGTCAGCAGGAGTACCCATACCGCCAGCAAAGCGACGCCCGCGAGCAGGATTGAAAGCGCGAAATTGTAGGCGCCACGGTATTGCGTGCGGGGAATGAAACGCTCGCTCTGCCAGCTATATTCCAGCGTTTGCCGAC [...]
+NODE	967	5467	303909	301314	0	0
+GGCGACATAGCCATCATTAAAAGTGGCTTCGATATAGGTAGCTTCCCAACCTGTCTTCGGTTCATTTAACGTAATACTGATCTTATTGTTGGCGGGAATATCTATTGTAAGCGGCTGATAGCGGATGCCACAGGCATAACGGAAATCACGCGCATTTGGATTGTTGGCTGTCCAGCGAACGACTTTTACCGGCGCTTCTGAGAAATAGACCGTAAGAAGATGGTGGTGAATAAGGCCGATCAACTGTGGTAATGTTTTTTTACTTTGAAACCTATTAATAAATGGAACGAGGCTTTCTTCAGCGAACTGGTTAATTGAGTAGTGGTTCATATTAGGCACTATACGTAATGATTTTACGCCAGGAAGTTTGCTATAATAAAAGCGAGTATTGTCTGGTACGAAAAAATCGTCGCCGCTTGCATTAATAATATATTTCGGTATTGCAAGGCGGGGTTGATAAATAGTGTTGAGATATCTTAGCGGATCTATTAT [...]
+AAATAGCAAATTAAGGCCTCATGATTTTCCACGACGGCCCGGTACTGGCTCTCCCCGCTAAACCTTTGCTCTATCTTAATGGAAATTTCAGGGTTATCAACCAAAGAGAAAACATCATTCGCGTTAAGCCTTTCTTTTAAAAGTCCGGAAATAATTACTCTATTATTTGGTAAAAATCCCTCTAAAACAATTTTAATTAACCTATTCTGTCTTGTTTTACAGATAAACATATGGTTTATTATAGTACTGTCGTTAAAACAGATTACATCACCTTCTTTGATATAATCTGTTACTTTACTAAAGTCTACCTTATGAATTTCCCCTTTACTCCGGTTGAGGACAAGCATTTTACACTTTTCCCTGTATAAATCATTGGCTATCCAATGAGGTCTGAGTGGGATAGTCATCTGATCGGTAATGCGAAAATCATATTTTTCGGTAAGCATATATTTACCCTTTGAAAAACCATTGATACGGCGATTGTTATATAGC [...]
+NODE	968	1195	63153	62070	0	0
+CGTGGACGCCAGCGTAGGATCGCTCACATTCATCAATATCTTGCTGAAAATATCTTCCAGTAGATTAGGGTGCGAGGCGAGGATAAAACCTGCCGCGGCAAAGGACACCATCATTATCGGGATCATCGACAGAAACGAAAAGTAGGTGATAGCCGCGCCAAACTGATTACCCAGTCGATCGTTAAAACGTTCGGTCGCGCGAATGAGGTGGGCCACCATTGGTTGACGCTGAATTTTTTGCATCAGGGAGGTGACGGAATGCAACGCCTGATTTGCCTTTTCGTTTTTTTCCGGGGCGTCATGCGGCTGCGTTTCTATTTTTTGTATCGGGTCGTGCTCCAGTTCCTGAATAGGGCGTTTTACGTCATTTTCCTGCGTCATCAGGTCGGTAGTCCTTCATCATTAATAGAATATGTCAGTATAGCTTCTCCCCGGTGGATGCTGAAAATGCGGCTACTCTGCGGCCTCTTTAATGGTTTCCGTCAGCCATAC [...]
+AAGATCTGTTGAGTAACCTGGATGAACTGGAGGGTCTTTTCCAACCTGATCCCGCCAGTATCAGCGGCAAAATACGGGTAGATATACCGCCATGTCTCGCAAACAGCCTTATCATGCCGCGCCTGCCCACTTTTTTGCATCAGTATCCCGGCATTGCGCTGGAACTTTGTAGTAGCGATCGACAGATCGATTTACTACGGGAAGATTTCGACTGCGTGGTGCGCACAGAGCCGCTACATGCGCCAGGGATACTGACGCGCCCGCTTGGCAAACTGAGGATGGTGAACTGCGCCAGCCCACAATACCTGGCGCGCTTTGGGTATCCGGAAAACCTTGACGACCTCGCCTCACATGCGGTGGTGCATTATTCATTGACGCCGGGAGTCTCTTCACCGGGTTTTGCCTTTGAAACTCCCCACGGTATGCAGTGGGTAAAAACCGGCGGAATGCTAACGGTAAACAGTACGGAGACCTGGCATACGGCCTGTCTGG [...]
+NODE	969	2087	111956	111219	0	0
+GTCAGATCAAACGGATGCGCGTGGGTCGCCTGCCACAAACGCAGCGGTTGCGCGACGCCGTTACGATAGCCTAACACCGGCAGATCCCAGGCCTGGCCTGTAATCACAAAACCGGGCTCCCAGCGCCCTTCTTTGGTGACTTTACCGCCGATCCCAACCTGGACGTCCAGCGCCTCGTTGTGGCGGAACCACGGATAGCTGCCGCGATGCCAGTCATCCGGCGCTTCCATCTGCTTGCCCTCAACAAATGACTGACGGAACAGCCCATACTGGTAGTTCAGACCATAGCCCGTAGCGGACTGCCCGACGGTGGCCATCGAATCGAGGAAGCAGGCGGCCAGACGTCCCAGACCACCGTTGCCGAGCGCCGGATCGACTTCCTCTTCCAGCAGATCGGTCAGATTAATATCGTGCGCTTTCAGCACATCGCTAACGTCCTGGTACCATCCCAGATTTAACAGGTTATTTCCCGTCAGGCGGCCAATCAAAAAT [...]
+GGCTGGCATTAATCCCGGCAAGACGGCGGGCGGAGTGATGCGCAGAGGTATGGTTCTGGCGCGCGGAGAGGGCGATCAACTGTAGCGCAGTGGCCCAACCGGCCACATCATCGCACATGCGGCTGCTCTCAGCGGCTTCAATGGGCGACGAAAGACGACGGTCAAAAAATTGCTTTGCTTCCTGATGGTTAAAAGCCAACTGCTGGCTGCCGATTTCCAACAGCTGATCGCGCACGCGCAGGTTAGCGATGCCCAGTTGCGGCAAATTACGCGATAACACCACCAGGGTGAAATTTTCCGGCTGATGCCGTAAGAAAAAGCGCATCGCGTCGTGAATCACCGGATTGGTAATCAAATGGTAGTCGTCAATCACCAGATAAAGCGGGCGATGCCACTGCGCCAGTTCAATAAAGAGCTGTGCGAAGAGGGACGTCAGGCTGGCGTACTGACGTTTTTGCGCCATCGCTTCGCTGGTAGAGCAGTGTCCGCCGG [...]
+NODE	970	10	550	530	0	0
+ACTGATGCCA
+TATTGTTTAC
+NODE	971	13	640	640	0	0
+TAAAGGCCGTAAG
+TTGACGTGGGCGC
+NODE	972	3824	190151	189262	0	0
+CCGCACTGCGTGAAGGGGAAAGGAACATTGCCGGTCTCTATTGCCGATGCGCATCGTGCAAAAGTACAAAAAGCGACGAAAACCGCGATGTCCAAGCTCATGAACCAGATTGGTAAACCGTATCACTGGGGAGGCGCGTCGCCGCGCACCGGTTTTGATTGCAGCGGTCTGGTTTATTATGCCTATAAAGATTTAGTGAAGATCCGTATCCCCCGAACGGCGAATGAGATGTATCACCTGCGTGACGCGGCGCCCATTGAGCGTAGCGAGTTGAAAAACGGCGATCTGGTGTTCTTTCGTACGCAGGGGCGCGGCACCGCCGATCACGTTGGCGTCTATGTCGGCAACGGTAAGTTTATTCAGTCCCCGCGCAGCGGTCAGGAAATTAAGATCACCTCACTGAACGAAGAGTACTGGCAACGTCATTATGTCGGCGCCCGCCGGGTGATGACACCTAAAACAATTCGCTAATATTTTATCCTGTCGTTTAAC [...]
+CCAGAAATCCCAGCACGCTAAGACCGGCTAACCAGACTAAAAAACCTTTTCCAGGTTGCATATTTGTTTCTCTTTCTTATCAGACAGACATTGTCGCAGAGTGTAGGGAGTGAAATTACGGTTGTGAAACGTTAATATTTGTCCAGTGAATTCAAAATTTTTGTAGGCAAATTATGTGGTCGGAATACTCGCTTGAAGTGGTTGACGCCGTAGCGCGCAATGGCAGTTTTAGCGCGGCGGCGCAGGAACTGCACCGTGTGCCTTCAGCAGTCAGTTACACCGTTCGTCAGTTAGAGGAGTGGCTGGCCGTACCGCTTTTTGTACGACGTCACCGTGATGTTGAACTGACGCCTGCTGGCGTCTGGTTTTTAAAAGAAGGGCGTTCTGTTATCAAAAAAATGCAGATCACTCGCCAGCAGTGTCAGCAAATTGCTAATGGCTGGCGCGGGCAGTTAGCTATTGCGGTGGACAATATCGTCAGACCAGAACGTA [...]
+NODE	973	1123	57156	55333	0	0
+AATCTGTTGCTTAAACGCGGGCAGCAGGAATATGTCTTTCCAACGCAGGTGGTGCGCGTAACGGGCAATGAGGTTGGGCTGCAACTGATGCCGCTCACCACCAAACAACATATTGATTTTGTGCAGTGTACCTTCGCGCGCGCCGATACGTGGGCGCTTTGGCAAGATAGCTTCCCGGAAGATAAACCGCTGGAAAGCTTGCTGGATATTCTGAAGCTGGGCTTCCGCGGATATCGCCACCTCGCGGAATTCGCGCCGCCTTCAGTAAAAGTAATTTTCCGATCGTTGACGGCGTTAATTGCCTGGATTGTATCGTTTATTCCGCGTCGCCCGGAGCGGCAAGCGGCGATACAGCCGTCGGATCGGGTTATGGCTCAGGCTCAACAATGATGATAATGCGATGAAAAGAAAATTGTCCTGGATGTGTGCGGCGGTAATAGGATTAAGCGCGTTTCCTGCTTTCATGACGGCGGCGGCGCCTGCTACGCCGCC [...]
+TATCAGCAAACACTATCGGCAACGTCACCGGACGGTTATCCCGCGGATCAAAAAACGGCACCGGGAAGTGGGACAGATCGTTATTCACCGCCAGCATGTTATAGGTCAGATCCAGGGCGCTATTTCGCCCGATGTCTAACCACAGAGTACTGCTGGCCGGGTTTTCACACACGTCGCGATAGTGGCCGACAAACTCCAGCCGCACCCGGTTAAAGTCGGTGATAAATAGCGGATTGATAGGTACCTGCGCCAGCGTCTTTTTCCCCAACTGCTCTTTTGTCACCGGCAGTACGCCCATCAGTTCATCATTGAGATAAACCTTGAGCTGCGACTGAACCGGCAGGAGCGACGGCGAGGGCGTATATTCCAGATTCAGCACCGCTTTCGACGCCACTTCATCGCTGCGCATACCAAATTCAATGCCGCCGTTAGGGTTAACGCCACGCAGCGCCATACTACCCGGCGGCGGCGCGATTTGCGCAAAGGTCAGCT [...]
+NODE	974	8804	522417	519810	0	0
+GGCTAATCCCCAGCGGCTTACCAATCAGCAGACCGGCAATAATTCCCAACGGCAGCATGGAGGTCAGACCGTCAATCGTGACGCCCTGAAGAGAAACGCCGGCATTCGCAAAAGCGAAGAGCGGCAGGATCAGGTACGCGACCCACGGGTGCAGAACATGCTCCAGACGCTTGGCCGGCGAGCGACCGTGTTTTTCTTTCAGCGGAATAAAGAAACCGACAATGACGCCTGCCAGCGTCGCGTGAACGCCGGACTTCAGTACCGCCGTCCACAGCACTGCCCCGACCAGAATATATACCCCTGTCCGTCTGACGCCGCACAGGTTCAGCAGCGCCAGCACGGCAATCGCGAACGCCGCCACGCCCAGCGAGACGATAGAAAGATCGCTGGTATAAAACAGTGCGATAATAACGATGGCGCCGAGATCATCGATGATCGCCAGCGCCATCAGGAATATTTTCAGCGCCAGCGGAACCCGGCTGCCCAACAGCG [...]
+GCATGGTATTTAAAATATCAATAATAGCCTCGCCTTTGGTCAGCGTACTGATAAAAGGTCCGGTGAAATAGTCGCCAGCATCAAAGAAAAAGACATCTTTCTCTTTCGCTTTTGCATCTTTGACAATTTTCGAGATGGGCGCAAAGCCCCCTACCGGACGTGTCTTGGATACATAGGGGATAATTTCTGGGGTTACATGGGCATGTAAATCGTTTGTATAATAAATTGTGATGTCACGCGCATCGGCTGAAAAGGAAATGGCTGAAGACAAACCAATGCACAGCGACAGTAGGGATATCGAAAACTTTTTGTTCATATAAACCATCCATTTACGCTACATTAAAGAAAAACAATGCCTGTAGTCGTGTCATTCACGACTACAAACCGGGGAAATTAAGTAATATTCATCAAGTTTATTAATTATTAAAACTCGAAGCCGATCAGGTAATTCATACGGTCGCCGTAGCCGTCATACCCCAATTTATTATTGAA [...]
+NODE	975	5396	336456	334659	0	0
+CGCTGCATATATTTTCTCCCAGAGAGAGCAACACAGTACATGATAAAATTTATCATATAGATTTGCATTTAGAGATAAGGTGAATACCCCCTTTGCGTCTGGTTACATAATAACGTATCACGACGCTTTGCTGTCTGGCTTACACAGTAGCAGCCAAATAAATATATTGGCTTATACTCGTCATACTTCAAGTTGCATGTGCTGCGGCTGCGTTCCCTCCTCCCAGTCACTTACTTTAGTAAGCTCCTGGGGATTCGCTCGCTTGTCGCCTTCCTGCAACTCGAATTATTTAGAGTATAAACATTATTTAAAATAATAAACACGGCATTCGTTTTAATACTACGTTCAGGACTCATCCCACTCATTAGCAGAAAACCTATTAAAAAGCGTGTTCAGGCGTTTTATTGCTGCCATTGATAAACTGTTTAACAACGTCGTCTGTACAGGTCTTCTTCGTTGCCTTTACGTTTAACTCAATCAGGCTACCGTCTC [...]
+ATCCTGCGCCCTATGCGTCAACTTTCGTCATTAATGGTACGCCGCGAACCGGGTCTGTTAACGCCGCTGCCGGAACTGCTGCCGTGGTCGGAAACACGCTTGTTAATCGTGGCGTTTAATCGCTACATTGACAGGCTCCGCGGCATCCTTTCCCGGCAGGAACGCTTTAGCGCCGATGCTTCTCACCAGTTAAAAACGCCGCTGGCGGTGTTAAAAACGCAGGCGGCGGTGGCGTTAGCCAGCCAGCACCCTCATCACTGGTACGAAAGTCTGCAGGCGATGAGCGTAACGCTGGATAGCACCATTCAGCTCACGGAAAGATTGTTGCAACTTTCTGCGGTAAAGCATAAAGAGCAGGGCGAGCGGCGTTTTTCCCCGGTGAATCTGTACGATATCATACAGAGCGGCTGCTTTACTCGCCTGGCGCAGGCACGGAGTAAACATATCGACCTGGGCTACGAAGGCGAACAGGAAGCGATGTGGATCGAGGGG [...]
+NODE	976	1187	60766	58105	0	0
+GATAGCGAGAACGGGTAAATGCGCGCGGCTGCCGGACTGCTCGCGACGCAGACCCGCAAACCACGTCTGCGCTTTCAGCTCTTTTAGCGCCCGGTTCATCGGCTCGACTTTGTTGATCTCATTGTATTTCTCAATACCTTCTACGCCCTGCTCCCACAGTTTGCCGTAGCGCGCCTCCTGCCAGGCTGGACTTTCGCCCGCGCGGTAAACTTTCAGGTTGAGTTTGAGTTTGTCCGTTAACTCATCAATAAACTGATAGGTTTCCGGGAACAAATAGCCGGTATCGGTGAGGATCACCGGGATATCCGGGCGAATCTGGTTCACCAGGTGCAGGCTCACCGCCGCCTGGATGCCAAAGCTTGAAGAAAGCACGTATTCGCCGGGCAGATTTTCCAGCGCCCAGGCCACGCGTTCTTCGGCAGTCAGCGTTTCCAGTTGAGCGTTGGTTTCCGCCAACGCCAGTACGCGATCGACTTTTGGCAGTTCATTCAA [...]
+TTCCGTATCACCGCTAACCAGAACCTGATTATTGCCAGCGTGCCGGAAAGCCAGAAAGTGAAAATCGAGACGCTGGCGCGCGATCATGGGCTGATGAATGCGGTGAGCGCGCAGCGTGAAAACTCAATGGCCTGCGTGTCGTTCCCGACCTGCCCGCTGGCAATGGCGGAAGCCGAGCGTTTCCTGCCGTCGTTCACGGACAAAGTCGAAGCGATTCTGGAAAAACACGGCATTCCTGATGAGCATATCGTGATGCGCGTGACCGGCTGCCCGAACGGCTGTGGTCGCGCGATGCTGGCGGAAATTGGCTTAGTAGGGAAAGCGCCCGGTCGTTATAACCTGCATCTTGGTGGCAACCGCATCGGGAGTCGTATCCCACGGATGTATCAAGAAAATATCACCGAGCCGGATATTCTGGCTTCGCTGGATGAACTGATTGGGCGCTGGGCGAAAGAGCGTGAAGCGGGTGAAGGCTTCGGCGACTTTACGGTG [...]
+NODE	977	474	24852	24792	0	0
+CGCCTGGCCACATGGGCGGGACCGCTTTCCAGAAAAGCCCCGTCGGCAGCATCTTTTATGATTTCTTCGGCCCGAACACGATGAAATCCGATATTTCGATTTCCGTTTCCGAACTGGGTTCGCTGCTGGACCACTCCGGCCCGCATAAAGAAGCAGAAGAGTATATCGCCCGCGTCTTTAACGCCGAACGTAGCTACATGGTGACGAACGGCACCTCTACGGCGAACAAAATCGTCGGTATGTACTCCGCGCCGGCAGGCAGCACGGTACTGATTGACCGTAACTGCCATAAATCGCTGACCCATCTGATGATGATGAGCGACATTACGCCGATTTATTTCCGCCCAACCCGTAACGCCTACGGTATTCTTGGCGGTATCCCGCAAAGCGAGTTCCAGCACGCCACTATCGCTAAACGGGTAAAAGAGACGCCTAACGCAACCTGGCCGGTCCACGCTGTTATTACTAACTCAA
+TTTACCCGTTTAGCGATAGTGGCGTGCTGGAACTCGCTTTGCGGGATACCGCCAAGAATACCGTAGGCGTTACGGGTTGGGCGGAAATAAATCGGCGTAATGTCGCTCATCATCATCAGATGGGTCAGCGATTTATGGCAGTTACGGTCAATCAGTACCGTGCTGCCTGCCGGCGCGGAGTACATACCGACGATTTTGTTCGCCGTAGAGGTGCCGTTCGTCACCATGTAGCTACGTTCGGCGTTAAAGACGCGGGCGATATACTCTTCTGCTTCTTTATGCGGGCCGGAGTGGTCCAGCAGCGAACCCAGTTCGGAAACGGAAATCGAAATATCGGATTTCATCGTGTTCGGGCCGAAGAAATCATAAAAGATGCTGCCGACGGGGCTTTTCTGGAAAGCGGTCCCGCCCATGTGGCCAGGCGTACAGAAAGTATATTTCCCTTCGCGCACATATTTGAACAGTGCTTTTGTC
+NODE	978	408	20941	20941	0	0
+TTGCAGGTTAAATGTCGGCTGGGTGCGATTGGTCATGTTATCGCCCTGGACACCGGTATCGTCCGCACTATCCAGTACGATAACCGGCGTCGACAGCGTGGTATCAATAGTGAAGTCGAGCGTCCTGGTCACCGTATTGCCTGCGTTATCAGTCGCTTTCACCGTTAACGTGTAGTCATCATCTGCCAATGTCTTTGGCCAGGTATAATTCCAGACGCCCGACTTCGAGCTTTGCATCGCCTTAACCCAGGTTACACCGCCGTCAATGCTCAGACTGACTTCGTTGACATCCCCTGGCACCGTGATGCGGAAATGTGGATTGGCGTCGTTAGTTAGATTGTCGCCCTTAGTACCGCTGTCATTAACCAGTTCAATATCATCAATGGCAATATGGGTATCGACCGTAAC
+CAGCGGTACTAAGGGCGACAATCTAACTAACGACGCCAATCCACATTTCCGCATCACGGTGCCAGGGGATGTCAACGAAGTCAGTCTGAGCATTGACGGCGGTGTAACCTGGGTTAAGGCGATGCAAAGCTCGAAGTCGGGCGTCTGGAATTATACCTGGCCAAAGACATTGGCAGATGATGACTACACGTTAACGGTGAAAGCGACTGATAACGCAGGCAATACGGTGACCAGGACGCTCGACTTCACTATTGATACCACGCTGTCGACGCCGGTTATCGTACTGGATAGTGCGGACGATACCGGTGTCCAGGGCGATAACATGACCAATCGCACCCAGCCGACATTTAACCTGCAACATATTGATGATGATGCCGTTCGCGTTACGGTCAGCGTGGAGCATGGCGG
+NODE	979	3094	172967	169847	0	0
+CCGAATTCCTGGATAAAGTGCAGCATATCGCCGCTCAGCGTCACCCCAGCCTGATCGACGAAGTGGCCGACGATAATACCGCCGAACAGAACGCCGCCAATACCAAAGCCGACACCGCGCACTTTAATGTTGCCGATCCATAAACCGACAACCGCCACCAACGCCAGAACGCTGACCGTCAATGCGATATCACTCATCTTTTCTTCCCTGTGAGTAACATTTCAATTTATAGGGATTATGACTGAACCGTTAAGGCATATATACAGCATGGCGCACATTCTCATGTTACAAAACCGCCCAGACGTCCTGACTTCGGCAGCGTCTTACCCTTTTTCGTGGCACAAAAAAGCCCCGCCATCTCTGGCGGGGCAAGGCAAGGAGCTCATTAGCTATTTAATGCGGAGCGTTCGTTAATGGCGATACGCTGCGGCGCAATGGTTTCCGGCTCGTTGCGGGTTAAATCAATATGCAGCAGGCCGTTGGTAAACGTCG [...]
+TTTATCGCGCTGTGCAGGGCGCGCATGTCGGTGTGGTGACGGTGCATCCTGCCGACAATCACTATGTGTTTATTCATGGCCCTGAAAACCCTGATGAGACGTGGCATTACGATTTCCACCACCGCCGGGGCGTTATTGCAACGCCGGGGGGCGTGACTAACCTCGATGCGATGGATATTACTGCGCCGTATACTCCCGGCGCGCTGCGCGGCGGCAGCCACGTCCATGTGTTTAGCCCGAACGGCGAGCTGGTGAGTTTTACCTATAATGACCACGTTCTGCATGAGCGAGATCCGGCGCTGGATCTGCGTAATGTCGGCGTGGCCGTGCCGTATGGGCCGGTAACGGTGCCGGTTCAGCATCCGCGCGAATACAGCGGTAGCTACTGGTGCGTACTGGTTAGCCGCACGACGTCGGCGCCGAGACCTGGCAGCGATGACATTAACCGCGCCTATGAAGAGGGCTGGGTGGGCAACCGCCAGATCGCCTTTA [...]
+NODE	980	86	4641	4641	0	0
+ACGGTAAACAGTACGCCCATCAGGAATACGGCGCCAAGCGCGACCGGGACGCTAATATGCTGCCCCAGGACCAGGCTAAACGCGGT
+TGGCGCCGTATTCCTGATGGGCGTACTGTTTACCGTTATCTCCGCCACCGGCATTCGTAGCTGGATTTTGCGTAACTTGCCGCAGG
+NODE	981	9420	529069	524357	0	0
+TACTTGTCGAAAATGGCTTTATCGCCCCCCACCATCACCGACAGCGTGCCATCAATAGCCTTCGGCTCGCCGCCGCTGACCGGCGCATCCAACATCTCAACGCCCTTCGCCTTCAGCGCATCGCTGATTTCACGGCTTGCCAGCGGCGCGATAGAACTCATATCAATCAATACGGTTCCCGGCTTCGCGCCTTCGATGATACCGTTCTCGCCCAGCGCAACCTCTTTCACATGCGGAGAGTTAGGCAGCATCGTGATGATGACGTCACACTGTTCAGCGATCGCCTTCGCCGTAGAGGCCGTTTCCGCGCCTGCGGCAATGACGTCAGCAATCGCTTCAGGATTACGATCGGACACCACCAGCGAATACCCTGCTTTCAGTAAGTTTTTGCTCATGGGCTTACCCATGATGCCTAAGCCAATAAAGCCAACTTTCATCGTCATAGCGTTCTCTCTTTCCATACCAGGATTATTTTTTAAAGGTGTCGGCAAG [...]
+ATGAAAACGGGTGACAAGGCCTTTCTCTTCCAGCAGACGCAGGTCAGCACGGATAGTCACTTCAGAAATACCAAAGGTATTTGAAAGGTCCATCACCAGCACGCTGCCTTGCGTATTAATCAGGTCGACAATTTTATTTCTTCGCTCAAATGAGTTCATATTGATTTGCCTGATAATTAACTGTAACTAGTTTAAACGAAGGATTGCGAAAGGTGAACGCTAAATTTCGAAAGGAAATGTGAGCCAGCGCAGGTTGCTGGCTCGTACCATCAGGAAAGTTGAAGTAGGATTTTGCCCTGCATGGGCGCGCCATTAAGCGCTTTGACTGCTTCTGCAAAGCTTTCCGCATCGCCGCGATGGGCAATGAGAGGGGTCAGTTGAAGACGTTTTTCAGCCAACAGGCGCGCTGCGGTTTCCCATTCTTCTCCTGGCCATGGCGCGGAGTAGTTCATCCAACTGCCGAGGAGCGTGAGCTCTTTACGCAAAATTAGC [...]
+NODE	982	1568	77443	76759	0	0
+TCGGCTCAACGACTGGGCGGATCGCAATAAAGATACCCGCAACGGTAAAGATGTGAAGAAGCTGCTGAATAAGCTGTAGTTTTTGGCCAAAGGGCAGAGCCGGATGGCGAGGCTAACGCGCCTCCGGCCTGCCTGGTAAGCAGGCCGGGGCAGGCGAACAGACGTTACATCTCCGAGTCTGGCTCGCCGTTATGCAGCGGAATTAACTGCACTTTCTGCACTCGATGGCTTTCTACCTGCAATGTTTTCAGCAAATAATCGCCCACCTGAACCTCTTCACCGGTTTGCGGTATGCGCTGCAAATATTCCATCAATAATCCGGCAATCGTATGGTATTCCCGTTTTTCATCCAGCGGTAGCGGCACGTACTGCACCAAATCCTCCAGCGGCATATGGCCGTTTGCTGTCCAGGAACCGTCCGGGTTCTTCTGAATATCGTGGCGGGCGTCAATTTCCTCGACTTCATTCGGCAGATTACCGGCAATAGTCTCC [...]
+TAGCGTACAGGCGTTAAGCTTCAGCGCCCGCGATCTGATTATGCTGTTTGGCGGCTTCTTCCTGCTCTTTAAAGCCACCATGGAGCTCAACGAACGGCTGGAAGGGAAAGATAGCGCCAACCCTACCCAGCGTAAGGGGGCGAAATTCTGGGCGGTGGTCGCGCAAATTGTGGTGCTGGACGCTATCTTTTCTCTCGACTCCGTGATTACCGCCGTGGGGATGGTCGATCACCTGGCGGTCATGATGGCGGCAGTGATAATCGCCATTAGCCTGATGCTGCTCGCCAGCAAGTCACTGACCCGATTTGTGAACAACCATCCCACCATTGTCATTTTGTGTCTTAGCTTCTTGCTAATGATCGGCTTTAGCCTGGTGGCGGAAGGGTTTGGTTTCCATATTCCGAAAGGGTATCTGTACGCGGCTATCGGCTTCTCGGTGATGATCGAGGCGCTCAACCAACTGGCTATTTTTAACCGCCGCCGTTTTCTTTC [...]
+NODE	983	309	18272	18042	0	0
+ATCATTTCGTGCTGGCGGCGGAGATATCTCAAAGCTTCGGTTATGGTGTTCTTTTCATCCCTCACAAATTACCGCTGAGCGCTTTCTCCAGCAGTGTTTAGCGCTCTCTGCCGCCGGAATAACCTGGTGCGCGGGGGCTGTCGCCAGTATGAAAGATATCGACCAGTTTCGTTGGCTACGCCAGCAGTTGCCTGACCAGAATTATTTTTGGTTTAACGCCAACGAGTGTGCCAATACCCGGCATACCGTTGAGGAAACCATCGCCTTCAGCGAACTCGATCCGCTGTATGTGATTGAAACACAGCAGTG
+GGTTTCCTCAACGGTATGCCGGGTATTGGCACACTCGTTGGCGTTAAACCAAAAATAATTCTGGTCAGGCAACTGCTGGCGTAGCCAACGAAACTGGTCGATATCTTTCATACTGGCGACAGCCCCCGCGCACCAGGTTATTCCGGCGGCAGAGAGCGCTAAACACTGCTGGAGAAAGCGCTCAGCGGTAATTTGTGAGGGATGAAAAGAACACCATAACCGAAGCTTTGAGATATCTCCGCCGCCAGCACGAAATGATTCCAGCAATGACATTAACGAAAAAGAGGCGTTAGTTTGTATGCCGACCGC
+NODE	984	39	3252	3252	0	0
+GCCAGCGCAGCTGGATATCTGTACCGCAGGAAGAAAAAG
+TTCAATCACATACAGCGGATCGAGTTCGCTGAAGGCGAT
+NODE	985	39	2779	2779	0	0
+ACTTTTTCTTCCTGCGGTACAGATATCCAGCTGCGCTGG
+TGCAGAAGGCGATCTTTTTGCTTGTCATATCAGCAAAAT
+NODE	986	12	952	952	0	0
+CCACTGCTGTGT
+TATTTTTATGAA
+NODE	987	51	2878	2878	0	0
+ACCCCGCTTTCGCTGATGCCGGAAGCCGCGTATGTTAACGATCGTTTTTTA
+TTTGTGACGACATAGTGGATTGTGTTTCATGATACCAGTGGCTTTTACCCG
+NODE	988	51	152	152	0	0
+GTTGTGACGACATAGTGGATTGTGTTTCATGATACCAGTGGCTTTTACCCG
+CCCCCGCTTTCGCTGATGCCGGAAGCCGCGTATGTTAACGATCGTTTTTTA
+NODE	989	10899	554812	545089	0	0
+TCCGTGAAGGATAAAAAATATTTTGGCGACGGGACGGGGGTTGGGCTGCGCAAAGACGATACCGAGCTAAAAGCCGCGTTTGATAAAGCGCTGACCGAACTGCGCCAGGACGGAACTTACGACAAAATGGCCAAAAAGTACTTCGATTTTAATGTCTACGGCGATTGAGGGAAGGGGATAACGCGCCGCGCTGGGGAACTATCACGGTGCAAAATAGATGTTTTGCACCTTTTTGGTGCATAAGCCGTTGCGGAACAGGCGCATAAATGCATACTTAATCGATTTTTATGCAAAATAAACCGGCTGGCAAGGTAGAATGCTTTGCCTTGTCGGCCTGATTAATGGCACGATAGTCGCATCGGATCTGTAAAGATCTCCTGGAAAGACAGTCTGTTGAGGATAGTTATGAAAAAACTGGCGTTATCCCTTTCTCTGGTGCTGGCATTTTCCAGCGCTACCGCAGCATTTGCCGCTATTCCACAAAAGATTCGT [...]
+ATGCTGCCGCCATAGTGACCAAAGCCAAGATGGTTTAAGGATTTGAGCGTGGCGACGCGAATGTCGCGCGCCAGTTGGGTGATTTCGGTTACGTTCATTCTTTCGCTCCGCTATTTTCCTGCACTTCGGCAGTCGCTTTTTTGTTTTTGGCCAACACGTTGTACGCCACCAGTAGCGCGAATAGCGCCACCACCAGCCCCGTGATAGCCATCGGCGACAGATAACGCGCCAGGTTGCCCAGCAAAATACCGATTACGCCAAAGTCAGCATCCGAGAACGTGGTATTGGCGAAGCCGATCGCGCCGAGAACCGGCAGTAACAGCACTGGCAGGAAAGTGATTAATAGACCATTAGCAAATGCGCCGATCATCGCCCCGCGGCGACCGCCGGTGGCATTGCCAAAGACGCCTGCGGTCGCGCCGGTAAAGAAGTGCGGCACAACGCCTGGCAGGATTAACACAAGCTTCATCTGTCCAAGCAGGAACAGCCCCA [...]
+NODE	990	7	316	316	0	0
+ACCAGCC
+TATGGCG
+NODE	991	735	38234	37083	0	0
+TCTGGAACGTGACGGCATGTTGATGATGGTGGATGACGATCGTATCGATCTCCAGCCTGGCGAAGTCATCAAAAAAAGGATGGTGCGCTTCCGTACACTTGGCTGTTGGCCGCTCACCGGGGCGGTGGAATCCCACGCGCAAACGCTGCCGGAAATTATCGAAGAGATGCTGGTTTCTACCACCAGCGAGCGCCAGGGGAGGGTGATTGACCGCGATCAGGCGGGGTCGATGGAGCTTAAAAAACGTCAGGGGTATTTCTAAGGAGCCGCCATGAACACCATACTTGCACAACAAATCGCCAATGAAGGCGGCGTCGAAGCCTGGATGATGGCCCAACAACACAAAAGCCTGCTGCGTTTTTTAACCTGTGGCAGCGTTGATGACGGTAAAAGTACGCTGATAGGTCGTTTGCTGCACGATACCCTGCAAATTTATGAAGATCAGCTCTCTTCTCTGCATAATGACAGTAAACGTCATGGCACGCAGGGAGA [...]
+GATCAGTAGGATCGCCAGATCGCAGGTGGACGCCCCGGTCGCCATATTACGAGTATATTGTTCATGGCCCGGCGTGTCGGCGATAATAAATTTTCGTTTTTCCGTGGAGAAATAGCGGTACGCGACGTCAATAGTAATGCCCTGCTCACGCTCGGCCTGCAGCCCATCTACCAGCAGCGCCAGATCGAGTTTTTCTCCCTGCGTGCCATGACGTTTACTGTCATTATGCAGAGAAGAGAGCTGATCTTCATAAATTTGCAGGGTATCGTGCAGCAAACGACCTATCAGCGTACTTTTACCGTCATCAACGCTGCCACAGGTTAAAAAACGCAGCAGGCTTTTGTGTTGTTGGGCCATCATCCAGGCTTCGACGCCGCCTTCATTGGCGATTTGTTGTGCAAGTATGGTGTTCATGGCGGCTCCTTAGAAATACCCCTGACGTTTTTTAAGCTCCATCGACCCCGCCTGATCGCGGTCAATCACCCTCCCCTG [...]
+NODE	992	3491	186718	185546	0	0
+TACGTTGACCTTCCTGCTCTCAACGGTAATTGAGCTGTATACCATGGTGCTATTATTGCGCGTGTGGATGCAGTGGGCCCGCTGTGACTTTTACAACCCTTTCTCCCAGTTCGTGGTGAAAATTACGCAGCCCATCATCGGACCGCTGCGTCGTATTATCCCGCCAATGGGGCCGATTGACAGCGCTTCTCTGCTGGTGGCGTTTATTCTTAGCGTTATTAAGGCGATAGTGCTGTTTAAGGTAATTACGTTTCAGGCGATTATCTGGATTGCCGCGGTGCTTATCTTACTTAAAACAATCGGCCTGCTGATCTTCTGGGTGCTGCTGGTCATGGCTATCATGAGCTGGGTGAGCCAGGGTCGTAGCCCGATTGAATATGTATTGATTCAGCTTGCCGAGCCGCTGCTCAGCCCGATTCGCCGTATACTGCCTGCGATGGGCGGCATCGACTTCTCGCCGATGGTTCTGGTGCTGCTGCTGTATGTCGTTAA [...]
+ATGGCGGCGGATTATTATTTTGTTGAAAAAACCTGGACCAAAGATCGTCCCGTTAAATTTTCTGCCATGTTGACCAGCAAAGGGACGCCAGCCTCTGGCTGGACGGTGAGCTATTACTCATTGCAAATGGCAGCCAGCGATCAGGGCCGGGCTATTGACGACATTAAAACGAATGATAAATACCTGATCGTCAACAGTGATGACTTTAACTATCGGTTTGGCAACATTGAAGCCTCCTGGCGTGCGCAGAAAGCGTCGATCCCCGGTCTTGAAGAACAACTCTCTGCCCTGGATAAGAAAATAGCGGTAGCTAAAAAAGAAGCGGACGCATATTGGGGAAAAGGCGCTGATGGGAAACCGTTGACCCGCGCCGAGGCGTTTAAAAAGACGTTAAAAGAGCGCGATGATTATGTAAAAGCCAACGATAGCAGCGTATATGCCGAGAAATACGAAAAAGAGGTCTATCAACCGGCATTAGACGCGTGCCGTAAG [...]
+NODE	993	4105	226822	224706	0	0
+CTTACCGGCGCTCGACTGCTCGAACAAATGGACGCCGAAACCATCAGCACCCACCAGGCCAATAAGCGGCGCGGATAATGCCGCTGCCACGCCCAGCATCATGGACGGATTGCCCCCGGCCAGACGGGCGACGGAATCCCGCCAGGTGGCAGCAGTACCAGCAATGGCATACCCGGAAGATGCAGCGCTGCGACCGTTAAAGAGAATGGGCGTCTCTGGATCACCAATCACTTCACCATCAGGCATGATATATGCGCCATGATGCCAGCCAGTGGTATGGGTGATAATCCATTCCCGATCAGTGCCGCTTTGCTGCAACCAGTCGGCCAGAATCGCCCGGAAGGTGCTTTTAGTGGTCACATTCACCCCACCAGCTTTAAGTGAGCGCCAGCCGTCGCGCTCACCGATATCAGCACAGGGGATCGCCCTGGTAATATCTTCGTGGCCACGCGGCGAACGCCAGCGCAAAACAAGATAGCGCTCTGCCCCGTC [...]
+AGAACAACGCCGCACCATTCTCGCAGAATATGGCATTAAGTTTGATCGCCGTATTCGTGAAAGTGAATGCTTCGAAATAACCAGCCTTTCCCGTTCCACCCGCTGGTATATGGAGAACGAAGGTAAATTCCCGCCACGCTGCCACTTTGGCCGTAATAGTTGCGCATGGCTTCTGTCAGATGTTCTTTGGTGGGTTCGCAATCCACCTGCTGTTGAGAACGTCAACACCCCTTACAACCGTAAATCCGCGTAAGGGGGGCGCTATGCAAAAATTAAATGAGTTGGTTCCGGTTAACCCCGGAAATATTGGCGGCGTGACGGTATCGCTGGTCAGTGCAAAAAAACTCCATGAGTTTCTCGGCGTTGGGCGTGATTTCACCACATGGATTAAGGGGCGTATCAGCCAGTATGGTTTTACTGCTGGTGTAGATTTTACGGTGGTTGAAAATTTGAGCGCCCCCGTTTCGGGGAGCGCAAAATATCGCCAACAAA [...]
+NODE	994	3339	185001	184123	0	0
+TCGGTAAGCCGAAACCACAGCGGACACCCGCAGCCGGAACAGAAGTAGCGTTCGCCGCGCGAAGAGGATGAAAAGTATGGCGGTTCCGGGGAAAGGGGGGCTAGCTGTGGTTGCCCGCAGGCTTCCAGATACATGGCTATTCCACCCGACCATTTTTGACACAGCGTACAATGGCAGGCATAGACATCCAGCATTTCGACGTCAACGGTAAAATGGCTCTGTCCGCAAAGACAACGACCAGTGAACGTCTGCACGGCATACTCCTTATGACCGAGTCTACATCAAGAGAAAAAGCCAGCCCTGAAAGGACTGGCTTTGTATTCAGACTACAACAAAATTAGAACTGGTAGTTCAGACCAACAGCAACGATGTTGTCAGTGCTGATCTGCGCAACATTTTTAGTGAAGTTGGTGTCATCCAGCAGGTTGATTTTGTAATCAACGAAGGTGGACATGTTTTTGTTGAAGTAGTAGGTAGCACCGACATCGATGT [...]
+ATCTCCCAGGCTATACATTAATAGCCCGCAACCTACGGAACAGTATGTGCAGGAGTTACGGATCTCTTTTGCGCGCAACAGCTTATAGTTTCGCGCCTGAGCCAGGGCCATTTTAGGGGTAAAACCCAGTGCGGCCACCGTTGTTCCCGCCATACCGCCCGCGCAGATTTTAAAAAATTGTCTGCGGCTGACGTCCATTGCTTTCCTCTTTTTTCCACGGATGCACGCCTCCTTCGAACTGCAGCAAAACCTCAGCCCAGGATGCGTGTATAACTTCGCGAGGAAACTAACAGCAAAATCGATAACTTTTTTGCGTCAAATCAATATTGAAACGGTTCCGCTACTAAATAGCCCTATTTTTAAACTGCAATAACTCCAGGGAGGTACTAAAAAATGACACTGCATGGCATCGCCCTCGGAAAAAGTGCTATAAGTGGCAGTTTATTTTGCGCGGTATTCAGGACAGTCACAAAACATGACATCACAAAAAGC [...]
+NODE	995	1927	95146	94633	0	0
+AACGCCGAGACCACGCTTATAAATGAAGAGAGCATGCGGCACCCGAATAAAGCATTGTCTGGCTGCATTCCGTTTACCAGTACGTGGGCGAATGTGTTATAATTTGCGACCTTTGAATCCGGGATACAGTAGAGGGATAGCGGTTAGATGAGCGACCTTGCGAGAGAAATTACACCGGTCAACATTGAGGAAGAGCTGAAGAGCTCCTATCTGGATTATGCGATGTCGGTCATTGTTGGCCGTGCGCTGCCGGATGTCCGAGATGGCCTGAAGCCGGTACACCGTCGCGTACTTTACGCCATGAACGTATTGGGCAATGACTGGAACAAAGCCTATAAAAAATCTGCCCGTGTCGTTGGTGACGTAATCGGTAAATACCATCCCCACGGCGATTTCGCAGTGTATGACACCATCGTTCGTATGGCGCAGCCATTCTCGCTGCGTTACATGCTGGTGGATGGTCAGGGTAACTTCGGTTCTATTGACGGCGAC [...]
+AAGTCTTCTTCTTTAATACGCGCGGCAGATTTACCTTTCCCACCACGACGTTGCGCTTCGTAATCCGTCAGCGGTTGATACTTGACGTAACCCTGGTGAGACAGCGTCACGACAACATCTTCCTGGCTAATCAGATCTTCGATATTAATATCGGCGCTGTTGGCGGTGATTTCGGTACGACGCTCATCGCCGAACTGATCGCGAATTAACTCCATCTCTTCGCGGATCACTTCCATCAGGCGATCGGCGCTGCCCAGAATGTGCAGCAGTTCAGCAATCTGCTCCAGCAACTCTTTGTATTCGTCGAGCAGTTTTTCATGCTCCAGGCCGGTCAGTTTCTGCAAACGCAGATCCAGAATCGCCTGCGCCTGCTGTTCAGTCAGGTAGTACTGACCGTCACGCACGCCAAATTCTGGCTCCAGCCATTCCGGACGCGCGGCGTCATCACCGGCGCGCTCCAGCATCGCAGCAACGTTGCCCAGGTCCCACGGA [...]
+NODE	996	9559	497087	495183	0	0
+CAATTATCCACAACAAGAACAACAAGTAATGAATAACAGGAGTGATGGCTATGAGTCGTTTAGTCGTAGTATCTAATCGAATTGCCCCCCCGGATAATAAAGGCGGCGCCGGCGGCCTCGCCGTTGGCGTGCTTGGCGCGCTAAAAGCGGCTGGCGGGTTGTGGTTCGGCTGGAGTGGCGAGACAGGTAACGAGGATGAGCCATTAAAAAAGGTGACAAAAGGTAATATTACCTGGGCATCGTTTAACCTGAGCGAACAAGATTACGAAGATTATTACTGTCAATTTTCCAATGCGGTTCTCTGGCCTGCGTTCCACTATCGTCTGGACCTGGTACAGTTTCAGCGTCCTGCATGGGAAGGCTATATGCGGGTGAATGCGCTATTAGCGGATAAGTTATTGCCCCTCATTAAAGAGAACGACATCATTTGGGTGCATGACTACCACCTGTTACCGTTTGCCAGCGAGCTGCGTAAACGCGGCGTGAACAACC [...]
+CGCCGCTTCTACCGCCGCGTTCAGCGCCAGAATGTTAGTCTGGAAGGCAATACCGTCGATAACGCTGATAATGTCAGCGATTTTTTTCGAACTGTCGGCAATTTCGTGCATGGTGTTTACTACGCCGTCGACCACTTTGCCGCCATGACGCGCGGTCTCGGAGGCGCTTTGCGCCAGTTGCGAAGCCTGACGGGCATTATCGGCGTTTTGCTTCACGGTGGCCGTCAGTTGTTCCATGCTGGCCGCCGTCTCCTCCAGAGCGGAGGCTTGTTGTTCGGTACGGGAAGAGAGGTCGGTATTACCGGCGGCAATTTCACTGGTGCCGGAATAAATCGCATCCGAACCTTCACGAACCTGCGTCACGGTGTCAATCAGCGAGCGTTGCATATGTTCAACCGTTCCCGCCAGTTCGCCAATTTCATTACGTCCTGAGACAGTGAGCGTTTTCGTCAGATCGCCGCTGGCAATTTCACGGATATGAGTAATCACTCG [...]
+NODE	997	7064	415745	411006	0	0
+CGCCGATCCCGGCTGCCTGAAGGCCTGTCCGGCGGAAGGGGCGATCATTCAGTATGCTAACGGTATTGTCGACTTCCAGTCCGAGCAGTGTATCGGCTGCGGCTACTGTATCGCTGGCTGCCCGTTCAACGTGCCGCGCCTTAACCCGGAAGACAACCGCGTCTATAAATGTACGCTGTGCGTCGACCGCGTGACCGTGGGGCAAGAACCGGCCTGCGTGAAGACCTGTCCAACCGGCGCCATTCATTTTGGCTCGAAAGAGGATATGAAAACGCTGGCGGGCGAGCGGGTGGCGGAACTCAAAACCCGTGGTTATGACAACGCGGGTCTGTACGATCCGGCGGGCGTAGGCGGTACGCATGTCATGTACGTGCTGCATCATGCCGACAAGCCGAATCTGTATCACGGCCTGCCGGAAAACCCGGAAATCAGCGAAACCGTTAAGTTCTGGAAAGGCGTCTGGAAACCGCTCGCCGCGTTCGGTTTTGCCGC [...]
+ATGAGGATAATATGACGACTCTGGCGGGAAATCTCGCCTATGTCTCATTACTCTCCTTAGTACCGCTTATTGCCGTCGTTTTTGCCCTTTTCGCTGCTTTTCCGATGTTTTCTGATGTCAGCATTCAGTTACGCCATTTTATTTTTGCTAACTTTATGCCAGCCACCGGAGACGTGATTCAGCGCTATATTGAGCAGTTTGTCGCTAATTCCAACAAAATGACGGCGGTGGGCGCCTGTGGACTGATTGTGACGGCATTGCTGTTGATGTACGCCATTGATAGCGCCTTAAACACTATCTGGCGCAGCAAACGCACACGGCCAAAAGTGTACTCTTTTGCGGTGTACTGGATGATCCTCACGCTCGGCCCGCTTCTCGCCGGCGCCAGCCTGGCAATCAGCTCCTACCTGCTTTCTTTACGCTGGGCCAGCGATCTGAATACGGTCATCGACAATGTATTGCGTATCCTTCCGCTGCTGCTCTCGTGGATCT [...]
+NODE	998	956	43588	42583	0	0
+TCGCTTCGCATTTGGAAAGCCCGGTTGATCTGATATTGTTTCATGCTGTGCTGGAATGGGTAGCCGATCCTGTCGGCGTATTAGAAACGCTCTGGTCAGTATTGCGCCCTGGCGGCGCGCTGTCGTTGATGTTCTATAACGCTAACGGTTTGCTGATGCACAATATGGTGGCGGGTAATTTTGACTACGTGCAGGCGGGGATGCCTAAACGCAAGAAGCGCACGCTGTCGCCTGACTACCCGCGCGACCCCGCGCAGGTGTACCAGTGGCTGGAGGCGATTGGCTGGCAGATTACCGGTAAAACCGGCGTGCGTGTGTTTCATGATTATCTGCGTGAAAAACACCAGCAGCGTGACTGTTATGAGACCCTGGTCGAACTGGAAACGCGTTATTGCCGCCAGGAGCCGTATATTAGCCTTGGGCGCTACATTCATGTCACCGCGATTAAAAGCCCGGCGCTAGCCGCAGATGCAAGGATAACCTATGAGTGAA [...]
+ATCCGCCGCGCGCTTCAATTCGCCGGCCACAATCGACAACTGCATAGAAAGACGCAGCGTAGAGAATTCGCGTTGACGAATGTAGTAATCGGTGATGCCAATCCCGAGCGGGGTTAATCGGTAAATCGCATTGCCTTCCGCCTGCTCGCTGGTAAAGCGGTTCAGCAGACGTTGACGCACCATATCGTTAATCGCGTTGTTCGCGCGCACGCCGATGGTTTCGCTGGTTTGCTCAAACGCATCACTCACATGGCGGAATGCATCCACCAGTTCGCCTTCACTCATCTCGCCGTCAAGGCGTTCGCCGTTCAACGTGGCGACCGCCAGCAGAAAGGAAAGTCTGTCTACCGGCAGCGAGATGGAAAAGTCGTTTTTTCTGGCCCAGGCAACCAGTTCGGGGACTGTCTGGGAAAATTCACTCATAGGTTATCCTTGCATCTGCGGCTAGCGCCGGGCTTTTAATCGCGGTGACATGAATGTAGCGCCCAAGGC [...]
+NODE	999	5272	292963	288556	0	0
+TAAAACGGTGGTGGCCGATGGCATCGGTCAGGGTTATAAAGAAGTACAGGAGATTAGCCCTAACCTACGCTATGTGATTGACGAGCTGGACCAAATCTGCCAGCGCGACCGCTCAGAACTCGATCTCAAACGTAAGATCCTCGACGACTTGCGCCATCTGGAAAGCGTCGTCGCGAATAAGATCAGTGAAATCGAAGCCGATCTGGACAAGCTTACCCGTAAGTAAGCTGTGTGTTGCCGGATGGCGACGTGTTACGCCTTATCCGGCCTACAGATATATCCCCGTAGGCCTGATAAGCGTAGCGCCGCCGGGCTTAACGCTGTTCATCCAATTGTAGCGCCACATACAGCAACAGCCGATCGTCAAAATTTCCCAAATCCAGCCCGGTCAGTTCCGAAATACGATTTAGCCGATATTCCAGCGTGTTACGATGAATAAACAGCGCCTTAGAGGTCGCCAGCGGCTGGACATTATGGCGAAACCACGCCGTC [...]
+CGTCGCCGCTAACAATAAGGCCGCGTACCGCGTTCAGATTCAGCTCCCTGATGCAGGATTCCGCGGCGGCGATCAGTTTGTCATCGGCCTTAAATCCGGCCGGACAGCCCGGTAATTGCCCGTATTCATAGCCGAAAGCGGTCACATCAGCGTCGTGGTAACGCGCTTCGTCAGAGACGACGATATCGCCGACCTTCAGCGTGGACGCCAGACCGCCTGCGGAACCGGTATTGATGATCACGTCCGGTTTGCAGTGCTCCAGAAGCAACGTTGCGCCCAGCGCCGCCGCGACTTTACCGATACCGGATTTCAGCAACGCCACTTCGGTGCCATTCAACTGGCCGGTGTAAATTTCGCAGCCGCCTAGCGTAATCGTCTGACGGTTGTCAATTTTGTCACGCAGCAGCGTAACTTCTTCTTCCATTGCGCCAATGATGCCGATTTTCATAGATTTACTCGCGATAAGTCAGTTTTGAGGGCATAGTTTATCAT [...]
+NODE	1000	134	49793	39590	0	0
+GGGGGACCATCCTCCAAGGCTAAATACTCCTGACTGACCGATAGTGAACCAGTACCGTGAGGGAAAGGCGAAAAGAACCCCGGCGAGGGGAGTGAAAAAGAACCTGAAACCGTGTACGTACAAGCAGTGGGAGC
+GCCGGGGTTCTTTTCGCCTTTCCCTCACGGTACTGGTTCACTATCGGTCAGTCAGGAGTATTTAGCCTTGGAGGATGGTCCCCCCATATTCAGACAGGATACCACGTGTCCCGCCCTACTCATCGAGCTCACAG
+NODE	1001	69	15755	15711	0	0
+CATTGTGTTTGTGTGAAATATTGCTGTAACATCGACGGTCTACGACCACCTACCACCTGAATAGCTGTA
+ATTTCACACAAACACAATGATATAAGCATATAAGCATATAAGCATATAAGCATATAAGCATATAAGCAT
+NODE	1002	368	19117	18915	0	0
+GCACACCTTTCGCTATCAGCGCCTGCTGCATCGCCGAAGGTTCATCGTACTCTTTTTTGCCGTTATCGCCGCTGACTAACAGCCACTTCACTTTACCGGCGTGATACAACGCGGCGGCAGTATTAATCCGCCGGGTAAAATACCGATTGCCGGGTTTAGCGCCTAACACCAGCCCGACGTTGCGGGCGGGAACGGTCTGAATATCATTCCATGTCAGATGCTGCGAGGCGTTGACGATAAGCCAGTTGGAATAGAAAAGCGCGACGCCTGCTGCGACAAGCAGAAAACACGCCACTGTTAACGCCCGGCGTGTAAAACAGAGGCGGCGGATAAAACGGGCACATTGTGAGAGCATGGTTGTTGCGCGG
+GTTTTACACGCCGGGCGTTAACAGTGGCGTGTTTTCTGCTTGTCGCAGCAGGCGTCGCGCTTTTCTATTCCAACTGGCTTATCGTCAACGCCTCGCAGCATCTGACATGGAATGATATTCAGACCGTTCCCGCCCGCAACGTCGGGCTGGTGTTAGGCGCTAAACCCGGCAATCGGTATTTTACCCGGCGGATTAATACTGCCGCCGCGTTGTATCACGCCGGTAAAGTGAAGTGGCTGTTAGTCAGCGGCGATAACGGCAAAAAAGAGTACGATGAACCTTCGGCGATGCAGCAGGCGCTGATAGCGAAAGGTGTGCCGGAAGCGGCCATTTTTTGTGATTATGCCGGATTCTCCACGCTGGACTCC
+NODE	1003	13	4603	1033	0	0
+TTAGTCGGTTCGG
+AAAGGCCAATCAA
+NODE	1004	2444	110892	108619	0	0
+TGGCGGAAAGCGGCATTCAGTTGGGACAAAGCAGCATCAGTAGCGAAAGCTTTGCCGGACAGCAGCAGTCTTCATCGCAACAACAGTCTTCCCGCGCCCAACATACGGACGCGTTTGGCGCTGAAGATGACATAGCGTTAGCGGCGCCGGCCTCGCTTCAGGCCGCCGCGCGCGGCAATGGCGCAGTGGATATCTTCGCCTAACGCCAGAGGTAGCATGATTATCCGCGTCTTTTCCACGCTTTGTCGTGGACAGGACACGGGATAATCAGCCAATAAGCAGTACCGAAACAGGAAGCCCGTATCAGATGACTGACTCCGCGATTAACAAAAAGAGCAAACGCTCGATTTGGATACCTTTGCTGGTGTTGATTACCCTCGCCGCCTGCGCGACCGCCGGTTATAGCTACTGGCGTATGCAGCAGCAACCGACCACGAACGCTAAAGCGGAACCGGCTCCGCCGCCCGCGCCGGTATTTTTTGCGCTGGATAC [...]
+TTCGCGCGGGCCAAGCGAGGCGCTGGCTGACACCTTGAGTCCCCGGACGCTATTTCCTTTTGGTACGAATCCCATACGCTTAATCACCCAGGCCGCCGCCAAAATGAGCGCAATAATGCCAATTAATGCGCCGCTCACCTGCATGAGCGGCGATCCGGCTGGCGCGGTGGGCTGAGAAACCGTGGCCTCTGTCTTCATCATTAACGACTCAAACGACGCATACGCTCGGATGGCGTAATAATATCGGTGATACGTACGCCGTATTTATCCGCCACGACGACCACTTCACCCTGGGCAATCAGGTAGCCATTAATCAGGATATCCAGCGGCTCGCCGGCCAGCCCGTCCAGCGCGACGACCGACCCCTGCGTCAGACGCAACAGTTCTTTAATGGTCATTCGCGTGCGGCCCAGCTCTACGGTCAGTTTGACCGGGATATCCATAATCAGATCGATATCCTGCATAGCACCGCTGACATCGCCGCCGCCAAGC [...]
+NODE	1005	6232	321123	315567	0	0
+AGGGTGAGCATGAGCTTTCCATCCTTACCGGAGTTGAACTGGTTGTCAAACGCGGCGAAACCATTGCGCTGATTGGCGAATCAGGATCGGGAAAATCTACGCTGCTGGCGATTCTCGCCGGACTGGATGACGGCAGTAGCGGAGAGGTTAGTCTGGTGGGGAAACCGCTTCACCAGATGGACGAAGAGGCGCGGGCGCAGCTTCGCGCTCAGCATGTCGGTTTTGTTTTTCAATCCTTCATGCTTATTCCTACGCTTAACGCGCTGGAAAACGTTGAGCTACCGGCCCTGCTACGCGGTGAAAACAGCGGTCAGAGTAAGGCGGGGGCGAAAGCGCTGCTCGAACAACTGGGACTGGGAAAACGGCTTGACCACCTTCCGGCACAGCTTTCCGGCGGCGAACAGCAGCGCGTAGCGCTGGCGCGCGCGTTTAACGGGCGTCCTGATGTGCTGTTTGCCGATGAGCCGACGGGCAACCTTGACCGTCAGACCG [...]
+GGGCAAACACATCAAACACCTCGCCCGATTCCACAACCTTACCGCTCGACATCACCGCCACGCGATCGCAAATAGATTTGATCACGTTCATTTCATGGGTGATCAGCACAATAGTAATCCCGAGCTGTGCATTGATCTGTCTGAGCAGGGCCAGAATCGTGGCGGAAGTTTCCAGATCCAGAGCGGAAGTCGGTTCGTCACATAGCAACACATCCGGATGGTTAGCGATGGCGCGGGCTATCCCCACCCGCTGTTTTTGCCCGCCGCTGAGCTGTACCGGAAAACGGTTCGCTTTATCGGCAAGGCCCACCAGCGTTAAAATTTCCGCCACCCGCGGCGCGATTTTGCTGCGTTCCCAGCCAGCCGCTTTCAGGCTAAACGCAACGTTTTGCGCCACTGTCCGGGTATGCATTAAGTTAAAATGCTGGAAAATCATACCAATACGCTGCCGCGCCTGGCGTAACGCTTTTCCGTCCAGCGCCGAAATTTCCA [...]
+NODE	1006	14	5190	5059	0	0
+CTCCAAGTAGACAT
+GTTAAGTAGACCGC
+NODE	1007	25	3049	3023	0	0
+GTCTGGCAATACGTCAGGAGGTCTG
+GCGTAAGGCATACGTGCCATCCGGC
+NODE	1008	226	12000	12000	0	0
+ACGCTGGCCGGCCCCAAACTGGCTTCAACAATTACGCCTGGTGGGATAGGCTCTTATCCTGAAATGATGCTCTGCGAAGAATTTATAAGTATATAAGGGTGGGAAGGCCAGGCCTTCCCACTAAAAGTTCTATGCCGTCAATGATTCAACCACGTCTATCCAGCCATGCTCGCTGGTAATGTCCTCGCCATTAAGCCAGCGGCGCAGCATATTTAGCGCCATCACC
+CCAGCGAGCATGGCTGGATAGACGTGGTTGAATCATTGACGGCATAGAACTTTTAGTGGGAAGGCCTGGCCTTCCCACCCTTATATACTTATAAATTCTTCGCAGAGCATCATTTCAGGATAAGAGCCTATCCCACCAGGCGTAATTGTTGAAGCCAGTTTGGGGCCGGCCAGCGTGCAGAAACCGGAGCGTACACGTAGTACGTGAGGATTTTGAGCACTGCCCG
+NODE	1009	1026	171277	169641	0	0
+TTTCAGCATTATCAAAAGGAAGCATGGCAGTTTTCATCCAGGAAGAACATTTAATGCCCGGAAAGCGTTTCTTGGTGATTGTCCGTCAGCACCTGGAGATATTGTAGGCAAGATACTTGATAAATACGGAAAATTACGCTGGTAACAGAAGGGGTAAACAGTGGCAAGAAAAGGTGTAAATGAAGTCACCCTGGTTGGTTTTGTTGGTAATGCTCCGGTGATATCTCAGGCCAGTAGCGGGGATAAGATCGCGGTTATTTCCGTTGCAACAACTGAAACATGGACGGACAGAAAGACAGGTGCTGAAAAAGAGAAAACCGAATGGCATCGAGTTGTTATTTTCGGAAAAACAGCCGAGATAACGGAACAATATGTAAAAAAAGGCACATTGCTGTACATTCGCGGGAAACTGCAAACCCGTAAGTGGCTGGACCGAGACAATATAGAGCGTTACAGCACGGAAATTATTGTTAATTCGGCAGGGGGAGAAAT [...]
+TTGCATGAGGCGGATTATGCTGTATATAACGCGCCAGCACTGCTTTAGCTGCCTTATCGATACGAAGCCCATAGAGCAATTCATTCGCGTGATAAGGCCGGTATGGCAAGTTTGCCGCAAAATAATCAATTGCCGGACTAATCATATGGCCCTGCACTTATGCCTGAATGACACATTATTTTTCTTGCCGTTACCGGATGATTTAAATACAATTTAAATGGGCTTTTATAGTCCCCTGATAATGCCCACAAGCTGACTCTGCCAAGTATCAACCTCATGGGTATTATCATCCCCGTAGTAAAAACCAAAAACGCCGGGGTCACTCGGAACTTGCTTCTGAGTGACTCCGGGGTTGAACAAGCCGAAGGCGCGTTAGTCGGTTTCATTGCTTTGCTGCTTGTCCGTACTGCCAGCGCCATTTTCAGGAATGTCGTTTCCGGCTTTTCCTCCGGTTACTTTATCCTGGCGACTCCCCAGCATTTGCATTTCTCC [...]
+NODE	1010	51	2341	312	0	0
+TTGCTGATAACTTCGCCAGTATGAATCCGGTTGCGAAATGGATACTCATCG
+ACCACCCCCAGCCCCGGTCCCAGGTTATTAAGCGTAGCCACTACCGAGGCG
+NODE	1011	3787	232405	230585	0	0
+GACGGTGAAATGGGGAGCACAGCAATGTCGGGTTAACTACCACCTACCTGCCCACAAGGGAATCGCGGGCTTGTATCAAATGAGCGGTCTCTGCAGATAGCCGATTCTGAAGGAGAGAATAATGTGGATGAAAATACAGCGAGTGAAAACGGTTATCTATAGCGTAAGCTTACTGGTCGCTGCCAGTAGCTTGGTGCCGATAGCGAACGCCGCAGAAAAACTTCAGACAACGCTACGTGTAGGGACTTACTTTCGGGCTGGGCACGTGCCAGATGGGATGGTGCTTGCGCAAGGCTGGGTGACTTATCACGGCAGTCACAGCGGGTTTCGGGTATGGAGCGATGAGCAAAAGGCGGGTAACACGCCTACCGTATTGCTGCTGAGCGGGCAACAGGATCCTCGCCATCACATTCAGGTTCGCCTGGAGGGCGAGGGGTGGCAACCAGATACGGTGAGTGGTCGTGGCGCCATTTTAAGAACCGCTGCAGATAA [...]
+TCCGGGTATTATCATTTCCGTCAGTCGGCATCATGTTTTGTATTGGGCATCGTCAAAAGACGACTGGCTGACCAGTCGCATATCTCGATGCCTCAATTCAGTCATCATCATGTGGGTTTAAGTCAGGAACGTGTCAAAACCATTCCAAACGGGTTAATCATCATTCAGAAAATCAATTTGTGGGCGATTATTCCATTTATCTTCAATAAAAGACAGAAAGCGTTGAAATAAAGGAGAATAATACTGACGATGACGCCATACAAGATAAATGGGGAGATCTGGAACCCTCCATTCAGGAAGTATAATTTCAAGTTCATTATTTTTTAAGTATTTGGTGGCAAGCCAGGCCGGAGTCATGAGGTTGATACCCTTTCCTTCTAAAACCAAATTAAGAACACTCAAAAGATTATTGGAAGATAAATGAACATTAACAGCGCCACTAATAGTGTATGATTCATCTTGACGGAAAAGAGTAAGAGGTCCGGAAAGACC [...]
+NODE	1012	3522	198535	196341	0	0
+TTTTTTGGCAAGGGCAACAAGCATCAGATCTCTTTTGCTGCGGGAGAAAGTATAAGGAGAGGAGGGGTTGAGCACTTATATACGGCTTTTCTGACATACAGTGAACCCAGCGATTTTTTCTTTTTACAGGCAAGAAATAATCTGGAGTTAGGAGGATTTAAGGCTAAGGGTAGTGATGATTGCAGTAAACATTCTGGCAGCGTTCCCTGCAATAAATATAACCAGGGCGTATTGGGTATCTCGAAGGATGTGGCGCTGGTTCATTTCGCTGGCATCTATACCGGTATTGGTCTGGGGGCTTATATAAAATCTAAGTCGCGAGATGATATGCGTGTCAATTCTGCATTTACCTTTGGAGAAAAAGCGTTTCTTGGCTGGAACTTTGGGGCTTTTTCTACAGAAGCTTATATCCGGCATTTCTCGAATGGATCACTTACGGATAAAAATTCAGGGCATAATTTTGTAGGTGCTTCAATTAGTTATAATTTCTGA [...]
+TTGCGCCAGTTCACTCTCTTCGCTAAACAGGCCATACGCCTTATTCTTGGCGCTATAGACCCGATGCAGTTCAGCCACCATCTCGACAACGGTGGTTGTCGGCTCCAGCAATGAATCGCGCAAGACCAGCTCAAGATTTTGCTCATCGCGCTTGATAAGCTGGTGCAGGGCAATCTGGTTGATATCCAGACTCATGATAAACTCTCCTTTAAGACCGGGCGGTATTCAACCACCGCCTGCCGGAAGACGCAAGCAATCGCCCTGTCATTTCAGGCGTTATCCGTAACGCGAATGATTTAGGGGATAAAAATGCAGAAAAAAAACTGTTGCTACGGTAATATGTTGCCCTTTCATGAACAAACAGATTTTGATTTATGCCACAACTCTCCCGCTATAGTGATGAACATGTTGAACAACTGCTGAGCGAACTGCTCAGTGTACTGGAAAAACATAAGGCGCCGACCGATCTTTCCCTGATGGTGCTGGGAAATA [...]
+NODE	1013	4625	223758	221592	0	0
+TAGCGATGAAATCGATATCGGGCGTCTGGTCGGAACGGTGATTGAAGCGCGTTGGTGGGTGTTGGGGACGACGGCCATATTTGCGCTGTGCGCGGTAATTTATACGTTCTTCGCCACGCCCATCTATAGCGCCGATGCGCTGGTGCAGATTGAACAAAACGCCGGTAATTCGCTGGTACAGGATATCAACAGCGCATTAGCGAATAAGCCGCCGGCTTCCGATGCGGAAATTCAGCTCATTCGATCGCGCCTGGTGCTGGGGAAGACCGTTGACGATCTGGATCTGGATATTGCCGTCACCAAAAACACCTTTCCGCTCTTTGGCGCCGGGTGGGAACGGCTGATGGGACGTCACAATGAAATGGTGAAAGTCACGACATTCACCCGACCAGAGACGATGAGCGGACAGATCTTCACCCTCAAAGTGCTGGGCGACAAACGTTATCAGTTAGTCAGCGACGGCGGATTTAGCGCGCAGGGCGTTGTGGGCCA [...]
+GCTAGCACCTCCTGCGCCGCCTCGCTGTGGGTGGCGATTACCGGTACGCCGATCGAGAGCGCTTCACACAAGATCAGCGGATAGTTATCGACCCGCGAGCTAAAGACCAGCGCGTCCATCTCATTGAGCGCGCTCATTAATTTGCGCTTATCGGTTTCAAAACCGTGATTAACAACGTTTTGGCTGGTAAAAGGCGAAAATTTACCGAAGGTGTGCAGTTCAATTTTTTCGCCCAGCGCCATCATGTCGTGTACCAGACGCTGGTCAGTTTTGCCGTCGTAACGCAAGTCATGCGCCACAATGGCGATCCGCGGTTTGCCCGGATTCAGCGGCACAGGTGATAGCTGCGCGAGAATCGCCTCGGTCGCCAGATCGATACCGTTGTTAATCACCCGGCAGAGTCCCGCGCCATAAACGCTGTTAAAGGCCTCGGCCACATGCTGGCTCGGCGAAATAAACTGGCAGCCCAGCCGCAGCATGTCCCGAAAGCGC [...]
+NODE	1014	3299	145057	143136	0	0
+CAGCTTGATGCCAATATTCAACGTCTTCATTATTCGCTGGAAATCGCCAACGCCGCCGGTATTAAGAGACCGGTTTACAGCAATGGTCAGGCGGTAAAAGATGATCCGGATTTTTCTATTTCTCTCGGCGCGGATGGTATTTCCCGCAAACTGGAAATTGAAAAAGGGGTAACGGACGTGGCCGAGATCGACGGTGATTTGCGTAACCGTCAATACCATGTTGAACAACTGGCGGCAATGAATGTGAGCGACGTGAAGTTTACCCCGTTTAAGTATCAACTGTCGCCGTCTCTGCCAGTGAAAAAAGATGGCCCGGGTAAAGCGGTCATTATTATCCTGGCGGCGTTGATTGGCGGTATGATGGCCTGCGGCGGCGTATTACTGCGTCACGCGATGGTCTCACGTAAAATGGAAAACGCGCTGGCGATAGATGAACGGTTAGTCTGATTTACCCGAAAAGCCGGATAGCGATATCCGGCTTTGTCATCTGTG [...]
+GCCCGGATTGTTGTTATTACTGAGTCTCGCCGCGGTTTTAAGCCTGGTCATTGGCGCGAAACCGCTGCCCGCCGCCGTCGTGCTGGAGGCGTTCACCGGCGTGTGCCAAAGCGCCGATTGCACCATCGTCCTGGATGCGCGTTTGCCGCGTACGCTGGCCGGATTACTGGCAGGCGGCGCATTGGGTCTCGCCGGGGCGCTCATGCAAACACTCACTCGCAACCCGCTCGCCGACCCGGGGATTTTGGGCGTTAACAACGGCGCCAGCTTCGCCATTGTACTGGGCGCGGCGCTGTTTGGTTTCTCCACGCCGCTGGAACAGCTTTTCATGGCATTTAGCGGCGCGCTTATCGCATCGCTGATTGTCGCCTTCACCGGTAGTCAGGGCGGCGGCCAGTTAAGCCCAGTCCGCCTGACACTGGCGGGCGTGGCGCTTGGCGCGGTACTGGAAGGATTGACCAGCGGCATCGCGCTGTTAAATCCAGAGGTTTA [...]
+NODE	1015	51	4328	4328	0	0
+TGGAGGACGAAAACCGGGCCGGAATGGATACGGGAAAAAGACGGAAATTAT
+ACCAGGCCTCACTTCCCGTTGCCAGCGCCTCTTTCATTATAACCCTGTGTT
+NODE	1016	749	48566	48282	0	0
+TGTGGCGGCGATGCAGCGTATGTAACTCGCTATCATGAAAACTTTGTACGCCAATACTGACGCGATTAACGGAAAAGGCGTTTAATAGCGCTACTTTTTCTGCCGTGGTATCCGTAGGGGAAGTTTCAATTGTTTTATAAATATTCCAGTCAACATTGAGCACATCAAAGATGGAAAAAAATAACTTCTCTAATTGCGCAATGTTTAATAGCAGAGGTGTGCCGCCGCCTACGGTAAAGCTTGCCCAGTGGACGGGCGCCAGCGCCATTTGTTGGCCCTGGGTAATAATCGTGTCGATATAGCTATCAATGAACGTATTATCTGCGCCTGTACAGGTAAATAAATTACAGAACCCGCAGCGACTTTGACAAAACGGCATATGAACATACAGATGTGTGTCGTGCTCGTAAATGCGCGGTTTTACTTCGCTAAAGCTGACGTTCTCCAGCTCCCGATAAGCCGTCTTATGCGGATAACTGTACATATACTGAC [...]
+TATCGACGCCCGCATCGACGGATTACTAAACATTTTCCGCCAAACCGGCGGCGAAACGTTCGTTATTGTCTGTTCCGATCACGGTACCTGCTATGGCGAAGACGGGAAATATTTCCATAGTTTTAATCATCCGATCGTTAATACCGTTCCCTATATGCATTTCTTGCTGAGCTGTAATCATTAATATGAATAACAATGATATTTATCGTCAGTATATGTACAGTTATCCGCATAAGACGGCTTATCGGGAGCTGGAGAACGTCAGCTTTAGCGAAGTAAAACCGCGCATTTACGAGCACGACACACATCTGTATGTTCATATGCCGTTTTGTCAAAGTCGCTGCGGGTTCTGTAATTTATTTACCTGTACAGGCGCAGATAATACGTTCATTGATAGCTATATCGACACGATTATTACCCAGGGCCAACAAATGGCGCTGGCGCCCGTCCACTGGGCAAGCTTTACCGTAGGCGGCGGCACACCTCTGCTAT [...]
+NODE	1017	41	2388	2111	0	0
+TTTCATAATGATTGCATCAGGATTTTGCCACCCGCTCCCGG
+CCCGCCAATTAAATTGGCCCACTTGCACAGCGCTTGATAAT
+NODE	1018	3308	161450	159442	0	0
+TCAGCAGAGTGACAGAAGCCCTAAGCAAAGTGAAGGGATCGATAGGAAGCAACGAGCGCCATGCCTTGCCTGGCGTGATCGGTGACGATCTTTTGCGGTTCGGGAAGCTGCCACTCTGCTTGTTCATTTGCATCATTTTAACGGCGGTGACGGTGGTCACGACGGCGCACCATACTCGTTTACTCACCGCGCAGCGTGAACAACTGGTTCTGGAGCGCGATGCATTGGACATTGAATGGCGCAACCTGATCCTTGAAGAAAATGCGCTCGGCGATCACAGCCGGGTGGAGCGGATCGCAACGGAAAAGCTGCAAATGCAGCATGTTGATCCGTCCCAAGAAAATATCGTAGTGCAAAAATAAGGATAAACGCGACGCATGAAAGCAGCGGCAAAAACGCAAAAATCGAAGCGCCAGGAAGAACAGACCAACTTCATCAGTTGGCGTTTTGCGTTGCTGTGCGGCTGTATTTTACTGGCGCTGGTTTTTTTAC [...]
+GCAGTGCAGGCGCGCCGCCTGCAACGCTTTTTCCAGCGCATCCGGCGTGTGCGCGTAATCCACCACCACCGTCGGTTTGCCAGGCGCAGTGAACACTTCCATACGCCCGCAAACCGGCTGCAAACGCGCGGCGGTTTTCAGCAAATCCGTTAACGGATAGCCCAGCGCCAGCAGCGTCGCCAATGCCAGCAGTAAGTTGCTGACGTTAAACGCGCCCATCAGGCGGCTTTCGATTTCGCCTTCACCCCAGCTTGAAGCAAAACGAATCGTCGCTCCGCGGTCGTGGTACTCCACCGCCTCCGCTTTCAGCCAACGACCGTGACAGTTAGGGTTGATATGCCCTTCCATTGATACCGCGACCGCATCGGGTAGCGACGCCAGCCAGCGGCGTCCAACTTCATCATCGGCGTTGACGATTGCCTGACCGTGATGGTGGGTGGAATAAAGCATCCATTTTGCCGCCTCGTAATGCGCCATATCGCCATGATAGTC [...]
+NODE	1019	1537	86348	85970	0	0
+GGCGCGATGATATTGTCGAATTCCGCCTGCTGTGCCGGGTTCTGCGGGGATAACGGCGGGAAAAGCGTCCGGGCAAGCCCGGTAAAATAGCCCGACCCCATTAAACTGGCCCCGCATTTTACCTCACGGTGACGCGTCATAATGCCCAGCGCCGTCATACCGCCCATGGATGCGCCGCCCACCGCCAACCGCCCGTCAAGTAGCCAGTTTTCCGCCTGAATCGCCGCACGTAACGTCGTAAATTCCTGCATGTTTTGGTGCAGAATCTGCCAGAATCGGTGTATCCGTCCCTGTGAGTCGCCGCCGAAGCGAGCGCCATGCTCCGGCGCATCCGGCATGACTACCCGGAATCCTGCCTGTGCCAGGGCAACGGCAAAATAACTATAAACCAGGCTGGAGGAGGTGAAGCCATGATAGAACACCACACAGGGAAGCGGCACGGCGCGTTTCCCTTCCGGGAAGGCATGTAGTACGACGCCTCCGGCTAATTGT [...]
+GGACTGCGGTAACGTTTGGCCTGTAGTACATGCCATCCGGCGCGAGCCACGCGGCATCAGGCATAGAGTATCGCCTGTACGCGCCAGTTATCCGACTGTTGTTCTTCATACATTTGAATAATTCTGTACCAGGACGCACCCTGTTCATCGGCTTTCAGGGCGATAATCCGCTCCACATCCTGTGGGTTTCCTGCAACATTACTGACCGAGATCAGGCCGATTTCATTCAGACCCGTTACGCAGTCAGCACTGGCGAATTCGGCAGACTGTGCCGTCGTACTCACCAGTCCGGCAGAAAGCAGCAGTGAGGATAAGGCAAGTTCTTGTTTCATCGTCAGCTCCTTATTACATACCCCGCATTTAACAGGACGCTCCATCACGGTAAACCTGTTTGTTTATTGTGCACAGGTAAACGCATAGGGGCGCAAAGCAATGTAAAACTGACTAAAAATCAATCTACTGTTATTGACGATACAAAATGGCTTGTGAATA [...]
+NODE	1020	51	2874	2788	0	0
+TGGCTACTACAACTGCGATTTTACGCAGTGAAGAGTTTGGCTGAGCAGTTT
+ACAGCGGTTAGCGGCATGTCTGTCTATGCACAGGCGGCGGTTCAACCGAAA
+NODE	1021	892	50153	49784	0	0
+CGACAACCAGGCGTTGCGTGAAGAGATGTATCGCGCCTATTCCACTCGCGCCTCCGATCAGGGGCCGAACGCCGGTAAGTGGGATAACAGCCCGGTGATGGAAGAAATTCTTGCGCTGCGCCATGAACTGGCGCAACTGCTGGGCTTCGAAAATTATGCCCATGAATCGCTGGCCACCAAGATGGCGGAAAATCCGCAGCAGGTGCTCGATTTCTTAACCGATCTGGCGAAACGCGCCCGTCCGCAGGGGGAAAAAGAGCTGGCCCAGCTGCGCGCCTTCGCCAAAGCCGAATTTGGCGTTGAGGAGCTGCAACCGTGGGATATCGCGTACTACAGTGAAAAGCAAAAACAGCACCTGTACAGCATCAGCGATGAGCAGCTACGTCCGTACTTCCCGGAAAACAAAGCCGTGAATGGCCTGTTTGAAGTGGTGAAACGTATTTACGGCATCACCGCCAAAGAGCGTACTGACGTTGATGTCTGGCACCCGGA [...]
+TTTCCATAAACTGACTTGGCAGTTCGACCGCGTCCCACGGCACGCCGCTGATACCGGAGACCCCGGCGGTCTCAATGCGGGTCAACATATGATGCAAGCCATGACCAAACTCGTGGAACAGGGTGATCACTTCGTCATGGGTAAACAGAGCGGGTTTACCGTTCACCGGACGGTTGAAATTACAGGTCAGATAAGCGACCGGCTTTTGCAATGTGCCGTCCGCCTTACGCATCTGGCCGACACAGTCGTCCATCCACGCCCCGCCGCGTTTGTGTTCGCGTGCGTACAGGTCAAGGTAGAAGCTGCCGCGCAGCTCGTTATTTTCATCATACAGTTCGAAGAAGCGCACTTCCGGGTGCCAGACATCAACGTCAGTACGCTCTTTGGCGGTGATGCCGTAAATACGTTTCACCACTTCAAACAGGCCATTCACGGCTTTGTTTTCCGGGAAGTACGGACGTAGCTGCTCATCGCTGATGCTGTACAGGTGCT [...]
+NODE	1022	27	953	953	0	0
+ACCGGCGAGCCGTTGCCGAAGGAACTG
+CCAGCGCTTCCGGCTCCCAGCACCAGT
+NODE	1023	24	865	865	0	0
+CTGGATAAAATGCTGGCGGCGAAA
+TTTCATAGTGGCCGGAGATAAACG
+NODE	1024	96	6331	3729	0	0
+TAACGCAACAATTACAGCGGGATGAAAGCGAGGCGCAGTCGTTGTTGCAGGAGGAGCAAGCGCTTACTGAGGAATGGCAAACGCTGTGCGCTACGC
+AACAACGACTGCGCCTCGCTTTCATCCCGCTGTAATTGTTGCGTTAAGGCATCTAACTGTCCTCGCAGCGCCGCGCCTTCTTCCGCCAGCGTTTTG
+NODE	1025	7193	371086	364294	0	0
+CGCCACCAGCGCGGCGTCGGTGCCGGGGCGAATAGGTATCCACTCGTCTTCACGTCCGGCAGCGGTATCGGTATAGCGCGGATCTATCACGATCATGCGCGCATTTGAGCGTTCACGCGCTTGCTCCAGAAACCAGGTAATGCCGCCGCCGCTCATGCGTGTTTCAGCCGGATTATTGCCGAACATGACCACCAGTTTACTGTTTTCGATATCAGATGTGCTGTTGCCGTCGTTGGAACCATAGGTGTAGGGCATGGCGCAAGAAATTTGCGCGGTACTGTATGAGCCGTATTGATTCAACGAACCGCCGTAGCAGTTCATCAAACGCTTCACCGGCGAGGCGGCAGGCGACGAGCGGGTTATGTTGCCGCCTACGATGCCGGATGAATAGTGGATATAAACGGCTTCATTGCCGTAGGTCTCTACGGTCTTTTTCAGGCTGGCGCTAATGGTGTCCAGCGCTTCCTGCCAGCTAATGCGTTCAAATTTGCC [...]
+GATCCGAAAATTTCAGCCATGGTGATGTTTTCCAGCGCAAATAATCCCAGCACGGCAAAGTTATGAATAACAATGAGCGCCGCCATAATTACGCCAGGGCTATACGTTTTATCTACCACAATAGACAGCATCGGCCAGGCGAGGATAATCGCGGAGATATTCAATATTATATACGGCAGCCGACGACCGTATTTATCGGACAACCACCCCAAGAGTGGGATAGTGATAAAACCAATTACGGAACTTATCATTAACGCATCGGTTGGGATAGATTTGTTAAATAATAACGTCTGAACTAAATATCCGGCAAGGAAGGTTTGAATAAGCCCGGAATTCCCCGCCTGCCCAAAACGTAAACCGGTGGCCAGCCAGAAAGATTTGCTGGTAAACATCGCGCCCAATGTATTTTCTGACGCAGGCGTTAACGCTGGCGATTTTTCGCCTTCGCTTACTTTTTCGAATACCGGGCTTTCTTTCAGATTCATTCGCAGC [...]
+NODE	1026	1084	60022	59446	0	0
+AATCGCCTCCACATCCTGACCACATTCCAGTACCTGGCGTACCATCGCGCCGCAAACCTGCTCCAGATGTCCATAATCGACGCCGGAACCAATGTGCATATGGATACCGACAAGTTTCAGTCGGTATTTCTGCATTACCGCCAGCGCCGCCGGAAGATCGCTATGCCAGATGCCGTGTTTGCTGTTTTCGCCCCCGGTGTTGGTTTTCTGGCTGTGGCCGTGACCAAAGCCAGGATTTACGCGCAACCAGACGCGATGCCCAGGCGAAACCTGACCAAGCTGCGTCAGCATATCTACCGAGCCAGCATTGACCGGAATATGCAGTTCACTGACGCGCGCCAGCGTGGCGGCGTCAATCACATCGGCGGTAAAAACGATATCATCAGGGCACGTTTGCGGATCGTAGCCCGCCGCCAGCGCACGTTCGATCTCCCCCAATGAAACAGAATCCACCTTGACGCCCTGCGCGCGCATTAAGCGCAGGATATGAAT [...]
+GCGCTGACGATGCGATCCAACCCATACCAGGAGCGTTGTACCTCTTCGAACAGGCGTAGCCCTTGCACCGTCGGATGTAAGCGCCCGCGTGTGCGCTCAAACAGCGTTAATCCCAGCACTTTCTCAAAACGCGCCAGCTCGCGACTGACGGTAGGCTGCGAGGTATGCAGCAGCCGCGCCGCTTCGGTGAGATTTCCGGCGGTCATTACGGCATGAAAAATTTCAATGTGACGTAAATTAACGGCAGCCATACGTTTTCCTGAATCATTTATCCCATATCATTTTTGCATAGACTGACAATAAAACGATATTTTTTATTCTTTCTAAGGTATGGCGTAATCGTTAAAAAGCCTGTTCCGGAGTTTGTTATGTCATTGTCGCATTATTACGCTGAAACTGACCTTAACGCTGAAAATTTGCTCAGATTGCCTGCTGAATTCGGCTGTCCGGTCTGGGTCTATGACGCGCACATTATTCGCCGTCAGATAGCCG [...]
+NODE	1027	2211	121713	120921	0	0
+ATCAGCTCAATCACATCACCACTGGTGCCGGACTTCATCGTGAACATCAGCGCCGCCATCCGGTGATAGTGTTCAATTTCATCATCGGTAAGCGTGCTGACATCCACCAGGCTGAATGGCTTTTGCTCGCCATAAATCTCGCGTCCGTACGCCGGGTCATCCAGACAATCCACCCAGTTCATCGGATACGGATATGGCCGCTTTGCACCATGATAAAACAGCACCGGGATCACTACTGGCGCACACTTATGCTCTTCAATATGCTGCTCCATCACCGCCAGGATATAACGCATCATGCGCAGTGGGATAAATTTATCCGGCGAACTCTGGTGCTCTATTAAAGTATAAATGTACCCGTCCTTCCCGTCATTTGTCTTCATGCTGAGCAAAACATCGCAGGCAGACTGGCGTAAACTTTCTGCCACAAACGTCGTGGGTTCAAGTTCTATTGTATCAAGATTACAGCGGGATTTCTGATACGGTGTCAATACC [...]
+TACATCCCTGACGTACGGGCAAATCTGCACACCTTTGAGAGCAGATGTCACCGCTTTTTACGTGTGATGAAGGCTTTTTTTACTGCACAGACAGCCGGAAATACAGCTGATTCCGGCCCCCCGACGGGAACTATCACACCCGTCAGGGGCGGTGGTGTTCTCCGTCATATCTTTTTTTATCCATGGAGAACACATCATGTCTGCAACAAATACTTCTTCTGCAAAAGCTGAATACTTCAATCTGACCGTAAAAGGTCTGGGGTACCTCAGTAATGTACGTCAGGTTAACCATCAGAATGGCTCGTTCCTTTGCTGCGTGATTAACGCACTGAGTGGACCAACGGACAATCCGTCCTATACGCGTTTTGATGTTACGGTTGTTGGTAAAGATGCAACCACCCTGATCTCTCGCTGCCAGAAAGCAGTGGATGAGGACCGTAAGGTTTTGCTTGGCTTTGCGTTAAGCAACCTGGCCACCGATATCTTCACCCT [...]
+NODE	1028	769	46080	45907	0	0
+GTATCGTCTGCTTTCGCAACCGAAGCGTATTACCCGCCAGATGCGTCTGCTGCGCTACCTTCGCTGGCACTATACTGGCGATCTCTAATTCTCCCTTCTGATGACTTGAGCAGCGGATTGTGCTTATGGCGCTGCTCATTTACAACATAATCGATGATTTCTTACACAATAAGTGCATTTTTTTAATGCTCCATTTGCCATTTGTCCAAATTTAAGAAAATATTCGCAACAATCGATGTACCCATAACAATAACCGGTACTACCGGAACCGTTGCAAACACGACATGAGGATTTATGGCAGAGAAAAAACCGGAGCTACAGCGTGGGCTGGAAGCTCGTCATATTGAATTGATTGCCCTCGGGGGCACCATCGGCGTCGGACTCTTTATGGGCGCCGCCAGTACGCTGAAATGGGCGGGCCCGTCAGTGCTGCTGGCGTATATCATCGCCGGATTGTTCGTCTTTTTCATCATGCGTTCGATGGGGGAGATG [...]
+GCAGCCAAATTCGCCAACGCAACCAGTCCGACGGCAATCAGCGCCGGTATCCACTGCGCCATCTCCGGAAACCAGAACTGGACGTAGACCCCAATGGCGGTAATTTCCGAGATCCCGACCGCCATCCACATAAACCAGTATGACCAGGCGGTAAGATAGCCAAAAAAAGGACTCATATACCGGTGGGCGTACACGGCAAAGGAGCCGGTAACAGGTTCCAGAAAGAGCATCTCCCCCATCGAACGCATGATGAAAAAGACGAACAATCCGGCGATGATATACGCCAGCAGCACTGACGGGCCCGCCCATTTCAGCGTACTGGCGGCGCCCATAAAGAGTCCGACGCCGATGGTGCCCCCGAGGGCAATCAATTCAATATGACGAGCTTCCAGCCCACGCTGTAGCTCCGGTTTTTTCTCTGCCATAAATCCTCATGTCGTGTTTGCAACGGTTCCGGTAGTACCGGTTATTGTTATGGGTACATCGATTGTT [...]
+NODE	1029	5630	301782	300926	0	0
+AGCGCGTTTGATATCAGCGGTTTCATCAATGACAACCGGGGTGTTGCCTGCGCCTACGCCGATTGCCGGTTTACCGGAGCTGTATGCAGCTTTAACCATGCCTGGACCGCCAGTGGCGAGGATCAGGTTAATATCCGGGTGGTGCATCAGCGCATTAGACAGTTCTACGGAAGGTTGATCGATCCAGCCAATCAGATCTTTCGGCGCGCCGGCAGCGATAGCCGCTTGCAGAACGATGTCTGCCGCTTTGTTGGTTGCTTCTTTAGCGCGCGGATGCGGAGAAAAGATGATGGCGTTACGGGTCTTCAGGCTAATCAGCGATTTGAAGATCGCGGTAGAGGTCGGGTTAGTGGTTGGAACGATACCGCAAATAATGCCGATAGGTTCAGCAATGGTGATGGTCCCGAAGGTGTCGTCTTCAGACAGCACGCCGCAGGTTTTTTCATCTTTATAGGCGTTGTAAATATATTCAGAAGCGAAGTGGTTTTTAAT [...]
+CGCCGATGGCAACGCGCACCAACAGATCGCGCCCGGAAGAGTCAGTGCCGAAATAGTGACCGGACGCCATATCCGGCGCGCTGGACATCATGCCCCAGTCGGTATCGAAATAGGTAAATTGCGACAGCATAGGCGCCACTGTCACGAACAGGGCTATCAGAAACAGGACAATAAGACTGGCCACCGCCGCACGGTTATGCATAAAGCGTCGGCGGGCATCTTGCCAAAGGCTGCGACCTTCCACCTCCAGCTTTTCACTGAAATTTTCCAGCGTCTCGCTGTTTTTCTTACTTAACATCATCGCGAGCTCCAGTATCAATAGCGAATTTTCGGGTCGATAACGGCATAGAGCACATCGACAATGGCGTTAAACAATATGGTCAGCGCCCCAACTAAAATGGTCAAACTTAACACCAGCGAGTAATCGCGGTTGAGCGCGCCATTAACGAAAAGCTGCCCAATGCCCGGTAAGCCATAAATCGTTTCAATCAC [...]
+NODE	1030	360	18771	18541	0	0
+GCATGTTTGCCTTTTTTCGCCGGACGCGCCGCTTTTGCATTACGGCCACGACCACGACCGCCTTCTACTTCACGATCGTTTTCGTCTTCGGCCTGGCGCGCGTGCTGAGAAGTGGTGACATGATAGTCACTGGTGTCTTCTACTGGCTCAGGCGTTGCGGTCCATTTGTTTTCTTCCGCCATGCGGCGAGCTTCTTCTGCTACACGACGCGCTTCTTCTTCGAGTTTGCGACGTGCTTCTTCTTCCGCTTTACGCTTCAGCTCTGCAGCTTCATTCTCACGGCGGGCTTTTTCGGCCTGGGCGGTTTTGGTCATATCGTCAGTCTGTTGATTGCTCACTTTGTCTTTTTCCGCAGCTTCA
+CCAAAACCGCCCAGGCCGAAAAAGCCCGCCGTGAGAATGAAGCTGCAGAGCTGAAGCGTAAAGCGGAAGAAGAAGCACGTCGCAAACTCGAAGAAGAAGCGCGTCGTGTAGCAGAAGAAGCTCGCCGCATGGCGGAAGAAAACAAATGGACCGCAACGCCTGAGCCAGTAGAAGACACCAGTGACTATCATGTCACCACTTCTCAGCACGCGCGCCAGGCCGAAGACGAAAACGATCGTGAAGTAGAAGGCGGTCGTGGTCGTGGCCGTAATGCAAAAGCGGCGCGTCCGGCGAAAAAAGGCAAACATGCCGAATCCAAAGCCGATCGCGAAGAAGCGCGTGCTGCGGTTCGCGGCGGTA
+NODE	1031	4020	257398	255535	0	0
+TGCGGTGGATTCGTTACCGACACCGAGGCTGCCGGCACAAAAACCGTGCAACTGGAGCTGCATCTGGTCGTCACTCAACCACCGCCCTGTACGGTAGGCGGCGCTTCCGTAGAGTTTGGCGATGTCCTGACCACCAAAGTTGGCGATGTTTCTCAAACGAAACCTGTGGGCTACAGCCTGAACTGCGATGGCAGAGCGAGTGACTATCTGAAGCTACAAATTCAGGGGACCACCACCACCATCAGCGGGGAGCAGGTTCTGCAAACTTCGGTGCAGGGGTTAGGCATCCGTATTCAGCAGGCGGGCAATAAGCAACTGGTTCCGGTTGGCATAACGGATTGGCTGAACTTCACCCTGAGCGGCAGCAATGGGCCAGAGCTGGAAGCCGTACCGGTTAAAGAGCCCACCACGCAGTTAGCGGGTGGCGATTTTAACGCCAGTGCGACGTTAGTCGTGGATTACCAGTGATGGAGAGATTCATAGTGAAAAGGG [...]
+AGCGGAGAGCCGCAGGCCTGGGAAAAGGATGCCTTTTTACGGAAGGTCAAAACAGGGATGATCAAACCCGATGAGAACGGTAAAATTAACGCCAAAGGCCAGTGAAGATCTGGAAAATATCTGGCATTACGGCTGGCAGCATTTTGGCGAAATACAGGCCGATCGATATATTAATCATCTATCAGATATTATTCGGGATGTAGGGAGATACTCGAGGGCTACGGCTTGATGTTTTATAAAGATATCTGGTAGCTATCTGCTTACCAGATATCTGGTATGGTTCCATGAAAATCGGTTTTGTTCAAATTTCTATTCGTATGGTAGTAATACGGTTACCGCACAATCGGTGTCAATGTTGACTCGTCCCCAGGTACCACGAAGTTCTACCATCTGTGAACGGGCACATTCAGTATTGTTTTGATCACAGGGAATAGCCTCAATCTGCATGTTTTTATCATCACATGCTATTGATACTGTTGCATTATCTATTAT [...]
+NODE	1032	610	38155	38049	0	0
+TTGATGCTTCTCATGCAGAAGGTAAATGGACTGGCATGTGTGGTGAGCTTGCAGGCGACGAACGTGCTACACTTCTGTTGCTGGGGATGGGTCTGGACGAATTCTCTATGAGCGCCATTTCTATCCCGCGCATTAAGAAGATTATCCGTAACACGAACTTCGAAGATGCGAAGGTGTTAGCAGAGCAGGCTCTTGCTCAACCGACAACGGACGAGTTAATGACGCTGGTTAACAAGTTCATTGAAGAAAAAACAATCTGCTAATCCACGAGATGCGGCCCAATTTACTGCTTAGGAGAAGATCATGGGTTTGTTCGATAAACTAAAATCTCTGGTTTCTGATGATAAGAAAGACACCGGAACTATTGAGATTGTTGCCCCGCTCTCTGGCGAGATCGTCAACATCGAAGACGTGCCGGATGTAGTTTTTGCTGAAAAAATCGTTGGTGATGGCATCGCTATCAAACCAACCGGTAACAAAATGGTCGCCCCT [...]
+ATGCCGCTATCGGATTCGATAGAGAACGCATGGTTGGTTTCAAAGATTTTGCCGATGGTGCCGTCAACAGGGGCGACCATTTTGTTACCGGTTGGTTTGATAGCGATGCCATCACCAACGATTTTTTCAGCAAAAACTACATCCGGCACGTCTTCGATGTTGACGATCTCGCCAGAGAGCGGGGCAACAATCTCAATAGTTCCGGTGTCTTTCTTATCATCAGAAACCAGAGATTTTAGTTTATCGAACAAACCCATGATCTTCTCCTAAGCAGTAAATTGGGCCGCATCTCGTGGATTAGCAGATTGTTTTTTCTTCAATGAACTTGTTAACCAGCGTCATTAACTCGTCCGTTGTCGGTTGAGCAAGAGCCTGCTCTGCTAACACCTTCGCATCTTCGAAGTTCGTGTTACGGATAATCTTCTTAATGCGCGGGATAGAAATGGCGCTCATAGAGAATTCGTCCAGACCCATCCCCAGCAACAGAAGTGT [...]
+NODE	1033	4418	202723	200628	0	0
+ACCAACGACGAACTGAAAACCGCCGCCGAATACCAGCCGCTGATTATTCACTATAACAACGGCGCGGCGGTACGCCTGGGCGACGTCGCCAGCGTCACCGACTCGGTGCAGGATGTCCGTAACGCCGGGATGACGAACGCTAAACCCGCTATTTTGTTGATGATCCGCAAGCTGCCGGAGGCCAACATTATTCAGACGGTCGACGGCATCCGGGCAAAACTGCCGGAACTGCGGGCAATGATCCCCGCCGCTATCGATTTACAAATCGCCCAGGATCGTTCGCCGACGATTCGCGCGTCGCTGCAAGAGGTAGAAGAGACGCTGGCTATCTCTGTCGCACTGGTGATCCTGGTGGTGTTTTTATTCCTGCGTTCCGGGCGCGCCACGCTAATCCCCGCCGTCGCCGTTCCCGTTTCGCTCATCGGCACCTTCGCCGCCATGTATCTGTGCGGCTTCAGCCTCAACAATCTGTCGCTGATGGCGCTGACTATC [...]
+AGCAGGCCACGCGCCAGCAAAAACGTCGCCAGCGCGGCCAGCAAGGTTGATAACGCCACGATCATCCAACTGGCGCGCCGCTGCTGTATATCAAAATTAATATCCGTATTGCGCGTCAGCCGCTCGACAGGAGAGGCGATAATCGCGCCGACTTCGACGTCATTGACCAGAATGGGGCGGCGAGTACCGTCATGCGGCACCGGACCGCGTGGGCCGACCAGCACCCGGCCATTTTGATCGACGACCCAGAACTGGGTGCGCCAACCGTGCGGCGGCATACCGGGGCCGGGTTTATCGCGGTCGTTGTCATGCTCAAATGAACGCAGAATCTGGAAAACGAAGCGATCATTGTTACGTAAAAAACGCCAGTTGCCGTGTTGCTGGTACTGGTCGCCCAGCGCATCGCCCAGCATTTGTAGCCGCTGCTCGTTGCCGTGTTTGATATAGTCAATAAATCCGCGTTCAAAACTGACGCGCACGGCCCAATGCATA [...]
+NODE	1034	770	36946	36815	0	0
+AAAGGTATCGTTCTGGCGCAGCCAAAAAGCATACGCCGGAGACTGTTTGTGTTCTCAAAATCACAGGAGAAGTGTATGGGCAAGTTAGGTGGTGAAATGAAGGCACTGGCAAAGCACTGTGGCGGTAGCCATAAAACGGTGAACGATCGCATTCATATCGTGCAGCGTTTCGATCACCACTTACGGGTTTTGAACGTCCATATCCAGCGGGTTGCGCAGATTAAGGTGCGCCACATTGAAAGCTATATTCATGAAAGGTTGGCGCAGGGGATCGGCAAACGCACGCTGCAAAATGAAATGGCCTCGCTGCGCGCTGTTCTGCAACAGGCCGGGCGTAAACAGGTGGCAGAGCATGAGTGGCTGACTAATAAATCGCTGGGGCTGTCTGGTGCATCGCGCAACGGTACGCGACGGGCTATTACGCCGGAGCATTGTCGCCATGTGCTGGAAATGGCCCGTGTAAAAGATCCAGGTCTGGCGGCTGCGCTGGAA [...]
+TTTGTCGATCAGTCGGCCATGACGGCTTTCTGCAATAGCCAGCGCATTATCCAGCGCTTTTCTGACAGCTATAGTATCCAGAATCACCGTTTCGCGGGGCCGTCCGCCTTTGGTGCCGAACACCACGGTTAAGCGCGTATCGCTGCGTTCAATGGCCTGTTTCCACGTTTTCAGCGATTGCACGCTCTGCACCGCTTCCTGTGAACGTAAGCCCATCAGCCTCGCCAGTTCCAGCGCAGCCGCCAGACCTGGATCTTTTACACGGGCCATTTCCAGCACATGGCGACAATGCTCCGGCGTAATAGCCCGTCGCGTACCGTTGCGCGATGCACCAGACAGCCCCAGCGATTTATTAGTCAGCCACTCATGCTCTGCCACCTGTTTACGCCCGGCCTGTTGCAGAACAGCGCGCAGCGAGGCCATTTCATTTTGCAGCGTGCGTTTGCCGATCCCCTGCGCCAACCTTTCATGAATATAGCTTTCAATGTGGCG [...]
+NODE	1035	36	1408	1408	0	0
+AGCAATCCTCCATGAGAAAAGCGACTAAAATTCTTC
+GGTTTTCAAGAACCAATAAATCGTGTGGCTGATGCG
+NODE	1036	3102	151378	150522	0	0
+AGGATTTATTGTTTTGATTTTAAAGGAATTTACAGTGAATAAATGGCGTAACCCCACTCGGCGGTTATGTGCGGTAGCTATGCCTTTTGTACTGCTCCTGCTTTCCGGATGCGGCAGTAGCGATGCGTTACCTGACCTCGAATCACAGCGACTCGACCTGAGCGTGAAAGCCTCCGATAAGGTGAATCCTGACAATCAGAAGAAGGCCGCGCCCATTGAGATACGTGTGTATGAACTAAAAAATGACGCCGCTTTCACGACAGCTGATTACTGGTCGCTCCATGACAACGACAAATCCGTCCTTACCGACGATTTAGTGCGTCGCGACAGCTTTATTTTGCGTCCCGGCGAAGAGAAAAAACTGCGTCGCCCGCTGAATGCGCAGACCACGGCAATCGGCGTACTGGCCGGATACCGTAACCTGGCCAAATCGGTCTGGCGGGTAACCTATAAAATCCCGGAAGCCCCGGAAAAAGCCTGGTACAGCAGCCT [...]
+GCACCAGGTTGGATGGGAATTCAGCCGAATGAATGGGCTGGCTGTCAGTGTGACCCGTTACAGTGACTGCGCCGCCCACGCGGGCGATTTCCCGCGCCGCTTTGTTAATCACTGGCCGGATTGCGTCACTCACCGTTTTTTGTCCCGGTACAAACATGGCGTCGCCACGGAAGACCACCCTACTGTGCTGGTCATCTTCGTCCACGGTCAGCAGGCCACGGGCGATTTCGTTTGCCAGCAGGATTTTCAGCCGCAGCTTATGAACCGGCACGGGCGGCGGCGGCAGTATTATACCAATCGCATCAATATGCTGTTGTACGGTGACGGTCTGCACATCCATCCGGTGGCTGTAAAGGCCAAACAGCGTCAGCATCGCCAACAGGGCTATCCCGGCGCTCAGCCAGACCGGCACCCGGCGCATCCGCCGCAGTCGTCCGCTTATCGCCCCCTGAAAGTCAGGCGAGAGCGCGGGCATAACCGGATCGCGACGCT [...]
+NODE	1037	7840	569608	567165	0	0
+TTATCCGGACAATTTCAACCAAAGAGTCGCTTGTGGAAAAGCCATTTCGAAGAATTCTGATTATAAAAATGCGTTTTCATGGAGACATGTTACTTACCACCCCTGTCATCAGCACGCTGAAGCAGAATTATCCCGATGCAAAAATCGATGTGCTTCTTTACCAGAACACCATACCGATATTGTCGGAAAATCCGGAGATTAATACACTCTACGGCATCAGTAACAAAGGCGCAGGAACAAAAGAGAAGATCAAAAACGCGCTATCGTTAATCAAAAAATTGCGTGCTAACTCGTATGATCTGGTCGTCAATCTCACCGATCAGTGGAGCGTGGCGCTTATTGTGCGTTTTTTAAACGCAAAAATAAAAATCTCGCAGGATTTCGGTAATCGTCAGTCTGCTTTATGGAAAAAAAGCTTTACGTATTTAGTACCTTATGCGGGAGAACATGCTGTTGAGCGCACATTATCCGCGCTAAAGCCGTTAGCGCTAA [...]
+GGGGAACTGAAATAAGTAATGCTTTATGAACCCGCTTGAGGATATTAAATTTAATTTTCTTTAAAAAGCCCCCTTTTTCTCGGCGATAAAAGGAGCGAATAATTAAACAGTTTTCTTCAATATATTTTTGATCATCCACTGAAGCCTGTTCGTACACATCAAGATTGACGATAGTAAACTGACTGTTACGGCTAAAGTTATAAAAATCTTCACGCCGGCGATGGAGGAAGCGAACATCCGTCAGAAGGTACAAAAATGGCTTGACGTTATTGTTTAGCAAATATTGAACAGAACCATTAACTGCAATGACATCTTTCATTCGTAACAAGGACAGCGGCGTCTTTCTGGACGTAGGACCAGAAAGAAAAATAATACAATCTTCAGCCGTTCTTTTCGCAATAAGTTGCAGAACATCGGCGTGAGTTATGAAGTTAACGCTGCCCATAAAAAACTCGTATGTTTATCATGCAACCTATAAATAAATGTTATATT [...]
+NODE	1038	2749	171000	170634	0	0
+TTCGATGGAAATTCTGGGTCAGGCGGCGCCAGGCAAGAGTACTGGTGAAGCGATGGCGATGATGGAAGAACTGGCCAGCAAGCTGCCGTCAGGCATTGGGTATGACTGGACCGGGATGTCCTACCAGGAGCGGTTGTCCGGCAACCAGGCCCCTGCCCTGTATGCTATCTCGCTGATCGTCGTCTTCCTGTGTCTGGCGGCATTGTATGAGAGCTGGTCTATCCCGTTCTCCGTAATGCTGGTTGTTCCGCTTGGGGTTATCGGCGCGCTGCTGGCCGCCACCTTCCGCGGACTGACTAACGACGTTTACTTCCAGGTGGGCCTGCTCACAACCATTGGGTTGTCGGCGAAGAACGCGATACTTATCGTCGAATTCGCCAAAGACTTAATGGATAAAGAAGGGAAAGGTCTGGTAGAAGCGACGCTGGAGGCCGTTCGGATGCGTTTGCGCCCGATTCTGATGACCTCGTTAGCGTTCATGCTGGGGGTTAT [...]
+ACGGACGTTTAAGTCATCAATAGTTTCGCTAAGCAGGCGCTGTATCTCTGTCATCTTTTGCCTTCATGATTTCTGCGACATAGGGGGTAGTAACAGCCCATTTTAAAGGGAGGTGTAACGTGAAAAAAGTAACAGATTAACCACGAATTAGCATAACAGTTATCATTTTAACTACAATTTTTTAATGATTCGCGCCGGGTTTCCACCTACCACGACGTCTGGCGGTACGTTTTTTGTCACCACAGCGCCTGAAGCGACGACGACGTTATCGCCGATGGTTACGCCAGGATTAACGACGGCTCGTCCGCCTATCCAGACGTTATTTCCGATAGTGACGGGTTTACCTAATTCTCTGCCGCTGTTGCGTTCGACGGCGTCCAGCGGGTGCGTGGCGGTATAGATATGTACCCCTGGCGCGAGCATACAATTATCGCCAATATGAATTGGGCAAACATCAAGCATGACGCAGTCGAAGTTAGCGTAAAAGGAGTG [...]
+NODE	1039	1023	45160	44779	0	0
+GCTGCCATTGTCGCCATTGATAACTACAGCGGCAGAGTCCGCGCCATCCACCGCGATATCGCCGGTATTGGTGATATGGGCGTCGTCGCCGTCAATACGCGTACCGACGGCGCCGCCAGAGATAGTTTGATTACCTTCGTTGATAACGAGCGCGTTGTCGCCATCGATATACAGCGCCGTGGCGTCTGCGCCGCTGACGGTGGTGCTCCCGGCGTTATCGATAACCACGTCGTCGCCGGTAATGTGGGCGCCGGTGCCGCCGTCGGTGATGGTCATATCACCGTCGTTGTTGACGCGGGCGTTATTGCCGTTAATGACGGTGCCGGTGGAGCCTGCGCCGCTGATGTCAGAGGTACCGGTATTTTTAATCGTGGCGTTGTCGCCGTCGATGATGATGGCGGTGCCGCCGCCGCTCACGGCAATGTCACCGGCGAAATTGGTGGTGGTGCCGTTGCCGGAAATCAGCGCGCCGGTAGCATTGTCCACCGTTGA [...]
+TGACTCTGTTATTACCTTCAGCAACGGCGTCACCATCGATAAAGGCAAAGACACCCTGACCTTCGATAGCTTCAAACTGGATAACGGCAGCGTTCTCGAGGGTGCCGTGTGGAATTATTCAGAACAGGACAACCAGTGGCAGCTCACCACCGCGGACGGCAAAACGCTGAACGTCACCGGCTGGGACGTGACCGACGCCAATGCCGCCGTGATTGAAGGCACCCAGGAAAACGGTCTCTACTGGAAGTACGACAGCCGTGGCTATCTGATTATTGCCGACGATAAAACCGCCGTTATCAGCGGCGATGACCAGGCGCATAATTCCGATCGCGGCATGGATATCAGCGGCCAGGATCGCACCGGCGTGATTATTTCCGGCGATAGAACCGTCAACACGCTCACCGGGGACTCCAGTGTGACCGACGGCGCCACCGGCATGGTTATCTCCGGTGACGGCACCACCAACACCATTTCGGGCCACTCAACGGTGGA [...]
+NODE	1040	974	46728	46552	0	0
+CACTCTGTTGGGGATCAAACACCTGGTGGTGGCAATCAACAAAATGGATCTCGTTGACTACCGCGAAGAGACCTTCGCCCGTATTCGTGAAGATTACCTGACCTTTGCTGAACAGTTGCCGGGCGATCTGGATATTCGCTTTGTCCCGCTTTCGGCGCTGGAAGGGGATAATGTCGCCGCGCAGAGCGCGAATATGCGCTGGTACAGCGGTCCGACGCTGCTGGAAGTCCTGGAAACGGTAGACATACAGCGTGCGGTAGACCGTCAGCCGATGCGCTTTCCGGTACAATACGTCAATCGCCCGAATCTTGATTTTCGGGGGTATGCCGGCACTCTGGCGTCTGGTAGCGTCAAAGTCGGAGAGCGCATTAAAGTGCTGCCGTCTGGCGTGGAATCCAGCGTGGCGCGTATCGTCACTTTTGATGGCGACAAAGAAGAAGCCTGTGCGGGCGAAGCCATTACCCTGGTACTCAACGACGACATTGATATTAG [...]
+AAATGACGGCGTACCAGCGCATTCAGCTCCAGCTCAAACGCACTGTATTCCACGGGCGGCGTCGCTCCGCGTTCGTCCAGTTCCCGCACCATGCCAGCGCCCACGGTGACGTTAGAAAGTCGGTCGATAAAAATCAGTCCGCCCGTCACCGGATTTTGCTGATAAATATCCAGCGCGAGCGGCTCATCGAATGTCATCTCTACCAGACCAATACCGTTTAACGGCAGGCTCTCGACGTCTCGTTGAGTCAGATTGTTGATATCAACCTGATAGCGAATAGCCTCGATACGCGCGCGGGTTTTCTTACCCGCGAGTTTAACGTCGTAGCTTTGGCCCGGCGCCAGCGGCTGTTCCGCCATCCATACCACATCGCTCGCGGCGTGCCGCGCAGGTGCCAGCGTCTCGTTTGCCGCCAGCAGCAGATCGCCGCGGCTAATATCAATGTCGTCGTTGAGTACCAGGGTAATGGCTTCGCCCGCACAGGCTTCTTCT [...]
+NODE	1041	6402	415343	406265	0	0
+CAAAAAAACAATTCCCGGACAGCAAGTCAGATTTGTTTGCGATGTTTATGCAGCATGCATTTTCTTTGCTCAAAGAGAACGGCTTTAATGCGCAAGTGAATATGCAGTCATGGATGTTCCTGTCTAGCTATGAAGCGCTTCGTGGCTGGTTATTAGCGAATAAGACCTTGATCACTATGGCACATTTAGGGGCGCGGGCTTTTGGGCAAATTTCTGGTGAAGTTGTGCAGACTACGGCCTGGGTGATTAGTAATAATCATACCGAACGTTATCAGCCAGTATTTTTCCGCCTGATTGAAGGTAATGAAGAACAAAAACAAAACTCTTTGCTTAAGCGGGACAACCAATTTAATAGCACGGCGCAGAATGACTTCAAAAAAATCCCAGGCACGCCAATTGCCTATTGGGCTGGGAATAAATTAATTAATGCTTTTCATGAAGTAAAACTGAAAGAAATGGCTGATGCAAAACAAGGAATGGCCACGTCAGACA [...]
+TGAAATGCCAGGTCGATCGTGATTGGGTAGCGACCATACTCTGTTGCGCTGTCCGCATTCTCCAGGATCAGAACATACTTGTTTTTACGATTGAATGCCGTCCCCATGAGTTTCATGGTTACATCGCGGGTGCGTTTACCCATATCTTCGTTATCACTGTCAAAGCATACTGTTTCCGTACCGGAGACGACCTGGTTGTTTTCATCCACGATAAAGATATTCAACGTGCGCGGCTCATTTAACTCATTCACTGCCGTAGTCTGAATAAAACCAACTTTATCAATGCTGTTAACCAGTTTGATCACCTGATCCCGTGCTACAATGGACACGGGTTGTCGCTGGGGTTGCTTCTCAGCCGCTTTCTTTTCAAGCGCGCGAATCTTCAACACGGGAACACACACTTCCTGCAGCATGGCTCCGCCATGAACGAAACGAGCGCCCCCTACGAAGTGGAAACGCTGTACTCCTTTGGGTAACAGGAATTCACTCTCA [...]
+NODE	1042	569	39493	37271	0	0
+AATTTTTTTTCCTCGTCAGCAGTAAGCGTACCATTCCATTCAACGGATGGCATTTTTCGATCTTCTCCAGGTCGCATAAGCTTATAAAGTCCATCCATGATATCTTCATCTTCGTTAACGGCGTTTCTAAGTTTGAGAGCCATATTTTGTAACAACTCTGGATTGAGAGAAATAGCCCTACCATAATAAACACATATTTTTAAAAACAACTCTTCTTCTTCATCCGTCATTGGTTTTAAAACATAACTATCTGAAAGATTGAGAATACGTTGCAAACTACATTTACTAATTACCTCACCATCAATCCAAAATTTAATTTGTGTCTGAGTAATATCAAAATCCATAACAAAACGATCTTGTTGTGATGGGTCAGCATAGAGTCTTAATTTTTCAAAGGCATATATTTTATCCATGGCGTCTGTATCAACGTCACGCTCCGCTTGCTTTTCACGTCCACATCCGTGGATGAGTGTATATAATACCTCCAGCGCC [...]
+CAACTTCAGAACACAAAAAAAACAAGAGGCGCTGGAGGTATTATATACACTCATCCACGGATGTGGACGTGAAAAGCAAGCGGAGCGTGACGTTGATACAGACGCCATGGATAAAATATATGCCTTTGAAAAATTAAGACTCTATGCTGACCCATCACAACAAGATCGTTTTGTTATGGATTTTGATATTACTCAGACACAAATTAAATTTTGGATTGATGGTGAGGTAATTAGTAAATGTAGTTTGCAACGTATTCTCAATCTTTCAGATAGTTATGTTTTAAAACCAATGACGGATGAAGAAGAAGAGTTGTTTTTAAAAATATGTGTTTATTATGGTAGGGCTATTTCTCTCAATCCAGAGTTGTTACAAAATATGGCTCTCAAACTTAGAAACGCCGTTAACGAAGATGAAGATATCATGGATGGACTTTATAAGCTTATGCGACCTGGAGAAGATCGAAAAATGCCATCCGTTGAATGGAATGGTAC [...]
+NODE	1043	19	1377	1313	0	0
+TATGGGATAGATTTAAGGA
+ACTCATCAAACGGACTAGC
+NODE	1044	939	47532	46921	0	0
+TGCCAGCGGCGGCCTGTCGATGCCGGGGCTTGGCGCATCGCCGTTTGGCTATAAAATCGCCGAACAGTTTGGTCTCAAGGTGTTGCCGACGCGCGCCGGGCTGGTGCCCTTTACGCTGCATAAGCCGCTGTTAGAACAGCTCCAGACGCTGTCTGGCGTCTCTGTGCCCTGCGTGATTACCGCCCGCAATGGCACGGTATTTCGGGAAAACCTACTTTTTACCCATCGTGGGCTGTCCGGCCCCGCTGTTTTACAGATTTCCAGCTACTGGCAACCGGGCGAGTTAGTGAGCATTAACTTATTGCCGGACCTCTCGCTGGAAGACGTTCTCAATGAACAGCGTAACGCGCACCCGAACCAGAGTCTGAAGAACACGCTGGCGATGCATTTGCCGAAACGGTTGGTGGAGTGTTTACAACAGTTGGGGCACATCCCGGATGTATCGCTCAGGCAGTTGAACGTTCGTGACCAGCAGGCGTTAGTTGACACGCT [...]
+CGTCAAAGGGAGTGAATGATGTAGGTACCCGGAAAAGAGGGAGTAATGTTGTCATCATCAGCGTTCCTGGCCGTAAATGAAACACGCATACTCATAACTGCTATAAATCGATACTAACACCTCTGTCCGGGATGTCTATTCGCTTATTGTTTGTAATGGTACTTAGCGTTTTGCCGCCAAATCCTGCGCGCAGGCCCAGGCGCTCGACCACGCCCACTGGAAGTTATAGCCGCCCAACCAGCCGGTGACGTCCATCACTTCGCCGATAAAATAGAGACCCGGCACGCGGCGCGCTTCCATAGTCCGCGATGATAGTTCGTTTGTATCCACGCCGCCCAGCGTCACTTCCGCTGTCCGATAGCCTTCGGTGCCGTTAGGCTGCACTTGCCAGGCCGTAAGCGTGTCAACTAACGCCTGCTGGTCACGAACGTTCAACTGCCTGAGCGATACATCCGGGATGTGCCCCAACTGTTGTAAACACTCCACCAACCG [...]
+NODE	1045	66	2598	2598	0	0
+GTTTACATCGTTGGCGACCAGCGTGCCGCTGCTGATAAGGGTGCCGCCGGTATAAGTATTGCTGCC
+CGCCAACGATGTAAACGCGCTGGGTACCGGCGACGTCACCGATAACGCCACGCTGGAGCTGAACAC
+NODE	1046	2636	187816	186747	0	0
+GGGCCTACGTTGCTGGTAAGTATGTCAAAGATGGCATAAATTCCGACAAACCCTATTCCGACAATTAACGATGAGCGAAGTGCTTTAGCGGGTTTTACTTTGAAGAACAATGCCAGGAAAAAAAGGACCAGCGGCAATAAAACCGTTGGGCCAAATCCCAGGACATATTGCACAACGGTATAGAGAGTATGTGCTATATCATTCATATCCGACCTCTTATTCAGATGTGACCAGACCTCGCGTTAGCGCCTGGGTAATTTATCTGTTTTTTATTTATGAAATCAGGCTTGGCCTTTAAGGATTGAAACTATTTTTTCAAGAACTTTATCTTCACCTACTCCGGTAATGATTGGCAGACCACTAACAACCGGAATATCCAGTTCATAAGGAACTTTCGTTGTTGATACAACCAAAGCTGCACCATCGGTATTGTTTGGCAATGAGGCTACATTAGTTTGGGAATAATTAACATCAAGCCCATTGTCTTTACAA [...]
+CCACGTTTGTGGTGGTGTTTATTGTGGGTTTTCGGGTGCTGACATCGGATACTCGCCGGGCGATTCGCCGCCTGAGCGAACGTCTGAATATTGATGTAGTGCCGATAGAATCGATGATTGATCAGATGGGTAAAACGGCGGGCGGTGAATTTTTACAGTATCTGCATCGCCCTGATGAGTCGCATTTGCAAAATGCCGCTCAGGTGTTACTGATCTGGCAAATGGTGATTGTCGATGGCGGCGATCAGAATTTGCAGCGGTGGCATCGCTTGCTGCAAAAAGCGCGTTTAGCCGCGCCGATCACCGACACACAGGTACGGCTGGCGCTGGGCTTTTTGCGCGAAATGGAACCCGATATGCAGGAGATCAACGCGTTTCAACTGCGCTATAACGCCTTTTTTCAGCCGGAAGAGGGTGTCCACTGGCTGCATTGATACTCTTCACTATCTCGTTAACAAAAGACGAGATGAATGAGGCTGGCAAGGGCGGAGA [...]
+NODE	1047	95	5230	5178	0	0
+ATGGTTTTTGGGGGCTTAATCGGGGCCTCACGGTTCGTTGAGTAAATGGAGCCCCCTCCTATGGCATTAACCGATACCGCTATCCGCAAGATCAA
+TTACTCAACGAACCGTGAGGCCCCGATTAAGCCCCCAAAAACCATGGATGTCAAAAAACCCGGTAAACCTTCTCAGGTCAACCGGGTAAAGATAA
+NODE	1048	15	668	668	0	0
+AGGAGGGGGCTCCAT
+ACCCACCGAGAAATC
+NODE	1049	309	16824	16178	0	0
+GCGGGAACAATCTCCCCTTGCTGGTATTTGAGCCATGATAACTTCCTGTTAATCACACAATCCGGGCTGGCGGTTAATGCGCCGGTATTACCATTGATCTCAAACCCCTGCACCTGACGCATCTGCGAAAAGTGGTTCGCCAGCGTCCAGGCATCCACGCCCATGGCGTACATCCGCGCCAGAGAATAGTCGTTATGTACAGCGCTCAGCGCCTGCTGCATCAACGGCATATTGCCGCCTGCCAGCATAGGAATTTCACTGTATTGTAAACCCTCCATTTCCAGACGGAAGTCGGGGCCGGAGGTGCCT
+GTGAAATTCCTATGCTGGCAGGCGGCAATATGCCGTTGATGCAGCAGGCGCTGAGCGCTGTACATAACGACTATTCTCTGGCGCGGATGTACGCCATGGGCGTGGATGCCTGGACGCTGGCGAACCACTTTTCGCAGATGCGTCAGGTGCAGGGGTTTGAGATCAATGGTAATACCGGCGCATTAACCGCCAGCCCGGATTGTGTGATTAACAGGAAGTTATCATGGCTCAAATACCAGCAAGGGGAGATTGTTCCCGCCAGCTAACGCGTAAACAGGCTGGCGACGCGTGGGAAGCTGCCGCGCGTCG
+NODE	1050	3234	164975	163808	0	0
+CCAGATGCTTCGTTTGCGGGCCAACAGGAAACGTTTCTTAACGTTCAGGGCTTCGATGCGGTACTGGTGGCAGTGAAACACGTATTTGCTTCTCTGTTTAACGATCGCGCCATCTCTTATCGCGTTCACCAGGGATATGATCATCGCGGCGTAGCGCTTTCCGCTGGCGTGCAGCGGATGGTTCGCTCCGATCTCGCCTCGTCAGGGGTGATGTTCTCTATCGATACCGAATCCGGCTTTGACCAGGTGGTCTTTATCACCTCGGCATGGGGACTGGGTGAAATGGTGGTGCAGGGCGCGGTTAACCCGGATGAATTTTATGTCCATAAGCCAACCCTGGCGGCAGGCCGTCCGGCCATCGTACGCCGCACCATGGGGTCGAAAAAAATCCGCATGGTTTACGCCGCCACCCAGGAGCACGGCAAGCAAGTGAAGATTGAAGATGTGCCGCAGGAACAGCGCGACATTTTCTCGCTCACCAACGAAGAAGTG [...]
+ATAAACTGGCGCCTGCCACCACAGCGCTTGCGCTTAGTCAAATCATCGACCGCAGCGAACCGTTGCAGTCAGACATTAACATTCACGGTGATGAACTGGCGGCAGTGCTGTTTACCTCCGGCACAGAAGGAATGCCGAAAGGGGTGATGTTGACCCACAATAATATTCTTGCCAGCGAACGGGCGTATTGCGCGCGGTTGAATTTAACCTGGCAAGATGTGTTCCTGATGCCTGCGCCACTGGGCCACGCCACCGGATTTTTACACGGCGTCACCGCGCCCTTTTTAATCGGGGCGCGTAGCGTATTGCTGGACATCTTTACCCCAGAAGCCTGCCTTACCTTATTAGCGCAGCAACGCTGTACCTGTATGTCAGGCGCGACGCCGTTTATTTACGATCTGCTTTGTGCCGTTGAGCAACAGCCTGCCGACCTCTCCTCACTGCGATTCTTCTTATGCGGCGGCACGACTATTCCCAAAAAGGTTGCCCGCG [...]
+NODE	1051	6427	337522	334609	0	0
+GGGATTCTGATAGCGTCCCTTCCTTCAATTTACACTCTATTTTCAATACTAAGATTGGCCTCATCAGGCCTGTTAAACGTCGACCCGACGGAAAAATGTTTATCGCAGGGCGTCCAGCCCTGCGAGCGTCAACATTTCTGCAAACGGAGTAAGGTTAGCCAATAAGTTTAAGATTTTTTATCACTCAATCATTTAACCGTTCCAGGCCTTAACCGGCCTACAAATACGCTTATTTAGCTAACCAGTCGAGTATCCCCTGCGCAGCATGTCGGCCTTCTGCCATCGCCGTCACCACCAAATCGGCGCCGCGCACCGCATCGCCGCCAGCGAAAATTTTCGGGTTGGACGTCTGGTAACGAAACTCGCTCTCGACGCTGGCGGCAATACGTCCCCAGTTATCCACCTTCACGCCATGCGATTCCAGCCACGACATACCATGCGGATGAAAACCAAACGCCATAATGACCGCATCTGCCGGCATCACGAACTCGC [...]
+CGGCCAGCTCAATGAGTTGATCTCGTGCGGCCATCAGCGCGTCATGGCCTGCTCCGGCGTGATCCTGTAATTCCATATCAAAACCGGCGGAGCTGCCCAGACCGCTAATTGCCGGCGGGCTGCTGGCGAAGACGCGAGCTTCTTTAATCTGGTTAAACGCTTTTGTCGCCCGCTCAATAATGGCGAACGAGGAGCCGGTGGTGGGATCGCGCGCGTCCCAGTCTTTCAAGCGAACAAACATGCGCGCGACGTTTTGCCCATTCCCGCCAGGGCCGGAACCTACCGTCGAGAAGACCGACATAATGTTGTCTTTCTCATGGGTGAAGTAATAGTTTTCAACCTTTTCAACGACTTTCAGGGTCTGCTGTTGCGTAGAACCGCTCGGTAGCTGGATAGACGTAGTGAACATGCCCCGATCTTCTTGCGGCAGAAAGGAGGTGGGGAGACGCAAAAACAGGAACACCATTCCGCCAAGCAACAGAACATAAATCA [...]
+NODE	1052	833	53243	53080	0	0
+GCGCCAGGGCCGGAAGTGGCGATACAAACACCGGTTTTGCCGGTAGAACGGGCATAACCGATTGCCGCCATTGCGGCCCCCTGCTCGTGTCGGCACAACAAATGCTCCACACCACCGTCATACAACGCGTCGTAAACTGGCATAATTGCGCCGCCAGGATAACCAAATACGGTTTTCACCCCCTGCGCTCGCAAAGCATGTACCACCCACTGTGCCCCGTTCATAGTTACATCCCCGTCGTAAATCTTGAGAAACAGAATTTTATGCTGTTATTCACGCTCTGCTCCTCGCTTAAGTTTTTCAGGCCAAAAAAAACCCCCGGACCTTTCGGTGCGGGGGTCTTAGTTCGTTAAGGCTTGATTTCTAAGCCTTTCCTCGTCCAAGTGCAGCCCCGCACGGTGGGATAATAATCACCACCACGCTAATCACGACCAGGCTAATCACTCGTAGAAGGGCTGTCATTTTTGTCTATTCTTGCATCTTGTTCGAAGG [...]
+ATAGAAGAGAAAATCGAATTACTGACTTTTTGTTTTTAGCGGCTGATTCCTGAATTTTGGCGTCATTTTCAGGTAAGAAGCATCAAACTGGAAGAACGCTCGCAGAAGCGAAAAGAAGGAAAACAGGGTGTAGAGTGCGCCAAAAGGGGGAGGAAAACGTGAAAATTTTTCAGTTGCTAATTTTTCTTATAAAAAACAAAGCACTTTTAGGCATTCACCTGCATTATCTGAAACGTGGTTAAAAAAATATCTTGTGCTATTGGCAAAACCTATGGTAACTCTTTAGGTATTCCTTCGAACAAGATGCAAGAATAGACAAAAATGACAGCCCTTCTACGAGTGATTAGCCTGGTCGTGATTAGCGTGGTGGTGATTATTATCCCACCGTGCGGGGCTGCACTTGGACGAGGAAAGGCTTAGAAATCAAGCCTTAACGAACTAAGACCCCCGCACCGAAAGGTCCGGGGGTTTTTTTTGGCCTGAAAAACTTAA [...]
+NODE	1053	14197	760501	754491	0	0
+CGTCTGCCAACGAATCCATCTGACCGGCAAAAAGAATTGTCCGCCACGGATTAATCCGGCAGCCAATAACGCGGCAAAAGCGATATGCAGGCCGGAAATCGCCATCAAATGGGCCGTCCCCGTATCGCGCATAACGGCCTTCACCTCCTGCGACACCGCTCCCCGCTCCCCCATTCCCAACGCCAGAATAACCTGCTGCCACGGATAAGGCGCAAGCGTAGCGCGAAGCGAAGCAAGATAGCGCGCACGCAAGCTACACTCAGGGTTAATCGCTTTAGCCTGTAGAAAACGCCCGGTCAACGGTTGATGCTGCGCCAGCGCGTAACGTTGGCTATCAAAAGCGCCTTCGTTAAGCTGTCCGTGTACCGCTCTGACCTTCAGCGTCATCGCCCACTGTTGTCCGGCACACACTTCCGTGGGTAAGTACTGGCCATGCAGGACAATCCCTACAGCAGGAAAGAGCGGCTTTCCGCGCAAATGGGTGATTCGCCC [...]
+TGGGTTACCGGGAAAGTAATGGGGAAGTCATATTTGAAATGGTTCATCCAACGCTTCTTTATCTGCTACGAGGGTATACGCCGTCATTAACCTTTACAGAAAGTAACACCGAACTGTTAACAGGAGTATTAAACAGAGATTATGACGACTATTATAATGATAAAGAAGAGATTGATTGCATTTTGGATAGAATATATAAGTCACATAATGGCACTTTATTTATAGGTAGCGGTACTATTAGCCGCAATATGCTTTTATAAAAATTAAAAAGGCCCCACTGACATGGAGCCTTTTTTGTACGCTTTTTATAGCGTAATTTCAGTCAAACCCATTACATGGTCTGCGTGAAGGTACGAGTAATAACGTCCTGCTGCTGTTCTTTCGTCAGGGAGTTAAAACGTACTGCGTAACCAGATACACGGATGGTCAGCTGCGGATATTTTTCCGGATGTTCCATCGCGTCCAGCAGCATTTCACGGTTCATGACGTTGA [...]
+NODE	1054	87	6586	6586	0	0
+TGGGCAAATCTGCACACCTTTGAGAGCAGATGTCACTACGGTTTTACGTGATGATGAAGGCATTCCGGATTCCGTTCCGGTACTTTT
+AGTGACATCTGCTCTCAAAGGTGTGCAGATTTGCCCATACATCAGGGATGTTTCCCTTCAGTACTCACAGCTCCTTTCAGGCTACGG
+NODE	1055	2605	191291	190602	0	0
+GATGGAACATTGGTGGTCGCCGGAGCGACAAGTTAGCGTCTAAAATATAATCATAAACAACATAAAACTTCAAGTTGTTGTCGTGGCTATGGTAATAACCTACAACTGACTGACAAGGCCAGCTCAATTTGATATTTTTTAATTCAGTAACACTCTTTATGAACCTGTTAGAGAGATGTGAAAATGAAATCGAAATACAAAAAATTAAAAGATGAACTACTCAGAATAGCCAAAGCATGCGCCCCGACGCCAGAAGATATGTTGGTATATACGGGAAGAGCCAGAAGACTTGCTTCATTTCTTAAAGATGCCAATATACAGATAAGCTCAGCAAATAGCATAAAACTACGTCATATTGAATGCTATTTTCAACAACGTTATCGCACTGGCGTCAGTTCCAAAATACTACGAGAAGAATTAGATACAATAAAGCATGTTCTCACCCATTGCGGAAAGAGAAACATCGTTAAAAATGAACGACTGACTTATACA [...]
+ATTTTTTCTCAGCAGACAGGCATAAAAACGCCTTTAAAATCTGCGTCTTAAGATATTTTCTGACTTTCCGCATGAGCTTCTTATGACTGTGCGCACGGCATAAGACCATTTGAAATTTGGTCGCTTGCGTGTGCATGTGGAGTTTGAAGCTGTGCGGCGTCACTTGCGTGCGACCGAAGGGAACACCAAGTGACGCCGCGGCCATCTGCCCTGAAGGCAGCATCACGTAAGGCCTGGCAGAAAATCGTCGCTCGTGACAAGCGTCCTGATAATCGTTTTGTCGCTCTGACAACGTCTTTCAGTGACGTATCCACGCCTTTCCGGCGCGTCCGTTTTCACACGGACGACCACGCCGGAATGTCTTTTTAAACTTCGTAATACATGAGAGGTAAGTGTATTAACTGACTGAAATAAAGGAATAAAAATGAAAAATCGTTCTGATGTCGGGAGGCGTCATCGTAAGGTGACGGGGAGTATTCCTCAACAATCGCC [...]
+NODE	1056	2348	136318	135220	0	0
+TCTCTTTTTTCATCAACAGCGGGCTTAACGTGCCATAAAATAAGCAAAATGCCGTTATTGCAACTGCAATCACACTTCCAGGTGGCATACTAATAACCAAACGAAAGAGAAAGGAAGAACATTCATGCCTTTAAGCGCACAACAATTAGCCGCACAGAAAAATCTATCCTATGTTCTGGCTGAAAAGCTGGCGCAGCGGATATTAAAGGGTGACTACGCCCCCGGTACGATTCTTCCCGGCGAAATAGAACTGGGCGAGCAGTACGGCGTAAGTCGAACGGCAGTTCGCGAAGCGGTGAAAACGTTGACGGCTAAAGGTATGGTGCTACCCCGTCCGCGCATTGGTACGCGGGTGATGCCGCAGGGAAACTGGAACTTTCTGGATCAAGAGCTGCTGACCTGGTGGATGACGGAAGAAAATTTTCATCAGGTGGTAGATCATTTTCTGGTGATGCGTATTAGCCTGGAGCCGCAAGCCTGCCTGCTGGCGGC [...]
+AGCCCGCCTTGCAACAACAGCGACTTCAGCTTACTCCGGTTTTGACGGAGCGTGGGTCGGTTTAGATTTATGCCGTTCTTTAATCAGATTGTTGCCGTCTTTGACTCTTAGCAGCATAAACATCAGCGCGGACACGATAGTGATCGCCCCCATCGTGATAAAGGTATAGTGGAACTGTTCCACGGTACTGGTGCCCGCAAAACCTTCATAAATACGTAACACCGCCGCGCTGATCGCCACGCCTAAACTGATAGACAATTGCTGCGTAACCGCCAGAACGCTGTTGCCGCTGCTGGCGTTATCGTCCGTCAGATCCGCAAGAGTAATCGTATTCATTGCCGTAAATTGAGTGGACATCGCCATTCCAAGAATGAATAGCGGCAGTACGAGCATCCAGATCGGCATGGCGGGAGATTGAAACGAAAACTGGGCAATCATCAGACCGATAAATACCGTAATGCCGACCAGAGTCTTCCGGTATCCCAAACGTCG [...]
+NODE	1057	414	16481	16423	0	0
+GTTGTTGAAATGCAGCGTGATAGTGGACACATCGTGACCCAGCACCAGCGTCTGTTCTTCGTTGCCTACGCGTACCGGAATCGGCCGATTCGCGTTGTCGCCGAAGGCTTTGGCGGTGATCACCAGATCAAACTTTTTCGGCAGCGGCGCTTTATATTCGATTTTAACCTCATCGCCCAACTGCGCATTTGACCAGCGCCCCCAGGACTCCGGCCGGGAAATGCCGCTAAACTGCTTCACCTCCTCCGGCGCGCCCGCCACATTAAAGATAAAGCTATCGGCTTTATAACGAATATCGTTATCGACAATCTTTAAGGTATCGACGTTGCCTTTGTAGCGTTCCATATCGATCATCGTGTCTTTAAACGCCGTCTTACCCTGCCACTGCGCTTTATCGACATGCTGTACGGTTTG
+TAAAGACACGATGATCGATATGGAACGCTACAAAGGCAACGTCGATACCTTAAAGATTGTCGATAACGATATTCGTTATAAAGCCGATAGCTTTATCTTTAATGTGGCGGGCGCGCCGGAGGAGGTGAAGCAGTTTAGCGGCATTTCCCGGCCGGAGTCCTGGGGGCGCTGGTCAAATGCGCAGTTGGGCGATGAGGTTAAAATCGAATATAAAGCGCCGCTGCCGAAAAAGTTTGATCTGGTGATCACCGCCAAAGCCTTCGGCGACAACGCGAATCGGCCGATTCCGGTACGCGTAGGCAACGAAGAACAGACGCTGGTGCTGGGTCACGATGTGTCCACTATCACGCTGCATTTCAACAACCCGACGGACGCGAATACCTTAGTCATTGCGCCGCCCGCTCCCGTCGCCAC
+NODE	1058	2898	167236	165606	0	0
+GCCATCGCTTCAGCGGCGGCGGTCGCTTCATCCAGCAGCGAGGCGGAAGCCATGTCCAGCCCTGTCAGGTCCAGCGTCACCTGTTGGAAGTTGAGCAGCGCTTCCAGACGCCCCTGAGAGACTTCCGGCTGATAAGGAGTGTAGGCGGTATACCAACCCGGATTTTCCAGCATGTTGCGCAGGATAACCGGCGGTAGCTGCACGGCGGTGTAGCCCATGCCAATATAGGACGTGAAGCGCTTGTTACGCCCGGCGATGGCTTTTAATTCCGCCAGTGCGGCATATTCGGTTGCCGCCTCGCCAACCTGCGGCGGAGTCGCGAGCTGAATGTCTTTCGGCACAATCTGACCTGTCAGCGCGTTTAACGACTCGGCGCCAACCGCATTCAGCATCTCTTGCTGCTGCGCGGCGTCCGGTCCGATGTGGCGTTCAATGAAAGCGCCGCGGTTTTCAAGCTGGCTTAACGTCTGTGTCATGGGCGATGGTTCCTGA [...]
+AGCGCCAGGGCAAAGACATTGGTCAACATCTTTATCTCCGTCGTTATGAGCGTAGCCGTAAACATAGCGCGGCGATGATGCTTGCCGGGATGCAAGGTTTTCGTGACCTGTTTGCCGGCGAAAACCCGGCAAAAAAATTGCTGCGCGACATCGGGCTGAAACTGGCGGATACGCTCCCCGGCGTCAAACCCCAACTGCTTCGCCAGGCAATGGGGCTAAACGACCTTCCGCAATGGCTTCGTTAAGCGTCTGACTGCACGCCAGCAAGAGTTTGAAACCCGTCACACTTTGCTTTCCCGGCTATCGCGCCGGGGGGGCTTTCCTCGTTTGAAATAATCTAATTTCACCGCCTATTTCGCATTATATTTTCTAATGCCACTATTTTTAGCGAACGCGATTTTCGACATTTTTTCCGCATTTAATATTAATTTATGTTGTGATAAATCGTATCAGCTTCCTTTTTATGACGGTTATTTAGCGTAATAGTGGTTT [...]
+NODE	1059	647	34298	34298	0	0
+TTTCAGGTATTGCGTCCTGATGTACTCCTGAAGCGTTCTCAGTGCTGTTTGGTCACTGATGATTCCGTCCCGGATACCGAGAACGTTTCGTCCAGCAACTGGAGAGAGTTCGACGGTGGCATCATTGCCCATGCCGGAGGCGCTGGAGGTTTCGGCTGAGGATGGCACAGAACATTTGCCTTTGACGAGCACCCGACCACCATTATCAAGCTTGCGCCGAAGAGCATCATTTTCAGCTTTCGCATCAGCTAACTCCTTCGTGTATTTAGCATCGAGTGCATCAGCATCAAGCTGGCGCTGCTGCATGTCAGTAATGGTGGCGTTCGCCTTCTCCAGTTCACTGGCCTTGTTATCGCGCTGCTCTTTGTAGGCGATGGCGTTATCACGGTAATGATTAACAGCCCACCCCATTGAAACCAGCAGGCAAATAACCACAGCGCAGATGATTGCGGTTAACCGACTCATGACATCAACACCCCAACGGCCAGAATC [...]
+GCCGTGAGATTGAGCGTGAAGTCTGTTTGTGGGGGCAGCAATGAGCATGATTTGCTTTTTCATGGCAGCGTTGCTCGCATTCAATGGCAACGATGCGTGGCCGTGGATTCTGGCCGTTGGGGTGTTGATGTCATGAGTCGGTTAACCGCAATCATCTGCGCTGTGGTTATTTGCCTGCTGGTTTCAATGGGGTGGGCTGTTAATCATTACCGTGATAACGCCATCGCCTACAAAGAGCAGCGCGATAACAAGGCCAGTGAACTGGAGAAGGCGAACGCCACCATTACTGACATGCAGCAGCGCCAGCTTGATGCTGATGCACTCGATGCTAAATACACGAAGGAGTTAGCTGATGCGAAAGCTGAAAATGATGCTCTTCGGCGCAAGCTTGATAATGGTGGTCGGGTGCTCGTCAAAGGCAAATGTTCTGTGCCATCCTCAGCCGAAACCTCCAGCGCCTCCGGCATGGGCAATGATGCCACCGTCGAACTC [...]
+NODE	1060	14	1180	863	0	0
+CGGCGACGGCACGC
+GTAAAGTCACCGCC
+NODE	1061	45	4007	1919	0	0
+TCACGCTTTCCGGCAGCAATACTTATACCGGCGGCACCCTTATCA
+CCGTCGCCGGATTTTTCCACGCGGCCCGTACCGCCGATGTTGTTG
+NODE	1062	1629	85384	84917	0	0
+AATACCCGGTGTTTTTTTACGTTTCAAAGTTGAGATAAAACCAGCTAATATAAGGGCGATTAACTATCAGTAGCGTTATCCCTATTCTGGAGATATTCCTTTGATCAACGTTCTTCTTGTTGATGACCACGAACTGGTGCGCGCAGGGATACGACGCATTCTTGAAGATATAAAGGGCATTAAAGTTGTCGGTGAAGCGTGCTGCGGAGAGGATGCGGTAAAATGGTGCCGTACTAACGCCGTTGACGTCGTGCTGATGGATATGAACATGCCCGGTATTGGCGGCCTTGAGGCGACGCGTAAAATTGCCCGATCGACAGCGGATATCAAAGTGATCATGCTGACCGTCCATACGGAGAACCCGTTGCCCGCCAAAGTGATGCAGGCTGGCGCAGCTGGCTATCTCAGCAAAGGCGCTGCGCCTCAGGAGGTGGTGAGCGCTATTCGTTCGGTGTATTCCGGACAACGTTATATCGCCTCCGATATCGCTCA [...]
+CCTTACCCTGGCGAATAAACAGCACATGCACACAGGCCATACCCGCATCAAAAGCCACGCCGATCACGTCGAGATCGTCGCCCGCATTGGAGACAAACTGTCTCTCCGTGACCCGGCGTACCGCCTGGATCTGATCGCGAATACGCGCCGCCTCTTCAAATGCCAGATCCTGGCTGGCCTTTTCCATCCGGGCAATCAGCTGTGTTAAGACCTGGTCGTCCTTACCGGACAAAAACAACCGGACATACTCCACCTGTTGCGCATACTCCTCCTCGCTGACCAGTCCTGCAACGCAGGGGCCTAAACAGCGGCCAATCTGATATTGCAGGCAAGGACGCGAGCGGTTGCGATACACGCTGTTTTCGCACTGGCGGATAGGGAAAATTTTCTGTAACAGCGCCAGCGTTTCCCGAACGGCATAGCCATTAGGAAATGGACCGAAGTACTCGCCTTTCGCATGTTTGGCGCCACGGTGCATCGCCAGACGCGGAT [...]
+NODE	1063	5835	281101	276918	0	0
+TCATCGAGTTCGATCTGCCGTTGCTGGAAGAAAAAGCCAAGTCTACCCTGACTCCGGTTGTTATCTCCAACATGGATGAAATCAAAGAACTGATCAAACTGTCCGGTAGCGTGACCGTGGGTGAAACTCCGGTTATCCGCATTAAGAAGTAATTCTTGCCGCAGTGAAGAATGGCGCCTTTGGGCGCCATTTTTTTTGCCTGTACTTGCGCCGCCATCCGGCGATGGTGCGGCGTACTGCCTGATGGCGCTACGCTTATCAGGCCTACAAGGTTGCGAACATTTCAGCGCCAATCCACGGGCTACAACTGCGAGGTCACCGGGCGAAAGCACTTCTCGCGCATCAGGATCTTCATCCCATCCGGGCCACTCTCCAGCATCCTGCGTTCGGAATCGGACACTTGCAACTCGCACTGATAGCCGCCAGTGATGCCAAACATCGCCCGCGCTACGCAAATATCTTCCAGCGCGTCCAGCCCGCTCGTTTCAAAAT [...]
+AGGATGTTCCGGTTCGCGGCGAGCGTTTGTTTGTTGGACTGCAAAAAGCGCGTCTGTATAACGGCGACCAGCGTATTGAAACGCGTGAAGAGGAACTTGCTCTGGCGCAATCGGCCTGATAGGTTAATTTGTATAGTTATCGCCCGGTGGCGCTTCGCTTACCGGGCCTACAGCGTATATCGTGATTTTGTAGGCCGGGTAAGCACAGCGCCACCCGGCATTTTTATTGAGCTGAAAACGTGAATACATTAGAACAAACCATCGGCAATACGCCGCTGGTCAAATTACAACGTCTGGCGCCGGATAACGGCAGTGAAATCTGGGTTAAGCTGGAAGGCAATAATCCGGCAGGATCGGTGAAAGATCGCGCGGCGCTATCGATGATTGTCGAGGCGGAAAAGCGCGGGGAAATTAAACCGGGCGATGTCCTGATTGAAGCGACCAGCGGCAACACTGGCATTGCGCTGGCGATGATCGCCGCGCTGAAAGGTT [...]
+NODE	1064	13	1105	1105	0	0
+AACGATTACAGAA
+TAGGAGATCGCCA
+NODE	1065	1422	86050	85470	0	0
+GGCAAACTCGCCCGCTTTTACGTCGCCGAGATCGAGCGCAATTTCAATCCTGCTGCCGTCAACGTCCAGACACCATTTTTCCCGGTAAAAATCGGTACTGAACAGCGGCTGTACGTTTGATGCCAGGCCAGCGGGCAGGTTGCCATCAGGCCAGACCTCCGCCGGAAGTTGCGTCAGATCCAGCACGGGTTCGCTTAGCGCGACATTGTATTCGGGTCGCTGGTGCAGCCCGCCCGTTACCCGGCCGGCAATTTTCATGGTCATTTCATAGCGCCCATTTTCACCACGAATACGCAGCCCCATATCATGGCGGCGTAGCCAGTTATCAGGCGTTTCGAAGTAGATATTCAGCAACTGGCTGGGCGCATGATGCTCGCCGCCGAGCGTATGAAGATGATTTCGCAGCGCATCTACGGCGTCGTGATTGACGATAAACTTTAATTCGATTTCCTGAGCCATGGCCTTGTACTTATGGGTTATGTCACATCTGGG [...]
+TTTCCTTTTAAAAACGATCATCCTCTAATGATAAGACAGTGCCGCAGAGAAGGCGATTTAGTTCATCCAGCGGTCTTTGCGTTTACGGCTTGGGATCATATGCGGCAGCACCAGCCCTAACAGCAAGCCAATACCCAATACGCCGCCGCCATACATAAACCACTGCATAATAATGGTGCGCTGTTTGTCATCCAGTTGCAGATTCGCGGCACTAACTTTTTTCTGCGCGACAATCAGCTCGTTTTTCAGCTTCTGGTTCTCTTCTTTTAGCCCGTTGATGACGCTGTCGCTTTGCGCCACTTTCTGCTGCATATCGGCGGTGCGCTGATTCCACGTGGTATCAATATTGTTGAGTTTATCGGTTAACGTTTTGACCTGATTTTCCAGATCCGGCACGCGGGTACGCAGGCTTGGTGTGGTATTCAGTTCTTTTAACGGTATCCAGGCAGTACGACCAGAACTGTCTTTAATTTGACCATAGTTGGCATCGCT [...]
+NODE	1066	4	1658	1617	0	0
+GAGA
+CCTG
+NODE	1067	1830	110381	109725	0	0
+ATCCTGATAAATTAAAGAAAGAGCGGGGTCCTTTTTCTTTAATGCTGCTAACGTTTCTTGCAAAATGCGTTGATGAGATTCATCCAGTACACCACTGATAACAAAAGAGCGCCGCATTGGCGTAACATTGACAAGGCCCACTAAACCGTTCTCTATTATCGCAGAAATAATATCATCCCCCTGAGACTGATGAGAATGACTAATCTGCCAGTGCAATAACCCGGGAATATCTGCAAGTAATGGTTGAACCTTACGCCATTGCTGATCCATTTGTATATCATCATGAATTAACACGCTTCCCGGCCCTTCGCTGGATACTTCAGCATGCGGGTAACCCATTTTTATCAAAACATCCTGCACTTCTCGTATCAATAAGTCATCACAGATTACACCATCCCGATACATGACCCCCCATGATTCGAGAGTCGCTCTCACCTTTTGCATCTGTTCGCTTGACGCGCAATAACCGGACAACTGCAGGCTTCCATCTTC [...]
+TTGCCCATGTTTGCTGCCGACCCACGCCAGAATGCAGTGATCGTTCGTGATTATGCGGCCAATATGGCCGGGTATCGGAAACTCATCACAGAATTAGATCAACGCCAGCAGATGATAGAGATTTCGGTGAAAATTATCGATGTTAATGCTGGAGATATTAACCAGTTAGGCATCGACTGGGGAACGGCAGTGTCGCTGGGTGGCAAGAAAATTGCGTTCAATACAGGTTTGAATGACGGCGGTGCTAGCGGTTTTTCAACGGTAATCAGCGATACCTCAAACTTTATGGTGCGTTTGAATGCCCTGGAAAAAAGCTCTCAGGCTTATGTACTTTCCCAGCCATCTGTGGTGACTTTAAATAATATCCAGGCTGTGCTGGATAAAAATATTACTTTCTATACCAAACTGCAGGGAGAAAAAGTGGCTAAACTTGAATCCATCACTACGGGTTCTTTGTTGCGCGTTACACCTCGCTTGTTAAATGACAATGGC [...]
+NODE	1068	3772	192642	191490	0	0
+CGTCTGGCGCAGGAAAAACGTCCTGACCTGATGATCGACGGTCCGTTGCAGTACGACGCCGCGGTCATGGCTGACGTAGCGAAATCCAAAGCGCCGAACTCGCCGGTTGCGGGTCGCGCTACCGTGTTCATTTTCCCGGATCTGAACACCGGTAACACCACCTACAAAGCGGTACAGCGTTCTGCCGACCTGATCTCCATCGGGCCGATGCTGCAGGGTATGCGCAAGCCGGTGAACGACCTGTCCCGTGGCGCGCTGGTTGACGATATCGTCTATACCATCGCCCTGACGGCAATTCAGGCTTCTCAGCAGCAGCAGTAACAGTAAAAGCCAATGCCGGATGGCGGCGTGAACGCCTTGTCCGGCCTACAGGTGAAATACCGTTGTAGGCCGGATAAGACGCGTTAGCATCGCCATCCGGCATTCTGCTATTTACCCTGCAAAGCGGAATTTTTTGCTTAACTGCGCTGCATCAATGAATAACTATTCCCT [...]
+GACTGGCCGGAACGCGATTACTTCGTACTGTCGAAAGGCCATGCGGGCCCCGCGTTGTACAGTACCCTGGCGATTAAAGGCTATTTCCCGCGCGAAGAGCTGAATACGCTTAACCAGAACGGCACCCGTCTTCCCAGCCATCCGGATCGGCTAAAAACGCGCGGCGTGGACGCCACGACCGGCTCACTGGGACAGGGCATCTCTATTGCGGGCGGAATGGCGTTGTCGCATAAACTGGCGCGGCGACCCAACCGGGTATTTTGCATTGTCGGCGATGGCGAGCTCAATGAAGGGCAGTGCTGGGAGGCGTTTCAGTTTATTGCCCACCACCGCCTGAATAATCTGACCGTTTTCATTGACTGGAATAAACAGCAGCTTGACGGCGAACTGGAGGAGATTATCAATCCGTTCGATCTGGAAGGGAAATTCCGTGCGTTTGGTTTCGATGTCGTCACCGTCAAAGGCGATGATATCGCCGGACTACTGGCGGTG [...]
+NODE	1069	51	3777	3777	0	0
+TTAACGATTGCGTGAAAATTAGCCATTGCAATGCCAGCGCAAAACAGTATC
+ACCTGCCTGGCTTACTGACGAAGATGGGCGTAAAATATCGCCGTTTTTCTA
+NODE	1070	17	8176	3239	0	0
+ACTTTCGTTGTTCTGTG
+TGATGAATCGCGAGAAA
+NODE	1071	23	11555	9500	0	0
+TTTCAATTTTCAGCTTGATCCAG
+TCTCTCAAATTTTCGCAACACGA
+NODE	1072	13	6084	3162	0	0
+ATTTTTAAAGAGC
+AGTTGTTCGTGAG
+NODE	1073	3	1545	1407	0	0
+AAA
+GAA
+NODE	1074	36	9759	9726	0	0
+TATCTCAAACGTGACTCGTAAGTCAGTTTTGAGATA
+ATCTGGATCAAGCTGAAAATTGAAACACAGAACAAC
+NODE	1075	16	989	989	0	0
+CGCCCTTTCACGGCGG
+ATTGCTTATCACGCGC
+NODE	1076	49	2176	2176	0	0
+CGAGCCGGGGCCGCATTTCGGTCTTGGCCTTGAGGCTTACGCCACCTGG
+TGCTGATTTCCGCAAAAGACTGGAAGCGACGAATGCGGCTGTCAAGGAA
+NODE	1077	235	11011	11011	0	0
+CGGTTCGGCGATTACCTGGAAATACCCGAGCTGTATTCTGCGTGGTGATAATTCTATCGGCGAGTTCTATTCCGTTGCGCTGACCAGTGGACATCAGCAGGCTGACACCGGCACCAAAATGATCCATATCGGTAAAAACACGCGCTCAACCATTATCTCAAAAGGCATTTCCGCCGGCTACAGCCAGAACAGCTACCGTGGGCTGGTAAAAATTATGCCGACGGCAACCAACGCC
+GGCTGTAGCCGGCGGAAATGCCTTTTGAGATAATGGTTGAGCGCGTGTTTTTACCGATATGGATCATTTTGGTGCCGGTGTCAGCCTGCTGATGTCCACTGGTCAGCGCAACGGAATAGAACTCGCCGATAGAATTATCACCACGCAGAATACAGCTCGGGTATTTCCAGGTAATCGCCGAACCGGTTTCCGACTGGGTCCACGACATCTTGCTGTTTTCCCCTTCGCACAACGC
+NODE	1078	2733	128366	127128	0	0
+GCGGCGCGCGTCCCGATCTTCTTGATATTGCCTGCCGTGATGCGCGATAGCCGTGCGTAAACGCTGCTGCTGCACATAACGATCTTCGCGACGTAATTCAGCGTCATCGCTCAAGGCAATCAGCAATTCATTCATATGGGCAATTACGCTCTCCGCGATGGCGGCATCCACGCGGGCACTCACTTCCTCCAGGTGCGACATAAGCTCTCCTACTCTTTATTCTGTAACAGCATGATTCGCCTATTATACGCGTTATTGTCGCCCGATGCGGTAATTCGCCGCCGCCACCCTGATTTAACTTACGTCAAGTGGAAACACGGGGCTTAATAGACCGAGAATTCGCGCCTTTTTGCCTTTCTTCCGCCGTTTGCTTGCGTATAGACCCCGTAAAGTAGACGCGTGAAGAAGTCTAAGGGATAACAACGTGGCAAAATCTCTCTTGCGCAGCGGCAATCTGGATGATTATCAGGCCGTGGGCGGCGGCGGTCAGGC [...]
+GAAAAGTGTTGCTTGCCAAAGCGCGCTTCCGAGAATTCTACCCGGCTGGTAAATAAAGGGTCGTTCAGATACTGCGGCTCGCTTAAAGAACGCACCTGAAGCTCTGCCGTCTGGCGTAACCCGTCATTCGCATCGCCATGATCCTCGATCAAGACGCCGCAGGTATGCGTATTGCCGACATCCAGAATCAGATCGACCGGGATTGCGGGCGTGCTTAACGTATGTGTCACAAACTTTACTTCCGGCACCGTAAGCTGTTCGCCTAACAGCGTCAGTAAATTCAACCAGTGCGCCTGATACTCAAAGCTACGCAGCGCTTGTTGTATGGCCTGTTCCGAACGGTTTTCCACCTGTGAGGCATACTGAAGAAACGACTCGCGCAGCCAGCCGTCAATCCATGTCTGGTCAAGGAAATCGGCAACTTCTTCATCGCGCCAGGCGAGCGCAAAACGTGTGCCATTGAGCAGATCGTTTTCGCAAGGCGCCAACGCC [...]
+NODE	1079	6289	343102	339869	0	0
+GCTGATAACAAGCAGGCGATTAAGCCAGTTTGTTGATCTGTGCAGTCAGGTTAGCTTTATGACGTGCAGCTTTGTTTTTGTGGATCAGACCTTTAGCAGCCTGACGGTCCACGATCGGTTGCATTTCGTTAAATGCTTTCAGTGCAGCAGCTTTGTCGCCAGCTTCGATAGCTGCGTATACTTTCTTGATGAAAGTACGCATCATAGAGCGACGGCTTGCGTTGTGCTTACGAGCCTTTTCAGACTGAACGGCGCGCTTCTTAGCTGATTTGATATTAGCCAAGGTCCAACTCCCAAATGTGTTCTATATGGACAATTCAAAGGCCGAGGAATATGCCCTTTTAGCCTTCTTTTGTCAATGGATTTGTGCAAATAAGCGCCGTTTAAATTGCAGCACTCGTTGCGTAGTGATGGCGCAGGATTCTACCAGCTTGCGTGCTGTGAATACAGCCTTTCCATGAGAAAAATTGCATTAAGCGGCGGGTTTTGGGG [...]
+GAGTTAGAAGAGTTTTTCGAGCCGACCACCAGCACCACGTCAGCCTGCTCCGCCAGCGCCCGCACCGCTTCCTGACGATTAGTAGTGGCATAGCAAATATCGTCTTTGCGCGGGCCGACGATTTTCGGAAAGCGTTTACGCAGCGCATCAATCACATCGGACGTATCGTCCACGGAAAGCGTGGTTTGCGTCATGAAGGAGAGCTTGCCTTCATTTTTGACATTCAGCGTCCAGACGTCCTCTGGCGACTCAACCAGGTACATCCCCCCTTCCGGGTTGCTGTACTGACCCATGGTGCCTTCCACTTCCGGGTGCCCGGCGTGGCCGATGAGAATAGATTCTTCACCGCGACGGCTGGCGCGCGCCACTTCCATATGGACTTTCGTCACCAGCGGGCAGGTGGCGTCAAAAACGGTAAGATCGCGGCTTTTCGCCTCGTTACGCACCGCCTGGGAAACCCCATGAGCGGAGAAAATCAGAATGGCGCCATCC [...]
+NODE	1080	5774	275569	272420	0	0
+CGTCAGACCAAACTGTACGCAGGCCATATTCATCGCCAGATGCAAACTGCAAAACGGGCTGGTGCCGGGATTGAAATCGCTGGCGACGGCGACAGGCACCTGATAGCGGCGCAGCAGTTCCACCGGCGGGCGCTGCGTCTCGCGCAGAAAATAAAACGCGCCGGGCAATAATACGCCGACAGTACCGCCGTCACGCATCGCCGCGACGCCCGCTTCATCAAGATATTCGATATGATCCGCCGATAAGCCCTGATAACGGCTCACCAACTGCGCGCCGCCCAACAGCGAAAGCTGCTCAACATGGCCTTTAACGGGAATACCTAACGCCTTCGCCGTCTGCAACACGCGCTCACTCTGCGCCACATTAAAACCGACGCTCTCGCAAAAGAGGTCTACCGCATCAAATAACCCTTTTTGCCAGAGCTGCGGAATCATCGTCTCGCAGACCAGAGTGATGTAGCCGTCCGGGTCGTCACGATACTCCGCTGGCGT [...]
+GGGCGCTAACCATGCTGGAGCTTAATTTTTCCCAGACGCTGGGAACGCACTGTTTAACCCTCAACGAAACGCTGCCAGCCAGTGGGATCACGGCTATCTTTGGCGTCTCCGGCGCGGGAAAAACCTCGCTGATTAATGCCATCAGCGGTTTGACTCGCCCGCAAAAAGGACGCATCGCGCTGAATGGCCGGGTGTTGCATGACGCGGAAAACGGTATCTGTTTAACGCCGGAAAAGCGCCGCATCGGTTATGTTTTCCAGGATGCGCGCCTGTTCCCCCATTACAAAGTACGCGGCAATTTGCGCTACGGCATGGCGAAAAGCATGACCGGTCAGTTTGATAAGCTGGTGTCGCTGCTGGGAATTGAAGCGTTGCTTGATCGCCTGCCGGGGAGCTTGTCCGGCGGAGAAAAACAGCGTGTAGCGATAGGCCGGGCATTGCTCACCGCCCCGGAGTTGCTGCTGTTGGACGAACCGTTGGCCTCGCTGGATA [...]
+NODE	1081	585	24600	24443	0	0
+TCGCGCTGAGAATAAACGGGGACCCTGTTAGCCACGCAAAAAAGCTGGCGGAACAGGCGGCATAAATCAGCACATTACCGCGATAGGTTTTAGAGCGTAACAACGTCGCGAAAGTGAGTTTATCCTGTCCTTCGGTACGCGCTTTTACCGATGGTTTTAAGCGCAGCGCCGGCAACATCAGCAACAACGTAATCACGAACAGGGTGGCGAAAATCGCCTGCCATGAGAAATGCGTCAGTATCCAGCTTCCCAGTAAGGGCGCAAGCGCCGGGGATAATCCCACCAGTGGCATGATAGTGGCGAAGATACGGTTAATTTTTTGCGAAGGATAATAATCGGTCACCAGCGCTTGCCAGATTACCGTTGCCGCACAAACGCCGACGGCCTGCACAAAGCGCAGCGTCAGCAGTGCTGCCGCGCTTTCTACCCACAGCATCCCCAGACTTCCGAGCGCAAAGATAGATAACCCCAGCAGTAAAATCGGTTTACGGC [...]
+GCCGTCGCGCAACTACTTTGGGGACCGCTATCGGATCGTTATGGCCGTAAACCGATTTTACTGCTGGGGTTATCTATCTTTGCGCTCGGAAGTCTGGGGATGCTGTGGGTAGAAAGCGCGGCAGCACTGCTGACGCTGCGCTTTGTGCAGGCCGTCGGCGTTTGTGCGGCAACGGTAATCTGGCAAGCGCTGGTGACCGATTATTATCCTTCGCAAAAAATTAACCGTATCTTCGCCACTATCATGCCACTGGTGGGATTATCCCCGGCGCTTGCGCCCTTACTGGGAAGCTGGATACTGACGCATTTCTCATGGCAGGCGATTTTCGCCACCCTGTTCGTGATTACGTTGTTGCTGATGTTGCCGGCGCTGCGCTTAAAACCATCGGTAAAAGCGCGTACCGAAGGACAGGATAAACTCACTTTCGCGACGTTGTTACGCTCTAAAACCTATCGCGGTAATGTGCTGATTTATGCCGCCTGTTCCGCCAGC [...]
+NODE	1082	43	4944	4913	0	0
+CCGGGATGGCGGAGATGGCCCTGCTGAAGGCTATCGAGGCGGG
+GTGACAGTGCAGGTGCAGGCGCACCTCAAAACGTTTTTTGATT
+NODE	1083	51	308	308	0	0
+GGTTGACGGCGTGGACACGGCAATTTCCTCCATGAGCGCCACCTACGGCCA
+CCCCGCCTCGATAGCCTTCAGCAGGGCCATCTCCGCCATCCCGGTGGTGGC
+NODE	1084	12	1670	1291	0	0
+CGCCACCAGCGC
+CCTGAAGCTGGA
+NODE	1085	50	1002	1002	0	0
+GTGGCCTGTGAGGAACGCCTTCGGGTGGCCCATGTCGCTCCGGCGACCAC
+ATGGAACATTGGTGGTCGCCGGAGCGACATGGGCCACCCGAAGGCGTTCC
+NODE	1086	1914	100695	99559	0	0
+GCCGCCAGTGGTCACTAAAGGAACCTTATATCGGCGACAGTACGCAATCAGAGCGGCTTTTGGACGAACGCTGTCAATGGCGTCAATGACATAGGTAAAACCCGCGTCCATATAACCCGCCACATTATCCGGCGTGATGAAATCATCGATAACCGTTACCCGGCACTCCGGGTTAATTTGCCGAATCCGTTCGGCCATCACTTCCGCTTTCGCCAACCCGACGTTATCACGCAACGCATGGATCTGACGGTTCGTATTGGTCACGCAGACATCGTCCATATCAATCAGCGTAATCGCACCGATGCCCGTACGCGCCAGCGCCTCTGCCGCCCATGATCCCACCCCGCCGATTCCCACGACGCAGATATGCGCCTCAGCAAACCGCTGCAGCGCTTTTTCACCGTACAGACGCGCGGTGCCGCCAAAGCGTTGGCGCCAGGCATCACTTATCACCACTGACATATGACCTCAGAATAAAAAAAGGCGAGGTTA [...]
+CACTATACTCCGCTGAGCTTTTGTTGCAACCCTTTTTTCATATAAATCGCTAATTTCTCATGAATTGCGCAAATACACCGCAGATAGCGCGATTTTTAAACGAATTTACATAATGAGATCGCGATCGCATTTCATTACTCCGGACGGTTTGTTATCTTCACCGGGCACTTTCGATTACGCAGAAGACGAGACACCATGAAAGGACGTTGGGCAAAATATGTGGCGACAGGCGTAATGCTGGCAATGCTGGCTGCCTGTTCATCAAAACCGACCGATCGCGGTCAGCAATATAAGGACGGGAAATTTACCCAGCCCTTCTCCCTGGTAAACCAGCCGGACGCGGTGGGCGCGCCGATTAATGCTGGTGACTTTGCCGAGCAGGTCAACCAGATCCGTTCCGCGTCGCCGCGTTTATACACCAATCAAAGCAACGTCTATAACGCTGTCCAGAACTGGTTACGTTCCGGAGGCGATACGCGCACTATGCGCCAG [...]
+NODE	1087	1626	79815	78631	0	0
+TTCCAGATTGAAGCTTTGCAGGCTCAGCGAAGTCTGCCAGGTGTTGGTGTTCACCATAAAGACCGGCAGACCGGTGGCGAATGCGCGTTCGCACAGTTTAGAAATGCGTGCGTCCATTTCATAGCCGCCGGTCAGCAACAGAGCGCCGATTTCTACGCCGTTCATCGCGGCCAGGCAAGCTGCGACCAGTACGTCCGGACGGTCAGCGGAGGTCACTAACAACGATCCTGCGCGGAAATGTTCCAGCATATGCGGAATACTACGCGCGCAGAACGTAACGGATTTAACGCGGCGGGTTTTGATATCGCCTTCGTTAATGATGGTGGCGTTCAGGTGACGCGCCATATCGATAGCGCGGGTCGCAATCAGGTCGAAGCTCCACGGCACCGCGCCCAGAACCGGCAGCGGGCTGGATTCCTGCAGTTTAGCAGGATCGATTTTGATCACCTGCGCTTTGGAAGAGTCGTCAAAGATCTCCGACAGATCCGGGCG [...]
+GCGATTATCTTCCACCTGCACGACACTCTGGGCATGAGCGTAGATCAGATCAACAAAATGCTGACCAAAGAGTCCGGTCTGCTGGGTCTGACTGAAGTGACCAGCGACTGCCGTTATGTTGAAGACAACTACGCCACCAAAGAAGACGCAAAACGTGCGATGGACGTTTACTGCCACCGCCTGGCGAAGTACATCGGTTCTTACACCGCTCTGATGGACGGTCGTCTGGATGCAGTCGTGTTCACCGGCGGTATCGGTGAAAACGCCGCGATGGTTCGCGAACTGTCTCTGGGCAAACTGGGCGTACTGGGCTTTGAAGTCGACCACGAACGTAACCTGGCGGCCCGCTTCGGCAAATCTGGTTTCATCAACAAAGAAGGTACCCGTCCGGCGGTGGTGATCCCAACCAACGAAGAACTGGTTATCGCGCAGGACGCGAGCCGTCTGACTGCCTGATTTCACACCGCCAGCCTCGCTGGCGGTGCTGTTTTG [...]
+NODE	1088	18	2880	2820	0	0
+CGCGCTGTCCGTGTCCAA
+ATTTTGAGCACTGCCCAG
+NODE	1089	24	9545	3825	0	0
+CAGTGATAAACTGGAGGAAGGTGG
+ATCGCTGGCAACAAAGGATAAGGG
+NODE	1090	5	1899	737	0	0
+GGATG
+ACCTA
+NODE	1091	8	300	260	0	0
+TTAGTCAC
+ACGCCCGC
+NODE	1092	153	6267	5789	0	0
+CAGCAGGGCGACCGCTTTCGCCGCGTCCAGCACCGAACCGCCGCCAAAGGCCACTACGCCGTCGCACGCCGCCTCACGCAGTTGCGCCACCGCCGCGCAGACGTCGGTGATGCACGGCTCGCCTGGCGGACACGGCCAGACCGTCATCGCCAC
+CGTCTGCGCGGCGGTGGCGCAACTGCGTGAGGCGGCGTGCGACGGCGTAGTGGCCTTTGGCGGCGGTTCGGTGCTGGACGCGGCGAAAGCGGTCGCCCTGCTGGTGACTAACCCTGACCAGACGCTGAGCGCCATGACCGATCGCAGCACATT
+NODE	1093	51	2379	2275	0	0
+ACCCGTTCAAAGCACCGCAACCCCGCCAAAAGCGGAGCCGGAGAAACCTAA
+TTCAACAGGGGATCTGCTTAGCATGGAACAACCGCCCAGCATGAGTGCCAA
+NODE	1094	323	18444	17783	0	0
+AGCGCCGCGTGCCGCTCCCGTCAGGATTTACACCAATGCTGAAGACTTAGTCGGCAAACCTTTCCGCGATCTTGGCGAGGTTAGCGGCGAATCCTGCCAGGCGACAAATCAAGACTCTCCGCCTAACATTCCAACTGCGCGCAAGCGTATGCAGATTAATGCATCTAAAATGAAAGCCAACGCCGTCCTGCTGCACAGCTGTGAAATTACCAGCGGCACGCCAGGCTGCTATCGTCAGGCGGTTTGTATCGGGTCCGCCCTGAATATTTCGGCGAAATGAGCAGCTTTCAGTTTGAACAAATCGGCGTTATTCGCTCCCCCTA
+GCCGAAATATTCAGGGCGGACCCGATACAAACCGCCTGACGATAGCAGCCTGGCGTGCCGCTGGTAATTTCACAGCTGTGCAGCAGGACGGCGTTGGCTTTCATTTTAGATGCATTAATCTGCATACGCTTGCGCGCAGTTGGAATGTTAGGCGGAGAGTCTTGATTTGTCGCCTGGCAGGATTCGCCGCTAACCTCGCCAAGATCGCGGAAAGGTTTGCCGACTAAGTCTTCAGCATTGGTGTAAATCCTGACGGGAGCGGCACGCGGCGCTTTAGGTTTCTCCGGCTCCGCTTTTGGCGGGGTTGCGGTGCTTTGAACGGG
+NODE	1095	764	35109	34567	0	0
+TGGAACGGCGGCGCATTTGACTGGGCGAGCGACAGCGATTCCCGCCTTGGCCCGGTACTTGAGCTGGTCACCGGCGGCGTGTATATCTGGCTGCCGTTTTCGCAAATATGCTCGCTGGAATCGCCGCAACCGGCGCGCCTGACCGATCTGCTGTGGAAACCCGTTAATATCACCCTGGTGAATGGCGATACGCACGGCGCCTGGCTCTTTACCCGTTACAGCGGTTCGGAAAGTGCATCTGACGCCCTGCGTCTGTGCCGGGAAACCGCCTGGCAGGATGGCCCCGGCGAAACCACCGTGCGGGCGCTGGGGCAGAAAGTGTGGCTGACCAGCCACGGCGATATCAGCCTGCTGGACATGGCCCATTGTACCTTTCATGCTCAGGAAAACGATGGCGCATGAGCACGTCCCGTTTTACACCCGCTAACCATCTGCTGCCCACCCTATTTGATCGGCTGTGTGACAATGCCCCGTATCAGAAAATTGACCGGG [...]
+CGAAACGGATAATGGCGCGCCGGATCGCCTCGCTGATATCGTCCCACTTATGCTCATACATAAAGCTGCCCGCCAGCGGCGGCAGGCCATAGTTGAGCACTGACGCCGCCGCCTGCGGATAGCGCCTGGCGTCGATGTCACCCTCGTGGCTAATGGTATTGAGCAAAAAGGAGAGATCCCGGCGAATGATCTCCTTCAGTTGTACCGGCGTGACGCTGATATCCCGGTCAATTTTCTGATACGGGGCATTGTCACACAGCCGATCAAATAGGGTGGGCAGCAGATGGTTAGCGGGTGTAAAACGGGACGTGCTCATGCGCCATCGTTTTCCTGAGCATGAAAGGTACAATGGGCCATGTCCAGCAGGCTGATATCGCCGTGGCTGGTCAGCCACACTTTCTGCCCCAGCGCCCGCACGGTGGTTTCGCCGGGGCCATCCTGCCAGGCGGTTTCCCGGCACAGACGCAGGGCGTCAGATGCACTTTCCGAACC [...]
+NODE	1096	2323	101481	99699	0	0
+CCGAAAGCGTCGTAGCTGTACTGCCACACCTCACCGTCCGGCGTTCTCACCTCCCGCAGACGGTCGAAGTTATCCCAGCGGTAGCGCCATTCCTGCGGCCGGAAGCCCCGTTTCTGTTCGGTGCGTTTTATCACCCGCCCGCAGGCGTCGTATTCGTAGCGGCTGTCTCCTGCCTGCGTCACGCATTCGTTGCGGTAGTCATGCTGTGACAGAATGCCGTTTATCCGGCTTTCCGCGATTTGCTCGTTCACCGTGTAGCGGTAGCGCTCTTCCTGCGCCGGGCCGTCGGCGTTCAGCCGCAGCACGCTGGTTATCTGGTCGCGGTTGTCATAGCTGTAGCGTGCTTCCTGTTCGCTGCGCGTTTTCGACCACACCTCATGGCCCGTCAGGCGGCCCGATTTATCCCACGCGTAACGGTGTTCGCCCAGCGGTCGCCATGACGCCACGCTCTCATGGCTGCCTGTCAGTCGCTCCGCCCCCGCCCGCTGCCAC [...]
+CGTAACCGCAACGAAATCCGCTTTCTCTATAACGGTGTGGGCCATCTGACAAACGTCGAACACAGCGGCGGCCTGCGCCTGCGGGTGATGTGTGGCCCGGAAGGACTGATTTACCGCGTCAGCGACGAGGCGGACGGCAGTGAGCTGGTACGTTATGACTACACTCACCACGGCGATGAGTGGTGGCTGCGTGATGCGCAGACGCGGTTTAACGGCACGCTGCATTACACGTACACCGAACAGGGCTGGCTGAATTCCTGGCGCGACAACGGCCCGACACATTTCCACCTGCGCTACGACGATGAAGGGCGGGTGGTGGCGACGGGCACCGAAGAGGGGCTGTATAACGACACCTTCCGTTACTTCCCGGCAGAGCGCAAAACCGAGTACACCGATGCAACCGGGGCCGTCACCACGCTGTGGTTTGATGAAACATGGCTGCTGATAAAACAGCGAGACCCGCTGGGGCGCATCACGGAATGGGTGCGCGAT [...]
+NODE	1097	1287	72172	71918	0	0
+TCGCGCGCTGCGACTTCTGTAGGCAATGTCGCATAATAATCAATAGCGCGCGGAAGCGTCAGATCATCACCTTGTTCCTGTAATCCCCGGCACACACGGGAATCGTGTATCCAGTTCCAGTCGTATCGGGTTGGATACAAGAACTGGCGGTAAAAGTTTCCTTTATCATTGTGACTCTCTCTATAACTAAAAGAGATTTCCGGGCCACCAGCGAGCAATTTATCCAGCGTCTTTTCCCAGTTAAGATCCTCTTCCGACATGAACACAAAATCGCGCCAGCCTTGTTGGGTAACCACACCCACCAGCCAGATCGGAAACGTCTTCCCCTTTTCATCAAGCCAGTCCTCTATACGATTTAAACGCTGTGTTTCATCGGGCTGCGGTAAACCATTTTCATAACAGTTTGTGTAATGAACACGTAAGAACCAGGTATGGATAAGGCGATCAAATTTTTCATCCTGAATGGCGCCGATATCCACACGTATACCCGTA [...]
+GGGTCGTGCTATGTTCCGTAAACTGAAAGTTTACGCGGGCAACGAGCACAACCACGCGGCACAGCAACCGCAAGTTCTTGACATCTAATCGGGATTATAGGCAATGGCTGAAAATCAATACTACGGCACTGGTCGCCGCAAAAGTTCCGCAGCTCGCGTTTTCATCAAACCGGGCAACGGTAAAATCGTTATCAACCAACGTTCTCTGGAACAGTACTTCGGTCGTGAAACTGCCCGCATGGTAGTTCGTCAGCCGCTGGAACTGGTCGACATGGTTGAGAAACTGGATCTGTACATCACTGTTAAAGGTGGTGGTATCTCTGGTCAGGCTGGTGCGATCCGTCACGGTATCACCCGCGCTCTGATGGAGTACGACGAGTCCCTGCGTGGCGAACTGCGTAAAGCTGGCTTCGTTACTCGTGACGCTCGTCAGGTTGAACGTAAGAAAGTCGGCCTGCGTAAAGCACGTCGTCGTCCGCAGTTCTCCAAACG [...]
+NODE	1098	904	55383	53020	0	0
+AGATAATACTGATTGCCGAGATCCTGACGGACAAACAGATTGTCAAACCAGGCCTGACTGTTATTGTAATGTTCTGACTGATTCCAGATAGCCGCCCAGTTGCCTCCCAGATAACGACCGTCACCAAGCCCCAGGGCACCGCTACCATTCAGTGTCATATTACGACTGTGGAGATCATCACTCAGATACAGCGTCTGGCGGTGAATAAATGCGCTGACACCCTCCGGGGTCGGAGTCAGCCAGCGTTTATCACGTCGTTCTTCATCCGGCAACCAGTCCCGGTTAAGAAACAAAGATAACTGACCGTTGTTCTCATCAAAAATAACCGCAACATCCTCTTTATCTGTTGCCACGTAACCACACTCGCTGCTGTCTTTTGCTTCTGAGACACCACAGACCAGATTGCTGTTACGTAGCAACGGACGGCTGAGTGCAGCCAGCGCTTTTTGCCGTTCTGCGACCGGCAACGCGGCAAGCCCACTGCTTTCAAGT [...]
+TACAGCGGATTGGTCAGTCTGGTGATTTCACAGGCTGTCACTGCCGGCTAATAACCGGTTATTAGCTCTTCATCTGATCCGGTTTTGGGGTGTCACCGTTCGTACCTGAACCGGATCCGGTATTGATCTTATTATTCATTGCAATTCAGGTCTCTTTACGTGAGTCGTTATTTCTGGATGTATTATTTACTGGGATTGTGCAGTTTTACCAGCCAGGCAAATCTTATTCCCCCACCTGGATTTGAATCTCTGCTGGAAGGACAGACTGAGCAAATTGAAGTGTTGCTACCAGGGCATTCACTGGGATTATTTCCGGTGGTGGTTAAACCGGACACCGTGCAGTTCATGTCCCCATTGATGGTACTTGAAAGCAGTGGGCTTGCCGCGTTGCCGGTCGCAGAACGGCAAAAAGCGCTGGCTGCACTCAGCCGTCCGTTGCTACGTAACAGCAATCTGGTCTGTGGTGTCTCAGAAGCAAAAGACAGCAGCGAG [...]
+NODE	1099	51	2479	1690	0	0
+CCAGGTTCAGCAGAGCTGAAGCATCGCCAGTTTTTCCGTCCGGGAACAGGG
+GATATTGGTCAGAAGGCTGGAGCAGCCTTACAAAACCTGCCTGCCGGTGAA
+NODE	1100	1128	58195	56337	0	0
+TTGGCTTCGACGACGGGCTCCAGCAGTTCTGCCAGCGTCGGACGGCGCGGTGGATAACAACGGGCGATATTGCGTAACGTAAAATCGGTTTTCAGGTTTAAATCGCGACGGAATCCCACCAACACAATACGTTCCCGATGCTGAGGAAGAAAGTGCTGCCCGTCGATAATTTTCGGATCGTCCGGGCCATTGTCAGCGGCATCCGCCACGTCATATCCCAGTTCATCGAGCGTTTGCATAATAATGCGGAAGGTGTTGCCCTGGTCGTGACTTTTAAGGTTTTTCACATTTTCCAGCACAAACAGCGCGGGGCGGCGAGCGTCGATAATTCTTACGACATCAAAAAATAACGTCCCCTGAGTCTCGCAGGCAAAGCCGTGGGCGCGGCCCAGCGCATTTTTCTTGGAAACGCCCGCCAGAGAAAATGGCTGACAGGGAAAGCCCGCCAGCAGGACATCATGTTGCGGAATATGCTGGCGAATGTGTTCCGCC [...]
+GGTCATCCAGATGTTTGCTACGCATCAGTAACCCCTGCCGCTGAAACGTAAACCGCGTCATTTTATGTTAGTCTGTCGGCAATTATTTTTGGCCGGTTAAATGTATGCAGGAAAATATTTCAGTAACACACGCCCGGAACCTCATCGCCGACGACGCCGGAAGCGAGATCCAGGCGATGCTGAGTCAATTGCTGGAAATCTACGATGTTAAAACGCTGGTGGCGCACCTTAACGGCTTGGGCGAGCAGCACTGGAGCCCGGCCATCTTCAAGCGCGTAATGATGAACGCGGCATGGCATCGCTTGAGCGACAATGAACTCACCTGTCTTAAAACAGGGTTGCCGACGCCGCCAGCGCATCATCCGCATTACGCCTTTCGTTTTATTGATCTCTTCGCGGGCATCGGCGGCATTCGCCGCGGATTTGAAGCGATAGGCGGACAGTGCGTGTTTACCAGCGAATGGAATAAGCACGCGGTACGGACATATAAAG [...]
+NODE	1101	1084	56644	55530	0	0
+TCAAAAACCCCTGGTCACCCGGAAGTGGGCTACACCGCTGGTGTTGAAACCACTACTGGCCCGCTGGGTCAGGGTATTGCCAACGCCGTCGGGATGGCGATTGCCGAGAAAACTCTGGCGGCGCAGTTTAACCGTCCTGGCCACGACATCGTTGACCACTTCACCTACGTCTTTATGGGCGACGGCTGCATGATGGAAGGCATTTCTCACGAAGTGTGCTCTCTGGCTGGTACTCTGAAACTGGGCAAACTGATCGCGTTCTATGATGACAACGGTATCTCTATCGATGGTCACGTTGAAGGCTGGTTCACCGATGACACCGCGAAACGTTTTGAAGCTTACGGCTGGCATGTTATCCGTGGCATTGACGGTCACGATGCCGACGCCATTAAACGCGCCACGGAAGAAGCTCGCGCCGTGACTGACAAACCGTCCCTGCTGATGTGCAAAACCATCATCGGCTTCGGTTCGCCGAACAAACAGGGTACCCAC [...]
+TCGACGAACATCAGGAAGGTGGAGGTGTACGGCAGGAAACCGCCGTGCAGGGCGATACCGTTGGCGATAGCGGTCATACCGAATTCGCGCACACCGTAATGAATGTAGTTACCTGCGGCATCTTCGTTAATCGCTTTCGAACCGGACCATAGGGTCAGGTTAGACGGTGCCAGGTCTGCAGAGCCGCCAAGGAATTCCGGCAACAGCGGACCGAAGGCTTCGATGGCATTCTGGGACGCTTTACGGCTGGCGATTTTGGATGGATTCGCCTGCAGTTTAGCGATGAACTCATTCGCTTTCGCATCGAAGTCAGCCGGCATGTCGCCTTTCATACGACGGGTGAATTCAGCAGCTTCCTGCGGGAAGGCTTTCTCATAAGCCGCGAATTTCTCGTTCCATGCGGATTCTTTCGCCTGGCCGGCTTCTTTCGCATCCCACTGGGCGTAGATTTCAGACGGGATTTCGAACGGCGCGTATTTCCAGCCCAACTGT [...]
+NODE	1102	13	648	634	0	0
+GCAATATACCGCC
+TAAAAAGCTCCGG
+NODE	1103	2985	178350	176330	0	0
+AAATCTGTTCATATTCATCTTTTATCCCACCAGAATCACTGGCATTGCTCGTGTAAGATTTCTACGCCAGAAGCGGAGGGGGAGCTCGGTATACGATAAGAGACCTGACACTGGTCTGCTGCTGTTGGCCCCCACTTCACTAATAACCGCCCTTGTTTTTCCAGTCCGGTTAACCAGGCTTGCCCCGCATCACCAACAAAACTGCTGTGATTGTCTGGTTTTGTTAAAGACGAGACGGTCGCGCCAAAAGGAACAGGCAGATTGTTTATGCGGGTTAATACCATCAATGCCTTGTAACCAATATTGGTTTTATATTCAGCCCTGACCACCGCGCCACGGGTAGGCACCAGTGTTTTACTGGTATCAATGAGCTCAATATTTTTTCTAATGCCAGTCGTATCTAAAGACACTTCATTACGATGGTAAGGCGAAGCATAAGGTACGACGGCATACCCCCGAAAATCGGTGTCCACGCCCGTTTCGTTATTCACG [...]
+AAATCTCCATTAATACCCAAATAAAGCTTATTTATCGACCGCCAGCATTAACAAAATCAACGCCTGATAGCCAGAGCCAACAATTAAAATGGCAGACGGCAGGTGATGTTATTACCGTAAATAACCCCACTCCCTATTATATGAACTTTGCCAGTGTGACGCTTAACAGCCATGAAGTGAAATCAGCGACCTTCGTTCCGCCAAAATCATCAGCGTCATTTAAATTGGGTTCTACTGCCGCCCCTCATGGCACGGTAACGTGGCGATTAATCAGCGATTATGGGATGAGTTTAGAGCCGCATTCCGGTTCATTCTAGCCATTAACGACTTCACTTTACTTTTACCCTTTCAGGACTTTTACTGTGCAATTCTCCAGAGTAGAGCCCCGTTCTCAATTAGCGTTATCGTTTCTGTTTATATGCTGTTCCATAAAACCAGCGTTAGCGCATGATCATTTTAATCCATTATCGTTGGAAAATGATGAACCGGGCG [...]
+NODE	1104	4436	268702	265970	0	0
+CTGGTAGAGATGGCCGCTCATCAGGTGGACAAAGAGAAAGCGAAAGTCGCTTTCTTCTATTCCAGCCCAACGGTGACCGACCAGAACCAGTGGGTGAAAGAAGCTAAAGCCAAAATTAGCCAGGAACATCCGGGGTGGGAGATAGTCACTACCCAGTTTGGCTATAACGATGCCACGAAATCGCTCCAGACGGCGGAAGGTATCATCAAAGCGTATCCCGATCTGGATGCCATCATCGCGCCTGACGCTAACGCTTTACCTGCTGCGGCACAGGCGGCGGAGAACCTTAAACGCAATAATCTCGCGATTGTTGGTTTTAGTACGCCGAATGTAATGCGCCCTTATGTTCAGCGCGGCACTGTTAAAGAGTTTGGCCTGTGGGATGTCGTCCAACAGGGAAAAATTTCCGTATATGTCGCCAACGCGTTGCTGAAAAATATGCCAATGAATGTCGGTGATTCACTGGATATTCCCGGCATCGGCAAAGTCACC [...]
+TCCAGAAATCACGGCGTCCGATACGCCCTTTAAATGAGAATAACCATTGCTGTATGGTCATGTAAGTTCCTTATATTTTGCCTTCCGCTACAGTTTACCCTTTTGACAAGCCCGACAGTTATCGTTTTAATCGTGAGCAGTCCTAACGAAAGGTAAGATTGATGAAGCCAGGATGTACTCTGTTTTTACTGTTGTTTTCTGCTCTCACCGCCAGCATAACGGCGCACGCGCAGCTCTCTTCATCGACCACGACAGCGCCCTATCTGCTGGCGGGCTCGCCAACCTTTGATCTTTCTATTAGCCAGTTTCGTGAGAACTTTAACCGCCAGAATCCCGATCTGCCGCTCAATGAATTTCGCGCCATTGAGAATAGCCGCGATAAGGCGAATCTGACCCGCGCCGCCAGTAAGATTAACGAAAATCTGTATGCCTCCACGGCGCTGGAGCGCGGTACGCTCAAAGTGAAAAGTATGCAGATTACCTGGCTGCCCA [...]
+NODE	1105	5476	277437	275966	0	0
+GGCTACCAATTGCTTCCGTGGCTGTTAGGGCTGTATGCGCTGAGCGTTATCGCCACATGGGGAGCGGGCCTTCTGAATAATGCCTCACTGGTGGAGATCCTGATTCCTTTCTGCGTAATGGCGATTGCCAATGGCGCCATCTACCCTATCGTCGTCGCGCAAGCGTTACGCCCTTTCCCTCAAGCCACGGGGCGCGCTGCGGCGCTACAAAATACGCTGCAACTGGGGTTATGTTTCCTGGCAAGCCTGGTGGTTTCATGGCTCATCAGCACGCCGCTGCTGACCACCACCAGCGTAATGTTCTCTACCGTTGTTCTGGCGGCGTTAGGCTACAAAATGCAGTCTCATGCAGATTGCGCTGAGACCGGGTTTCCTCATGCCAATGTCGCCCACGACAAGTCTCACTAAAAGCTTGTTAACCGCTGGTAATTAGCACGCTAACAATTTTCGGTTGAATCATCAAAAATTGCGGCCTATACTGATTCACGGTTG [...]
+TCATGCTTTAATAGAGTCACTGACTTCTGCACTGTTGTTTCTGGGCGCTGGGGTAATAGTTGCTACTGTGGGTAGCGTGTTTCTTCAGGTGGGGGTGGTTATTGCCAGCAAGGCCATTGGTTTTAAAAGCGAGCATATAAATCCGGTAAGTAATTTTAAGCAGATATTCTCTTTACATAGCGTAGTAGAATTATGTAAATCCAGCCTAAAAGTTATCATGTTATCTCTTATCTTTGCCTTTTTCTTTTATTATTATGCCAGTACTTTTCGGGCGCTACCGTACTGTGGGTTAGCCTGTGGCGTGCTTGTGGTTTCTTCTTTAATAAAATGGTTATGGGTAGGGGTGATGGCTTTTTATATCGTCGTTGGCATACTGGACTATTCTTTTCAATATTATAAGATTAGAAAAGATCTAAAAATGAGTAAAGATGACGTAAAACAGGAGCATAAAGATCTGGAGGGCGACCCTCAAATGAAGACACGGCGTCGGGA [...]
+NODE	1106	75	3508	3508	0	0
+TATCCAGGCTGAAATTACCCAGCGTCTGAACGAAATCGACCGTGTATCCGGCCAGACTCAGTTCAACGGCGTGAA
+ACGCTGGGTAATTTCAGCCTGGATAGAGTCGAGGTCAGACTGGGAGTTAGTGCTGTTAGCAGACTGAACCGCCAG
+NODE	1107	8	1921	1921	0	0
+ACGTATCA
+TTCCGCGC
+NODE	1108	5	1095	1095	0	0
+CTTAA
+ACATC
+NODE	1109	12	2436	2436	0	0
+AGCGATTCAGCG
+TTTAGCCCCGTT
+NODE	1110	1	50	50	0	0
+G
+A
+NODE	1111	19	4214	3168	0	0
+CCGACTCGACTTTGTATAC
+TTCTGTAAGCCTGCGAAGG
+NODE	1112	80	16219	10954	0	0
+GCTTTGACGTCGCTTCGCTCCGTCAATCGTAACCCGCTGAATCGCTTTAAGTGATACGTTCGCTGCCGCAGCTTCGGTGC
+ACGATTGACGGAGCGAAGCGACGTCAAAGCGTATACAAAGTCGAGTCGGTTTAAGGATACGTTCGTTGGGTAGGGGAGCG
+NODE	1113	4348	244573	242195	0	0
+ATTTGCAAAAATGGGGGTTCTGGCTCAAATACGCAGCAGGCTCAACATAAAGATTAGTAAAGTTGCAGCGTCCACCACCGGACATGAGGATTTTACGTCCTGGCTTCTTGCCATTATCGATGAGCAGCACGCGGCTACCCGCCTGTCCTGCCTGCGCGGCGCAAAACATGCCCGCTGCGCCAGCGCCTATAATAACGGCATCAAACCTTTCCACGTCGCCTTCCTCTCTCAAATTCGGGCGGGAATTGTAAAGTTTCCTCAGTGGTCGCACCAGCGCGAAAAGCGCCTGAAAATGGTATTTATCTGAAATATATAAGATAATTCTTTAGTGATATCAAACAAAGCACGAAGTACATCAAAAAAAGTCTATATTTCACTTTGCCCGCGCCGCCAAAGTCACTGATAATGCGCCGCGTTCATGTCCTCAAAATGGCGTAACGTCCTATGCTACATTTGTTTGCTGGCCTGGATTTACATACCGGGCTTTTATTA [...]
+AAAGGACGATGAGCACCAGATTGGCAATCTTAACGTTGTGCATCAGCCAGGCGCAGAGGAAAATCATGACGACGGTGCCGAGCAGTACCAGCAGCAAATTGCGAAAACGTAGCGGTTTATGATCCGGTTCAGAACCGATATTTTTCACCATGCCACGGCAGGCGAAGTACACCAGAAGCGCAACAATTAAACCAGCGCCGCACAGATTATAGGTCACCGCATAGCCAAATTTATCGGCAATCACCGGCGCCAGCGATAGCGATAACAAAGAACCGATGTTAATCGACATATAAAACAGGGTGAAAGCGCCATCCAGCCGGGGATCTTTAGGCTGATAGCATTTAGAGAGCAGGCTGGCGGGATTGGCTTTAAATAACCCGTTGCCCACGGCAATCGTACCCAGTGCGATAAAAATCAGATCGGGATTTAATAGCGACATGCCGGTCATAAAATAGCCAATCGCCAGCACAATCGCGCCCAGGACCAGGGTGC [...]
+NODE	1114	3	332	332	0	0
+CAT
+TAT
+NODE	1115	22	1535	1535	0	0
+TGACTCGCCGTCAATGCCGTCA
+AAGTACTGAGCTGGCGCTGGAA
+NODE	1116	8515	483395	478035	0	0
+GTCAATAAAACTTTACAGAAATGTTGATGAGAGTTTGGTGTCTTTATGTGTCTGACAGGCATCTTTCCATTCAAACTAACGTTTCGCTACCGTGAAAGTGCTACAAATATAAAGATTTAGTTTCAAAAGGAAAAAATATGTAAACAAATGTTATTTTCACGGAACTTTGTGAACAACGTCAAACTTCCCCTGAGTTCTCGCTTTGATTTGATCGTTTTTCTTTTATCACTATGATTTTATTGTAATTATTGGCTTGTAGAACCGTTGTGCCTGAAAAAGCAGCAGGCGAGCTATTTCATAAAAATAGCCATTTAGAAGTCTTAATGTCCGAAATTGTGGTGAAAAATTGTGCTATTAGAGCAGAAAAATCTAATCCGCAATAAAATTAAGGATTAATTTTTATGTGTAAATATTTTCGTGAAATATACAGTAACAAGATGTGGTAATTCAGAGGGTTGTAATTAAATTTATTTACTTATTGATAATAAAACT [...]
+GCGGATAGGATGCGCCATCGGGCTGGCGTCTTCCGCGAATTGTAAACCGCGCATGGTACGCACGTTACTGATGCGGTTCACCGCGCGTGACCCCAAATCAGAGCTAAACTCCTGATCGCGGAACACGGTTAGCCCCTCTTTCAGGCTCAACTGGAACCAGTCGCGGCAGGTGACGCGGTTGCCGGTCCAGTTGTGGAAATACTCATGACCTATCACGCGCTCAATATCGAGATAATCTTTATCCGTCGCGGTATCGGTTCGCGCCAGCACGTATTTGGAGTTAAAGATATTGAGACCTTTATTCTCCATCGCGCCCATATTAAAGAAATCCACCGCGACAATCATATAGATGTCGAGGTCATATTCGAGCCCAAAACGCGTTTCATCCCATTTCATGGAATTTTTCAGCGAAGTCATTGCCCACGGCGCGCGATCCAGATTGCCGCGGTCAACGTACAGTTCTAATGCGACTTCACGCCCGGAGCGGGTGGT [...]
+NODE	1117	51	2524	2524	0	0
+ACGCGTTTCGCCTTGAATTGCCGGTACAGGGTCTCCATATGGTTATTGTGG
+TTTTTCAAATTGCGTTTACGTAACCTGGCGCTGAGATGATGTTGTGTTGCG
+NODE	1118	23	1239	1239	0	0
+ATGATGTCGTCACTACCGGAAGT
+CCGGCAATTCAAGGCGAAACGCG
+NODE	1119	51	2771	2771	0	0
+ACCGTCGCGGAAATCGCGCAACTGCTTTTGCGCAACGGCGCAGCGACTGTC
+TACTTCCGGTAGTGACGACATCATCCACAATAACCATATGGAGACCCTGTA
+NODE	1120	4908	233661	229010	0	0
+GAGTTTGTTCGTCTGTTCCGTCGCAAAAATAAACTGCAACGTGAAATTCAGGACATTGAGAAGAAGATCCGTGACAACCAGAAGCGTGTGCTGCTGCTGGACAACCTGAGCGACTACATCAAGCCAGGTATGAGCGTTGAGGCGATTCAGGGTATCATCGCCAGCATGAAAAGCGACTATGAAGATCGCGTTGATGACTACATCATTAAAAATGCCGAAATCTCCAAAGAGCGTCGCGACATTTCCAAAAAGCTGAAAGCGATGGGCGAAATGAAACACGCCGATGTAAAAGCCGAATAATGCGCTACGGCAGTGGGAGCGTATATCAGGCTCTCACTGCAGTTTGACCCCGCCTGTGACCATCTTGAGTAAATGTTGTTTTGGCCAGTGTCGGGTAAGTTTTTTCTCTGCCAGCTTACCTTTCAGGCGCGCAATGTCATGACGTTTCCGGTCCAGCATCAGACCCACCACGCTACCGCTATGTGCCACGTT [...]
+GTATATCCCGCGGGCGATGAGGTGCTGACTATCTGGATGGCAACCGGCCGCCGGGTCGCCCCGGCTGCGCTACCGGCCAGCGTCGGCGTGGTCGTCAATAACGTGCAAACGGTGCTGAATATTGCCCGGGCGGTCGAGCAGCAGTTTCCGGTCACTCGTCGCACGTTGACCGTGAACGGCGCGGTCGCCAGACCGTTGACCGTTACCGTTCCTATCGGCATGTCACTGCATGAAGTGCTGGCGCTGGCGGGCGGCGCAACGGTCGACGACCCTGGTTTTATTAACGGCGGCCCGATGATGGGTGGCCTGATTACCTCTCTTGATAACCCGGTGACGAAAACTACCGGCGGCCTGCTGGTGCTCCCCAAAAGCCATCTGCTTATCCAGCGGAGAATGCAGGACGAGCGCACGGTGCTTTCCGTCGCGCGCACCGTCTGCGAACAGTGCCGACTGTGTACCGATCTCTGCCCACGGCATCTGATCGGCCACGAA [...]
+NODE	1121	2580	116024	115123	0	0
+GCCTCAACCTGGTACAGTCGATCATCACCCGCACCGCCGACTTCATTAACAACGTGATGGTTCCGGACGCGCTGGCTATCGGCCAGTTCAATAAAGCATGGAGTCAAATTGGCACCGGTCTGTCGGATAAATGCGTGCTGAGTTACGGCGCATTTCCGGACATTGCCAACGACTTCAGCCAGCAAAGCCTGTTAATGCCGGGCGGCGCGGTGGTCAATGGCGATTTTAAAAATGTCATGCCGGTAGATTTGGCCGATCCGCAGCAGATACAGGAGTTTGTGGATCACGCCTGGTACCGCTATCCGGACGATCGGCTGGGTCGTCATCCTTTTGACGGCATTACCGATCCCTGGTACAACCCGGGTGATGTCAAAGGCAGCGATACGCATATCCAGCAGCTCAACGAGCAGGAACGTTACTCCTGGATTAAAGCGCCGCGCTGGCGGGGTCATGCCATGGAAGTCGGCCCGCTTGCCCGAACGCTTATCGCGT [...]
+ATCACCGGGTTATCGCTGACTTCCGGCGTACGCCGCGGATCGCTACTTAACAGGATGACGCCATCTCCAACCCGTTTGATCCAGTCGTCTACCGTGGAAGCCTCTACCGGTTGCCATCCACGGGTTAACAGGCGTTGCCATAGCGCAGAGAACGGGGTGTCATTCGCCACTTCTTTTGCCCTCCAGACGTGTCTGATACTGACGTATGCGCACTCCCTCATAATTTTCCATCGACAGGCATTTATAGTTCAGGCAGCGTGCGACCTCGTTTGCCTGCGGTACGATCCCCCAGGCGGCCAGTTGCGCCAGGGCGGCCTGTTCCGCCGCCGGTAGCTGGTCGCGAGCTATTTCGCTCAGGCTACCGCCATAGTCGTCCAGTTGCGCCGGTTGCAGACCGACCAGCGCTATGTGACAGGGCAGATGCCCGCGGATGTCGGCCAGCGCCAGAACTTCGGAAAAACTGTTTTGATGCAGACTCATTTTTTTGGCGCT [...]
+NODE	1122	3092	185443	183759	0	0
+TCTGGAGGCGAGAAAACGCGTTCGTCGGTGAGCAGGCAGGTTTCTGGCTTCAATATGGCAAGACGAAGAGAGACGAATTGAAACCAACTGTCCCTCCGTAAGTATCCCTCTGGCAAAGTGAGTCGCCATTTTTCGCTCCGTGATTAATGGGCCGTGATAATGACGAGAGTAACATTAACGTAAATTATGGACAGGTTTTACGCGCTAAAAATTCAATTTCAGAAGGTTCTTTAATCAGACGGTGACATTTCTGGTAAGAGGAAGGTTAATTTATCAACGCAGGTGGTCAGATAAGGCGACGGCAGAGCGTGTTGATAGCCTGTCGTAGCCACACAATCTTGGGATTATGACTATTACGTTTGTGCCATAATAGGGTAAACGGCACCATCAGCTTTTCCCGCTGTTGCGCATCAAAAGGCAGGGGGCGCGCCACTAACGGTAGCTGGTGGAGCTGATTGTAGTGCTGGCAATAGCGCGGCGCGGTTGCTATCA [...]
+ATGGTCTGGCATTCTGAGAAACTGGAAGGATAAAGGGATCACCTCTGCTGAACTTTCGGTTCTACCCAGGAGCCACAATCATCCCGACGACAATACAGATCTATTAATAGCTATTGCCGGAGAAGTTCATTGGACGCTCGAAGAGGTAGAGCAGTACTTCGTTGATTACGATCTGGTAGGCAGTGACGACGGCCATCCTTACTATTACCTAGCGACGTTCAGTGATGAGACACCTGACGAGCTGAAGCGAATTGCAGGGCTGAACAGCTCAAATCAACTTCACATGGGTCTAAACATAGTTCCGGATGAAGATCAGGGAGAATTCGAGTAGAGTAATATCTTCATATAATCAATACTTTATGTGTTTTGTGATTGGTAAGTTTTACTCCACATTTACTCCAAAAAACATATAATTTATTGATTTAAAATAACTAATTACTTTCTGTATTGGTAAGTAACGTTGTATTGCCCGGTGGCGCAATGCTTACCGGG [...]
+NODE	1123	730	31754	31333	0	0
+TGGAGTAGGAGAGCATTGCCACACGCGGTTCGATACCGAAGGCAATGGCGGAATCCGCAGACTGAATCGCGATTTCTGCCAGCTGCTCTGCAGTCGGGTCTGGGTTGATTGCGCAGTCGCCGTAAACGTAAACCTGTTCCGGCAGTAGCATAAAGAACACAGAAGAGACCAGGGAGCTACCCGGCGCCGTTTTAATAAGCTGCAGCGGCGGACGGATGGTGTTGGCGGTGGTATGAACCGCGCCGGAAACCAAGCCGTCGACTTCGTCTTGCTCCAGCATCAGCGTGCCGAGCACCACGTTGTCTTCCAGCTGTTCGCGGGCAACCGGTTCGGTCATGCCTTTGCTCTTACGCAGCTCAACCAGGCGAGCGACATAGCTTTCACGCACCACTTCCGGATCGACGATTTCAATACCTGCGCCCAGCTCAACGCCCTGAGATGCCGCGACGCGGTTGATTTCATCCGGGTTGCCCAGCAGTACGCAAGTGGCGA [...]
+GAACTACGTTAACGCTGAGTGGATCGAGTCGCTGACCGCCACTTCCGAGCGTAGCCGTCGTCTCTCTCCGCCGGCGTTCCGCTACCAACTGACCGAGCTGGCGCGTAAAGCCGGTAAACGCGTAGTGCTGCCGGAAGGCGACGAACCGCGTACCGTCAAAGCGGCGGCAATCTGCGCTGAACGCGGCATCGCCACTTGCGTACTGCTGGGCAACCCGGATGAAATCAACCGCGTCGCGGCATCTCAGGGCGTTGAGCTGGGCGCAGGTATTGAAATCGTCGATCCGGAAGTGGTGCGTGAAAGCTATGTCGCTCGCCTGGTTGAGCTGCGTAAGAGCAAAGGCATGACCGAACCGGTTGCCCGCGAACAGCTGGAAGACAACGTGGTGCTCGGCACGCTGATGCTGGAGCAAGACGAAGTCGACGGCTTGGTTTCCGGCGCGGTTCATACCACCGCCAACACCATCCGTCCGCCGCTGCAGCTTATTAAAAC [...]
+NODE	1124	23	8768	7428	0	0
+GCTGTGAGCTCGATGAGTAGGGC
+ACCCTGTATCGCGCGCCTTTCCA
+NODE	1125	15	5761	4997	0	0
+CATGCGCTTTTGTGT
+TATCCTGTCTGAATA
+NODE	1126	81	5113	5113	0	0
+CCAGAATAACCTGAACAAATCCCAGTCCGCTCTGGGCACCGCTATCGAGCGTCTGTCTTCCGGTCTGCGTATCAACAGCGC
+AGCGGACTGGGATTTGTTCAGGTTATTCTGGGTCAACAGCGACAGGCTGTTTGTATTAATGACTTGTGCCATGATCTTTTC
+NODE	1127	96	6987	6929	0	0
+GTTGTTCGTGAGTCTCTCAAATTTTCGCGACACGAGAATGTTTTACGAAACATCTTCGGGTTGTGAGGTTAAGCGACTAAGCGTACACGGTGGATG
+GTAAAACATTCTCGTGTCGCGAAAATTTGAGAGACTCACGAACAACTTCGTTGTTCTGTGTTTCAATTTTCAGCTTGATCCAGATTTTTAAAGAGC
+NODE	1128	157	11140	11140	0	0
+ATCCTATCTTTATCGCGCCTATCATGCGTTTCCGCCGTTAACCAACAGCGCGGGAGAACCTACGGGTGCAATGTATGGTGTCCTCAACATGTTGCGCAGCCTGATCATGCAGTATCAGCCGACGCATGCTGCGGTGGTGTTTGACGCCAAAGGAAAA
+TGATCAGGCTGCGCAACATGTTGAGGACACCATACATTGCACCCGTAGGTTCTCCCGCGCTGTTGGTTAACGGCGGAAACGCATGATAGGCGCGATAAAGATAGGATGAGCCATCTACGAGAATAAGTGGGTTTTCTGGGATCTGAACCATAATGTC
+NODE	1129	51	2693	2693	0	0
+TTTTTCCTTTGGCGTCAAACACCACCGCAGCATGCGTCGGCTGATACTGCA
+ACCTTCCGTGATGAGCTCTTTGAACACTACAAATCGCATCGTCCTCCGATG
+NODE	1130	3160	133977	131755	0	0
+AAAACGCTGAACGAACTGGAACAACTCACCGGAACCCGTCTGTTTGAACGCGGGCGACTGGGCGCGCAATTAACGGTTCCTGGCGAACAATTTTTGACTCATGCGGTAAAAGTATTAGATGCATTGAATACCGCCGGGCAGGCGCTGAATCGCAAAGAGGACGCCAGCGCCGATGTGGTGCGTGTTGGCGCGCTCCCCACCGCTGCGCTGGGTATACTCCCGGCGGCTATTGGGCGGTTCCATCAACAGCAAAAATCGACCTCGTTACAGGTCGCGACCATGAACAATACGATGTTGCTTGCAGGTCTGAAATCAGGCGAGATCGATCTGGGTATTGGCCGTATGTCGGACCCGGAATTAATGGGCGGTTTAAATTACGAACTGCTGTTTTTAGAATCGCTTAAATTAGTGGTACGCCCCGGCCATCCCCTGTTACAGGAGACGATCACGCTCAGTCGGGTTATGGAATGGCCGGTAGTCGTCTCGCCAAAA [...]
+TCCGGAAAAATTTACGCTGGCGGGCGAAATGGGGGCCACGGACTTTATTAATCCGAATGATTACGACAAACCGATCCAGGACGTTATTGTTGAGCTTACTGATGGCGGCGTAGATTTCAGTTTTGAATGTATCGGCAACGTTAACGTGATGCGAGCAGCGCTGGAATGTTGTCATAAAGGCTGGGGCGAAAGCATTATTATTGGCGTAGCGGGGGCAGGGCAGGAAATCAAAACCCGTCCCTTCCAGCTAGTGACCGGTCGCGTCTGGCGTGGCTCCGCTTTTGGCGGCGTGAAAGGGCGCACGCAGCTGCCAGGGATGGTAGAAGATGCGATGAACGGTAAAATCCGTTTAGATCCTTTTATTACTCACCGCCTGCCGCTGGAGCAGATTAACGATGCCTTTGAACTGATGCATCAGGGTAAATCCATCCGTACTGTTATCCACTTTGGCGATAACTGATTCATCCGCCAGCGGATTTTCCGCTGGCGCTT [...]
+NODE	1131	298	14959	14959	0	0
+CGCACGCTAAACTGAAAGAACGGATGGACAGAGGCGAAGGTTTGCCGCAGTACATCAAAGATCATCCTATCTATTATGCGGGGCCGGCAAAAACGCCGGAAGGGTACGCCTCCGGGTCGCTTGGGCCGACTACCGCAGGGCGGATGGACTCTTATGTTGATCAGCTCCAGTCGCAGGGCGGCAGTATGATCATGCTGGCGAAAGGCAACCGCAGCCAGCAGGTGACCGATGCCTGTAAGAAACATGGCGGCTTCTACCTGGGCAGTATCGGCGGCCCGGCAGCCGTTCTGGCGCAGGG
+GCCATGTTTCTTACAGGCATCGGTCACCTGCTGGCTGCGGTTGCCTTTCGCCAGCATGATCATACTGCCGCCCTGCGACTGGAGCTGATCAACATAAGAGTCCATCCGCCCTGCGGTAGTCGGCCCAAGCGACCCGGAGGCGTACCCTTCCGGCGTTTTTGCCGGCCCCGCATAATAGATAGGATGATCTTTGATGTACTGCGGCAAACCTTCGCCTCTGTCCATCCGTTCTTTCAGTTTAGCGTGCGCGATGTCGCGGCCCACAATAATTGTGCCGTTCAGCGACAGGCGCGTTGAT
+NODE	1132	575	30385	30219	0	0
+CGCCAGCACTTCATCAGCCGCCTGGATAATCGCGCTGGCTTTTTCCGCCGCCAACAACCCTAAGTCCTGGTTGACCTTCGCAGCGGCGCGCTTGGTCAACGCCAGAGCGTGAATGAGCGAAACGGGCATTTTCTCCGTGGAAATCCGAAAATGCTCCAGCGAACGTTGAGTCTGCGCCCCCCACAGTTTATCTGCCGGGACTTCAATCGCGCCCATTGAATCTTTCTCGCGGCGTACCGTTACCATTACCTGCTCCTTACTCAAGTTGATGAGATCATGTGTCGACATTGCTCACATGTTTGCGGTCTTATGAGTATTAACGATAACAACACAACGGTGTAGACCGGATAAGGCGCTTGCGCCGTTCTCCGGCAAAATAGCGAATCATGTTACCGCCCCGCAGGGCGGCGACATTACTTAACGCAGCGCGCGCACTGCGATGACTGAATCTGCTGGAAGAAATCGTTGCCTTTATCATCCACCAGAATGAAG [...]
+TATCTGGAAAATTGAAGTGGAGGATTTTCCGGCCTTCATTCTGGTGGATGATAAAGGCAACGATTTCTTCCAGCAGATTCAGTCATCGCAGTGCGCGCGCTGCGTTAAGTAATGTCGCCGCCCTGCGGGGCGGTAACATGATTCGCTATTTTGCCGGAGAACGGCGCAAGCGCCTTATCCGGTCTACACCGTTGTGTTGTTATCGTTAATACTCATAAGACCGCAAACATGTGAGCAATGTCGACACATGATCTCATCAACTTGAGTAAGGAGCAGGTAATGGTAACGGTACGCCGCGAGAAAGATTCAATGGGCGCGATTGAAGTCCCGGCAGATAAACTGTGGGGGGCGCAGACTCAACGTTCGCTGGAGCATTTTCGGATTTCCACGGAGAAAATGCCCGTTTCGCTCATTCACGCTCTGGCGTTGACCAAGCGCGCCGCTGCGAAGGTCAACCAGGACTTAGGGTTGTTGGCGGCGGAAAAAGCCAGC [...]
+NODE	1133	1096	52612	50484	0	0
+GTTATCTGGCCGAGCGCCTGAAATAAACGCTACGCGGGCGGGATGCTGTACCGCCCGCGCTTTAGGGCTTCCTCGCCACCGGCACATCCAGCTGTTTAAGCGCCTCCACAAAGCGCGAGGGATTATCTTTATTAAAAAGCAGCCAGACCCGCGCACGCGCGCGCGTCAACGCCACATATAACAACCGCCGCTCTTCAGCGTCCGGAAAATCCTCAACCTGAGGAAGAAGCGCACTTTCCATAATGGACTCTCGCGCCGGGGCGGGGAAACCGTCGTTACCCTCCTGCAATCCGACAAGAATCACGTAATCGGCCTGTTGGCCTTTGCTGGCATGGATAGTCATGAAATCTATCTGTAACTTTGGCCAGCGAGTCGCCGCTTTTTGTAGACTCGCGGGTTTCAGATGGTGATAGCGCGCCAGCACCAGGATACGTTCATCCTCCTTCGCATAGCCGGATAATTTATCCAGTAACGCGTCCAACTGGCTTTCAT [...]
+TCGTTGGGTCAGTTTGATGCGTATGCACGGCGGCGCGCAGGCAGAAATGATCGCTGGCGCGCCAGAGGAGTGCCGCGAGCTGTTTGGCAAACGCATTAAGCTGATGGCGCCGCTGCTAAAGGCCTGGAAAAGCGCGTTGAAAGCGGAAAATGCCGTTGATTTCTCCGGGCTGATCCATCAGGCAATGGTGATCCTCGAAAAAGGGCGTTTTATCAGCCCGTGGAAGCATATTCTGGTCGATGAATTTCAGGATATTTCCCCGCAACGGGCGGCGCTGTTAGAGGCGCTACGCAAGCAGAATAGCCAGACTACGCTGTTTGCCGTGGGCGATGACTGGCAGGCGATTTACCGTTTTAGCGGGGCGCAGCTCTCCTTAACGACGGCGTTTCATCAGACGTTCGGCGAGGGCGAGCATTGCCACCTGGACACCACGTACCGTTTTAACAGTCGGATTGGCGATATTGCCAATCGCTTTGTACAGCAGAATCCGCA [...]
+NODE	1134	8257	432189	425161	0	0
+ACTCTGTGGCCTGCAATTTGTGAATTACTGAAATTTATTGCTTCAACGTTCCATCTTGGTCCTTATTCCATTTAATTGATTCGGTTTATATAAAGGATTTTATTATGAAAGATTCTGTAAATATTTTATTCGTATGCGGTTATGGCGTAGGCAGTAGCGTAATGTTACAGACTGTTGTTAAAAAAGCGTTAGCAAAATATGACTTCTCTTTTGATATGGAGCATACGGCAGCGGGAGAGGTCGGTGGATTTACCGACTGGGCAGATATTTATGCGATTTCGAAAAAATTGCTTGATGTTGTTAGCCTCGATCCTAAACACGGACAATATCTCATTCCCATTGAAAATATCATGGATGGCGAATCAATAGGCAAACAGATTTACGATGTGGTAGAGAAAAATTTTCCGCACCTGCTCAACAAATGAGGGTGAGTCATGAAAGCGATTATTCTGCTGTTTGACAGTCTGAATAAAAACTATTTGCCGCCCTATG [...]
+GATATGATCGCCCGCAGTATGGAGCGCTTCGGCAAAAAATCCGCCAAAGAGCCCCCGCTAACGCATTACGGCGTGTCAAAACTGAATTTTGATTTTACGCTCGATACGACTCGCGCGCAGGAAGAGCTGGGCTACCAGCCCATCGTCACGCTGGACGAAGGCATTGAACGCACCGCCGCCTGGCTACGCGATCACGGAAATTTACCGCGTTAATCCTGGCCGTACTTCTCCAGTAATGCTTCGGCAATCGCCTGCGTTTCGGCATCTGCGATACCGTTCCATTGCGCCGGACGGAAGTGCATCTGGAACGCCATAATCACCCGCTGCTGCTCGCGTGCCGTCATATCGGCTTTGACTTCATAACCATAGCGCGAGAGTAACGCAAGCACCGTTGCGGTATCGACTGGCGTATACGGCGCGCGTCCAGCCAGATAAAACGCCACACGCTGGGCGTCAGGCCAGGCGCCAATCCCCTGCGCCGCCAGCTCGCGC [...]
+NODE	1135	51	3073	3073	0	0
+GCCACGTTTTCCAGCGCCGTAAAATCCGGCAGGAGATGATGAAACTGATAG
+CGATGCCATTATTGATTGGCAAAAAGAAACCGGCGGAGATTGACGCTCGGG
+NODE	1136	1722	85516	84652	0	0
+ATAAACCCCAGTTTCTGGTTACGTAATTCCGCTTTTGCCGCAGAAGAGAGTTTGCTCATCGGCTGGCCGCTAAAAATCACATCGCCGGAGGTAGGCGTATCCAGCCCGCCTAACAGATGCAGCAACGTACTTTTACCCGAACCGGAACTGCCGACGATCGCCATCATTTCGCCTTCGCCGATACTGAAGCTGACATCGTGCAACACGTCGGTTTGTACGGTGCCTTCCTGATAGCGTTTGCACAGGTTGTCGCATTGCAACAGGATCTTATTCATAACGTAAAGCCTCAGCGGGTTGAGTGGCGGCAGCGCGCCAGGAAGGATAAAGCGTAGAAAGCAGCGCGATGGCCATTGCCACCAGCGCGATAACGATCACCTGTAACGGCTCTATCGCCACGGGCAACGCAGCGCCATCCAGAAACGCGCCGATGATCGGCATCAGGTTATTCAGTTGGCTGGCAAGCAATGCGCCCAGCGCGGCGCCCAACAGCGC [...]
+GTTCTTTATTATCCGCGATCGTTGTTTATTAGCAAATTGAATCCGCCGGATAACACGTCGAACAGGTAAAGTATGAACATGTAAGTGACTTGATTTGTCGGCCTTATTCAGAATAGCGCTGACGAACTCTTACGGTTCAGACATTTACGCATTCCGCTTTCGCTTATATACTCGGGACTTTGCTAACAGCAACCAGACGGATTACATGTATCAACCTGTCGCTCTATTCATCGGCCTGCGTTACATGCGCGGGCGTGCAGCAGATCGCTTCGGTCGCTTCGTTTCCTGGCTTTCCACTATCGGCATTACCCTGGGGGTGATGGCGCTGGTCACGGTATTGTCGGTGATGAACGGTTTTGAGCGCGAACTGCAAAATAACATTCTTGGTTTGATGCCTCAGGCCATCCTCTCTGCTAAACATGGTTCTCTTAACCCGAATCAGATGCCGGAAAAAGCGGTGAATCTGCAAGGCGTTAACCGTATTGCGCCGCT [...]
+NODE	1137	1512	82759	82299	0	0
+GGGTCTGACTGGCGCATATTCCCCGCATTCGCTGCGTTATGCGTGGGCACAGGATGCCATTCATCACTATCTGGCGCAGGGGTTCAGCAGGAAAGAGGCACTGGCAATGGTGGCGATGGACTTGGGGCATGGCGACGGACGTGGGCGCTGGGTTAAACAGGTGTATGGGCGTGAGGAATAGCATTTTCATGAATGATACGAGATAAAATGTTACTTCGTGACAACATCCTTCACTGCTTCTCTTTGTGCCGAGCATGACGCACAAGGTAAAGGTACTTTTAAGGAAGGCATAGGTGTGTTTATCCCTCAGCGCCCCTCGATCCTCAATTACAGCTGTATCAGACGCGTCTCGGCTAATTATCCAGAATCAATGAAAATTTATACAGTATGCCCCTTGAAATAGAGTTAATCGTTCCCACTTAATGACCACAATGTGGCCGTGGACTAATTCGACCGCACTAAAGAGAATGGATCGTCTTACGCGTAGAAATG [...]
+ACCGAAGCAGCATCTACGTTACCCGCACCAGCAAAACAGGCCAACACACAGCTAGCCGTCTTGCCACTACGTTTTGACACAGGAGTTTTCCATATATGGAGACCGTTCTCCGTAGTTGTATGCTCAGCATCTTCTGCGATACCGAATGCTTGTTTGGCAGCAGCCAACTCCACATCCAAAGCTGTCAGTACTAGAACATCGGGGGGCAAAGCTTGGACCCTAGCGAGTTCTTCCTCGTAGAAAATTTTGACGATGCGCTTACTTATATCGGATATGCTCATAACGGGATCTTGAAGGGATAGCGCGGCCAGAGTCTTGATAACCTTATTACCGCTATTAGGCATGTATGTTAGAGGAGTGGTTTGGAAACTCTTTAAGATCCCAATTGCACCTTTGCCGTCTTCGCTATTTGCACCCAGTTGCAAATCGAGTGGCAGTACAGGTAACTGCCTTTTGGACATCTTACGCGCACGGTCCAGAACGCCTTTCCCG [...]
+NODE	1138	10481	533924	527254	0	0
+AGCGAGGGCGAGCCGTAGCTCATCCCCAGCGCGACGGGCGTGTCTGGCAACCGCGCGGCCAGCGCCTGTTGCTGTTCGCGGCTATATACCATGAGCGGCGAACCGCCATCCATCCAGATAGATTGATAGAGTTTCGCGACGCGCGGCGAACGCAGCGGTAAAATAACGCCACGCAGCAGCGGCCACCACAGCAGACGAGGAGTATCCACCACGCGTCTGTCGCTTAAAAATTGTTTCAGGTAGCGCTTTACCGCTTCGGGAGTTGGGGCATCTGGCGTGCCAAGGTTAGCCAGCAGGATACCGGTTTTCGTCTGACGCATTGCCGCCTCTTATCTATTCAAATTGTTGATAATTGTAGCGGAAAAGCGATAAAGAAGAACTAATTGCTGCGAGAGGTAAGACGAGAATTTGCCGAATGGCGCTAACGATACCAGCAGGCCGGATAAGGCGTTCAGGCCGCCATCCGGCACCGATTGCCTGATGGCGCTACGC [...]
+GACGCGCGCTGGCTCGTCGTCAGAACCTGGTAAAAGAGGGAGCGGAAGGCGCGGAGCCACAGGAAGAACCCACCATCGCGCTGGAGCAGATTAACCAGCAAACATTACGTATCACGATGCTGCTAATGCTTGCCCTGTTCGGCGTTATGTTCTGGGCGATTTGGTCCGATTTGATCACCGTATTCAGCTATCTTGATAGCATCACGCTGTGGCACTACAACGGCTCCGAAGCTGGCGCTGCGGTGGTGAAAAGCGTGACGATGGGCAGCTTGCTATTCGCCATTATTGCCGCGATGGTGGCCTGGGCGCTCATCCGCAACTTACCCGGCCTGCTGGAAGTGCTGGTGCTTTCACGCCTGAATATGCGCCAGGGGGCTTCGTATGCGATCACCACGATCCTTAACTACGTCATTATCGCTGTTGGCGCGATGACAGTATTCGGATCGCTCGGCGTCTCGTGGGATAAACTCCAGTGGCTGGCGGCGGCGTTGT [...]
+NODE	1139	94	5415	5415	0	0
+ATTCAGAACGCGTCGAGGTATTCGACCGGTTCGAAAATAATTTGTTGGGGTATCGCCAAGCGGTAAGGCACCGGATTCTGATTCCGGCATTCCG
+CAAATTATTTTCGAACCGGTCGAATACCTCGACGCGTTCTGAATATGGTGGCTACGACGGGATTCGAACCTGTGACCCCATCATTATGAGTGAT
+NODE	1140	26	2852	2834	0	0
+TGCCTTACCGCTTGGCGATACCCCAA
+AGGTTCGAATCCTCGTACCCCAGCCA
+NODE	1141	7560	417503	414601	0	0
+TATTTATAAATAAAAGTTGTGGCCTGGACTGTCAACGTTGGGATTATGCGGATTTTTTATGCTGAGTTTAGGCTCAGTAACAGCGCTTATAACCCCGATACCCACTTGCCGCCTTTCTGCACCTCGAATTATTTAGGGTATATACTTTTTATCCTCATTCGACAGTGCCTGGGGCAACGGCACTAAAACAATCACACTTTTCTGTGACTGGCGTTACAATCGATCCCAGTCACAATTCTCAAATCAGAAGAGTATTGCTAATGAAAAACATCAATCCAACGCAGACTTCTGCCTGGCAGGCGCTCCAGAAACACTACGATGAAATGAAAGACGTTACGATCGCTGAGCTTTTTGCGAACGATAGCGACCGTTTTGCTAAATTTTCCGCGACGTTTGACGATCTGATGCTGGTGGATTTCTCCAAAAACCGCATCACCGAAGAGACGCTGGCAAAATTACAGGATCTGGCGAAAGAGACCGATCTGGCCGGCG [...]
+GCCTCCCTTCCCGGTACTGCTGTGGCTGTGGAACTCGGTGAAAATCGCCGGTATTACCGCCATCGGCATCGTGGCGCTCTCCACCACCTGCGCCTACGCTTTCGCACGAATGCGTTTTCCAGGTAAAGCAACACTGCTCAAGGGGATGCTGATTTTCCAGATGTTTCCGGCGGTTTTGTCTCTGGTGGCGCTGTATGCGTTATTTGACCGCCTGGGACAATACATTCCATTTATCGGTCTGAATACGCATGGCGGCGTGATCTTCGCCTATCTTGGCGGCATCGCGCTGCATGTCTGGACGATTAAAGGCTACTTCGAAACTATCGACAGCTCGCTGGAAGAGGCCGCCGCGCTGGATGGCGCAACCCCGTGGCAGGCGTTTCGCCTGGTGCTGCTGCCGCTTTCCGTACCGATTCTGGCGGTGGTGTTTATTCTGTCGTTCATCGCGGCGATTACCGAAGTTCCGGTCGCCTCGTTGTTACTGCGCGATGT [...]
+NODE	1142	1749	91716	91562	0	0
+GAGCGCTGTCAGACGCAGTTTGGCGATTGCTACTTTGATATCACCGAGCGGAGCTGGGTTCCGGTATTAAGCGGCTTTTTACTCAGCCGCGCGATTCGTCAGAACCGTGACGAACAATATATCTATAGCAGCGGCGGTTCATCTTACGTCTCCCGTCCCGTCTGGCGCACCACATCCGGCGATTATGCGTGGCGCAGCGGCACAGGGAAAAGCGATACCGTGACCAGCCCTGGTTATATCACACGGAAAGCGTCCACCGTCTCCCGCGGCGGCTATGGCCGTTCTTCCAGCGCCCGCGGGCACTGGGGAGGCTAACCATGCTACGACACAACGTACCGATACGCCGGGATCTGGATAAGATCGCCTGCGATCACGGTTTTGACTTTCATGTTATCGATAACGAAATTTACTGGGATGAAAGCCGGGCCTACCGTTTTACATTACGGCAAATTGAAGAACAGATCGAAAAACCGACCGCAGAGCTTCATCAGA [...]
+CTGGCGAGAAGATCGCTATCCCATCCCGCGCCTTCCCGGGAAACCGCTTCACACAGCGCGCCATCAGACAGGAATAAGTTACTGTTATTGAGCGGAGCTGGTTGATTAAAAACGGTATGTGTTTGCCAGGACATGGTGTCTCCCTCCTTCAATGGCGCTGAAGTCAAGTATGGTCATGACTGCGCCATTGACGCCGGAGCAAGATCACAAAAGTATGATTAACCGGCAATATAATGTGGGACGAAACGGGAAGTGTCTTTGGTAATTAGCGTATTGTCCTCGCGAATCCCCATCCCGGAGGCTTCATCGTCAATGATCCAACTGCCAATCAGCGTATAGCTATCGCCAAAGCGCGGCAAAGGCTGAAACGCCTGGTAAATCATCGGCTCGTCAGCGTAGTCGCCGTCGGCATGATCGATAACATTTTGCCGCTCGTCAAAAATCGTGACGTTGCCGCCTTCACGTGAATAAATCGGCTTCCGCACGCTGCTT [...]
+NODE	1143	2328	163566	163127	0	0
+CTAACAGCTTCATGCAAAGAAGCAATATTCTGTTCCTTGAAGAAAATGCCAGTCGGTTCCTCTATACCTAGTGGGCGAACGGTTTCTAAGGCCCCTCCCTTCCCAAAGGCAATAACAGGGGTACCGCAAGCTTGAGCTTCGACAGGTATTATTCCAAAGTCCTCTTCCGCTGCAAAAACAAACGCCCTGGCGCTCTGCATATACTCTTTTAAAACAGGAAAAGATTGATAACCGAGCAATTTTATATTGTCTGTAGCCTTGCTCTTTATTTTTTTCATCTCCGGTCCATCACCAATAACTACTAATTTCTTTTCCGGCATTTTACTAAAGGCTTCGACAATAAGATCAATACGTTTGTAGGGTACCATACGGGATGCTGTGAAATAATAGTCTTGCTTTTCATTTTTTACTTCAAAATTATCCACATCTACAGGCGGATATATAACTGAAGCCTCACGTCTGTATACTTTTTTAATTCTACGCGCGATATAT [...]
+TTTTCTGGATCGCCCTTGAGACTGGTATTATTGGCTTAATCATAAATATTATTTATCTAGCAAGTCAATTTTATTCTTCAACTTTACTAAATAGAATATATGGCAGTCATTATAGCAATATGCACTATAGATTATATTTTCTCTTTGGAAGTATATATTTTATAAGTGCAGCGTTAAGTTCAGCACCTTCATCATCAACTTTTTCTATATATTATTGGACAGTTTTAGCTTTGATTCCATTTTTAAAATTAACAAATAGACGGTGCACGCGATAATGAATAATAAAAAGGTTTTGATGGATATTAGTTGGTCTAATAAAGGGGGTATTGGACGTTTTACTGATGAAATTTCTAAACTACTATGTGATATATCTAAGGAGGAACTATATAGAAAATGTGCTTCTCCGCTGGCCCCATTAGGTTTAGCAGTCAATATTTTTCTGCGAAAGAAAACTGATGTGGTTTTTCTTCCTGGCTATATCCCACCACTTTT [...]
+NODE	1144	2423	138116	137169	0	0
+TGTTTTTTTGTATCTGTCGTCTGGTCCGCAACGACAGTGCGGGCAGCATCCTACTTACCCGCGCAATAAACTCGCCGTCATCTCAGGTTAACTTCTTCTCGCCAGCGTCGCCCCATCGGCAAAATAGGCTTTAATGCCCGCCAGAATCGACTCTGCGACCTGTTGCTGGAACGTCGCGGTCTTGAGCTTGCGTTCTTCTTCAATGTTACTGATAAACGCCGTCTCGACCAGAATAGACGGAATATCGGGCGCCTTTAACACCGCAAACCCCGCCTGCTCGACCTTGTTTTTATGCAGGTCATTAATTTTACCAAGCTGCTTCAACACCGCTTTACCGAATTTCAAACTATCGGCAATGGTCAGCGATTGCACCATATCGAACATCGTATGGTCGACATAACGGTCACCGCTTTTGCTCACGCCGCCAATTAAGTCCGAGGCGTTCTGCGTTTGCGCCAGATATTTCGCCGCGGTACTGGTGGCGCCTTTGGT [...]
+AGATGGCAACGACGAACGCCGCTACGACAGGCTTTTACCGCGCCGCGCAAAAAACGTACGGTTCCGGAGTTGTAATCGCCCAGCGCTTCCAACTCTTCCACCCGCGCCTGCGCTTCATTCGGGAAGAGTTCAGAAATGATGCCGCCCTCGCTATTGGTAACGCCCTGAGAAGAACAGAACCCGATCATTTTTTCCGCTTTCAATTTAACGGCGAGTTGAGTGGCAATCTCTTCTGAGGTCAGATTAAAACTTTCGCCGGTCACTGAGACGGCGACCGGCCCCATCAGAACGATCGCGCCGTTATCCAACTGGCGGTTGATCGCATCTTCATCAATGCGCCGGATACGGCCGCTATGACAGTAGTCCACGCCATCATCAACGCCCAGCGGCTGCGCAATGGTGAAATTGCCGCTGACGACATTAATGTGCGCGCCCTGCAACGGCGTATTGTTCAGACTCATCGACAGACGGGCGGTAATATCAAGCTGGAGT [...]
+NODE	1145	51	2867	2430	0	0
+TCGTACTCGCCGAAAGCGTTCGGCAGGCCGGCGTTCGGGTGCGCGGTGACG
+ACCTCGACGCCGACACCATGGCGAAACAGATTCGCGAATGGGCGGAAGCGG
+NODE	1146	1360	74337	73629	0	0
+TCCACTTGAAGTATGAAGGGTATATAAAATAACAGGCAGATTGATAGCACTAAAAACCATAGAATAAGTATAGTTTTTAGTGGCATCTTTACCTTGAAATAACGTGTTGAGGATGTGCTATTAAAAACAGATCCGCATTGCGCCGCGAATAGCGTTAAAGATACAACCCGGTGCGGATAGCGCGGGTTTACTCTACCGCTTATTCACGTATCACAAACCGTTTTTGTTTTATCTGCTGCGCGGCGCTGATCAGCGCGGCAAAAAAGAGCGCCGCGGCGCCGCAAAGCGTGGCGTTGATAATTGCCGGCGCGCCATTGCCTGACAGACTGGCGGCGAGCGGACCGAGAATTTGCCCAATACCATACGTTAGCGTCACCAGGCCTAACAAATTAATATTACCCGGCGCGCTGAGTTGTCGGGCAAGCGGCATCACCAGCGAGGTTGTGCCCATAAACGTGGCGCCAAAACCAATACTGCTCAGTATTAACAGCA [...]
+GGGGATGGGAGTTGGCCGCTTTCTGTATACGCCCATGCTGCCGGTAATGCTGGCGGAAAAGCAGCTAACGTTTAACCAACTCTCCTGGATTGCCAGCGCCAATTATGCAGGGTACCTGGCGGGAAGCTTACTGTTTTCCTTTGGCCTTTTTCATCTCCCCTCTCGTCTACGCCCCATGCTGCTGGCTTCGGCGGTCGCCACCGGTATTCTTATTCTGTCTATGGCGATATTTACTCAGCCCGCGGTCGTCATGTTGGTGCGCTTCCTGGCAGGCGTCGCGAGCGCGGGAATGATGATTTTTGGATCAATGATTGTGTTGCATCATACCCGCCATCCGTTTGTGATCGCCGCGCTCTTTTCCGGCGTCGGGGCCGGGATTGCACTGGGCAACGAATATGTCATTGGCGGTTTACATTATGCGCTTTCGGCCCATTCGCTATGGCTGGGGGCCGGAGCGCTCGCCGGTATATTGCTATTAATCGTGGCAATGTT [...]
+NODE	1147	38	3356	3236	0	0
+AAAAGCAGAGAAGCCTGCCGCCTCCGGTATCTACACCG
+GCGGCTTCCGCCTGCGGCAGTGGCTCAAACGCCGCCGG
+NODE	1148	8	1107	851	0	0
+CGAAGTGG
+ACCGGCTG
+NODE	1149	194	20717	20195	0	0
+CGTCCTCTCCGTTACGCCAGCGTCATCAGGGTGTCGCCCACGGAAACCGCGTCCCCGGACTTCACCGCGATACCGCGTACCGTACCGGCCTGTGCGGCGCGGATTTCGGTTTCCATCTTCATGGCTTCCAGAATCAGCAGCACATCGCCTTCGGCCACGCTCTGGCCCTCGGTGGCAATCACCTTCCAGATGTT
+TGTGCTGCTGATTCTGGAAGCCATGAAGATGGAAACCGAAATCCGCGCCGCACAGGCCGGTACGGTACGCGGTATCGCGGTGAAGTCCGGGGACGCGGTTTCCGTGGGCGACACCCTGATGACGCTGGCGTAACGGAGAGGACGAATGGAAAGTCTGAACGCCCTGCTTCAGGGCATGGGGCTGATGCACCTTG
+NODE	1150	46	3517	3517	0	0
+GCCCGCCAGCGGCGCGGTGACCGGGGTGCCGGCGCCTGCCGGAGCA
+TCTGGAAGGTGATTGCCACCGAGGGCCAGAGCGTGGCCGAAGGCGA
+NODE	1151	4872	315778	309077	0	0
+AAACTATATACTTAGCCAGTTCAAGAAGTTGATTTTCACTCATGCGAATGTTGGCAATTTGGTATCTAACTGGCTGAATCTCCTCATTATTAACCCAGTCTGAAACATGCTTAAAAAATGCTATTGAACCAAATCTTGCTCCGACATCCCCAAAAGACGAGTAAGCAAATCCATCAGCATACTCATTTACAGCATCACTTGAGTCCTTGAAGATGGTTTCTCTGAAGTTCACTTTGGTATCTGTCATATTTATTTATCCTTACCATACATGGTCTTTAGCGTCTCAACATCGTGTTCAAGATCTATCAATCGTGATGCTATAGTTGCAAGGTCTAGTGCTTGAATGTGTTTATTTTTTTCGGTCCACGCTTCAAGTGCCGCGACCATCTCAGCATTTAATGAACGAGAATTAGCCTCAGCCAGTTCAATAAGACGTTCCTTTATCTCTACAGGAAGCCTCAGATTCACTTGAGGGTTTTTGTACTTACGATC [...]
+TTGCTGGCGTGGACCCATCAGAACAGAAACAGGCTATAAAGAAGAAGGAAAAGGAAGAAGTAGCTGATTCGTTCGGTGATATCTTCAGGGAGTGGCATGCTCATAAATCGAAGGTATGGTCGAAAGGATATGCTGACGAAATGATGAACATGTTCACTGGCGATATATTGCCACTCATCGGACATCTGAGAATGGAAGAGGTGGAGCCGATGATGCTACTGAAGGTGATCAGGCTATTTGAGGACAGAGGGGCGATGGAACGTGCTGATAAGGCTCGTCGCAGGTGTGGCGAGGTTTTCAGCTACGCAATAGTAACCGGAAGAGCTAAATATAATCCGGCTCCAGACCTTGTTGGGGCAATGAAGGGTTACAGAAAAAACAACTACCCTTTCCTACCTATGCATCGCATTCACGAATTCCAGAGGGCGCTGAATGGGTATGGAGGCTGGGTTATAGGTAAGATTGCTGCTCAAGTTCTTCACTATACAGCAA [...]
+NODE	1152	2500	144369	143589	0	0
+TAAGGCCCATCTCGGTCGCGCCCAGCGGCGCTTTTGCCAGCGCTTCAGGGTGTCGGTGAGTCAACCAGGCTTTTTCATCGCCCCAGTTCACATCCAGATCCGGCTCCCAGACATCTTCACGCCCGGCGCCGAAACCGAAGGTACGGAAGCCGGAGTTTTCCAGCGCCACGTTACCCGCCAGAATAAACAGGTCAGCCCAGGAAATTTTCTGGCCATATTTCTGCTTAATCGGCCACAACAAACGACGCGCCTTATCCAGGCTGACGTTATCCGGCCAGGAGTTAAGCGGCGCAAAACGCTGTTGACCACGACCCGCGCCGCCACGACCATCAATAGAACGGTAGGTACCAGCGCCATGCCAGGCCATACGAATAAACAAACCGACATAGCTGCCCCAGTCGGCGGGCCACCACGGTTGTGAATCGGTCAGCAGCGCCTTGAGATCCCCTTTCAGGGCGGAGTAGTCTAACTTGCTAAACTCTTTGCGGTAGT [...]
+CTGCCAAATGGTTTGCGGGAAGTTTCGCGTTTCCGCAAGGCCGAGCGTAAACGTCTGCACTCGGCGGGCATCGAAAGATACGGCGCGATCGGCAATCGTCTGCCAGCGGGCGCTAAGTGTGGGCGTCTGGCGAGGCGATGGCGGCAGGCTGTGCTGCCCCTGAATATGCGGAATCCCCTGGCGGCTGGCGAAACTCCCGGCCCCTTGCCTGCGGGTCATAAAGCCGTCGCGCTGAAGCTGGGAATAGGCATTTTCAACCGTATCTCTGGACAGGCGAAGCTGCTGCGCCAGCGCGCGAGCGGACGGCAGTTTTGCGCCATCGACCAGCGCGCCGGAAATGACCAACTGACGAAAAGCGTGGTACAGGCGCACATGCAGCGGCAGGTTACGCCACACTTGCGCGTCGATCATGATATGTATCGACTCGAAATTCGCTGTGTTCATCTTCTGGTTCCCCCGTCCCTGCGTCGCCAAAGCCGTTGAATCATATCA [...]
+NODE	1153	6623	399344	397452	0	0
+AGTCACGCTCGATAGCCGCTTTCAGATCGCCCTGCAGAGTGGTGCCTTTTTTCAGCCCTTTCCAGAACAGGCTGTGGTTAGCGTGGCCGCCCGCGTTGTTACGCAGCACGGTTTTTTTGTCCGCTGGCACCTGATCCAGTTTAGTAATCAGTTCTTCAACCGGCAGGTCAGCAAACTCAGGCAGGTTTTCCAGCGCCGCGTTAGCGTTGTTGACATAGGTTTGATGGTGTTTGGTGTGGTGAATCTCCATCGTCTGCTTATCGAAGTGCGGTTCCAGTGCATCATAAGCGTACGGCAGGGATGGCAGTGTATAACTCATAATCATCTCCATTATTGTCGAGCGGCACAGTGTTAACGCCGCGTAAGCAGTTGGTTCATTATAGTTAATTAAATGATATTGAAAATGATTATCAATGCCGTACTTTTTCCAGGGTTATAAACGTTACGGCATCCGCTGAAAAAAATCGTTTTTTACGCCTCCAACCGAAACCG [...]
+TCCGTTAACGATCTGGTGCTGCAAAATATCATTTACTGCCCGGAGCGTTTGAAACTCAATGTAAACTGGCAGGCGATGATTCCCGGCTTTCAGGGAGCGCAGTGGCATCCTCACTGGCGGCTGGGCAGTATGGGAATGAATCAGGCGCGGCAGGTCATTAACCAGCTTGAACATGAGAGTAATGGACGCGATCCGCTGGCGAATGAGATGGCGGAATTGCTGTTTGGTCAACTGGTGATGACGTTAAAACGGCATCGCTACGCGACCGACGATCTTCCGGCAACCTCCCGAGAAACCCTGTTGGATAAATTAATTACCGCTTTGGCTAATAGCCTTGAGTGTCCCTTTGCGCTGGATGCGTTTTGCCAGCAGGAACAATGCAGCGAACGGGTGCTGCGGCAGCAGTTTCGCGCCCAAACCGGGATGACGATTAATCAATATTTACGCCAGGTCCGTATTTGCCACGCGCAGTATCTGCTTCAGCATAGCCCG [...]
+NODE	1154	8822	483072	478987	0	0
+TGTCAGGACAGTGAAATATCGTGGGTCCACTGGGATAATTTGCCGGAAACCGCCAATGCGCTACGAGAGTTTACCCGTCATCTGATTCAACTGCGCGCCACGCAACCGTTGCTGCGCCGGGAGAGCTGGCGTGACGGTCTGGAGATCCGCTGGTTTAACGCCGGCGGAGGGGCGCAGCAATCCGAACAATGGGATGAGGGATCGACCATAGGCGTATGCATTAGTCGTCCCGATCTCCAGCCGGAAGCGGGGATCTGGCATGACGCCTTACTGCTTTTCAATCCGTTTGAAGGCAGCGTACCGTTCCGTATTCCGATGTGGGGAGAAGGCGGCTGGGTACTTGAACTGACGACTGCCGATAACGCGCAGCAGGGAATGCGGATTACCGAAGAAATGGATTTCGATCTGGCCGGGCGCAGCATCGTATTATTCAGACGCCCCTGATAGTAAAACCGCGCTCCGGACCCAACCGGCCTTGATGGCCGGTTTTTT [...]
+CATTGTCTTGCATTCATACTCGCCACCTACACTGGCGGCGGTCAAACATAATTCATCGGTTATCAGTTCGTATTTTAACGTCGCGCCTGGCATGACCTGCACATGCGTAACCGTATCGCCTGGCCTGTTTGTTTTTGTAGACGACGCCGCCGAACATCCAAAAAAGTTGCGAAGAATTGGTAGCGATTTTACAAATGACATGTCTTACCTCAACCACCCGGTAAAAGTCATATATCGATAGCAGTATGTTACTCCAGATGAAACAATCGGCTCAGAAAGGGATATGTTCCAGCAGACAGGAATGTTATAAGGAGCTTCCCCCTTCGACACAAATAATGGTTGAGGACTGAGAACAGATGCAGCTGAATATGCTGGAAGCCATGAATATTTATGTCAATGTGGTAGAGCAAGGGAGCTTTATCCGCGCGGCGGAGGTGCTTGAGCTGCACCGCCCTGCTGTTACCCGCGCCGTTCAGAATCTGGAACATGATC [...]
+NODE	1155	2608	172052	171348	0	0
+CCCCCAAATGGCGAATAAAATAGCCTAATGGGCCAGGCTCTTAATCTTTCGCCATGCGGTTAAACTGCTCAATAGTAAGATCCCACGGCTCACGGGCCGCATCCGGCATAAAACTGCCGTCATCCACGCCAATTTCGTCCTTGATAATTTTATTCAGTTTCTCATTCATCGTAAGAATGAGATCCTGATATTTCTGTTTATCAGCAGCAAGGTTATGGTTCTCATCGGGATCATTTTTAAGATCGTAAAGTTCAAGATCGTTGTACTTAATAAGATCCTCCCAGGTTTCCGGCGTATTATGCTCCCTTAGTGAGAAATAGCGTGCAAACTTATAACGACCATCGTTAATCATCCGCGTCCCTGAACGATGGCTAAAATCAGGATGCAGATGGGATATTTCCTGCTTGATTTGCGCCACCGTTTTTTGTTTATCTCTTTGTAGCGCGATAACGCGGTGGAGATAATGGGCATCGGTATACAAGATCATGCCAT [...]
+ACCTCGGTTGATTATCTGAAAATAGACTTATTTGGTGTAACCGTCTTATATCTTGTTATAGTCACCTCTTTATGTTGTTGTCAATGTAAAATAATGCGCTGCCAGTTAAAAAGAAACTTAACCCCCTGTAAATAATAGTTTTTATATTATTTCTTGTAATGACGTAAGTTTTATTGAATCACGCGGTAATACGCTAGTTTTATTCATAAGCAACATAACAGAATTGAGTTATGTTTTAATTTCACAGAGTGATATTACCGGTTGTATGTCTATGGTTGCGCGGCCTGTTACTGATAGTGTTTCTTTCGGGGCGATTTTATTGTAGCGGCATAGGGTAATCACCGTAGCTGAAGGGAAAAGGCACGAACACAGCGCTATAGAGTATGTTTAATAATGTATTTTTTTATGAAGTAATGTCTGCAGTTGTATCTCTAAAATAAAAACAATGAGCTTTTCATCTAAATAATTTTTCAGTGAATTATGCTCATTTAT [...]
+NODE	1156	51	204	204	0	0
+GTTTGATTTCCAGCTGGTTACGAATATTTTCCAGCGTCTCTTTCACGACGA
+CCCCGCTACGAGCAGGAAAAGCTGGCGATGGATCGGGTGCGTCTCAAAAAC
+NODE	1157	85	4760	4711	0	0
+AAAACTTGTTTTACTGCCGATATTGATACCGCGGTGAAAGCCGTATCAAGTAAGAGATGGTGCATCCGGGAGGATTCGAACCTCC
+ACCGCGGTATCAATATCGGCAGTAAAACAAGTTTTCCGATGCATCCGTAGCTCAGCTGGATAGAGTACTCGGCTACGAACCGAGC
+NODE	1158	84	9694	7993	0	0
+CCGCGGTATCAAAATCTGCAGTAAAGTAAGTTTCCCGATGCATCCGTAGCTCAGCTGGATAGAGTACTCGGCTACGAACCGAGC
+GAAACTTACTTTACTGCAGATTTTGATACCGCGGGAAAGCCGTATCAAGTAAGGGATGGTGCATCCGGGAGGATTCGAACCTCC
+NODE	1159	2562	135209	133583	0	0
+CCGAAGAACGCCATCAGCGCGGTGCCGGTCATGCCGTGGCGACAATAACAGGGAAAGAGTATGCAGCAACCGCAGGTCTGGTTAGTCGAGGATGAACAGGGAATCGCCGATACGCTCATCTACACCCTGCAACTGGAAGGGTTTACCGTTGAGCTATTCGCTCGCGGGCTGCCCGCGCTGGAAAAAGCGCGTCAGCAACGGCCGGATGCGGTGATTCTCGATGTGGGACTGCCGGATATCAGCGGCTTTGAGCTGTGTCGGCAGTTGCTGGAACGCCATCCTGCGCTGCCGATTCTTTTCCTGACTGCCCGTAGCGATGAAGTGGATCGATTGCTTGGTCTGGAGATCGGCGCAGATGATTATGTCGCCAAGCCGTTCTCGCCGCGCGAAGTGAGCGCCCGCGTGCGCACGCTGTTGCGCCGGGTGAAAAAGTTTGCTGCGCCGTCGCCGGTGGTGCGTACCGGACATTTTGAACTCAATGAACCGGCGGCG [...]
+ACCAATAGCGACTCCGGCAACCAAAAATAGAGATAGCTGCGCTTATACTGGACCTCTTTCTCCTCTTCCAGCACGGTATAGAGCTCTGTCACCGGAACCGCCACCAGCGGGCCGACAACCTTTTGTGGGCCGCTGGTACTCTGACGAATAGCGGCTTCTACATGGCTTCGATAATCAGCACGTTCCACGATGGTGTGCCGTACCATCATCAGGGGAATTAACAGCAGGATCATGGCGCCGCCTAACGTAATCATTTTCCACAACAGGGGGGATTTCAACATAGCGTTCTCCTTTGCAATGCCAGCAGTGTAAGAACGCGATGTGGGGAGAATTTGAAGTTATGTGAAGTGACGGTGAAGTGTCAACGAGGCCAGCACGCCGCCTTCGGGACGATTGCACAACGTCACCTCACCGTTGAGGAGTCGCGCCGCCTCGCTGACAAACGCCAGCCCAAGCCCGCTGCTTTTACGCCCGTTTTCGCGGGGCAACGAA [...]
+NODE	1160	51	2787	2787	0	0
+ACCTCTTTGGAAGGGTCGTAACCCCCTGCATCATTCGTGTTCGTGACCAGC
+TTGATTGCGGCAATACGCCGGCCATTTCGGCGATAAAATTATACCGTGATG
+NODE	1161	28	1339	1339	0	0
+CTTGGTTCGATTCCGAGTCCGGGCACCA
+TGCTCTACCGACTGAGCTATCCGGGCAA
+NODE	1162	1	104	102	0	0
+C
+C
+NODE	1163	12	629	624	0	0
+TTATTCAGAAAA
+ATTTTCAATCCC
+NODE	1164	1678	110389	109510	0	0
+CCCAGCCTATGGCTGGGTTTTTGCTTTTCTGGGAATGGAAATCCGTAGCTCCCATCTCTGGCCTGACTAGCTATAACGAGAAGGCCAGATTTTCTCTGGCGCAACGCCCAGCGCTTCGTCGCTCAGCTTTTCCCCTTTGGGCCAGGGTCAAAAGCTTACTTAGCTACAGGGAGATTATTACCAGTAATAACGCCTATCACTTCATCTGACGGTTCGCTAACCCCGACAAGTGAATCCAATATCTCCGCCATGAACTTTTTCATCACTGAAAACAATAATCCCTTCGCCAATTTTGGCATTTTTTCTTTTTCGGTTTCTTTATTCTTAAATATTGTTTACGACTCTTGTTCATAATCATAAATTAATACTCAGCACATCATGACTGGTGGTAGTTGTCGGGGTAACAGGGCACATAGTTTAAAATACTTATTCATAGTTTGTTATTACGTAAACATTTTAACCTAATGCGTGTCAGTCAGGCACGCAGATAAA [...]
+TTTACCGCTTCAGCCGGACAACGACGTCATGACGGTCTGGACGGACTGCAAACGGGGGAAGGGGGCGTTGAATTCATGCGAATCGGGGAAACCAAAGGCATTCTCCACGCCCGGTCGCCCCTACGCAGTTGCACTTCCTTTCATTTGCTGTGGCCAGTTTGCGGGAAGACTTTCACCTTCAGTAATTAAGTTCGGGGCGTTCTTCTTTACTCAATAAATTATTTTTGTCGTTCAGCTCCTCACGGACTTTTGCCAGTGACTTCTGAAAAGCCGGGATTGTTTGCAGCCTTGCAAACTCTACTGCTCCCACATAACGGCCAGCATCAACATCGCTTTGCCAGTGAGCACCGCATATCACTCTGCTTTGCCCGAACTCCCATCCTCGTCTGGCGAGCTCCTGCGCGCGTTCCGGTCTGGCCTGGGATAATACTAATGCCAGAAGTGTACCATAAGCAGTATGCCCGGAAGGGTAAGAGCCATCTTTTCGCAAAG [...]
+NODE	1165	1709	83816	81674	0	0
+ACCCGGTAGTCGCAAAACGCGTTCGCCATGTATTGAGCGAAAATGCGCGCACCGTTGAAGCGGCAAGCGCGCTGGAGAAAGGTGATTTGCAACGTATGGGCCAACTGATGGCGGAGTCCCATGCCTCAATGCGCGATGATTTCGAAATTACCGTCCCGCAGATAGACACGCTGGTAGACATTGTCAAAGCGACCATCGGCGATCGAGGCGGCGTGCGCATGACCGGCGGCGGCTTTGGCGGCTGTGTTGTCGCGCTGATCCCGGAAGATCTGGTTCCCGCTGTTCGGCAGGCCGTTGCGCAACAGTACGAAGCGAAAACCGGAATCAAAGAAACCTTTTATGTATGCAAACCGTCACAAGGAGCAGGACAGTGCTAAATGAAACGCCCGCACTGGCCCCCGATGGTCAACCGTACCGCCTGCTAACCCTGCGCAATAGCGCAGGGATGGTGGTAACGCTGATGGACTGGGGAGCCACTCTTCTTTCCGCCCG [...]
+CCAGAACCAGCTTAGTTACAGCCATACTCTCACTCCTATAAATCATATGTAATGATAATAATTCTCATTATATTGCCGCGAGGTGTTGGCGGCAATGCTTACGCATAACCATAGCGAAAATAGTGGCGCAGTGTAAGGTTCTTGTGAACTCAGAGTTGCGATTTTGTCTTTAAGTGGTGGAGGTTTGAGCAGGGCAATGGCGCGTAGGCCCGATAAGCTTGCGTCATCGGGCATGTAGCGGCATATCGTTAGAACGGAATAAACTGATACTCGGTCAGGCTGGCGTACTCCTCGCCAGGGCGAAGGATACAGTCAGGCTGCGGCCATTCAGGATGATTCGGGCTGTCCGGCAGCAGTTCGCTTTCCAGCGCCAGCCCTTGCCAGTCGGCATAAGGTTCCGGCCCGCGGGAAGGTGTACCCGCCAGATAATTGCCGGAATAAAACTGTAGCGCCGGGGCGGTGGTGTAAACCATCATTTGTAGCTTTCCATCC [...]
+NODE	1166	2179	117737	111649	0	0
+CCAGTTTTTTTCTGAACGCAGAGTATAAAGCTGGACGCAGGCCCCCCACAGTTTTTTCCCCTCCAGCAGCGCCTGCGGCTCATAGCATCGCGGCGGGGCAACGATAATACGGCAGTGCGTACGCTGTTCATCCTGAGTCAACGTCAGGGCGTGGTAGCCCTCCGGCAATGTAGCCGGAAGGTTAAGTTTTTTACCGCCCGTCACGCGCCCTTTGTAATGCACGCCCTCTTCCGTAGTCAGCAGCCAGGCAAACTCACCGCGCCCCTCTACCGGCAACGCCATTTTTTTACCCGCGGTATACACCTTCACATTCGGCACGACCGCCTGTGGTCCTGTTGTCGTGCCGTGCATCGCCGCCAGCAAACGTCTCTTGGTTTCAGCGCCAATAGACTGCGGTTTGCCATGAGCATTGATGTAACTGGGGCTGATCCCCGCCGCCAGCGCGGCACTATCGAGACGTTTATTTTCCATCGCGCTCCCTTAGCGTTTTGC [...]
+CGGAAAAACTGACGAAGGTGCTTTATCCCAACGATAACCACACGGCGGGCAAAAAACTGCGCCTGATGCAGCAATACTTCCAGTGCGCCTGCTCGGTAGCGGATATTCTGCGCCGCCATCATCTGGCCGGACGCAAACTGCATGAGCTGGCGGATTATGAGGTCATTCAGCTAAATGATACCCACCCGACTATTGCCATCCCTGAACTGCTGCGCGTGCTGATTGACGAGCACCAGCTGAGCTGGGATGACGCCTGGGCTATCACCAGCAAAACCTTCGCCTACACCAACCACACCCTGATGCCAGAAGCGCTGGAGTGCTGGGATGAGAGGTTAATCAAAGCGCTGTTGCCGCGTCATATGCAGATTATCAAGCAGATTAACGACAGCTTTAAGACGCTGGTCGATAACACCTGGCCTGGCGATAAGCAGGTATGGGCAAAACTGGCGGTGGTGCACGACCGTCAGGTACGCATGGCCAATATGTGCGTGG [...]
+NODE	1167	1823	104244	103106	0	0
+GCTGAACAGTTCACTTAATGTTTCGCCGCCGTCCAGGCTGGCGAACAGTAATGCGCCCGGCGGTACGGCGCTGCCGCTGACCGTCACATTATGCGCCCCCGGCCCGCCTGCAACAGCGGAGACGATGGCCGATACCGCATCCTGCGCCATACCTGCGGCGGCGGCAGCCTGCGCCGCTGCCACCGCGGCTTTCACCAGTCCTGATGGCTCCGGCAATGCGCCAAACAGCGATCCCGCAGCCTGTTCCACGGCGGCTTCCGCCGCATCTGCCACGCTTCCGGCGACTGAATCTGCGGTGACACCGCCACTTTCTCCGGTTATCGGCGGCGTGGTTGTCGTCAGCCCTCCCATACCGGATTTATTATTTGTGGATACAAAACTCATGGTAGTGACTCCTTTAATACCGGATTAAAATAAATAGACTCACCGTCAGGAAACAGTGCCCCGCACTTTATAATGCAACCAGCCTGTTATATTTAAATATTTACCAGA [...]
+TGGTGGATGAAAAAAATAGAGGTCAGATGCTGTGAAAAAGTACGCTGTAGAGGTTCTGTTTATGTCTGCCTGTGCAGGAATGTTCCTGCCCGTATTTGCCTGGGGCGGAACAGATGTAAACATTGATAACCCGCTGGCGGAGTGTGTGGATATCCATCCCGTTCATCGTCAGGAAATGGATAACCTTACCATTCTGAAAACAACGGTCACACTGAAAAAAAGTACCGGTGAATGTGGCTGTTTCTCAACATTAATCAACTATACCAGCTTACTGGCGCAGGATGTTGAGGGTTACGGACGCGGAAGTGCATATTCCCTTCAGGAGGGGAATATTTCACTGGCGAAGATGCAGGGACGTTATCCTTTCAGCTTTGTATTATCGGTGGATAACCAGTCTGTACGGGATCAGAAGCTGGCGCTAATGATACGTTGTACACCACCGCTGTAATACACAGAATAGTCAGGGAGAAGATGATGGCAGTAAGACTGACT [...]
+NODE	1168	15	1494	1494	0	0
+CTCACGCAGCGCCGG
+GAAGGAGGCGCGGGC
+NODE	1169	6898	342044	339293	0	0
+GACACTGGCAGCTACGCTAACGTGCGGCGCTTTCTGAATCAGGGACAACTGCCGCCGCCGGAAGCCGTGCGGGTAGAAGAGATGCTCAACTATTTTCCCGCGCCTCAGCCCGTTGCGGATAAGCAGGATAACACTAAACCTATTGCGGCCTGTATACCGATGCCATTTGCGGTTAAATACGAACTGGCTCCCTCGCCGTGGAACGCGCAGCGTACGCTATTAAAAGTTGATGTTCAGGCCCGGGACATGCAGACCAGAGATCTACCACCTGCCAACCTGGTTTTTCTCATTGATACTTCCGGCTCTATGCAGCCAGCGGAACGCCTGCCGTTGATCCGGTCGGCGCTAAAACTGTTGGTGAACGATCTGCGTGCGCAGGATAACATCACGATTGTGACCTACGCGGGCGGCACTCACGTTGCGCTGGCGTCTACAGCGGGAAATAACACAACCGCGATTAAAGCGGCAATTGATAATCTGGATGCTTACGGG [...]
+AAAGGTGTCTCGCTGGGCGACCACCCGTTGCCACGCCAGTTCCGCCAGACGCGGGATCTCTACACACCACGGTTTACGTTTTTCCGCCGGATGCAGTTCCAGCCAGTCGGCGATTTTCGCTACCAGTCTGCGTCCACGATGGTGCGCAGGGTCCAGACGACCTTCAATATTGTCGATTACCCAGTACTCTTCCGGCTCGCAGGTTGCCTGCCATTGCAGTAAGCGTTTTCCGGTAAGGCTACTGCCAAGCTGGACGACAATTTGCGCCTGCTGCAGTTCGGTCACCGCTTTGGCGTTGCCGAGCCACAGGTCGGCGCACGGCAGCGGCTGCCCGGTTTGCGACAATACGTCGCCAATTAATGGCCATCCCAGAGTTTGCGCCCACTGCGCCACTTTTTTGCCTTCTTCCGCGCTCATACGCCCGGCGACGACAACGCCGCGTTTTTGTCGCCAGAAGAACCAGTCGCGCTGTTTGTCGCTTTCCAGTCGACG [...]
+NODE	1170	7223	366617	360733	0	0
+CGACGCATCCGCGCCACCGCCGCGTCATTGCTGTTGACGAGATATCCCAACCGCAGGCCGGGAATGGCATAAAATTTGGTCAGCGAACGCAGCACCCAGATATGCGGATTATCTTTAAGAGCAGGAATAAAGCCCGTCTCATGCGGAATAAAATCGATAAACGCTTCATCCAGGATCAGGTTAATGTTCAGCGATTTGCAGCGATCGGCAATGGCCTGTAATAACGGCCGCTCCGGCAGCAGGCCGGTAGGATTATTGGGCGTACACAGAAACAGGCAGTCCAGATCGGGCGTCAACGCCTCAAGAATGGCATCGGTAAGCTGCCAGCCATCCGCTTCGCGTAGAGACCAGCGACGAATTTCACAGCCAATTTGCGCCAGCGCCCGGCCATACTCCGCGAAACCTGGCGTGACAATCATTGCACGACGCGGTTTAAGACCGCTCGCCACGGTAAAGATTGACTCCGTCTCGCCATTTCCCGCCAGTATCCAC [...]
+ACGGTAACCAGGTCGGTTTCTTTAAATTTACCCGCTTTCATTGCCTGTCCGATGACGTAACTGGTCATCATCTTCGTCAGACTCGCCGGGTCGCGACGTTCGTCGGCGTTTTGTTCCGCCAGAACTTTACCGGAGTTGTAGTCGATCAGGATGTAGGATTCCGCATCGATCTGCGGAACGCCCGGGATCATAGTTTTGATATTCAGGTCATCGGCATGTGCGGTTGAGATAAACGCGGCACAAAGCGCCGTGGTGAGCGCCATGCGCTGCATAAAACGAGCGGAAAAAGTGGTCTTCATGGTCTGAACTACGACGTCCGTGATGAAATTAAAAAAAGAGCCCTACTATAGCAAAAGCATAACTGGCAGGCATCTGACTTTCCGCGTGACTTTGTTAATGTCATTTACAGAAATTGACAGTACAGATACCTGCGATCGGTTACTGCGCGCTGGCGATAAAGGACTGTAATTGTGCTTCTGTTTGCAAACGTTG [...]
+NODE	1171	51	2289	2207	0	0
+ACCGCCTGAACGCGCGCGCCGCGCATCCCCACGCAAGCGCCGACCGGATCG
+TCTCTACCGAACTGGGCGGTGAGCGTATCGATATCGTGCTGTGGGATGATA
+NODE	1172	1486	88170	84322	0	0
+ATACGTTTATCGTTGGTTTTCACTGCGATTTTCGCACGAGAACCCGGATCGCGAGCCGCCGCTTTAATTTCAATCACTTCTTCGCCGATTTCCGGCACTTCGATGCGGAACAGTTCGATCAGCATTTCCGGCTTGGAACGGGTGACGAACAGCTGCGCGCCACGCGCTTCCGGGCGAACAGCATACAGCACGCCGCGAATACGGTCGCCAGGACGGAAGTTTTCGCGCGGCAGCATATCTTCACGCAGAATCACCGCTTCAGCGTTACCGGCCATCCCTTCAGATTTAATTTCCAGAGAGATATTGTCGCGGTTTACTTTCTTCACCACGCCAGTGACGATTTCGCCTTCCTGGTCGCGGAACTGATCGACAACCATCGCCCGTTCAGCTTCACGCACTTTCTGCACGATAACCTGTTTCGCAGTCTGCGTGGTGATACGGTCAAAGGTGACAGATTCAATCTGATCTTCAACATAGTCGCCGACATTCAGG [...]
+CTTTCCCTTAGAGTTCTTTTTCAAATATACTGTGAAGATTATGTCCTTCGTAGCTGGATTTGAAAAAAATTCTTTCGGAAGGTACACCAGACCGCCGTTGCGGTTATAGGGTTCAGTTATCTAAAGCCCCGATTTATCGGGGTTTTTTGTTATCTGACTACAGAATAACTGGGCTTTAGGCCCTTTTTTTATGTCTTGGGGGTGGGCTTGTCCACATTAGAGCAAAAATTAACAGAGATGATTACAGCGCCAGTTGAAGCCTTAGGCTACGAGCTGGTCGGCATCGAATTTATTCGCGGTCGCACATCCACACTGCGCATCTATATTGATAGTGAAGATGGCATCAATGTTGATGATTGTGCTGATGTGAGCCACCAGGTAAGCGCGGTGCTGGACGTTGAAGATCCTATCTCCGTGGCTTACAACCTTGAAGTCTCGTCACCGGGTCTCGACCGTCCTATGTTCACTGCCGATCATTATGCGCGTTTCCAG [...]
+NODE	1173	2838	171985	169515	0	0
+TTCGAATGAATGACCCGCAACAGGGGTTTATGGCGTCTTTTATCAGCACCGATGCTCCGCAACAATGGCATATGACAGAAATCACTTGCCAGCTTACCGATCTGGCTGAAAAACATGGCGGCAGTTTTGATGGCTGGGGCGCACCGGTAGTACAGGCATAACAGGCGAAAGACAATATCTCAGGTGGGGCGAGCATTTCAGACCAGGAATATCTCTTTTTCCTCATTTCCAGAATCGACTCACCACAAAGGTCACAAAATCTGGTAAACTATCATCCAATTTTCTGCCCAAATAGCGGGGAATGTTCATTTTTTGTCTCGTTTCTGAGCAATGATGGCTTTTTTCGCCCTGGGTGACATAACATCTGGCTGGTCACATTGTGGCTGGTAGCAGTAAAAATTCTGAATATACCTGGAGGTTTTCATGGCTGTCGCTGCCAACAAACGTTCGGTAATGACGCTGTTTTCTGGTCCTACTGACATCTATAGCCAT [...]
+TACCTGCTCTCTTTCAGCAAGGCTCTGTACGAATGCTTCCCCGGTGGAACCGCCAACGTACAGCCCGTCGATACCCTGGCCGATGTTAAAACGCACCAGACGGCGCAGGCTTTCGCTATCCAGTTGCTGCTGATGATCAAATGGGGTCAACAACGCCGCCATTACGCCTTGCAATGCTTTTGCCATACCTACCTCTACGGATGATGAATATATTAACTACCTACCTTTATACCTGTTATACCAGATCAAATAAGCAGCAAATAATACAGAACGCTTATAGTGCGATCTGCTTCACTAAACTGGGATCGGAGGCGCGATCGCTACCGCATTTTTTGACTTTTTTTACCGAGCGCGTGCCAGGTAGCGGAAACGCTATTGAGGTGGGTTTGCAGAGCGCGATCCGCTTTATCGGGATCTCGCTGGCGAATGGCATCAACAATCACAATATGCTGTTGATAACTCACGTTATTATGTTCATGCAGCTCACGATCG [...]
+NODE	1174	288	15616	15616	0	0
+CTGGCGCGTTATCCGGATGTCAGCCTGAATATTGTGCCGCAGGAGTCGCCGTTGCTGGAAGAGTGGCTCTCCGCTCAGCGCCACGATTTAGGGCTGACGGAGACGCTTCATGCCCCGGCAGGAACAACCCGTACCGAGTTACTAACGCTAAATGAAGTGTGCGTACTGCCCTGCGACCATCCGCTTGCCGCCAAAACGGTACTGACGCCAGACGATTTTCAGGGGGAAAACTTTATCAGCCTCTCCCGCCTGGACAGCTATCGACAGTTGTTGGATACGTTATTTGCC
+TGATAAAGTTTTCCCCCTGAAAATCGTCTGGCGTCAGTACCGTTTTGGCGGCAAGCGGATGGTCGCAGGGCAGTACGCACACTTCATTTAGCGTTAGTAACTCGGTACGGGTTGTTCCTGCCGGGGCATGAAGCGTCTCCGTCAGCCCTAAATCGTGGCGCTGAGCGGAGAGCCACTCTTCCAGCAACGGCGACTCCTGCGGCACAATATTCAGGCTGACATCCGGATAACGCGCCAGAAAAGGCGGTAGTAGCGGCGGCAAAAAGGATTGTGAAAAGACCGGCAGGC
+NODE	1175	3727	195492	193297	0	0
+TCTGCATAAATGGCCCGTCTGACGTAGTCAGGCTTATCATAGCGCAGTTTTTAATTAATCTGGGTATGGGGATCGTAACGCTGTTAGTCCCCATGCTGCTTTTCAGCGCTATCGGCAGTGCTCAGACATTTGTTATTTTATTTAGCCTCTGCTTACTGTTCAAATTTATCATCGCTGGCTATCTGTCTATATTTATATACTCAATTCCTTATATAGGAATAATCGTAATTACTTTAGCGGTTATCGCGCTTTTGCTACTATTACCGCTCAAAAAAGAACTTTTCTATATTGCACCGCCCAAAAGGTTCTCATCAACCCAGCGACCTGAGTGCGCAGAACCCCTTGTCGTCGCATTATTGGCCTTTTTCGTTCCATTTTATATTATTTATTGGTTCTTCAGAATTCACCGGGAAATGCAATTTGTGGCGCCTTCGCCCCGACTCATGACCGCATGTGGCGCGGGATGGCTGTCAGCCATTATGCCGTTTGGCA [...]
+GTCCTGAATCAGCAGGGGCTGGATGCCGCCTGGCTGGACGCGCGCGCATTTTTACGCGCCGAACGCGCCGCACAGCCGCAGGTTGATGAAGGGCTATCTTATCCTTTATTGCAACAGCTACTGGCGCAGCATCCTGGCAAACGTCTGGTCGTGACCGGGTTTATCAGCCGCAATCACGACGGCGAAACGGTCCTGTTAGGCCGGAACGGTTCCGACTATTCCGCCACGCAAATCGGCGCGCTGGCGGGCGTTTCCCGCGTGACCATCTGGAGCGATGTCGCGGGCGTTTATAGCGCCGACCCGCGCAAAGTGAAAGATGCCTGCCTGCTGCCGTTGCTGCGTCTGGACGAAGCCAGCGAGCTGGCGCGTCTGGCGGCGCCTGTTCTGCACGCCCGCACGCTACAGCCAGTGTCCGGCAGCGATATCGATTTGCAGTTGCGCTGTAGCTACACGCCGGATCAAGGGTCAACCCGAATTGAACGAGTGCTGGCT [...]
+NODE	1176	1937	121448	120781	0	0
+CTGGTAAAAGTGCTGAGCAGTACGATAAGTAGCAGCCTGGAAACCGCCAAAAGCTTCCTGCAAGGATAACAGAAGAGGATATTAATAATGGTTACAAGTGTAAGGACTCAGCCCCCCGTCATAATGCCAGGTATGCAGGCCGAGATCAAAACGCAGGCCACGAATCTTGCGGCGAATCTTTCCGCAGTCAGAGAAAGTGCCACAACGACGCTGTCAGGGGAAATTAGAGGCCCGCAACTGGAAGATTTTCCCGCGCTGATCAAACAGGCGAGTCTGGATGCGTTGTTTAAATGCGGGAAAGACGCTGAGGCGTTAAAAGAAGTTTTTACCAATTCAAATAATGTCGCCGGTAAGAAAGCGATAATGGAGTTTGCCGGGCTCTTTCGTTCAGCGCTCAACGCCACCAGTGATTCTCCTGCGGCGAAGACGCTACTGATGAAGGTGGGGGCAGAGTATACCGCGCAAATCATAAAAGATGGCCTGAAAGAAAAG [...]
+TTTCAATTCTGGGTGCTTGTCAATATCGCTACATTGCGCTTTCAACGCTGCACTCTTTATCGTGTCATTGGGTAATATTTCCGCACGCAAGCCGTCAAACGCTCTGCGTACAGGAAACGGTGTAGAGGCATCCGGCTCCAGGGCTTTACGTATCACCCCCAAAAACGTCTCACGGGCGTCGAAATGCATTGAATGCATATTCGTAACGCTCGGTACTGTTGAGAGGAAACTATTTTGCTTAAACTTCAAACCAGAAAATGGGCCAGTCTTATCTGTCTGGCTATTATCATTATCGGTCGTACCGGCTTTATTACCTGTAATTACCGTCGAGTCTGATTGTAAGGTATCGATTTTAACATTCTCGACGCCAGCCAGTTGACTGGCAAGCGGCTTCACATTCACAATCTCTGCCGTCTGGCTTTGCTGTTTATTATCATCAACGCCGTGCACCGTGGCCTGTACAGGCTTGCCGATAATGTTCTTGCTGGTTAC [...]
+NODE	1177	43	20991	16500	0	0
+TGTTACGACTTCACCCCAGTCATGAATCACAAAGTGGTAAGCG
+CGTAGGGGAACCTGCGGTTGGATCACCTCCTTACCTTAAAGAA
+NODE	1178	8059	457059	449429	0	0
+AGCCATGTGCTGGCAAATTTTCGCTTACTGGTTGAGTTGCAGACAACATAACGCGTTTTTTGTCCCTGAAAGGATTTAGCGGTACTCAGGAATACTGAAGCCTTTATACACATTCTCTTCGGTTCGCTTCGCGGATGACTGCGCCTCATCGCCCCTGTCGTGCGCTGTCTGCGCACGCCGGGAACGTATTCGCCTGCCGTCCCGATGCGTCCTGAATGATTTTGTGTATCCACAAAAAAGCCGTGTAAAACCACGGCTAACCTGACCGAAAAAAGCCAAAAACCTGCGATCAGGTGGCGCAGACTATATCACCGAAGCCCAACGCTAACAAATAGCACGATCTTCTGTCGCGGGATAATCGTCAGCGTGAGAGCCGTATCACTTGTTTTCGGGCTACTTCACGCGCGATGGCGTCAACCTGCAATACGTCCTCAACGCTTGCCGGTTCCTGTAAATCCATCCTCTCCAGCACCGCTAAATTGAGCCCGGCGA [...]
+GATGGTGTGTTCATCCACCGTGTATGCGTGGAACAGGTCAAACTGCATTTGTCCGACGATGTGCGACCACTGCGGCATATAAGCCCACAGTACGCTGTGGCGATGCATGGGCAGCAGGCCGCGGCTGACCGCGCCGGGATGGCGTAGCATACTCAGAAACAGAGTGCGCGCCTCCGGGATGTAACACAGCGGTTGGCTCAGGTGGCGGCGGGCGTGGCGCAAATGGCGTAACGTCGTAGAGTAGATGCCGGTGATCGCGCTATTGCGCACCATCATATAAAACATGCGCAGGATCGCTTGCGGTTCGCGGATAAACAGCGTGTCGTCACGCAGATCAATGAGCGTACCGCGCAGTTGAAACTCATCGTCAACAGGACGTGGTTTTTCATCCGCAGGCAGCGCCAGAATCGCCTCGTCAAATAGCTGAAGCAGCATCTGATTAAGTTCGCTCACCCGACGCGTAACCCGGAAGTAGTCTTTCATCATCCGCTC [...]
+NODE	1179	8303	460546	457781	0	0
+CAAGCAGTAGTGTCACATAGGCAAGACAAGGCTTAGGTAAGCTTTCCAGGTCATTTAAGAACAAAGAAATAGAAAATGCTTCTGAGAAAATTTCTCCTCTGGCAGGATGCCCATCAATAGTCATTATCCAGGATCGGCTATTACCTTCGGCCTTGATATCCTGAATTAATGGAATGCCTTTTAAAACTGCCAGCATGAATCCCTCCTCAGACATAAATGGGAGTTTCTATCAAATTCGCTCACAACCACATCCGTAAAAAGCCTGATTCACATTTATTTCGACTATACTCTTCTTGTACAATATCAGGATGCTGTCTACATATACCTTGTCACAGGCGATTCTATCATTCGGATTTTCCGATAAATTCACAATTACACTTTCAGCATTGACATAAAAAATTACAATTTGAAAAATTATTTATTAAATAAACTGTTACGATGTTTTTACATCGCCACCTTATTAAAAAGTAATTGTAGTCATCGACTGGGTTA [...]
+ATCAGGAAGGCTTGATTAATAAAAAGGACTTTATCGCGCTGCTTGCCCGACCGACGCCCCTGCCTTGCTTAACCAGTACGCCGTTATATCCTGACTGGTCGTTCGCGGCGCTACCTGCGGTAAGCGATGCGCTGGCGGATCGCGTAACGCGAGCGCTATTCAACGCGCCCGCCGCCGCGTCATTTCACTGGGGCGCGCCAGCGTCGACCAGTCAGGTGGAAGCGTTGCTGCGTGATGTTCGTCAGCACCCTCAGCAGCGTCGACTGTGGCTGGATGTCAAAAGTTGGTTAATCCAGCACCAGCTAATGGTCGGCGGCGTGATTCTGGCGTTCCTGTTGCTCACGCTCAATTATATTTGGGTCATGCTGCTGGTGCGTCGACGTGGAAAACAACTGGAACGTAATAGCGTAGTTCTTCATCAGCATGAGCGGGCGCTGGAAACCGCCCGGCAAATGAGCGTGTTGGGTGAAATGACCTCCGGGTTTGCCCATG [...]
+NODE	1180	46	2756	2756	0	0
+GACCTTTCAAATGGGCTACCGCATCGCCAATGGTACGGTGAGTTTT
+AATGCAGATTCTGGCAACCCATCTTTCTGATAAGGCCGTAGACTTT
+NODE	1181	122	5751	5751	0	0
+CGAACCGTTACTGTTGCTGCCGATTGGCTTCGGCGGGCTGCTCTCCAACATCCCGGAAGCGGGCATGGCGCTGACCGCGCTGGAAAGCCTGCTGGCGCATCACGACGCCGGGCAGCTGGCGG
+AGCGCCATGCCCGCTTCCGGGATGTTGGAGAGCAGCCCGCCGAAGCCAATCGGCAGCAACAGTAACGGTTCGAACTTTTTCGCAATCGCCAGCCACAGCAGCAGCAGGCTCACCAGCAGCAT
+NODE	1182	13	549	549	0	0
+TGATTGCCGCGAA
+TTCCAGCGCGGTC
+NODE	1183	7	2667	2561	0	0
+ACCCGCG
+TGGAGAC
+NODE	1184	4287	275332	270529	0	0
+TTGAGCCAGTACATAGACTCCCGATCTGCAGGTAGGGGGGCGCCAGAGCGAATAACCCGAATACTGTTCTTTTGCCCGGCATCAAGGCGAAAAAGAGGCGGGGTGATAATAAACGCCTGCTTATTTGTGACCTGGGGATCGGCAACCGATAACCATGACTGAACAAGATTCGCTTTGCTGTCTTTATTCTCTACATTGATTGACGACTCATCATTATTGCCGTCGAAAACCAGTCGGGTTCCGCCAACAACAATGCTGGCATGGGCAACATGGCTTGTCAGTAATACGACCAACACGGATTTCTTTATGTGTTTCATTTTTTACTCTGTAAAGATGTTTTACGCTATGGACTGGCATCCTGCCTGTCCACATCAGGATGAGAATGCCTTACTGATACGAAACGGTATACGTAACCTGAGTGCTAACATCTCCACCGGTTACGGTTGCGGAACCATCGTTTGCCATGGCGGCGTAATAGGTAAAGTCTGCTTT [...]
+ACAGGAAATTAGCTGGCGTTTGTAAGCATATTACGCTTCGCAAATTTACAAAATTTTAACGGATATCACTGAAAAAGCATTTTTGATTTCGTAAAAGACGCTACACTATTGCGTATCTGTACTATTGCTGTTTATGTTAACAGAACATCGTTATCCTGCTGTTTATTTAGGATAATTTAATTTAAAATAGATCCTGTTCTTTGGATTCATCACATTTATTAGTTGGCTTACGTAACTAGTTGGAATATTGCAAATTTGTGATGAAAGCTAGCATTTAGCTACGATGATTTCATCAAACTGTTAACGTGCTACAATTGAACTTGATATATGTCAACGAAGCGTAGTTTTATTAGGTGTCCGGTACGTCTTAGCCTGTTATGTTGCTGTTAAAATGGTTAGGATGACAGCCGTTTTTGACACTGTCGGGTCCAGAGGGAAAGTACCCACGACCAAGCTAATGATGTTGTTGACGTTGATGGAAAGTGCATCAAG [...]
+NODE	1185	2249	110604	109971	0	0
+TAACTGTTCGCGGTAAAAGCGCCGATATTCATTATCAGGTCATCGTTGATTGCAAAGCCGGCAAGGCGGAATATAAGCCCCGCTAGCAGCGTAATTTGCGCTTCTTTTGCCGGAACAGACAATTCCTGACATCCCCTCAGGTACGCTTGACCATTATTGGTCTGTATTTGAGGGGTACTATGGCTAACTGGTTGAACCAATTACAATCACTTCTTGGGCAAAAAGGCGCTTCCGCATCGCCTTCCGGTGAACAGGGGTTAAATAAACTGCTGGTTCCCGGCGCGCTGGGCGGTCTGGCTGGACTGTTGGTCGCCAATAAGTCTTCGCGCAAATTATTAACCAAATACGGTACTGGCGCTTTGCTGGTGGGCGGCGGCGCGGTGGCGGGTTCCGTATTGTGGAATAAGTACAAAGATAAAGTACGTGCCGCGCATCAGGGGGAGCCGCAATTCGGCAGCCAAAGTACGCCGCTGGATGTTCGCACTGAGCGAC [...]
+GTCATTGAAGAATAGCCGTAACGCAGCCGGGAGGTCTCAGGTTCGGGATTATAGGCAAGCCAGGTCACGTAAGCCGGATCGTCAAAGGCGATGCCTATCACTTCACGGGTTTTACGGTTAATTTGCCGCAGGCTGGTAAGCCCCCGTTGACGCTCTTCTACTACTAACCAGTCGGTAAACAGGGTAAACCCTTCCAGCATGATATGCTCGCGCGGAGGGATCAGCTCTTCCCAGGCGTTTTCATTGCGCACGCGGGTACGGTACAACCCAAAGTTTTTACCGTTCCGGTTAGAACGCAGGTAAAACTTATGTTGATAGTGATCGAGACTATATTCATGGTCTTTGCGGCGCGGTAAAAATGAAAACGGCTCGGCATCGGCCAGTTCCGCGTCAAGTAATAGCACTTCGCTAGTGGTGGCGCTGGCAAGATGAATCACCACATAATGCTGCGAAGTGGTTTTATGCAGGCTGACATAAAAGGTATCGTCTTTC [...]
+NODE	1186	17	870	870	0	0
+TACTTAAACAGACGGAA
+ACAAGGTATCTGGCGTC
+NODE	1187	1513	88647	87829	0	0
+AAAGCGGGTAAGATAGCAGGCGATTAATACATCACTTTATGACCATACTGCTCAAGAATACCCTTTACACGCTCCATGGTCTCTTTTTTAGGCGGCTTCACGCCATCCAGTTTATATTCTTCGCCCATTGCCACCCATTTATGTTTGCCCAGCTCATGATAGGGCAACAGTTCGATTTTTTCGACATTACCCATATCGCGGGTAAACTCGCCCAGGCGATGCGCGGAATCATCGTCGTCAGACCAGCCGGGAACGACAACGTAACGGATCCAGACCTTCACATTTTTCTTTGATAAATACTGCGCGAATTCCAGCGTCCGGTGATTAGAGACACCGACCAGATTCTGGTGGATCTCATCATTCATCTGCTTGAGATCGAGCATCACCAGATCGGTAACGTCCAGCAGTTCATCAATCACCGGGTCATAACGGCGCACAAAGCCGTTGGTGTCGAGACAGGTGTGGATACCTTCTTTTTTACAGGCGCGAAAC [...]
+CGTGAATGATTAATTTCATAGTGATGATGATTACCAAAACTTAACGTAACTGGCATAATAACTCCCTTGATTATTTACCGCGAAAGCAAAATCCAATCCGTTGCTCTCATTTTTTGATTAAAACCACACTCTATTTAAGAGATTGAATCAGTCCGGGTTTAGAAATAACATCAGATTTACACCTGATTGCACGTTGAATGCGACGCCAGGCACTGGACAGGCATAACGTTCTTTGGACACATCTGAATTATGTTGAGAATTATTTTCGTTCTGACCACAACAAAACGGCGCCAATCATTTGAAAAAAGAGGCGGATCATAAACAGCAAAACCAGGGCGCTATGAATGATACACTTACAGTATGTATTGCGGTTCGGGCGTTAAACAGAGGTACCGGGCTGATGAATGAGCCAGAATTTCTGGCGGTGCAAGTTATGCAGCATAGATTTGCCGTATATTTTATAATGAATAGAGGTAAAATAGCTCCATTGCA [...]
+NODE	1188	549	31632	31446	0	0
+TGGTGTTGATCGCAACGATCCTCGGCATGATCTTTGAGAAAAAGATCGGTGTCAGCCTGGCCGTGACCGGTTGTATTGGCGCTCTTGTGCTGGTAGTAAGCGGCGTACTCACGGAAAAACAGGCCTATAAAGCCATTGATTCACAGACTATTTTTATCTTTGGCGGCACACTGGCGCTGGCAAAAGCGCTGGAAATGACCGGGGCAGGCAAGCTGGTTGCGGACTATGTAATCGGCATGCTGGGGCAAAACTCCTCACCGTTCATGTTGCTGATCGCCGTTTTCGCCTTATCCGTTGTGATGACCAACTTTATGTCCAATACCGCAACGACAGCGCTATTGGTGCCGGTGAGTTTGTCCATTGCCGCAGGCATGGGGGCCGACCCGCGTGCGGTTCTGATGGCGACGGTCATTGGCGGTTCCTGCGCCTACGCAACCCCTATCGGTATGCCTGCCAACATGATGGTGCTCTCCGCGGGTGGCTATAAATTTG [...]
+TAGTCGACAAATTTATAGCCACCCGCGGAGAGCACCATCATGTTGGCAGGCATACCGATAGGGGTTGCGTAGGCGCAGGAACCGCCAATGACCGTCGCCATCAGAACCGCACGCGGGTCGGCCCCCATGCCTGCGGCAATGGACAAACTCACCGGCACCAATAGCGCTGTCGTTGCGGTATTGGACATAAAGTTGGTCATCACAACGGATAAGGCGAAAACGGCGATCAGCAACATGAACGGTGAGGAGTTTTGCCCCAGCATGCCGATTACATAGTCCGCAACCAGCTTGCCTGCCCCGGTCATTTCCAGCGCTTTTGCCAGCGCCAGTGTGCCGCCAAAGATAAAAATAGTCTGTGAATCAATGGCTTTATAGGCCTGTTTTTCCGTGAGTACGCCGCTTACTACCAGCACAAGAGCGCCAATACAACCGGTCACGGCCAGGCTGACACCGATCTTTTTCTCAAAGATCATGCCGAGGATCGTTGCGATC [...]
+NODE	1189	64	23564	23033	0	0
+ACAGGTTTACCTGTGTGACTGCGTACCTTTTGTATAATGGGTCAGCGACTTATATTCTGTAGCA
+ACAGGTAAACCTGTGCTCCCACTGCTTGTACGTACACGGTTTCAGGTTCTTTTTCACTCCCCTC
+NODE	1190	5302	302921	297510	0	0
+TGATGTTCCTCAAGCCGGGAATGCAGGTACCGGTCTCTCAGTTGATACGCGGCATCAATCTGCAATCCGGCAATGACGCCTGTGTGGCGATGGCTGATTTCGCCGCCGGTAGCCAGGATGCTTTCGTCGGGCTGATGAACAGCTATGTGAACGCGTTGGGGCTGAAAAATACCCACTTCCAGACCGTACACGGCCTGGACGCCGACGGACAATACAGTTCAGCTCGCGATATGGCGCTGATTGGTCAGGCGTTAATTCGCGATGTGCCTAACGAATATGCCGTTTATAAAGAAAAAGAGTTCACCTTTAACGGCATTCGCCAGTTAAACCGTAACGGTCTGCTGTGGGATAACAGCCTGAATGTGGACGGCATCAAAACCGGCCATACCAGCAAAGCGGGCTATAATCTGGTCGCTTCCGCAACCGAAGGCCAGATGCGATTAATTTCCGCCGTGATGGGCGGACGGACCTATAAAGGCCGTGAAACAGAAA [...]
+GCAAGAATCCCAAAGTATTGATGCCGGAACCGTTATCGCGCCTGTGCTGGACGTGGAGGGGGTTAAGGTGGGGCTTATGACCTGTTATGACCTGCGCTTTCCTGACATGGCGTTAGCGCTGGCTTTACAGGGGGCTGACGTATTGGCGCTGCCGACGGGCTGGGTTCGCGGCCCGTTGAAAGAGCAGCAGTGGTCGACGCTGCTGGCGGCGAGAGCGCTGGATACCACCTGCTATATGATTGCGGCCGGGGAGTGTGGTAATCGTAATATTGGTCAAAGTCGTATTATCGATCCGTTGGGGGTAACGATAGCCGCGGCAGCCGATCGTCCGGCGCTGATCGTCGCGGAAATATTCAGAGAACGAATAGACCAGGTGCGGGAGCAACTTCCTCTTTTGCAGCAACGACGATTTGCGCCACCGCAATTATTATGATGTTTTTTTACGCAAAGCTTGATTCACCTTGTTACAGATTGCTATTGTGTGCGCGCGTC [...]
+NODE	1191	411	18760	18760	0	0
+ATTAACGCAGCCAGTATCCGCGGCCAGCGCCACGGCATCAGTTCTTCAAGCAGCGTTCCGCTCGCCCACGTCCAGCCGTGCGCGTCGCGACCAAAAGAGAGCGCGCCCCATGTTGCCAGCAGCAGGAGCACGCCACCGGCAACGGCAAAAGCGAGGACATGCCGACGTTCCGCCGCCACACGATCGCTGGCGTTCATATCCGGCGCGCTCATGCTTTTAAGCCGCGGCAGCAGCCACAGGAGCAGCGGCGCGCCGATTAGCGCCGTCACTGAACCGGTGGAAACTTCCATCCATACGCGGGTGAGCCAAAGGATAATCTGATCGGATAGCCACAAAATAAGCGCCCCAATGAGCGGCGCCAGCATCAGGCGCGCCAGCAGACGTCTTGCGCCAAGCATTTTCGCCAGCAGC
+TGGCGCCGCTCATTGGGGCGCTTATTTTGTGGCTATCCGATCAGATTATCCTTTGGCTCACCCGCGTATGGATGGAAGTTTCCACCGGTTCAGTGACGGCGCTAATCGGCGCGCCGCTGCTCCTGTGGCTGCTGCCGCGGCTTAAAAGCATGAGCGCGCCGGATATGAACGCCAGCGATCGTGTGGCGGCGGAACGTCGGCATGTCCTCGCTTTTGCCGTTGCCGGTGGCGTGCTCCTGCTGCTGGCAACATGGGGCGCGCTCTCTTTTGGTCGCGACGCGCACGGCTGGACGTGGGCGAGCGGAACGCTGCTTGAAGAACTGATGCCGTGGCGCTGGCCGCGGATACTGGCTGCGTTAATGGCGGGCGTCATGCTGGCGGTGGCGGGCTGCATTATTCAGCGTCTGACCG
+NODE	1192	8	2105	1700	0	0
+TTTGACTC
+GTGTCCAA
+NODE	1193	20	4784	3761	0	0
+GCTACGCTCGCCCTTCGGGC
+CCGGTTTTTGCGCGCTGTCC
+NODE	1194	36	9005	8445	0	0
+CCAAAACGCGTTAGCGTTTTGAACGCCGCTAGCGGC
+GACCAAAATGGCAAGTAAAATAGCCCTAATGGGATA
+NODE	1195	3	650	417	0	0
+GGC
+CAG
+NODE	1196	4	1036	486	0	0
+CGAG
+CGCG
+NODE	1197	6	1431	654	0	0
+TCAAAC
+CGCTAA
+NODE	1198	142	4188	4188	0	0
+TTGGCATGGTACTGGGTAATGCCGGTACCGCCACCGGGGCCTATGCGAACGCGTACCGGCTGGACCCGAAAAACCGCGATGCGGCGCTGGGCTACGCGGAGGCGCTGACGCGCTCGTCCGACCCGGAGGATAACCGCCGCGG
+GCCCAGCGCCGCATCGCGGTTTTTCGGGTCCAGCCGGTACGCGTTCGCATAGGCCCCGGTGGCGGTACCGGCATTACCCAGTACCATGCCAATGCGCCCCAGCATGAGCCAGCCCTCAACATTGCCGGCATCATTCTGCAGG
+NODE	1199	165	5220	5220	0	0
+CTTCAGCATCATCTCCCAGGCCGCCACCGCCTCGCCGAAACGCTGCTGCTCAAAGGCGCTGAACGCATACAGGCTTAACACCCGAATATCCGTGTGGTCACGGCTCACCAGCCGGCGCAGCAGCTCCCCGCCGCGGCGGTTATCCTCCGGGTCGGACGAGCGCGT
+CCGGCTGGTGAGCCGTGACCACACGGATATTCGGGTGTTAAGCCTGTATGCGTTCAGCGCCTTTGAGCAGCAGCGTTTCGGCGAGGCGGTGGCGGCCTGGGAGATGATGCTGAAGCTGCTGCCGGCGGGTGACGCCCGGCGGGCGGTGATAGAGCGCAGTATCCG
+NODE	1200	2398	125868	124908	0	0
+TCCGGGCGGCATACTGCTGACATTCTCTTGCTCCGGACTGATGACCAGCGATTTATTTCAGAAAATCATTGCCGATGCCGCAATAGATGCCGGTCGTGATGTACAATTTATAGAGCAGTTCCGTCAGGCCGCCGATCACCCGGTGATCGCCACCTACCCGGAAGGGCTGTATCTGAAAGGGTTTGCCTGTCGCGTCATGTAACTTGAAAAGTGGAATAGTATCCTCATATAAAGGGTATCTATTTCCCGGGAGGTGACTATGATAGCCAGCAAATTCGGTATCGGCCAACAGGTCCGCCATTCCCTGTTAGGTTACCTCGGAGTGGTCGTCGATATCGACCCGGAATATTCGCTTGATGAACCGTCGCCTGATGAACTGGCGGTTAACGACGAACTTCGCGCCGCTCCGTGGTACCACGTGGTAATGGAAGATGATGATGGTCAGCCAGTGCATACTTATCTGGCCGAGGCCCAGTTGCGAAGCGAAATGCG [...]
+TGGATGATAAAGTCCGCCGTTGAGACGTTAGTGGCGACAGGGATATTCCATACGGTGGCCAGACGCAGTAGCGCTTTGACATCGGGGTCGTGCGGTACCGCGTTAAGCGGGTCCCAGAAGAAAATCAACACGTCGATTTTCCCTTCTGAAATGAGTGCGCCAACCTGCTGGTCGCCGCCCATCGGGCCGCTCAGCATCGCATTAACGTCCATACCGGTTGCGCGCTGGATCAGATTCCCCGTGGTGCCGGTTGCATAAAGAACGTGTTTTTCCAGCAACGGCTGATGGCGTTCCACCCAGTTCATTAACATCTGTTTGCAGTGGTCGTGAGCAACCAACGCGATATGTTTGCGCGTCGGCAAGGTGCGAGTCGTCAGTTCCATAATTCGATTCCGTAGTTAACCTGTCTACAGATTACTGGAAGCGCTTGATGCTGCAAGAGAAAGACAAAAAAATTGCGCGCTGGGACAACTCATATCAAGAGGGCGGCTG [...]
+NODE	1201	1670	105625	101774	0	0
+GTACCTGCCGGACGGGTACATATCGTCGGCAAGGGCGATACGGTGCCGGTGGCGGATAACGGCAGTAAAGCCGGGCGGGCGAAAAACCGTCGGGTGGAAATTCTGGTAGTGGAGTGAATGAATGATGAAAAAATCAACCTATGATGTGTCTCATCATTCGGCAGTATGTGGCGTGACGGGGGATTATTATCGGATCTCAGCGACATATCACATAAAACGATCTGTTCGTGTTTTTTTGATCATTTTATGTTGTTTATTACCCGGTGGCGTTTTTGCCGGGTCCCTGATTAACGCAGGATTCATTTCCCCCGATAATGTCAACCTCAGTATACGGGATTTTCTGGGATTTTATGCCAGTGATAACTTACAGGAAAAAGATAATACACTGATGTATGTGTTGGGGGTAGCGGATGCCACAGAAGGTAAGACGTGGTGTGGATATGGTCAGGTTGACAGTATAACAATAAACCATACTGTGCTGGCCTGGCTTGA [...]
+GAACGCCCACAACTGCCAGCGCGCGCCGGGAAAAAAGCAGACTAAGAAATTTTTGCATTATATTTCGACTCGCCACCCAATAATCAATATTTTAAAATTCCCTGAATAAAGTAATATAACCATTAAATCTTACAGAACACTCATCAGCGTTCATGAAGCTGGATGCAATGAAAATATCTTTTTCTTTATCTTTGTTAATATAGGTATATTTTGCCACGATAGATTTAACCTGATTTTCATAGTAACTATCGAAATAGGATTTTTTATCTAATATTGCCACTTTATTTTTGGCCTTATCTTTTTCATAATCCATCCTGGCCAGAGATTCTGCATAGACCTTAGATACAGGCGAGATATCAAGAATCTCTACCTTTGTTTTATCCTTTATAATAGTAGCGACATCTATATTCAGGTCATTTTTTATGGCATCAAATAATGATGACTCCATTGATGCTCCAACCGTAGCACACCCATAATCGTGCGCATAAGAAA [...]
+NODE	1202	1223	59083	58273	0	0
+GTCAAGGCCAGCCGGAAATGCTCCGCCCCCGCCCCCGGACTTTCGCCTGACATCGCGGCAGCGCTTAAGGAAGTGATGCCCGGCGCGGGGGGGAATTCCTGTCTGGAGCGCTACGAATATGCCAAACATGGCGCCTGTTTCGGGTTTGATCCCAATGCCTATTTCGGCACCATGATACGGCTGGATAAGGCGATAAAAGACAGCGCGCTGGGGCAGTTTCTGGCGGATAATTACGGCAAAACCGTTAGCCGCGCTGAGTTTGATAGCGTCGTCGCACAAATGTGGGGCCAGGATAATGTCAAAGCCGTTAAAGTAAACTGCCATGGCAATCCCGCCTATTTAACAGAGATTCAGTTTTCATTAAAGGCGTCGATGATTAACGCCCCGCTCTCCTCTGCCTCATTCCTGCCGCAGCCGCATCCCGGCAACTGCGGGAAACAGTTTATTATCGATAAAGCCGGTTATTGACGAAGCAGAGGTTTAAAACCGTAG [...]
+AACGGAAAGAGGATGCGCAGGCATCCTCTGTGTAAACGCATTAACGCTTATGCAGATGGTTTAACGCAGGAAGTCGCCCGCGGCTTCAGGCTGATATTCGAGTTCCAGCACTTCGAGATGGGTGGAGGCGCCGCCCGGCAGTTCCCAGTGAATGGTGTCGCCGACGCGCAGTCCCAGCAACGCCGCGCCGACGGGCGCCATTACCGAAAGCTGGGTACTGCTGTCCGTCATATTGGCGGGGTACACCAGCGTCCGCACGCGTGTTTCACCATCGCTCAAATTGCGGAATTTAACGCGGCTGTTCATGGTGACGACATCGTTCGGCATCTCTTGTGGCGAACACATTTGCGCGCGATCCAGTTCGGCGTTGAGCGCGTCGGCAATCGGCAGATCCGCATACGCAGGCTGTTCCAGAAGACGATCAATACGTTCGGCGTCAAGGTCGTTAATGATAATAGTGGGTCTGGACATTTCTTACTCCATGTCATCGAT [...]
+NODE	1203	988	54710	53865	0	0
+ACATTGTGACGTTGATCCTCGGTATTACCGTGGCGATGGAGGAGAAAAATAGCCAGCAGAAAGAGATGGACGCCAGTTCTATCGATAACGTCAAAGCGTCGTTAATGGGGCCGCTGGCGGGTATTGGCGACTCTTTTTTCTGGGGAACATTGCGTCTTATCGCCACTGGCATCGGTACCAGCCTGGCGCTGAAAGGCAATATTCTGGGGCCGATTTTATTTCTGCTGGTGTTTAACGTACCGCATATTCTGGCCCGCTGGTTCTTTACCCGCTGGGGCTATGTGCTGGGAACCGGCGTACTGCAACGTATTCAGCAAAGCGGAATGATGGAAAGCCTAACCTATGGCGCCTCGATTATCGGTCTGATGGTGGTTGGCGCGATGACGGCCTCCATGATTGATATCACCATTCCCATTACGTTTGGTACGGGAGAGGCGAAAACCCATGTCCAGGACATTATTAACGACATCATGCCTTGTCTGCTGCCGTTAA [...]
+AACTTTACGCATCGCCTCCAGGGTAGAAGCGCTTTTCCCGCTCTGGGAAATAGCAATAACCATATCGGCTTGCGGATCGCTATTCTCATACTGGCTAAAGGTGTACGGCTCTTTAATATCGATAGAGATACCGCAGCGCTCAAAGAAATAACGGGCGCAAAAGGCGGCATTCAACGACGATCCGGTGGCTAATATCAGGATTCGCCGTAACGTTTTTTGGCTGGCGAACCGCGATACTTCTTCCAGCGACTGGCGATGGCGGCGAATAATATTCGCCAGGACGTCAGACTCTTCGTTAATATAGGTCAGCATGGTTGGTGACATTGTGTATCCCTCTTAAAATAACCCTATCCAGGAACCGAAAATTCCCACCAGCGCAATACCGCCAATGATGGTTAACGGTTTCACTTTTTTCCCTAACAGCCAGTACACAATGGCGAAGCTAATTAACGGCAGCAGACAAGGCATGATGTCGTTAATAATGTCCTGGAC [...]
+NODE	1204	2256	159187	158875	0	0
+GCGGCTGATTTCGCCGCAAAGGTGCGTTTGACAATTTTAAAACGGACCGGACAGAGAGAGCCTGCACCTGAATATACTGAGGTAGCCCGTCCCTCCGGGGCGTGCAGATGATCCCGTCACCAGAAGATTGCGGACCTCTCTGAAAACCAGTACATTACGCGCGGGTGCCTTTCGGCTGACGGCTGGAAGGATTACCTGAAGGCCGGATGTGGAAAGGCCCCGGAAAACATCTCTGTTTAGCCGAGGCCCTAATCTACATACCTTTAGCAAGTGGAAGGTTAGCGCCTCTTTGAAAAAGGAGCAAGCGCTATGCCGCAAAAAACGATCATCGTGAGCATTTTATGCTTAACCATGTTGTTGACCGTCTGGATGATACATCGTTCACCATGTGAATTCAGACTTAACATCATGTGGTCAGAATTTGCGGCGTTCTTGCAGTGTAAACCGTAAGAAACCGCAGCGGGGGTGAAAGCCCCCGCTATCCGGTTGCCG [...]
+AAGCGACAGTTAATGCAGATGCAGGTTAACAAAAAGAGAAATCTGCCGTCAACCATATGAACATGTTGATTTCATTATGAATGTGTTGTTTTAATATAAATTAATCAGTAACTTCATAAAAAGAATATAAGAAACAGATAATGCATGTATTTACATGCATATCAGCACAATGATAAATTACCCCCCTGAAAACACGATAAAGGTATAATTATGGAAGTTTCCGTTATATTTTTCTGGGTTATCACTGCTCTTATTGCCATCTTATTCTTAAAATCAGCAATAACCTACAAAATAAAAAAGCGAAATAAAACAGACATAGTGTTATATATATTGGCATTTTTATCAGCCGGATATACATTCCAGTATATTTACAATGACAATATATTTTCAGCGCTAAGGAGCATTGGCCTGTTTGTTACTCTGATAGTACTGAACATAGTATTTAATCTCTTGTTTAGTCTCTTATGCATTCTCTCGAAAATGATATTAATG [...]
+NODE	1205	2598	126750	124999	0	0
+AATCCGTAGGCCAGATCCTGAAACGCTGACCAGACGCCGAGGGCCGTACCACGAATCTCCGGTGGCACTCTGCGCACAACCTCTACGCCCAGCGATGGGAACATCAGCGAACAGCCGCAGCCGGTAATCGCCGCGCCAATCAGCGCAGCGCCTGCTGACGGAGCGGCCCACATTACCGCCAGTCCGGTCCCCTCTACCAGTAGTGAAAAGGTTGCGACCGTGGCGCCGCCGTAACGGTCGGGAAATTTGGCGCAGAAAAAGCGGACAGCGATAAACGCAATGCCAAACAGCGTCATCGCAAAACCGGTGTTATCCCAGTGACGCTCGTTGAACCAGAGGGCGGTAAACGCGCTTAGGGTGGCAAAACCAATGCCCTGGAGCACAAGCCCTGTTCCGGGCCGCCACACCAGGCCGACTACCCGTAGTACTGGCACGCGGGGACGGGCTGTTGGGATATTCCCCGGAATGCCATAGATGACTCCACTGGCGATG [...]
+CGCAAAAACACGGGCTGCGGCGGGCACTGGATATCGACTACCGCCCCGTACTGTGGGGCCTGACGTCGCTAGGAGACGGTGAAACGCGTTTCATCGCCTCATCACAGGTTACCGAACAGCTCCAGCAGGTATTGCGCCATTTCGATCTGATCGTTGGGACCGAAGAAGAATTCCATATCGCCGGCGGCAGTACCGACACGCTGACCGCCCTGCGGCGCGTCCGTCAGTTGACCCAGGCCGTACTGGTGTGCAAACGCGGCGCGCTGGGCTGCTCAGTCTTTGAAGGCAACATCGCCGATGACTGGTCGCAGGTGAAGATACATAGCGGCGTTCGCGTAGACGTTCTGAACGTTCTGGGCGCGGGCGATGCCTTTATGTCAGGACTGCTGCGGGGATACCTGAACGATGAAAGCTGGGAGCAAGCCTGCCGTTATGCAAACGCCTGCGGCGCGTTAGTGGTATCGCGCCACGGTTGTGCCCCCGCCATGCCAA [...]
+NODE	1206	4495	220120	218284	0	0
+GATTAAACTGACTCATTAAGGTCGCGGATTCAGTATTCAATACCTTCAGTCGCGCTTTATCCTCTTCGGCAAGCCGCGCGCCTGCCAACACAAAACGCTGATGGATAACATCGACCAACCGTAGCGACTCATCATCCAGCCCCAGTGAGTGACGCTGTTGCCAGACGGTATCCACGCGAGCGAATAACGCGCTATTCAGATAAATATCGTTGGAGAGCGCCGCCAGCTCGGCAGAAAAGGCCTCATCCAACCGCTGGAGTTCATCGTTAGTGTGTGCGGCCGTCATCGCGAAAAAAACGCTGGTGACGCGTGACAGAAGCGCCCCGCTTTGCTCCAGCGCCAGAAGCGTATTCGTAAAGTCAGGGGCCGCCGGATGATTGACGATGGCCTCGATTTCCACGCGTTTTTGCCGCACGCCCTCATCAAAAGCAGGACGATAATGGCAATCTTTGATCCGATCAAAACGCGGTGCCTGATAAGGCAACATACTCT [...]
+ATTCCTGGCTGCCCATCTTAATTATGCTGGTGCTCTACTCGTGTATTGGTCTGATTTCTGCGTTGTTGATGCCGGAGGTCAGAGATCGCGATCTGAGCTTGCCTGAGGATGCGGCGGAAGCGACAGCGGCAGAGAAGTTACGCCACTCCGTAACCCAGACGAGTTAAATCGTGTCGACGGTATGGCCGGAACGCTAATGCGGTTTCGGCCATGCTGCCCGGTCACTTTTGTTTAATTAGCGTAAATCCAAATGCACCAGGGCAGGCGTTACTCTGCGACTGTTCCGCTTTCAGAATATAGAGGTTATAAAATGCAAAACAGGCTTTTATCGGCAAAGGCGACGCTTCCTGATTACGATCGCGCGGCGCTGGCGGCGCGGATGGTCCATCTCGGTTTTGGCGCGTTTCATCGCGCGCATCAGGGAGTTTATACAGATATTCTGGCTGCGGAGCAGCATAGCGACTGGGGCTATTATGAGGTTAATCTTATTGG [...]
+NODE	1207	1432	78284	77727	0	0
+GTACCCCGGACATCCGCATTGCAACGGTGACTAACTTCCCGCATGGCAATGATGACATCGATATTGCGCTGGCGGAAACCCGTGCGGCGATCGCCTACGGCGCTGACGAAGTGGACGTGGTATTCCCGTACCGCGCGTTGATCGCCGGTAACGAGCAGGTGGGTTTTGACCTGGTAAAAGCCTGTAAAGACGCTTGTGCCGCAGCGAACGTATTGCTGAAAGTGATTATCGAAACCGGCGAGCTGAAAGAAGAGGCGCTGATTCGTAAAGCCTCTGAAATCTCCATCAAAGCCGGTGCGGATTTCATCAAAACCTCTACCGGTAAAGTGCCGGTAAACGCTACGCCGGAAAGCGCGCGCATCATGATGGAAGTGATCCGCGACATGGGCGTTTCTAAAACCGTTGGCTTCAAACCGGCGGGCGGCGTACGTACGGCGGAAGACGCGCAGAAATTCCTCGCGATTGCAGACGAACTGTTTGGCGCTGACTGGG [...]
+CGCTTCAGCAAGGGCTTCAGAAAGTTCATAGGTCGGCATAAACGCGCCGCTACCGACTTTGACGTCCATTACCAGCGCATCCAGCCCTTCGGCCAGTTTCTTGGCGAGGATGGAACCGGTGATCAGCGGAATAGAGTCCACCGTCGCGGTAATGTCGCGGGTGGCGTAAAAACGTTTGTCCGCCGGTGCAAGCGAGCTGGTTTGCCCAATAATCGCCACACCCACGTCTTGAATAATTTCGCGGAAACGGTTGTCGTCCGGGAAGATATCAAAGCCCGGGATCGCTTCCAGTTTATCGAGCGTACCGCCGGTATGTCCGAGGCCGCGACCGGAGATCATCGGCACATAACCGCCGCAGGCCGCTACCATTGGCCCCAGCATCAGAGACGTCACGTCCCCTACGCCGCCGGTCGAATGCTTATCGACAATCGGGCCATTGAGATTCAGGCTTTTCCAGTCAAGGACAGTACCGGAATCCCGCATCGCCATGGT [...]
+NODE	1208	6321	283029	280388	0	0
+CACCTGTTGGCGCTTTTCGGCAGGAAGCTGGAGATAATCCAGCACTTCATCAACCAGAAGCTGCCCTTCGCGATCCGGGTCGCCAGCGTGAATAATTTCACCGGCTTGATGCAAAAAGCGCTTAATCACATTGAGCTGTTTGGTGACGGAAGGACGAGGCTGAAGCTGCCATTTTTCCGGCACGATAGGCAGGTCAGCCAGATTCCAGCGCGCATAACGGCTGTCATACGCATCCGGCTGCGCCTGTTCCAGCAAATGACCAATACACCAGGTGACGACCTGCCCGTTTCCGCACTCAATAAAACCATCGCCTTTACGGTGCGGTTTTGGCAGCACATCCGCAATGGCGCGCCCCAGACTCGGTTTTTCGGCAATAAACAACCGCATCAGGTTAACGAATCTCAACCATAGCGCGACCGCCGCGGGCCTCGACCAGTTCGCCAATCGCGGTCAGATCGATACCAAATTCCGCCGCGGTGGCTTTAACATCGT [...]
+CGGATAAGAGGTAGCCGCCATCCGGCGGTTTCATTGCCAATGCGTTGTGTTTACCGGGCCTGCTCATTGCTGCCAGGCACAGGCCCGCCATATTTTTACGAATAACGCTTAATGTCCAGCGAGTCCGCCAACTGTGTCGCTAACTGGTTATTGTCATCGGCGGCCTATTCCCGGAACTTGCGCCAGCCAGCCCGCGCTTTTTAATCTGTTTCGTTGGAAGCGCTCTCCAGCCTGCGTTGAGCTTTGCCTGGTAGCGACGCTGACGTGACGTATCCGGCCCAAAGATCTATGCAATGGTCTCACCGTTGCGTGATGTATTGACCGGATACGATACCTGCTCCGCTACCTAGCGACAGCCTGGCCCTGCGTCTCTTCCCAGTCTGCCAGCGTATACAGCGTCGCGCCTGCCGCCGCCATCTCCATAAACGCGTGTGCGCTATCCTGCGGGTGAATATTCACGCCGCGACAGCCATCGGTGATAACGTTAACGGC [...]
+NODE	1209	12	501	501	0	0
+CGAAGAAATCAT
+TATCAAAAACCG
+NODE	1210	51	2710	2710	0	0
+CTGGCTACGTAGCTCAGTTGGTTAGAGCACATCACTCATAATGATGGGGTC
+GATGATTTCTTCGATGGCTGGGGTACCTGGATTCGAACCAGGGAATGCCGG
+NODE	1211	92	4393	4393	0	0
+TTGTCGTACTTCTTGCGCTCATTAGCAGAGCGTCTTTAAAACTGGCTGGGGTACGAGGATTCGAACCTCGGAATGCCGGAATCAGAATCCGG
+GTTTTAAAGACGCTCTGCTAATGAGCGCAAGAAGTACGACAATTGGGGTATCGCCAAGCGGTAAGGCACCGGATTCTGATTCCGGCATTCCG
+NODE	1212	2605	145823	142869	0	0
+AACCACCTTTGATAAGGATAAAGTGCCGACATGGTCGATCAAGGCCGATAAAGCCAAATTGACTAACGATCGGATGCTCTATCTGTATGGCCATGTTGAAGTCAACGCCCTGGTGCCTGACGCTCAATTACGCAGAATTACCACCGATAACGCGCAGATTAATCTGGTGACGCAGGATGTTACCTCGAACGATCTGGTGACGTTATACGGCACAACATTTAACTCCAGCGGACTGAAAATGCGCGGTAACTTACGCAGCAAGAACGCCGAGCTGATTGAAAAGGTTAGAACCTCTTATGAAATTCAAAACAAACAAACTCAGCCTTAATCTTATGCTTGCCGGCTCGCTGCTGGCCGCCAGCATTCCGGCCTTCGCCGTCACGGGCGATACCGAACAGCCTATTCATATTGACTCGGATCAACAGTCGCTGGATATGCAAGGCAACGTCGTGACCTTTACGGGCAACGTGGTGATGACCCAGGGCACGATTA [...]
+TATTGCACATGGCGGCATAGTGCTGGTTAATCTGTAAACGGGGAATACTGTCGCTATTAAGCTCCACCGTCCAGCGACCGTTATGCTTGCGTACCAGCACATCCGGGATAACGTACTCCGGCTCGCCGGTCTGGATCGATTGACCGGGTCTGGGATCGAGCGACTGAATCAGGTTTACCGCCTCTTTCAGCACCTCTTCTTTTAGTCGGGTAACGCGCATCAACGTGCGGAAATCGTGGTTGGCCAGCAGATCAAGGTGATCGCAGATAATAAGCCGCGCCTCTTCCAGCCACGGCGTGGATTTGTCGAATTGTGAAAGCTGGATCAGCAGACAGTCGCGAAGATCTTTTGCCGCGACGCCTACCGGATCAAAACGCTGAATGCGCTTCAGAACGGCTTCGACCTCATCGAGATCCACCTCTACATCGCCCATGCTTTCGCGAATTTCGTCCAGGGATACGGTGAGATAACCGGTATCATCTACCGCATCGA [...]
+NODE	1213	6359	414831	409845	0	0
+CTCAAGTATGGCCGTATTATATGTTCTGGGCTTGACTTAACAGGAAGTTGCCCACGTTTCTATGACGAATCTACCAGCCCTATGCCATCTGAGCTTAGTAAAGATCTGTTTAAAATACTGCCATTTTTTACTTTTATGAGAAAAAATGTGAGTGATTTAAATATCTTTAATTTATCAGATGATACTGCAATTCATTACGAGATTATTCCATATATTACAGCCTCGGAACTTGAGGATGAAATATATTACGATAAAATTGTCTAGATACTAGATAAATCATTATTTTGCGTTGCTTCGGCACGCATTTCTTTTTCTATAACATTTCTTTTTCTATAAAGTTAACTATTCTGGATTATAGCTATTATGATTAAAAAAATCATATTTACTGTTACTCCTATATTTTCAATTCCTCCACGTGGCGCGGCTGCGGTAGAAACCTGGATTTACCAGGTTGCAAAACGACTATCAATACCGAATGCTATTGCTTGTATA [...]
+AAGCCGCCGTTAGCGTCGAAACAGGAGGAATACAGAATCGCATCTTCCATGCCGAGGAAGCTTGCCAGCTTTTGCTCCAGCGCTTTGTGGCTGTCCTGGGTGCCGCAGATAAAACGCACGGACGCCATACCGAAACCGTGGCTGTCCATGCCCGCTTTTGCGGCATTAATCAGCTCAGGGTGATTCGCCAGCCCGAGATAGTTATTGGCGCAAAAGTTAATAACGTGGCTTCCATCCGCCACGGTGATATCCGCCTGCTGCGCAGACGTAATAATGCGCTCTTCTTTAAACAATCCTTCCGCCCGAGCGGTTTCCAGATCGTTGGTTAACTGTTTGTAAAAATCCCCACGCATTGCGATTCTCCAGACTGGGCAAATTTCAGCACATATTACCCAAAGCGATACGTTGATACGAGATGACGCGTCATCACTTCTTTAAAATGCAGCATAAATCACGCGTATCCTCACGGGTTATCAGTGAATGGATGAATAG [...]
+NODE	1214	51	3348	3348	0	0
+TTTCGCCTTCGCTTGGACGGCCTTCACGACGGAAGAAGCTGCCCGGGATAC
+ACCCTGATTGCGCGTCTGATTGACCGCCCGGTTCGTCCGCTGTTCCCGGAA
+NODE	1215	27	3839	3763	0	0
+TCGCGCCGATACCCCTAACCAGGGAGT
+GCCATTTTTCGCGCCTTCCATGCCGCT
+NODE	1216	1	1572	1572	0	0
+T
+G
+NODE	1217	1	1808	1808	0	0
+A
+A
+NODE	1218	3	5382	5382	0	0
+TAT
+ATA
+NODE	1219	2	3086	3086	0	0
+GC
+AT
+NODE	1220	1	1555	1555	0	0
+T
+C
+NODE	1221	51	2120	1493	0	0
+ACCGGAACCTGGCAGGCCGGTCGGGTGATACTGAACGAATTCCATATCACG
+TATCCTGATGACTGAAGGTTGCCGCGGCGAAGGCGGTATTCTGGTCAATAA
+NODE	1222	1	621	496	0	0
+C
+A
+NODE	1223	8	4772	3029	0	0
+GAGGACGT
+TCATTACG
+NODE	1224	12	5907	2821	0	0
+TCGAGTGCCCAC
+ACCAAGTCTCAA
+NODE	1225	813	51637	49707	0	0
+GGATGGTTAAACGGTTATTATACCACAAGTAGTAGCTCTGAGCTTATTGCTATTGAGATAGAAAAACACCTGGCTTTAACTTGCATTTTAAAAAATGTAATACGCAATCACCATAAACTTTATTCGGGTGGGGTATAAAATGGTAGTAAATAAACGTTTAATCTTAATTTTACTATTTATACTCAATACAGCAAAGAGTGATGAGTTATCATGGAAAGGTAATGACTTCACCCTTTATGCCAGACAAATGCCATTAGCAGAGGTTTTACATCTGCTCTCAGAGAACTATGATACGGCTATTACTATTAGCCCATTGATAACAGCTACATTTAGTGGAAAAATTCCGCCTGGACCACCGGTCGATATTTTGAATAACCTGGCAGCACAATATGACTTGCTTACCTGGTTTGATGGCAGCATGTTATATGTATATCCTGCATCGTTATTAAAACATCAGGTTATCACTTTCAATATTTTATCTACTGGGCGGTT [...]
+CAATACACTCACGACCCCAGGAACCACGACGGACTGATCGCGATATTGGTATTGGGTATCCATCGCAGTGGCATACTTAAGCGTGTATATACTTACACTCACCGCACTGTCTTTTCGTTTGATTAACGCATTATCCAGCACTGAAGCTAATTGACTAATACGAGTCAGACAGCTGGGAACACCGCTCACCTCCACAGCTCTGGTACCGGTAATTTCTTTAACCTCGCATCCCGGTGATGAAAGGATATTCTGGCTGCGTAAGTAATGAATGAACCGCCCAGTAGATAAAATATTGAAAGTGATAACCTGATGTTTTAATAACGATGCAGGATATACATATAACATGCTGCCATCAAACCAGGTAAGCAAGTCATATTGTGCTGCCAGGTTATTCAAAATATCGACCGGTGGTCCAGGCGGAATTTTTCCACTAAATGTAGCTGTTATCAATGGGCTAATAGTAATAGCCGTATCATAGTTCTCTGAGAGCAG [...]
+NODE	1226	914	51181	50770	0	0
+GTCAGGATCTGGGTATCATTAATAAAATCCCAGCCGTAGTAGCCCTTCAGACACAGGGTACCCTGGTTGGTTTTCCCCTGCGCCGCCTCAGCCCGGACGATTTTGCCGTTATCGACCACCAGATTGATTTTGCAACCTGATGCGCAATACGGGCAAACCGTGACGACTTTTTTCATCGGTTTCGCTCCAGTTAATCAAATCGCGCATACGCGCTGTCGCCCTCAGTATGCATGTTTTATGCCACTTTTTTAGTATGGGCTTTCCCTGATATTACGGGCGAATTTTGTTCAAAACCCTGACGAAAAACAGGCTATCGTCAGTTTTGACGTGTCGAAAGAAAATGCCGCATGACATTTATTATGGGGAGAAACGCTGAGCGCAGGCCAGATAGGGCGGAGCCGCCATCCGGCAATCTGCTCTGCCTGAAGTGGAAATTATCCGGATGGATAGACTCAAGGCCAGGGAACGCTTTGAGACTAACGCCAGGATAGA [...]
+AGCCGTCATCTTCGACGAAACCTACGTTCATTGGGCGGAAAATAAAACTGAGCAGACGCGTATTATCCTCTTTTGCGATATTGAGCGCCCAATGAAATGGCGCTGGGCGCAGAGCGTAAACCACTGGGTCGGCGCATCGTTGATGTCCGCCGCCAGTTCGCCAAACGACGAGAACGATCGCACCGGCGCGATTAATCGCATCTTTAAATACGTTCACGCAGCACGCGATGCCGGGCAACGGCTGAAAAAGAAAAACCGCACTCTCTATTACGCGCTGAAATATCTCGTTATTGCCGCTATTTTTGCCGCGATAATCCTTTTCAGCCTCCTCTGAAGCCGGGCCGCGGTATGGAACTGCCTGCCGCGGCCTGTTCTATCCTGGCGTTAGTCTCAAAGCGTTCCCTGGCCTTGAGTCTATCCATCCGGATAATTTCCACTTCAGGCAGAGCAGATTGCCGGATGGCGGCTCCGCCCTATCTGGCCTGCGCTCAG [...]
+NODE	1227	1482	77777	77501	0	0
+TGGTGCATTTTCCGTCGCAATAGTTTTGCTCATGATTTCTCCTGAATTACAGCGGTAATAGAATGTCCCCGCTCATTATAGGGAGCCGGGATCTCATAACCAACCCCCATTAGTTGGCCAGCACCACATTATGCGAAAACTCTTTTTCACAGTATTTGCATTTGAGGGCGATATCATTGGCGCGTTTTTTCACTGCAAAGCTGGAGGATACCGGTTCCGCGTGGCTGATGCAGTTGCTGTTCGGGCAAACCAGCACATTATTAATACGCTCTGGCAGGCTGGGGCGTGATTTCCCGACTACGTCGTAGTTGTCGATGCGGTTAACGGTGGCCTGCGGCGCGTACAGAGCAAGTTGGTTAACCTGCTCTTCGGTGAGAAAGGTGTTTTCTATTTTGATTAAGTCTTTACGCCCCATCTCGCCAGACGGGAGATTCAGACCGATAGTGATTCGCTGATCGGTCTCGGTCAATTTAAACAGACTCAGCAGTTTAA [...]
+AAATTAAAAGCCAACCCGCAGCCGGAGCTATTGAAACATAAAGTGATCGCCAGCTGCTTTTTCGAAGCCTCCACGCGTACCCGCCTGTCGTTTGAAACTTCAATGCATCGCCTGGGCGCCAGCGTAGTGGGCTTCTCCGACAGCGCCAACACGTCGCTGGGGAAAAAAGGAGAAACGTTAGCCGACACGATCTCAGTGATTAGCACTTACGTGGACGCGATTGTGATGCGCCATCCGCAAGAAGGCGCGGCACGTCTGGCGACGGAGTTTTCCGGTCAGGTGCCGGTGCTCAATGCGGGCGACGGTTCGAACCAGCATCCGACGCAGACCCTGTTGGATCTGTTTACCATCCAGGAAACGCAGGGCCGTCTGGATAACCTGCATATCGCGATGGTCGGCGATCTGAAATATGGCCGCACCGTGCATTCGCTAACCCAGGCGCTGGCGAAATTTAGCGGCAACCGTTTTTATTTTATCGCGCCGGACGCGCTG [...]
+NODE	1228	1518	83177	82162	0	0
+CTTCCATCTCAAGGCGTTCGAGGATATTAATCGGGTCGTTGGCATGGATGGTGGTCAGCATCAGATGCCCGGTCATGGCGGCTTTTATCGCCGTAATAGCGGAATCGTGGTCGCGGATTTCACCGTTCAGGATCCCGTCAGGATCAAGACGCAACGCTGATTTGATGGAGTCCACCCAGCCCTGCGCGGTATCCATGACGGCGGTCTGAATGGCACCGGGAATGCGCCCTTCCGGCGGGGATTCAATGGTGAACAGCCTGCGACGGGGAAGAAGAATACCGCCGGTGTTGTTGAAGCCGTACTGTTCAAGGTACGCCGCAGAGGCGGTTCTCAGCGTGGTGGATTTTCCTGAGCCTGTGGGGCCTGATAGCGTGATAATACCTTCAGGGCGCTGCAGAATGCGGCGAAGAGTGCGCTCCTGGTCAGGGTGATAGCCCAGCATACTGAAGGTCGGGATTTGCTGGCTGTCATCCTTGATCAGGCGGAGTACGG [...]
+CAGAACAAACAACTGCAGATTGAGCAGATTCAGGAAGAAACCGCCCTGTATGAAGCGATGCTGGCAAGAGAAAAAATTCGTCATGAATTGCGGACACTGGAACAGGGTATCTCCCCGGTTTCCGGTTCTGTCACGGGACATCAGCCGGAAAATGCGGCTGGCACCTCCTCCGGTTCACAGGCATTATCATCCCCCCGTCTGAAAGAAATCTTTGGTATTCACCCACAGCTTTCAGCACGCGTCATACTCCCCGGAGGAACTGAAACTGATGTCAGGGCCGGACAGGCATTACCCGGTACACTGTTCATGGTGGAACAAATCACACCGGACAGTGTGATTCTGGAATACAACGGCAACAGGCAGACGCTACGCCCGTGAGGTGCCATCATGCCAGAGACTATCGTACTGCCTCCTGAAGATATTCGTGATTTCGTCGCAATTCAGCATGACGCTGACGGAAAAATCAGGGTGAAAGTCGTCGAGGCGAAGAAG [...]
+NODE	1229	47	3319	3319	0	0
+CTTTACGCACCTCAAGCTCGATGCCGCGCTCGTTGAGCTTTTTAAAG
+CCACCGATCCGAAACTGAAAATGATGGATTTAATTGCCAAAGTGGCG
+NODE	1230	9559	564436	560378	0	0
+TGCGGGAAAACTAACAGGAATGACTGATAAAAACAGCCAACTGATCACTCGTTGCAGACGCGGGCCAAATGCCATCCCGACAAAATGCGCTACGCCGCCAGCGTGTGGAAAATGACGCCCCAGCACAGCAAAGACAATCGCAATAGGGAAAATCAAAATAATGAGCAGCGGCCATGCCCAAAGGCTGATGTCGCCTGCCGCCAGCGCAGCCAGCTCCGGAAGCGCAAAAACGCCAGTCCCTAATAATGATGTGGTTAACAAGATAACGCCCTGAACCAATCCAAGCTCTTTTTTTAGTTCATTCATCAGCTCATTATCCGGCGGCATTGTAACGTCAGGTGACGACAGACATTTTTAAGCGTATCACACACGCCTTTTCTTATAGCAGGATGTTCTAAACCTTGGGTAAACGTGAGATAAGTAGCGTTTTTACCGCTTTTTTCGCTCAGAAGAATTTTTTTTCATCTCCCCCCTTGAAGGGGCAAAACCCCA [...]
+TTCCCGATTGAGCGCGATCTGGTTGTCGATATGACGCACTTTATCGAAAGCCTGGAAGCGATCAAACCGTACATTATTGGCAACTCTCGCACGCCAGATCAGGGGCCGAATGTCCAGACCCCGGCGCAAATGGCGAAGTACCACCAGTTCTCCGGTTGCATCAACTGTGGTCTGTGCTACGCCGCGTGCCCGCAGTTCGGTCTGAATCCTGAGTTTATCGGACCGGCTGCGATTACGCTGGCGCATCGCTATAACGAAGATAGCCGCGATCACGGTAAGAAGGAGCGTATGGCGCAGTTGAACAGTCCGAACGGCGTATGGACCTGTACTTTCGTGGGCTACTGCTCCGAAGTCTGTCCAAAACATGTCGATCCGGCTGCGGCCATTCAGCAGGGTAAAGTGGAAAGCTCGAAAGACTTTCTTATCGCCACCCTGAAACCACGCTAAGGAGTGCAACATGACGACTAAACGCAAACCCTATGTGCGGCCGAT [...]
+NODE	1231	581	43005	38895	0	0
+CGGAGAAACGGCTCTACAACACCAGCCGGATGGTGATGACCGAGGCGGCGATTGACGGCGGGCTGACCCGCGACCTGTACGCCGCGCTCGGGGAGGAGCTGGACAACGGCGCGTGGGCCGTGCGCCTGTACTACAAACCGTTTGTCCGCTGGATATGGGCCGGGGGACTGCTGATGGCGCTGGGCGGGCTGCTGTGCCTGGCGGACCCGCGCTACCGCCGCCGTAAACCATTGCCGGAGGCCGGATGAAACGCAACGTACTGTTATTACCGCTGCTGATTTTTCTGCTGATTGCCGCGGCGCTGCTGTGGCAGCTGGCGCGCAACGCGCAGGGGGATGACCCGACGAATCTCGAATCGGCGCTGACCGGAAAGCCGGTGCCGGCGTTCCGCCTGGAATCACTGGAGACACCGGGTCAGTACTACCAGGCGGAGGTGCTGACGCAGGGGAAACCGGTGCTGCTTAACGTCTGGGCCACCTGGTGCCCGACCTG [...]
+TGCGCAGAAAGCCGGTTCAGGTACTGATGCTCGGCGCGGCAGGTCGGGCACCAGGTGGCCCAGACGTTAAGCAGCACCGGTTTCCCCTGCGTCAGCACCTCCGCCTGGTAGTACTGACCCGGTGTCTCCAGTGATTCCAGGCGGAACGCCGGCACCGGCTTTCCGGTCAGCGCCGATTCGAGATTCGTCGGGTCATCCCCCTGCGCGTTGCGCGCCAGCTGCCACAGCAGCGCCGCGGCAATCAGCAGAAAAATCAGCAGCGGTAATAACAGTACGTTGCGTTTCATCCGGCCTCCGGCAATGGTTTACGGCGGCGGTAGCGCGGGTCCGCCAGGCACAGCAGCCCGCCCAGCGCCATCAGCAGTCCCCCGGCCCATATCCAGCGGACAAACGGTTTGTAGTACAGGCGCACGGCCCACGCGCCGTTGTCCAGCTCCTCCCCGAGCGCGGCGTACAGGTCGCGGGTCAGCCCGCCGTCAATCGCCGCCTCGG [...]
+NODE	1232	1390	73226	72919	0	0
+AACAGAAAGCTCAGTACGAACCCCATCCCTAAAAACATCAGGGTGAAACCTTCACCCAGTAGTACAGCTTCATTCATGAATCATTTTCCATAATGAGAGGCACGACGGTGGCCTTGACGACAACCTTCCTGGTGAATCCGGCTAAGGAGTAGAGTGGATTTCCCTTGGCCACCTCTGGCTTTGGCCTCTACTTTTCTCCAGGTCGTTTGCGGCAAAGACACCGCCGTGCGTTTTTTTACACCATCATGCTGAACACGATGCTAGCGATAACCAGCACAATACCGCCGCCCAGACGAGAGGAAATTTGTGCATATGAAATGAGGTTCATACGGTTACAGGCGGAGAGCACTTCCAGATCGCCGGAGCCGCCGCGGTTGGCCATACAAAGACCCGCAGTAATGGATGATTCAATCGGGTAGAAGCCAATCAACCAGCCCCCGATAGCTGCGCCAACGACAGCGCCGACCACAATGATTGCGGCGATAACGACGT [...]
+TGGCGGCGCACCGGTTATGATATTTCTGGTTGCAGCTTATTTTGTCTATGCTGGCATATTTACGCAGAAAGAAATTGATGCGATCAGCAACGTAATGGATAAAAGCAACTTCCTTAACCTGTTTATCGCAGTGTTGATCACAGGCGCGATCCTGTCGGTAAACCGTAAGCTGCTATTAAAATCACTGCTGGGCTATATCCCAACCATCCTCGCCGGGATTGTCGGCGCGTCCCTTTTCGGTATCGTCATTGGTCTGTGCTTCGGTATCCCGGTCGACCGTATCATGATGCTGTACGTTCTGCCGATTATGGGCGGTGGTAACGGCGCGGGCGCCGTGCCTCTGTCTGAAATTTATCACTCGGTTACCGGACGTTCTCGCGAAGAGTACTACTCAACGGCTATTGCTATTCTGACCATTGCGAATATCTTCGCCATTATTTTCGCCGCCCTCCTCGATATGATTGGCAAAAAATACACCTGGCTTAGCGGTGA [...]
+NODE	1233	5306	273162	268713	0	0
+AGCTGTCCTATGCGTTTGCCGGCGATTTTTACTCCGCTATGTTCTGGATTGAAGTCGTCCTGATGGTCTTCCCGTTAGTGGTGCTGCGTGTGGCGAAACTGCGTAATGACTCTCGTATGCTGTACCTGTCGGCGCTGAGCGCGCTGTTGGGCTGCGCGACGTGGCGTCTGACCTATTCGCTGGTGGCATTCAACCCGGGTGGCGGCTACCACTACTTCCCAACCTGGGAAGAATTGTTGATTTCTATTGGTTTTGTGGCTATTGAGATTTGTGCATACATCGTACTCATTCGTCTACTGCCGATACTTCCTCCTTTAAAACAAAACGATCATAATCGTCATGAGGCGAGCAAAGCATGAGCCAGAGAATTACTATTGATCCGGTAACCCGTATTGAGGGTCATTTACGCATTGACTGCGAAATTGAGAACGGCGTCGTATCCAAAGCATGGGCGTCCGGCACCATGTGGCGCGGTATGGAAGAGATCGTGAA [...]
+TCGGTGTAATCATGATTGATGAGCCATTCCGCCGCCAGCCGGCCCGCCGGTAACGGCAAAGTCTGTCTGCCGCCAACCAGCGCTACCGCGCGTTTTCGGATCGCTTCGCCCTCCTTGCCCATCCGCGAAAAAAGCTGCTGCGTATAATCGCCGGAAGGATCGCAACCTGCTGTTGAGGTGCCGATCCGCAGATCCCGCCGGGTTAATAGCGACAGCCAGTCCTCGCCTTCACGCATCGCCTGCGCCCGCACGCTCAGACACAAACGGTTCGTCGTAAAAGGCGCGACCCGCAGTGCCCGCCCGCTTTCCAGCAGCGCCTGCGGATGCGCCAGGTTCGCCGAAGCAAAAAAGTCGCATGCTTCGCCCGCTTCGATGCGTTCACGTAACAGCCCCGCCGGACCGAAATCACATACCGCATCCGCCTGAAACGCCGCCATTAGTTGCGGCCAGACGACGCGCAAGCTCCCCGCTGCCAGTATTCGCATCACTGTA [...]
+NODE	1234	36	2295	2295	0	0
+CGCGATGATGGCGCTAAATATGCTGCGCCGCTGGCT
+TATTGCCAGACTATACCGATTGGCGCTAAAACGCAC
+NODE	1235	932	54251	53857	0	0
+AACGGGGCGCATAGTAACGATGTGCGATCGGCTTGTCAAAGGGGGAAATAAGGTTGCGCGTTTGTTTGCTGACAAAAACAACAAAGCGTTGAAGTTTTGATCTAATTTCTACTTTGCCCCGGCATGGCGCAACTTTGTCTGTAATTGCACAAGTCAAATGCTGTGACCTTACCGCAATGGCTATGTACCAGCGTCTGATGAACCGTGAAAAACTGGCAGGCACTTGGCAAATAATTCTGAGACATAACGCCGTAGAGATTAAGGGCAGGGAGTAGAATGAACTTTAGACGTGAAATATTTTGTGAAAATGGTTGATACAGGCAGTCTGACGCCGGTAGCGGAAATGGCAGATAAATTTCTGGTGCAGGCGAAAAGATTTCCGTCAATATCATAGGCAGAATTATGGCGCATCAGCTTTTGGCGACGACACGGGACGAGCGGGTTTTATCGCGCTTTTCCTGAAGGATTTTTTCATCAGCCTGTTTTTTGCGT [...]
+AAGGGAAGCAGACGTTCACTGACGTCTGCTTTCTGCATTTATATCAACTGATTAACCCCTTCTTCAGGTTCACTCTCGTTTACTAAAAACCACTCGAAGCCATACCCTTTTGCTGGTAAAGCTGGTTCGATTTGCGTTTTACCAGCACGCGGAGGGAACCGTCATGTCACTGACTGATACTAAAGTAAAAAATGCCAGACCAGCGGAAAAGGCCGCCAAGCTCCCTGACGGGTTTGGCCTCTATCGATTCAAAATACTGGCAGTCAGGCTATCGCTTCGATGGCAAACAGAAGGTGTTTTCTATTGGGGTTTACCTTGCTATATCGCTTGCTGATGCCAGACAACGCCGTGACGAGGCCAAAAGGCTGCTGGCTCAGGGGATTGACCCGAACGCAAAAAACAGGCTGATGAAAAAATCCTTCAGGAAAAGCGCGATAAAACCCGCTCGTCCCGTGTCGTCGCCAAAAGCTGATGCGCCATAATTCTGCCTAT [...]
+NODE	1236	43	2627	2554	0	0
+TGGGAAACCAAATTTGTTACTAATTGTTCACCATTAAGATGAA
+GACCTGCTGAGACGGCGCGATATTATCAGATCCTGAGACACCA
+NODE	1237	120	6517	6466	0	0
+CCTGGGGCGAGTCAGGCGCTTCGTAAATGGCGTCGATACCGGTAAAGTTACGCAACTCGCCCGCGCGCGCTTTTTTATACAATCCTTTAGGATCGCGCTGTTCACAGATAGCCAGCGGCG
+GCGCGCGCGGGCGAGTTGCGTAACTTTACCGGTATCGACGCCATTTACGAAGCGCCTGACTCGCCCCAGGTTCATCTTAATGGTGAACAATTAGTAACAAATTTGGTTTCCCAATTATTA
+NODE	1238	51	1952	1952	0	0
+AGCAACGTGACTACAGCCATGTTCCACAGTGGAAACAACGGCTCTCACTCG
+TCCCCGACGCTCCCCACCTCACCGCCGGTCGCATTATTCGGCAGAAAGCGA
+NODE	1239	49	2156	2156	0	0
+GAAGTCGACGCGATGCGTAACCGCATTATATCGATGCGCCAGACGCTGG
+GCCAGCCAGCCCGCTTTTAACGCCTCATCGCCCAGGACCGTAGCGACCA
+NODE	1240	51	120	120	0	0
+GGAAGGAGCTGAAGGCGGAGATGCCTGACCGCAACTTTGATTACTTGTTAC
+CCCAGCGTCTGGCGCATCGATATAATGCGGTTACGCATCGCGTCGACTTCC
+NODE	1241	14	659	617	0	0
+ACCTCCAGCGGCAC
+TCGCTGCTATCTTT
+NODE	1242	3279	226024	224810	0	0
+GTATGATCTCTAAATGTGAATGGCACGATTATGCGAGATACTTACAAGTGTCTGGTATGAAGATATACTGCGAACGCCGATGTAAACGGCGCGCGTAACATTTTAGAGCGGGACACGCCGTGCTTGCCTGTGGAAGGAGCGTGCAGTCAGGCAGCCCGTTGGAGCAGGAACCCACGCCCTTCAGGACGTGGAGGATGTCAATGCACAAGAATTGGGGAATCTTTAGCAGAATTTATTATCTCTACAGTAGCATCTCTCTTGTTCCCGTCATAAATAACCCAATGCCTCCAGAGCTGAAACCGCCTTCAGCATGAGCACTGGCTGCAAATAACACCAAATAAAATAATAATATAACAACTACCGAGACAAAAAACACCTCTCTAAAGTATTTAGAATTCATACAGTCAGCTCATTTAAATTTAACGTCACATGCAACCATGCATGCGTAAAACAAGAACCACACTCATATTAATAATGATTAGTAATGTGAGC [...]
+CATGACGTAGAGATAAAAGCGTTAACTATGAGTAATAAAATGAAGTGGACGAGTATGACAGCCTATTGGTCAGCAATTATTAATTTCATCCGAAAATATGTTTATCCAGCAAGGATAATTGCCATCCTGCTGATGGCTGGCGCTACACTGCCACAAGTCGCCGATGCGATTACCGTCGACCTGAATTACGACAAGAACAATGTACCGGTCATCACTCCTGTCTGGTCCCAAGAATGGAGTGTAGCAAATGTGTTGGGGGGATGGGTATGTCGTTCAAACAGGAATGAAAATGAGGGGGCGTGTGAAGAAACACATTTGGTATGGTGGTATGCTTTTGGAGCTTATTCAAAAATTCGTCTGCGTTTCAGAGAACAAATCAGCCATGCTGAAATCACGCTCATACTGCTCGGCAGTGTTCGTAATGCCTGTTATACTGGTGTCGTGAACATGAACGCTGCTGCATGTCAATGGGGTAGGTCGCTGAAACTTAGG [...]
+NODE	1243	3	821	752	0	0
+AAA
+TCC
+NODE	1244	46	12624	444	0	0
+GCCCGCTCGCCGGAAGACCAAGGGTTCCTGTCCAACGTTAATCGGG
+CACCCGCTTTATCGTTACTTATGTCAGCATTCGCACTTCTGATACC
+NODE	1245	291	15400	15400	0	0
+ATGGCGCCGCCGGTTAACGTTACCGACAGCCCTACCTGCCAGGTGGAGTGCGTCATCATTTGGATCTGTACCGGAACCGCCACGCCAAGCAGCCCCAGCGAGACAATAGAGATAAAACGGGCCAGAAATACTGCGCGAAATGCAGGGTGCGTCTTCAACAGGCTGAGATTGAGCAGCCAGGATTGTCGATTCATTACAACGCCTTAATGCGAGTTTTTTTAAATATCCATTCAATGGCTGCACATGCTAACATAACCAAATAAGATAGATAACGATAATTACTATCATTAT
+GCAGCCATTGAATGGATATTTAAAAAAACTCGCATTAAGGCGTTGTAATGAATCGACAATCCTGGCTGCTCAATCTCAGCCTGTTGAAGACGCACCCTGCATTTCGCGCAGTATTTCTGGCCCGTTTTATCTCTATTGTCTCGCTGGGGCTGCTTGGCGTGGCGGTTCCGGTACAGATCCAAATGATGACGCACTCCACCTGGCAGGTAGGGCTGTCGGTAACGTTAACCGGCGGCGCCATGTTTATTGGCTTAATGGTGGGCGGCGTACTGGCCGATCGCTACGAACGCA
+NODE	1246	334	16476	16476	0	0
+GAGGCTTTCGCCAGACCCATGACATTGTAGTTCGGGATGGCGCGCTCCGCTCCCAGATAAGACAAGGTCAACAGCGCAGAACCCGGATTCAGCATGGTGCGGCAGGCTTTCGCCATGGCAACAAAGCTGTAAGAGCTAATATCGTGAGCGATTTTAAAGCCTTCGCGGGTAACCGCATTAACATAATCGCCGTCCAGCTGATCGCCAGGCGCGAAACCGATCGAGTGTACAAAACCGTCAAATTTCGGCCAAACGTTACCCAGCTCTGCAAACATAGCGTCAATGCTGGCATCTTCAGCGACATCACACGGTAAAACGATGCTGGAACCCAGCT
+ATTGACGCTATGTTTGCAGAGCTGGGTAACGTTTGGCCGAAATTTGACGGTTTTGTACACTCGATCGGTTTCGCGCCTGGCGATCAGCTGGACGGCGATTATGTTAATGCGGTTACCCGCGAAGGCTTTAAAATCGCTCACGATATTAGCTCTTACAGCTTTGTTGCCATGGCGAAAGCCTGCCGCACCATGCTGAATCCGGGTTCTGCGCTGTTGACCTTGTCTTATCTGGGAGCGGAGCGCGCCATCCCGAACTACAATGTCATGGGTCTGGCGAAAGCCTCTCTGGAAGCCAACGTGCGTTATATGGCAAACGCTATGGGACCGGAAGGGG
+NODE	1247	21	3522	2363	0	0
+GACCGCTCGGTTCGTAGCCGA
+CCCTTACTTGATACGGCTTTC
+NODE	1248	29	7170	7140	0	0
+GTACTCTATCCAGCTGAGCTACGGATGCA
+GGAGGTTCGAATCCTCCCGGATGCACCAT
+NODE	1249	4117	241905	239804	0	0
+CCGCCTTATCCGGCCTACAAGGAACGTGCTTTCTCTAACCACCGCAAAATGAAGGCAGAAATCTGCGATACATCATTAAGATCCAAAACGGGTACCGCTACGGCAAGTGGAATATCACTGGCAACCGCAATAACATGCTCATCAAGAATTAATTCTTCCTCGCTGTGCCCACATCCCTGACGAAAAAGTAAGATCTTCGCAACTGCCTCGTGTTTAAACCCTTCTACCAGCACCATATCCAGCTTTGATGCATCCATCCGGCTCACCAGCCATGCCAGATCCAACTCTTCTTGCCCCGGCGTTTCAGTCATTAACGCCCAGCGCTGCTGACTGGCAACCAGCGTTTGTGCTGCCCCGGCCTTACGTAATTCGTAGCTATCTTTACCCGGTTTATCAACATCCATATCATGATGGGTATGCTTAATCAGCCCTGGCCGAATACCGTGCGCACAAAGTGCTGGGATCAGTTTTTTCAGCAGTGTTGTTTTTCCC [...]
+GAATACTCGCGGCTATCACGCTCCCATTGAGTATCGTATTGACCATCCTGGTCACTATTGTTTGCTCAGTACCGATCATCATTGCCGGTATGGTAAAGCTTCTTTTGCCTGTTCCCGGTATCTGGCGCAAGGTCTCCATTTTCTGCAATTTCATGATGTATTGCTGGTGTGCTGGTCTTGCAGCGCTGTTACGCCTTAATCCGCACTTGCAATGGGATGTCGAAGGGTTAGAAGGGCTGAGCAAGAAAAATTGGTATTTACTGATTTGTAATCATCGCAGCTGGGCCGATATCGTTGTGCTTTGCGTTCTGTTCCGCAAGCATATCCCAATGAATAAGTACTTTCTTAAACAGCAATTGGCCTGGATGCCGTTCATCGGCCTGGCGTGCTGGGCATTAGATATGCCGTTTATGAAGCGCTACTCCCGTAGCTACCTGCTCCGACACCCCGATCGACGCGGCAAAGATGTTGAAACAACTCGTCGCTCTTGCG [...]
+NODE	1250	612	36120	35689	0	0
+CACATTCCTTCACAAATTATGCCGTTAAAATTCATCAACAATGCTTATCATCACCCGCCAATATGAAAACCTTGTACTTATTGTTACCGTTACTCATACCCGGTGCAAAGTAATAGGGTTTTCTTGTAAGGAAAGCTAATACAAGAGATTGATATCTCTGCAATGAGATCGTATTTCATCATGATAAAATGTGACCTGACTCCTAAATTTTTAGCGACAGACGGTGAGTATCCCCCCTGCCAATAAGCTCTTTTTTGTGCGGCGCCTCAAGGAAAATTTAAGTTGAGATAATTAAAACGTGTGCTTAATAAAGCGTAATTTTGAATTCCTTACATTCCTGGCTATTGCACAACTGAATTTATCGCTCTATTATTAGCTCAACAAACCACCCCAATATAAGTTTGAGATTACTACAATGAGCGAAGCACTTAAAATTCTGAACAACATCCGTACTCTTCGTGCGCAGGCAAGAGAATGTACTCTGGAAACGCT [...]
+AGCAGCAGCAGCGCTTTCTTCTTCACGACGCTCATTAACGACAACTTCTAATTTTTCCAGCATTTCTTCAAGCGTTTCCAGAGTACATTCTCTTGCCTGCGCACGAAGAGTACGGATGTTGTTCAGAATTTTAAGTGCTTCGCTCATTGTAGTAATCTCAAACTTATATTGGGGTGGTTTGTTGAGCTAATAATAGAGCGATAAATTCAGTTGTGCAATAGCCAGGAATGTAAGGAATTCAAAATTACGCTTTATTAAGCACACGTTTTAATTATCTCAACTTAAATTTTCCTTGAGGCGCCGCACAAAAAAGAGCTTATTGGCAGGGGGGATACTCACCGTCTGTCGCTAAAAATTTAGGAGTCAGGTCACATTTTATCATGATGAAATACGATCTCATTGCAGAGATATCAATCTCTTGTATTAGCTTTCCTTACAAGAAAACCCTATTACTTTGCACCGGGTATGAGTAACGGTAACAATAAGTACAAG [...]
+NODE	1251	23	1358	1352	0	0
+ACCCCATTTTCCAGCTACCGCTA
+TGATGGGGATAGTGGCGCTATTT
+NODE	1252	43	43	43	0	0
+CAGCAGCGGGCGCTTCGACGATGCCGCACGTCTGATGGAGCAA
+AGCTGGAAAATGGGGTTTTATGTTCCCGGCGCCATTTCGCTGC
+NODE	1253	2110	115503	112750	0	0
+TTACGCCATGGCGCATTACTGGCGCATTGTTCGCCGTTATCGCCACCATTTTTGTCGTGTCGCCACAGTGGCACTCAACCTCGTTTATCCTGCTCGCTATCCTCCCCTTTTTGGCAGGGTTACTCGCTGGCTGGCAGCCTGCGGGGAATGCGAAAGTCGCCGAGGCAACGGGCTCCATGCTGGTGTCCATTACATGGAACTTCATCGTCGGCTTTTGTGTCCTGGGCGCAGCGCTGGCGATACGTATCGCATTAGGCCATGTCACCATCCAGTTACCCGATACATGGTGGATGTATCTCGGTGGTCCGCTGGGTCTGCTGTCCATCGGGCTAATGGCGATTCTGGTGAGAGGCTTAGGGCTATTGATGCTGGGCGTAGCGTCAACAGCAGGCCAACTGCTTGGCTCAGTGCTAATTGATGAATTGATCCCTTCATTAGGCAATACGGTCTACCTGGTCACCATCATCGGTACGCTGTTCGCGTTAGTCGGTG [...]
+TACCTAATGTTTATGGCCTGGTAGGCGGCGATGCTAACGCGGTCGGTCCGAAGAAGCGTCCGCTGTCGTCGATGTCGCCCACTATCGTGGTAAAAGACGGCAAAACCTGGCTGGTGACCGGCAGTCCTGGCGGGAGTCGAATCATCACTACTGTGCTGCAAATGGTAGTGAACAGCATTGATTTTGGCATGAACGTCGCCGAAGCGACCAACGCGCCGCGTTTCCATCATCAATGGTTGCCGGACGAACTGCGGGTAGAAAAGGGCTTCAGCCCCGATACGCTAAAGTTGCTGGAACAGAAAGGGCAGAAAGTCGCGCTGAAAGAAGCGATGGGCAGCACCCAAAGTATTATGGTTGGACCGGATGGCGAACTGTACGGTGCGTCTGACCCGCGTTCGGTGGATGATTTAACGGCGGGATACTGATTTTTAATTCCAGGCCCGGTGTCAGACACCGGGCTATTTGCAGATTATGCCGTGAGTAATCGGGCTG [...]
+NODE	1254	19	2219	2219	0	0
+GATTTTAGTTTCGGGACAT
+ATACGGATTAACAGTCCGC
+NODE	1255	196	9855	9780	0	0
+CCTGGTGAGTCCGGAGACGTTTAAAAAACAAGAAGTTATCTTTACCCGGTTGACCTGATAAGGTTTGCCGGGTTTTTTGACACCCATAGTTTTTGGGGACTTAATCGGGGGCCTCACGGTTCGTTGAGAAAATGAAGCCCCCTCCGATGGCATTAACCGATACCGCTATCCGCAAGATCAAACCCACCGAGAAATC
+CGGAGGGGGCTTCATTTTCTCAACGAACCGTGAGGCCCCCGATTAAGTCCCCAAAAACTATGGGTGTCAAAAAACCCGGCAAACCTTATCAGGTCAACCGGGTAAAGATAACTTCTTGTTTTTTAAACGTCTCCGGACTCACCAGGATGTCCCGAAACTAAAATCTGGCTCCTCTGACTGGACTCGAACCAGTGAC
+NODE	1256	4073	201350	199569	0	0
+ATCGTTATTTCGAGCAGCAGGTGTCGCTGGCGGCGTTTGCTGATGTGGCGGAGAACGCCCTCGACGACCTGCCGATTATCTGGGCCAGTACGCCGGCGCGAGAAATAGGCTATACCCTGGCCGAACGAATATTGCAGCGTATTGCTCACGACGAGCACCATGTGCGGAGTCAAACGATAGCCGCTCGCCTGGTAACGCAAAAGTAGAGGCTGCGCGTCGTTCGGCGCAGACCGGGTGCAGCGTCGCGACACCCGGCAAGGCGATTATTGTTGAGGCAGCGCCGGAACGTCCGGTACGGAAAGCGCCGGCATCCCAAACAGGCCGACAAAGTCTTCCAACGGCATTTTTTGTCCGTTGAGCGTGATCTGGCCATTGGCGTACTGCAAACTGGAGGCGATAGTATTATCCTTCAGCGTTGTCAGTCGGAACATCTGACCCATTGCGGACAGCCCCTGCACCTGCTGTTTTGCCAGTTTTTCCGCATCATCCTGC [...]
+GGTCGGTAGCGCATCATAGTATTTTGCCGAGGCCAGCTTAACGGTCTTCAGGTTCGCTTCCGCCGAGGTGCCGCCAATGACAAACGCAATGTGATACGGCGGACAGGCGGCGGTGCCCAGCGTACGCATCTTATCGACGAGATAATTTTTGAGCTTACCCGGCGTCAGAAGCGCTTTTGTCTCCTGATAGAGGTAGGTTTTATTCGCCGATCCGCCGCCTTTAGCGATACAGAGGAATTTATATTCATCGCCATCGACGCTGTAGAGATCGATCTGCGCCGGCAGGTTAGTACCGGTATTGACCTCTTTGTACATATCCAGCGCCGCGTTTTGCGAATAGCGCAGGTTATCTTCGATATAGGTGTTATATACGCCGCGAGCCAGCGCCGCTTCATCACCTCCGCCAGTCCAGACGCGTTGGCCTTTTTTGCCGACAATAATGGCCGTACCGGTATCCTGGCAGGTGGGCAACACGCCCTTGGCCGCGATATC [...]
+NODE	1257	1048	214659	212420	0	0
+CCATGCCGCTAAAGCGGCATATTCCATAAGAATTTACATGCGCGTATACTTTATAATCAGTATCAACGAAAGTTGCTTGCCCAAATCAGAGGCAACAATCGCATCAAATAACTTGCGCAGGTGATAATTATGGAGACTTTCGATACTGATAAATTTCGCTCAGAACTGGATCTTTTATCAAAAAGGATCATGCCTGGTTGTGGTCTTGTTTTTGAGCTATATCAACGTCGTTTGAGCGCTGCGATTGATGAATTTATCGCCAGATTGCCGAAAGAACAACATGCTCAGGCGTTTGAACTGGCTCGCCAGGAGTTTGATTATCTTTCTGCAGAAGAGATTGCAGATGAAATACGCCGAGACGCAGAAAAAGGCTATTGTTGCCACGGCTTTGATCGCGATTGCTGCCCTCTTGGTTGCGGTGATTTAGATGATTATTAATTTAAAGGGATAAATATATTTACATACTGAAAATATAGGCTGATTTTTTCTGAA [...]
+CCTTGTTATTTTCATTCCCATAGCATCACCAGGTTCAGTAAAATCAATGATCTCATCAACCTTATAATGACCAATACAGAAATCAGGGCGCTCTGGAGATTTCAGATATTTTTTTCCATTCTCTGTCAGAGCATATTCACGCCCAGGCACTTTTTTACCTGTTTTAGAAAATCCAATAGTTTCATCAACCAGGGTATCTTTTACTGTCAATAAACCAGCTTTAACCAGTGCATCAAACATGGAAAACTCTTTGGTATTTATTTCGTCTGCCCGTTCCTGAGATGTATATCGATTAGTTTGGGCGACAGATAATTGAACTGGATAAGGCTTACTATCAAACCTCCCAAGAGGACTGATTGTAATGCATTCCTTCTCAAGTTTCGTATTAATCGCTTTTTCAAAGTTTGATTTATTGGCATCCTTCGCTGAGTCACACCCTGCCAACAATAATGAACTTAACGCAATCATCACAAATTTTTTTGTATTAACCAT [...]
+NODE	1258	3	1648	223	0	0
+ACT
+TAA
+NODE	1259	12	6785	1072	0	0
+CTTGAGACTTGG
+GCATCAAACTTT
+NODE	1260	5	454	454	0	0
+TATTC
+ATTGA
+NODE	1261	69	14832	14805	0	0
+AACAGCCGGTCGGTTGAAGAGAAAAATCCTGAAATTCAGGGTTGACTCTGAAAGAGGAAAGCGTAATAT
+CTTCAACCGACCGGCTGTTTGTGTGAAGTGATTCACATCCGCCGTGTCGATGGAGGCGCATTATAGGGA
+NODE	1262	937	168193	165080	0	0
+GCATAGCTACATTCTTGCGCCTAAAGGAAGTGAGTTCGTTATCAGGGTCGTTAAAGCCTCCCAGGTAAACGAAATCCTTCAAAGCCGTATTGGATTCCAGGTTACATGGCTTGTATTGCCTGATGGTAACAGGGTCGATTTTAAAACCTCATCGTCTCTTGACCGAATGGGGACTCCGGCGGTTGAAGGCGATGAGGTGGACAGGCATTTGCTCGCTCAGTTTCTTGGCGTAGCGGCCTATGCCCTTGTGGGGACGAAAACCAGCTACGAAGGTTCAGGTGATAGTAACGAGAGTTTTGCCGGGAATTTTGGCGAAGGCGCTCGTACTCAGGCAGGAAATATCGCTCAAAAATACCTCCAGGTTGTGCCAACAACAACGTTACATGCGGGAGCACCGATCAGGGTCTTTACCGAAGATGAGATATACATGAAGCCGTGGAGAAATATTTATGAAACGGATTATACGGGCTGAAATATTGTTTTTTGCTGCAT [...]
+AACATAATTATCAAGCCCAACCAGCAACTGAAGAGCATCAACTACGGGCATTGTGCGTTGCATTCTGGCAATTGGCGGTAATGGCTTATCAACAAGCAGAGAAGCCTCACGCGGTGCTGGATGACTCGTTACCAGGCGATATCCAGTTGGTTCCAGGAGATAGTTCACCGCTGCTCTGATAGTCCTGATGTTATCGGGCCAAACTGTACGCATATAAACACTCAACGGATCGATATACTGCCAGCGAGGATCTTTCTGATTCCTGTCCAGTGGTTGTAACTCCTGAAAGTTTCCCTGCACATGCACATCCTGCTGTGATATCTGAACAGGCGCACTTTCTCGCATCCTGTCTACCTGGAAAGGACTTCTTGCTGCCTGACAGGAAAATGCAAAGAATGCAGCAAAAAACAATATTTCAGCCCGTATAATCCGTTTCATAAATATTTCTCCACGGCTTCATGTATATCTCATCTTCGGTAAAGACCCTGATCG [...]
+NODE	1263	488	26543	26192	0	0
+CGCTGGTTGCCCGGGGGCTGGAAACGCCGCTGCGCCCGCCTATGGATGAACTGGATAATGAAACGCGAAAAAGCCTTATCGCAGGGCATATGACTGAGATTATGCAGTTGCTGAATCTCGATTTGAGCGATGACAGTCTGATGGAAACGCCGCATCGTATCGCTAAGATGTACGTTGACGAGATTTTCGCTGGCCTCGACTATGCCAATTTCCCGAAAATTACCCTCATTGAAAATAAAATGAAGGTGGATGAAATGGTCACCGTCCGCGATATCACGCTGACCAGCACCTGTGAACATCACTTCGTGACCATTGATGGCAAAGCGACCGTCGCGTATATCCCCAAAGATTCCGTGATCGGCCTGTCGAAAATTAACCGCATCGTGCAATTCTTCGCCCAGCGTCCGCAGGTTCAGGAACGTTTGACCCAACAAATTCTGACGGCGCTGCAAACCTTGCTCGGCACCAATAATGTAGCGGTATCGATT
+GAATTTGTTGGGTCAAACGTTCCTGAACCTGCGGACGCTGGGCGAAGAATTGCACGATGCGGTTAATTTTCGACAGGCCGATCACGGAATCTTTGGGGATATACGCGACGGTCGCTTTGCCATCAATGGTCACGAAGTGATGTTCACAGGTGCTGGTCAGCGTGATATCGCGGACGGTGACCATTTCATCCACCTTCATTTTATTTTCAATGAGGGTAATTTTCGGGAAATTGGCATAGTCGAGGCCAGCGAAAATCTCGTCAACGTACATCTTAGCGATACGATGCGGCGTTTCCATCAGACTGTCATCGCTCAAATCGAGATTCAGCAACTGCATAATCTCAGTCATATGCCCTGCGATAAGGCTTTTTCGCGTTTCATTATCCAGTTCATCCATAGGCGGGCGCAGCGGCGTTTCCAGCCCCCGGGCAACCAGCGCGTCATGAACCAGGGCCGCTTCTTTACTGAGTGATGGCATTAATCGTGTT
+NODE	1264	728	41644	41459	0	0
+GCCTGCCATATCCACAGACCGCCAACCAGCATCAGCAGCAGGAATAACGCCAATGGCCACAGCGAGAGCCAGCGTCGCCCCGGAGTGCGTTGAGAAAAAATTACTGACATTGCAAGGTCACCGTTTGGGCAAACTGTTTACCTAAATCCATATCCTCCGGCGGCGCGTCCTCTTTATCCAGCGACTGGGCGAAACGTAGCGTCTCTTCGCCGGGCGCAGGAGTATAAACCTGAATCCGACACTTTTCGCGCAGCGGTTCCGGCATCGTGATATCGCTGTCCTGGTCATAATGCATATCGACATAATAAGAGGGATCAAACGTTGAAAAGGTATAAGTCTGTCCGCTTAACGGCTGCGGTTCAGCCAGCGGTAGCGTAAAGGTCAATACCGCCTGATGCGCGTCACGCGTCATACCGTATTCTGTCGGCCTGTTTTTAAACTTCACTTTCGCGCCATTGCGCCACACTTCTGTAAAGTAGTGCTGCCCAAGTA [...]
+CGGCGCATCCGCACAGCTTCATCCGTCTGCAAACGCAGGTGGTCAGTGAAAATGAGCAATTTGTGGCGTTAAAAATGCGCTGGACAATGGACGCGCTGACGTCCGCAGATCTGCTGTATGACGCCGGAAACGCGGCACCGGGGTCAGAAATATGGAAAAAGTTGGCGGCGGAAGTGATGGCTAACGTACTTGGGCAGCACTACTTTACAGAAGTGTGGCGCAATGGCGCGAAAGTGAAGTTTAAAAACAGGCCGACAGAATACGGTATGACGCGTGACGCGCATCAGGCGGTATTGACCTTTACGCTACCGCTGGCTGAACCGCAGCCGTTAAGCGGACAGACTTATACCTTTTCAACGTTTGATCCCTCTTATTATGTCGATATGCATTATGACCAGGACAGCGATATCACGATGCCGGAACCGCTGCGCGAAAAGTGTCGGATTCAGGTTTATACTCCTGCGCCCGGCGAAGAGACGCTACGTTTCGCCC [...]
+NODE	1265	5769	297265	295138	0	0
+AAAGGGCGCGGAAGTCATTCGCATGATCCACACGTTGCTGGGTGAGGAAAATTTCCAGAAGGGGATGCAGCTTTATTTTGAGCGCCATGACGGCAGCGCCGCGACGTGTGATGACTTCGTACAGGCGATGGAAGATGCTTCTAATGTCGATTTGTCCCATTTCCGCCGCTGGTACAGTCAGTCCGGCACGCCGATTGTAACGGTAAAAGATGATTATAATCCGGAAACCGAGCAGTACACGTTGACCATCAGCCAGCGCACTCCGGCGACGGCGGATCAGGCGGAGAAGCAGCCGCTGCATATTCCATTCGCCATCGAACTGTACGATAACGAAGGCAACGTCATTCCGTTGCAAAAAGGTGGTCACCCGGTCAACGCCGTGCTGAACGTCACGCAGGCGGAGCAGACATTTACCTTCGATAATGTTTACTTCCAGCCTGTTCCGGCCTTGCTGTGCGAGTTTTCAGCGCCGGTGAAACTGGAATATAAATG [...]
+TGCACACAGTCCAGCGGGCCATTCTTGGCTTTAAACTGTTTGTCGGCACGCAATTGCAGGCTGCCCAGCAAATCGGGCGAAGCGCTGAACAGCGACAGGTTCCAGCCGCCAAACTGATTTTTCATGGTACGGCCCAGCAGGCTGTGCAACGCAATCAGCGCCGGTTCGCTGTCCAGACGTTCGCCGTAAGGCGGGTTACTGATCACCGTACCATACGGGCCTTTCGGCAATGGATTACTCAGTTGCGCCACATCTTTCACTTCAAAGGTGATAAGCTCCCCGATACCGGCGCGACGGGCGTTGCTGCGCGCCCGCTCAATGACGCGCGCATCGCTGTCGGAACCGTAGAAATGAGAGGAATACTCCGCCAGTCCCTTACGCGCCCGGGTCTGCGCTTCGGCTTTCACTTCCTGCCAGATAGTTTCGTCATGCTGCGCCCAGCCGCTAAATCCCCAGTGACCACGGTGCAGTCCCGGCGCGCGATCGGTCGCC [...]
+NODE	1266	2244	135869	135126	0	0
+TGCTGAATTCACCTGTGCCTACGGTGCCGGTTGCTGCGCCAACCAGCCAGGCGGTGAAATTCAGGCTTTGCTTCTCATCAAGGATGGTGTCTCCGTCCAGGTCCGCAATGGCCTGTGTATAGGTATCGCCCAGTTTGATATTGTTTTTGCCAGCATCGCCGATTGCCAGGCTTACGTTGCTAATAGCGCCAGTGCCGTCAGTCTTCATCAGCGCGAGATTATCCGTGGCGCCTGTAGCCGCTGTGGTTCCACTACCTGTAGTGAATACCACATTCATATTTTTCTCGGTAGCCCAGGTACAACCCTCAAGATCGATATGAAAGGTACGGGCATTGTTGATGGTCGTTTTACCATTACTCAGCGTGCCATTACCGATACTTGAACCCATATTGACTGTTTGATCTTCCGTATCCAATGTGACAGAGCAGGGGGAATCAACAATATTACCAAGGAAAGTGACCTTCGCTGTGTTGCTACCCGCGGCTTGAGCGC [...]
+GCGGAACCTGAGAAGTTAGGTTTAAAAGACGATGGAATAACCAGGACGGGAAAGCAGTATACCCGAACATGACCTACGCCACAAACTTTCATTATTCCTCCTCTTCGTCAGGCTGACATTCACACAGGGAGGGAGAAAATAGCCCCTTTGAGGCAAATGTTTTTGACGTAAATCAAGCGCTTGTTATTTAAAAAATCACACAAATCGCTCTTGACCGCCTAAAACCTTTAGAGATCAATTTCCTGGCGTTTTACTTCCTGCCAAACTTCTTCCATTGTTTCCAGGTCCACCCCGGTCATTTCCAGGCCTCTGGCTGCGACAATACGTTCAACTTCGCGAAAACGACGTTCAAATTTATCGTTCGCTTTTTGCAAAGCGAGCTCCGCTTTCGTACCTAAATGACGCGCCATGTTGACCGTGGCAAAGAGCAAATCGCCCATTTCCTCTTCCAGTTTAGCCTGATCAACAACCGCCTGCCGCGCCTCGAACATC [...]
+NODE	1267	51	3094	3000	0	0
+ACCTGCATCAGCAAACTGCTGTACCAGGCGATCCACGGAAACCTGTCTCTC
+TATCCGGAAATCTGCTGACGACTCTGTGTCCGCACAAGAAAAACAGACTTT
+NODE	1268	702	43691	43434	0	0
+ACCCGGCGCAGTTCGTCATTAATGCGATGGCGCCGGCAGACGTCGCGTCTATTGTGGTGGACGAAGATAAACATACCATGGATATCGCCGTTGAAGCCGGTAATCTGGCGCAGGCGATCGGACGTAATGGTCAGAACGTCCGCCTGGCTTCGCAATTGAGCGGCTGGGAACTCAACGTAATGACCGTTGATGACTTGCAGGCTAAACATCAGGCTGAAGCACATGCCGCTATCGAGATCTTTACTAAATATCTTGATATTGATGAAGAGTTCGCGACCGTTCTGGTAGAAGAAGGTTTCTCCACGCTCGAAGAACTGGCCTATGTGCCAATGAAAGAACTGCTGGAAATTGACGGCCTTGATGAGCCGACCGTTGAAGCACTGCGCGAGCGTGCTAAAAACGCACTGGCCACTCTGGCGCAGGACCAGGAAGCAAGCCTCGGTGATAACAAACCGGCTGACGATCTGCTGAATCTGGAAGGATTAGATCGCG [...]
+TACGCTTCGTCGCCGAACCAGCAAATATTACGGGCAGCCATAATCAGCTCACCGGCTTTTTCGTCGGTCAACCCTTCGATATCAGCCAGATCATCAATGCCCTGGTCGGCGAGATCTTCCAGCGTACAAACACCACGAGCCGCCAGTTTGAAAGCCATATCGCGATCTAATCCTTCCAGATTCAGCAGATCGTCAGCCGGTTTGTTATCACCGAGGCTTGCTTCCTGGTCCTGCGCCAGAGTGGCCAGTGCGTTTTTAGCACGCTCGCGCAGTGCTTCAACGGTCGGCTCATCAAGGCCGTCAATTTCCAGCAGTTCTTTCATTGGCACATAGGCCAGTTCTTCGAGCGTGGAGAAACCTTCTTCTACCAGAACGGTCGCGAACTCTTCATCAATATCAAGATATTTAGTAAAGATCTCGATAGCGGCATGTGCTTCAGCCTGATGTTTAGCCTGCAAGTCATCAACGGTCATTACGTTGAGTTCCCAGCCG [...]
+NODE	1269	540	29973	29837	0	0
+TCGCCTGTGCGATACCATAGGCGATGGACAGTTTACTGGCCACGCCAGTGACCAGAATGCGCTTACCGGAAAGAAAACCCATAGCTTTAATCCTTATAGTCATTGCTTATTTTTTGCTTTTACGAACAATGGTTAACAGCAACTTTTCAACATTATTCGAAATTAGTCTGAAATTATATCCCACTCCTGGCCCCGTGTGTCACGCTATTTTTCCGCCGCTCTCTCCGGCAGGTGACGTTCTAAAACCACACGGTAACAAAGTCCCTGAGGATTTTGAGCACTCCCCAGGGCCAAACTGGCAAATCAAAGAGTCTAATGGGACAGGCCCTACGGTGCAGTATACCAGCTGGTGTAAGGTTCGCCTCATCCAACCAGAGACACCGGGACGGATAGCAAGTACGATAGCGATGCGCCTTCCACCAGACAAATAAAGGTTCTGTAGGAAGCCTGAATATTCATCCGAATGGTTTACCTCACCTATTAGCGATGTTA [...]
+ACATCGCTAATAGGTGAGGTAAACCATTCGGATGAATATTCAGGCTTCCTACAGAACCTTTATTTGTCTGGTGGAAGGCGCATCGCTATCGTACTTGCTATCCGTCCCGGTGTCTCTGGTTGGATGAGGCGAACCTTACACCAGCTGGTATACTGCACCGTAGGGCCTGTCCCATTAGACTCTTTGATTTGCCAGTTTGGCCCTGGGGAGTGCTCAAAATCCTCAGGGACTTTGTTACCGTGTGGTTTTAGAACGTCACCTGCCGGAGAGAGCGGCGGAAAAATAGCGTGACACACGGGGCCAGGAGTGGGATATAATTTCAGACTAATTTCGAATAATGTTGAAAAGTTGCTGTTAACCATTGTTCGTAAAAGCAAAAAATAAGCAATGACTATAAGGATTAAAGCTATGGGTTTTCTTTCCGGTAAGCGCATTCTGGTCACTGGCGTGGCCAGTAAACTGTCCATCGCCTATGGTATCGCACAGGCGATG [...]
+NODE	1270	3	153	149	0	0
+ACC
+TTC
+NODE	1271	2734	143553	140640	0	0
+GTCGCCAGCGCGAAATTAAGATGTTCGTTTTCCAGCCCCGACACGGCCAGCGCCAGACCGGCATAATGATTGCTGCGCCGTTCTGTCGTCCAGTGCGCCGTTTGCGCCAGCGTCTCTTCCTGAGAAGGAACGACTTCACTGGCAAGAACAGGCGCCCCGGCGCGGGAAAGCTGTAGCGCCAGTAAACCGCTGGTGTATTGCTCGCTCAACGTCAGACTCAACTGCCTTTCCTGCAGTCGGCGGGCTATTTGCGCCGGCAGGTTTTCCGTACCTTCGAAAATCAGACTCTGCCCGGCAACCCGTTTGACCTCTGGCCATAACGCCAGCATCGCCTCCCGTTGCGTCGCCGGGCCGGTCAATTTCAGTTCAATGATCGGCATTGATGAGCGATACCCCATCGTCACGCCGGGCGGCAACGGCAGTAAATCGAGACGCTGCGCGAGGTCACTTTCTGAACGTCCAAAAGTCGTTAACCGCAGGCAAAGCGGCGGC [...]
+CCTGGTTTTCTGCGGGCAGGTCGCTTACGGTGGATAAAAAAATGATGGATTGCGGCAGCGGTATTTATGCTTCAATCAATACGTTACTGAAAAAGTCGCAGAATAAAAATATAGTCATTTTTACCCATAATCATTGTTTAACGTATATTGCAAAAAATAAGCGCGGCGTAAAGTTTGATCCGGACTATCTTAATGCGCTCGTTATGCATGCGGAAAACGGAAAACTCTTTTTAGATGGTGAATTTGTTCCCGGCTAGCCGCATGTTAAAAGCGTAAAGACAGCCTGAAGCGGCTGTCGTCATTATAATAACCCTTTCAATGCTAATGTGTGGCGTGTCGCTACATTCAAATCATACAGCGCCAGTTCTTCTGGCTTGACCCAGGCGTAGTCCTGAAATTCGTCGTTAATACATATATCGCGATTAGCGGAAACACAGTCGAAGATGAGATAAATCATATAAATCTCTTCTTGTCTGCCATCAGCGTAGGTTT [...]
+NODE	1272	51	79	79	0	0
+GACCGTTGGCGCGGGCGTTGTTGCTAAAGTTCTCGGCTAATCGCTGATAAC
+CCGGCCGCCTTCACGGATTGCGAAACGCAGACCGTCGTCCATTGCGATCGG
+NODE	1273	5746	292708	290737	0	0
+CAACGGGCAGGAGGCTAAAAAACTGCTGCTCAGTTTGACCTGGCCAAAATCTCTGACGCGCACAACATGGGACAAGGGACATTCACCAGTGCTATCCGCAACAGGTTGTGATGAAATTAATCCCTGTTGATTGGCCGCCGTCAAAAGCTCCCGGCACTGCGACAGCGTAAGGCGCTGTAGTTTGAAGGTCGTGATCCAGCCTGGCGGATCGGCAAGTTGTAGCGGAGCAAAAGGATTATAATAAGAGGGAAGATAACGATATCCCAGTCCGCCAATGCCGCCCAACAGCACAATAATCAGAAAACCCTTACCTCTCACGCGGCCTCCGTTCTCACATCCCATAAACATTATGGCAGAAGCCCGCGAAACCCGCGTTTTGTCGTGGTAATGTATACGCTTTGCATTCGATGGAATGGGTTTTTAAGATGGCGAAATTGCGGGTAGGAATAGTATTTGGCGGTAAGTCGGCGGAACATGAAGTGTCTTTGCAAT [...]
+CCAGCGGGCGGGTAATCTTTTCTTCAAACAGTTGCGTATAAGGTTTGCCGGAGGCGGTCGCCAGCGCGTCGGCTAACAGGTCGAACGCCAGATTGGAATAGGCCGCCTGCGAGCCTGGCGCGACTTTTAACGTTGCTGTGGAGAGCCAGCTCCAGCGTTGTTCGCGGGTTGGCCAGACAAATACCGGACGATGCGCCGCGCCGCCTGGCTGTTCTCGCGGAAGCGCGCTGGTGTGGGTTGCTAAGTTGACCAACGTAATCGGCGTGCCTTGATACGTCGGGACATGCGCGCCGGGAGGCGCATATTTGCTGAGAGGATCGTTTAATTTTACCGTTCCCTGATCGAGCAATTTTACCAACATTTCACTGGTCATGAGCTTGGTGAGAGAAGCGATACGAATGACCGAATCAAGCTGTGGACGAACATTATTGCCCGGTCTGGTGTCACCGAAACTACGAAACACGCGTTGATTGCCGTCGATCACCACCAGCG [...]
+NODE	1274	2276	128745	126617	0	0
+AAGAACTAAAAGCGAAAGGGAAGTCGGCGATAATGTTCAACCTGCAAGAGCCGTATTTCACCTGGCCTTTGATCGCTGCTGACGGCGGTTACGCGTTCAAATTTGAAAACGGCAAGTATGACGTGAAAGACGTTGGCGTCGATAACGCCGGCGCGAAAGCGGGCCTGACTTTCCTGATCGATATGATCAAGAACAAAAATATGAGCGCCGATACCGATTACTCCATCGCCGAAGCGGCCTTCAATAAAGGCGAAACGGCAATGACCATCAACGGTCCGTGGGCATGGTCGAACATCGACAAGAGCAAAGTCAACTACGGTGTCACCCTGCTGCCGACCTTCAAAGGTAAACCCTCGAAGCCGTTCGTCGGCGTGCTGAGCGCGGGGATTAACGCTGCCAGCCCGAATAAAGAGCTGGCGAAAGAGTTCCTCGAAAACTACCTGCTGACCGATCAGGGTCTGGCAGCGGTGAACAAAGATAAACCGCTGGGCG [...]
+GTATAACCAGCAGGCGTGGTGGTGCCGAGGCGGTCTGGCCCGCCGTTGGTCAATAACTGAATCAGGACAAAGTTATTAAAGTTAAAGGCGAAGCTGGCGATCATCAGCGGCGTTAGCGGCTTAATCAGCAGCGGTAAGGTGATCTTAAAGAAATTCTGAAATGGACCTGCGCCGTCCATTGCGGAGGCTTCGTACAGGTCATCCGGAATCGCTTTCAGCAGTCCCATGCACAGGATCATCATGTAGGGATAGCCCAGCCAGGTATTCACGATAATCACCATTGCCCGCGCGGTGTTGGGGTCGCTGAACCAGGCCGGTTTAATGCCAAACAGCGCGCTCAGCATCATATTGATTTCGCCAAAGCTTTGGTTGAATAACCCTTTGAAAATCAAAATTGAAATAAACGACGGTACGGCGTAGGGCAGAATCAGCAGGACGCGGTAGATAGCTTTACCTTTCAGCGCTTCCCACTGTACGAGGCAGGCCAATACC [...]
+NODE	1275	345	18891	18827	0	0
+GTCAGGACTTCGGTCTGGCGGCGGCCATTGCCACGCTGATCTTCCTGCTGGTAGGCGCGCTGGCCATCGTGAACCTGAAAGCCACGCGTATGAAGTTTGATTAAGGGAGATAATAACAATGGCTATGGTCCAACCCAAATCTCAAAAATTACGTCTCTTCATCACGCACCTGGGGCTGCTGATTTTCATCGCGGCGATCATGTTCCCGCTGCTGATGGTCATCGCTATCTCGCTACGTGAGGGGAACTTCGCCACCGGAAGCCTGATCCCGGATAAAATCTCCTGGGAACACTGGCGGCTGGCGCTGGGTTTCAGCGTGGAACATGCGGATGGTCGGGTAACGCC
+CCAGTGTTCCCAGGAGATTTTATCCGGGATCAGGCTTCCGGTGGCGAAGTTCCCCTCACGTAGCGAGATAGCGATGACCATCAGCAGCGGGAACATGATCGCCGCGATGAAAATCAGCAGCCCCAGGTGCGTGATGAAGAGACGTAATTTTTGAGATTTGGGTTGGACCATAGCCATTGTTATTATCTCCCTTAATCAAACTTCATACGCGTGGCTTTCAGGTTCACGATGGCCAGCGCGCCTACCAGCAGGAAGATCAGCGTGGCAATGGCCGCCGCCAGACCGAAGTCCTGACCGCCGCCGCCTTCAAAGGCGATACGGTAGGTGTAGCTGACGAGCAGATCG
+NODE	1276	4842	273891	268763	0	0
+GGGGATGGCTATTCCGGCGCTCGGTACCACGCACGCGGACTATTTCTTTGGCGATATTCCTTGTACCAGAGCGTTAAGCGAAGAAGAAGTGCAGGGCGAGTACGAGCTGAACACCGGTAAGGTGATCATCGAAACGCTGGGCGAGGTGGAACCGCTGCATACGCCAGGTATTGTGGTGTATCAACACGGGCCGTTCGCCTGGGGGAAAGATGCGCACGATGCGGTACATAACGCGGTCGTCATGGAGGAAGTGGCAAAAATGGCGTGGATTGCGCGCGGCATTAACCCGGCGCTGAATCCCATCGACGATTATCTGATGAACAAGCACTTCATGCGTAAGCATGGCCCGAATGCGTATTACGGGCAGAAGTGAAGTATGAGCTCCGGAATGTGAATATTATCGGGATGTCACAGGTCTAATTCCGGAGCCATCTTTCCGCGAAAAAAGCCCCCTGTTCAGGGGGCAAATCAACTATGGCTTTTTCGTTGGTT [...]
+CAATGCCAGCAACCAGCGCTTCAGGCAACAGCCCTTCAAGACCGGATTCGCTGAGCTGCTGCCCTACCTGCAAACCAATGCCGTAGCTCGCTTGCGCTTCAATAGTGTCAAAAGTCGGGGTGGCCATTATTTTTCCTTCATTGGATATCAAAAAAGTAGCGGGCAGCATAACAGCCACGCTTCTTCTGGTAAAACTTTGTCTCAGGGAGGATGACAAATCGCAGGGAAAAAGAAACAATAGATTATCCGTATTGATGTCACGAAAGCGGATAGCACTACCAGTATCATAGCGTTAGCCATCTATACTCTATGATTAAGGAACGAGATGCGGAGCAGGAGGTAAACCATGCCCGGGCGCTTTGAATTAAAACCAACCCTGGCGAAAATCTGGCACGCGCCGGATAATTTTCGCATCATGGAGCCGCTGCCGCCTATGCATCGTCGTGGCATTATCATTGCCGCTATCGTGCTGGTGATCGGTTTCCTGCTGCC [...]
+NODE	1277	6975	379326	374945	0	0
+TACGCAGGCGACGACAAATCGACAGACCATCTTCACCTGGCAGCATTAAATCCAGTACCATGAGATGGAAAGATTCACGGGTCAGCAGACGATCCATCTGCTCGGCGTTAGCGACGCTTCGAACCTGGAAGCCCTGCTCGGTCAGATAACGTTCCAGTAGCGCCCGCAGACGCATATCGTCATCAACCACCAGAATCTTATAATTCTCTTGCATTGTCTGTACTCCCAAAGGTTCGCAACAAATGTAAGTGTGTATTCTTAAAAAAGCTCACGTGAGTCACCAGCAAATTCTGGTATGAATTTCAGGCTAAATTGTTACAAAGCATATTTAACAGCAGCTTAAATATACAATTAATCGGCAACCCCATTATTTATTCTGTCGGGACGATCACGTTATACCCCGTGTGCGCAATATCGACAGCAAAGGTAAATCAACGAGATGAAAACGCCCCTGATCACCCGCGAAGGGTACGAAACACTCAAACAAGAGCT [...]
+CGGGAGATGAATTTCCAAAAAATCCCGTGCAGTATCGGGGTGGCATAGAAACTGTTTGAATACCGCGTCATGCGGCGTGGATGTTGTTGAGGTCGCCATATCGATCCGTCATCGGTGAAGTTCAATGGCGTGACACTACGCGCAGACCGGGCTGATTGCAGTAGAGGATTAGTGCGCTTGCGAGGCGCGTGGGGAGATAAATGCGCACGGCGGTAACGCTTTCATCTTTGTGGAAGGCATGACGCAAAATTGCCCGGCAGCGTGACGCGTACCGGGCAACATAATGCGGGATAAAGGCCGGATAAGACGCGTTACGCCGCTACCCGGCGAAGGTCAACGCAAGGCCCACCATTCGCGCAGGCAGGCTTTACCTTCCGGACAACTTTTACAGCTGCCTGAAAGGCAGCCGTCCGCTTCTTCCGGGATACGTACCGCTTTACCCATGATCTCCAGTTGATTCAGCATGGCGTCGATCATGGGCTGCGGAGCGTG [...]
+NODE	1278	20	1502	1483	0	0
+TATGCATGGTAAATCATATT
+TCGGAAAACATAAAGACGCT
+NODE	1279	917	61630	61381	0	0
+TATCAGGGAAACCATAATCGCTGCACGCCAGAACAGACACTACGTTACCTTAATCGGTTGTCAGGCCCGTTTCTTGATCGTTTTGACCTTTCGCTTGAGATACCGCTTCCACCGCCCGGGATTCTTAGCCAACATGCCTCAAAGGGTGAGAGCAGCGCTACGGTAAAAAAGCGGGTCATCGCCGCCCATGAACGGCAGTACCGACGCCAGAAGAAGTTAAACGCGCGTCTGGAGGGTCGCGAAATCCAAAAATATTGTGTTTTGCATCACGATGACGCCCGCTGGCTTGAAGACACGCTGGTGCATCTTGGATTATCCATTCGCGCCTGGCAGCGTTTACTAAAAGTGGCCAGAACCATTGCCGACATAGAACTGGCTGACCAGATCTCGCGTCAGCATTTGCAGGAGGCGGTAAGCTATCGGGCGATAGACAGGTTGTTAATTCATTTGCAAAAGCTGCTGGCGTAAAAAAAGGGCATTACGCCCTTTTTA [...]
+ATAAATAGCTCAGACAAAGAATTAGGAGCGTGCAGGATGGCGGAAAGCTTTACGACGACTAATCGATATTTTGACAATAAACATTATCCACGTGGATTCTCTCGTCACGGTGATTTCACGATTAAAGAGGCACAACTGCTTGAGCGTCATGGTCATGCCTTTAATGATCTGGATCTTGGCAAGCGTGAGCCTGTGACTGAAGAAGAGAAGCTGTTTGTAGCGGTATGTCGCGGTGAACGCGAGCCGGTAACGGATGCAGAACGCGTCTGGTCCAAGTATATGACGCGTATCAAGCGTCCAAAACGCTTCCACACCTTGTCTGGCGGCAAGCCGCAAGTTGAAGGCGCAGAAGACTACACCGAAGCTGATGATTAATAAAAAGGGCGTAATGCCCTTTTTTTACGCCAGCAGCTTTTGCAAATGAATTAACAACCTGTCTATCGCCCGATAGCTTACCGCCTCCTGCAAATGCTGACGCGAGATCTGGTCAGC [...]
+NODE	1280	36	1826	1024	0	0
+CCCGCCTCGATAGCCTTCAGCAGGGCCATCTCCGCC
+ACACGGCGATTTCGTCCATGAGCGCCACCTACGGCC
+NODE	1281	14	926	681	0	0
+ATCCCGGTGGTGGC
+CGTCGACGGCGTGG
+NODE	1282	3	228	228	0	0
+ACT
+ATG
+NODE	1283	51	2746	1711	0	0
+GGCTGCGATGGTTTAACGCAACGGCGAAAACAGTACCCTTCATACATAAAC
+CAGCTTGATGCCTGGCGAGAGGCTTTCTCTCAGCCTCCCTATAATGCGCCG
+NODE	1284	4390	224170	221659	0	0
+GCCATAAGCCATTGCCGCCGCCGTGGGTTCATTGATCAAGCGCACGGCGTTTAACCCCGCAAGCTCAGCGGCAAGGCGTGTATGCTTCCGCTGCTCATCGCTGAAATAAGCTGGAACCGAGATCACGACATCCTTGATTGGCTGCTGAAGGTAGTCTTCCGCATCTTCTTTCAGCGAGCGTAAAACCAGCGAAGATAATTCCGGCGCATTAAACGACTCTTCACCCAAATGCCAGTGAGTATTACTGCCCATTGCGCGTTTAAATAAGGCAGCGGTTTTATCTGGATGAGATGTTTTACGGGCTGCGGCAGGTTTTCCCACCAGAATTTGTTTATTTTCATCCATACTAATTATGGATGGTGTTAAATATTCACCAAATTTATTAGGTATTAATTGTGCGGCTCCGTCTTGCCAGACGGCGATTAAACTATTAGTGGTGCCGAGATCGATACCAATCGCTAACGTTGCATTATCCATTGCGTTTAATTTATC [...]
+TATCATGCTGGTCATGAGCCTGGTTGAACGCAAAGTCCGCCTGCCGGGCAACGTGGGGAGCAAATAATGTACGAATTTGACTGGAGTTCGATTATCCCCTCACTGCCTTACCTGCTGGCCGGGTTGGTCATCACGCTGAAGATCACCGTCACCGCCGTTGTCGTGGGGATAGTCTGGGGAACCATTCTGGCCGTCATGCGCCTCTCAAGCTTTACCCCTATCGCCTGGTTTGCTAAAGCGTATGTTAACGTTTTCCGTTCCATCCCGTTGGTGATGGTGCTGCTGTGGTTTTATCTGATTGTACCCGGCTTTCTGCAAAACGTGCTGGGACTATCGCCGAAAACCGATATCCGCCTGATCTCCGCGATGGTGGCATTCTCCATGTTTGAAGCGGCCTACTATTCCGAGATTATTCGCGCCGGTATTCAAAGTATTTCCCGCGGGCAGTCCAGCGCCGCGCTGGCGTTGGGGATGACCCACTGGCAGTCGATG [...]
+NODE	1285	31	2162	2162	0	0
+AATGACCAAATTTATCAGCGGATAGAAGACA
+GGTCCCCCTGCGTCTTTCGCGCTACAGGCGC
+NODE	1286	7	2643	1858	0	0
+TCTCCTC
+ATTACGG
+NODE	1287	27	9349	4950	0	0
+CTAAAGAGTAACGGAGGAGCACGAAGG
+ACCCACCAGACACTGTCCGCAACCCGG
+NODE	1288	5769	309630	304787	0	0
+ATCTGATCCTGGTGCTGTTATCGCTGGTTGATATGACGCTGGTTGGCGGATTGCTGGTAATGGTCATGTTCTCCGGGTATGAAAACTTTGTCTCTCAGCTGGATATCTCTGCGGGCAAGGAGAAGCTGAACTGGCTGGGGAAAATGGATGCGACGTCGCTAAAAAATAAGGTGGCGGCATCGATAGTCGCTATCTCTTCCATTCACCTGTTACGCGTGTTTATGGACGCGAAAAACGTCCCGGATAACAAATTAATGTGGTATGTCATCATCCATCTGACCTTTGTCCTGTCGGCGTTCGTGATGGGCTATCTGGACAGATTGACGCGGCATAACCATTGAGCCGCCGTCAACGGCGGGGCAGTCGGGCAAAGGACGCTGAGCCCGGCTGTAAAACAGCGCTTCTTTAACGGCGGATAACCGTCTCCCTGCAGCCTTACGCAATATTTTTACTACATCTATTCATTTACTCAGTAATAAGACTAAAAGATTT [...]
+AGCACGCTGATGGTATTCGTCAGCTTAACAAACAAATTTTTCTCATCCGGACCGTTTCCTTTCAGGCCTGCCTGAACCAGCGAACCCTCAAATATGACAATGGAGAAGCCCATGATAAACGCGGTCAGAACCGAGAACAGCGGCAGCATTTCATAGCTTTGCCATAGCGGATGTACTTTATAGCCCGCCGAGATCATCAATGACCCCATTGAGGACTGGTGCATCGTCGGCAGCAGCGCGCCCAGCGCGATAATAAAGAACATCACCTTATTCAGACGTTTGAGCGACACTTTCCAGCCCAGACGTTCAAACAGGGCAGGCGCAAACTCCAGCGCCATCACGCCGATGTAGATGGTCATACAGACCGCCGTCTCAAACAGTACCGAGTTCACGTTGAAGTGACCTGGAATGTAGAAGTACGGCAGGTTCCAGTAACGACCGACGTCGATAGTGATCGACAGGCCGCCCAGCGAGTAACCAAACAAGCTTGCC [...]
+NODE	1289	956	54338	54065	0	0
+TCTTGCATATTGCCGGTATTGGTGGTGCTGTCATAAGCGAGTAGATCGTTAAGTTTTGTATCGCCTTCCACCGTGATCTTCATCGTATTGTCGGTACCGCTATTGGCGGTAAGCACCAACTGGAATTCGTTCTCTTTGACCTTAACGATACTGGCGGCGATACCGCTGTCGGCGTCATTGATGGCGTCACGGATCGCCTCCATGGAGGTGTCGCCTTTATCCAGCTTAATTTCCAGCGGCTCTTTACGTCCCGGCTGTTCAATTTTAATTGTCCGGGACGTGACCGACGTATCGCCCAACTGCTCTTTGGTGGTCGCGAAGGTGGTTTTTGTCGCCAGCGACTGTGCGGCGGCAAGCTGGGTTACGTTAATCTTATAAGTCCCTGCGGCAGCGCCAGCGGTAGTACTGACTTTGAGATCTTCAGTGGTGCTGGACGCCACGGTAGACTTAAATAAATCCGCTTTATTTAACGCGGTATTTGCCGTCTGGAAT [...]
+CTTATCAATTACAACTTGATGTTATTGGGCTGTTGCCCACGGTTTCTCACCGTAACCCTTGTATCGGCACCTGAATTTCGAACTTTAGAAAATTTTTCACTTCCCCCGATCTTTTTCTTAGGCGGCGAAATAGCCGCTTTATGCATCATTATTCCGCGCATTATTTTTGCAAAATTATCATTAAACTTTGCCTCCAGATTGCCGATAACGCGCTTAACTACTGTTTGCAATCAAAAAGGAAGAAGGCATGGCTTCAATTTCATCATTAGGTGTGGGATCAAACTTACCGTTAGACCAGTTGTTGACAGACCTGACAAAGAACGAAAAAGGACGCTTAACGCCAATTACCAAACAGCAGAGCGCGAATTCGGCAAAGCTAACCGCCTATGGCACATTGAAAAGCGCATTAGAAAAATTCCAGACGGCAAATACCGCGTTAAATAAAGCGGATTTATTTAAGTCTACCGTGGCGTCCAGCACCACTGAAGATCT [...]
+NODE	1290	51	157	157	0	0
+GAATTTCTGGGACGATGAGACATTGCAGCGGCGTCTGGCCCCTCGCCTGGA
+CCCTTCCGGCACCGCCCACTGCATCTCCTCTTCCAGCCACTGACGCCAGCC
+NODE	1291	1457	76778	73815	0	0
+CGCAAATCGTCTATGAACCGGTGTGGGTTGGCTGGAATGAACAGACCGCCGGGCTGGCCAGCGGCTGGTGGCGGGATGAAATTTTAGCAAATAATGCTATTACTGGGGTGTATGCAAAATCGCCGGTTTAAAAATCAATCGCTTATGAAAAATAATTTTTTGAACGCGCTCGCATTCTCTTGTCATTTCACTTCAATTTAGGGCAGAATACGCCGCTTGCAAAAAATGACACTAACCGACGTTTTAATACGCGTCGGTTATTTTTTTGCTTCAAACACATCATTCAATACCAAGAGGCCGGGCTTCGTACCGGATAGATACTTACTTAAAAATCGACAGTTGTTGTCGCTGAGGAATCCAGAAAATGGGGCAATTTTTTGCTTACGCGACGGCATTCGCCGTAAAGGAGAATGACCATGTCGCATAACGTTACTCCAAACACCTCTCGCGTGGAATTACGTAAAACGCTTACGTTAGTTCCGGTTGTAATGA [...]
+GATGAACGTAACCGAAGAAGCTTTTCGGGAATACGCCGTCGCGCCCCATTACGTACATCAGGCGCGCTACGCCTGCATGCGCTGCCATACCGGAAGCCAGCACGGTGATAGTAGAGAAGATCAGCGCGCCCACCTGGAAGGTTTTACCCGCCACGTACAGCATGATTTCCGGCTGAGACGCATCCGGATCTTTAAAGCGAGAGATATCCGGGAAGTACAATTGCAGGAAATAGGTTGCAAAGATGAAGATCAGGCCGCCAATCAGCGCGGTCAGGAAAATCGCACGCGGGATCACGCGCTCAGCATCTTTGGTCTCTTCCGACAGGTTACTGATGCCGTCAAAGCCGGTAAAGGAGAAGCACAGGATCGTCGCTCCCGTAATCATCGGGATAACGTGCGCATCGCCGGACCAGAACGGACGGGTGCTCGCCAGCGTACCGGCGCCTTCGCCTTCAAATACGCCATAAACCACCATGCCCAGAATGACCGCAA [...]
+NODE	1292	2262	116099	113692	0	0
+AGATAACGCGGTAAATAGCCGCATCCCAGGCCGCTAATTTGCAGCTCCAGCTTGGTTTTAAAATCAAACACGGTAATCGCTTCCTGAGCGTCGAGCAGTTCAGACCCTATTGATCGCGAGGAATGGACGCTATCGCCAACCACAATCGCGCGAAAACGTTTGATCGTCTGGCGGCTAAGCGGTTCCTCTTCATGAACCAGCGGATGATGCGGGGCGACAGCAAACACCAGTTCAAGATCGCCCAGTCTTGCAAAGCCAAAGCCGGTGTCAGGCGGCGGCGCGCGCATGGCGCCAACGATGATATCCGCCCTTCCCTGCGTCAGCGTCTCCCATGAACCGCCGAGAACGCCATTGACAAATTTAAGGCGCGTCACGCTGTGGCGTTGATAAAAAGCGTCGATAAGCGGGGCCAGAAGAGAAAAGGGAAAGGTATCATCCACACCGATGACCAGTTCGTTCTCCCAGCCTTCATGCAGTTTAATCGCCTGCTTT [...]
+GGTTGAGTAGTTCTTCTTCCAGCACGTTCTCGCCGATAATGCCGAGATCGACCACGCCATCCATCACCAGACCCGGAATGTCATCATCACGCACGCGCAGGATATCAATCGGCATGTTTTCCGCCATCGCAATCAGGCGCTGAGTGTGTAAATTAATTTTTATGCCGCAGCGGGCCAGCAATTCTCGTGAATCATCGCTTAAACGGCCTGATTTCTGAATAGCTATGCGTAAGCGGGTGTTGTCTAACATTCTGCGTTCCTCTTTATCCTGTCTGAACCGGTCTGTATCGCGCGCCAAAAAAAAGCCCCCGGAAGATGATCTTCCGGGGGCTTTCTCATACGTTCATGCACCACTGGAAGATCTGAATGTCTTCCAGCACACATCGCCTGAAAGACTAGTCAGGATGATGGTGATGATGGTGGTGTTTAAATTGAACGCGTGTCATAAAAATTCCGATGAATGCTTATTCATTTGATGCCTTTTAACCTAAA [...]
+NODE	1293	47	3315	3315	0	0
+AACAGTTCTTTAAGGTAAGGAGGTGATCCAACCGCAGGTTCCCCTAC
+TGCAGTGCTCACACAGATTGTCTGATGAAAAACGAGCAGTAAAACCT
+NODE	1294	8	612	612	0	0
+GGTTACCT
+CTGTTCTT
+NODE	1295	73	4992	4930	0	0
+GCTATATCCAAAAGAAAGCGGCTTATCGGTCAGTTTCACCTCTTCATAAACCCCGTCAGTGTAAGCTGGCGGG
+AGCCGCTTTCTTTTGGATATAGCGTCGTGGACAGTCATTCATCCTGCCGCCCTGTAAAAGCATAAACCCACCA
+NODE	1296	26	1481	1453	0	0
+ACCTTATCCTGGCAGTCCACGTAGCT
+AGAATGGACGACGAAAGCGATGCTCA
+NODE	1297	25	1244	1244	0	0
+GCGGTAGTCCGCCAGCACCTGATAG
+TGGATGAGTTGTATCGTCGCCCGGA
+NODE	1298	448	27967	27764	0	0
+ATCTTTTCGTTTTTGACCTGTCAGAACGGTTAATATCTTATAAATCATTACTTATCAAAAAGTTAAGCTATTTTTTGTCTGTCGTATGACCTGACGGACAGGGTCTATGCTTAATAAAAGGCGCTCAATATGACCATTTGTTGGAAAGCCCCTGCGGTTAAGGGGTTGAAGTGATAATCATTATCACTAACATGCTGTTATACCCTGGTGATTTAGAACGCGAGGTAACTCTATGGAATTGCATTCAGACACGTTTAACCCGGAGGACTTCCCCTGGCAAGGGCTGACGCTAACGCCAGCGGCGGCAGCGCACATACGTGAACTGGCAGCAAAGCAGCCGGGCATGTTGGGCGTGCGGTTAAGCGTAAAACAGACGGGATGTGCCGGATTTGGCTATGTTCTGGATACCGTTCGGGAGCCGGATAAAGACGATCTGGTTTTTGAAGCC
+CATAGCCAAATCCGGCACATCCCGTCTGTTTTACGCTTAACCGCACGCCCAACATGCCCGGCTGCTTTGCTGCCAGTTCACGTATGTGCGCTGCCGCCGCTGGCGTTAGCGTCAGCCCTTGCCAGGGGAAGTCCTCCGGGTTAAACGTGTCTGAATGCAATTCCATAGAGTTACCTCGCGTTCTAAATCACCAGGGTATAACAGCATGTTAGTGATAATGATTATCACTTCAACCCCTTAACCGCAGGGGCTTTCCAACAAATGGTCATATTGAGCGCCTTTTATTAAGCATAGACCCTGTCCGTCAGGTCATACGACAGACAAAAAATAGCTTAACTTTTTGATAAGTAATGATTTATAAGATATTAACCGTTCTGACAGGTCAAAAACGAAAAGATGTATAGAAAATGACTATTTAATTAATAGGCTGTCGACATTGCCGGGCGGC
+NODE	1299	3335	206268	205117	0	0
+TTAATCTTATTTGCGAGGCGTGACACAGGCATGTTTCTTGATAACGAAATTTGATAAAATTCCGCTCTTTCATAACATTATTTCAGCCTTAAACAAGGCAGACTGTTTGCATAAAAATTCATCTGTATGCACAATAATGTTGTTTCTACTGCCATATTACGGGTGACTTATGCGAAGCTCGGCTAAACAAGAAGAACTAGTAAGAGCGTTTAAAGCGCTCCTCAAAGAAGAAAAATTCAGCTCACAGGGCGAAATCGTCCTCGCGTTGCAGGATCAGGGCTTTGAAAATATCAATCAGTCCAAGGTCTCGCGCATGTTGACTAAGTTCGGCGCAGTGCGTACACGTAACGCAAAAATGGAAATGGTGTACTGTCTTCCGGCTGAACTGGGCGTCCCAACAACATCCAGTCCGTTGAAAAATCTGGTGCTGGATATCGACTATAACGACGCTGTCGTGGTGATTCATACCAGCCCCGGCGCGGCACAACTCAT [...]
+GACGCCGGTTGAAACGGTACAGGACGTCCACAGGCAGTTAAAACGGATGCGGCGTGTCATTGTCTGGACCGGTGAGCGCGAAACGCCCGTCACGCTTTATAGCTGGGTAGGCGCTGCGACGCGCTATCTGCTGCTTAAACGCGGCGTGATCAGCAACACCAAAATCAGCGCGACGGAAGAAGAGATCCTGCAAGGCGAACCCGTGGTTAAAGTGGAATCCGCTGAACGTCACCATGCGATGGTGAACTTCTGGCGCACCACGCTTTCCTGCATACTGGGGACATTATTCTGGCTATGGACCGGCTGGACATCGGGTAATGGCGCGATGGTGATGATTGCCGTGGTGACCTCGCTGGCGATGCGTTTACCCAATCCGCGCATGGTCTGCATTGATTTTATTTATGGCACTCTGGCGGCGTTGCCGCTGGGATTGCTCTATTTCCTGGTGATTATTCCCAATACGCAGCAAAGTATGCTGTTGTTATGTTTGAG [...]
+NODE	1300	1578	86157	85463	0	0
+GTTTTTTCCCGCGAGCAGTTGTTAAACCACCTCTACGACGACTACCGTGTGGTGACCGATCGTACTATCGACAGCCACATTAAAAACCTGCGCCGTAAACTGGAATCGCTGGATGCCGAACAGTCATTTATACGCGCGGTCTACGGGGTGGGATATCGCTGGGAAGCAGATGCGTGTCGCCTGGTATAATGATTATTGGCATAACAATAACAAGGTCGTAAGACGATATTTTCCGCCAACGCTATTCTGGCGGAATTAACACACTGCCCTCTTTCCTTTGGCCGAGCGGTATCCCGAAAACCACGACGAACGCGATCGGGGACAATAAATTATTTGGCCGCTCTTTTTAGTTTACCGATATACTGTGAGTAGTTTTTTAAACTTATTGCGCATTAATTCATTAAGTGAATCTAAAAATACATAAACATAATACCAGCTTAATTATACATGGATTTTTATGACAGAAACGTCATCTCACCGCTATAAACCACG [...]
+CGCAGCCGTCGCCACGTTAGGATCAACAACCTGAAGGTAGCGCAGCGCCTCCGGGGCGCTGTGCAGCAGTAGCCACTGTAAAGCTACCGGGGGAGTGGGGAAGTGCTCCATTAAATGAAAATTGTCATGCAACACATTGAGCAGAAAATTGAGGTCATGAATATGCGTAATAAATTTCCAATCTGAATATTCCGGTGTCGATTCATAAACTATTCCCATCCCTTCACAATCGGCGTGGCGCTCAGGAAGTGGTTGCAGATGGCGTAACAGAGATAAAACATCGTTAGCATATTTCTTAATAGGATGGCGATTTTGCTTACCTTTAATCTGATCAATACTCAGGCCGTTATTACCAACCACCAGGCTTATTGTGACGTGGGGAATATTATTGTCGTCGCGCAGGCTGAACAGGCGAAGTTTTTGTTGTTCAATTTGCCGGGCGTAGTAATCACCGTAGCCGCCGGAAAGCGCGCCTTTATTATCAAAATCTCC [...]
+NODE	1301	45	1969	1969	0	0
+CACCAGTAGCGAACCTTTCGAAATTGAAAGCCTGACGCTACAAAC
+CCCGGCAAGCGTAGGGTGCCATTCATGATGCGGAAACAGCATTTC
+NODE	1302	1634	78760	76150	0	0
+GAGTTTTAAATGTCGTTGTGTTCGCAAAACGGGGAGCTCCGGGCGCGTAAAAACGTCCCGGAGCAGGCGGCTTAGATTTTTTCGATTTCCACCAGATTTGTATGTTGAGGATTCCCTTTTGCCAGGGGGGAAGGACGCAGCGTCGTGAGCGTATTGATGCAGGCGCCGTGGTCAATTTTATCGCCAGCCATATCCGCATTATGCCATGCGCCCTGACCCATCGCGCTGACGCCCGGCAGAATACGCGGCGTGACTTTGGCGGGTAGACGCACCTCTCCACGATCGTTAAAGACGCGAACCCTGTCGCCATTCGCGATACCGCGTTTTTGCGCATCGAGCGGATTTATCCACACCTCCTGGCGACAGGCGGCCTGCAGAACATCAATATTGCCGTAGCTTGAATGGGTACGGGATTTATAGTGAAAGCCAAACAGCTGTAGCGGGAAGGTGCTCCGTTTCGGATCGTCCCATCCTTCAAAAGTAGGGGTATAA [...]
+CGACAACTATTGCATCGGCTACGATGAAAAGACCCTTCCGGCTGACGCGCCCCCCAATGGCCATTATAAGGCTTATATTTTGGGCCAGGGCGAGGACGGTATCGCCAAAACGCCGCAGTGGGCGTCACACATTACCGGCATCCCCGCCGATCGGATTATCAAACTGGCGCGCGAGATAGGTAGCGTCAAGCCGGCCTACATCTGTCAGGGTTGGGGACCGCAGCGTCAGGCGAACGGCGAACAAACCGCTCGCGCCATCGCCATGTTACCGATTCTGACCGGCAACGTCGGCATTCATGGCGGTAATAGCGGCGCACGCGAATCCACTTACACCATTACCATTGAACGTCTGCCGGTCCTGGAGAATCCCGTTAAAACCGCCATCTCCTGCTTTAGCTGGACGGACGCCATTGCGCGCGGCCCGGAAATGACCGCCCTGCGCGACGGCGTACGCGGCAAAGATAAGCTGGATGTCCCGATCAAATTTCTATG [...]
+NODE	1303	1861	99176	98223	0	0
+CGCGCGGTTGCTCTATAACTATCTGGTGAAGGGCGGCGTGCAGGTTTATGAATACCGACGCCGTCCGCTGCATGGCAAAGTGGCGCTGATGGACGATCACTGGGCCACGGTAGGGTCGAGTAATCTCGATCCGCTCAGCCTGTCGCTTAACCTTGAAGCTAACCTGATCATTCACGATCGTACTTTTAACCAGACCCTGCGCGATAATTTACAAGGCATCATCGTGAATGATTGTAAGCAGGTCGATGAGTCTATGCTGCCGAAACGCACCTGGTGGAACCTGACCAAAAGCGTGCTGGCGTTCCACTTTTTACGTCATTTCCCGGCGCTGGTCGGCTGGCTACCTGCGCATACCCCGCATCTGGCGCAGGTTCCCCCGCCTGCCCAGCCAAAAATGGAAACCCAGGATCGCGTTGATCCAGAAAATACAGGAGTGAAGCCCTAATGGCTAAATCGCATCCGCGCTGGCGGCTGGCTAAAAAAGTGCTGACC [...]
+ACGGCGATCATGATGACCATGACATGGATCGTCAGTATAAACATGGTTATTGCGCAGTTTGAGCTGCACAATAAAAAGCATCTGGAGCTGGTCTTCTTCCTGACCGTGGGCTATATCGCTTTTCTTACCCCGTCAAATCAGCTCCTGCTTAAAGGAAGAATGAGCGGGGTCATTATTTACCGCTATGCGCTATTGTTGGCCATTATTTCCGTTACGTTGGCAACGTTCTGTACCCTGTCATCAGTATTCATGGGCGAGTTTCACGAAGTGCTCCTGCTGCTGTTTAGCTGGTCATTGCTGCTTTTTTCCCGCTTACAGATGAATACGTCTTTTTTCTCAGCATATGTTTATTTTTACCGGATAAAACGCGTTGTGCTGGAAAGCGAAAACGCGTCTGCTTAAATTCATTTCGCCATCGCCCGCTCGTTTTTCGCCCGCAACTTCTTCGCCCGGCTCTCCAGGATCAGGTAGCACACCAGCGCCAGCAACAGG [...]
+NODE	1304	48	1926	1926	0	0
+AAAAGTGCTGGTGCGTACGGGCAAACCGGTCACGGCAGAAGCAGAAAA
+CCCGACATTTGCCGCCGCTGCCGCCTGCATATCTTCCAGCTTGTCTCC
+NODE	1305	593	36444	32667	0	0
+AACGGCATCATCATCCCATAACGTCCTCTGTGACTCCACATTCAGGACGGGATTGCCGCGACAACGCCGGCAAATGTACCACATTTGCCGGATGTTACGTATACCCGAGTAAGGAGAACATAATCTCATTGTTGGTTACGGTTTGAATTATGACCGGAGGCGCACTGATAACCCGTCTACCCTAATAGCCATATAAATAACGCGCCGAACAGCGCGCCTACGGCCAGTAGAGTAAACATGATGCTAAAAAGTATTTTGCCCTTTACCAGCAGATGCAACGCAATGCCGATAATCACCGATACCGGCATTAACGCGAGGAAAAAGGGCCAGGTATAGAGGAAAAAAAACAGCGTGTTAGGGCCATAAAGCAGAAAAGGGATCCCCAACGCCAGCAGCCATGACACAAAGCCGACCACCGCCCCCGGAAATGCACTGGTGGCGTCATCGTCGACCATGAAGGCGTCTGACCTTGTGAAAGTAATGTTATGGCTA [...]
+CCGGGCTTGTATGCCCGGTATGGTCAAGGTTACAGGATTTAATATGCGTAATAGCCATAACATTACTTTCACAAGGTCAGACGCCTTCATGGTCGACGATGACGCCACCAGTGCATTTCCGGGGGCGGTGGTCGGCTTTGTGTCATGGCTGCTGGCGTTGGGGATCCCTTTTCTGCTTTATGGCCCTAACACGCTGTTTTTTTTCCTCTATACCTGGCCCTTTTTCCTCGCGTTAATGCCGGTATCGGTGATTATCGGCATTGCGTTGCATCTGCTGGTAAAGGGCAAAATACTTTTTAGCATCATGTTTACTCTACTGGCCGTAGGCGCGCTGTTCGGCGCGTTATTTATATGGCTATTAGGGTAGACGGGTTATCAGTGCGCCTCCGGTCATAATTCAAACCGTAACCAACAATGAGATTATGTTCTCCTTACTCGGGTATACGTAACATCCGGCAAATGTGGTACATTTGCCGGCGTTGTCGCGGCAAT [...]
+NODE	1306	136	15155	14523	0	0
+AGGACGTCAATAGTCACACAGTCCTTGACGGTATAATAACCACCATCATGGCGACCATCCAAAGGATAAACATCATAGGCAGTCGGGAGGGTAGTCGGAACCGAAGAAGACTCAAAGCGAACCAAACAGGCAAAAA
+CCGACTGCCTATGATGTTTATCCTTTGGATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTA
+NODE	1307	759	44984	44701	0	0
+CGAACGGGAAACCTACAGATATACCGTAGGCAGAATAACCTGAAACACACAGGGGGTAATGAATATAACCTTCTGGTTAACAGATTAATATAATTAATCGAGTTATACTGAGTATATCTGTATGAACGTTAGGATCTGGAAATATAATCAATAATCGCATACAATACCGCCTGTAATAGTTTTTGTTTTCTGCGTTAAAAGGTTTTTATTGATATGAATTTGATGTTACAGAACTTAAATAATATCCGCACGCTGCGCGCTATGGCTCGCGAATTCTCCATTGACGTTCTTGAAGAAATGCTCGAAAAATTCAGGGTTGTCACTAAAGAAAGACGCGAAGAAGAAGAATTGCAGCAACGCCAGCTTGCCGAGAAGCAGGAGAAAATTAATGCCTTTCTGGAGCTGATGAAAGCAGACGGTATTAACCCGGAAGAGTTATTTGCCATGGATTCAGCAATGCCGCGTTCTGCTAAAAAGCGCCAGCCGCGTCCG [...]
+GCTGATTTATCAAAATGAGCATGGCGCAACGTTCCCTGAATCCCGGTTAATAGAGACAGGAAACGAAGCGCCATCTGTTAAAGGTTATCCGTGATTAGATTAAGAAATCATCCAGAGATTTCCCCGCCGCCAGCGCCTGGGCAATCGGTTTAGGCGTACGACCTTGTCCGGTCCAGGTTTTTTCTTCGCCATTGAAATCAGTAAAACGATATTTTGCCGGACGCGGCTGGCGCTTTTTAGCAGAACGCGGCATTGCTGAATCCATGGCAAATAACTCTTCCGGGTTAATACCGTCTGCTTTCATCAGCTCCAGAAAGGCATTAATTTTCTCCTGCTTCTCGGCAAGCTGGCGTTGCTGCAATTCTTCTTCTTCGCGTCTTTCTTTAGTGACAACCCTGAATTTTTCGAGCATTTCTTCAAGAACGTCAATGGAGAATTCGCGAGCCATAGCGCGCAGCGTGCGGATATTATTTAAGTTCTGTAACATCAAAT [...]
+NODE	1308	1690	109012	100150	0	0
+GTGGTGCGGTGGAGCAGGCGGATGCCCAGTTGATGTTCTAACGCTTGTATTTGCCGTGAGACGCTGCCTTTGGGAAGGCCGATATCCTCTGCTGCACGGGAAAAACTTTCCCGTTCCGCCACGCGTACAAACAATTTCATTGCATATATTTTATCCATCATCAGGCTCTATTATTGTTTTTATTGAAACAGTGACGCTGAGGCGGCTGGTTTTATTGATTTTCTATCATCTAATAAGCCCTTTCGCAATCATTGCTCGCGTGACGAATACGTCTGATCGCGTTGCGCGGCGGATTTATCGTTTTCCGGCCAGGCTTTTTAGCGCCAAAAAGCCGATAAACGGGACGAGAGCGGTAAAACACGCTGATAGCCGCGGGTGTAGTGGGAGAGAGAAATGCATGTACATATACGGTATTGTCATTGACCCATCGTCGCGGTTTTCAGGCGGATTGGCTATTTTTTAACAAAATGTGCTACTTTATTTTTTGTAACA [...]
+CGGGCATATGTTGACGCCGGATGAGACGCTGACGTTCATTACGCCCGACCAGGCGGAGGCATTCTTGCTGGATGACCTCAATAGCTGCGATATGCTGCTACAGAATTGTTTGCCGGAACTTAATGATCGGTTTCAACGCGAAACGCTTATTGCGCTGATGTTCAGCATCGGACATCAGCGTTTTTTATCATTAATCAATACGGGTGATATTTCACAGCCAGAAATAAGCGGACTGCGAATTTAACGTCGTTAATTCGATTCATTTAACATCATGGCGGCCTGGGTACGATTTTTTACATCCAGCCGCCGGTAAAGCGACTCCAGATGCGCTTTAACCGTCCCGGTACTAATATTTAACGCCCGCCCAATTTGTTTATTTGATTCTCCTGCGGCAAGCATCTGTAAAATTTCCCGCTGGCGGGCGCTTAACGCTTTTATATCACGGGACTCCAGCTCCGTTGAATTTAACCAATCCCCCGGTAAAAACATCAT [...]
+NODE	1309	12	1360	715	0	0
+ATATCCACCACG
+AAAAGCGGCTGG
+NODE	1310	110	4617	4617	0	0
+GGCGCAAACAGGCCGATAAAACCGATAATGCCCACCGCGTTGACCAGCAGCGCGCTCAACACAATCGCCAGCGACAGCGCCGCCAGACGCGCTAACGACAGCGCCAGCCC
+GTTGAGCGCGCTGCTGGTCAACGCGGTGGGCATTATCGGTTTTATCGGCCTGTTTGCGCCGCTGCTGGCGAAAATGCTTGGCGCAAGACGTCTGCTGGCGCGCCTGATGC
+NODE	1311	41	2270	2264	0	0
+CGATGGGTGCTGCGAATCTGGCTCATGCCGCCGAGACTACC
+AGGCAACAAATAGAGCAGTCAGTTTACGCATATTTCCATCC
+NODE	1312	51	2757	847	0	0
+ATTCCCGCCGCCACGCTTAGCGATTTGGTGGCGCAGCAGGCGCAAAAAACG
+TCGTTACCGCCGTATTATTAAGGTGTGTTAATTGCGTTTGTTCTTCCGCCA
+NODE	1313	2616	142003	138827	0	0
+AAACGCCGCCGCCCAGACGCTCTACGCCCTCGATCGTAATACGATCGGTGCCCTGCCCGGCGATCTTCGCCCCCAGCGCAACCAGGAAGTTAGCGGTGTCGACAATTTCCGGCTCGCGCGCGGCGTTTTCAATGATGGTCGTCCCTTCCGCCAGCGTAGCGGCGCACATAATGGTGACGGTCGCACCGACGCTGACCTTATCCATCACGATATGCGCCCCTTTAAGACGCCCTTCGACGGAGGCCTTTACGTAGCCCTCTTCCAGCTTGATGGTCGCACCCAGTTGTTCCAGACCGGTAATATGTAGATCAACCGGACGCGCGCCGATAGTACAGCCCCCCGGCAGAGAGACTTGTCCCTGACCAAAACGGGCAACCAGCGGCCCCAGCGCCCATATCGAGGCGCGCATGGTCTTAACCAGATCATAAGGCGCGCAGAACACGTTCACCTGGCTGGCGTCAATGTGTACCGATCCATTGCGTTCCACTTTCG [...]
+GGAGCCGACCTATAAGGTTTATGCGACCTTCGATAACATCGGCGGTCTGAAAGTGCGTTCCCCGGTACGCATCGGCGGGGTGGTTGTCGGGCGGGTTGAAGATATCTCGCTTGATCCGAAAACATACCTACCGCGCGTAACGCTCGACATCGAAGAGCGTTATAACCATATTCCCGATACCAGCTCGTTGAGTATTCGTACTTCCGGGCTGCTGGGGGAGCAATATCTGGCATTAAACGTCGGTTTTGAAGATCCTGAGCTGGGAACGTCTATCCTCAAAGATGGGAGTACGATTCAGGACACCAAGTCTGCAATGGTGCTGGAAGATATGATTGGCCAGTTCCTCTATAACAGCAAAGGCGACGACAATAAGAATTCTGGCGATGCGCCAGCCGCAACGGAAGGCCATACTGAAGCCACAACGCCCGCGGGCGAAACGAAATAATCTCAGGAGAATTGAGGCATGTTTAAACGACTGATGATGGTGGCCCT [...]
+NODE	1314	132	11082	7494	0	0
+CCGCCCATGGCGAAAAAATCGCTCCACGATGAAAATGCCGGACTCACCGGTGCCCCCTTTTCAGTATCAGTTCGCTCACCCACGGGCGGCGTTTTTCCATCAGTAAAATCAGGTTGCGCATCCGCATCAGCG
+TGGGTGAGCGAACTGATACTGAAAAGGGGGCACCGGTGAGTCCGGCATTTTCATCGTGGAGCGATTTTTTCGCCATGGGCGGGTACGCCTTTTTTGTCTGGCTGGCGGTGGCGATGACCGTGGCGCCGCTGG
+NODE	1315	664	44890	44890	0	0
+AAGGGATTTCCTGACTGACATACCACCGGACAATCCCGTTATGATCAAAAGCCAGATTATACCGATCAAAATAAGTGGAGAAATAAAGTCCTTCCTCCATCAGCGAGGCCTGCTGCGCAGGACAGGAGACGCTAATAATAGGGAAGCCGAGGCTCACGTTAGCCGAATCCGTGGGCGGTAATGCGTCTGTCATTACTGTATATTGCCCGACAATTTGCGAGGCAAGGCGTAGGGTAATCTGATTATTCACCGCGGATACCATCCCACACACAGGAATAAGGTTAGCGCCCGGATGTACATCATATTGATAACGCACTGCCTCTGTCGTCGCTTCGCTATCAACAACATTGATCTCAAGCGCGGCAGCTTCATCCATCCAAACCCCCAGATAGAGACTCAACGGGGCGGTCCCGTAGGGATTTACGGTGACAATGGCCTTGTCACTGGTATTAGATTGCGTGATCTCCGCTAATCGTTGTTCATATATGGCGT [...]
+TATCCCAATTAATCAGGAGAAACGTATGAATAAGAAAAGTTCGTCAATGGTTAACATGCCCGCACCGCGTGAGCCGATTAACCAGAAAATCGATACCAATAACGCACTGGTTTTAAACCATAACGCCATATATGAACAACGATTAGCGGAGATCACGCAATCTAATACCAGTGACAAGGCCATTGTCACCGTAAATCCCTACGGGACCGCCCCGTTGAGTCTCTATCTGGGGGTTTGGATGGATGAAGCTGCCGCGCTTGAGATCAATGTTGTTGATAGCGAAGCGACGACAGAGGCAGTGCGTTATCAATATGATGTACATCCGGGCGCTAACCTTATTCCTGTGTGTGGGATGGTATCCGCGGTGAATAATCAGATTACCCTACGCCTTGCCTCGCAAATTGTCGGGCAATATACAGTAATGACAGACGCATTACCGCCCACGGATTCGGCTAACGTGAGCCTCGGCTTCCCTATTATTAGCGTCTCCTG [...]
+NODE	1316	3163	178197	176200	0	0
+AAGATTATGCTTACTTTTTGGGTAAGGCGACGGGAGATAAAACGAGTTTTTTTATCCATGATGACGCCAATAATCGGCTTCGCGTCGTGTTGAAAAAATCCCCGGATGGCGTGTGGCGCCCGCAGCCGGAAAACAACCTGCTGACACAACAATCTAAAGTGAGCGGCGGGTACTATAGCGATGGCACGCTGCGAGAAACCGATTTAGCGCAACTGGCGCAGGCGTGCAGGGTGGAGGGAGACACCGTTAACCTCACCGGCACGCTTCGCCAGCAGGGGGACGGCGAGTCCGCTTACTGGACCCTGACCCCGGATAACCCCCTTGCCTGCGTGCGCGATGCCAATAAGCAGCAGCCTGGCTGGAACCAGACGATGCAACTGGTGCTAACCCCACAAGAGCGGGAATCGCTCAACAATTTGGTCGGTAAAAAAGTCAGCGTCGGCGGCGATATTTTTCTGGCGCTGAGCGCCTCGCATCATACGCCGCTGTTAC [...]
+CCAACTCCGCAGAAGCCGGAAAACGATCTGTCGATGACCTTTTATTATGCGCCGGAAGAGCGCAGTCATTAAAAATGGGGAGTCTCACATCACCAACCCGGCCCCTCCATCACGGGCATGAGTTCCACAATATTCTCCAGTACCAGTGGCGTGTGGTGATCTGAACTTAATGCCAGTAAAACATCACCTGTGACAACAATTTCTTGGTTTAACAAATCGTCGCCGTACTGTACTTTAACTCTTTCTATGATCTCATCGCTCAACAAGAGTTGCACTTGCCCATTCCAGTCGGCTGTCTGCATGTCGGCATCCTGGACGCAGGTTAACGGTTCTTCGAGTTTAACCACCCAATAACGCTGCGCGCCGCTTTTTTGCTCTGCCAGTATTCCGCGCAATGACACGGTATCGCCTTCCCGCACGCAACGCTGTTGCCGTTTTTTCGCCATTTCTTCAACCGTTTTGACTGGCAAAATGTCGGTGCTGTGGTTACAC [...]
+NODE	1317	1097	49536	48863	0	0
+TCAGCGCTAATACAATCGAAATCACGCACAGCCTCGCCGCCGCGCTCTCCCCGCCAGGCGTCTGAATCAAGGTATACATAGCGGAAGGTATGGTGCGGGTTTCGCCCGGAATATTGGAAACAAAGGTAATGGTCGCGCCAAATTCGCCAAGCGAACGGGCAAACGCCAGCACCGTACCGACAATAATGCCCGGCAGGGTAAGCGGTAAGGTGATAGTCAGAAAAACGCGCCAGCGCCCGGCGCCCAGCGTTCTGGCGGCCTGTTCGAGCTTGATATCCACCCCCTCCAGCGCCAGCCGAATGGCCCGCACCATCAGCGGGAAGGACATCACCGCCGCCGCCAGCACGGCGCCGCGCCAGCTAAAGGCAAACGTGAGACCGAACCAGTCATACAGCCACTGGCCAATAAATCCGCGTCGCCCCATCGACACCAGCAGCAGATAGCCGACCACCACCGGAGGCAGCACCAGCGGCAGATGCAGGACGCTATCAA [...]
+AAACCGTTTACCATCGACAACAAAACGGACTGGATTCGTCTGCTGAACGGCGGGCGTCTGGCGGTGGGCGATCCGCAACACGTACCGGCGGGAATTTATGCCAAAGAAGCGCTGCAAAAGCTGGGCGCATGGCAAACGCTTGAACCGAAACTGGCGCCGGGCGAGGATGTGCGCGGCGCGTTGGCGCTGGTCGAACGTAACGAAGCGCCTTTGGGCATTGTATACGGTTCTGATGCGGTCGCCAGCAAGGGGGTCAACGTGGTGGCGACGTTCCCGGAAGATTCACATAAAAAAGTGGAATACCCCATCGCTATCGTGGAGGGGCATAAAAATGCGACCGTCAGCGCGTTCTATGATTACCTGAAAGGACCGCAGGCCTCGGCAATCTTTAAACGTTATGGATTTACGACGAAGTAATGATACTGACCGATCCAGAATGGCAGGCTGTCCTTCTTAGCCTGAAAGTGTCTTCCCTGGCCGTGCTGTTTAGCC [...]
+NODE	1318	51	93	93	0	0
+GTTCGAACCCCCGATACGTTGCCGTATACACACTTTCCAGGCGTGCTCCTT
+CCCCCCCCTCACCGCCATATTTAAGCTGAGAGCCTGTACAGAAGTACGGGC
+NODE	1319	1674	83064	80365	0	0
+ATAGTGAACCCAAGTACGCGTTTTAGGGTGAGGGTGTGCATTGCGGTGTGTCTCCCTGTTTGCATGTGTTATGGCGACGTTAAGAGTCGCGTGTTGTTATGCCATGTTCCGGCAGGGTACTTTGAGCTATAGCAACAGGTTGGGAAGGATTCCAGCGGAGCGTGATGTTTAACACTGTTAAACATCTATTAACAATTATGTTTTGCCCTTATGCGGCTTCGCGTGAACATTCACGATAAAGAATTATCTTAAAAATAGAAACGTAGTGTGACGTTGTCACTTTTTGTAGATAAAAATAGGCCGCAATGGGAGAAAAGGCAGGTAAAATCCTGCCTTTTGTGGGGATTAACGGAATAACGGTTTTACAGCGACGGGAATAATGAGTTGAGCTTGCCATTGCGCCAGCGTCAGACGCGCCAGTTGCCCCAACGCCTGATAAAACGGATGCCCGGCATGATCGATAAATACGTCCAGAAAGCGGGACGACCACGG [...]
+AGGCGCTTCCGCTCTGAGTAATGAAATCGCCGCAGGATCGGTGTTCTTTGCCGTAGGCGGCATCTGGTGGCTGGTGGCGGTACTCGGTAAAATGCCCCCGGCGCTGGGTAAAGTGTGGCTGCTGGTCAGTATGGCGCTCGGCGTTGCATTCATCTGGGCAATGACGCTCGTTTATCAGATAGATACCGTGCCAACCTGGTATAATGGCTACACCACGCTGGCCTTTTTCCTCACGGCATTCCTGTGCGGCCCGGTGTTTGCGGCGTTACTGCTACGCATCGCGCGCGTCCCATTTTGCAGCGTGACGTTTGCCAGTATTAGCGGCCTGGCGTTGGTGGTGTGCGTGGCGGTCATCGTACTACAAGGGCTGTCTCTCTCAACCATTCACAGTTCCGTGCAACAGGCCAGCCATCTCGCACCGGATTACGGTATGCTACAGGTCTGGCGCATTGTCTTGCTTGCTGCCGGATTAGGCTGCTGGCTATGTCCGCT [...]
+NODE	1320	175	6302	6302	0	0
+TCGGCGCGTTAATCGTTAGCGGACTGGGCTGGCTGACGGCAAAAGACGATACCATCGCCCGTCAGCGCATCGTGCGCAGCATGTTTTTTCTGTGGCTGGTGATGGGACTGGGATTCCTCGCGTCGATTATGCATCTCGGCTCGCCGATGCGCGCGTTTAACTCGCTTAACCGCGT
+CGACGCGAGGAATCCCAGTCCCATCACCAGCCACAGAAAAAACATGCTGCGCACGATGCGCTGACGGGCGATGGTATCGTCTTTTGCCGTCAGCCAGCCCAGTCCGCTAACGATTAACGCGCCGACCACGCACTGACCAAAGACCGTGAAGATCATCAACGGCCATTCATGCCAT
+NODE	1321	1609	88513	87880	0	0
+GCCAACTTTTTCAGCAACATACCGCACGCTGGCAGCATGAACTACCGGAGCTCACCAAACCTCAATATGCGGTGATGCGCGTTATTGCTGAACATCCGGGTATTGAACAGGTCGATCTGACCGAAGCGGCGGTCAGCACTAAAGCGACGCTGGCGGAGATGTTAAGCCGGATGGAAAATCGTGGGCTGGTAAAGCGAGAAAACGATCCGCTGGATAAACGTCGGCGTTTTGTCTATCTCACCGTTCAGGGCCAAACGTTGCTCGCCGCCGCGATACCACTGGGGGATCGCGTTGACGATGAGTTTTTGGGGCGACTGAGCGCTGAAGAACGCGAACAGTTTACGCAACTGGTACGCAAGATGATGACGTAAGCGGCTTGCGCCGCTTTGCTATTGTTTGGCCATCAGCAGTGAGATATCCACTTTGGCCAGCGCCCGAATTGCGCTTTCCGGCAGGCCGTCATCGGTGACGATTTGGTTGAATTCCGCCAGC [...]
+AGAATGACTAACGCATCCACGACGCCGGCGAACTCCCTGGCGCTGGCGGCAGCCCCACAAGCCCCTTCAGCAAGAAGATTCGCGCACGCTTGCGGGTTAAGATCGGCCCCCCATGTGGAAAGCCCGGCGCGCAGGCATGAACGCGCAGCGCCCATTCCCATTGAGCCAAGCCCCACAATGCCGACATGAAAATCGGTTCCTGTTGTCATTATCACTCCATGTTAATTTACGTGATATTATGTTTTGTTATGTGAATATAGGCGTTTTTGTAAACAATTGCGGTGAGTTGTTTCACAAAAAATAACAAAATGTGTTATTTTTTGTGAAGGCAATCCTCATAGAACTTCACACGCTGTGACGAGAAATCGCGTAAAATCGCGACAGGACTAAAGAAAGGAGCAGACGTTGATACCTACTGAGCGTCGACAAATCATTCTTGATATGGTGGCGGAGAAAGGCGTCGTCAGTATCGCTGAACTGACCGAGCGCATG [...]
+NODE	1322	4	214	207	0	0
+TGGT
+GCCA
+NODE	1323	20	1103	1103	0	0
+ACCGGCTTCGTTGGCACGCG
+TTCCCGGACGATCCGGCGTG
+NODE	1324	51	5224	3061	0	0
+CAGTGCAGGAATCAGGAAAAATAGCCCGACCGGGAATATTCACCCGGATGG
+GATCATGAAATCGGTTCTGCTTACCAGCCGGCAGCGATCGATAACCGTTCC
+NODE	1325	3	334	334	0	0
+GCT
+ACT
+NODE	1326	51	2428	2360	0	0
+GCCTGGCGCTATTCGGTATCCTCTTCAAGTTGACGATTGCGCACCGATTTA
+CTCCAGATCACAATCATTAGTCCGCGCGCCAGCGGCGAATCCAGACCTACC
+NODE	1327	693	33362	32858	0	0
+TGCCAGTATTCGATCCCGGCGGGCAAGGTGCCTTTGCTAACCTGCTGATAGATGTGCTCGGCGTCGCGTTTTACCTCAAAGGTATCGCGCCACTGGCTACGGAAAAGCTCAATAGCGGCTTTGTCGGTAGGAAATTCGTGCGCGGGCAACAAATTGATGGCCTCGACCTCCTCCAGCGTACGTTGGGTATCCGCGTCAAACAGACGCAGGCTGTCGATTTCATCATCAAAAAAGTCGAGGCGATAAGGTTGTTCGCTGCCCATCGGAAAGAGATCCAACAGCGCGCCGCGCGTCGCGTATTCGCCATGCTCCATCACCTGATCGACATGCCGATAACCGGCGCTGTCAAGCTGCGCGCGCAGAGCGTCGCGGGACAGCCGCTGGCCTTTTTTCATCACCAGCGCATGACCATGCAGATAGCTATGCGGACAAACGCGCTGCATCAGGGTGTTTACCGGTACAATCAAGACGCCGCGCTGCATTGACGGCAAC [...]
+CTGACATGCAAAATGCTCTGCGATTGCATGATGAAATCCGCCAGTTTACCGATCAGATGGTGATGAACCTGGCGGACTGGGAAACGCTACCGTATGACAGCTTCTCCCCGCATCAGGAAATTATCTCTTCGCGCCTGTCCACGCTCTACCAGTTGCCGTCAATGCAGCGCGGCGTCTTGATTGTACCGGTAAACACCCTGATGCAGCGCGTTTGTCCGCATAGCTATCTGCATGGTCATGCGCTGGTGATGAAAAAAGGCCAGCGGCTGTCCCGCGACGCTCTGCGCGCGCAGCTTGACAGCGCCGGTTATCGGCATGTCGATCAGGTGATGGAGCATGGCGAATACGCGACGCGCGGCGCGCTGTTGGATCTCTTTCCGATGGGCAGCGAACAACCTTATCGCCTCGACTTTTTTGATGATGAAATCGACAGCCTGCGTCTGTTTGACGCGGATACCCAACGTACGCTGGAGGAGGTCGAGGCCATCAATT [...]
+NODE	1328	221	13497	13497	0	0
+AGCGTAGCGCAGGCGGCGCCGGTAAGTTCGCCCAACTGGCGCTGATCGCCCGCTTTTGTCGGCAGCGTGTAACGTTGTTTTTCAGGCATAACGGTTGTCAGTATCTCTTTTTGTTTTACGCCGCACTCTACGCGTCACCCTTCAGGCTGCTTCATGGTTGGCTGCGCGCCGGGACAGCATGAAGGACTCAGGTATTCAGGGGCATATGACTGATAAGCAAT
+CGGCGCGCAGCCAACCATGAAGCAGCCTGAAGGGTGACGCGTAGAGTGCGGCGTAAAACAAAAAGAGATACTGACAACCGTTATGCCTGAAAAACAACGTTACACGCTGCCGACAAAAGCGGGCGATCAGCGCCAGTTGGGCGAACTTACCGGCGCCGCCTGCGCTACGCTGGTGGCGGAGATAGCCGAACGCCATGCCGGTCCGGTGGTACTCATAGCGC
+NODE	1329	1734	85273	84568	0	0
+TTTGGCCGCTTTAGTATCGAGATAATGCTCATTATTTGGATTACGACCCACAATGAGCGGAACGCGTTCCACAATATTAATTCCCGCCTCGGTCAGTATTTCGACTTTCTTCGGATTATTGGTCAGCAGGCGAACTTCATCCACGCCCAGTAATTTGAACATATCCGCGCACAGGGTGAAATCACGCTCATCGGCGGCAAAGCCGAGCTGATGATTGGCCTCCACCGTGTCATAGCCTTGATCCTGTAACGCATAAGCGCGAATTTTATTAAGCAGGCCGATATTGCGGCCTTCCTGACGGTGGTAAATCAGAATACCGCGTCCTTCTTCCGCAATATGCGTCAGCGCGGCTTCCAGTTGAAAACCACAATCACAGCGCAGACTAAAAAGCGCGTCCCCGGTAAGACATTCGGAATGAACGCGAGCCAAGACCGGCGTTTTACCTGAAATATCGCCAAAAACCAGCGCGGCATGGTCGTGTCCGGTTGCCAG [...]
+TATTTCACATTACTTCCCGTTATGTGGTTTGCGCGAATAAATCGTGTCCAACTTACCGCATCCAGCCTTCTAAATTACCATTTTCCCGCCTCGCGCGAAATGGAAATGCGCCCGCCATCAGATGATTTAAGGGCAATAGTCAGAAAATCAACCGTTGTCAGCTTTCCTGCTCGCGTTCAGCAATTTCTTGCGCTTCTTCACGAGGCGGCATAAGCGGCCCGCAAATTCGCTGCGCCAGCCAGGTCGCCAGGGTAACTAATAGCCAGGAGATAAGCGTGGCGACCACTAAATCTCGCGGCCAGTGCATTCCCAAAAGCAAACGGCTGCCCATTACGCCGGTCGCCCAGACTAACAAAAACGCGATGGTGAAAGCCCGTCTGCGCGGCCATAACAGACCCACGGCCAAAAGCGCCCAGCTCGCTGCAAACATGGTATGTCCGGAGGGAAACGCAAAGCCCGTCTCTTTTTGCCAGTGCTGACGCAGGAAAACGG [...]
+NODE	1330	42	42	42	0	0
+CGGGCGGCTACACCATGTCGGTGGCGATGACCAACTGCGGCG
+GAAATAACAAAAATCGCCAATACCAGTAAGAAAATGAGTAAA
+NODE	1331	9	204	204	0	0
+GCCCCGCCG
+TCCATGCCG
+NODE	1332	962	47778	47467	0	0
+ACGCGGCGGCGCGTTTATCGGCCTGAACCCGATCCACGCGCTTTATCCGGCGAATCCGGAGAGCGCCAGTCCCTACAGCCCCTCGTCTCGTCGCTGGCTGAACGTGATATATATCGACGTCAATGCCGTCGAAGATTTCCGCCTGAGCGAAGAGGCGCAGTCATGGTGGCAAATGCCTGCCACACAGCAAAAGCTGCGACAGGCACGCGATGCGCAATGGGTGGATTACGCTACCGTTACCGCGCTGAAAATCACGGCGCTGCGGATGGCGTGGACGCGGTTTGCCGCTCGCGACGATGCGCAAATGGCGGAGTTTCGTCACTTTATCGCCCGCGAAGGCGAGAGCCTTTACTGGCAGGCGGCATTCGACGCGCTGCATGCGTATCAGGTAAAAGAGGATGAGCAGCGCTGGGGCTGGCCAGCCTGGCCGGAGGCTTACCAGTCGGTAGAGTCTCCCGCTGTCAAACAATTCTGTGAAGCGCACCGCGAAGA [...]
+GCCAACAGATCGTCAACCGGATACTGAACATATGCCCCGCGATCCGCGGTTTCGCCATACGGTATCCACCACAGACGCAGCAACGACATGACATGGTCAATGCGCAACGCGCCACAGTTTTGCATATTGGCGCGCAGCAGATCGATAAAGGGCTCATAGGCCCGGGCGACAATAATATGCGGGTCCATTGGCGGCAGCCCCCAGTTCTGACCGAGCGGGCCGAGGATATCCGGCGGCGCGCCGACAGATGCTTTCAGGCAGTACAGCTCCCGGTCGCACCAGGTTTCCGCGCCGCCTTCCGCTACGCCAACCGCCAGATCGCGGTACAGACCAATCGGTAGTTTAAAACTCTGGCAGGTATCCCAGCAGGCGGCGAATTGGCGCCAGGCCAGCCACTGAAGCCAGAGGTAAAACTCCACCTCTTCGCGGTGCGCTTCACAGAATTGTTTGACAGCGGGAGACTCTACCGACTGGTAAGCCTCCGGCCAGGCT [...]
+NODE	1333	234	15070	15070	0	0
+TTTGTTGTAACGATTAGCTGACGGGTTTATTTCCAGTTGGGTGATAAGACTATAAAAACCTGCGAGGAGGCTCAAAATGAAGAAATCAGATGGTGAAATTCACGAAAAGACAGCATCCTGGGGCATTTTGCAGTCAGAATGGCTAAAAAAATGTGGACGGCTATTATTGCTGTTACTTTACCGCTTCGTTATCGGATGGGCTTTTTTTCAGTTACTCGCCATGATTGTGGCAGG
+GCGGTAAAGTAACAGCAATAATAGCCGTCCACATTTTTTTAGCCATTCTGACTGCAAAATGCCCCAGGATGCTGTCTTTTCGTGAATTTCACCATCTGATTTCTTCATTTTGAGCCTCCTCGCAGGTTTTTATAGTCTTATCACCCAACTGGAAATAAACCCGTCAGCTAATCGTTACAACAAATATAATTAAGACAAAAACTAAAGAGTAAGGTATTTATATCATAAGTGCTA
+NODE	1334	2016	114999	114176	0	0
+TGAAAGAGGAGACCGTACAGCTACGGCAGAAGGTGGCGCAGGCGCCTGAAAAAATGCGTCAGGCGACGGCTGCGTTGAATGCGCTGAGCGACGTCGATAATGATGATGAAATGCGAAAAACGCTGAGTGCGCTTTCGCTACGTCAGCTTGAGCTGCGCGTGGCGCAGGTACTGGATGATTTGCAAAATTCGCAAAACGATCTTGCCGCTTATAACAGCCAGCTTGTTTCGCTACAGACCCAGCCTGAGCGCGTGCAAAACGCCATGTATACCGCCTCACAGCAAATACAGCAAATCCGTAACCGTCTGGACGGCAATAACGTCGGCGAAGCCGCGCTTCGCCCCAGCCAACAGGTGTTATTACAGGCACAACAGGCGCTGCTTAATGCGCAGATCGACCAGCAACGTAAGAGTCTTGAAGGGAATACCGTTTTGCAGGACACCCTGCAAAAACAGCGGGATTACGTGACGGCCAACAGTAATCGCCTTGAAC [...]
+TAAAGCAGGTTCCAGATAATGACCAGATAGACGGTTTCAATCCAGCGCCCCGCCAGGCGCAGGGTGGTATAGAAATAGCCGGTCGCCGTTAATACCATTAACGCCACCGGAATAATGGAAAGAATCGTCACGGTCACCAGTCGAATGCCGTGAGATTCTTTATCGCGCCAGCTTTCCCGGCACAGTGGCCACACCAGCAATGTTATGACCAGCAGATTGAGGAAAATAACCGCCTGCCCCAGCACGTCATCCATCAGATTCAGCGGCGACAACTCCGCCACCACAGACCAAAAGTGCAGCGGCAGCAATGCGAGGCTAATGCGTACAATCTGGCGACGCCAGTGGCTGGTCAACTGCGCCGGCATACCAAAATGGCGTATCGCCACGCCCTCTTTTTCCAGCACCTTCCAGCACAGCCCAAAGACCAGCCAGAACATCGCGAGCTTTTTACTAAAGGCCCAGAGCAGATCGCTGATATTTAGCTGCATGGTC [...]
+NODE	1335	462	21616	21272	0	0
+CTTTTCGGCATTGTTCCATAGGGTTTCCCGAGGATGAAATGGCGATCGATAATGATTCGGCGTCGGATCGTTTATGCTGGATTATCCTGGCGTATGCGGGAAAGGGATGAAAGATTGTTAGGTGATAACAAATATCAGAACGCTATATAACGAGATGAGCGGTGAGTGAGGGGAATGGGGCAGCACAGCCGTGCCGCCCGCTAATAAACTTAATGCGCTTACTTCAGTTCCAGTTCATTCATTGCCGCAATGCTGAACCCGCCGTCAACATGAACGACTTCGCCAGAAATGCCTGCCGAGAGATCGGAGCACAGAAACGCCGCTGAGTTACCCACATCTTCAATAGTCACGGTGCGACGAATTGGCGTAACGGCCTCACAATGCGCCAGCATTTTACGGAAGTCTTTAATACCGGACGCCGCCAGCGTGCGGATTGGACCCGCAGAGATGGCGTTGACGCGA
+GTATTAAAGACTTCCGTAAAATGCTGGCGCATTGTGAGGCCGTTACGCCAATTCGTCGCACCGTGACTATTGAAGATGTGGGTAACTCAGCGGCGTTTCTGTGCTCCGATCTCTCGGCAGGCATTTCTGGCGAAGTCGTTCATGTTGACGGCGGGTTCAGCATTGCGGCAATGAATGAACTGGAACTGAAGTAAGCGCATTAAGTTTATTAGCGGGCGGCACGGCTGTGCTGCCCCATTCCCCTCACTCACCGCTCATCTCGTTATATAGCGTTCTGATATTTGTTATCACCTAACAATCTTTCATCCCTTTCCCGCATACGCCAGGATAATCCAGCATAAACGATCCGACGCCGAATCATTATCGATCGCCATTTCATCCTCGGGAAACCCTATGGAACAATGCCGAAAAGCGGGTAAAAGCCACTGGTATCATGAAACACAATCCACTATGTCGTCACAA
+NODE	1336	51	2411	2411	0	0
+ACCCCTTCCGGTCCCATAGCGTTTGCCATATAACGCACGTTGGCTTCCAGA
+TTCGCGTCAACGCCATCTCTGCGGGTCCAATCCGCACGCTGGCGGCGTCCG
+NODE	1337	2012	99362	98240	0	0
+AAGTCGGCGATCGGTTTAGGTCTGCTGTTATCGGAAGGTATCGGCGACACGCTGCGCGTATCGTTGGCGGCCGACCCGGTGGAAGAGATCAAAGTCGGTTTCGATATCCTCAAGTCGCTGCGCATTCGCGCGCGCGGCATCAATTTCATCGCCTGCCCGACCTGTTCTCGCCAGGAGTTCGATGTTATCGGCACGGTGAACGCGCTGGAGCAGCGTCTGGAAGATATCATCACCCCGATGGACGTCTCGATCATCGGTTGCGTGGTGAACGGGCCGGGCGAAGCGCTGGTATCAACGCTGGGCGTGACGGGCGGCAATAAGAAAAGCGGCCTGTATGAAGACGGCGTGCGTAAGGACAGACTCGATAACGACGATATGATCGCGCAGCTTGAATCCCGTATTCGCGCGAAAGCAAGTCAACTTGATGAAGCGCGTCGGATTGACGTGCTGCAGGTTGAAAAATAAGAACGTGATGGGAAGCGGCGCGCTTCC [...]
+AACCCCTAAAATCACTCCGACAGCCAGCGCTTTGCCGTTTTCGGCAAAGAAGCGTTTAATCGCATCCACCTGGTCGTGTTCGTTCTCGTAAATTTCCACGCTGTCCTTCTCCTTAGCCCAATAAAGTGCGCAAATGCGCGGCGACGCTGTCCTGCGCCACTGCCGTTTGCTCACCGGAGCGCAAATCCTTCACTACAACAGTCCCATCGGCGACTTCAGATTCGCCAAGAACCAGTGCAATACGGGCGCCCCACTTATCGGCGCGGGCAAACTGTTTCTTAAAGTTGCCGCCGCCGTGGTTTGTCATTAGCTTCACGCCTGGCATTTCATCGCGCAGCCGCTCCGCCAGCGTCATTGCCGCAGACTGCGTTTGTGCGCCGGCAGCTACCAGGTATATATCGACAACAGGAGAGGCAATAAATTCCGGATTAACTGCCTGAACTAACAAAACAAGTCGTTCCAGGCCCATCGCAAAGCCCACTGCCGGGGTAG [...]
+NODE	1338	1809	117314	116143	0	0
+GATGGTGATATCGACCAAAGATAACGAAACGCGAATTCAACCCAATACGAAATGTCCTGAGAAAAGCTAACTATCAGGAGATTTTATGAAGAAAGTTATTTTAGCCACTGTTTTATTCACCCTAAGCGGCTCGGTTTTATCTTCTTCTTTGCAGGATCAGCTTGCGGCGGTAGCCCAGGCTGAACAGCAAGGAAAAAATGAAGAAAACAGACAACGTGATGCTCTGCAAGCCAAACGAGATCAAGAGGCTCAACAGGAAAGACAAAGGCAAGCCAATGCGGCCGCGGTTGCTAAGCAGCGAGCAAAAGCGGCAGAAGCTGAACGGAAAGCACGGCAAGCAAAATTGGCAGCGGAAGCCGCGCAAGATAAAGCGCGCGATCAAAGCTACGAAGATGAGCTTCGTCGTTTAGAAATTCAGAAACAAAAACTGGCGCTGGCCAGGGAAGAGGCCCGGGTAAAAAGAGAAAATGAATTCATCGATCAAGAGCTGAA [...]
+TGCACAGCTTCTGGTGGCAAAGCACTGCATCGACACAATAGTGGGTTTCACTGGCAGCACACAATCAAATCTGACAGTCGGCTTCGAGCGAGGTGCGGACATTGGTAGCCTCAACAACATGACTAGCATTGAGGTGTATTAATCAACGGGAAGCAGGTCAGTTTATTCCGCCAGCCCGACTTTTACGAAAGGGCTACCATGACTGCGCGATTTTTTGATTAGCTTGCCTACGTATAATTCTCTGATTTCTGGTGATGCGATTCGTCCAACAAATTCTGAACGGTTGGTTTCGGGGGGGATGACCAATTCCCGGGTAAAGTATTGCTGAGAGCCTGCCTTCAACCAGCACTGTATCTCGTAAACTTCCATCACCAAACCGCCGTAGGTGGCGTATGCAAATTGTAGGTTTTCATCTTTTGGTACTTTTGCCCAGACGCCACGCGTAGCTTCATATAATGCAAGTGCACTCATGCCAGACTTGTAGGTGCTGTT [...]
+NODE	1339	112	38782	37601	0	0
+CGTTTACGGCGTGGACTACCAGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTGAGCGTCAGTCTTTGTCCAGGGGGCCGCCTTCGCCACCGGTATTCCTCCAGA
+TCAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCTGGTAGTCCACGCCGTAAACGATGTCTACTTGGAGGTTGTGCCCTTGAGGCGTGGCTTCCGGAGCTAACGC
+NODE	1340	12304	820026	816812	0	0
+TCCCCGTTTTTATCGTGGAAGACAGATATGTTTCGAAAAATAAAAATTCGCAAAATGACGCTCAACCGGGCGCTGGACAAATACCTGAAGACAGTATCCATCCACAAAAAAGGTCATCTGCAGGAGTTTTATCGCGTCAATGTGATTAAACGTCACCCTATGGCCGAGCGCTATATGGATGAAATCACCACCGTTGATATCGCCACTTACCGGGATCAGCGTTTGGCTCAAATTAACCCACGAACAGGGCGTCAAATCACCGGAAATACTGTCCGCCTTGAACTGGCGCTCTTGTCGTCATTATTCAATATCGCTCGCATTGAATGGGGGACCTGCCGTATGAATCCCGTCGAACTGGTTCGGAAACCCAGAATAACCAGCGGCCGCGATCGCCGACTCACTTCCGCCGAAGAACGCAGGCTTTCCCGCCATTTCAGGGATAAAAATCCGCAGCTCTGCGTCATCTTCCATCTGGCCCTGGAAACCGCAATG [...]
+GTGCACAGAGGTATGGGTGAGTAAAATCATTAACGATGAAAATAGAAAGGTTCAGTGGAATGATGCTATTAATGGGCTTCCTGTGATAAGTGATAATATGATTTGATGTGTAATCATGCTTCACCAGCATAAGGCAAGAAGATTATTAATATATACTGGATGTAGTTCGCATCAGAGCGTTTCTGGTTTAAGTGAATAACTATTTTATCTTCAACATTTGCTTGTGAGATAAGAGTTCTGTTGTTTAGAGGGACAGATGTATGGAAAAAGTATCAATAAGAAAAATCAACAGGACAGAGCATTTTCCTTCATTAAATCTTCCTTCTGATACATCCTGGGTTGTTTGGTGGTATGGTTTCTTAAAAAAGAATAAAAGACGAGGTGAACAACCTAAAGTAGCAATTACCTTTCGGGAAGTTCAGGCCGATGGAACTCTTTGTGATAGATATTATGAGCAAGAATGTCTGTTGACTGATTTGTCTTTTTTTAAAA [...]
+NODE	1341	44	2696	2625	0	0
+AACCTTCGTTCCTTCTTTGTAAGTCAAAGATACAGCTTCAACTA
+TCCACCCAGGTTGGAAAAACGTGCCAATTTACCACCGGTCTGGC
+NODE	1342	6546	340844	335699	0	0
+GGCCGTTAATTTCGTCACCCAGAAGCGTAAAGCGTCCATTTCCGGCGTTCAGCGTCAGTTCCGCATCGGCTATAACCGTGCGGCGCGTATTATCGAACAGATGGAAGCGCAGGGTATTGTCAGCGCTCAGGGGCATAACGGTAATCGTGAAGTGCTGGCTCCGCCGCCTTTTGAGTAAACCTGTAAGCCGGATGGCGCTGTGCAGGCTGCCATCCGGCAACAAAATTCAGTATTTTCTTCTTTCCTCATGCTGATTTTTGGCCTGGAATAGAAAGCAAAAGGAGCTCCTGGTCGGGAGTGTCGAAACCTGAGGAATAATGATGAAAAAAATGGCAATCGCCTGTGCATTACTTTCAAGCGTTGTAGCCAGCAGCGTATGGGCTGACGCCGCCAGCTCTCTGAAAAGCCGTCTGGATAAAGTGAGCAGCTTTCATGCCACCTTTACTCAAAAAGTCACCGATGGCAGCGGTGCCGCGGTGCAGGAGGGACAGG [...]
+GAGGTTCGTATGTGACGGGTTCCCCTTCGCCAGCGGAGAAGGACGTTGGGTCGTCAGTACGTTAATACATCCGCCCTGATCCACGCGTTTTGCATCCGGGTCATACCATGCGCCTTCTCCCAGGGCGACCACGCCCGGCATCATGCGCGGCGTCACTTTAGCCTCGATGTGTACTTCGCCGCGATCGTTGAAGATGCGGACTTTATCGCCATTGTTGATACCGCGTTTCTGCGCATCCATTGGGTTAATCCACATTTCCTGGCGACAGGCGGCTTTCAGTACGTCTACGTTGCCATAAGTGGAATGCACACGCGCTTTATAGTGGAAACCCGTCAACTGCAGCGGGAATTTATCCGTTAGCGGATCGTTATAGTTTTCAAAACCTGGCGTGTAGATCGGTAATGGATCGATCACGTCGCCTTCCGGCAGCTCCCAGGTGGCGGCGATATCCGCCAACGCCTGTGAATAGATTTCAATCTTGCCCGATGGCGT [...]
+NODE	1343	4616	226729	225492	0	0
+GTATCGGCTTTCCGCCTGGCATCGCGACCGCTGGCGGTAAATAAACCTGAGATGCGTTTGTCAGTGGACGCTCAGTCCGGCAATACGCCGCGGCCCTTAGCCGCCGGGGATGATGCGAACTGGGAAACCTTCTGATCGACGTGCGCTGTGTGCTGTCGGTTATCGATTAATTTGCGAACCCGCCGATCCCTTTCGTCTGGTTCGCATAGATAAAAGCAAAAAATGTGTAATACGGGAAGCATGGCGCTGCCGCAGGGCGCGCCCGTTGTACTTTGAATGTGATTAAGAAGGCGCTATGACATCATCTCTGCCCTCCGGGCAAACGTCAGTATTGTTACAGATGACACAGCGCCTCGCGCTGTCCGACGCGCATTTTCGTCGGATATGTCAATTAATCTACCAGCGCGCAGGGATCGTGCTGGCCGACCATAAGCGGGATATGGTTTATAACCGCCTGGTCCGTCGGCTGCGTGCCCTGGGACTGGATGATTT [...]
+GGAAGGTTCTCAGGTTGTGGAGGACGTTGCCCGCCCGCAAGCCGCCAGCGTTTAAGCTGCCAGACCCAGGCCAACACTTCCGCAACGGCAGCATATAACTGCCCGGGAATTTGCTGACCAATTTCGGCGTGGCGATATAGTGCCCGCGCCAGCGGCGGCGCTTCTAAAGTGGGAACCCGATGTTCAGCGCCGATCTCGCGAATGCGCAGCGCTATTAATCCAGCCCCCTTCGCGACCACTTTCGGCGCGCTCATTTTGTTTTCGTCATACTGCAGCGCCACGGAATAGTGCGTCGGGTTAGTGACAATGACGTCCGCTTTCGGCACATCTTCCATCATGCGGCGCTGCGCGGCGGCGCGTTGCATCTGGCGAATTTTGCCCTTAACATGCGGATCGCCTTCGCTCTCTTTAAATTCGTCGCGAATGTCCTGCCGCGACATGCGTAATTTTTTCAGGTGGCTAAAGATCTGGAAAAACACGTCAAATCCCACC [...]
+NODE	1344	2398	121445	120435	0	0
+AGATTAAGCTTGCTGGACCGGAGGTCAATTTGCCATTCCGGCTGCTCCGCCAACGTTACCTGAACATGCCCGGTCAGCGAACTGTCATTCGCCGTTAAATTTAAGTGGTTAAATGAAAGACGTTTTTGCGCCTCCTGCCACTGCGCCTGTAATTGTCCCTGCCCCTCAATCCCCTGCGCCGGTAGATCCGCGCCCTGCAATTGCCAGCGCAGTTGCTCAATACCCGCGGTTAAATTATGCGGATAATCGGAAGCATCCACCGTTCCGCTGAATGATAAAGCAAGATCCCGCTGATCGCGGTTCACGCGTCCCGAAAAATCAAACGTGCCGCGATGCTCGGCATCTTGTTCCATATTCAGACGAATATCGCGCACCGTGACCTGATCATCATTTTCATGCTGGAAAACCAGCACGCTGTCGGCAACGCGCAGGCTACGAATATCAAACGACCAGCCGCGATCTTCCGCTACGTCCGGCAAGGTATTATCTTTC [...]
+AAATTCACCGTGGCATAGCGCCGGACTGGTATCGCGCTGCTGAAATCCCTATAATTGCCGCGTTTGGCGTTTCGGCGCCCCCCTTCCTTACATCCAGGTTAATCAGGTCGCTAAATTTATGACTGATCAGTCTCATCAGTGCGTCATTATCGGTATCGCTGGCGCATCGGCTTCCGGCAAGAGTCTTATTGCCAGTACCCTTTACCGCGAATTGCGTGAACAAGTGGGTGACGAACATATTGGCGTTATTCCCGAAGACAGTTATTACAAAGATCAAAGCCATCTGTCGATGGAAGAACGCGTAAAAACTAACTATGACCATCCGAATGCGATGGATCACAGCCTGCTATTTCAGCATCTTCAGGCGCTCAAGCGCGGTTCGGCGATTGAATTACCGGTATACAGTTATGTTGAGCATACCCGTATGCAGGAAACGGTTCGCGTAGAACCGAAGAAAGTGATTATTCTTGAAGGTATTCTGTTACTGACCGA [...]
+NODE	1345	51	2525	2407	0	0
+TGGTCCGCCAGGATAGGGGCCAGCGCTGATTGCAAATTATCCGCAAGCTGG
+ACCATTTTCCCGCCATGCTGACCGCAGAGCAGGTCTCGACGCTTAAAAATA
+NODE	1346	51	3247	848	0	0
+ACGCTTACCGGGCTAATCACGACTACAGGCCGGGCTAACGCGGAGTCGCCC
+TAGCGCTGCCGGGCGCTTTCAGTAAAGGAACCCACACTATGTATATCGGGA
+NODE	1347	1776	112586	111619	0	0
+GGTAGATAAGGTTATTTATCAAACAGATAACGGTTAACCAGATTTTCTAACAGCTCCTGATGACCGCTTTGATGTACTGGCGCCAGATTATGCTGCTCCGCATACTGCGCCAGTTCGCCTAAGGAGAGTTGTCCTTTCAGAATCTGCTGCCCCAGCTCGCCATTCCAGCCGGCATAGCGCTTCGCCACGCGTTTATCCAGCTCGCCGTCTTCAACCATACGCGCGGCGATTTTCAGCGACAACGCCATCGTATCCATCGCGCCGATATGACCGTAGAACAGATCGTATTTATCGGTGCTCTGGCGACGAACTTTGGCGTCGAAGTTGAGACCGCCCGTCGTGAATCCGCCCGCTTTCAGGATTTCGTACATCACCAGCGCGTTCTCTTCAACGCTAATCGGGAACTGATCGGTATCCCAGCCCAGTTGCGCATCGCCGCGGTTGGCGTCAACGGAGCCAAAAATACCCAGCGCGATAGCGGTCGCGATTTCA [...]
+CAGAGTGATGCGGTGACGTTTATCAAACATGAGGATATATCCTGCAAAAGTGAACCTGGACTCATGGATACTATCAAAACGGCTGACATAACGGTCTGGCGAATGATGACAAATTATTTTGCGCCTGAAACGTTATGCGAAATTCATCACAGCAAACGGCGGATGACAATTGTCATTTCTTATCTATATATTACGGTTTTTTGTTTATTTGCCAGGATTCGATCGCGATCGCTTTTTTCTTCTGTGGTTTTCAGCGTTTTTTTGAGAGCCAGAGCACATTTGGGGATTCTCTTAATAGCGGTGTGAAATAACGTAATTGAGCAATAAATCAGGAAATTCCAGTATGACGTTATGTCGTTTACTTGCCGTCTTATCTGATTATGGAGCTCACTATGCAGGCTTATTTTGACCAACTCGATCGTGTTCGCTATGAAGGCCCTCAATCGACTAACCCGCTGGCATTTCGTCATTACAATCCCGACGAGCTGGTTT [...]
+NODE	1348	3050	179510	177773	0	0
+GTCCGTATGTTTCGCGCCACTGCCTGATTGTCAGCAGTCGTCCTTTGGTAATAGTGATCATGCCGCGTTTCCTTCTTTCTTATTAACAATTACACCGTCATATATTTCATTAAGGTGCCCTCTCAACTCCATCCGCCTTAATGCAGATAACATGTAATCGCATTCAACCTGCTTATTCCCGGTAAATGGCTTATCGTCAGGATTACCCCAACAGCAATTACCCCTGGGCCATCCATGTACTTTCCGAACTCTTCCGTTAACAACGTGAAGTAATCCCCAGCCAGGAGGTAAATCCTCAACTGAAATAATTCCCGGCTCACTAATAAAGAATCGCCAGTCGCCCATGCCAAGAGAGGGATTTTTACGGAAACGCTTTTTTCTATCTGCCAACAAATCAGAACGAGAACACTTCACCTCTATCAGGCATGATGCTGAATTTCTGAATCCCATAGCATCTGGCTGTTCTCCAGTGCTGGTTACAGCTATAAAGCG [...]
+ATGGATCTCAAGAGTGGCTATCTGCGGCGATGTGAAGCACTGGGGCTTTCCCGGGAAGAAATGCAGATGCTGCAGGGGCTGAGCATTGAAGAAATTCACTATCTGTCAAATTCAGAAGTGTCGGTGCTGCGGCTGGATATTAACCACAACAATCTTGTGCGCATGTTGCAGCAGGCGCGGACTGAACAGAAACGTCTGCAGCGAATCGATCGCGCTCTGGCGCTGGGGGGCTCTATCGAACTCATGGCGTTTTATTTTGGTCTTTCCAGCGTGGATGTGGCTGCGCGGCGTCGTATCTCCGGTATTGATGTTCGTCCCGGAAGGGGGATCACCCTGAGTGACGATGAGAATTCTGAACTCTGGCGGTTGTGGCAGAAAGCCGGGATCAATGATGTGGAGAGTGTGGACGGGCTGGATGTCATGATGCTTTGTGCTGAACAGATGAACATTCCACTGACGGCCATCTGGCATGCCGTCAGAGGGTGGCATACA [...]
+NODE	1349	663	29844	29612	0	0
+CGCCTGGTCGCCGGGCGAGGAAATATTCGCGGCAGCGAAGGCCCAAGAAACGCGGTGGCCACCGGCCTGATTCTCTCCTGGCACAAGGAGTTTGCGCATGGACAGTAATCACAGCGCCCCGGCTATCGTCATTACCGTTATCAACGACTGCGCCAGCCTCTGGCACGAAGTGCTGCTGGGCATTGAAGAGGAAGGCATCCCTTTCCTGCTTCAGCATCACCCAGCTGGAGATGTCGTTGACAGCGCCTGGCAGGCGGCGCGCAGCTCGCCGCTGCTGGTTGGCATTGCCTGCGATCGACACTCGCTGGTCGTGCATTACAAGAATTTACCCGCATCGGCGCCGCTTTTTACGCTGATGCATCATCAGGACAGTCTGGCCCATCGCAATACCGGTAATAACGCGGCACGGCTGGTCAAAGGGATCCCTTTTCGGGATCTCCATGCTTAATCACAGGAGAACGGCAGTATGAATAACGCACTGGGGCTGGTTGA [...]
+GTCGCCGCGAACCATGACGGTAACCAGGCCAGAACCAATTTTTTCGTAGCCCACCAGCTGTACGTTGGCGGATTTAACCATTGCATCGGCGGCTTCAATGGCGCCGACCAGACCTTTTGTTTCAACCAGCCCCAGTGCGTTATTCATACTGCCGTTCTCCTGTGATTAAGCATGGAGATCCCGAAAAGGGATCCCTTTGACCAGCCGTGCCGCGTTATTACCGGTATTGCGATGGGCCAGACTGTCCTGATGATGCATCAGCGTAAAAAGCGGCGCCGATGCGGGTAAATTCTTGTAATGCACGACCAGCGAGTGTCGATCGCAGGCAATGCCAACCAGCAGCGGCGAGCTGCGCGCCGCCTGCCAGGCGCTGTCAACGACATCTCCAGCTGGGTGATGCTGAAGCAGGAAAGGGATGCCTTCCTCTTCAATGCCCAGCAGCACTTCGTGCCAGAGGCTGGCGCAGTCGTTGATAACGGTAATGACGATAGC [...]
+NODE	1350	47	2466	2454	0	0
+CTAGTTTGCCCGGTAGCCTTTGCTACCGGACGATAAGCGTTATCAAA
+TGCGTCACGCCTTCATAGAGAAGTCTGAGCGCAAACATCCCGATAAT
+NODE	1351	201	9683	9613	0	0
+ATAGTAGGCAAAGACGTTCTGGTGCCAGACGCCGTTATCTTCCTGCCAGTCGCCGCCTGCGTATTCATATATCCGCCGGAAACTGACGTCGGGAGTGAGATCTTTGTAGTCCTTGCAGGCCAGTTCGCAGGTTTTGCAACCGGTGCAACAACTGGAATCAATAAAAAATCCATACTGGGTTGTCATCGGTTACTCCTTACG
+TTGTTGCACCGGTTGCAAAACCTGCGAACTGGCCTGCAAGGACTACAAAGATCTCACTCCCGACGTCAGTTTCCGGCGGATATATGAATACGCAGGCGGCGACTGGCAGGAAGATAACGGCGTCTGGCACCAGAACGTCTTTGCCTACTATCTCTCCATTTCGTGCAACCACTGCGAAGACCCGGCCTGTACCAAAGTCTG
+NODE	1352	976	48502	48492	0	0
+TTAAGGAAGCAAAAGTGAATAAGACCATTAATCTGCTAAAATTACTGCCCGTAGTATTATTAAGCGCATGTACTACATCGTATCCTCCCCAGGATACAACATCGGCACCCGAGTTACCCCATCGTAACGTACTCGTTCAGCAACCTGATAACTGTAGCGTTGGCTGTCCTCAAGGAGGAAGTCAACAAACAATCTATCGCCATGTCTATACGCTCAATAATAATAGCGCCACGAAATTTGCCAACTGGGTTGCCTATAGCGTGACAAAGACCAGCCAGACAAGCGGTCGCCCGCGGAACTGGGCGCAGGACCCCGATTTACCGCCCTCGGATACGTTGGCCCCTTCGGCCTATAAAAATGCCCATACGCTATTAAAAGTCGACAGGGGACACCAGGCGCCGTTGGCAGGATTGGGCGGCGTTTCGGACTGGCCGTCGTTAAATTATTTATCGAATATTACGCCGCAGAAATCCGCCCTGAACCAGGGAGCAT [...]
+AATCAAGGCCCTTGACAGAGTTTCTCCGTTATCTTTCCACGCGCTGTATAGCGCTTCTCATCGACAACCTAACCTCTGCGCCAGACTCCCCTTTGTTGTTTTCACCTCGCTGGCTACCGCTTCAGGCAAGGCAGACCACAGCGTCAGCACTGGCTTCGTTTTATGTTCGATAGCCTCCACGGTAACCTGATAGTCGCAAAAATTCGCCGAACGGGGCGTATTCTGATCCATAATAAACGCAGCGTAATTTCCTTCACTTTTTGACGGCGCCGTTCCGGTGAATAAAACCTTCCAGTACCCGCTGGGAATTTCTACCGTCGCATCTTCTGGCAATGTGGCGATATGCCGCTCAAAAAGGGGGCCGGTCACTACGTGCACTACAGATACATCAGCCTGTTTGGCAAGTTCGCGCACCCGGTTTTCCAGTGCAGCCCATGCTCCCTGGTTCAGGGCGGATTTCTGCGGCGTAATATTCGATAAATAATTTAACGA [...]
+NODE	1353	3	174	174	0	0
+ACC
+GAG
+NODE	1354	48	2517	2495	0	0
+CTAACGCGATGGCAGGATCGTAAGGTAGTAGGCCGTTGTTCTCTTTAT
+TATTTTCAGCGCGCGGCGGAGATTTTGCACCGGCAGTTAGCGCTGCGC
+NODE	1355	2290	102477	98281	0	0
+CACGCGCTATCTTTCTGCAACCAGGGAGGAGCGCTAATGTTCTGGATTGTTCTTATTATTGCCGCCCTATTTTTTAGCTGGCGCAACTACAAAAAAAACAAACCGCTGATTGCGGCCCGTATCGCCGAGGAGAAAGAAAAAGATCGTCTGAAGGATCTGCGTCGCGATACCCGACGGCGGCAATGGGCGCTGGCGCTAGCCGATATCCTCGCCCGGCGCAACGGGCTACCGATCAAAGGCGTTGAGCTGGTCTTCAAACTTGACGATGACAAACACCGCTATCTGGCACAGCAGGTAAAAAAAGAGCTGGGCTTGAGCGAAAACCTCGACGGCGCGGCGTTACGCCACAAGGTCGAGGATATCTTACGCCGCTGGCCTGCGGGCATCGGCAGCTCGCCGCGCACGTTTTATCATCATCTGGCGGCCCAGGGCCAGGTCCGCGACGCGCTGGCTTTCGACTGCATGCGCACCGCCTTTCTGACCCGCTGTATC [...]
+TATTGTGTTCAAGGCCCAGCAGGTTTAGCGCGGCGGGTATATTTCTTTGCGCGCCCAGCTCTGCCAGCGGCACGAAATGTTCCGGGAGCCCGAACCAGTTGAAATTTTTAATGGCCGCCCGCCAGTTATGGTTATATTGAATGTCGGCGACGCTATCGAGCCAGGCGAGACCTTGCGCCTCATCCTTTTCGAAACCCAATAACCCGGCGTACTGAAAGTAGCCACGACGGATTTTCGGCACTGCGAATTCCGTTTGCTGCGCATTCTGACAGAGAAAATTATACATCCACCAGGTGTCAGGAAAATCGCGCAGGGCGAACTTTATCGTGTCATCAGAGAAATAATTGTTGAGCTTAACTTTTTCCATGATCGAACGCTGAAGGGTTCGCCAGAGCGCGTCATTATCGTCCAGATCGCTATAGCAGACCCGCAGCCACTCCAGCGCGTTGTGGCGAGATTCCTGAATATGCGCTCGCAGGCTAATCTCTTCGG [...]
+NODE	1356	968	64632	64100	0	0
+TGATGGCGGCCTGGCTTGCAGAGCAGCGTCGACACAGCGAATGTGAACAGTTACTGGCATGGCATCTGTTCCCATGGTCATCCCGTTTCCTCGGGGTGTTCATTGAGAATGCCGGACATCCTTTTTATCTGGCTTTGGGAAAACTGGCGAGTTTAACACTGGCAAAGTGGCAAACCATGTTATCAATCAATACTAAAAACCTACCTCTCCACCGCTAATATTGCCTATACAGAGGGCTTTATTCAAAACAAATATTCTAATGAGGCCTCCATATTCCAGACTCACCCAGATGAATTAAGTCCTCGTCAGGACAATACGCAACATAGAAAATCTTCTCCGCCACACAAGAATATGTGATTTGTTAGATCAGACGGTCATGTTGATAATTCCCCTACTGTCATTCGTCAATGACTGTGAATACTTTGCTTATCTCGGTCTCTTTTGAAGGAGAATACTATGGCTTACTTACAAATCACCCTGAATATCAGCAAC [...]
+TCCTGTGTTTTGGGATCCAGATGCCCATTTTCTAAAGTCCCCTTGTCCATTTGCTGAAAGCCTTTCATGAACTCCGGCTGCAATGTGGCAAATTTACCAATGGCAGCCAGCAGGCCACTACGATACTCATTCCAGTTTGAAAGCATATCTGTTCCTGTTTTATATTAGAGGATTGTGTATTCAGATCACATAATAAATGCGAATATCTGGTGCCTGGTTCAGAAAAGGCTTCAATTCTTCCACAACGTCTTTTGTAAATAATTCACTGGTAAGATACGCCTGCGCTTGAGCAGTAGTTTCAAAGCCATGTAAAACTTGCACGTCTTCATCCCGAATAAGCAATTCTTTTGAGGTCGCTCCGGCAATGGTATTTAAAAATGGCGCTTTATATTTTTGATAAACATTTGCTGCGGCAGGGCGGTTATGGTTGCTGATATTCAGGGTGATTTGTAAGTAAGCCATAGTATTCTCCTTCAAAAGAGACCGAGATAA [...]
+NODE	1357	1087	63591	63422	0	0
+ACGCACTTTTGCATTCGATGAAAAAACTCCGTTTCTGTTTTACACAGCGGCAGTCCCAGTTGAGTATGAAGTTTGACCAGCCAGGGCTGGGTTAGCCCCGCTTGTTCCATCGCTTCCGTACACGCGAAAACCTCGCCAGGCGCGCCATGCGTCAGGATCTGGCCCTGGCGTAATACGTATACGGCATCGCTAATTTCATAAATAAGATCGATATCATGGCTGGAGATAATGACATGATTTCCCTGCGCCACAATCCGCCTGATGATAGCAATCATCTGAGTGCGCCCTGCGGGATCGAGACCAGCAGTGGGTTCATCCAGCAATAGATAGCGCGCCTGTAGCACCAGCGCTCCGGCGATAGCCACACGTTTTTTTTGCCCATGACTCAAACACTGAATGGGCTGATGGCGAAAATGTTGGGCGTCAACCAGCGTTAGCGCCTCGTCGACGCGGCGCGTGATTTCCGCCTCCGGCACCCCCAAATTACGTAAA [...]
+CCTGCTTACCGAGCAAATCCTGTTAACGTGGCGCTTTCTCTTTATTCTTCTGGATGAGGCGGTGGCAATTCGTCGCGCGCAAACGCTGCGTTTTGGTTATTGCAGCCTGCCGAACGGCTATCGATCTCTGGCAATGCTGGCTGGACTCCTGTTTACGCGGGTGTTAATGCGTTATCAGCAAATGACTACCACGCTGGATATCAAACTGTATCAGGGTGATTTTCACCTGTAAGGACTATTATGCTTGCCACTTCAGACCTGTGGTTTCGTTATCAGGATGAGCCGGTACTTAAAGGGTTAAATCTGGATTTTTCGCTCTCGCCTGTTACCGGTTTGGTGGGTGCCAACGGCTGTGGGAAGTCTACGCTTTTTATGAACCTGAGCGGCCTGTTGCGTCCGCAAAAAGGGGCCGTGTTGTGGCAGGGAAAACCGCTGGATTACAGCAAGCGCGGACTACTGGCGCTGCGCCAGCAAGTTGCGACGGTTTTTCAG [...]
+NODE	1358	911	63436	63436	0	0
+GGGAAATGTTATACCGCCGGATAGCGAGAGTAGTAACCGCTCAGGGAACAAGCAACATAGCTCTTCACAAACATAAGTGCTAGCTTTTATATTAATATCAGAATATCTTTTCAGGTGGGCAGACTGAGTATCAACACAGAGTACTGTTCTATTCATTATCTCATAATAGTAGTGATCCTGGCGTATCACAATGCATAACGGAATATCTTCGCCATCTTTAATGCAGAGATTTGTATATTGATACTCAGCATCTTTATAGTGCTGAAAATGGAAATTTCCTCTGCATGACGGTGATGATAATTCATATAACTTGCAAAATAAATCAAATAAACGTTGCGCGTCAGGCGGAGAGGCAACATCACATAATTCCTTTATATATTGATCGGCAGCAGATCTTCGCGTGCTACAGAAAAAATCTTTAATCTTTTCCCATAGTAACGTAAAGAAGGAGCGTTGAGAGATGGCACTTTGAGAAAACATCTCACTTTTTAA [...]
+TTAGTTTAACTTCTTATAAGACAATTTCTACACGGTTGAGCAACTATTTACTTTCTCTAAAAATAATATAGCGCGTAATTAATCATTACTCATGGTACATGATGATGTGAGAATTAAGAAAACCATTTTACTTTCATTCGTTTTACCTGACATACTTCATGGCCAGGAGACGTGGGCATGACTAAAGCTACGGGTCGATATTAACAATAATTTTGACGGTTCAGGACAAAGCAAAAATCAGGTATTTCACTGATAAGCAAATCGATGGGCAACATGGTATAATATTTCGAATACCACCTATTCCAGTAATGAAGTCTCATATAATCACTTGTGGTCTACATTATGCCAATTACTATCGGGAGAGGATTTTTAAAAAGTGAGATGTTTTCTCAAAGTGCCATCTCTCAACGCTCCTTCTTTACGTTACTATGGGAAAAGATTAAAGATTTTTTCTGTAGCACGCGAAGATCTGCTGCCGATCAATATATAAAG [...]
+NODE	1359	51	3312	3312	0	0
+GGTCTCGTCGTACGTGTTAGTCAGATGATAGTAGATGGTAAAAGTTATCCT
+CACCGTTATTTCCAAAATAAAATCGTCCCTTTTCCCCCGCAGAGGCTTGCA
+NODE	1360	449	19484	19484	0	0
+GCTGGTTGCCGTCGGCACCGCAGTTAGGCACTAACCCGCTGTATATTGCGCGTGAAGCGGAAAAAGCCGGTATGACGCCGGTAGACTATACCGTCAAATCCCTGAAAGAGGGTTCGATTCGCTTTGCCGCCGAGCAGCCGGAAAACGGTAAAAACCACCCGCGTAACCTGTTCATCTGGCGTTCAAACCTGCTTGGCTCTTCCGGTAAGGGCCATGAGTACATGCTGAAATATCTGCTGGGTACTGAGCATGGTATTCAGGGGCTGGATCTGGGTAAACAGGGCGGTGTGAAGCCGGAAGATGTGGAGTGGCGTGACAATGGCCTGGACGGCAAACTGGATCTGGTGGTGACGCTGGACTTCCGCCTGTCGAGCACCTGCCTGTACTCCGATATCGTACTGCCGACCGCCACCTGGTATGAAAAAGACGATATGAATACCTCGGATATG
+GTACGATATCGGAGTACAGGCAGGTGCTCGACAGGCGGAAGTCCAGCGTCACCACCAGATCCAGTTTGCCGTCCAGGCCATTGTCACGCCACTCCACATCTTCCGGCTTCACACCGCCCTGTTTACCCAGATCCAGCCCCTGAATACCATGCTCAGTACCCAGCAGATATTTCAGCATGTACTCATGGCCCTTACCGGAAGAGCCAAGCAGGTTTGAACGCCAGATGAACAGGTTACGCGGGTGGTTTTTACCGTTTTCCGGCTGCTCGGCGGCAAAGCGAATCGAACCCTCTTTCAGGGATTTGACGGTATAGTCTACCGGCGTCATACCGGCTTTTTCCGCTTCACGCGCAATATACAGCGGGTTAGTGCCTAACTGCGGTGCCGACGGCAACCAGCCCATACGCTCGGCGCGCACATTGAAGTCAATCAGATGACCGCTATAGCGG
+NODE	1361	1261	64903	64390	0	0
+GCTACGGCGCAATCTTACAAACCGTCATATACAGCTTATCGCTATTGGCGGCGCTATTGGTACCGGTCTGTTTATGGGATCGGGTAAAACGATCAGTCTCGCCGGACCGTCGATCATTTTTGTGTATATGATCATCGGTTTTATGCTTTTTTTCGTGATGCGCGCCATGGGGGAATTGCTGCTCTCGAATCTGGAATATAAATCGTTTAGCGATTTTGCTTCCGACCTGCTTGGCCCCTGGGCGGGATATTTCACCGGCTGGACGTACTGGTTTTGCTGGGTAGTGACCGGTATGGCTGACGTGGTGGCGATTACCGCCTACGCGCAGTTCTGGTTTCCCGGCCTTTCCGATTGGGTCGCCTCGCTGGCGGTAGTGATCCTGCTGCTAAGCCTCAACCTCGCCACCGTTAAAATGTTTGGTGAAATGGAATTTTGGTTTGCTATGGTCAAAATCGTCGCCATCGTGGCGTTGATTGTGGTCGGGCTGGTGAT [...]
+AGACCCAGCACATCAGCTTACCGAGCGGCATCTTATAGATGGATTTTTCATGCAGGTGGGGACGCTTTTTGCGGTACACCAGGTATGAACACAGAATGATGGTCCAGACAAACATAAACAGGATAGCCGAAACCGTAGTGATCATGGTGAATGCGCCAATCACGCTCGGGTTGACCATCAGCATAACCACGCCGCCCAGCAGGCAGATACAGGAGAAGGTCAGGCCTTTCGCCGGTACCGCGCGTTTTGATAGCTTAGCGAACGCTTTTGGCGCCACGCCTTCTTGCGCCAGGCCAAACAGCATACGGCTGGTCGAGAAGACGCCGCTGTTGGCGGAAGACGCCGCCGAGGTCAGCACGACAAAGTTGATCACGCTCGCGGCGGCAGGCAGACCCACCAGTACAAACAGCTCAACGAACGGGCTCTTATCCGGCACCACGGAACTCCACGGCGTCACCGACATAATGACAATCAGCGCAAAGACGTAGAACA [...]
+NODE	1362	63	4077	4077	0	0
+GTTTATCCAAAGTCGGGCGACGTTGCCGGTATTATTGACGACCGGCTTGATTATGGCGATAGG
+ACTTTGGATAAACGGTATTTTCTGCGTCCTTAGCATATGCACGACCAGTGTCTGCGAGAGCAG
+NODE	1363	276	19132	19049	0	0
+ACCTCGTTAGAAAACGATTTGCCAGAGGGCTAAACACAACACCAACAGGCTAATCAGTAAAAATATCAGCGCGATGATTTTATCGGGTGAGCGATTCATCTGGGCGATCCTCAAACATCATTAAAACCACTGGCCAAAGCGTTTGATATAAAAGCGCTTCATGCCTTGCGCCACCAGACAGTAGCTCAATAATGTCGCCACCAACCATGGGAAGTAGCTCAGTGGCAGCGGCTCCAGTCCAACCATCGCGCCCAGAGGTGAGAATGGAATATAAAT
+GCCACTGAGCTACTTCCCATGGTTGGTGGCGACATTATTGAGCTACTGTCTGGTGGCGCAAGGCATGAAGCGCTTTTATATCAAACGCTTTGGCCAGTGGTTTTAATGATGTTTGAGGATCGCCCAGATGAATCGCTCACCCGATAAAATCATCGCGCTGATATTTTTACTGATTAGCCTGTTGGTGTTGTGTTTAGCCCTCTGGCAAATCGTTTTCTAACGAGGTGACGCCATGCAAAAAAGAGGGTTGGACAAAATTTTTTATCAGGTTGTCCT
+NODE	1364	725	41955	41779	0	0
+GGCTCAGAGCTTTGGTTTTGTCGATACCAATGCTGAACAGGAACAGCAGGTTGTATGGACCGGTTTTTTCTACGATGATGCCGCGTTCATCGAGATATTTGGCGACCAGACTTGCCGGAATACCGAATTCATCCATCGTACCGTCTTTCTTCATCCCCGGCGTCAGGATAGTGACTTTGATCGGGTCGAGGTACATGTGTTCGTTATCGATATTTTTGAAGCCATGCCATGCGCTATCTGAACGCAGCGGCCAGCACTCAGCTCCATCGATATGTTCCGGCTGCCATACGTCAAAGAACCAGCCGTCAGATTCGCTTTTCAGGCGTTTAATTTCTTTACGGAATTTAATCGCACGTTCAATAGAGCCGTTAATCAGGCGTTTACCCGCATTACCTTTCATCATCGCCGCTGCGGTTTCAGTAGACGCTACGATACCGTAGTGCGGAGAAGTGGTGGTATGCATCATGTAGGCTTCGTTAAAGGTTTCTTCGT [...]
+TGAAGTCCATTCATTTTGACTCCGCCTGGGTGCCTTATACCAATTTCTCCCCTATTTATCAGGGTAAATGCGGTATGAGCGGCGACCGTGTAGAAGGCAAAATCATTTATGAAACCCAGTCCACGCATAAACTGCTGGCGGCGTTTTCACAGGCATCCATGATTCATGTTAAAGGCGACATTAACGAAGAAACCTTTAACGAAGCCTACATGATGCATACCACCACTTCTCCGCACTACGGTATCGTAGCGTCTACTGAAACCGCAGCGGCGATGATGAAAGGTAATGCGGGTAAACGCCTGATTAACGGCTCTATTGAACGTGCGATTAAATTCCGTAAAGAAATTAAACGCCTGAAAAGCGAATCTGACGGCTGGTTCTTTGACGTATGGCAGCCGGAACATATCGATGGAGCTGAGTGCTGGCCGCTGCGTTCAGATAGCGCATGGCATGGCTTCAAAAATATCGATAACGAACACATGTACCTCGACC [...]
+NODE	1365	51	2904	2904	0	0
+GTTGAGTTAGTAATAACAGCGTGGACCGGCCAGGTTGCGTTAGGCGTCTCT
+CCTATGACGGTCTGTTGTATAACACTGACTACATCAAGAAAACTCTGGATG
+NODE	1366	77	5121	5121	0	0
+CGTCTTAGAGACTATCCCACCAGGCATTATTGGCGCAGCCAGTTTGGACACGGACAGCGCACAAAAACCGGAGCGTA
+ATGCCTGGTGGGATAGTCTCTAAGACGATATATTCCCGCCTTGAGCCGTGTTAATTTGTTGCATACTTTTAAACGGA
+NODE	1367	3175	149235	145037	0	0
+GGGTAGTGACGATTCGTTGTGCGAAATTGCACGGTAATCAGGTGCGCCTGTTCGCTGGCGCCGGGATTGTCCCTGCCTCTTCGCCAGTCGGCGAGTGGCGGGAAACCGGCGTCAAGCTCTCTACGATGTTGAACGTTTTTGGACTGCATTAAGGAACGATGATGCGTATACCTTTCACCCGTTGGCCGGATGAATTTGCCCGCCGTTATCGTGAAAAAGGCTACTGGCAAGACGTGCCGTTGACCGATATTCTGACCCGCCACGCTGACAGCGACAAGACGGCGGTCATTGAAGGCGAGCGCGCATTCAGCTATCGCCAGCTCAACCAGGCCGCAGATAATCTGGCCTGCAGTTTACGCCGTCAGGGCATCAAACCTGGCGAAACCGCTCTGGTGCAACTGGGGAATGTACCGGAACTGTATATCACCTTTTTCGCCCTGTTGAAGCTTGGCGTAGCGCCCGTTCTGGCGCTGTTTAGCCATCAACGTACCG [...]
+TACGGTTAGCGCCAGGCTTTTCAGCGCCGCTTTAGAGGCGCCGTAGGCGCTCATACCGATACGCGGCGTATGCGCCGCATCTGAGGCTACGGTGACAATCGCCCCTCCCTGCTGACGGCGAAACTGCGCCATCGTCTGCGAAAACAGGTTAAATGCCCCGCCCACATTGACCGCAAATGTCTGCTGCCAGTCGTCGACGCTAAGCGCATCGGTCGCTCCCATACGCAAAATACCGGCGGCGTTGACCAGCACATCCAGCCGCGGCGTTTTTTGCAACACACGCTGGCACACCTGCGCAACCTGTGCGGCATCCGCCACATCCATGACTTCGGTAGCAAAGGGATAATTCTCTTGCGTAAATTCGCGATCGAAGCCGATCACCCGCGCCCCGGCGTCAACAAACGCCAGCGCCGTCGCGTAACCGATCCCTTTCCCCGCCCCGGTCACCCATACCGTTTTGTCTGAAAAATCAATACAGGGCATTACTCTACC [...]
+NODE	1368	8420	422874	418334	0	0
+AAGATGAAAATCGCGCTCCGGGCGTAAGCCCGCGTCGCTGAGCGCTTTATAGCCTAATAAATAGCCGCCAAACGCCTGAGCATCAATCGCGCCGACTGTCTTACCGATGAGATCATGCGCCGTGGTGATGCCGCTATCGCGCCGGGTCAAAATCACGCTGCCAATAACATTACTCACCGCTTTCCCATCGCGCGTGGAACGCAGGGAAGCTAACCAGCGGAGCGGTGCATGGCTGTTCAGTTGGACAAATTGCGCCGGGTTGGTTATCACAAACTGCACGGTTCCCTGGTTAACGGCCTCCTGCATTTGATGCAGATCCAGCGGCTGGATGTGAAAGGTTTCGCCTGGAAGCTGTTGGCTTAATGTCTTTGCCAACGGTTGCCAGTGGCTACGCGTAGACGCCTCGCCGCGCATGGCCAGAATACCGATATTCCACGTCCCTGCCCACGCGCCATGACAAAGTAGCCCTACTGCCGCCAACACCGCCAGGCG [...]
+AAATGACGGCGGGCATAATGACGTTTTTGATATCGTCATCGGACATTGGCGTCAGAGCGTTAAAGAGCCGTATGGCTTCCTGTTGCCACAAGGCGATACTGGCCGGCGAACTGGCCAGTATCGTCCCGCGAAGCCCGGCAGGCTGTAAGCAGGCGTGCTCTGCGGCAAGCATTCCGCCCCAGGAATGTCCCAGTATCGAATACCCGTGCCCAATACCCAGGTGATGAATTAATTGGGTTAATTGACGGAGATAACGCGCAATAGTCCAGAAAGACGCGTCGGCATGAGGAAAATGCGTTGAACGACCGCAGCCATATTGATCGTAAAATATTACCATGCGCCCGTCATCAGCCAGACGGCGATAATTTAATAAATAATCAAAGCCGCCAGAAGGGCCGCCATGAAGGATAATGAGCGGCGTGAGTAATGATTTTCTGTCTCCATAAATCCGATAGCTTGTCAATATGTTTTCAGAAAACATTTCGCCATAGA [...]
+NODE	1369	16237	918805	904974	0	0
+ACTCGGAGACCTTGCGAACCTGGCAGTCATGGCTTCCATGATTGTACTGGCATGTCGTGGCAATATTTTCCGGGCTGTGATAACCGCAATTCCTGTTATTGTCGCCGACTTGTGGATTGCGACCAAAATTGCGCCATTTATTACCGGTATGGCTAAAGATGTCAATTTCAAAATGGCTGAGGGGTCAAGTGGTCAGGTATCAAGCTTCCTTGATGGCGGTAACCCCTTCCGTTTCTGGCTGCTTGAAATATTCAACGGAAATATTATTGCTATCGGGCTGATTCCTGTGCTTGCGCTGATTATTTATGGTGTTTTTCGCCTGACAAAAGGAACGGTCTATGCCTGATTACCACGCAGCGCTTGTCATTGACATTGGCACAACTAACTGCAAAGTCAGCTGTTATTCCTGTCATGACGTGTCAGTTCTGGAAGTCCGCAAGTTTCCGACGCCAATAATATCGTCGGACAAAGGCGAGGTAGATTTCGATATCG [...]
+CGCTGACGTTCAGCCTGTATTTGAAAGGCGCGCAACTGATTGGTGGCCCCAAAGCCAGCATTTTAAGCTGCGCGGAACCGTTAAGCAGCGCCCTGCTGTCGCTACTGCTGTTGGGGATTAGTTTTACCTTGCCGGACTGGCTGGGCACGCTGCTCATTCTCTCGTCAGTGATTCTGATCTCCCTCGATTCCCGTCGACGCGCGCGGGCCGCTTAACGCCGTTGATAATCACGATGACCGGGCGGAAGAGGGAAAAGTTTAATGGCGCTTTGCCTTAATCTCTTCGTCAGAAAGCCCGGTAATCATCAGCACCATCTCTCGCTCGATCCCCTGTTCCAGCATCGTATGCGCAATACGCAAGGCTTCCTCCTGCTTACCTTGATGTATACCTTGTTGCACGCCTTCACGCTTACCTTTTCTGCGCCCCGATTCACGTATTCTGTCTACGATCGTCATTAATCTCTCCTTGTGTTGGGGAACACGACGCGCCACC [...]
+NODE	1370	50	2731	2731	0	0
+GATTATTGCCACGCTCAATAATTACCCCTACGTTCGCCGCGCGCGCGACG
+TGAAATAAAAATAAATAATTTTATATTTTTTAAACCAAACGGTTATATAT
+NODE	1371	24	1865	1865	0	0
+GCGCCAGGCTTGCTCAGTTTGATG
+TAATTATTGAGCGTGGCAATAATC
+NODE	1372	29	1358	1123	0	0
+ACCTGCCGCTGCTCGATCATTTCAGCGCG
+TTTCAGCAATGTGCGTCACCGATTCCGCC
+NODE	1373	51	2787	2656	0	0
+CAGCGATCTGACCTTCGCCATCGGTTTAATGAACTGCTTTAACCGTCTGGC
+GATTTCACGCGCGCTGAAATGATCGAGCAGCGGCAGGTAAACATTATCTTC
+NODE	1374	1553	84015	82553	0	0
+CTGGCGCAGCAAAAGCTCGCCCGAAGCTAACGAGTTACGCCTTATCCGGCCTGCATCGTCTACGCAGGCCCGGTAAGCGTCCGCGCCACCGGGCAAAGGCGTTACATCGCCGCGCGATAAATTTCCACAATCTCATCGTGAGTCGCCTGACTAAGGCGCAAAGAATATGGGCAAAACTATTCTGATAATAGGCTCACGCTGGCTATTTTAAGAAGCCAGAAAAATAAAAAGCAACGCAATAATTGTATTGCTTCATTTGTTATTTAATTTAACCATTTCATTCTTTTTGCGGAAATAATAACGCATCACGTAATAAATGATCATTCCCACGACGTCGTGTAAACCCAATCCGGTCAAAATATTCAAGGATCTGAATGGCCAGCTTCCGCCCTACATTCAGCCTGTCGCGAAAATCCGCCGCACAGGTTGATCCTCTCTCTTGATCCAGCTCGCGGATCATATTGGCGAAAGCGACAATCCGATCGTTACGAT [...]
+TGACCGGCGTTAATACGCCGATGCGCGTACGAAGTCTACACGCGCAAAATCAGCCCACCGACCATGCGTATGCCGGGCAACGTATTGCGCTCAATATTGCGGGCGATGCGGAGAAGGAGCAGCTTAACCGCGGCGACTGGCTGCTTTCCGATGCGCCGGTGGGGGAAGCTTTTTCCCGGGTGATCGTTTCTCTGGCGCTTCATGCGCCGCTTTCCCAATGGCAGCCGCTACATATTCACCATGCCGCCAGCCATGTGACCGGTCGCGTCTCTTTGCTGGAAGGCGGGCTGGCCGAGCTGATCTTTGATACGCCGTTGTGGCTGGCCGATAATGACAGACTGGTGCTGCGTGATATTTCCGCACGCGCCACCCTTGCCGGCGCACGCGTGGTGACGCTTAAGGCGCCGCGTCGCGGTAAACGTAAACCAGATTATTTGCACTGGCTTTCAACGCTTGCCGACGCGCAGGACGATAGCGCGGCGTTGGCCATTC [...]
+NODE	1375	2228	113067	111697	0	0
+GGGGTCTTAACGCGAGATCCATTTTTGCAGTGTTTTTCATTTTAGGGGTTTATTGATGAGCGATATGCACTCGCTGCTGATAGCGGCAATTTTGGGTGTGGTCGAAGGATTGACGGAGTTTTTGCCGGTATCCAGCACGGGCCATATGATTATTGTGGGTCATCTGCTGGGGTTTGAAGGCGATACGGCCAAGACATTCGAAGTGGTGATTCAACTTGGATCTATTCTGGCGGTCGTGGTGATGTTCTGGCGGCGGTTGTTTGGCCTCATCGGTATTCACTTTGGCCGCCCGCTACAGCGTGAAGGTGAAAGTAAAGGTCGATTAACGTTGATTCACATCCTGCTGGGCATGATTCCGGCGGTGGTGCTGGGGTTAGTCTTTCATGACACGATCAAGTCGCTATTTAACCCAATTAACGTGATGTACGCGCTGGTGGTAGGCGGTCTGTTGCTGATTGCCGCCGAGTGCCTGAAGCCGAAAGAACCGCGCGC [...]
+GGGCTACCGGTTAAAGATAAAGATTGGGTCGTTGTCGGCGCCACGCCGCAGGAGATGCTTGATGCGGGCTACCAGCAGGTAGGCCGTGATTTTCCTGTGTTTCTCCATCCGCAAACTCACGAAGAATACGCGCTGGCGCGTACCGAGCGTAAATCCGGTTCCGGCTACACGGGTTTCACCTGCTATGCCGCGCCGGACGTTACCCTGGAAGCCGACCTCCAGCGTCGCGATCTGACCATTAATGCTCTGGCGCGCGACGATGACGGCCAGATTATCGACCCTTACCACGGGCGCCGGGATCTGGAGGCGCGTCTACTGCGCCATGTCTCTCCCGCGTTTGGCGAAGATCCCTTGCGCGTATTGCGCGTGGCGCGTTTTGCCGCCCGTTACGCTCATCTGAGTTTCCGTATCGCCGATGAAACACTGGCGCTAATGCGCGAAATGACCGCGGCAGGCGAGCTGGAACATCTGACGCCGGAACGGGTATGGAAA [...]
+NODE	1376	6938	399341	394900	0	0
+GGAAGATCTGATGCTGGTTACGATCGGCAAAACGCATCACCTTGTCTTCGATCGAAGGACAGTAGCGTGGGCCGATCCCTTCGATCACGCCAGCATACATTGGGCTACGATCGAGGTTATTACGAATCACGTCATGGGTTTTCTCATTGGTATGCGTGATGTAACACGGCACCTGTTGCGGATGCTGAGAAGCATTCCCCATAAACGAGAAAACCGGCATCGGGTTATCGCCATGCTGTTGAGCCAACACGCTGAAATCGATAGTACGCGCATCAATACGCGGCGGTGTGCCGGTTTTCAGGCGGCTGACGCGTAGCGGAAGCTCACGCAGACGGCGAGACAGCGGGATGGATGGCGGATCGCCAGCACGACCGCCGCTGTAGTTATCCAGACCAATATGAATTTTGCCGTCCAGGAAGGTCCCGACGGTCAGTACCACCGCTTTCGCGCGGAATTTGAGCCCCATTTGGGTCACAGCGCCGACAACGCGAT [...]
+AACCACAAAGATGAGTAGCCAGAAGATCAGCGACAGAAAACCAAACACGGCATCTCGTTCAACGCCAAAACCAAACTGACCGGACAAACATTCACGAAGCGTATAAAGCGGGCTGGTACCAATATCACCGTAGACAACCCCAATAGCTGCGAGGGTAATCGCAGGCAACGATTGCTTATTATCAGTGCTCATAGACTCATCTTTCGTTTATACACGTCACCCTTCACGCTACCTCCTTGTCGGCTGCATTCGCTTACCCCAGTCACACGTTGAATGTTAGTGCCAGGGGATTCACTCCTTTGCCGCCTTGATGTAGTTTGAATGAATAAGTGTATAGATATGAAATGTGTGCTTAGTCCCTTGGCCCACAAAAAAGCGCACAGTATGCACGATTAATCATAAAATCGTACCCCTAAATGAAGCCAGATTAACCTGGCTCAAAGAAAAATAAACAGCGCATCAGACGATTACAGCCCCGGTGGTGAAACGTCT [...]
+NODE	1377	15	1973	1721	0	0
+CCCGCTGGTCACCCC
+CGCCAGCACCTGGTC
+NODE	1378	243	8508	8449	0	0
+CACCTCGCAGATTGTCGGCACTCAGGCGGTGCTCAACGTGCTGACGGGCGAACGCTACAAGACCATTGCCAAAGAAACGGCGGGCATTCTGAAGGGCGAATACGGCCACACGCCGGTACCGGTTAACGCGGCGTTACAGGCCCGCGTGCTGGACGGCGCGGAAGCCATCACCTGCCGCCCGGCGGACCTGCTGAAACCGGAACTGGCTGAACTGGAAGCGGACGTCAGGCGCCAGGCGCAGGA
+CAGCAGGTCCGCCGGGCGGCAGGTGATGGCTTCCGCGCCGTCCAGCACGCGGGCCTGTAACGCCGCGTTAACCGGTACCGGCGTGTGGCCGTATTCGCCCTTCAGAATGCCCGCCGTTTCTTTGGCAATGGTCTTGTAGCGTTCGCCCGTCAGCACGTTGAGCACCGCCTGAGTGCCGACAATCTGCGAGGTGGGGGTGACCAGCGGGATAAAGCCGAGGTCCTCGCGCACGCGGGGGATTTC
+NODE	1379	32	12200	6917	0	0
+TCTCACGACGTTCTAAACCCAGCTCGCGTACC
+CCGTGGGCGCTGGAGAACTGAGGGGGGCTGCT
+NODE	1380	39	4432	4432	0	0
+GATGGCCTGGCCTGCGCCAAGGTGCATCAGCCCCATGCC
+GAGCCTGCTGCTGCTGTGGCTGGCGATTGCGAAAAAGTT
+NODE	1381	964	59645	59376	0	0
+GAAAAACCTCAAACGTGATGACTCCGTAAGCCTGGGCCGTCGTCTGCTTAACCATGCTTTAGGCGGCAGTCGTAAGCTGGCGGAAATTCCGCAGGAAAATATTCAGCGCGAACTGGATCGAATGAAGCTGGCAACGCTTGACGATCTGCTGGCGGAGATCGGTCTCGGCAACGCGATGAGCGTAGTGGTCGCGAAAAATCTGCAGCAAGGCGAAGCCGTGGTGCCGACCGTTGCGCAATCGAATCACGGCCACCTGCCGATTAAAGGCGCGGATGGCGTGCTTATCACCTTTGCGAAGTGTTGTCGTCCGATCCCAGGCGACCCGATCATCGCTCACGTAAGCCCAGGTAAAGGACTGGTGATCCACCACGAATCCTGCCGTAATATCCGTGGATACCAGAAAGAGCCAGAGAAATTTATGGCGGTCGAATGGGACAAAGAGACGGAGCAGGAATTCATTACCGAAATCAAGGTGGAAATGTTTAACCATCA [...]
+CACCTGTACCCAACTGTTGCTGCCCGCCGCCGCGGAAGCCATGGTGCGCATCCGGCTACCAGGCCAGATGGCATGGACTTCATGGACGCCAACGGCATCTGCGGTACGAATGATTGCAGAAACGTTATGAGGTTTGTGGACTTGCTCCATGCAGACCGTGAGATCAGGCTGACGCCTGGCGAGCATTTCGCATATACGCGCATAACGTTTTGGATTCATAGCGCTAGTTTCGGTTACGGGTGACTTTAATAACGTCTGGCATCACGCGGATTTTGCGCATGATATTCGCCAGATGTACGCGATCGCGTGCGGTAAGGCGAATAAAGGTACTATAGACGCGACCATCTTTCTCTTCAGTATTCAGGCTTTGAATATTGGAGGTGGTGGTATTAATCGCCGCCGTCAGGTTAGCCAGCGCGCCCTGATGGTTAAACATTTCCACCTTGATTTCGGTAATGAATTCCTGCTCCGTCTCTTTGTCCCATTCGACCG [...]
+NODE	1382	21	2458	2458	0	0
+GCCAAAACGCGTTAGCGTTTT
+AAAATAGCCCTAATGGGATAG
+NODE	1383	779	41926	41542	0	0
+CGTTTACAGGTATTGCGCGACAGCAATGACGGCTTTGTGATTGCGCAAAAAGATTTAGAGATTCGCGGCCCGGGAGAATTACTGGGCACGCGCCAGACGGGTAACGCCGAATTTAAAGTAGCTGATTTGCTGCGCGATCAAGCCATGATCCCCGAAGTTCAGCGTATTGCCCGTCATATTCACGAACGTTATCCGCAGCAGGCACAAGCGCTGATTGAGCGCTGGATGCCGGAAACCGAACGTTATTCCAACGCCTAGTGAGCACGGCGGCTTTAATGCCGCCGTACAAACCCTTATTGCGCGAAAATCGGTAACATCAGGTACAGCTTGATCACCAACGCATTGACGATATCGATAAAGAACGCGCCGACCATCGGCACCACCAGGAACGCCATATGCGAGGGGCCAAAACGGTCGGTAATCGCCTGCATATTAGCAATGGCGGTCGGCGTTGCGCCCAAGCCAAAACCACAGTGACCCGCCGCCAGCACC [...]
+CCTCAGCAATGGCCTGGCGCTGGTGGGTTTTTATCGCGTATTTGAGCGTGCTGTTTCGGTGCTGGGGAACGTGAGTTTGTCACTGTTCCTGGCAATGGCGCTGATGAGCCTGAAGCTGTGGGAACTGGCGTCGCTGGCGCTGCCGATGCTGGCGATTCTGGTGGTACAGACCATCTTCATGGCGCTGTACGCGATCTTCGTCACCTGGCGCATGATGGGGAAAAACTACGATGCGGCGGTGCTGGCGGCGGGTCACTGTGGTTTTGGCTTGGGCGCAACGCCGACCGCCATTGCTAATATGCAGGCGATTACCGACCGTTTTGGCCCCTCGCATATGGCGTTCCTGGTGGTGCCGATGGTCGGCGCGTTCTTTATCGATATCGTCAATGCGTTGGTGATCAAGCTGTACCTGATGTTACCGATTTTCGCGCAATAAGGGTTTGTACGGCGGCATTAAAGCCGCCGTGCTCACTAGGCGTTGGAATAACGTTC [...]
+NODE	1384	4	146	142	0	0
+TCCC
+TGAT
+NODE	1385	2386	107593	106288	0	0
+CCAACCCGACGGAAACCATCATCAATAACAGCATCAGCATGTTGGCGGCGGGCAACAGTATCTACTTTAGCCCGCATCCGGGGGCGAAAAAGGTCTCTCTGAAGCTGATTAGCCTGATTGAAGAGATTGCCTTCCGCTGCTGCGGCATCCGCAATCTGGTGGTGACTGTAGCTGAACCCACCTTCGAAGCGACCCAGCAGATGATGGCCCACCCGCGAATCGCGGTACTGGCTATTACCGGCGGCCCCGGCATTGTGGCAATGGGCATGAAGAGCGGTAAGAAGGTGATTGGCGCTGGCGCTGGCAACCCGCCCTGCATCGTCGATGAAACAGCGGACCTGGTGAAAGCGGCAGAAGATATCATCAACGGCGCGTCATTCGATTATAACCTGCCCTGCATTGCCGAGAAGAGCCTGATCGTAGTGGAGAGCGTCGCCGAGCGTCTGGTGCAGCAAATGCAAACCTTCGGCGCGCTGTTGCTAAGCCCTGCCG [...]
+GCGTACTGCACGCCGCGAACAAGACGCGCGGCCTGCTGCCACATCAGTTGCTGGTCAACTTTGAGCATCGGTTCACACTCGGCGGCGTTCACCAGAAAAATCTCTACCTGCGCCTGTAGTTTGACGTGAGCGGGAAAACCTGCGCCGCCCGCACCCACAACGCCCGCTGCGCGAACGCGCTCGCGAATTTCATCGGCGCTATGGGACATTTCAACGACGTTGACGGCGGTACTCATAGCAGTTCCTCCAGCAGTTCCCGAATGGCTTCGGCATTGGCCGGGCGCGGGTTAGTGCGCAGCGTAACGTCAGCCAGCGCGGCCTGCACCATCGCCGGAATGCGTGCGGAAAAGTCGGATCTTCCTTCTTTAAGCGCAACGGCCAGTGAGGGAAGGGCGCAGTGTTGCTTAAGCAGTTCGATTTGCTGAATCAGCGCATTGATTGCCGCAACGTTATTGGCTTCTACCGGGCAAAAACCGCAAGCTTTGGCCATCC [...]
+NODE	1386	127	8875	8875	0	0
+AGCGTATATTACGCTTTCCTCTTTTTGAGTCAAGCCTTTATTTTCGCTTTCCTCACAGACTTCTTAACGAAGCCTTTCTGACCCGGCGGCCTGTATGCCGTTGTTCCGTGTCAGTGGTGGCGCATTA
+AAAGGCTTCGTTAAGAAGTCTGTGAGGAAAGCGAAAATAAAGGCTTGACTCAAAAAGAGGAAAGCGTAATATACGCTACCTCGCAACGGTGAGCGAAAGCCGCGTTGCACTGCTCTTTAACAATTTA
+NODE	1387	6	431	431	0	0
+AGAGCC
+TACAGG
+NODE	1388	1518	86580	86175	0	0
+TGACAAGACCTAAATGCAAAAAAAAGCTCAACCGTTCACTTTTCAAACAACATTTAAACCAAAAGCCTATTTTCGCCTGGTTTTTAAACAAAAACGAGCCCGTCAGGGCCCGTTTTATTCAAATTTGTGACTTACTGCACTGCCACAATACGATCATCATTGGCTTCAAGGCGAATCACTTTGCCAGGAACCAGTTCACCAGACAGGATTTGCTGCGCCAGTGGGTTTTCGATCTGCTGTTGAATAGCACGTTTTAACGGACGCGCCCCATAGACCGGATCGTAACCGTTGGCGCTCAACAGTTTCAGCGCCTCGTCGGAGATATGGATTTCATAACCACGTTCTTCCAGACGTTTGTACAGACGCTGCAGCTGGATCTGAGCAATAGAAGCGATGTGTTGCTCACCTAACGGATGGAATACCACAACTTCATCAATACGGTTGATAAATTCCGGACGGAAGTTTTGGCTAACCACACCCAGCACCATCTCT [...]
+ACAGACTCGACCGCCGCATTATTCAGCTCAAACTGGAACAGCAGGCGTTGATGAAAGAGTCTGACGAGGCGAGTAAAAAACGTCTCGATATGCTCAACGAAGAACTGGACGACAAAGAGCGCCAGTATTCTGAGCTGGAAGAAGAGTGGAAAGCGGAAAAAGCGTCGCTCTCTGGTACGCAAACTATTAAAGCGGAGCTGGAGCAGGCGAAGATTGCCATCGAGCAGGCGCGTCGCGTTGGCGACCTGGCGCGAATGTCTGAATTGCAGTACGGCAAAATTCCGGAGCTGGAAAAACAGTTGGAAGCCGCGACCCAGTCGGAAGGTAAAACCATGCGTCTGTTACGTAACAAAGTAACGGATGCGGAAATTGCCGAAGTGCTGGCGCGCTGGACCGGTATTCCGGTTGCCAGAATGCTGGAAGGCGAACGTGAAAAACTGTTGCGTATGGAACAAGAGTTACACAGCCGTGTGATCGGGCAGAATGAAGCCG [...]
+NODE	1389	4299	204611	202088	0	0
+CCTAAAACCGCAGTGTGGTTCATCAAGCCGCGTAATACGGTGATTCGTCACGGCGAACCCATTCCTTATCCGCAGGGAGAAAAGGTACTGAGCGGCGCGACAGTGGCGCTCATTGTGGGGAAAACCGCCAGCCGGATACGCCCTGAAGTGGCGGCGGACTATATCGCCGGGTATGCGCTGGCTAACGAGGTCAGCCTGCCGGAAGAGAGCTTTTATCGCCCGGCGATTAAAGCGAAATGTCGCGATGGCTTTTGCCCGCTGGGTGAAATGGCGCCGCTGAGTGATGTGGATAACCTCACCATTATCACTGAAATCAACGGACGAGAAGCGGACCACTGGAATACTGCTGATTTACAGCGTAGCGCCGCACAACTGCTTAGCGCGTTAAGTGAGTTCGCTACGCTTAACCCTGGCGATGCGATCTTACTCGGTACGCCGCAGAATCGCGTTGCGCTGCGTCCCGGCGATCGGGTGCGTATTCTGGCGAAAGGT [...]
+GCTTTTGAGGTCAGGCCGATTTTGTGGCCTTTGAGCGTGCGCCCTTCGGCAATCTTGATATTGACCCATTCGCGCTGTACGGCATAGGCATCTTCAATAGTGATGTTGGGATAATCCAGCGACACTGCGCGAATCTGTTCACGCTGTTTTTCAGCCTGATTAAGTCGCTGAGCGATCAGGGTATGGGTCTGTTTATCGAGCATAGTTGCTTCCTGTTACCTCATTCGGTGCTGCTGCGCCGGGTGGCGACGCGGTGCGTCTTACCCGACCTACGGTTCGGTATTGCTTCGTGCATCGTTTTTTTTGTAGGCCCGGTAAGCGCAGCGCCACCGGGCGAAAGAGTGTGCTATTTAAATAACGCGTGTACGTTGTTTTGTTTGTAATTGAGCGTCGGATGTAACTCGGCAATCTCAAACGACAGCGCCAGATAGCGGTTCTCCATCAGGTCGGCGAAGTGGGCTTTAATCAGCCCAAACAGCATTTCGCCGACTT [...]
+NODE	1390	3	269	269	0	0
+CAT
+CGT
+NODE	1391	7	413	413	0	0
+CTCCGTA
+GAGTGAT
+NODE	1392	51	3748	3748	0	0
+ACCTCGCCATCCCATTTTTACGGCGCTTTTCGGTATGGTGGTATTGACGCT
+TGAAGCGCTCTGAGCATGAACCATGGTTTTTCTCTTTGCTAAAGTAAGGCA
+NODE	1393	4495	255786	250914	0	0
+CCGTGGTCGTGATGGTGGTCGTGATGGTGGTTTCCCGCCAGCCACTGCTGCTCGCCTCGCCATGTCCGCCAAAACATCCAGCACGCGGTGCTCAGAATAATAATCGCAGAAATTAACTGCAGCCATGGTTCCACTGATTGTGCGGTGAATGCCCGGCTAAGATACATCCCACCCAGCGCGATTAACCAGACGATCGCGGTATGAGAAAGCGTTGCTGCCAGACCGAGCATGACGGCCTGTTTAACCGTACCTTTAATGGCAATGATAAAAGCCGCCATCATAGTTTTGGAGTGCCCTGATTCAAGCCCGTGCAAAATACCTAATAAAATGGCGCTGGGAATGAAGAACCAGCCGTTTCCTTGCTGAAGAAGTGTCGAAAATTCACCCATGAGAATGATTCTTAGTTGTTTTATGTGGGCGTCATTCTACTCCCCCCCAGTATGGAATACTACCCCCCAGTAGCATCGTAATGCTATAATTTGTATTCGTTAA [...]
+CCTAAACTATCAAACGCCGGATGCAGCAGGGCTAACCCCTCCGCACTGGCGTCGGCCCGCGGTTGTTCATCCGTATCGACAATTGCGGTCTGCCCATTACGTTGCGTGACGATGGGGACAATCTCATCTTTAAAACGCCCGGTATCAATCGCGGCCCTGGCTTTTTGCTGCGAACTGAGCGCATAAGCATCCTGTAACTCGCGGCTGATGCCATATTCCCGCGCCAGGTTTTCTGCCGTCACGCCAATGTGATAATCGTTGAAGGCATCCCATAAGCCATCATGTACCAGACTATCCACCAGATTGTCGGCATCAGGCAACGCGCCGGTACGGCTGTCATTGAGGACATGCGGCGCACGGCTCATATTCTCCTGCCCGCCCGCGATAACAATGTCCGCTTCGCCGCACTGAATAGCCTGCGTCGCCAGGTGCAACGCTTTTAAACCGGAACCACAAACGTCATTAATGGTAATGGCGGAAACGGTAGTCGGC [...]
+NODE	1394	156	409	409	0	0
+CGCACTCCAAAGCAACCCGACTCTATGGACATGGCGTCGTGCGCAAGGTCCTCACGTTCAAAGACGGGATTCTCACCCTCTATGATACCCTGTTTCAAAGGATTTATGACGTGGGCCTTCCTGACAACCAGCCTCGAAACCACAACTCCGTCATCC
+TAAATCCTTTGAAACAGGGTATCATAGAGGGTGAGAATCCCGTCTTTGAACGTGAGGACCTTGCGCACGACGCCATGTCCATAGAGTCGGGTTGCTTTGGAGTGCGCTATCGGTCTCCCCGCAGTATTTAGCTTTAGATGAAACTTACCACCTGAT
+NODE	1395	58	4370	4370	0	0
+GGTATAAGGAACAGGAGTCTGTAATGAAACTGAAACTAATACCTTTTTATTTTCTCGC
+CTTATACCTCATCATTTATACCTAATCATAAGGATAAATGCCCTGCGATATGTTTTTT
+NODE	1396	49	2861	2861	0	0
+GCTATTTTCTGCCGCCTCCGGGGCTACGGAGATAAACGCCTGCAAAGAC
+CGAGAAAATAAAAAGGTATTAGTTTCAGTTTCATTACAGACTCCTGTTC
+NODE	1397	1025	55592	55518	0	0
+AGGTGGGCCGAGTAATCCGTAGCCAACCCATAAGCAACCTGAAGTATGAAGGGTATAAATAATTTCGTTACGGATTACTGATATTGCGCAAACCTTATCATCAATGCAACAGTAACAGAACCATGAAAAAACGCATTATTGCCGCCGCATTACTGGCAACGGTTGCTTCATTCAGCACGCTTGCGGCAGAGCAGGTCTCTAAGCAAGAAATCAGCCACTTCAAACTGGTTAAGGTCGGCACCATAAATGTATCCCAGAGTGGCGGGCAGATTTCCTCACCCTCTGATCTACGCGAAAAACTGTCAGCATTAGCCGATGCGAAAGGCGGAAAATATTATCATATTATCGCTGCACGTGAGCATGGTCCGAATTTTGAAGCCGTTGCCGAAGTTTATAACGATGCGACGAAATAAAGCTCTGATTGCGCCATAACGAGGGCACTGGCATGAAATAATAAGAGAGCGCCAGCAAGGTGCCATGTTCCGTCACAAT [...]
+CTGATCGGAACATGGAAAACCACGGCAGATAACCCGCCTTATACCATGACAATATTGCCGCCAGTAGAAGGCTGCGGGGAAAAGTGTGTGAAACTGAACGTACGGTATGAACTTGACGTGACTCACCGCAACGCGCTTTATTGCCATGAAGGACAAGAGGGGGTAAAAGGGCAGGGACCCATGGTGATAGCATTTGAAGGGGCGTATGGTGGACACGCTATTGGAACCTATAACCGACAGCTGCAATTACTTTGGGCTGGCGTAATACCGAAAAATAAAAAGGGGAAATGGATAACGAAAATGGAAAATTACTGGTTCAGGCAGGTAAAAGTGCACTAAATATTACCTTAAAACAGCCCGCAAAACCGTCTTATTTACGAAGGGCTTACTGCCTGCGCGCGCACATTCCAACGGCTTGCCTGCCCCGGATGAACTGTTGATAAAAAAGAGGGCCAGCATCTGTTTCCAGACGGCCCTGAGTGGATTGTGACG [...]
+NODE	1398	42	2941	2941	0	0
+CACGCTAAAGAGATTTTTGTATCGGCATCACTGATGCCAGAA
+GCTCCGTCAAGGAATTTATTCTATTTGATGTTGAAATATTTT
+NODE	1399	94	4340	4303	0	0
+CGTTTTGAACTGCACCCGACCCGTGAGGTGTTCCGCCCGCAGCGGACGGTGAGCAAACCCCACACCAAAGGGCCGCAGAGCGCCATCGTCACCG
+CGCTGCGGGCGGAACACCTCACGGGTCGGGTGCAGTTCAAAACGGGTGGAAAAGGTAAAGTGCTGGTCCTGCCCGCTGTGCTGCGCGTTGTCCT
+NODE	1400	3774	214116	212561	0	0
+CGGAATGCGCATATACGCTGAGGTATAACCTCGCCGGTGCAGCCGGAGCGATGTATGCGCATCTTCCGTCACCGTCTCAACGGCGATACCGCCAATCTCATCCAGCGGCTTACGGCGAATCACCGCGCACGATCCGCAAAAGAAAGTGGCATCCCACATATCGTTACCGTCCTGCACCAGTCCGTAAAACAGCGTGCCTTCGTTAGGCGTTTTACGAAAACGTCCCAGGTTGCGCTCAAACGGGTCCGGGGAGAAGAAATGATGCGGCGTCTGCATCATCGCCAGCTGTTTTTCTTTCAGGAACCAGCCCATTGTCATTTGCAGAAACGAGCGTGTCGGCACATGGTCGCAATCGAAGATCGCCACAAACTCGCCTTTCGCGTGTTTTAGCGCATTGTTGATGTTGCCGGCTTTGGCATGTTCGTGCGTGGCGCGGGCAATGTAATGCACGCCAACATGTCGGGCAAACTGACGAAATGATTCGCGCCCGCC [...]
+AACCGCGCAGTTTCAACGGCTGCGTCATCGACAGTAGCGTGGTGATGTCTTCCGGTACGTAACGGCTGAACTGCTGCCCCTGCACGCTTTCAATAAGCGTCAGGCAGCGTGAAAGCGGGGCGTTCCAGGGAATGATCATATTCGCGCCGCAGCCCAGCAGCAGGCGCTCATCGGTGGCGCGCAAACTGGCGATATTTTCGCGCACGACAATTTTCAGCGCGCTTCCCCGCTGGCGCCGCAAAGTATGAATGCGACGAGCAAGCGGCTCGATTTGGTTGTTCTGTGTAAGCGAAAAAATAATTGTCGCGGCCTGCGCCGTGCGCGCGTCGTTGAATAGCGCTTCGTTATTGTCGAAAAGCGTCCAGTGTTCCGAGAGCGGCGGCGCGCCTTCAAGGACGGCGACGTGGCTAAGAATGCGTTTTTCGTCGCTACGCGGCTGAATTGCCGTCTCCTCCTGATGGGATAGCGTCCAGCGTTCGTCCTGCTGACACA [...]
+NODE	1401	7	767	767	0	0
+CTAATTT
+TTTTGCT
+NODE	1402	2643	142152	139535	0	0
+TGTCGCCGGTGAGAATTTTCACCGTAATTCCGCTCGCCTTCAGCGCTTTCAGCGCCGGCGCGGTGGTCTCTTTCGGCGGATCGAGAAAAGCAATATACCCTTCCAGGATCAGGTCAGATTCATCGATACGCTGGTAATCGCCCTCACGCGCAGGCAGGTATTTGGTCGCGACGGCGACCACGCGTAGCCCCTGACGGTTCAGCGTGTCGGTAACGCGTTTCACCCGGCGCAGCATATTGTCGTCCAGCGGCACAATATCGCCGTTGTGGCGCACCTGAGTACACACGTTCAGGATCTCCTGTAACGCGCCTTTGCAGACCAGTTGATGCACGTTCGAATCTTCGGCGACCACCACCGACATCCGGCGACGCTCAAAATCAAACGGAATCTCATCGATTTTCTGCCAGCGTCCGGAGAGCTGACGCGCGGCGGTTTCGTCTACTCCCTCCAGGACCGCCGTATCCAGTAAATTTTTTAGACCGGTCTGATAAT [...]
+CGTAACAGACGGAGGCAAAACCTTGCGCATCTCTTGCCAGCAGCATCAGTGAGGCTTTCCAGGGGGCGATCAACTCTTCTGTGATGCCGGTAAAGCCAAACAGCACCACGCCATCAATGTTACGTCGTCTGAGCATGCCCAGATGTTCCATTACCAGCGTCGGCGAGAACTGACTTTCCATCATAATAGGGTCGTAGCCCTGTTCATAAAACGCAGGCAGCATGGTTTGAACCGCGAGGTTTTCAGACAACGAATCAAGGCGAGTGACGATAATAGCGACCACTTTATCGCTTTGTCCCCGCATCGCACGGGCGGAGCGGGACGGAGAGAAACCGTGTTGATTCATCACCGCTTCGACACGCTCGCGGGTACGTTCGCTTACGCCGCTTTCATTGTTAAGCACGCGGGAAACGGTTGATTTCCCTACGCCGCTCAGGCGGGCGATGTCTTTGATAGTGAGCCGGTTTTGCATCCTGTTTTCCCGTGGCGTGA [...]
+NODE	1403	1057	47123	46684	0	0
+TATGAGCAGAAATTCTCCGGGGCATCATGCCCCCCCTCGGTATCGATCTTTTTCTCTTCTTTCTTGCTGACAGCGGCCCCAAAAAGGCGTGTCAGTTTCGGGAATGAACGCCGGAACCCCGAAAACAGGGGCATGGCGCGGTGTAGTGGTTGTGCGTCACTTTGTCGCTTTGCGCGACGAAAGCGACGCACTGGTCGAGTGCAGTACGCGAAAGATCGCAGACTCTGGTGTTATTTTACGGTCACGCGGCAGCAAAGCCGGACGTCTTTGCAGGCCGCAGCCCGTAAAGTAAAAGGCGTTGATGTGGTAACGGGTGCCGGGTGGAATCGCTTCCGTCACGGTGCAGCATTGACCAGAGATCTGGCGCAGGTACCATCGAGATACTCTTTCAGTTCTTTGGTACCGAACGTGTCGATAGCCCGCTGAGCTGCGCCGAGATTAGACGCCAGCTTGTCACCGCCAATGTCTTTATCGGCTTTAACTGCCGCAGCC [...]
+TCTGGTGAGTCCGGAGACGTTTAAAAAACAAGAACTTATCTTTACCCGGTTGACCTGATAAGGTTTGCCGGGTTTTTTGACATCCATAGTTTCTTGAGGGCTTAATCGGAGGCTTCACGGTTCGTTGAGTAAATAGAGCCCCCTCCTATGGCATTAACCGATACCGCTGGCGGCACGCAGACCGATCCGGGTACAGGAAAACCGTCAGAAAATCCACCCGCCGATCCACCGTCAGATGGTCCCGCTTCTGAAAAACCACACGACCCACCCGCCGATCCCAATAAGCCCACTCCACCGAAAGAAGAAACGCCGCCCGGCGCGCCGGAGAAATACGCGTTCACCGCCCCTGAAGGTCAGGAACTCGATACCAGCGCGCTGGCGCAGTTCGAACCAGTGGCGCGTGAACTGAACCTGACGCAAGAGCAGGCGCAGAAGCTGGTGGACGTCTATCCGAAAGTGCTGGCGGGAGTGCAACAACAGCAAGCGGAGTCA [...]
+NODE	1404	683	36406	34702	0	0
+TGTACGGTACAGGAGAACAAATGTCCATCTTCGCGGGCGATGGCCCCCGGCATGGCAATCTCGACCCGATGCGCGCGCCTGACCTGTTTACTCTCTACCGAAACCGCAACCGCGCCGCCGAGAATGACCAGGTTATAGAAGACCCACACCAGGCTAACGATGACGGTCAGCGTTTCATTTTCCGGCCCGTAATAGTATCGCCATACGCCCGCCGCCACGCCGAGCAGGTTAAGCAAGACAAGGAAGATATACGGACGCGAGATTACCCAGTCGACGTACTTCTCTTCCACCAGCCCGCCTTTCGCCGTGACGTTAAATTTCCCTTTGTGCGGATTGATCAACGCGACCAGAGTCGGCGGTGCGATATACCATGCCAGTACCGTTTCATAGATTTCACTCCAGAAAGAGTGACGATACTTGCCCTGAATCTTCGAGTTAGTCAGGCTGGCGTGGACCATGTGCGGTATCACAAATAGCGCAATCATCAACGCA [...]
+GTTTGGTAAAGGCTTAAAACTGGCGCAGCGGCTGTGCTACCTCAACGCGATGTTCCATTTCTTGTCCGGCATTCCGCGCCTGATCTTTCTGACCGCGCCGCTGGCTTTTCTGCTGCTGCACGCCTATATCATTTATGCGCCTGCGTTGATGATTGCGCTATTTGTGATACCGCACATGGTCCACGCCAGCCTGACTAACTCGAAGATTCAGGGCAAGTATCGTCACTCTTTCTGGAGTGAAATCTATGAAACGGTACTGGCATGGTATATCGCACCGCCGACTCTGGTCGCGTTGATCAATCCGCACAAAGGGAAATTTAACGTCACGGCGAAAGGCGGGCTGGTGGAAGAGAAGTACGTCGACTGGGTAATCTCGCGTCCGTATATCTTCCTTGTCTTGCTTAACCTGCTCGGCGTGGCGGCGGGCGTATGGCGATACTATTACGGGCCGGAAAATGAAACGCTGACCGTCATCGTTAGCCTGGTGTGGGT [...]
+NODE	1405	51	2117	1764	0	0
+TCCGCCTGCCTGTGGATCATCTTCCAGTTCAGGAACAGCCTCGAAGTATAC
+AAAGCAAAATTCATCCGTAAGTGTGAATCTTGTCTGGGGGGTGTTGCTGCG
+NODE	1406	84	117	117	0	0
+CCTGGTGATAAAGGCGGTCAATGGTCTTTATCGGCTCTTCATCCAGTACGGCATCTTTTACCAGCAGCCCCATCCACTGTTCAA
+CCGATAAAGACCATTGACCGCCTTTATCACCAGGCATGTATTGGCGCAGTCCGCTGGGGGAATCTGCCGGATAATGCCCGGGAG
+NODE	1407	51	60	60	0	0
+CGAGCAATTTTGATCGCATCAAACTCTTCGGTTTTAGTCTGCGCTTTCAGA
+GGGCTTCGCCAGACATGATCCGTTCATGGTCTTTCGGTGAAGTTAAAAAGC
+NODE	1408	846	60698	60348	0	0
+CTCCATAAGCAAGAAAAAATAAATAGATACTTTATAAAATCGCCCATACCACTAACCCCTGATTTAATATGTAGAAGGTATCAATTCAGTATTCAGCATTGCCACACTATACACAAAATCACTCAAGTTGCATCAAGGCGGCAAGGATTTGCTATTGCGCAATGCGTAAAAAACAAAAATATATTTTTCATAATAAAATCTACTAATAAGTAGATTAAATGGATTCCATCTTATCAATACGTAATTATCATTTTCTGTTCAACCTCAACCTGATTTCCTCTTAGTACTGAGCATCGTCTGCGATCGTTAATTCTACCTCTGATGATATCTCGTTAAAAAATAACGCTACCGCCATACCCTGGTTTACAAACCTGCACACCCTAAGATTACTCTCTTATTTGCATTAAGAATATCATTGTGTTTTTTTTCGGAATATATAAAGATTCCCCATAGTGGATACATAACGTGAGCCAAATTAGTTAAAGACGTAAT [...]
+GGTGATGGTTTGATTTTTCATCTGAGCGAGCTTCATGGCTTGGGCAAAGGGTGGAGTTTAACACTGCTGGATTTGGTTACGGAAGATTGTAGTGCGTGAGGCATATATGTTTAATCAGGGTAAATAGCTGCTTATTTATATCTTTCTGCTATCAGGATGTTATGACACTGCCCCCAATATTCAGGATTTAAATAAAGCATTTCTTGAATATTAAACTAACTCACTAAAAATAAACTTGAAATTACCTCGGCAACATGCATTAAAGAAAATACTAAAGGTCATTTGACTTATTATAGCGTCAGTGATTACGTCTTTAACTAATTTGGCTCACGTTATGTATCCACTATGGGGAATCTTTATATATTCCGAAAAAAAACACAATGATATTCTTAATGCAAATAAGAGAGTAATCTTAGGGTGTGCAGGTTTGTAAACCAGGGTATGGCGGTAGCGTTATTTTTTAACGAGATATCATCAGAGGTAGAATTAACG [...]
+NODE	1409	889	47976	47747	0	0
+CCAGCGTATCGTTAATCTGATCCATGGAACGCCCGCGGTTCAGGCCAAAGGTGAACATCGCAATCAGTACGGCAATTAACGTAGCCATTACCGGGTCGCCCAGGAACTCGGCAACGGGCAGGAAAGCGTGGCCTTTTGGCAGAATCATCTCGGCAATCGCACGCATCGCCATCAGAATAACCGGAACCAGCGACGTCCAGACGCTGACGCCAAAGCCCGGCATCTCTTCTTCCGTAAAAGTTTTCGCGCTGTACAGGCCTTCCGGGATCGGCTTATCGATGCCTTTCAGGAAACGGGCGTAAACCGGTCCGGCAAGGATCACGGTCGGGATCGCCAGAATCGTACCAAACAGCAGCGTCTTACCCATATCGGCATGGAAAATCGTGGCGATTGCGGTTGGACCCGGGTGCGGCGGCAGGAAGCCGTGTGTGACGGAGAGCGCCGCGGCCATCGGCACGCCGACGTACAGTAACGGGATATTCGCTGCTGCGG [...]
+ACTTCTTCTGATGATCCGCTTCAAAATGAACGGATTTATCGCCCTTGTCCTGGTAGCGCTCGCTGTCGGGTTGATGCAGGGAATGCCGCTGGATAAAGTCATCGGCTCCATCAAAGCCGGTGTCGGTGGTACGCTTGGCAGTCTGGCCCTGATTATGGGGTTCGGCGCCATGCTGGGCAAAATGCTTGCCGACTGCGGCGGCGCTCAACGTATCGCCACTACCCTGATCGCGAAATTTGGTAAAAAGCATATTCAGTGGGCCGTAGTGTTAACCGGCTTTACCGTCGGCTTCGCTCTGTTCTATGAAGTGGGCTTCGTTCTGATGCTGCCGCTGGTATTCACCATTGCCGCAGCAGCGAATATCCCGTTACTGTACGTCGGCGTGCCGATGGCCGCGGCGCTCTCCGTCACACACGGCTTCCTGCCGCCGCACCCGGGTCCAACCGCAATCGCCACGATTTTCCATGCCGATATGGGTAAGACGCTGCTGTT [...]
+NODE	1410	865	51246	51080	0	0
+ACAATATCAGGGGAGTTTTTAGGTTTGAGGTAGATAAGGGCAACAGGAAAATGTCGTTTTTTATCTGCGGACGTCCATTCGCCTTTAATCTCACTGCTGGAGATTTCCGCATTCCAGTAACCCGAAAGCGCCTTTACGCGTTCTTCAAGATGCACCTCTTTATCCTGGAGTGAGCCGCGTAGAACAATCGCTGCCTTGTGCTGATTGCAAGGTTCATAACAGTAATACCCATAAAGCGTGTTACCAAATCGCGTGATATTAACGTTTACCGGTTTCCCCGCGATAGTTCCGGTATAGTTTCGCTCCCAGGCGGGTAGCTCCAGCACCGTGGCGCTTGTTGCGTCCATCCAAAAGCCGATGGCGAGTAACGTTGCCAATCCATATTTTATTTTGCCCATTTCCCTTATCCCTGTAGGCATTACAACCCAAAAACCAGCAACGATTGTGCTGGTTTTTCAGATGAATAGCAAAAAGGTGGGGCATTAGCACCGG [...]
+TCGACGATGCGGCGGATATCCAGGAGGCGTGGGTGAAAGAAGCCGCCTGCGTCGGCGTCACCGCTGGCGCTTCCGCGCCGGATATTCTGGTGCAGAATGTTATTGCGCGTCTGCGCGAGTTTGGCGGCGGCGAAGCCGTCACGCTTGAGGGGCGCGAAGAAAATATTGTTTTCGAAGTGCCGAAAGAGCTGCGTGTGGATGTTCGTGAAGTCGAATAAGATTTCACAATTCAGAAATCTGCCCGATGACGCTACGCTGACCAGATCTTAAGGATTTCTTTTGATATTCAATGTGCGACAGGAAAAATAAGGCGTAGTCGTCATCCGGTGCTAATGCCCCACCTTTTTGCTATTCATCTGAAAAACCAGCACAATCGTTGCTGGTTTTTGGGTTGTAATGCCTACAGGGATAAGGGAAATGGGCAAAATAAAATATGGATTGGCAACGTTACTCGCCATCGGCTTTTGGATGGACGCAACAAGCGCCACGGTG [...]
+NODE	1411	51	2833	2833	0	0
+ACCCCCTCGCAAGGTTACGGGAAATAAGAGGTCATTATGGAAAATTCTAAC
+TAAAGGTATTGTCGATAATCGGCGCGGTATCAGACTGCGGTACGTGGCACT
+NODE	1412	12	2747	2736	0	0
+ACTGCTCTACCA
+CGACCCACCAAT
+NODE	1413	12	3047	3047	0	0
+ACTGAGCTAACG
+TCGAATCCTGCA
+NODE	1414	4	1046	1046	0	0
+ACCC
+AGGT
+NODE	1415	25	1246	576	0	0
+TGGCGGGCAGGACGCCCGCCATAAA
+AGTGCTCACCGGCAGACTACAGATA
+NODE	1416	21	1221	790	0	0
+CTGCCAGGCATCAGACAAGTG
+ACGGGCCGTTGCTGCGCAACG
+NODE	1417	16	728	448	0	0
+AAGAAGCCCGTCCGTC
+TCCTGCCCGCCACCCT
+NODE	1418	9442	580832	574398	0	0
+AGAGTTCTGCATCCCGACTTCGATCGCCAGCGTTCGACAGGTTGACTCATCAAAACCGAACAGACGTCCACCCCAGTAGCCGCCAAGCAGGCCAAGGGTGTTATGCAGGATCACCGCGATGATCACCATAAAGCCGACGGAGGCGATATGTGAAGCTGAACCCGCGACCACCGCGCTGATGATTGCCAAAATGCACACCATCGAGAATGCTGGCAGATAAGGTTTTACCACTTTCACTACGCGCGGAAACAGATGGTGAATCACCAGCCCCAGCGTGATTGGAATGACTACAATCTGTAGAATGCTCAGCAGCATACCCATCACGTCGACTTGAATATGGGCATCGACGTACAGGCGCGTGAGTAGTGGTGTGGCGACCACGCCGACCAGCGTGGAGACCGATGAAATGGTGACTGAGAGCGCGACGTCTCCCTTCGCCAGATAGATCATTACGTTAGAGGCGGTGCCGCTGGCTACGCTACCGACCAGTAC [...]
+CGTATATAGGAGTGAGCGTTTCTGCCCTCTCCCTGATATATGCCATGTGGATGATCATTGATAAATTGATGTGGGGAAACCCTGTTCCTGGTTATCCTTCGCTTATGACCGCGATTCTCTTCTTAGGCGGCATCCAGCTTATCGGCATAGGCATCATGGGTGAATATATCGGACGCGTTTACACGGAGGTAAAGCAAAGGCCTCGCTATATCGTGAAAAACAAAAAAACAATGATGGAATAATGATGGAATAATGATTACTATGCTCAAGATATTACCGAAAACGGCGATGATACTACTGGCTTTTTTGGCCATTTTTCTTATTGAATGGTATACCCCCATTCACTCTGATGATTACCGCTATTACCTTTTAGGAATTTCGCCGGAATCACATTTTCATCATTATATGACATGGAGTGGCAGGATTATAGCTGATTACACCAGCGCACTTATCCTGTATACACGTTCTCAACTCGTGTATTCCATCAGCGCT [...]
+NODE	1419	51	3080	3079	0	0
+GCTTTGCCAGCCAAACAGCGCCTGGCCGAAACCCACCGCAATATGCAAGGC
+CGAACAGCTCTTATTTGGGGAGCTGGGTACTCTAGGTTTACTATGGTTTAT
+NODE	1420	69	2708	2708	0	0
+CGAGACGCTCACGCTTTCTGGCGCCAATTCTTACACCGGCGGCACCACCATCAGCGGCGGCACGCTGGT
+AGAAAGCGTGAGCGTCTCGTCGCCGGATTTCACCACGCTGCCCGTACCGCCAATGTTGTTGGCGAAGTC
+NODE	1421	222	7253	7253	0	0
+CGTGGCGTCGTCGGTGACGTCGCCGCTGCCCAGCGCGTCAACGTTAGTGGCGACCAGCGTGCCGCCGCTGATGGTGGTAGCGCCGCTGTAGCTGTTGGCGCCTGAGAGCGTGAGCGTCTTGTCGCCGGATTTCACGACCTGGCCGCTGCCGCTGATGGCGTTGTCAAAATCGCCGCCGGTGTTCAGCTCCAGCGTGGCGTTATCGGTGACGTCGCCGGTACC
+CGATTTTGACAACGCCATCAGCGGCAGCGGCCAGGTCGTGAAATCCGGCGACAAGACGCTCACGCTCTCAGGCGCCAACAGCTACAGCGGCGCTACCACCATCAGCGGCGGCACGCTGGTCGCCACTAACGTTGACGCGCTGGGCAGCGGCGACGTCACCGACGACGCCACGCTGGAGCTGAACACCGGCGGCACGTTCGACAACGCCATCAGCGGCAGCGG
+NODE	1422	6	412	412	0	0
+CAGCGC
+CGGCGG
+NODE	1423	24	957	957	0	0
+CTCAACGTTGCTGGCGACCAGCGT
+TAACGCCACGCTGGAGCTGAACAC
+NODE	1424	7	926	901	0	0
+GCCGCCG
+TCACCGA
+NODE	1425	5	467	443	0	0
+CTGAT
+CGACG
+NODE	1426	6	307	283	0	0
+GGTGGT
+TACCGG
+NODE	1427	3223	192748	189864	0	0
+CATTGTCATTGCGCATATTGAGGTTGATATGGCGTATAAACACCGGTCAGGCTTTCCAGGAAGGCGACGATATCGTCAATATCGTTTTGCGGCAGATCGGTGCCAACCTGATAACGCAGCATCAGTTTTACCGCGCCATCCAGCGTCGGTACGTCGCCCCGATGGAAATAAGGCGCCGTTAACGCGACGTTGCGTAAGCCCGGGACTTTTTGCCGTAATTTATCGCGAACCTCTTTGGTGACGTTCATACGACCAATATCCGCTGCGGTAATTTCGCCAAAATTAAAGTCTCGCTTTAATCCCAATGGTTCAAAAGAGCGCCCGCCTAAAATGATACCGCCGTGACAGGTTGCACATTTATTCTCTTTAAATAATTGATAACCGTGTTTCTGTTGCGCGGTCAGCGCATTTTCATCTCCACGTAGCCATTTATCAAAGGCGGAATCCGGCGTTATCAACGTTTTTTCGAATTCGGCGATCGCATCAGTAATA [...]
+ACGACCTCGATCAGTTCGGCAACCACTCTAACCGCGGCATTATCGCCATGAAACAGGTGGTGTCGCCGCAGTTTGAAGCGCGTAACGACTTTGATATTTTCCGCGATCTCTGCCGACGCTTTAACCGTGAAGCGGCATTCACGGAAGGTCTTGATGAAATGGGCTGGCTGAAACGCATCTGGCAGGAAGGGAGCCAGCAGGGAAAAGGCCGCGGTATCCACTTACCGACTTTCGAGGTGTTCTGGAATCAACAGGAGTACATCGAGTTTGATCATCCGCAGATGTTTGTGCGCCATCAGGCTTTCCGTGAAGATCCGGACCTGGAGCCGTTGGGCACGCCAAGCGGTTTGATCGAGATTTACTCCAAAACGATCGCCGACATGCAATACGACGATTGTCAGGGCCATCCCATGTGGTTCGAAAAAATCGAACGCTCGCATGGCGGGCCGGGATCGCAGCGCTGGCCGTTGCACTTACAATCCGTCCACCCTG [...]
+NODE	1428	7	1183	1183	0	0
+AACCAAC
+CAGTGTT
+NODE	1429	3	513	513	0	0
+ACT
+TGC
+NODE	1430	1	177	177	0	0
+G
+T
+NODE	1431	2	368	368	0	0
+GC
+GG
+NODE	1432	3	422	422	0	0
+GAC
+ACC
+NODE	1433	14	1851	1851	0	0
+TGGTCAGCAGCAAC
+GTTGGTTGCTGCTG
+NODE	1434	2443	165811	164944	0	0
+CCATTAAAGCAGTTTAGTAAGGCAAGTCCCTTCAAGAGTTATCCATTAGATACCCCTCGTAGTGCGCATTTCCTTAACGCTTAAAAAATCTGTAAAGCACGCCATAACGCCGAAAGGCACACTTATTTTTTAAAAGGTAATACACTATGTCCGGTAAAATGACTGGTATCGTAAAATGGTTCAACGCTGATAAAGGCTTCGGCTTTATTACTCCTGATGACGGTTCTAAAGACGTGTTCGTACACTTCTCCGCTATTCAGAACGATGGTTACAAATCTCTGGACGAAGGTCAGAAAGTTTCCTTCACCATCGAAAGCGGCGCTAAAGGCCCGGCAGCTGGTAACGTAACCAGCCTGTAAGCTTAAAAAGCTCAGAATTTTGAATCCCTGCCTGATGGCGGGGATTTTTTTTATTCCAATTCCCCCTCTCCCCCAGCATAACTTTGCATTACTTTACCCTGCGTTCCTTTGACCTTTCCCTTAGGGGAACCCC [...]
+GCTGCTCCCTATCAACAAAGACAATATCGAAGGCCGCTGGGATGCCTTCGTTAAGATCTTGCTGGCATGATTAACTGGTCACAAACGTCCGCTTCTGGCACAAAGCGGACATCAGTATTCAAAAAATGAAAAACGACGACTTGATGTATACCGTTTGCTATACATGGTGGTTGTGCTATCATTGTAAAGCAAATGCTATACAAGGGGTGTCTCATGAAATCAGATGTTCAACTTAACCTTAGAGCTAAGGAATCGCAGCGGGCGCTCATTGATGCAGCTGCGGAAATCCTTCACAAGTCACGTACAGATTTCATTCTGGAAACGGCCTGCCAGGCTGCCGAGAAAGTGATCCTTGACCGCCGTGTATTTAACTTTAACGATGAGCAATATGAGGAGTTCATCAATCTGCTTGATGCACCGGTCGCAGATGATCCCGTTATCGAAAAACTGCTGGCAAGGAAACCTCAGTGGGACATGTAACAGCACCAGAAC [...]
+NODE	1435	3401	190544	188635	0	0
+AGTGAACTGCCACGTTCCAGCATTGCCGCGGTCGCGCCTTCATCAACCGTAATTTCACCTGCCGGCGGCGCGCCGAAGATCCAACGTTTGCGGTTCTCCAGCGGCGAGGCTTGCGCATGAAAACGGGTGCCGACGGAAATCCCCTCCATCACATCGCCGATCACGCCCGGTTTACTGCCTGAGGCAATAATCGTATCAATACCCGCGCGACAGGCTACGTCTGCCGCCTGAAGCTTAGTGCTCATACCACCGGTTCCCAGCCCGGAAACGCTGTCTCCCGCGATAGAGCGCAGCGCATCGTCAACGCCATACACATCTTTGATAAGCTCCGCCTGCGGATTGCTACGCGGATCGGCGGTAAATAATCCTTGCTGATCGGTCAGCAGCAGCAGTTTATCCGCGCCTGCCAGGATCGCCGCCAGCGCGGAGAGGTTATCGTTATCGCCCACTTTAATTTCCGCTGTCGCAACGGCATCATTTTCATTGATAACC [...]
+CCGACTATTACACCCTGTATGAACGCTATTTCGCGCCGCGCGGTATCGCGATGTTAACGCTTGATATGCCTTCGGTTGGATTTTCATCAAAGTGGAAATTAACCCAGGATTCCAGCTTGCTCCACCAGCATGTGTTAAAAGCGCTTCCTAATGTCCCCTGGGTGGATCATACCCGTGTTGCGGCGTTTGGTTTCCGTTTTGGCGCCAACGTTGCGGTGCGTCTGGCCTATCTGGAAGCGCCGCGTTTGAAAGCGGTGGCTTGCCTGGGGCCGGTGGTCCATGCGCTACTTAGCGATCCGCAACGACAGAGCACGGTGCCGGAGATGTATCTGGATGTTCTGGCCAGCCGTCTGGGTATGCATGATGCTTCGGATGAGGCGCTACGTGTGGAGCTCAATCGCTATTCGTTGAAAGTACAGGGGCTACTGGGCAGACGTTGTCCTACGCCAATGCTTTCCGGCTTCTGGAAAAACGATCCCTTCAGCCCGGAAG [...]
+NODE	1436	899	52938	52850	0	0
+CTGGTTGTTCACGGCATCCAGAATCAGATAGTCGCCGTTTTTCACCTGAGAGGTGACGCTACCGGTACCTACGATCGCTGGCAGTTCCAGAGAACGCGCCATGATGGAGGTATGAGACGTACGTCCGCCCGCGTCGGTGATGAAGCCCAGCACTTTCTGCAGGTTCAACTGTGCGGTTTCTGACGGCGTCAGGTCAGCGGCAACCAGGATAACTTCTTCCTGAATCGCGCTCAGATCGATAATGGCCAGACCCAGGATGTTGCGCAGCAGGCGCTTACCGATATCACGTACGTCAGCCGCACGCTCTTTCAGGTATTCGTCATCCAGTTCTTCCAGGGCAGTGGCCTGACCTTCGATAACTTCATGTGCGGCTGCGTCAGCCGTCATGTGCTTATCTTTAATCAGGGCTATGATTTCCTGCTCCAGCTCCTCATCTTCGAGCAGCATAATATGCCCTTCAAAGATGGCTTCTTTTTCTTCACCGAACGTTTC [...]
+AAGCCTGTTTAAACTGCAGACTCTGGGCCTGACTCAAGGCACCGTCGTCACCATCTCCGCAGAAGGTGAAGATGAGCAGAAAGCGGTTGAACATCTGGTCAAACTGATGGCGGAACTCGAGTAAGTTTTTTCCGGGTTCTTTTAAAAATCAGTCACAAGTAAGGTAGGGTTATGATTTCAGGCATTTTAGCATCCCCGGGTATCGCTTTCGGCAAAGCACTGCTGCTGAAAGAAGACGAAATCGTCATTGACCGGAAAAAAATTTCTGCCGACAAGGTTGATCAGGAAGTTGAACGTTTTCTGAGCGGTCGTGCCAAGGCATCTGCGCAACTGGAAGCGATCAAGACAAAAGCTGGTGAAACGTTCGGTGAAGAAAAAGAAGCCATCTTTGAAGGGCATATTATGCTGCTCGAAGATGAGGAGCTGGAGCAGGAAATCATAGCCCTGATTAAAGATAAGCACATGACGGCTGACGCAGCCGCACATGAAGTT [...]
+NODE	1437	8336	452232	441135	0	0
+CACCTACGGCACCGGAAATGAAGCAAAAAATACCGGCAACGCCACCGTGCGTGATGCGGACTCGGTGGGTTTTGTGGTCGCAGGCGAAAAAAATACCTTCAAAAACAAAGGGGATATCGACGTCAGCCTTAACGGCACCGGTACACAGGTGAGCGGAGATATGTCACAGGTTACGCTGGATGGCGATATCAATGTAACCGCCGTCGAAGACAGCGATAGCGTCTATCGTGGCGCAACGGGTATCGACATTACGGGGGATAACAACACGCTGGATATTGTCGGTAACGTCACAGTCAACGGCGATTATGACAACGACAGCGTGATGGCTGGCAGCACTGATACCCTGCAGGGGATGTCCGTCAGCGGCGACAATAATCAGGTGGATCTCACCGGCACGCTCAACATTAACGTCAGCGATATGAGTAATGTAGACGGGCAATATCTGAATGCCGTTGGCCTTAGTGTAACGGGTGATGGTAATTCCGTGGACTT [...]
+GGTATACGAGACGACGCGTAATGGACAACCGTGGTATGTGCTGGTAACGGGGATGTATGCTTCGAAAGAAGATGCTAAACGTGCGGTGTCCACCTTACCTGCCGATGTGCAGGCGAAAAACCCGTGGGCAAAACCGTTGCATCAGGTTCAGGCCGATCTGAAATAATCCAGGCTGTGTCCTGCAATTGCCTGTGAGTGTCGCTGACAGCTATTTTTGTTCAGGACAGGCGCGAGGGGCGCATTTGCTACCGTCAAATGCGCCGTAAAGCAACGCGGCACAGCCTAAAGCGCAGGATGCTGTCGGAGCTTTCTCCACAGCCGGAGAAGGTGTAATTAGTTAGTCAGCATGAAAAAAAATCGCGCTTTTTTGAAGTGGGCAGGGGGAAAATACCCTCTGCTTGATGATATCAAACGACATTTGCCAAAAGGTGAGTGCCTTGTCGAACCTTTTGTGGGTGCCGGATCGGTGTTTCTTAACACCGACTTTTCTCG [...]
+NODE	1438	4	208	204	0	0
+TCCT
+TGTT
+NODE	1439	712	36388	35928	0	0
+GATCGGGAATGGGCAGCTTATCGACATCGGCTTTGCAGGTGACAGGAGCCGTAAAGCGCGGGCCTTCCCCGGCTTCAAAATAGAGCCCCAGGCCCATCGCGTCCGGAATCGTCAGGATATCCGAGAAAAGGATCGCCGCATCAAGCGGATAACGGCGCAGCGGCTGTAAAGTGACCTCGCAGGCCAGTTCGGCATTTTTGCACAGCGACATAAAATCGCCCGCCTGAGCGCGAGTGGCTTTGTACTCCGGTAGATAACGGCCCGCCTGGCGCATCATCCACACTGGCGTAACATCAACGGGCTGGCGCAGCAGCGCACGTAGATAACGATCGTTTTTGAGTTCGGTCATTTTTACATTCCTTTAGCGTTGATGCGCCCAGTGTAACATGTCAATCATATTCAGCCCGACACATTGCCACCGTATCTTCGATCAAACGGCGCGCGACGGTGCCCGGTGGCGGTAGTAGCGGCAGATCGTCATAACGGTACCAA [...]
+GAACAGGCGGTCGCGCGAGAGGTAATGGAGGAGAGCGGGATTAAGGTGAAAAATCTGCGCTATGTGACTTCCCAGCCGTGGCCTTTCCCGCAGTCGTTGATGACCGCTTTTATGGCGGAGTATGACAGCGGCGAGATTGTCATCGACCCGAAAGAACTGTTGGAAGCAAATTGGTACCGTTATGACGATCTGCCGCTACTACCGCCACCGGGCACCGTCGCGCGCCGTTTGATCGAAGATACGGTGGCAATGTGTCGGGCTGAATATGATTGACATGTTACACTGGGCGCATCAACGCTAAAGGAATGTAAAAATGACCGAACTCAAAAACGATCGTTATCTACGTGCGCTGCTGCGCCAGCCCGTTGATGTTACGCCAGTGTGGATGATGCGCCAGGCGGGCCGTTATCTACCGGAGTACAAAGCCACTCGCGCTCAGGCGGGCGATTTTATGTCGCTGTGCAAAAATGCCGAACTGGCCTGCGAGGTCAC [...]
+NODE	1440	2506	124014	123079	0	0
+AGCGCGATAATGGTCATCAGCAGCAGCGCCAGAACCTGTAGACCCACGCTTTCGGTACGAACAAAAACCAGCAGCAACAGGAAAGAAACAACCAGCGCCGCCAGGTTCATTTTGTGACGGTTAGGCAACATCAACGGCTTAGAAGAGATTTTGCCGCGCAGTTTACCAAACGCTACGATCGATCCAGTGAAAGTGACTGCGCCAATAAAGATACCGAGGAAGACTTCGGTCAGATGGATATTCACCAGCACCGGCGCCAGACTGGCGTCATGGTACAGATAGCTGTTAAAGCCAACCAGTACCGCCGCCAGGCCCACGAAACTGTGCAGAATCGCGACCAGCTCCGGCATCTCGGTCATCTCAACTTTTTTCGCCATGCGGATGCCAATCGCGCCGCCAATAATCATGGCGACCAGAATCCATGCCACGTTGCCGGTATCCGGCCCGAAAATGGTCGCCAGCAACGCGATCGCCATCCCGGCAATACCGAAG [...]
+AAGTTAATTTAATGTTAATTTCTTGATCTCGCCAGGGGTTTAATGATGTTTTGCTGTCAAATTTGAGCGAATTATCAGCCCTCGCAGGCCATTTTCAAGGCATTATGGCTGCTTAGCGGCTGAATCGTTCATGTTTTGCAAATTTGATAAAAAATTCTGTTTTTTGGCGCTAGATCACAGGCGTTATTTTCAGTAGGTTATAGAGAGTTTGTAACGGTTTTATTCTGCTGGGGTAACATTTACCTCAAACGCGGGCAGGCGTACGCTTCTCGCGCTTACTGACAAACCATCATCAAAGATACCGATGGAAGGGAACATTTATGCGAATTGGCATACCAAAAGAGCGGTTACCCAATGAAACCCGTGTCGCTGCGACGCCGAAAACGGTAGAGCAGCTACTGAAGCTGGGGTTTAGCGTCGCTATCGAAAGCGGGGCGGGGCAACTGGCAAGTTTTGACGACAAAGCGTTTGCGCAGGCTGGCGCGGATATTG [...]
+NODE	1441	4012	219402	215379	0	0
+GCGCGACGGTCGAAGAGGCGATTCGCGCTTCCGGCTTGCTGGAATTGCGCACAGATATCGATCTGGCGAAAAATAAAGTGGGCATCTATAGTCGTCCGGTAAAACTCACCGATACGGTGCAGGATGGCGATCGGGTTGAAATTTACCGTCCCTTAATCGCCGATCCAAAAGCATTACGCCGCCAGCGCGCCGAAAAATCGGCTGGCAGATAATTAACCTTGCCGGATAACGGTGTGAAAGCCGTACCACACCTGAAGCACAGGTGTGCCTGTAAGCCAGATGAACGTAGCGCCATCAGGCAAATTCGTACCAAATGGTGGGGAGAGGTTTGCAGGCCTGATGAACGTAACCTCATCAGGCGGTATCACAAAATTACTTCGTCAACGCCGGTTTGTTATCAATATTGGTTAACACGCCGCTGCTGTTAAAGGTGAGCGTCAGAGTCTGCTGCGTCACGTTCTCATGTCCTGGCTGCTGGCGGAAGACATAAAA [...]
+TGCCGCCATATCCGGATTGGCTTTGTCTGCAACTTCCAGCGCGCGATCCAGGCTATCGATTACCGGCAGCAATTCGTTGACGAACTTCTCGAGAGCGAATTTATGCGCTTTTTCGATATCCTGTTCAGTACGACGGCGCAGGTTTTCCATTTCCGCTTTGATACGCAACACGGTGTCGCGTTCGCGAGTCTGGGCTTCTGCAAGCTGAACTTCCAGATTCGCAATTTTTTCATCGCGCGGATCCACCTGCTCAGCAGAATCGTTTGGTTCAACTGCCTCAACCTCTTCGTGCTGATCCATGATAATTTCTTCCGGGGCTTGCCCCTCAGGCGTTTTCTGTTCTTTACTACTCATGAATTTCTCCGCGTTTTTTTTCGCATTCATCTCGCTAACTTCGCTTATTATGGGGATCAGATTCAGGGTTTCAAGGGAAGTACTCACATTGTCATCAATCTTCGCTACAAGGACCTCAGAAAAATGAATAATCATTTC [...]
+NODE	1442	51	2329	2324	0	0
+TAAGTTCGGCGTGGAAGTGATTGCTGAGACCAACGTGCCGCTGGACCCGAA
+ACGCACCACATCCAGCATAGACTTCAGCGTCAGCTCAATCCCTTCGACCAT
+NODE	1443	129	9462	9462	0	0
+CAACTTTTATTTTACTTTATTTCTCCAGGTCAGGAATCGGGCGGGGAAAACGGTCCTTACGCAGGACCGTTAAAACAGAAAGGGGTAAAAATTACTCCATCAATTGCTTACTTAAGCGTGGGTTCGCCT
+TCTGTTTTAACGGTCCTGCGTAAGGACCGTTTTCCCCGCCCGATTCCTGACCTGGAGAAATAAAGTAAAATAAAAGTTGCATCGCCCGGCATTACATGAGTTAATGTGCTCAACGGTTTGACGTACAGA
+NODE	1444	2014	130022	129076	0	0
+GGCAAATAGCCCGATCTTTTTGACAGAACTCATGTTCATTTCTCCTGAGCTGTATTTTTAAGAACCGGGCTTATGCTTCATGTATGCTGCGTGCCCGTTCAACTGTCGACAAGATTAACGAATGGGTTGAGATAAGTCCTAAAGAAAAAGTGAAATAAACACAAACATGAAAAAACTGATAGATTGATTTTTTTGAATTAACATATAAATATCATGGAAAATATCATGAAAGGATAAACATTGTTTAATTACAAAGGGTTATATTTACATTTCTTTGCGATGAATATGTTGCCAAAATTAACATAAGCTATTTTTGGCAACATATTTTTCACAAAATAAAAGCGAAAAATTTAATATCTTTTCGCTTTTATTTGTCATGGTTCAGCGTTAAATTTAATCTTCTGCCAGAAAACTATTCAGATAAGGGACAATTTTCTGAACGGATGTCTGAAATACGCCGTTCTCGATCCAGTACAGAGTGTTTTCACCTGG [...]
+GACTTAGCTCGTTAGGGCATCTTTTTATGCAGCAACCTGTTGTACGCATTGGAGAGTGGCTGGTTACACCTTCTGTTAATCAGATCAGTCGTCAGGGACGCCAGATTACTCTTGAACCACGGCTGATCGATCTTCTGATGTATTTTGCGCATCATCCGGATGAAGTGTTAAGCCGGGATAACATTATTGATCATGTCTGGATGCGCACCATCGTGACCAACCATGTTGTCACCCAAAGCATTTCTGAACTACGCAAATCATTAAGAGATGGCGGAGACAGCAATGCGGAATACATCGTTACCGTACCTAAACGCGGCTATAAGCTGACGGCGCCGGTTATCTGGTGCGAAGAAAATAGCGATGAGATCGATAATTCATCAACGTCGCCGCCGCCGCCGATCGCAGCAACGAATGCAGAACCGACAGAGGGGGCTACTGCCGCTACGCCTGTGCCGCCCGCCTCTTTGCAAACGCCGACTAAAAAGGCGAAAA [...]
+NODE	1445	741	42773	39687	0	0
+CGCGCGCTGCGTGAAATTCATGAGCGTGCGGACGCGGTGCGTCGTGAGCGTTTCAAAGCGATGGCGGCCGAAGGCGTGAAATATCTGGAAGAAAACCGCGAAAAAGACGGTGTGAACAGTACTGAATCTGGTTTACAGTTCCGCGTTCTGACGCAGGGCGAAGGCGCGATTCCGGCGCGTACCGACCGCGTACGCGTGCATTACACCGGTAAGCTTATTGATGGCACCGTATTTGACAGCTCCGTCGCGCGCGGCGAGCCGGCTGAATTCCCGGTAAATGGCGTGATCGCCGGCTGGATTGAAGCGCTGACTCTGATGCCGGTAGGTTCCAAATGGGAACTGACTATCCCACAGGAGCTGGCCTATGGCGAGCGTGGGGCCGGGGCATCTATTCCGCCATTCAGCACCCTGGTGTTTGAGGTGGAACTGCTGGAAATTCTGTAAGCGCCCCGGGTTTGCCGGATGACGGCGTAAACGCCTTATCCGGCAACC [...]
+GTCTATGATACGACGATCCTGTTATCAGGACTCATCGATATTAGGTAAGAATCGGCGGGATGAATACTAAGATTTAAATACAATGTTAATTTTATGTTTAAAATGAGTGTTATATCACTTTGATAATGCGAATTAGCTCACAAAAATACACGTAACGACGCCATTTGCAAAATAAAATATTGGCATCTACTGAAGTCAGGGTTGCCGGATAAGGCGTTTACGCCGTCATCCGGCAAACCCGGGGCGCTTACAGAATTTCCAGCAGTTCCACCTCAAACACCAGGGTGCTGAATGGCGGAATAGATGCCCCGGCCCCACGCTCGCCATAGGCCAGCTCCTGTGGGATAGTCAGTTCCCATTTGGAACCTACCGGCATCAGAGTCAGCGCTTCAATCCAGCCGGCGATCACGCCATTTACCGGGAATTCAGCCGGCTCGCCGCGCGCGACGGAGCTGTCAAATACGGTGCCATCAATAAGCTTACCGGTGTAAT [...]
+NODE	1446	1911	75842	75031	0	0
+TCGCTACGCCTTATCGGCGTGCTGGCGCTGATTCTCACTTCCTGCGGTCTGGCGGCCATTAATGCCGACGATATCTGGTATTTCGCCTCCGGCGGCGTAATTGGCAGCCTGTTAAGCACCACGCTGCAGCCGTTGTTGCATAGTAGCGGCGGAACGATAATGCTTCTCTGTATTTGGGCTGCCGGGCTGACGCTCTTTACCGGTTGGTCCTGGGTTAGTATCGCCGAAAAATTAGGCGGCTGGTTGCTTAATATACTGACCTTCGCCAGCAACCGTACCCGGCGTGATGATACGTGGGTTGACGACGAAGAGTATGATGACGAATACGATGAAGAAACCGACGGCGTGCAGCGTGAATCTCGCCGGGCGCGTATTTTGCGCGGCGCGTTGGCGCGTCGTAAGCGACTGGCTGAAAAATTCAGCAATCCACGGGGCCGTCAGACCGATGCCGCGCTCTTTTCCGGCAAACGGATGGATGATGACGAGGACATT [...]
+CAGGCGTTGATTCGGGCATGACACTCGGCGTGAACAGCGGTTCGTGCGGACCTTCATCAACCAATACTTTCATTGGCGAGAAATCCAGATCGTCCAGTGAGAACGGCTGCGCGCCAGCGGGTTGCTCGCCGGAATATCGCTGCTGTTGCGAAGCGGCAAACTGGCGGGCTAATTCAGCTTCCGCAGCGGTATCGTCATCTTCTGCCTGTTGAGTATCATGCTGATACGTCTCACCATAACGATGCTGCTGCGACTGCGCAAACTGACGGGCTAACTCGTCCTGATGCATTGCATCTATTTCTTCATCGGTTAGCTGCGCGCCCGTCTCGTACTGATTGCGCTCCGCCTCGCGGGCTTTTTCTTCTGCAATCCTCTGTGACGGCAGCTTAATACCGTACGACGCCAGTTCCCGTCGGGTCGGCACGCGAACGCGGTTCGGACGCGGCAGTTGCGGGCCAATCCCCTCTTTCACCTGCGGACGCGGCGCGCCGC [...]
+NODE	1447	161	2608	2608	0	0
+TTGCGGCTGCTGATACTGCGGTTGCGGTGCTATCGGCTGCTGCGGCTGCTGGTACTGTGGCTGCGGCGCTACCGGCTGTTGCGGCTGCTGATACTGCGGCTGCGGCGCTACCGGCTGTTGCGGCTGTTGATACTGCGGCTGCGGTGCTACCGGCTGCTGAA
+GTAGCGCCGCAGCCGCAGTATCAGCAGCCGCAACAGCCGGTAGCGCCGCAGCCACAGTACCAGCAGCCGCAGCAGCCGATAGCACCGCAACCGCAGTATCAGCAGCCGCAACAGCCGGTAGCGCCGCAGCCACAGTATCAGCAGCCGCAGCAGCCGGTAGC
+NODE	1448	51	2874	2874	0	0
+GCTGAACTTTGTCGTCAGCTCTAAAGCGCGCGCTAAAATTCGTCAGTTGCT
+CCAGGCGGCGTTGGGACGCGCGCCCGGCGCGGTAATAATTTCGACGGTCTG
+NODE	1449	1273	47195	46568	0	0
+CGATCTGCCGGAATTACTGCGTACCGTGACCCGGGCGCTGGAAGCCCGCAACGGGGGATAATGGCCCCCGCTGCGCCGGATTAGGGTTCGTGACGGTTGGCGGCCAGCAACGGTTTTCCCGCCAGCAATAGCCAGGCGGGGAGCATCACAATGCAGAGCAGCGGCAGCAGATTGGTATCCGGTACGACGACTGCCGCCATAAACAGACTGAGCCAGCCGTCACGCGTCACTACCAGCACTAAGCCAAGAATCGCGCAGGAGACGGTAATCGCCGCGGGTACGGCCTCAACATGGGCATGGAGCATGAGCCCCAGCGCCGCGCCGATAAACACAGCCGGAAAAATGCGCCCGCCGCGAAAGCCGCTCGCCGCCGCGATGACCAGCGCGGCGAGTTTGACGACGGCTAAGGTAAAATAATCTCCCGCGCCCAACGTCTGGCTAAACGCCATTTGTTGCATTTCGTCCAGGCCTTTAAACAGGGTAAGCGGCCCG [...]
+AAAGTCGCGTCGGTTTTTCAGCAATTTCTTTGGCAACGACTGCCCGCCAGCATCGGCATCGCTTATGATTCGCCGTTCTGGATAGTGGGTATGCTCACGCTAACCGGGATCGTGGTGGGTTTGATTATCCGTTACAGTCCCGGACACGCTGGCCCCGATCCGGCCATCGAACCGTTAATCAGTATGCCGGTCTCGCCATCTGCGCTGCCCGGGCTGCTTCTCGCCTTAATCATCGGCCTTGCTGGTGGGGTAAGTTTGGGGCCAGAGCATCCGATAATGACAATAAATATCGCGCTGGCGGCGGCTTTCGGCTCCCGCCTGTTTCCGCGTATCACGGCGTTAGACTGGACGATTCTGGCCTCAGCGGGCACCATCGGCGCGCTGTTCGGCACGCCCGTCGCCGCAGCGCTGATTTTTTCGCAAACACTTAGCGTCTCTAACGATATTCCCATGTGGGATCGCCTGTTTGCGCCGTTAATGGCGGCAGCGGCG [...]
+NODE	1450	1406	69831	69234	0	0
+TGATTGTCAGCGGCGCGCGCAACGGCTGCATCCCGGGTAATGCCAACCCACGGCGCTTTTAGCAGGATCAGCACTTCTTTTCCCTCCTCCAGGCCGAGACGCTCGCCGCTTTGCGCCGTCAGCGCGACTTTGAGCCGCGTTTTGCCGTCGGCCAGCAGCACGTCGACATGCTGTTGCACCTGATCGCGATCGCGGGCGGTAATGGTGCCGAACCACTGATTTCGGGCGCTGGTTTGCAGTGAAAAGCGGGAGATAGCGGCCAGCAGACTGTCAAGCGGCAGGGCGTCATCGTCGCTTAACACATCGAACGCTTTTTGCTGAATTTGGCCCAGCAAATCGTAAAGCTGGATCAGACGCTGGCCATAGCGGGTTAATACCGCGCCGCCGCCGCCTTTGCCGCCCGTTGCGCGTTCAACCAGCATATGTTCGCTAAGCTGGTTCATGTCGTTTATCGCATCCCAGGCGCTCTTATAGCTGATTCCCGCGTCTTTC [...]
+TTTCGCGCGTCGTGGTATCCACCGCTTTTTTATCGGCTGCGTAATCCATCCATTTCTGGTCAGCAGAGATGAACAGATCCGCCGGCGCGCCCGCTTCTATCTGGCGCGCCAGCGTTGAAGAGGAGGCGAATGAGGAAACCACATCCACATTTTTCTCTTTTTTATATTCTGCCGCAATGTCTTGCATCGCGTTCGTTAGCGACGCGGCGGCAAATACGGTGATCTTGCCTTCATCCGCCAGCGCATGACCAGCGATGACGAAAGATAATGTCGCCCCTGCGACCAGGCGTAACCAGGAATGCGCCATCTGTAACTCCTTGTGCGTTTCGTTATGTAAACGATAATATAACGATAATCTCAGGGGTTTCCCAGCGGTTATTCATACCCATTAACGATTAAACACAGAAAATATCGGCAGGAAAAGCAGGATCTTGAGTAACAAAAACGCCCGACTGAGCGGGCGTTTGGGGAAATCAGCGGTTCTGTCTGGAC [...]
+NODE	1451	51	2277	2277	0	0
+CTTTGATCGGCCATTGTCGTGATCTCTTCCTGCTGTGCCTTATGGTTCTGC
+GCACGGCTGAACTGAACGCAGATAAAGACAGCGGCCAAAGCGTACCGCTGG
+NODE	1452	907	59403	59177	0	0
+GGCGCGGGAGAGTCTTTCGGCGCTGACAAGATTTGAAGACGACATGGTGATGGCGCCTGAGATGCGTTTCAGTAAACGTGAGAAAGAGATTCTGAAGTGGACGGCGGAAGGGAAGACCTCATCGGAGATCGCCATTATTCTGTCGATTTCTGAAAATACCGTTAACTTCCATCAGAAAAACATGCAGAAGAAATTCAATGCGCCAAATAAAACACAGATTGCCTGCTACGCTGCGGCGACAGGTCTGATATGACGTGCTGACGATGCTTCGCGCCAGACGCGAAACCGGCTGAAAGCGATGCTAACAGCCGGTTTTTTACTACTGGCGGTAAGCCTGTTTAATTTGCTTAACCGTACTGGAAAATACCGCCGCTTGTGCTTCATCATCCATCTGCGCGATCTGTTTTTCCATTTTAAGAATCACGCGCCCTGCATCGGCCTGGCCCATCGCCTGCAGCATCAGCGTTAACATGGCTTTCAGGCAGTTGACTT [...]
+CCAACGTTGTAGCCCCTTCTGACGGCGCTGTCCCGGGCTGCTATTTCATAATGGTGACAAAAATTTCACGTTCCGCTGTCTAAACACTAATTAGGGAATCAACTTTGTAACAATAATTAACGAGTAAAATACGCGTAATAAACAAAGAATGAAGAAAATATATGCATCACGCAGCAACGTTTATTTTGTGGGTAACCCCTCCGCTTTTTGATCAAAAAACAACCACTGCTATTTTTAGCGTAGCTTATGGTATACTCCGCCGCCTTAACATCTGCTATCGCACATTTTCACTGAAACATAACGAGGAAAATAAATGAGTACGCCTGATTTTTCCACCGCTGAGAATAATCAAGAACTGGCTACTGAAGTCAACTGCCTGAAAGCCATGTTAACGCTGATGCTGCAGGCGATGGGCCAGGCCGATGCAGGGCGCGTGATTCTTAAAATGGAAAAACAGATCGCGCAGATGGATGATGAAGCACAAGCGGCGGT [...]
+NODE	1453	346	17919	17919	0	0
+AAAATCGGGCGATGTGTTTGCACGGGTGATGTCGCGAATAAATGCGCTCACATCGTCCATTACCTGATGCGACAAGGCGGCATCGAAGGTGGCGCTATCAGCATCACAGAACCCGTGCCGCGCATCGTACATTTTACACTGCACCCGGGGTCGCTTTTCCAGCGCCTGTCGCATGGCGAGGGGATCAAACGCCGGCTCATAACGCGCGATAATAACCAGTGTCGGACAGAGAGGCGCAAGATGAAGGTACTGGCGTATACGGGAACCGTAATAGCAAATGACGCCATCGCATAACCCACTGGCTGCACTTAGCCATGCGAGCGTTGCGCCGACGCTATACCCTACG
+GGTTATGCGATGGCGTCATTTGCTATTACGGTTCCCGTATACGCCAGTACCTTCATCTTGCGCCTCTCTGTCCGACACTGGTTATTATCGCGCGTTATGAGCCGGCGTTTGATCCCCTCGCCATGCGACAGGCGCTGGAAAAGCGACCCCGGGTGCAGTGTAAAATGTACGATGCGCGGCACGGGTTCTGTGATGCTGATAGCGCCACCTTCGATGCCGCCTTGTCGCATCAGGTAATGGACGATGTGAGCGCATTTATTCGCGACATCACCCGTGCAAACACATCGCCCGATTTTCAGCTTTAGTGGAGACTTTTTTCAACGACCTGTTCCAGTTTTTTCAAAGT
+NODE	1454	47	1701	1548	0	0
+TCCGGCTCCAGCAGGCACTCGCCGCGGCGAAGCTGGATAAGCATGTG
+TTTCGATAGCAGGCACCACGTCATCCTCCTGACCATGCCACAACAGA
+NODE	1455	3311	199196	197481	0	0
+ACCTGTTTATGGGCCGCAGGCGTGCGGCATCGCATTACGCCAGAAGCGTTGTCGGCGACGGTAGCGTTTTTCCGACAGTATCTTTAAACGCGGAGTATGCTTACACCCTGGGCTTCAAGCTGTTGCAAAACCTGCGGATTGGCATTTTTGCCGGTAATCAGCATAGCGATCTGATCGGCGCGGCTGAACAGCATTCCCGCGCGCTCGCCAATTTTACTGCTATCGACCAGCGCGACCAGTTTCCCGACGACGCTGAGCATTTTTTGTTCCGCCATGGCGGTTAGCATATCGGTTTTGTACAGGCCATCCGCGGTTAAGCCCTTTCCGCTGGTAAACATCCAGTGGCCAGCATAGAGACTGTTTTCACTTCCCTGCGGGCTCAGGGTAATCGACTGGCTTTTATTATACTGACCACCCATGATAATCACGCTGTCATGCTCTTGATCGATCAGATAATTCGCCAGCGGCAGATAGTTGGTAATGATCTGTACC [...]
+GGCCTCAGAGAGTTCGGCGACAAACATACGCACGCCCTGGGTGATGATGAAGATCGCCACCGCAAAGGAGAAACCGGTTTGCAGGATATAGATTGTCCAGTGGGTTTTACCCGCCATCGCCTGTACGGTATCGATACCAAAGGAGAGCAGAATGGCACCAAAGAAGATGGTCATTACAATCGCCGTGGAGACGATGTTGTCATGGAAAATGTTCAGCCAGCCCGGCAGTTTGAGGTCTTCAACGCTTTCCTCTTTTTTGCCCAGGAACGGCGCGACTTTATAGGCAATCCAGGAAGCAAACTGCTGCTGGTGACCGATGGAGAAACCGCAGCCGTCCGTCACTTCCTGAGTCGGCTTGTACATCATGTTGGAGGTAATACCCCAGTACAGGGAAACCAGTATCGCCGTGCAGATAATGGTGGTCCACATGGAATAGCCGAAGATATAGAAAGAGACCGCAATCAGCCCCGCCTGCTGGAACATGATGTGCCC [...]
+NODE	1456	4033	218526	214857	0	0
+CAGTGCTTTCTCGTAAATACCTAATGGATGATTACGCATGCTTTTCTCCCCAAATGGCGTCAATTTGGGCGTGGAATTCGGCGGCGACCTGCGCCGGATGGGCGGCACCTGCCAGCGCACGTCCGGCGATAAATGCCTTAACGTTAATGTCGCGGAACAGCGGCAGATCCGCTGGGGTAATGCCGCCGGTAATCGATAGTTCAAGGCCGATGTCGGACAACGCCTTCATGCGTGTTAGGTCCGCTTCTCCCCACTGTTGCCCGCTGGCCTGCGCATCGCGTCCGCGGTGGTAAATCGCCTGGCGAACCCCGACGCGATACCAGTCTCGGGCGTCGTCCAGCGTCCAGTTGCCGAACAGTTCCATTTGAATTTCACCGCCACAGGATTGTGCGACGGCGTGGCCTTTCTCGACGGTTGCGAGCGGCGCAGCGCAGATGATAGTCATCCAGTTGGCGCCAGCGCTAAAAGCCTGCTGCGCCAGGGTTTCACCGG [...]
+TCCAGCGGCTTGTCGATCAGCAAGCTGTTTATGGCCGGGATCGCACCGGGCATCATGATGGGCGCGGCGCTTATGCTCACCTGGTGGTGGCAGGCCGGGCGATTAAATCTCCCTTCTCAGCCCAAAGCAACACCGCGTGAAATCTGGCAATCATTGGTTTCAGGTATCTGGGCGCTGTTTTTACCGGTGATTATTATCGGCGGCTTCCGTTCCGGACTTTTCACGCCAACGGAGGCAGGGGCGGTTGCCGCCTTTTACGCCCTCTTTGTCGCCGTGGTTATCTATCGGGAATTAACGTTTTCCAGTCTCTACCACGTGCTGGTCAATGCCGCCAAAACGACGTCAGTCGTCATGTTTCTGGTGGCCGCGGCCCAGGTATCCGCCTGGCTGATTACGATCGCGGAATTACCCATGATGGTGTCAGATTTGCTGCAGCCGCTGGTCGACTCTCCGCGACTCTTATTTATCGTCATTATGATCTCAATTATGGTC [...]
+NODE	1457	47	119	119	0	0
+GTACGCACCGGCAGCCGTTGTTTGCCCTTACGGCGAAAATTCAGCTT
+CTCGCCACTGGCCACGCCGGAAGCGCTGAACCAGAGCTGGTCTGTCG
+NODE	1458	358	42772	38613	0	0
+CTTGAGAACCGGGCGCTGAAAGACGTTATCGAAAAAAAGCTTTAAAACCAGCCTTTAAGCGTGAGCTGGTCACTCATCTGATAACGGCATTCGGACTCAGTATCCGTCAGGCCTGCCGGAGCCTGAACCTGAGCAGAACGGTTTATCATTACCGTCCGGATAACACACGTGACGAACCCGTTATTACCGCACTGCAGGCAGCAGCTGAACGGTATCCACGATACGGTTTTCCGAAGCTTTTTCAGGTTCTGCGGCGGCAGGGATACATGTGGAATCACAAAAGGATCCACCGTATTTATTGTCTGCTGAAGCTGAATTTTCGCCGTAAGGGCAAACAACGGCTGCCGGTGCGTAACCC
+CAGCAGACAATAAATACGGTGGATCCTTTTGTGATTCCACATGTATCCCTGCCGCCGCAGAACCTGAAAAAGCTTCGGAAAACCGTATCGTGGATACCGTTCAGCTGCTGCCTGCAGTGCGGTAATAACGGGTTCGTCACGTGTGTTATCCGGACGGTAATGATAAACCGTTCTGCTCAGGTTCAGGCTCCGGCAGGCCTGACGGATACTGAGTCCGAATGCCGTTATCAGATGAGTGACCAGCTCACGCTTAAAGGCTGGTTTTAAAGCTTTTTTTCGATAACGTCTTTCAGCGCCCGGTTCTCAAGGCTCAGGTCGGCAAACATCTGTTTGAGGCGTCGGTTCTCGTCCTCAAGAT
+NODE	1459	4	1317	66	0	0
+TAAT
+ACTC
+NODE	1460	2845	128689	127274	0	0
+GTGTTTTTAGGCGCAGGCGTCTTTTCGTGGTTAAGTCTGGAGCCGGTTATTTTGCAGCGACTGCGTAGCTGCGGCGAATTACCGGCGGTGCTGCGTACGTCGCTGGGTATCCAACTGGCGCCCGCGCTGGTCGCCTGTAGCGCCTGGCTGAGCGTCAATGGCGGGGAGGGCGACACGCTGGCGAAAATGCTATTCGGCTACGGTCTGTTACAACTTTTATTTATGCTGCGATTAATGCCCTGGTATTTATCACAACCGTTTAATGCTTCCTTCTGGAGTTTTTCGTTCGGCGTTTCCGCGCTGGCGACCACGGGGTTACATCTTGGTCACGGTAGTGAATCAGGGCTTTTCCATATTCTGGCCGTCCCGCTGTTTATTTTCACTAACGCTATTATCGCCTTATTGCTGGTGCGTACATTTCTATTGCTGGTGCAGGGGACGTTGCTTATTCGCACTGAGCGCGCTGCACTGTTGAAAACGGAGGAAAAAAAT [...]
+ATGCGGATAATCCCCCATTCTCTTGCCGCCGCAATGCTGGCGGGAATACTGCTACGCTTCGGCCTGCAGGCGTTCGGGACGCTCAACGGAGAGTTTGTCATGTGCGGCGGTATGCTATTGGCGTGGCTACTCTTTAAAGTATTCGCGCCCCGCTATGCCGTTATTGCTGCCATGGTAATGGGAATAACGGTGGCGCTCATCCAAGGTAAGGTGGCGATGAGCGGTATTCATTTCGCGCCGGTGTGGCCCACCTTCGTTCCCCCCCACTTTTCATTCGCTCAAAGCCTGAGCGTCGCGGTACCGCTCTTCCTGGTGACGATGGCATCGCAAAACGCCCCCGGCGTCGCCACAATGAAGGCGTCTGGCTATCAGCTTCCTGTCTCTCCGTTAATGATTTTTACCGGGTTGCTGGCGCTGCTGCTTTCGCCATTTGGCGTTTATTCTATCTGCATTGCCGCCATTACGGCCGCCATTTGTCAAAGCCCGGACGCA [...]
+NODE	1461	4240	222968	221408	0	0
+AATCACTTCCATCGCTGTGCGTGCGCAGTACAGCTTAGCCAGCGCGGCGCTGGTACGCAGTGACTCTTCCCGATCGGCCTGCCAGGCGACTTTCAACACCATATTGCGCATGTTTTCGATTTTGATGGCCATTAACGCCAGCTTTTCCTGGATCATCTGGTTATGGCCGATGGGTTTACCAAAGGCGATACGCTGGTTGGCGTAACGGGCGGCATCTTCAAATGCGCATTCGGCGAAACCTGTACTGCGCGCCGCATTAATCAAACGCTCCATCTCAAAATTGTACATGACATTGAGGAAACCCATACCTTCTTCACCGACCCGGTCGCTTTCGTCCACCTCGACATTATCGAGATAAACTTCGCATGTACTCAACATGTGCCAGCCAATTTTGTGCAGCGGATTAATCTTTATGCCCGGTTTATTTGAGTCCACCCACCAAAGCGTGAACGCTTTTTTAGGATCTTTTGGCTCCGTATCGCGCGCCAGAAC [...]
+TCGATGAATTAACGCCAGCAGCAAAACTGGTTGGCGCTATCAACACCATTGTTAACGATGACGGCTATCTACGCGGCTACAACACGGATGGTACGGGCCATATTCGGGCAATTAAAGAAAGCGGTTTCGATATTCGGGGAAAAACCATGGTGCTGCTCGGCGCGGGAGGCGCGGCTACCGCCATTGGCGCCCAGGCAGCCATTGAAGGCATTAAGGAAATTAAACTGTTTAACCGTAAAGATGACTTTTTCGAAAAAGCGGTTGCCTTTGCGAAGCGGGTGAATGAAAACACCGATTGCGTCGTTACCGTCACCGATCTTGCCGATCAGCACGCTTTTACTGAAGCGCTTGCCAGCGCAGATATTCTGACGAACGGCACCAAAGTTGGCATGAAACCATTGGAGAACGAATCCCTGATCGGCGATGTTTCCCTGCTCCGCCCTGAATTGCTGGTCACCGAATGTGTTTATAATCCGCATATGACAAAGTTAT [...]
+NODE	1462	192	9625	9446	0	0
+GAACATCGGGATAAAGCCAGGAATAATCAGGATCGAGGAGCCGCAGGCAACCAGGATGCCAACCGCAATCAGCTGGCCGATGGTGCCCCACATAAAGCCCCAGACCACCGCGTTAGGCGCGAAGCTATAAATAGCCGCACAGTCAATCGCCAGTACTGCGCCCGGAATCAGACGCTGGGAGATACCGTTAAA
+CTGTGCGGCTATTTATAGCTTCGCGCCTAACGCGGTGGTCTGGGGCTTTATGTGGGGCACCATCGGCCAGCTGATTGCGGTTGGCATCCTGGTTGCCTGCGGCTCCTCGATCCTGATTATTCCTGGCTTTATCCCGATGTTCTTCTCTAACGCCACTATCGGCGTGTTCGCTAACCACTTCGGCGGCTGGCG
+NODE	1463	406	24934	24625	0	0
+TGAGCCGTATTAAGGTCCGTGAAGCCGCTATGCGCGGTGAAATTCCGGGTCTGAAAAAGGCTAGCTGGTAATTGTCACCAATTGAATCACGGGAGTAAAGACAGATGAGCATGCAAGATCCGATCGCGGATATGCTGACCCGTATCCGTAACGGTCAGGCCGCGAACAAAGCTGCGGTCACCATGCCTTCCTCCAAGCTGAAAGTGGCAATTGCCAACGTGCTGAAGGAAGAAGGTTTTATTGAAGATTTTAAAGTTGAAGGCGACACCAAGCCGGAACTGGAACTGACTCTTAAGTATTTCCAGGGTAAAGCTGTTGTAGAAAGCATTCAGCGTGTCAGCCGCCCAGGTCTGCGCATCTACAAACGTAAAGATGAGCTGCCGAAAGTTATGGCCGGTCTGGGTAT
+GCGCAGACCTGGGCGGCTGACACGCTGAATGCTTTCTACAACAGCTTTACCCTGGAAATACTTAAGAGTCAGTTCCAGTTCCGGCTTGGTGTCGCCTTCAACTTTAAAATCTTCAATAAAACCTTCTTCCTTCAGCACGTTGGCAATTGCCACTTTCAGCTTGGAGGAAGGCATGGTGACCGCAGCTTTGTTCGCGGCCTGACCGTTACGGATACGGGTCAGCATATCCGCGATCGGATCTTGCATGCTCATCTGTCTTTACTCCCGTGATTCAATTGGTGACAATTACCAGCTAGCCTTTTTCAGACCCGGAATTTCACCGCGCATAGCGGCTTCACGGACCTTAATACGGCTCAACCCGAACTTCCGCAGGAAAGCGTGCGGACGACCAGTTTGACGGCAGCGG
+NODE	1464	51	142	142	0	0
+ACAGGCGGCGTTGGGACGCGCGCCCGGCGCGGTAATAATTTCGACGGTCTG
+TCTGAACTTTGTCGTCAGCTCTAAAGCGCGCGCTAAAATTCGTCAGTTGCT
+NODE	1465	18	2141	2120	0	0
+CAAAAACAAGCCAGTACA
+AATGATCTTAATGCGCCC
+NODE	1466	19	1251	1251	0	0
+TAATGGCGAGGACATTATC
+TCGCGCAGACCTCCTGACG
+NODE	1467	46	2469	2469	0	0
+CAGCTTCATGAAGCGAGACGGCGATATTATCAAGGGGTTCAACTTT
+GCAATATTTTGCTGAATGTAATATTACGGAAATCTGCGTTTGAAAA
+NODE	1468	1	98	52	0	0
+G
+G
+NODE	1469	41	4085	592	0	0
+TGGATCAGGGTAACAACCATTTTGATGTTGTCGCCCGGCAT
+AATGGACGACGGTCTGCGTTTCGCAATCCGTGAAGGCGGCC
+NODE	1470	6223	316922	312001	0	0
+CAGACACAGCCAGCCGCCATAATTCTTATTTCCTCTTTTATAAAAATAACCACATAATAATCATGGGTTTATTATAATGTTCAACAATACGCGACTCTCTCGCTGGTGGGCGTTGTTTGCGCTTACCGCGACCATCATGCTTGCCCTTCCCGCGCAGGCGAATACGTGGCCTCTTCCGCCCCCCGGCAGTCGACTGGTGGGAGAAAATAAATTCCATGTCGTTGAAGACGACGGCGGCTCGCTGGAGGCGATCGCCAAAAAATATAACGTGGGCTTTTTAGCCCTGTTACAGGCCAACCCCGGCATTGATCCTTACGTGCCACGCGCAGGCAGCGTGCTAACGATTCCGCTGCAAACGCTGCTACCGGACGCGCCACGTGAAGGTATCGTCATTAACCTCGCGGAATTACGGCTTTACTATTATCAACCGGGGAAAAATACGGTCACGGTCTACCCTATCGGGATTGGCCAACTAGGCGGCGATACCCTGAC [...]
+GGAGGAGCGCGAGATACTGGCGCATCCGCTGGTTGGCGGGCTTATTCTGTTCACGCGTAATTACCATGACCCGGAACAGCTGCGCGAATTAGTGCGCCAGATTCGGGCGGCATCGCGTAACCATCTGGTGGTGGCCGTCGATCAGGAAGGCGGGCGCGTACAGCGTTTCCGTGAAGGGTTTACCCGCCTGCCCGCGGCGCAATCTTTTTTTGCGCTGCATGGGCTGGAAGAGGGGGGACGACTGGCGCAGGAGGCAGGGTGGCTGATGGCCAGCGAAATGATCGCGATGGATATTGATATCAGTTTTGCGCCAGTGCTGGACGTCGGGCATATCAGCGCGGCAATTGGCGAGCGCTCCTATCATGCCGATCCCGCAAAAGCGTTGGCAATGGCAACGCGCTTTATTGACGGCATGCATGACGCCGGGATGAAAACGACCGGTAAGCATTTCCCCGGCCACGGCGCGGTCACGGCGGACTCCCACAAAGAGAC [...]
+NODE	1471	51	4127	4127	0	0
+ACCCGCTCAGGCTAAACACCATTAATAACGCCACAACAGGCGCAAACCAGC
+TGTTTTGATAAAGAAGGCGATCAGCGCAAAGCGTTTGTCGATTTCCTGCAG
+NODE	1472	100	6292	6292	0	0
+GCTTACACTGACGGGTTTTTGCATGAAGAGATGAAACTGACCGATAAGCCGCTTTCTTTTGGACATAGCGTCGTGGACAGTCATTCATCCTGCCGCCCGG
+GGCTTATCGGTCAGTTTCATCTCTTCATGCAAAAACCCGTCAGTGTAAGCTGGTGGGTTTATGCTTTTACAGGGCGGCAGGATGAATGACTGTCCACGAC
+NODE	1473	15	1183	1183	0	0
+ATGACTGTCCACGAC
+GCTTACACTGACGGG
+NODE	1474	8	212	212	0	0
+ACTATACC
+ACCCGCCA
+NODE	1475	3	95	95	0	0
+CAA
+AAA
+NODE	1476	39	1571	1571	0	0
+AAGAAAGCGGCTTATCAGCCAGTTTCACCTCTTCATAAA
+GTCGTGGACAGTCATTCATCCTGCCGCCCTGTAAAAGCA
+NODE	1477	587	30776	30630	0	0
+CCTATCTCCAATCCCCTTAAAACACCATCGGGAAAAATAGAAATCTATTCTGAACGACTGGCCAATATCGCAAAAACATGGGAACTGAAGCCTGATGAAGTCATCGATCCTTTACCCATTTACACTCCAGGCTTTAATGGCTGGGAAGATCCAGCCCGTCGCGAGTATCCATTGCAAATGACCGGGTTCCACTTTAAAGGCCGCGTGCATTCCAGCTACGGCAATATTGATGTTCTGAAACAGGCCTGCCGACAGGAGATTTGGATAAACCCTATTGATGCCCGGGATCGCGGAATCAAAAACGGAGACACCGTTCGGGTATTTAATCAGTATGGCCAGACATTGATTCCCGCAAAAGTCACACCTCGTATCATGCCTGGCGTTACTGCTATGGGCGAGGGAATGTGGCTGCATGCCGATATGTTTGGTGACAAAGTCGACCACGGTGGCTCAATTAACATTCTGACAACACATCGCACTTCACCGCTGGCA [...]
+TACCTTTTCGACCTGAACGAGATTACTGTGCGAAGGATTAGCTTTTGCCAGCGGTGAAGTGCGATGTGTTGTCAGAATGTTAATTGAGCCACCGTGGTCGACTTTGTCACCAAACATATCGGCATGCAGCCACATTCCCTCGCCCATAGCAGTAACGCCAGGCATGATACGAGGTGTGACTTTTGCGGGAATCAATGTCTGGCCATACTGATTAAATACCCGAACGGTGTCTCCGTTTTTGATTCCGCGATCCCGGGCATCAATAGGGTTTATCCAAATCTCCTGTCGGCAGGCCTGTTTCAGAACATCAATATTGCCGTAGCTGGAATGCACGCGGCCTTTAAAGTGGAACCCGGTCATTTGCAATGGATACTCGCGACGGGCTGGATCTTCCCAGCCATTAAAGCCTGGAGTGTAAATGGGTAAAGGATCGATGACTTCATCAGGCTTCAGTTCCCATGTTTTTGCGATATTGGCCAGTCGTTCAGAATA [...]
+NODE	1478	1159	71857	71541	0	0
+TCAGGTGGCGCGACCATTTTCGTGATTGTTGGAATCATGTTTAGTCTTAATGCCTTATTTATTTTCTACCTGAATATCAGTTCTGGTCTATTCAGGCCGTTAATTTTTATGGTGGTAAGCGGGATCATCGCTGCGATAGTTGTCAATAGCCTGGTGGCCAGTAGCACTCTGGTCTGGATAGTCAGTGTACTGACGGTATTGGTGTGGACATTGATTACAGCACTAGAAAAATCGACACTTCATGGTTATGCCCGCATGTTATACCACAGCGAGTTTTCATCCCTGTCTCGTTGCGCTTTATTTGGCGCGCTGACGCTTTACCTTGGCATTATTAATGCTGTGGTTACGCTGTGTCGTTATATCATTTTGATGATTCTGGAAATACTATTATCTTTCAGGCCGTAGGTGTTGCAGGTTTTTTATTCAGGTTGGTGATGATGGGTATAATGAGTAAATTATGTGGCAAACAATTTTGGTTAGCGTTTTGTGAAG [...]
+ATCAACTGCCCTTTTTTCACCAGCTCCGCCAGTGTTTTTCCTGTTAGCCACGTCATCAGATTCATGGGCTTATCATTTCCTTGTCTGTGAGGTGAGATATTTTTGTAATGCGACTCGCACTAATCGACGCCCTAGGCAGAAACGAATCATCATCGTAAACGTTTCGCCATTCATCACCCAGCGGCAAAGCACAACCATAATAATCGCGATAACCAGATCACTCTTTAGTTCGCTATTTTGATTGCACAACACGTCAAATAATCCAGTACCGCAGAGCATAATATTTAATAAAAACAGTAAAACGCAGAGGCGCAACCCCAGGATATAACCCTTGGCAATAAGCCATACCTCAGCCATAACACATAGCATCATACCTATAGCACTGCCCAAATAAATGATTATATTTAGTGGCCAATATAGAATAAACTTATCAAAAACAAAATGCGCACTGCACACACCTCCCACAAGAAGCATAAAACTAAACGCGCAAAC [...]
+NODE	1479	2593	150990	149864	0	0
+CGCATGAGCGATTTCTGGCATTGCTTGATCCCTGGCTGGATAGTCTTCCGGGTGCAATACTGCACTGCTTTACCGGTTCACGCCAGCAAATGCAGGCCTGTGTGGACAGAGGGCTCTATATCGGTATTACCGGGTGGGTTTGCGACGAACGACGCGGGCTTGAGCTACGTGAACTCTTACCGTTTATTCCAGCGGAAAAGCTACTGATAGAAACCGACGCGCCGTATCTGTTGCCTCGCGATCTTACGCCGAAACCAACGTCACGACGCAACGAGCCCGCGTATCTGCCTCACATCCTGGAACGCATTGCGCTATGGCGTGGTGAAGATCCGCAATGGTTAGCGGCGATGACAGATGCCAACGCCAGAACCTTATTTGAGGTCGTATTCTGAACGATCGCTAAATCTTGCGAAAACCGGTGTTTTTTACGCTCTGCTTCACTTCTTTATTGAGTAAATTAAGCAGTAACATCGAACGCGTTTCGCCATCCGG [...]
+GATAGCCAGCTCATCCCAAATCGCATCAATACGCGCGGTAACTTCAGGATCTTTAACAATAGGGCGACCCCACTCGCGTTGGGTTTCGCCCGGCCATTTGTTTGTGGCATCCAGCCCCATTTTTGAACCCAGCCCGGAGACCGGCGAGGCAAAATCCAGGTAGTCAATCGGCGTATTTTCAACCAGCACCGTATCCCGCGCAGGGTCCATACGGGTGGTAATCGCCCAGATCACATCATTCCAGTCGCGTGCGTTAACGTCATCATCGCAAACGATAACAAATTTCGTATACATAAACTGGCGCAAAAACGACCAGACGCCCATCATGACGCGTTTCGCATGACCAGCGTACTGCTTTTTCATCGTCACTACCGCCAGGCGGTAAGAACACCCTTCCGGCGGCAGATAAAAGTCGACGATTTCCGGAAACTGTTTTTGCAGAATAGGCACGAAGACTTCATTGAGCGCCACCCCTAATACCGCAGGCTCATC [...]
+NODE	1480	51	2200	481	0	0
+TGCTTACCATGCAGGAAATGCGTGAGCGCATGAAGCATGGAAAATTTGGGG
+ACCTCATCATCACCGCCGCAGCCGCTCACCTCCCGACTTTCCCCTGCGCGT
+NODE	1481	1357	78159	77808	0	0
+CTTTGGGCCGGTAAAAGACTACGAGTGCCTGTGCGGTAAGTACAAGCGCCTGAAACATCGTGGTGTTATTTGTGAGAAGTGCGGCGTTGAAGTGACCCAGACCAAAGTACGCCGTGAGCGTATGGGCCACATCGAGCTGGCGTCCCCGACTGCTCACATCTGGTTCCTGAAATCGCTGCCGTCCCGTATCGGTCTGCTGCTCGATATGCCGCTGCGCGATATCGAACGCGTACTGTACTTCGAATCTTATGTGGTTATCGAAGGCGGTATGACCAACCTGGAACGTCAACAGATCCTGACTGAAGAGCAGTATCTGGACGCGCTGGAAGAGTTCGGTGACGAATTCGACGCGAAGATGGGTGCGGAAGCTATCCAGGCCCTGCTGAAGAGCATGGATCTGGAGCAAGAGTGTGAAACTCTGCGCGAAGAGCTGAACGAAACCAACTCCGAAACCAAGCGTAAGAAGCTGACCAAGCGTATCAAACTGCTGGA [...]
+CGCCGTTCGCCGGAGACAGGATGTTATTGGTAGACATCATCAGCGCACGCGCTTCAAGCTGGGCTTCCAGCGTCAGCGGTACGTGAACAGCCATCTGGTCACCATCGAAGTCGGCGTTATAGGCCGCACAAACCAGCGGGTGCAGCTGGATAGCTTTACCTTCGATCAGTACCGGTTCAAATGCCTGGATACCCAGACGGTGCAGTGTTGGTGCACGGTTCAGCAGTACCGGGTGTTCGCGGATAACTTCGTCCAGGATATCCCAAACGACAGCTTCTTCGCGCTCAACCATTTTCTTCGCGGCTTTGATGGTGGTGGCAAGGCCACGCAGTTCCAGTTTGCCGTAGATGAACGGTTTGAACAGCTCCAGCGCCATTTTCTTCGGCAGACCGCACTGGTGCAGACGCAGGTATGGACCTACGGTGATTACAGAACGACCGGAGTAGTCAACACGCTTACCGAGCAGGTTCTGACGGAAACGACCTTGTTTAC [...]
+NODE	1482	325	18454	18454	0	0
+GTATCAAGCAACTTTGTTAATCACTTGATTTTGTTATCGTCTGGCAATCAGTGCTGCCGTTCGATGCGTTGCATTCTACTTACCTGACGCACTGAGTCAACGATATTTTTCGTCACTCACGATCGTTTGCTGAAATTTGCGGCGAAACGATCACTGATCAAGCAAATCTCCGCGTGCAGCGCTCAAATATTGCAACATGGACCACAACGTTAGCACCGCTGCGACAAAGAAAAGCGCGATCCCGGCATACTCTACCCAGATATTCGGACGCCACAAGAGCCACGCCAGCGCCACCATCTGTGCGGTAGTTTTGACTTTACCGATC
+TGTGGCGTCCGAATATCTGGGTAGAGTATGCCGGGATCGCGCTTTTCTTTGTCGCAGCGGTGCTAACGTTGTGGTCCATGTTGCAATATTTGAGCGCTGCACGCGGAGATTTGCTTGATCAGTGATCGTTTCGCCGCAAATTTCAGCAAACGATCGTGAGTGACGAAAAATATCGTTGACTCAGTGCGTCAGGTAAGTAGAATGCAACGCATCGAACGGCAGCACTGATTGCCAGACGATAACAAAATCAAGTGATTAACAAAGTTGCTTGATACTGCGGGAATAGCTCAGTTGGTAGAGCACGACCTTGCCAAGGTCGGGGTCG
+NODE	1483	1823	82094	81279	0	0
+TCGCCGGTCAGCGCGGTGGTGGTGAGATCTTCTACGCCCGGCGTGTTGTCCAGCGCAGCCTTGTTTTTGAGGAATTTATCTTCTTTGTTGCCCATCTCCGTTTCATTGGCGCTCTCTTCCGCCAGGGTCGCCAGCAGCGGCGTCAGCTCCTGACGCATCGCGCTGATAATGGCGCTGCGGGTTTTTAGCGGGCACTGCTGATAACGTAAGAACGCCTGGTGCGCGGCATCGATGGCCTCGCTCACGGACTGGAAAATCCCTTTGCCCTGAGGCTGAGCAGGCGTTTGCGCCGGCGTGGTTAATTGCTCGCTAAGAATGGTGCGAATCAGGGTTTCGAGTTCAGAAGTATTCATTGATGAGTTCCCACGTTAATAGCCGCGATGGCGGTCTGTGCTATGTCCATGTCCTGCTCAACGCTGCCGCCGCTGATGCCAAGACCCCCAATTAATATGCCGTCGCGCCACAGGGCGTAACCGCCGCCAAAGGTGACCA [...]
+TGAGCTATCGCGATGTCGCGCTGCTAAGCCGGGGGCGTGTGGTTGTCCACCGCAAATGCATCGTGACCGCCATGGCGCGTGACGCGGCCAATGCGCGGAATATTCAATTAATTAAGCAGGAGTAAATCATGCATCTGGCACGAGTCACGGGCGCGGTTGTCTCCACGCAAAAATCACCTTCTTTGATTGGGAAAAAGCTGCTGCTGGTGCGTCGGGTCAGCGCCGATGGCGAACTCCCCGCCTCGCCTACCTCCGGCGATGAAGTGGCCGTGGACTCCGTCGGCGCGGGCGTCGGCGAACTGGTTTTGCTCAGCGGCGGCTCCAGCGCCAGGCACGTTTTTTCCGGGCCAAATGAGGCCATCGACCTCGCCGTTGTCGGCATTGTAGATACGCTTTCGCGTTAAGGGGCGGTTATGGCGATTTATACCCGAACAGGTGACGCTGGCACCACATCACTGTTTACCGGCCAGCGGGTGAGCAAAACCCACCCGC [...]
+NODE	1484	51	69	69	0	0
+GATCACAATCCTGTCGCGTTAAAACTGGGTCTTAACTATACGCCAGTACCT
+CCCCCGTTCCGGAGTCAAACAGATCCACGCTATCGCCAAAGTACTGCTCCA
+NODE	1485	9	905	905	0	0
+TTTCGCCAT
+GAACATCAG
+NODE	1486	48	2058	2040	0	0
+TCGCGGCATGTCTGCCGTGATTACTCGCTTCTTCCCGGAACCCGTCGC
+GGCGAAAATCAGCAGGAACAGAAACGCCAGCACGAACCCCATGCCGAG
+NODE	1487	26	1829	149	0	0
+GTAATCACGGCAGACATGCCGCGAAT
+CGCGCCCGCACCGCGCGCCGTTCCCG
+NODE	1488	608	30522	30449	0	0
+CGCGCGGCGCCTCGCTGAAACCAACGCCTTTTGTCGATGTAGGCCAGGTATCGGGTTCCCAGAGCGTGACGTTTGCCGTCGCCGTATCGCCGGACTTGAGGTTACGCATCAGACGATCGAAGAAATATTGCAGCGTATTGCCTGCCCATACGGATTCCAGCGCACGCGCGGCAGTACGTCCTAATGTAGAAAAGAGCGCTTCTTTAGGCAGCTTTAATACACTAAGCAGTTGATCCACGGGTTCTTTAAATTCCGGTTTATTTTGATGATATCCAATCAGATAACGCGCCAGCGGACCTACCTCCATCGCATGTCCCTTCCAGCGCGGCGATTTAATCCATGAATATTTAGCGGACTCATCCACCTGTTCGATAAAGGTTTTTGTGCCTTTATAGTGTTCGCCCATGACCAGTTGCGGTTCGGTCAGACCATCCCACGGATGCAGGCCCTTATCGTTATTGCCGTTACCATAGGTATACCAGGAGTGAGTGA [...]
+TTAACGGTCGTTTCGACGAAATTCATCCTGTCGATTTAACCGCCCCCGATGAGATTCAGGAGTTTGTCACTCACTCCTGGTATACCTATGGTAACGGCAATAACGATAAGGGCCTGCATCCGTGGGATGGTCTGACCGAACCGCAACTGGTCATGGGCGAACACTATAAAGGCACAAAAACCTTTATCGAACAGGTGGATGAGTCCGCTAAATATTCATGGATTAAATCGCCGCGCTGGAAGGGACATGCGATGGAGGTAGGTCCGCTGGCGCGTTATCTGATTGGATATCATCAAAATAAACCGGAATTTAAAGAACCCGTGGATCAACTGCTTAGTGTATTAAAGCTGCCTAAAGAAGCGCTCTTTTCTACATTAGGACGTACTGCCGCGCGTGCGCTGGAATCCGTATGGGCAGGCAATACGCTGCAATATTTCTTCGATCGTCTGATGCGTAACCTCAAGTCCGGCGATACGGCGACGGCAAACGTCA [...]
+NODE	1489	53	3255	3222	0	0
+TGCGGTGATGGCGCTAAATATGCTGCGCCGCTGGCTTAATGGCGAGGACATTA
+GCACAGACCTCCTGACGTATTGCCAGACTATACCGATTGGCGCTAAAACGCAC
+NODE	1490	6483	347115	340710	0	0
+CGTGAATTCTCTACGTTTTTTTAATGCCTGCGCCTGTTTTTTAGCGGTGCAAAGATGGCACGTTATGTGCAATAATGTACGGGTAGATGCTCATTCCATCTCTTATGTTCGCCTTCTGGCCTCATAAACTCAGGAATGATGCAGAGCCGTTTACGGTGCTTATCGTCCACTGACAGATGTCGCTTACGCCTCATCAAACACCCTGGACACAACGTTGAGTGAAGCACCCCTTTATGTTGTCATACAGACCTGTTTTGACGCCTGCCCCTTAACCGGGCAGGCGTTTTTTTATGCATTCCGAATGATTTTGCGTAGGCGGTAAGCCCGGTAAGCGAAGCGCCACCGGGCAAGAGGGAATTACTGCGGGGGATTGTTCTGTAATGTCAGCATCAAGCCATCGCGCCGCATGGCGGCGGCCTCTTCCGGTTGATGCAGTCGATCAAGCGCATCGGCAAGCCAGGCATAATCATACGCGTCCGGGCGTTGTTTTAG [...]
+TAGAGCGCTTTCGGCGTCGGAGCAGGCAAGCGCAGCGGGAAATGGTGCGAAACATCGGCGACCATCTCCTGCAACTTAGGCAGGTCGACAATACCGTTGCCCTTAATAAACAGATGCGTTCGCGACGTCAGCAGGCCGTTGAACCACGCCCACGCGACCAGCTTATTAAGATAACGGTTATATTCCAGCGGCTGATGGCTGATGATGGAATCCATGTTCGGCGCGCGGTTGTAGAGATACCAGCCTGAACGGTTGGCGCGTCCCGGCGGCACATGGATAAAGGTTAAATTCGGCTCGGACAGATCCGGCGATATCTGCGGGTTCACCAGCGTGACTTTACCCGGCAACGCTTCAAAAGCCGCGTACAGCTTACGCGTCAGTACGCCGATATCCTGCGGGCTGGCACTCACGCTGAGGTTGTTGCGCCGCGCAAAGCGAATCAGATTACGATAGCTCTGCATCATGGCGTCGAGCAATTCGTTGTGGGCTTCG [...]
+NODE	1491	12	697	684	0	0
+ACCGCCACGCTG
+TATTGACCGGCG
+NODE	1492	1293	70540	69615	0	0
+GAGATTCAGATTCGCTGAGAGAAGCGTTGGGTTTCAGCAAGCCCCCCCCACCTACAGTCCCGTAACCCATTGATATTACGGGCCCGTAGATGGGGTGAAGCAAAGTGCAACCCAACGCCCCTGTCAACGCTTAACTGCGCAACCCGCGCCCACGCTGGATCAGCGACCAGCACAGCAGGTAGAAAGCGGCGATAAAGATCACCAGTACGCCAAACGTCGTCACCAGCGGCACATCATGGATACCCAGGAAGCCGTAGCGGAAGCCGCTGATCATGTAGACGATCGGGTTCAGGTGCGACAGCCCTTGCCAGAACGGCGGCAACAGCGTCAGCGAGTAAAATACCCCGCCGAGGTAGGTTAGTGGCGTCAGCACGAAGGTCGGGATCAGGCTGATATCGTCAAAGGTTTTCGCAAACACGGCGTTCAGCAGTCCGGCCAGCGAGAACAGAATCGCGGTCAGAATCAGCGTTAGCGCGACAAATACCCAGGAAT [...]
+CTATCTGGAAGAGGCGGAAATGCTGTGCCGCAATATCGGTATTATTCAGCACGGCGAGCTGGTGGAAAATACCTCCATGAAAAATCTGCTTTCAAAGCTGAAATCGGAGACGTTTATTCTGGATTTAGCGCCAAAAAGCCCGCTACCTAAGCTTACGGGTTATCAATATCGTCTGGTGGATACCTCGACTCTGGAGGTGGAAGTGTTACGCGAGCAGGGGGTTAACAGCGTCTTTAGCCAACTGAGCGAGCAGGGGGTTCAGGTATTAAGTATGCGTAATAAAGCCAACCGTCTGGAAGAACTGTTTGTGTCGCTGGTGCATGAAAAACAAGGAGATCGCGCATGATGCAGCTTTACTGGGTTGCCCTTAAAAGCATCTGGGCGAAAGAGATCCACCGCTTTATGCGGATCTGGGTGCAAACGTTGGTGCCGCCCGTCATCACCATGACGCTCTATTTTATTATTTTCGGCAACCTGATTGGTTCGCGCATC [...]
+NODE	1493	11	454	441	0	0
+TAATTCTGTAT
+ACTCCTATACC
+NODE	1494	51	3406	3406	0	0
+TAATAATGCAATCCCGCTCCCCATCATATTACCGGCAACGACGCCAGTACA
+ACCCGCCAACCTTGCCAGTATTGGTGGCATTGCCATCTGGGGCTGGGTAAT
+NODE	1495	23	1250	1250	0	0
+TTAACATCAAACTCAGATGTTGA
+TGCGACCAATTGATTAAAAGTCA
+NODE	1496	166	9730	9678	0	0
+ACGTGAAGGATAACGTTGCGTCAGCAACGGCCTGTAGGGCAAGGCGAAGCCGAGTCATCCTGCACGACCCACCATCTTTAGATGGTCCGAGTAAAATCTTTCAGGCAGCACCCGTATGGGTCGTTAGCTCAGTTGGTAGAGCAGTTGACTTTTAATCAATTGGTCG
+TACGGGTGCTGCCTGAAAGATTTTACTCGGACCATCTAAAGATGGTGGGTCGTGCAGGATGACTCGGCTTCGCCTTGCCCTACAGGCCGTTGCTGACGCAACGTTATCCTTCACGTTCAACATCTGAGTTTGATGTTAAATTGGTGGGTCGTGCAGGATTCGAACC
+NODE	1497	6	2318	59	0	0
+CTCGGG
+GCAAGA
+NODE	1498	51	3018	226	0	0
+TGGTAGTCTCGGCGGCATGAGCCAGATTCGCAGCACCCATCGCCAGGGTAG
+ACCGCCGCGCCAGCGGATGCGAAGCCAATGATGCAGCATAAAGGTAAATTT
+NODE	1499	811	68496	65641	0	0
+CGGTAGTTGGGGCCGGTGATGTCCCGCACCTCCCGGAAGGTGAAGCGGTAGTCGTGAATGGTCACGCTGTCGCCCGCCCGCATCCGCACGTCACGCTCCACGCTGTAATTCTGGCTGAAGGCGATGCCGGTAATCGTCACCGCCAGCCCGAGGTGCGCCGCCACCATTCCCCAGTAGCTGAGAGAGGTTTTCGTGCCGCGGGACACGCGCTGTACGGCTTCGGCCACCGCCAGCACCGCAATCCAGCAGGCCATCGCCATCCCCACCGCCGTCATGGCGATGATTTTATCTTCCAGCAGCCATGGCAAAAGTACCGACAGCACCAGGGTGGAGACCAGGGCGGTGAGCAGCAGTTTCCTGATGTTACGCGGCCGGTCCCGGCCCCAGCGCACCAGTGGCCCCACCCCCAGCAGCAGGGCAAAGGGGACCATCAGCCAGGTGAACATGGTGTTAAAGAACGGCTCCCCCACCGAAATGCTGCCCAGCCCCAGC [...]
+CTGGGCACCTTCCTGGTGCGCTCCGGGGTGCTGGTGTCGGTGCACGCCTTCGCCTCCGACCCGGCGCGCGGAATGTTTATTCTCGCCTTTATGGTGCTGGTCACCGGCGGCTCGCTGCTGCTGTTCGCGGTGCGCGGGCACAGGGTGCGTTCGCGGGTGAACAACGCGCTGTGGTCGCGCGAGTCGCTGCTGCTCGGCAACAACGTCCTGCTGATGGCCGCCATGCTGGTGGTGCTGCTGGGCACCCTGCTGCCGCTGGTGCACAAACAGCTGGGGCTGGGCAGCATTTCGGTGGGGGAGCCGTTCTTTAACACCATGTTCACCTGGCTGATGGTCCCCTTTGCCCTGCTGCTGGGGGTGGGGCCACTGGTGCGCTGGGGCCGGGACCGGCCGCGTAACATCAGGAAACTGCTGCTCACCGCCCTGGTCTCCACCCTGGTGCTGTCGGTACTTTTGCCATGGCTGCTGGAAGATAAAATCATCGCCATGACG [...]
+NODE	1500	18	1105	1105	0	0
+CGGCTAATCGCTGATAAC
+ACGGCCGCCTTCACGGAT
+NODE	1501	51	1615	1615	0	0
+ACCGGATACTGCGACAGTTGTTGCAGTATCTCGCTCATGGGACGGTTAAGA
+TATCAACGCGCCTGTCGCTGAACGGCACAATTATTGTGGGCCGCGACATCG
+NODE	1502	4630	241934	240408	0	0
+GCGCGAGGCTGCCGCCGATATTGTGCGCCGCTTCAACGATAGCCCACCAGCGTCCCCGTTCGTTTTTCGAAAACCACGAAGCCATAATTTTCGCCATCGGCGGAAAGCTGGTGCCCTGTAATATCGCGTTGAGACTGTACAGCACGTAGAATGCCGCCACGCTGTCGGAAAAGCCGAACAGAATATTTACAATCCCCACGCCAATCAGCACCGGGCCGGTCATGGCTTTCGGGTTAATTTTATCGACCAGCATCCCGCCGACAAACTTCATCGCGCCATAAAGAATGTAAAAAATAGAAGACATAATGGCGAAGTCTTCTGCGGTCAGCGACGTTTCCGTCAGCATGGCCGGCATCGCGGCGGAGAAGTTTTTACGGGTAAGATAAAAGACGGCATAAGAGATAAAGACCGAGGCGATAATCTCAAAACGAAATTTTTTATAGGTCTGGTCTATCTCTTTTTTCTCTTTTACAATCGGCTTATCGGGCTGGC [...]
+CTCCTGCAGGTGTGGCGCCTCTGCCCTGCATGGGGCAAAGTTTGTCAATATTGTGACAGTGTGATTATTGTGCGTGAGGTAGCGCACATAATCCAGTATTCACGCCCATAATTGTTGAAATTGTCGCTGCCTTTCATGACATCTTTTCCGGTGCGAGAATGCTGGCAGGACAAAGGGCATATTTGTTAACGCAACGTTATTTAAATGATGAAGCATGTTTATGTATTACGGAAGTGAAAGTTACTCACAACGCGGTGAATAATCTGTATTATGAAGAATCTGCATACCTTATCAGGTTCACCATAAAAGGAGCCCTCGCATGGAAATGCTCGAAGAGCACCGATGTTTTGGCGGCTGGCAGCAGCGCTGGCGTCATCATGCCGCCACGCTAAACTGCGCCATGACATTCAGCATTTTTCTTCCGCCGACTCAGGATAATGAACCGCCTCCGGTACTGTACTGGTTGTCCGGGTTGACCTGCAATGATGAGAA [...]
+NODE	1503	38	2587	2587	0	0
+ATTTGAAGAACTACTGAGCTGCAATGTGTAGTGGCTGG
+AACGGTTGGGCGAAGAAAGAGAACCTGAAAAATTATGT
+NODE	1504	7	290	290	0	0
+ATGGCGC
+CAACCTG
+NODE	1505	6	240	240	0	0
+GCTCTT
+TTACGA
+NODE	1506	33	7814	3979	0	0
+CCTTGATTTTCCGGATTTGCCTGGAAAACCAGC
+GGCACTACGGTGCTGAAGCAACAAATGCCCTGC
+NODE	1507	43	2026	2026	0	0
+TATCAAATGACACCAGCGGCCCGACAAACCAGACCAGCAGCGC
+CCCGCTGGCCTCCGTGGGTAGCCGGGTAGTGACCATTGCCCTG
+NODE	1508	8	361	361	0	0
+CAGAACCA
+ACCCTGCG
+NODE	1509	1	233	232	0	0
+G
+G
+NODE	1510	36	4631	4521	0	0
+TCCAAAATGGCAAGTAAAATAGCCCTAATGGGATAG
+AAAATCCTCACGTACTACGTGTACGCTCCGGTTTTT
+NODE	1511	5	1145	1137	0	0
+TGCTC
+GCTCT
+NODE	1512	48	3860	3860	0	0
+ATTGAATTTTTTTACCATTGGGTTTGTTTTTTTTCTGTAACATTGAGT
+TGAGTATTGTGGATTCTCTACTTTTATTACGCCGGTTGATGGCGTTGG
+NODE	1513	6290	299270	297812	0	0
+ATAACATCGGCGTGCCGTGCGAGAAAAGCAAGGTGGTCAGGAAATTGCGTTTCTGTTGCTCGCGTATCGCATTGATGCCCTCGTCGTCGGTTGGCCCTTCTGCGCCATAGTTACAGGAGCGGTTATCATTATGCCCGTCATTATTATCTTCGCCATTGGCTTCATTATGTTTGTCGTTATAAGACACCAGATCGTTCAGCGTGAAGCCGTCATGGGCAGTAATAAAGTTAACGCTTGACCAGGGGCGACGACCGCGCAAATCGTAGAGATCGCCGGAACCCAGCAGGCGTGCGGCGAAATCATTTGTGACGTTGTCACCTTTCCAGTATTCGCGTACCGTATCGCGGTATTTATCATTCCATTCGCCCCACCCTGGTGGAAAGCCGCCAACCTGATAGCCGCCCGGTCCGATATCCCAGGGTTCGCCAATCAGTTTCAGTTTTGCCAGCACCGGGTCTTGCGTTACCGCATCAAAAAAGCCGCCTCTCTGAT [...]
+CCATTAAACGCGAGCGGCAGGATCTGCCTGAGCATCCCGTTGTTAAGGGGGCTAACGCCTGGGAGCAGGGGGAGGTTATCCAGCTACAGCGTGTTCAGGGCTCTGGCGAACACGGGCAAGGCGATACCGCGCACTTCGGTACATCTGAGCAATCCCGACAATAATTCCACGGTTTTACACGCAGATAGGAAAAAGAATGCCTGTTAAGTGACAGTGTCACGTAAAAATTAGCCCCATAGTCTATGCTTGTTTTTCGGATGCTGTAGAGGTTATGGGTTAAACGGAGCGACAAATGAGTTCAAAAATTTTTTGCAAAAGCTGGGGGGCTGAATATATCGCCGCTGATGTCGTCCGCTTTCGTCTTTGGGCCACCGGTCAGCAAAAGGTCATGCTCAGGCTTGCGGGTAAAGACCAGGAAATGCAGGTGAGCGGTGACGGCTGGTTTACGCTGGACGTCTCCGGGGTGACGCCAGGTACGGAGTATAATTTTGT [...]
+NODE	1514	6422	323223	321642	0	0
+AGCGCCGTTTGCTGCCACGCCTGCCGCCAGATCTGAAGATACTGGTGTCGTAATGCAAAACTGTGCATTAATACCCGCTGATAGCCTGACAGCGCGGTGACGATCATTACCATTAGAACCATCGCCACTAAAACTTCCGGGAGGCTAAACCCGCGTTGTAAATTCAGGGGATGCGACATAACGCCACCTCTTTTAACGGACAAAAATCGCTCCAGCCGTAGGGAGAAAAGACAATGCTTCCCTGAATGACGTTGCCCAAACGCCATAACGTCATGCCATCATCTTGCGCCGCCATCACCACCTCATCCCCCGATAATCTCCGCAAACAGACCCTCGCTCCTGAAGGGGAATAGCGCCGACATTCCATTTCGGTTACGCCTGACCATAGCTGCCCCCGCCCCCATTCCAGCGCCGACTGTACGAGCGCCTGGCGTTGTATCGCCATGCTCTGCGTCGTCACGCGGGCGGCATAGCTGGCCTGCTGCTGATTTA [...]
+TCAGCACTCCTGGCAGTTCCCGCAGGGCGGGATAAATCCAGGGGAGTCGGCAGAACAGGCGATGTACCGGGAACTGTTTGAAGAAGTTGGGTTAAGCCGTAAAGATGTGCGGATCCTTGCTTCTACTCGCAACTGGTTGCGTTACAAGTTACCAAAACGTTTGGTGCGTTGGGACACAAAGCCGGTATGTATCGGCCAGAAACAAAAGTGGTTTCTTTTGCAGTTAATGAGCGCCGACGCCGAAATCAATATGCAAACCAGCAGTACGCCGGAGTTTGACGGCTGGCGCTGGGTAAGTTACTGGTATCCGGTTCGACAAGTGGTGTCATTTAAACGCGATGTCTACCGCAGGGTAATGAAAGAGTTTGCAAGTGTTGTCATGGCGCTTCAGGATAATCCCCCTAAGCTACAAAGCGCGCCTGCTTATCGACGTAAAAGAGGTTAAGCCACGCAAATTATGCTCACTCGCCTGCGCGAAATAGTCGAAAAAGT [...]
+NODE	1515	4513	261285	259173	0	0
+TCAGTAGTACTTCCTGGCCTGCATGAAAGCGAGGATCTTCGCTTGCGTGAACGGTGCCGGCGAAATCAATACCAGGAATCATCGGAAAATGACGGATAATTTTCCCTTTTCCGGTGATAGCCAGAGCATCTTTATAATTCAGGCTGGACCAGTGGACATCCACCGTCACATCACCTGCCGGCAGTTGACTCTCTTCGAGATGTTGCACGGATGCGAGGGTTTTACCGTCCTGCTGTTCTAAGATCAACGCCTGCATAACCTGTCCTCACTTTACATGGTAGATTGGAAAAATAGCTACGAAGACTATACTCGCTAATTAAAACGTGATGCCGATGCAACGCAATAAATTGCCAGATAGATCCATTTTGGTAGTATGCCTGCTTCATTGCGCGCCGTGGCGAATTCCGCCTTCAGATTCGCTTTTTCATACTGTTTATAACCGTCGGAGTTAACTCAAGGATGCGATTAACGACGAAATTCTCAGCTTTTATC [...]
+AACGCGAATATCGGTATTGGCGGGCAGATGTTCAAGCTGAAGATCGTCAGTACAGCCGTTACCGGCGGCAATCACGCGGATGTCATTGCGCAGTACCTGAATCGGCAGCGCATGAGTCGCATCGCAAATCAGCAGTACGCGGCTGGTCAGTTTCGCCACGGCGACAACCTGCCCTACGACGCCTTTGTCGCTAATGACCGGTTGACCTTCATATACGCCATTAACGCTGCCTTTATCGATAACGACCTGATCGCTGTAAGGATCGTTAACCGTTGAAATAACCTGCGTCACCATTTTCTGCTCGTCCTGACGCAGCGGCGACCCCAGCAGCTCGCGCAACCGCGCGTTCTCCTGTTTGTACTGCCCCAGCATCAGCAGGTCGCTGTTTTTTAGCAGTAATTCCTGGCGCAGCGCCCGATTTTCCAGCTCAAGCTGGTCGCGAGAAGCCAGCGTTTGCGACACGCTGTCGAGCAGTTCACGAGGGCCGTTTGA [...]
+NODE	1516	325	13988	13842	0	0
+ATGCCGATGAAAGGCAAATCAACGCGGCGGCGGAAGTCGGCGCGCCGTTTATCGAAATCCATACCGGCTGCTATGCCAACGCAGAAACCGATGCGGAACAGGCAAAAGAGCTGGCGCGTATTGCCAGCGCCGCGACCCTGGCGGCCCGTCTGGGGCTAAAAGTAAATGCGGGTCATGGCCTGACCTACCATAACGTCAAAGCTATTGCCGCACTGCCGGAAATGCACGAGCTCAATATCGGTCATGCCATTATTGGTCGGGCGGTGATGACGGGGCTGAAAGAGGCGGTGGCTGAAATGAAACGTTTGATGCTGGAAGCGCGCGG
+CCCCGTCATCACCGCCCGACCAATAATGGCATGACCGATATTGAGCTCGTGCATTTCCGGCAGTGCGGCAATAGCTTTGACGTTATGGTAGGTCAGGCCATGACCCGCATTTACTTTTAGCCCCAGACGGGCCGCCAGGGTCGCGGCGCTGGCAATACGCGCCAGCTCTTTTGCCTGTTCCGCATCGGTTTCTGCGTTGGCATAGCAGCCGGTATGGATTTCGATAAACGGCGCGCCGACTTCCGCCGCCGCGTTGATTTGCCTTTCATCGGCATCGATAAAGAGCGAAACCTGGATGCCAGCCGCCGCCAGGCGCGCACAGGCA
+NODE	1517	1511	78133	77720	0	0
+CCGCTGCGAAGCTGTTGCTCAATAAGCTGGCAAAGGTTCTTCATCCGCGGTACGCCGCTATAGCCGCAGCTCCCGTGTAGCTTATGGACCAGATCGACCAAACCGTTGGGATTTTCTCCCACCAGTTGTTCTTCAATTTTGTTGCGCACTTCCGGCAGAAAATCAATCAGCATTTGCAGCATATCCCGCGCCAGATCGGGCTTACCGGCAGCCTGGCGGAGCGCAAGCTGCCAGTCGAGCGTCGCATTCGGATTGAAGATAAACTCAGCCGGTTCCGGCACCATCAGGCGCGCTGCTACGTTGGCGCCAGGTTTATAGCGCAGCAACAGATTATGCAACTTCTCTTCTTCTATCGGTTTAGCCAGATAGTCGTTCATGCCCGCGCTGAGCAACTTCTCTTTTTGCCCGGCCATCGCATGTGCCGTAACGGCAATAACCGGTGTTTGCTGCTGATGAGGAAGCTGGTGAATCAATTCGCAGGCGCGTATGCCG [...]
+GATTGGCGACCCGCTGCGCCTGCAACAGGTCATTACTAATCTGGTGGGCAATGCCATTAAGTTCACCGAGAGTGGCAATATCGACATTCTGGTAGAAAAGCGGGCGCTCAGTAACACCAAAGTACAGATTGAAGTGCAGATCCGCGATACGGGGATCGGCATTCCGGAACGCGACCAGTCGCGACTGTTTCAGGCGTTTCGCCAGGCCGATGCCAGTATTTCTCGCCGTCACGGCGGCACCGGCCTTGGGCTGGTGATTACGCAAAAGCTGGTCAACGAAATGGGCGGGGATATCTCTTTCCACAGCCAGCCTAATCGCGGCTCGACCTTCTGGTTTCATATTAATCTTGATCTTAACCCAAATGTCATTATTGACGGGCCGTCGACCGCGTGTCTGGCCGGAAAACGGCTGGCTTATGTCGAACCGAATGCTACCGCCGCGCAATGTACCCTGGATCTACTGAGCGACACGCCGGTGGAGGTGGTTTACAG [...]
+NODE	1518	1923	110739	109416	0	0
+GATGTCGTTATTGGCAGTGATATTGAAGGGTTAAGCGACGACGCGCTGGCGGCGCTGGCCGCCCGTACGACGTTGTTTGCGCGTCTGACGCCGATGCATAAAGAGCGCATCGTCACTTTACTCAAACGCGAGGGGCATGTGGTCGGTTTTATGGGCGACGGGATTAACGATGCTCCGGCGTTGCGGGCGGCGGATATTGGTATCTCGGTAGATGGCGCGGTGGACATCGCCCGTGAAGCGGCCGATATTATCCTGCTGGAAAAGAGCCTGATGGTGCTGGAAGAAGGCGTCATTGAAGGTCGTCGTACTTTTTCTAATATGTTGAAATATATCAAGATGACGGCCAGCTCAAATTTCGGTAACGTGTTTAGCGTACTGGTGGCGAGCGCCTTTTTGCCGTTCCTGCCAATGCTGCCGCTGCACTTGCTGATTCAAAACCTGCTGTACGATGTATCCCAGGTGGCGATTCCGTTTGATAATGTCGATGAAGAA [...]
+CACTTCCGGTCAGATCCCGGTCGATCCGAAAACCGGTGCCGTAGCGGAAGACGTATCCGCTCAGGCACGTCAGTCGCTGGAAAACGTTAAAGCTATCGTGGAAGCCGCTGGCCTGAAAGTAGGCGACATTGTGAAAACGACCGTCTTCGTGAAAGACCTGAACGATTTCGCGACCGTCAACGCTACCTACGAAGCGTTCTTCACCGAGCACAACGCCACCTTCCCGGCGCGTTCCTGCGTGGAAGTTGCCCGTCTGCCGAAAGACGTGAAAATTGAGATTGAAGCGATCGCTGTTCGTCGCTAAGCGCCGGACGTCATCCCCGCCGGGCGGCGCAAGTTTGCCCGGTTCGGGGCACCAACAGCCATGGAGAGGCGGCAATGGTAAGAGCGCGTTTTACCGAGGAGCAAATCGCCGATTTTCTGCAACAGTCTAAAAACGGCGTGCCGAATAAGGCGTTGTGCGAAGAATATGGATTTAGCAACAGCACGCTC [...]
+NODE	1519	51	1702	1684	0	0
+ATTCCTGAAAGACTTAAACGCCAAAGGCACCACCATTATTCTCACCACCCA
+TCCCCACATCGAGCGACGCAATTCGATATCGACACCCGCCGTCGGCTCGTC
+NODE	1520	46	7699	7672	0	0
+GCGGTTCCTGGCGACATGAAACTCCCTGGTTAGGGGTATCGGCGCG
+GCCTCCTGCTAAGCCTGACCGCACGGAACCTACAGCTATTCAGGTG
+NODE	1521	4	590	590	0	0
+ACCT
+ATCA
+NODE	1522	1	325	318	0	0
+G
+C
+NODE	1523	19	5823	5678	0	0
+GCATCTGTGACTCTATGAA
+TTCATGTCGCCAGGAACCG
+NODE	1524	51	2596	2596	0	0
+CGCCTGATGCGTCAGCCACAGTCGCGTATCAAACTCCAGTTGATGGTACTG
+GCTGTCGGCACAATAAATTCTGAAAATGCCCCTTCCCCCGTATCTTTTTAA
+NODE	1525	878	48316	48098	0	0
+GGTCGCGTTTTTCATTTCCTGACACGAGGTTGATATGACAGAGATCGTTGTTTCCAAATTTGGCGGTACCAGCGTCGCTGATTTTGACGCCATGAACCGTAGCGCGGATATCGTACTTTCCGACGCCAATGTTCGTTTAGTCGTGCTTTCCGCGTCTGCCGGCATCACTAACCTGCTGGTGGCGCTGGCCGAAGGGATGGAGCCTGGCGAACGTTTCGCTACGCTCGACGCCATCCGTAAAATCCAGTTCGATATCCTTGATCGTCTGCGTCATCCGAATGTCATTCGCGAAGAGATTGAACGCCTGCTGGAAAACATCACTATTCTGGCGGAGGCGGCATCGCTGGCGACATCGGCAGCCCTGACCGATGAACTGGTCAGCCACGGCGAGCTGATGTCTACCCTGCTATTTGTTGAGATCCTGCGTGAACGCGACGTACAGGCCCACTGGTTCGACGTGCGCAAAGTGATGCGTACCAGCGATCGCTTTGG [...]
+AGTAAGGTGGCTGGATGCAGTACTTTTGCGCCGAAGGTTGCCATCTCCGCCGCTTCTTCAAAGTCGATTTCATCAATTCGCTGCGCGACGGGCACCACGCGCGGGTCGGTGGTGTAAATACCGGGCACATCTGTCCAGATATCAACCCGCGCGGCATGGAGCGCTTCAGCCAGCAACGCTGCCGTATAGTCGCTGCCGCCGCGGCCTAACGTCGTGGTGCGGCCTTTGCTTTCACTGCCGATAAAGCCCTGAGTAATGACCAAAGTTTCGCTCAGGCGCGGGAGCAACTGCTGCGCGGCCAGTTCCGCAAGCGCTGCGACGTCCGGTTCCGCACGACCAAAGCGATCGCTGGTACGCATCACTTTGCGCACGTCGAACCAGTGGGCCTGTACGTCGCGTTCACGCAGGATCTCAACAAATAGCAGGGTAGACATCAGCTCGCCGTGGCTGACCAGTTCATCGGTCAGGGCTGCCGATGTCGCCAGCGATGCC [...]
+NODE	1526	598	30691	30057	0	0
+GCGGGATGGCCGGTGCGGTGCCGCGACAGGTGATCCGCTTTTTAAATGATGAACACAACCGGGCGCGCATTCGCGGCGTCATCGCCTCCGGTAACCGCAATTTCGGCGATGCCTGGGGATGCGCTGGCGATGTGATAGCACAAAAATGCGGCGTACCCTGGCTGTACCGCTTTGAGCTCATGGGCACACAACGCGACATCGATAACGTCCGAAAAGGAGTAAATGAATTTTGGCAACAACTACCCCGGAGCGCGTAATGCAGGAAACCATGGATTACCACGCCCTGAACGCGATGCTGAATCTTTATGATAAAGCAGGCCATATTCAGTTCGACAAGGACCAGCAGGCGATCGACGCCTTCTTTGCCGCCCACGTCCGCCCGCATTCCGTGACGTTTGCCAGCCAGCATGAACGTCTGGAGACGCTGGTTCGGGAAGGGTATTACGATGACGCCGTCCTCGCGCGTTACGACCGCGCCTTCGTCCTCCGCCT [...]
+TCCAGGCGCCAAGAAACGTCTGGAAGCGAAAGCCGCTGGCGTGGGCGTGCTCGAACAGGCGGAGGACGAAGGCGCGGTCGTAACGCGCGAGGACGGCGTCATCGTAATACCCTTCCCGAACCAGCGTCTCCAGACGTTCATGCTGGCTGGCAAACGTCACGGAATGCGGGCGGACGTGGGCGGCAAAGAAGGCGTCGATCGCCTGCTGGTCCTTGTCGAACTGAATATGGCCTGCTTTATCATAAAGATTCAGCATCGCGTTCAGGGCGTGGTAATCCATGGTTTCCTGCATTACGCGCTCCGGGGTAGTTGTTGCCAAAATTCATTTACTCCTTTTCGGACGTTATCGATGTCGCGTTGTGTGCCCATGAGCTCAAAGCGGTACAGCCAGGGTACGCCGCATTTTTGTGCTATCACATCGCCAGCGCATCCCCAGGCATCGCCGAAATTGCGGTTACCGGAGGCGATGACGCCGCGAATGCGCGCCCGGTT [...]
+NODE	1527	4	188	188	0	0
+TATG
+TCCC
+NODE	1528	754	41645	41259	0	0
+GCATTGCATTCGCGAGGAACTCGGCTCGCATTTTACGCTGCATCTGGTCGACTTGCCGGGCTATGGTCGCAGCTCGGGGTTTGGCGCCATGACGCTTGAAGAGATGACGGCGCAGGTAGCGAAAAACGCGCCGGACCAGGCTATCTGGCTTGGCTGGAGCCTGGGCGGCCTGGTGGCGAGTCAGATGGCGCTCACACACCCTGAACGCGTTCAGGCGCTGGTGACAGTCGCCTCTTCGCCATGCTTTAGCGCGCGTGAGGGGTGGCCGGGAATAAAACCGGAAATCCTCGGCGGATTCCAGCAGCAGCTTAGCGACGATTTTCAGCGCACGGTGGAGCGTTTTCTGGCGCTGCAAACGTTAGGGACGGAGACGGCGCGTCAGGATGCCCGCACCTTAAAAAGCGTAGTGCTGGCGCAGCCTATGCCGGATGTAGACGTGCTCAATGGCGGACTGGAAATCTTAAAAACGGTCGATCTACGAGAAGCGCTTAA [...]
+GGGCCCGGCAACGCCCTGGTTACAGCGATGATTTTAGCGTCATCAGCGCCTGACAAAACGCCGCCGGATGCGAGATAAACGGCGCATGGGCCGCTTTCGCCATTATCTGTGATGTACTGTGCGGCCATAACGTATCGAGCAAAGGCACAATTTTACGCGGCACCAGACCGTCCAGATAACCATACAAACGCAAAAACGGCATGTTCACATTTTTAAGCGCTTCTCGTAGATCGACCGTTTTTAAGATTTCCAGTCCGCCATTGAGCACGTCTACATCCGGCATAGGCTGCGCCAGCACTACGCTTTTTAAGGTGCGGGCATCCTGACGCGCCGTCTCCGTCCCTAACGTTTGCAGCGCCAGAAAACGCTCCACCGTGCGCTGAAAATCGTCGCTAAGCTGCTGCTGGAATCCGCCGAGGATTTCCGGTTTTATTCCCGGCCACCCCTCACGCGCGCTAAAGCATGGCGAAGAGGCGACTGTCACCAGCGCCT [...]
+NODE	1529	653	45722	45157	0	0
+GGTCATATCGCAGGGAATAACAGTTAAGAAATCAGCATTGAGAACAAGATTATATATTGTGACAACGGAATCTGTTTTAACAATGTTTTCGATGCTGATGCCATTTCGTTGTAGAGTGGTGAGTAATTCGCTGTAGTAGCCCATATTCGTTTGCGGCAACACCCACTGTTCGTCTTTTAACGATTCCAGTGTGATGGTGCCGGTGCATGTTCGGGACTTGCTGGCTACCAGGACAAACTCTGATTCAAACAGCGGCTCGACATGCAGATCCTGTAGTTGCATTTCATTACTGAGCGTACCGATAGCAAAGTCCAGCCGCCCGTCGCGCAGGGCCGGCAGGAATGAAGAGAGCTGGGCTTCGTACATGGATACCTGCGCTTTTGGAAAGACCTCTTTGAACTTATGAATCATATCGGACATGAAGGTAAAGCCAATCAGCGAAGGAAAGCCAAACGAGACGTCGACAACGGTATTGCACGTCATACTGTTCAT [...]
+GTTGAGCTAATTGTACGTAAAAATACCGGCGTTACGTTGACCGAAGCGGGACAGGTACTGCTTTCCTGGTCTGAATCTATCACCCGCGAAATGAAAAACATGATCAACGAGATGAACAGTATGACGTGCAATACCGTTGTCGACGTCTCGTTTGGCTTTCCTTCGCTGATTGGCTTTACCTTCATGTCCGATATGATTCATAAGTTCAAAGAGGTCTTTCCAAAAGCGCAGGTATCCATGTACGAAGCCCAGCTCTCTTCATTCCTGCCGGCCCTGCGCGACGGGCGGCTGGACTTTGCTATCGGTACGCTCAGTAATGAAATGCAACTACAGGATCTGCATGTCGAGCCGCTGTTTGAATCAGAGTTTGTCCTGGTAGCCAGCAAGTCCCGAACATGCACCGGCACCATCACACTGGAATCGTTAAAAGACGAACAGTGGGTGTTGCCGCAAACGAATATGGGCTACTACAGCGAATTACTCACCACTCTA [...]
+NODE	1530	8	345	345	0	0
+ACGTTTTA
+TTTATACC
+NODE	1531	687	47450	45791	0	0
+TCTTTAACTAATGAACCCGCCGCTGCGCCAACGGCTCCGCCGCCAACCGCGCCGGCAGTAGTACCCAAACCGCTACCTGAACCCACGTTATGACCAGTAACGCCGCCCGCTACAGCCCCAAGAATTGCGCCGAAGGTCTGAGCGGTTTTTTTATTGGCGGTGTTATCTACGGCAACTTTCGCTGGCAAAACAGAGATAATATTGACGGTCTTTGTTTCTTGCTTCGCGTTTAACTGCCCGGTTTGGTAAACATCTGCGGCATAGTCATCCGCATTGGACTGGCATCCGGCAAGAGAAAAAGAGGCAAACAAAACCAGAGGCAAAGCATTTTTTTTAAAATTCATCACAATTCCTTGTTTAGGTAATAACGCAAAAAGGAATGTATTTAAGACTAATCTTAAAAAAAGTAAACTATCGTTTCTTGTAGTTGATTGTTTTTTTAGACTAAAAAACAAAGCATTAGATAGTACGATGCTTTGTTTTTATCGGTTC [...]
+ACCATCAGGATAAAAAAGAAGCGCAACAGTCATCGCTTTCTGTCACCACGCCGGGACAACGTTAAGCTGTTATCCGTTGGCGGTATTATCGTCACAGGCTTACTGTGTTATCCAGAACTCTGTTTTCCCTTCCCTGGCTTAGCATGAACCGATAAAAACAAAGCATCGTACTATCTAATGCTTTGTTTTTTAGTCTAAAAAAACAATCAACTACAAGAAACGATAGTTTACTTTTTTTAAGATTAGTCTTAAATACATTCCTTTTTGCGTTATTACCTAAACAAGGAATTGTGATGAATTTTAAAAAAAATGCTTTGCCTCTGGTTTTGTTTGCCTCTTTTTCTCTTGCCGGATGCCAGTCCAATGCGGATGACTATGCCGCAGATGTTTACCAAACCGGGCAGTTAAACGCGAAGCAAGAAACAAAGACCGTCAATATTATCTCTGTTTTGCCAGCGAAAGTTGCCGTAGATAACACCGCCAATAAAAAAA [...]
+NODE	1532	8527	463209	455435	0	0
+TTTGCGTGCCGTCCACCCCGGCGCAGGTCTACCATATGCTGCGCCGTCAGGCGCTGCGCGGGATGCGTCGTCCGCTGGTGGTGATGTCGCCGAAATCGCTGCTGCGTCACCCGCTGGCGGTTTCCACGCTTGATGAACTGGCGAACGGTTCCTTCCAGCCGGCCATTGGCGAAATTGACGAGCTGGACCCTAAAGCCGTAAAACGCGTGGTAATGTGTTCTGGTAAGGTTTATTACGACCTGCTGGAACAACGGCGCAAAAACGACCAGAAAGATGTCGCTATCGTGCGCATCGAACAGCTCTATCCGTTCCCGCATAAAGCGGTGCAGGAAGCGCTGCAACCATACGCTCACGTCCATGATTTTGTCTGGTGCCAGGAAGAGCCGCTCAACCAGGGCGCATGGTACTGCAGTCAGCATCATTTCCGTGAAGTGATTCCGTTTGGGGCCGCTCTGCGTTATGCAGGTCGCCCGGCCTCCGCCTCTCCGGCGG [...]
+CAGCACTATCGCCATCACGAAGGAAAGCGCCCTTAACGGGCGCTTGTCCATTACCGCATACAGTTTTGCGATAATATGGGTCATTAGCTTTCTTCTTGACCGGTTTTACCCGCTTCAACGTGCTCAAGCGCCAGGGCGGTAATGATCCCGAATGCACAGGCAAGAAGCGTTCCCAGAATCCATGCGAAATACCACATTTTAAGCTCCTTACTTAGTACAGAGAGTGGGTGTTGCTTTCAATATGTTCTTTAGTGATACGACCGAACATTTTCCAGTAACACCAGCTGGTGTAGATCAGAATGATCGGTACGAACACCGCCGCAACCCAGGTCATCAGGTTCAGCGTCATCTGGCTGGATGTCGCATCCCACATGGTCAGGCTGGCATTCATCATCGTGCTGGACGGCATCACAAATGGGAACATAGCGATACCCGCCGTCAGAATAATGCAGGCCAGGGTCAGCGAAGAGAACAGGAATGCCCACGCGCCTT [...]
+NODE	1533	226	44779	44378	0	0
+TGTAAATAAGATCATGGCAATGTTAGGAGGTTAAATATGACAAAAATAAAGATACTGATACTTGCAGCTTTTGTCTCATTTGGAACCGTGCATAGCGCCAGCGCGGAAAATGGAAGTGATGCTCTGCCACTGACAGGAGAATTTCTTGAGCAACCTGTTAACAGTAGTGATCCATGTACTGTTTTTCTCTGTATGGCTGGAATGCTTAAGGGGGAATCGCCTGGTG
+CATGGATCACTACTGTTAACAGGTTGCTCAAGAAATTCTCCTGTCAGTGGCAGAGCATCACTTCCATTTTCCGCGCTGGCGCTATGCACGGTTCCAAATGAGACAAAAGCTGCAAGTATCAGTATCTTTATTTTTGTCATATTTAACCTCCTAACATTGCCATGATCTTATTTACATACTGTTGTGTTTCCTTATAAGGGGGGATACCGCCATATTTATCAACAGC
+NODE	1534	2014	112674	111564	0	0
+GATTAATCTGGGCATCGCCCAGGCAGGTGTAACAGCTATTGACGACGCTATCAAAAATAAAATAGCCGCAAAGGTTATTGAGAATACTAACTTAACGAACGCAATATTTGAGCCAAATCATACACAAAGTTCAGTTACTCAATTAGTTTATTCATGTTTGTTTAAGAATGAGATATTAATGAATATGCTTGAGGAAAATTCCTCTCATGACCTGCTATGTTTAAACGATCTTGCTGAATATGTGGCGCTACAAGTTCATAACAGCCTTTTTTCTGAAGATTTATCTTCACTCGTTGAAACAACAAAAAATGAGGCTCATCACCAGAGTTGACCACACCATAAATTATTATGGCTTACAATCCCCTGGCAATACCAAAACCATCTAATACAATACCTTTAAAATTTACTTCCAGGAAATAATGAATTTCGCATGGAACGAATTGGCTCGTTATTTTTATAATTGAGATACTGAGTATAAGTATATTTTCTCAT [...]
+GGACCGAGCATTTTTTTGTTCCCTCCACGGAGAAAACCTTCCATCGCGGCAGCACCGACTATTTTGTTAACGCGCGTAAAGGTGATATTGGCGCATTTGATTCACCAAAATTTATTGGCTTGCCGGTAGGCGAGGTGCTGAATGTGGCGAAGGATTATCTCGACGTAGAAGCTACGGAGCCGTTGGCGAATGGCGATGGTCTGAACGTGTTGATTAAGCGTGAAGTGGTGGGTTTTCGCGCCAATACGGTGGAGAAAACCGGTCATAACCGCTACCGCGTTTGGCCAAATGATATGCCTGCCGACCTGCATAAAGTCCGTCCGCATCATCCGTTGAATCGTAATCTGGATCATAACTGGCAGCAAGCGCTGACAAAAACCTCCAGTGAGCGCCGTGTGGCGGTTGATATCATGCTGGGCGGCTGGCAGGAACAGCTTATTCTGACGCTGACCAGTGAAGACGGTGTCTGCATCACGCATACGCTTGACGGGG [...]
+NODE	1535	51	3032	3032	0	0
+CCTTTAGCGATCTGCTGGAAAAACTGGCCATTGCGCCGGAAAATGTTGCCT
+GCGATCAGCTTATTCGACTGTCCCTGATAAAGATGGACAATCCCCAGCGTG
+NODE	1536	1789	115362	114735	0	0
+ACCTGCATTCTTTTGTCTTCGTCTTCGCTCCATCTTGGCTTAACGAATGCCGTTTTTAATGACAGTTTTTTTGCTATGTAATAAAACTGATTTATGTTTAGGCCCAGATGTTCTGCTGCACGGCAAGCTACCATGCGACCGCAAACTGACTCCATCTCCGCTGGAGTTATATTTAATCTTCTCATTAAGCCACCTGTTTAAGCTCATTTATTCTGATATTCATTACCTGAACGCATTTTGTCTGCGCATCATCGTTACCAGCCAATAATTGCCAGCAATGCTGATAACGCTCAATGAGTTTTTTCCTGTCAGTTTCTGTTGCTGCATATTCACTGAAGTCTTTCAGGATTTGCTCGCAGTCAACCGATGTGGATTTCTGGCTGGTATTTTCTGGTGATGGTTGATTGCAAGATGTTGGCATGGCCCAGCCCGGCAGCGATGGAGGGGACCAGTAAAATCCTGTTCCATCCTTCAGTTTTGCCCTGTGCCATC [...]
+GGAAGTGTCTGGATCGCAATCCGTAGCGGCATCACTCGGAATAGAAGGAAAAGCCAGGGCATCTGAAGGCGGAGCTATTGTGCTTTGCTATCGAGATGAAGATGGCGAGTTAATTCATATCCGCGCCAGTAAGGTTGGCGAGAACGGTATTATGCCGGATATATGGTATCAACTGAATGAAGATGGTGAGTTTGTAGAGTGTGAGTGATGCACTTAATGCGGATTCTGTGATTCCGCATTGCGAGCAATATCGCTCGTAACCAAACGAGGACGACGACTCGTTCTGGTTAATCGAAAAATCATCCCTTGATGTTATTTGCCGCTCGCAGTCAGGGCGGCTTTTTTCGCATACCAATAATGCTTCATTCGAGGAATTTTTGTTATGAAAATTAACTAAGGAGCACGCCATGCAATATTGTTTTGCCGGGTGGCCCATTGCTGGCTGCCCTTCTGAATCACTTCTCGACAGAATCACCAGAAAATTACGAACCG [...]
+NODE	1537	11	2276	2276	0	0
+GGTTGCTGCTG
+TGGTCAGCAGC
+NODE	1538	3	628	628	0	0
+ACC
+GAC
+NODE	1539	2	134	134	0	0
+GG
+GC
+NODE	1540	1	203	203	0	0
+A
+C
+NODE	1541	2	394	394	0	0
+AC
+AC
+NODE	1542	15	2815	2815	0	0
+CGGTCAGCAGCAACC
+TGTTGGTTGCTGCTG
+NODE	1543	2	398	398	0	0
+AA
+AG
+NODE	1544	3	591	591	0	0
+CAC
+GCC
+NODE	1545	4	778	778	0	0
+TGGC
+AGTC
+NODE	1546	6	361	361	0	0
+AACCGG
+CTGACC
+NODE	1547	19	1211	1211	0	0
+TCAGCAGCAACCAACACTG
+TTGCCAGTGTTGGTTGCTG
+NODE	1548	3	577	242	0	0
+ACG
+TCA
+NODE	1549	2275	112106	111111	0	0
+GAAATTTTAGCATTTGTTCAATGGGCGTAAACGAACTATCCATTTGGGCATGACCTCATTAATTTCAGCCGATATAGTAACGACAGTGACAAATAAAGTAAATGTATTATTAATACAAAATCATTCTTTCAGGCTATAAAGCAACCAATGATACGCAGACTGAGACGCCAGCGGGAACATTGGGCCCGGTAAAGCGCCGCCTGCGGCAAATCCAGGAATGACGAGAAAAGCGTGAGTGCCTGCATGAAAAAATCAGGAGAGAACGATAAGCGGGAGGGGCGAAAGCCGGGTAAACGGCCTTACAACCCGATGCAAAAGCCACCGGAATATCACGGATAGCTATCGGTGAACGACCTTCGAATCCTTGAACGGGCGCTATTGGCCTGGGAGCAGATGGGGATGCAGGGCTTTCCATAGAATTATATTATTCTTCACCGGTATAAAAATAACCATGATAAATGAATAGCATAACCTTAACAGACTGGGGAGCTC [...]
+GGGTAAAGATGTCGTCTGGCTACAGGTGCCGTTCTCCTCTCTGCCGGGCGAACAGAAAAATATTGATACTAAACTGCCGAACGGCGCGAACTATGGGTTCCCGGTTAATACCATGCATATTGTCGCCAATAAGGCATGGGCGGAGAAAAACCCGGCGGCGGCGAAACTGTTCGCCATCATGAAGCTGCCGCTGGCGGATATCAACGCGCAGAACGCCATGATGCATGCCGGTAAATCGTCTGAAGCCGATGTTCAGGGCCACGTAGACGGCTGGATCAACGCCCACCAGCAGCAGTTTGACGGCTGGGTGAAAGAAGCGCTGGCCGCGCAGAAATAAGATCGTTTTTTATGCCGGATAAGGCGCAGTTCATGCGCCGCTATCCGGCCAACGCAATCTCTCCTCAAAGCGCACGATTCATCACGTCACTGTTCCCCTTTATTCATCAACATCCGCTATGATTGTTTTCCCAGGAAATAATTATCTGAATCACG [...]
+NODE	1550	1362	86415	85564	0	0
+GACAGAGACAAATAGAATGCCAGCGCAAGCGTAATGTGTCCTGAGTCACACCATTGCGATTCATAATGTTTAAATTACGCAAGCAATATAACCATAACTATGGCGAATACACAATCATACACCAAGTGAATGATCATTTAAGTTTCAATTAAATGTTTATATTATTAATAGCTAAAAAGTTAACATTAATTTATCAATAACTTTATCCTTATCCATTAAGTAAACAAGGTTATTTGTTAAAATATAAAACAAATCAAAAAGATAAACCAAACCTTTAGCATACCTTTAACAGTCCATTCCCCTAACCAATTTGCAAACAAAAATGCCTAAATATTTCAAACAATGAAAAGTATGAATGTCCACTCGTTCTTTTATCCTTTATTGGACGCGCAGCCCAGCACAATTAGCTAAAGTACGTATCCGGATATCGTCAACAAAATGCAATGGCGACAGAAAATAGAGTTGACATTAAACGGCATATCCAGTACCACT [...]
+TCGTGGGTATGAACGGAGATGATAGCTTTGTCGATATTGGGGACACGTTCATACAGGCCGGAAATGATTCCCGCAAACTCAAACGGCATGGTATAGCCCACGGTATCGGGAATATTAATGGTTCTCGCGCCGGCGTTTATAGCGGCTTCCACCACGCGCGCCAGATCGTCAACAGGCGTCCGGCCAGCATCTTCGCAGGAGAACTCTACGTCATCAGTGTAATTACGCGCCCGCTTAACCATGTATACCGCGCGTTCGATGACCTCATCCAGCGTGCTGCGCAGCTTGGTGGCGATGTGCATTGGCGAGGTGGCGATAAAAGTATGGATGCGAAACGCGTCGGCGACCTTCAGCGCCTGTGCCGCGACGTCGATGTCTTTTTCTACACAACGCGCCAGGGCGCAAACGCGGCTGTTTTTGATGGTGCGGGCGATGGTTTGGACAGATTCAAAATCACCCGGAGAAGAGACCGGGAAGCCTACTTCCATGACA [...]
+NODE	1551	155	390	390	0	0
+CTCTTGCCAACGCTTCACGGTCACGCAATAAATTGCGTCCCCGTTCACCGTTTTCGGGTAAGAAGAACGCCGGAAACAGGACTTCCCCTGGCTGAATGGTGTGAAATTCTGCGCTATGCACTTGCGCGCATACTCATGCATGCCGTAAAAACAGA
+TTCACACCATTCAGCCAGGGGAAGTCCTGTTTCCGGCGTTCTTCTTACCCGAAAACGGTGAACGGGGACGCAATTTATTGCGTGACCGTGAAGCGTTGGCAAGAGCATCAAGCATGAAGAGAAGGGGGTCGGATGTACGAATGGTTCAGAGAACT
+NODE	1552	425	26219	25849	0	0
+GCGCAGCGATCTTCTACAAGTTTAGCCTTTCGTCCGGTAATAATGGCAACCTCGATATTGGAGGTCAAAGCACAGCGAATACCGTAGCCGTCACGAACGTTGAAAGCCTTCAGCTCTTCGCCGTTATTGCCCATATAAATCAGGCCGTCAGACAATACGCCATCCACGTCCAGGATGAGCAGGCGGATATTCTCCGCTTTGGTCATGACATGGGTGCTGACGGGGCCATAACAGGTCGCAAGCGACGCACCTGCTTTACTCATCGTTAATTATCCTTGAGTTTCTACACGACGCCTGCACGCAGGAGATCATGCATATGTAACACACCGAGTAACTGGTCGCCATCAGCAACCAGTACGGAGGTGATATGGCGGGACTGCATTAAATTCAGCGCATCGACAGCGAGAATACCGGGACGCACGCGA
+CCCGCCATATCACCTCCGTACTGGTTGCTGATGGCGACCAGTTACTCGGTGTGTTACATATGCATGATCTCCTGCGTGCAGGCGTCGTGTAGAAACTCAAGGATAATTAACGATGAGTAAAGCAGGTGCGTCGCTTGCGACCTGTTATGGCCCCGTCAGCACCCATGTCATGACCAAAGCGGAGAATATCCGCCTGCTCATCCTGGACGTGGATGGCGTATTGTCTGACGGCCTGATTTATATGGGCAATAACGGCGAAGAGCTGAAGGCTTTCAACGTTCGTGACGGCTACGGTATTCGCTGTGCTTTGACCTCCAATATCGAGGTTGCCATTATTACCGGACGAAAGGCTAAACTTGTAGAAGATCGCTGCGCCACGCTGGGGATTGTCCATCTTTATCAGGGACAGTCGAATAAGCTGATCG
+NODE	1553	51	2384	2384	0	0
+TTCGCGTGCGTCCCGGTATTCTCGCTGTCGATGCGCTGAATTTAATGCAGT
+ATGCCCCCTGGCGTCATCACCTCGGCGATCCCCAACTGGCGCATATCGCCG
+NODE	1554	2696	128469	125108	0	0
+TCATCGATGAGGTCGATAGCTTTATCCGGCAACTGACGGTCAGCGATATAGCGGTGAGATAATGTTGCCGCCGCCACAATCGCCGGGTCAGTGATCTGCACATGGTGGTGCAGCTCGTAACGTTCTTTCAGGCCACGCAGAATAGCGATGGTGTCTTCCACTGAAGGTTCTGCGACAAACACTTTTTGAAAACGACGTTCCAGCGCCGCGTCTTTTTCAATGTACTGACGGTATTCATCCAGCGTGGTGGCGCCCACACAGTGCAGTTCACCACGCGCCAGCGCCGGTTTCAGCATATTCCCGGCGTCCATGGCGCCATCAGCCTTACCTGCGCCAACCATGGTGTGCAGCTCGTCAATAAACAGGATGACGTTGCCTTCCTGTTTTGCCAGATCGTTCAGCACGCCTTTCAGACGCTCTTCAAATTCGCCGCGATATTTCGCCCCGGCCACCAGCGCGCCCATATCCAGCGCCAGTACGCGGCGACCTTTT [...]
+CGGATGTTCCGCGCGCGGGCATTGTGCATCGTCTGGATAAGGACACGACGGGTCTGATGGTGGTGGCCAAAACCGTTCCGGCGCAAACGCGCCTGGTGGAGTCTTTGCAGCTGCGCGAGATCACCCGCGAATATGAAGCGGTCGCGATCGGACATATGACGGCGGGAGGAACGGTGAATGAACCCATCAGTCGTCACCCGACCAAACGTACCCATATGTCGGTGCATCCCATGGGCAAACCGGCGGTGACCCACTACCGCATTATGGAACATTTCCGTGTGCACACGCGTCTTAGGTTGCGTCTGGAGACCGGGCGTACGCACCAGATCCGCGTGCATATGGCGCATATTACGCACCCGTTAGTGGGCGATCAGGTCTACGGTGGTCGTCCACGTCCACCGAAAGGCGCATCGGAAGAGTTTATTTCCACTCTGCGTAAGTTTGACCGCCAGGCGCTTCATGCAACGATGCTGCGTCTCTACCATCCTGTAT [...]
+NODE	1555	770	108654	107452	0	0
+GATGGAGCTGCACATGAACCCATTCAAAGGCCGGCATTTTCAGCGTGACATCATTCTGTGGGCCGTACGCTGGTACTGCAAATACGGCATCAGTTACCGTGAGCTGCAGGAGATGCTGGCTGAACGCGGAGTGAATGTCGATCACTCCACGATTTACCGCTGGGTTCAGCGTTATGCGCCTGAAATGGAAAAACGGCTGCGCTGGTACTGGCGTAACCCTTCCGATCTTTGCCCGTGGCACATGGATGAAACCTACGTGAAGGTCAATGGCCGCTGGGCGTATCTGTACCGGGCCGTCGACAGCCGGGGCCGCACTGTCGATTTTTATCTCTCCTCCCGTCGTAACAGCAAAGCTGCATACCGGTTTCTGGGTAAAATCCTCAACAACGTGAAGAAGTGGCAGATCCCGCGATTCATCAACACGGATAAAGCGCCCGCCTATGGTCGCGCGCTTGCTCTGCTCAAACGCGAAGGCCGGTGCCCGTCTGACGT [...]
+CCTTACATTTCAAAAACTCTGCTTACCAGGCGCATTTCGCCCAGGGGATCACCATAATAAAATGCTGAGGCCTGGCCTTTGCGTAGTGCACGCATCACCTCAATACCTTTGATGGTGGCGTAAGCCGTCTTCATGGATTTAAATCCCAGCGTGGCGCCGATTATCCGTTTCAGTTTGCCATGATCGCATTCAATCACGTTGTTCCGGTACTTAATCTGTCGGTGTTCAACGTCAGACGGGCACCGGCCTTCGCGTTTGAGCAGAGCAAGCGCGCGACCATAGGCGGGCGCTTTATCCGTGTTGATGAATCGCGGGATCTGCCACTTCTTCACGTTGTTGAGGATTTTACCCAGAAACCGGTATGCAGCTTTGCTGTTACGACGGGAGGAGAGATAAAAATCGACAGTGCGGCCCCGGCTGTCGACGGCCCGGTACAGATACGCCCAGCGGCCATTGACCTTCACGTAGGTTTCATCCATGTGCCACGGGCAA [...]
+NODE	1556	51	3096	223	0	0
+CGTCTGGTATGCGAATCCAGTTCCCCAATCCTGGCGCTTTGCCTTCGCGAC
+GCCCGTGGATTATTAATGATAACTTCGTAAATAACCTTTCAGACAATGAGG
+NODE	1557	1330	270678	269499	0	0
+GCCCTCAAACGGAGCAGGATAATGTTCAGGATTGTATAAAGAATGATGGTTCAATTTCTCCGAGTGATGAGGATTACTTTAATCCTGACATGATTAGTGATGAAGAGCTAGCGATGATAAATAAAACAGTATCGTCAGACAGTAAATAAAATAAATCTGGCATCTAGCTGATGCCAGATTTTTTAGTTAATAATATGGTGTACATATGGATAAAACGACAAAAACATATCCTTTTGGTGAAATTGAGTTTTTTGACCAGTTAGAGGAACATGCATGGGACCAGATTCATGATGGTATGCTACCAATTATGGATTTGTATCTTGATCCGACAGTAACCGATATATTTATAAACAGGTATGACAATATATATACATCTGTCAATGGCAAGTATGTAAAGACCGACAGTTCCTTTTCCAGTGAACGGGCACTTAAAGCCTGGATTGATCAAATCGCAACGGTGTTGAGGCAGCCATTTTCAACGTCAGGAAACTA [...]
+TGCTAAATGTTCATTTTTTGTCAAACCTGACATGTACTTCTTGCTCTTCATCAAACTTGAATATAGGAACAATTTTCCCTTCACGTATTTCGACGATATCTGTAATTCTTCTTCCATGCTTTGATGTTCTCCGGCACTGAATAATCACGTCAACCTCTGACATAATTAAATCCTGAGCTATCTGAAAATCGATACTGAGATAGCTTGACATAAGCCAAGTCATTTTGCGTATTGCCCCCATAGGGGTAACGGAGTGCAGAGTTGTAGCATTACCTATAGTTCCACTTGCCAGAACCATGTAATAAGCAGCTATAGCCTCTGCCGTTCTTACCTCCCCAACCCATACACGATCGGGATTACCACGCATAGTCAGGTGAACCAGAGAAGGAAGATCCGCATTCACATCTTTACGATGTGCAGCTTCCAGAGCAATCCCTAACGGAAAATACCTGTGTATATGAAGTTCTTGAGTGTCTTCGGCGGTGATAACAC [...]
+NODE	1558	51	3407	3295	0	0
+TTTTGGTGTTGAAATGCCAATAACCGAGGAAATTTATCAAGTATTGTATTG
+ACGGTGCGCCAATTCACGAACTTCTTTCGTATTGCGATAGCCTTCGACCAC
+NODE	1559	168	10799	10799	0	0
+AGATAACCGTACCGTTTACCAGTACCTGCAAAAGCACGGTCTGAAATACCATTCGCTGTGGGATCAGGGCTATCTGTCGGTAGGCGATACGCACACCACCCGCAAATGGGAGCCGGGCATGGCGGAAGAAGAGACGCGGTTCTTCGGGCTGAAGCGCGAGTGCGGGCT
+GCCCGGCTCCCATTTGCGGGTGGTGTGCGTATCGCCTACCGACAGATAGCCCTGATCCCACAGCGAATGGTATTTCAGACCGTGCTTTTGCAGGTACTGGTAAACGGTACGGTTATCTCAGTCGATAATCGGTAGCACTTTAAACACGCCGCGCTGAATCGCTAGCAC
+NODE	1560	39	1868	1868	0	0
+GGATGAAATTATGATCTATGTGGCAGGACGCCAGATTCT
+GATACGTTCGCAGCGAACATCGCGCCAGAAGCGGGAGAC
+NODE	1561	51	3745	3745	0	0
+GTATCAGGCGCATCAATTTGAGCTCTGCTGGCGTGGGTTTTTCGCGTTTCG
+CAGGCGAACCCACGCTTAAGTAAGCAATTGATGGAGTAATTTTTACCCCTT
+NODE	1562	1584	94613	94396	0	0
+CTAATGAACTGGACCGATGGAGCCAGACATATCACAAAAGAAAACTGGCAGTAATTGGACTGCTGGATGACCAGTACCCTTTGGCTATTTTCCATGGGGATGTAGGCACAGGCAAAACAGCTAACGCCGAAGCAATAGCTAACCGTTTAGCCCGTGATGCAAAACTCGAAGATGCCATTCTTTTTAAGCTGAGTAACAAAGTGCGCGGAACAGGCAAAGTAGGCGAAATGGGAACTTTGATTACTCAAGCTTTCGAAGAAATTACCAGATCTATCGGGCCGGGCAAGGGGCGCGCTTTTCTAATCATTGATGAAGGTGATTCTTTGGGAGCATCCCGTAGCCAGGATCATAGCCATCACGAAGATAAAGTAGGTGTCAACACTCTTATTCAATCTATTGATGGTATGCGTAAACATAGTGGACGTATTTTTGTCATACTTTGTACAAATCGGCTGAGAGCCCTTGACGCTGCAGTTATTCGCCGCGCTTCAA [...]
+AAAGAAATTGAGAATTTATCATTCATTATTCTTACAGTTTCATCCTTTTAAAAATTATTAGAAATTTAACGTAACGTTTATTGTAACGCCTGACCCAGCACAAAAAAATTTAGTTATTCTGGGGCTGATTCAAGTCAGTTATCTGCGCAGGCTATAACCGACCATACCCTACGCAGATATTTGACTAATATTAACTATTTTTTTTGCTTAATTCGTAAACTAACCTGAATAGTTCAGCTTGATATTTTGCGTCGTGAAGAGCATCGTGATCTCCCTTTTGGCTTGGACTCACAATTTTATCAATCGCACTGGATCTGGTTTCATACCATGAACATCCCATGACTCCCATGAAAAGGGCCTTGATATCCAACGCAGTGAAACCAAATGGGTTATTTTCTAGATATTTCAGAAAATAGTAGTTCACAAACCCCCAGTCGAACGGCGCATTTAATCCTACAAACACTGCTGTGCTATCTTTAGGTAAGTTATTGG [...]
+NODE	1563	1425	73529	73318	0	0
+TTCTATTATTGGGGCAATGTCGCTGGCTTATGTTTATGCGAGGCTGGCAACCAAAAACCCTCAACAGGGTGGCCCTATCGCTTATGCTGGGGAAATATCTCCGGCGTTTGGTTTCCAGACCGGCGTTCTTTATTATCACGCAAACTGGATTGGTAACTTAGCCATCGGTATTACCGCTGTTTCTTATCTTTCTACGTTCTTCCCGGCATTAAATAATCCAATACCGGCAGGTATTGCCTGTATTGCTATCGTCTGGCTGTTCACCTTTATTAATATGCTGGGTGGGGCCTGGGTCAGCCGCTTGACAACGATTGGCCTATTCCTGGTGCTGATCCCGGTAGTCTTGACCGCAGTCGCCGGCTGGCATTGGTTCGATATCGCGACCTATCACGCGAACTGGAACACGTCCACGACGACCGACTCTCACGCCATTGTTAAAAGTATTCTGCTCTGCCTGTGGGCGTTCGTTGGCGTTGAGTCTGCCGCCGTCAG [...]
+CGGAAATTTAAACCTTCCAGTGCACGATGCAGTTCACGAATAGGCTCTTCTTTAAAGTAGACGCCCATGTGGTTCATGATAGCAATAACGTTCATAGTCTTGTTCCTGGTAAAGTGGGCCCCTCCCGCTACGCTATAGCAGGTGACGAAAGGGGCTTTGAGAAAAAGGAGTTAGCGGTTAAAGCGCTTCAGCCGTATTGTTGTCGCTGTCGTTGTTCTGGCGCTGGTGCATTTTGCGACCGTAGAACATCAGGATGATCAGACTGACGATAAAGGTGCCGGAGAGTTCGAAGGAGCTGGCGCCCATCAGTGCGATGAAGCAAAATGCGCAGCCCAGTACAGAACAAATCAGGCTTACCGAGTTACGGATGTTGAACCCTTCGAAGCGAATCAGGTCAACACAGGAGTAGAAGTACGGCAGCATGGTAAGCAGTACGGCAATCCCGGTCAGTTCGCCGAACAGGTCGGACGCTTTACCGCCGCTGGAGTTCAT [...]
+NODE	1564	2151	121361	119137	0	0
+CAGGCGGGATTAAACGGCTTGTTTTCGTGGAGTTCCGGGTACAACTGGCTCACCCATTTTGTCGTTGCAGGCATAAATTGCGCCATACCCTGCGCGCCAGCCGGAGAAAGCGCGTCAGGCGCCCAGCCGGATTCCTGATGTAGTTGCCCGGCAAAATCCGCAACGGGGGCGTTAAGCCCCCAGATTTCGCGCGCGGTACGAATCACTTCGTTTCGCCATTGCAGAGAAGCGCGCGGCGGTTCGGCAGCGTCGGCAGACAAGAAAGTCATAGCGCAGACCAGGCATACGTATTGATAACGCATCGTTACAGCCCCAGCGCGACGGCAAGGCAAATTGCCGCAACGATGATCGCGCGACGAATCATCGCAGCGGCGCAGCACAGCGATTCTTCCCAGGGACAGAAGGAGTCGGGACGCGCCCAGGGGAAAAGACTGCGGTCGAGCCAGTAACCCAGCACCGCTGATAACGAAACCAGGCTGAGTTTATAGATGA [...]
+TCCGCGCGCTGGCGCTGCGCCGCAATCAAACGCTATTGACGCTGCACAGCCTGAATATGCTGCACTCACGAGGTTTCCTGGCAGAGGTGTTCGGCATTCTGGCGCGGCATAATATTTCGGTAGATCTGATTACCACTTCGGAGGTGAGCGTCGCGCTGACGCTGGATACTACCGGCTCCACCTCCACGGGCGATACGTTACTGACCCAATCCTTATTGATGGAGCTTTCCGCGCTGTGTCGGGTAGAAGTCGAAGAAGGACTGGCGCTGGTCGCGCTGATTGGCAACAACCTGTCAAAAGCCTGCGGTGTTGGTAAAGAAGTGTTTGGCGTCCTGGAACCGTTCAACATTCGCATGATTTGTTACGGCGCCTCCAGCCACAATCTGTGCTTCCTCGTGCCGGGAGACGATGCCGAGAAAGTGGTGCAAAAGCTACATCAGAACTTATTTGAATAATCGCCCTGACACGGCAGCGGGTGAGCGCTATCAGGCA [...]
+NODE	1565	51	2816	2816	0	0
+AATGGTTTCCGGCTTTTTAACTTCACCGAAAGACCATGAACGGATCATGTC
+TAACTACCGTACGTTCAAACCTGAGCGTGACGGCCTTTTCTGCGCCCGTAT
+NODE	1566	270	15105	14894	0	0
+AAAAGTGATCGCCCCTTATCCGCTTTCTACGCCAGTGGCGGATATCGCCGCCCAGGCGCTGAGCCCGCAGGGAATAAACGCAATGCGCGATCGCGTGGCGCAGACAGTGCAGGAACGTCAGTATCTGGTGAATGCCCTGCAACAGACCGCCTGCGTAGAACACGTCTTTGACTCTGAAACCAACTATATTCTGGTGCGGTTTACCGCCTCCAGCAGCGTGTTTAAATCCTTATGGGATCAGGGCATTATCTTACGCGATCAGAACAAACA
+CACGCTGCTGGAGGCGGTAAACCGCACCAGAATATAGTTGGTTTCAGAGTCAAAGACGTGTTCTACGCAGGCGGTCTGTTGCAGGGCATTCACCAGATACTGACGTTCCTGCACTGTCTGCGCCACGCGATCGCGCATTGCGTTTATTCCCTGCGGGCTCAGCGCCTGGGCGGCGATATCCGCCACTGGCGTAGAAAGCGGATAAGGGGCGATCACTTTTAACAGCAGGTTGATCACCTCTTCATTAGCCAGCGTAAAGCCGCAGCGCAG
+NODE	1567	32	1584	1566	0	0
+CGTCAAGGATGACGATCTGTAGAGGGTATTTT
+GAAATGTGAACGCGCCGATTTTATGCCCACGC
+NODE	1568	18	870	814	0	0
+TTATCCACCGCCAACGGA
+TGGCGGCAGGCAATGAGC
+NODE	1569	51	2437	2353	0	0
+ACCGCGCAACAACCATGCTCTCACAATGTGCCCGTTTTATCCGCCGCCTCT
+TTCCGTTGGCGGTGGATAAAAAATACCCTCTACAGATCGTCATCCTTGACG
+NODE	1570	368	22309	22073	0	0
+CGTTTCGCTTTTTCAGCGGCTTCACGCTTAGCTTGTTCTGCGGCCTCGCGTTCAGCTTTTTGTTGCGCCTCGCGTTTGGCCTGTTCTTCTGCCTCACGACGGGCTTGCTCTTCCGCTTCACGCTGCGCCTGCTCTTCCGCGGCCAGGCGTTCAGCCTCTTGCGGATCGCGTTTCACAAAGGTGCGCTTCTTGCGGACTTCGATTTGTACCGATTTACTTTTTCCACCGGTACCAGGAATATTCAGGGTGCTGCGCGTTTTACGCTGCAGCGTCAGTTTATCGGGACCAGAAACCGCTTCGCGGTTCAGGTGCGCCAGTAAAGTCTGTTTTTCTTGTGCGGACACAGAGTCGTCAGCAGATTTCCGGAT
+ACTGGCGCACCTGAACCGCGAAGCGGTTTCTGGTCCCGATAAACTGACGCTGCAGCGTAAAACGCGCAGCACCCTGAATATTCCTGGTACCGGTGGAAAAAGTAAATCGGTACAAATCGAAGTCCGCAAGAAGCGCACCTTTGTGAAACGCGATCCGCAAGAGGCTGAACGCCTGGCCGCGGAAGAGCAGGCGCAGCGTGAAGCGGAAGAGCAAGCCCGTCGTGAGGCAGAAGAACAGGCCAAACGCGAGGCGCAACAAAAAGCTGAACGCGAGGCCGCAGAACAAGCTAAGCGTGAAGCCGCTGAAAAAGCGAAACGTGAAGCTGCGGAAAAAGACAAAGTGAGCAATCAACAGACTGACGATATGA
+NODE	1571	19	810	794	0	0
+ACGCGGTATTGCACGTTCA
+ACCAGCCCGGACGATAGCC
+NODE	1572	5077	274419	273443	0	0
+TTTCAACGCGCACGACGTTTTCATCAGACGTCAGCATCACGCCTGACGCCGCCAGTTCGCGCACCGCTTCGACGTTCACCGGCGTGACGTCGTCAATAAATGTCGGCTTCCAGTTCAGACCTGGCTCTACCAGATGGCTGAATTTACCAAAACGCGTCACAACGCCACGCTCGGCTTCTTTAATGGTATAAAAACCGCTGGCCGCCCAGATAATGACTACTGCCGCCGCGGCGATGGCGACAATACGGCCTCCCAGTTGCGGACGCGGGCCTTGCGATGAGCTACCGCCGCCGGAACCGGTGCCTTTACCGCCCCCAAAACCACCGAGTTTTTTACTCAGCTTACGGAAGATATCATCCAGATCGGGAGGTCCCTGATCGCGGCCACCTTTGTTTCCATTTCCCCCAGAGTTGCTGCCAGGTTTGCTGCTTCCCCACGGGTCGCGGTCCTGTCCGTTATTACCGGGCTGATTCCACGCCATGTTTGTGCTCC [...]
+CGCTGGCCCGTCATGCCACCAGTAAAATCGCCTCGCTTGACGATCTGGAAGCGATTATCAGTCTGGGATTTCGCGGCGAAGCGCTGGCCAGTATCAGTTCGGTCTCGCGTTTGACGCTAACGTCGCGCACGGCGGAGCAGGCGGAAGCCTGGCAGGCGTATGCGGAAGGGCGCGACATGGACGTGACGGTAAAACCCGCCGCGCACCCGGTCGGCACCACCCTGGAAGTTCTGGATCTCTTTTATAATACGCCCGCCCGGCGCAAATTCATGCGTACCGAAAAAACGGAATTTAATCATATCGATGAGATCATCCGTCGTATTGCATTGGCCCGTTTTGACGTCACGCTTAACCTGTCGCACAACGGCAAATTGGTACGACAGTATCGCGCTGTCGCAAAGGACGGGCAAAAAGAGCGCCGGTTAGGCGCCATCTGCGGCACGCCGTTTCTCGAACAGGCACTGGCGATCGAGTGGCAGCATGGCGATCTGA [...]
+NODE	1573	51	2675	2675	0	0
+CATGTTTTTCTTCCTGTACCTGTCTGTGTTGTGCGGGCTCTACGGCCTTTG
+GGTAGATCAGGTAAAAGTCGCAGCCGACGAACAGGCTCCGGCTGAACAGTC
+NODE	1574	2339	117018	115001	0	0
+CCATTCGTCTGCAACGCATGAGTGATTTTTCGCCCATCGCCGTACTTTTCACATAATGCGACAACCCGGCGGAAAAACGGTAGCCCCATCATGGTCGGTTCGCCGCCCTGCCAGGCAAAGTCAATGCGGTCGCCACTCTGCGCGGCAATATGCTGGCGTATAAACTGTTCCAGCGTCTCGTCCGACATCCGCCAGTTTTTATTGCGTTCCGGGTACAGCGCCTCTTTTTCAAGATAGAAGCAATATGTGCAATCAATATTGCAGATCGCGCCGCCGGGTTTGGCCATTACGTGACAACCTGCTACCGCCATGTCAGACATCTCCGTTAAAAAATAAGGTTCACCAACGCCATGAGACAATGCGACGTTTATCGTCGCCAGGGAACATAACAGAATGGAAAACCTCGTTTTGTGCTATGAGAGCGCTGGGCGATCATGACAAGAAAAACGATCTGCGAGGCAATAAAAGCCGCCGCGCTGCTTCCGGGGACGC [...]
+GCCTTCAAACCGGCTTACGACGCGCTCGCCGGCCAGGTGAAGCTGTTGCTGACGACCTATTTTGAAGGCGTGACGCCAAACCTGGACACTATTATCGCGCTACCGGTACAGGGGCTACATGTTGACCTCATTCATGGCAAAGATGATGTAGCGGAACTGCATCAACGTCTGCCGGTCGACTGGCTGCTTTCCGCAGGCTTGATTAACGGGCGTAATGTCTGGCGCGCCGATTTGACCGAAAAATACGCGCAGATTAACGCCATTGTGGGCAAACGCGCGCTGTGGGTAGCATCCTCCTGCTCTTTGCTGCACAGCCCGATCGATCTCAGCGTCGAAACGCGTCTGGATACGGAAGTTAAAAGCTGGTTTGCCTTTGCGCTGCAAAAATGCGGTGAACTGGCGTTGCTGCGCGATGCGCTGAACAGCGGCGAAACGGCGGCGCTTGAGGAATGGAGCGCACCGATTCAGGCTCGTCGTCACTCCCGCCGCGTA [...]
+NODE	1575	14772	734336	728170	0	0
+TATCTATATGGGCGCCAAAGACGTTGAGCGCCAGTCGCCGAACGTCTTCCGTATGCGTCTGATGGGCGCTGAGGTCATCCCGGTTCATAGCGGCTCCGCTACGCTAAAAGATGCCTGTAACGAGGCGCTGCGCGACTGGTCCGGTAGTTACGAAACCGCGCACTATATGCTCGGCACGGCGGCAGGACCGCATCCCTATCCCACCATCGTTCGCGAGTTCCAACGCATGATTGGCGAAGAGACGAAAGCGCAAATCCTCGACAAAGAGGGCCGTCTGCCAGATGCCGTTATCGCTTGCGTCGGTGGCGGCTCAAACGCTATCGGGATGTTTGCGGATTTTATTAATGATACCAGCGTCGGGCTAATAGGCGTTGAACCTGGCGGTCACGGTATTGAAACCGGCGAGCATGGCGCGCCGCTTAAACATGGTCGCGTTGGCATCTATTTCGGGATGAAAGCGCCGATGATGCAAACAGCAGACGGGCAAATTGA [...]
+GTCGGAACGCTGTATGGCTCGCTGTCCGGCTATCTGGGCGGCAAAATTGATTCTGTGATGATGCGGTTGTTGGAGATCCTCAACTCGTTCCCGTTTATGTTCTTTGTGATTTTGCTGGTGACGTTTTTTGGGCAGAACATTCTGTTGATTTTCGTCGCCATCGGCATGGTCTCCTGGCTTGATATGGCGCGTATCGTGCGTGGCCAAACCCTAAGTCTTAAACGTAAAGAGTTCATCGAAGCCGCGCAGGTGGGTGGTGTGTCGACCGCCAGCATTGTGATCCGCCATATTGTGCCTAACGTCCTGGGCGTAGTGGTAGTGTATGCATCGTTGCTGGTGCCCAGCATGATTCTGTTTGAGTCTTTCCTCAGTTTCCTGGGGCTTGGGACGCAGGAACCGTTAAGCAGTTGGGGAGCGTTGTTGAGCGATGGCGCAAATTCAATGGAAGTCTCACCGTGGCTGCTGCTGTTTCCGGCTGGCTTTCTCGTGGTG [...]
+NODE	1576	51	4731	4731	0	0
+TCGAGGAACTTGGCGAGGAGTTAAATGATGGGAGTCAGGTTTTTTTACAAT
+ACTCTAAAGTTACCATCCCATTGAGTTTGAGTAATCGCAAAAGTATTTGCG
+NODE	1577	255	17121	17121	0	0
+TTTATATAATATGCTTTTCCTTTATTGCTTATCTCAAATTGCGGTGATGGATATGGACATGCATTTTCCTCGTCGCCGTTATAGTATAATGCCAAAACACCAGAATTGATTTTTAAAGAGTAGTCACCAATGCATGTTATCCCCGCATGCCAGGTTGTCATGGATAAAGAAGCACGATTATTTTTACTATCTATCTTTAAATTATATTGTAAAAAAACCTGACTCCCATCATTTAACTCCTCGCCAAGTTCCTCG
+ATAATTTAAAGATAGATAGTAAAAATAATCGTGCTTCTTTATCCATGACAACCTGGCATGCGGGGATAACATGCATTGGTGACTACTCTTTAAAAATCAATTCTGGTGTTTTGGCATTATACTATAACGGCGACGAGGAAAATGCATGTCCATATCCATCACCGCAATTTGAGATAAGCAATAAAGGAAAAGCATATTATATAAAAGGAAAAATGTTTTCATATTCTCAGCCTGGTGAATGGTTGCCACTCAAAC
+NODE	1578	51	4922	4872	0	0
+GCGCAAGGGGCTGATTCTATCAGAAAACGATGCTAATGATGGCGCTGAGTG
+CCCTTTTCGCGCACCGTTTATGGCTAACTTTTGAATAATTTATTATGACGA
+NODE	1579	150	11393	8671	0	0
+CCCGCTGCGGGCGCTGGATTTTGGCCCGATAGACGAACTGCGTAAAAAACACGGTGAGCTGGCTGCCGTCGCGCCGCTGCCGCGCGCGCATTTCACGAAGCCGAATATTGTGATTAAACCCAACGCCAACAGCCGCCCGACCGGGGACAC
+CTTCGTGAAATGCGCGCGCGGCAGCGGCGCGACGGCAGCCAGCTCACCGTGTTTTTTACGCAGTTCGTCTATCGGGCCAAAATCCAGCGCCCGCAGCGGGCAGGATTCCACGCAAATCGGTTTCTTGCCTTCCGCCACCCGGTCATAACA
+NODE	1580	78	7970	6131	0	0
+CCACTTCCCATCTTATACCTCCTTCGGATTGGCCAGATAACCGGTAGTGTCCCCGGTCGGGCGGCTGTTGGCGTTGGG
+TCCGAAGGAGGTATAAGATGGGAAGTGGATGGCATGAATGGCCGTTGATGATCTTCACGGTCTTTGGTCAGTGCGTGG
+NODE	1581	1878	99691	98777	0	0
+ATCCCCTCCGCCTGTGGAATGTCCCGCTCCAGACCACTGTGTCCCCGGCGCAGCGGCATCACCCTCCAGCCGCCCTCGGAGTCTGACACCATTACCAGGGCTGATTCATGGGAAAGCACATACAGCCGCCTGTTTTTCCTGTCGTAATGCAGGCCGGAGATATCCTTCAGGAACCACGGCAGGGACAACCAGTGCGTCAGTGAATCACTGACCGACAGAGAGTCATGGCTGTGGTCCGTTTCTAAAAAACGAAGCGGTTTCTTTTCCTGCGCCACTATCAGGGCATTCTCTCCCCGTCCACGGGCAAGGCCTTCAAAACCGGCATTGTCGCTTTTTCTGTCCACATCCAGGGTCAGGGTGTATAACGTCGGCGGCAGGACAGACGTGTTCCTGCCAATGTGGTGGGTGGTGAGCATCCGTTCCCGCTCCCGGGACAGGACATAGCGGTTCCGGCCGAGGTACTCAATGGCCTCAAAATCATGGTCGCCATCC [...]
+GGATATGCCGTGGTGCGACCGGAGATGTCACCTCCCGGGGCATATGACCTGGCCCTGGTGGCACTGAGTGCGGAGCCGCTGGCCGGCTGGGGACGGCATCTGCAGGGCATCAGAATGCTGCACGCGGCCAGTCCGGTTCCCATGGTTGTTCTGGTACCTTCGCGGCTGCAGGAAATGCGACTCCTGAGAGGAACTGCGCAGGTTATCAGTGGCCGGGACAGCCTCCTCCGGCTGCGTGACATGCTGCGTCAGGCGCTTAAGGGAAGTGCCGGGCCGGAAAGCTCAGGTGAACTGACTGACTTGCGAAAGCGGACTCTGATATCCCTGTGTACGGCCATAACCAGGAATGCCTCACTGAAGGCGGCATCACGCAAGGATTATTACCTCCGCGCCTGCCTGGTGGAGTATGCAGGCGTGGAGAACCTGCATGTACTGTGCACGAGCGGCCTGTTACCCGGGGTGATTACAGATGAGACCGGACAACGGTTCTGA [...]
+NODE	1582	48	3276	3276	0	0
+TGGCGTAAACAAGAATGTATTCCCCCTGGATGGAAACGTTATCAGAAT
+ACCGGTCAGGGCGCTTTACGTTTAGAACCGCTTTCTAAAGAGTATATT
+NODE	1583	51	1971	1335	0	0
+CCCTGCCACAATCATGGCGAGTAACTGAAAAAAAGCCCATCCGATAACGAA
+GATATTTTTGTTAGGCGTATTATTATTTCACCCCATAATATTTGTACAGAC
+NODE	1584	51	3060	2902	0	0
+CCTGCCAGGTTCCAGTTAATCGCCGCAATGAATCCCAGCCCGACCGGACAT
+GGTACGTTATTTTCGCTCTGGTACGGGATAAATGAATTTGACCGGATTCTA
+NODE	1585	41	4863	4863	0	0
+AGGCACATTCTCATCTCTGAAAACTTCCGTGGATGTCAAGA
+GTGAGACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTTGTG
+NODE	1586	37	4273	4273	0	0
+CCAGGTAAGGTTCTTCGCGTTGCATCGAATTAAACCA
+GGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACC
+NODE	1587	37	4253	4213	0	0
+TTAACTTCCGGCTGCCCAAAAACAGCCCCGTCCTGTT
+ACGTTGCAGTGTACTGAAAAATGGCGCCAGGTTGCAC
+NODE	1588	35	4925	1970	0	0
+CGCCAGCGCTAATGCCTCTTTAATGGCGTGCACGT
+AGCCAGATGGAGAACCTGGCGGTGGACATGGGCTA
+NODE	1589	19	2550	1715	0	0
+GTTAAGCTTCGCGGCAATC
+CATTAGCGCTGGCGCTGCC
+NODE	1590	73	3281	3281	0	0
+TGAACCGTTACTGCTGCTGCCGATTGGCTTCGGCGGCCTGCTCTCCAATATCCCGGAAGCGGGTATGGCGCTG
+TCGGCAGCAGCAGTAACGGTTCAAACTTTTTCGCAATCGCCAGCCACAGCAGCAGCAGGCTCACCAGCAGCAT
+NODE	1591	3729	212386	210580	0	0
+ATTCATACGCCAGGCCGTGCGCCGCTTCCTCCTCTCTTTTCTGATATCGCGCGCTAATCCAACGTTGAGTGAAGGTGTGCGGTGATCCACAAAAAATGAATAAAGCGAGAGAACGCACGACAGGAGAGCCTTGTTTCGCGGCATCATAATTGCTGATGTGATAATCGTGAGAGGATACGATGCGCAAAGATGCCCTGCTTGCTTTCCTGATGAACCAAACGGATTTTTTTGATCCGGAAAATGTCAGTGAGGTGTTTACCGCGCGCTATCTGGCGCAGCGTTTTAATATGCAGCGTAATACCGCCAGCCATTATCTGAACCAACTGGTGGCGCAGGGCGTGCTCTGTAAAATCAATACCCGTCCCGTCTATTTCCTGCATAAGCAGGCATTTAGCCAACAGTTTTTTACCCTTTCGCGTAATGAATACGCCAGCGTCGCGGAGCTGTTAGCGCACGGGGAACAGGAATGCGCGCCGGACGATCACTTTTCTC [...]
+CAATTGAATCGGCAATATTTTTAATAACCAGCTTCACCGCGGGCGGCTTCGCCATTTTAATGGTGGTTTTACGCAGGTCATCATTAGGTACGCTGTCGTTGGCAATTAAAATACAGTCTGCGCCAACGTACTGCGTCCAGGAAAAGGCGACCTGTCCATGTAATAAACGATGATCCACCCGTAAAAAAACAATCATGACGCTTCCTCCCCTTAAAAATCTTTATCGCTTTGCATGGCGCTGGTGATAGTTTGATTGCAGTACTGAATATTTTCTTTTGAATCCGCTAACGCCGTCATTATGGTATGCGTGGTATTGCCATCGTTTTCCGACATAAAGAGATCGATAACCAGCGGCAGGTTAATCCCTGCCAGCAGATGAAAATTTTCCCGTGATAAATAACGGACAAATTCATTATTCACGCTGCCGGCAAAAATATCGGTCAGCGCAATAATTTCATCTTCCGGCGGGATCCGGGCAATTAGCGTATCTAC [...]
+NODE	1592	32	1839	1839	0	0
+CAACAACAATAAAAAGTTTATATTTATCGGTA
+ACCGGCTGGCGCGCGAATTACCCGACATTAAA
+NODE	1593	19	1503	1503	0	0
+ACGCCGCTTTTTATCGCTT
+GAATCCGTGGCGGATGCGT
+NODE	1594	18	3509	3509	0	0
+TAAGGTTAAGCCTCACGG
+GATTTTCAGCACTGATTC
+NODE	1595	3	552	552	0	0
+TTC
+GAA
+NODE	1596	4	925	925	0	0
+ATTA
+GAGA
+NODE	1597	4	1164	1164	0	0
+GTAC
+GGAT
+NODE	1598	10	2945	2945	0	0
+CGGTTAGCTC
+ATGTTTTGGC
+NODE	1599	4	1865	785	0	0
+TTCA
+TCAC
+NODE	1600	12	4898	3998	0	0
+CCCTTCATCGCC
+ACCGTTATAACC
+NODE	1601	19	7642	6436	0	0
+TCTGACTGCCAGGGCATCC
+CGCCGGTAAGGTGATATGA
+NODE	1602	3024	166103	164479	0	0
+CGATGGGCGCTTCCGGTACGATTAAGGCCGCTCATGAAGTTCTCCTGGCGCTGGGTGAGAAAGATGGCTTCATTACGCCGGAGCGCCTCGATAAACTGAAGTCAGAAGTGTTGAAGCACCGCTCCTTTAATGCTCTCAGCCTGCCGGGTCTGTCTGAAGAACGAAAAGCGGTCTTTGTGCCGGGCCTGGCGATTCTGTGCGGCGTTTTTGATGCTCTGGCTATCCGCGAGCTTCGCCTTTCCGACGGCGCGTTGCGCGAAGGCGTGCTGTATGAAATGGAAGGCCGCTTCCGCCATCAGGATGTTCGCAGCCGTACCGCAAAAAGTCTGGCCAATCAATACAACATTGACAGAGAACAGGCCAGACGCGTGCTGGAAACCACCATGCAGATGTACGAGCAGTGGCAGGCCCAGCAGCCAAAACTGGCGCATCCGCAGCTTGAAGCGTTGCTCCGCTGGGCGGCAATGCTGCATGAGGTTGGACTGAATATTA [...]
+GGCTGGGCAGCACTGCCGGGCATTGTGCTTGCTATCTTCTGGCGCAGATACCCGCAGACAGGGCTGTATGAAACCCTTTCCGTGACGATGCACTTTATCATCACTATCGTGCTAAGCTGGGGCGGCTATCGTGTCTTTTCCCCCCGGCGAAACAATGTTTCCCACGGCGACGCCCACCTGTTGTTTCAACGAATATTCTGGCAGGTATTTTGTTCTGCAACATTATTTCTGGTCATCTACCAGTTTGCCGCTTTTGTTGGTATGTACGAAAGCAAAGCCAGCCTGATGGGTGTAATGCCCTTTAATATCAACACGCTGATTAATTACCAGGCGTTACTGGTCGGTAACCTTGTCGGCGTGCCATTGTGCTATTTTATTATTCGTACTCTCCGCAATCCGCTGCACCTGCGGGGGTATTATCAGCAATTAAAGCTACAGATTGATAGCAAGGCCACTAAAAAAGAGATCGTTATTTGGCTGGCCGTATTGACT [...]
+NODE	1603	2971	149137	146814	0	0
+GGTGTTAACCGACAGCAATGGCGAGAAATCGTATTATCGCGCGAAAGGCAATGCGCTGGAGATGCTCGACAGAGAAGGCAATCCGGTGGCTTCGCAGCTTAATTATACGCTTGTGCCTGTTACCGCCAGCCTGCCGGTAACGCCAATGCCGTTGCGTGGTATGTATGTATACAGGGCCGATGCGGCGACCTTTACCGATTGTGCGACCGGAAAACGGCTGCCGGTCGCCAGTAACGCCCAGCTTGAGCGCGGCTATCTGACGGCGAAAGGTGAAGCGGAAAAACCGGTGCTGCTGACGGTAGAAGGGCATTTTGTGTTTGCCGCGAACCCGGACACGGGCGAGCCGGTAAAAATGCTAATAGCCGATAAAAATGCGAAGTTTGCGCCGGGTAAAGATTGCACTCACTAATAAAAGGCCTCGCAGGGTGCGAGGCCTTTACATATCTGCCGGGTGGCGCCGGGCAATCCCAACAAAATGTCGTTTAGCCTTTA [...]
+CGGCGAACTGCATCTGATAGCGCCTTACAACCAGGCCGATGCCGTTCGCGGCCTGGAAGCTTTCAGCCATTTGTGGGTGCTTTTCGTTTTTCATCAGACGATGGACGGCGGCTGGCGGCCGACAGTTCGTCCGCCCCGTCTTGGCGGTAACGCCAGAATGGGCGTTTTTGCCACGCGCTCCACGTTCCGCCCCAATCCGATTGGCATGTCGCTCGTTGCGCTAAAAGGTATCGAGTGCCGGAAAGAGAGCGTAATTCTGAAATTAGGCAGTCTGGATCTGGTGGATGGCACGCCGGTCGTGGATATTAAACCGTATTTACCGTTTGCCGAGGCCTTACCGAACGCCGCCGCCAGCTATGCGCAACAGGCGCCGATAGCTGAAATGCCCGTGAGTTTTACCGCTGAGGTGGCTCAACAGCTTACGACGCTGGAAAGGCGTTATCCGCAGCTACGGACATTTATTTGCGATGTGCTGGCGCAAGATCCTCGCCC [...]
+NODE	1604	568	34698	34607	0	0
+ATGTTATGCTGCCCCCAGGTCCAGAAATTCTTATCTGCCGCATCAATCCCTCCCGGCGAGGTAAGATCGTACAGCGGGACACCATCATCATCGACAGGGGTTAATAAGTATTGCTTGAATTCGTCAGACCAATCCTCATGGTTCGCCATAATAAAGCGCAGTTCGCCGGAATCCACATTTACGCCAAAAATCGCGCTCTGATGTCGACCGGAACAGATCAGCAAATTGTTGGGTTCATTAATATAGCTTTGGTTGATATGCAGCCAGTCATCCATTGATACATCCTGACCTGGCGCGCTTCCGGAAGGACGCGGCGATCTGGAATAATCCATCACATACAGCATATCGTAATAGGCGACTTCAAGTCCGGTAGATAAGTTAATAATAGAAACGCCATCTTTCCCGGTTGAGTAACCATCTGGCCTTCCATTGCTATATTCTGAAGGCGCAATCGCCAGATTGTTCTCAATGGGAAGAATGGAGTGATGGAAC [...]
+TATACGGTTTATCTTCTCGACAATGAGTTCCATCACTCCATTCTTCCCATTGAGAACAATCTGGCGATTGCGCCTTCAGAATATAGCAATGGAAGGCCAGATGGTTACTCAACCGGGAAAGATGGCGTTTCTATTATTAACTTATCTACCGGACTTGAAGTCGCCTATTACGATATGCTGTATGTGATGGATTATTCCAGATCGCCGCGTCCTTCCGGAAGCGCGCCAGGTCAGGATGTATCAATGGATGACTGGCTGCATATCAACCAAAGCTATATTAATGAACCCAACAATTTGCTGATCTGTTCCGGTCGACATCAGAGCGCGATTTTTGGCGTAAATGTGGATTCCGGCGAACTGCGCTTTATTATGGCGAACCATGAGGATTGGTCTGACGAATTCAAGCAATACTTATTAACCCCTGTCGATGATGATGGTGTCCCGCTGTACGATCTTACCTCGCCGGGAGGGATTGATGCGGCAGATAAGAAT [...]
+NODE	1605	102	5242	3978	0	0
+TGGCACCTGACGCTATTTATCGAAAATGGCCGCATTCTGGACTATCCGGGGCGCCCGCTGAAAACCGGCCTGCTGGAGATCGCGAAGATTCATCAGGGCGAG
+GCCCCGGATAGTCCAGAATGCGGCCATTTTCGATAAATAGCGTCAGGTGCCAGTTGTTGTCGATCCCTTTCACCCAACCGATACGATCGCCGCGACCGGTAA
+NODE	1606	3107	170614	169603	0	0
+CTTCCAGATTAAGCCCGCTGCGTCCCAGCGCTGAAATAATCCCGGAGGTGGCGGTTTGCCCAAGGCCAAACGGATTACCGACCGCCACGGCGAAATCGCCGACGCGGAGTTTGTCGGAATCGGCGATGGCAATTTGCGTTAACTTACTGGGATTCTGAATTTGTAACAGAGCGATATCGCTCTGGTCGTCGCCGCCGATCAGCTTCGCGTCGAATTCGCGTCCGTCATTCAGTTGAATACTGATCTTCTGTGCCTGATTAATCACATGATTATTGGTTAATACATAGCCTTTCGCGGCATCGATAATCACCCCCGAACCGAGTCCTTCAAACGGCTGGGACGGCTGGTCTGGCAGATCCTCGCCAAAGAATTTTTTAAACTCCTCCGGCACTTTTTGGCTCTGGGCGGCGGTTCCCTCGACTTTTACGCTGACGACAGCAGGCAGCACTTTCTCCAGCATAGGGGCAAGGCTTGGCAGCGTCGCCTGGCCTG [...]
+AGGACGGCGGGCAATCATCTCTTCAAAGGTCGCTTGTTTGATACCACCGATGTGGCCGGTGTGGTGATAGTACACTTTGTCAGTACGCTTGTTGCCGGTTACAGCAACTTTGTCAGCGTTCAGAACAATGATGTAATCACCGGTATCTACGTGCGGAGTGTATTCCGCTTTGTGCTTACCGCGCAGGCGACGAGCCAGTTCAGTAGCCAGACGGCCCAGAGTTTTACCGGTCGCGTCAACAACATACCAGTCGCGTTTTACGGTTTCTGGTTTAGCTGTAAAAGTTTTCATTAAAAGCTTACCCAAATAAATAAGTTACACGTTGGTGAACACCCAAACGTTTTAAATAGTTGAGGTTCACACGACAAAGTCCGGTAAACCTACCCCCTCGGATATGTTTGGCCGGCACAGAGAAAGTTTGGGAAAAAACTCTCTTGTAACGTGGGGTCGCAGGATTATAGAGAAGTCCAGGTCAAAGATCGACCCCTTTTT [...]
+NODE	1607	71	4016	4016	0	0
+AGCAGTAAACTGATGTAAAAATCAGTGGTTGTAAAAGAATTCGGTGGAGCGGTAGTTCAGTTGGTTAGAAT
+TTTTTACATCAGTTTACTGCTTAATTTGATGCCTGGCAGTTCCCTACTCTCGCATGGGGAGACCCCACACT
+NODE	1608	1198	47784	47720	0	0
+CTATAGATGAACCGCTGGCGGCGCAGGCGATCGTCGGGCTGAACGAGGATGAGCTGCATCGCCTTTCCCACCAGCCGCTGCGCTATCTCGACCACGATCACCTGGTGCCGGAGGCCAGCCACGGTCGCGATGCGGCGCTGCTTAATCTGCTGCGAACCAAAGTCCGCGAAACGGAAACCCTCGCCGCACAAGTGTTTATTACCCGTAGTTTTGAGGTCTTGCGCCCGGACATTTTACAGGCGCTGAACCGTCTCTCCAGCACGGTTTACGTGATGATGATTTTGAGCGTGGCGAAACATCCGCTGACGGTCGCCCAAATTCAACAACGGTTGGGAGAGAAGCCATGATCATTGAACGCGCCCGCGAACTGGCGGTACGCGCCCCCGCCAGAGTCGTCTTTCCCGATGCGCTGGACGAACGCGTGCTGAAAGCGGCGCATTACCTGCAACAGTGCGGTCTGGCTCGCCCCGTTCTGGTCGCCAGTCCGTTTGC [...]
+ACGGGAAAATCATCACGTTGGCGCGGCCTTGCAGCGGGCTGTCAGGCGCTTTTTGCGCGGCGACCTCCGGTACGAAAGCGGCGTCAAACTGCAATTCACCGTCCACAAGCAGTTGCGGCGCACGTTCGCGAACGAGCTCTGTCGCCTGCTGCACGTTGGCAACATTGGGGTGACGGGCGCTGCCGTTGCTTGAAAATGACAGCATCGCCACGCGCGGCTCTTCGCCGGTAATGGCCCGCCAGGTGTCGGCGCTGGCGAGAGCGATATCCGCCAGCTGCGCCGCCGTCGGCTGCGGCACTACGCTGCAATCGGCGAACCCTAATGCCGGGCCGGCATACTGCGGCAGCATCAGGAAAATAGACGACAATGTTTTGCACCCGGGTTGCAGGCCAATCACCCGCAGCCCTGCGCGCAGCACGTTCGCCGTTGACGACAGGTTGCCTGCGATACACACATCAGCCTCACCGGCGCTCACCATGGCGGCAGCGAACA [...]
+NODE	1609	34	7320	7268	0	0
+GGTTCCGTGCGGTCAGGCTTAGCAGGAGGCTGAT
+GTAGGTGGTCGTAGACCGTCGATGTTACAGCAAT
+NODE	1610	68	2799	2618	0	0
+CTTTTTTTCCTTTCACCGTTTTACCCGCCTCTTTTTCGATGGTGATGACCTCATGGCCGGCCTGACGG
+CGGTGAAAGGAAAAAAAGGCGAGGCCAGCGTCACCATTGATAAGGCTATTGATGACGTTCGTCCCGAC
+NODE	1611	165	7119	7119	0	0
+CGTCTGGCCTTCGGTGGCAATCACCTTCCAGATGTTGCCCGCCAGCGGCGCGGTGACCGGTGTGCCGGCGCCTGCCGGGGCGGTGGCAGGAGCAGAAGAGGCAGCAGGTGCAGCCGCAGTGAGCTGGCTGATATCGCCGCCGTCGCTGACCTTCACCACAAAGGC
+GGCTGCACCTGCTGCCTCTTCTGCTCCTGCCACCGCCCCGGCAGGCGCCGGCACACCGGTCACCGCGCCGCTGGCGGGCAACATCTGGAAGGTGATTGCCACCGAAGGCCAGACGGTGGCCGAAGGCGACGTGCTGCTGATTCTGGAAGCCATGAAGATGGAAAC
+NODE	1612	6	601	601	0	0
+TTTGCC
+CACTGC
+NODE	1613	52	6722	5130	0	0
+TTCCACTTCGACGGTGTAGATACCGGAGGCGGCAGGCTTCTCTGCTTTTGCC
+AAGGCAAAGCCTTTGTGGTGAAGGTCAGCGACGGCGGCGATATCAGCCAGCT
+NODE	1614	125	6848	6848	0	0
+TCAGCTTGCGGAAAACGCCATCGACGACGTCCTCACCGTGGCGCTGTTCCCGCAAATCGGCCTCAAATTCCTTGAGAACCGCAATAATCCGGCGGCGTTTGAGCCACTGCCGCAGGCGGAAGCCG
+TCAAGGAATTTGAGGCCGATTTGCGGGAACAGCGCCACGGTGAGGACGTCGTCGATGGCGTTTTCCGCAAGCTGAATGCCCTTCTCCTGCGCCTGGCGCCTGACGTCCGCTTCCAGTTCAGCCAG
+NODE	1615	51	2549	2549	0	0
+TGCAGCCGGTGGCAAAAGCAGAGAAGCCTGCCGCCTCCGGTATCTACACCG
+ACGGCTTCCGCCTGCGGCAGTGGCTCAAACGCCGCCGGATTATTGCGGTTC
+NODE	1616	51	2942	2942	0	0
+CTAAAGGCCAGCGATGCCGCAGTATTGTTATTTTTTATCAACTGCCATTCA
+GCGGTACGTTGCTGGGCTATGTCATCCCCTTATCCAGCGCGGCGATAAACT
+NODE	1617	17	750	726	0	0
+TATCAGCATGGCGGATG
+ACCCAGGCCGCTAATCC
+NODE	1618	1604	70377	69844	0	0
+TGGATAACGCGCTCTACAACGCGTTCGGACAACGCCTGATTTCAACGATTTATACCCAGGCGAACCAGTACCGCGTCGTGCTGGAACATAATACCGCCAGCACGCCGGGCCTGGCGGCGCTGGAGACGATTCGCCTGACGAGCCGCGACGGCGGCACCGTACCGCTCAGCGCGATTGCCCGCATTGAGCAGCGCTTCGCTCCGCTCTCCATCAATCATTTAGATCAGTTCCCGGTTACGACATTTTCGTTTAACGTGCCGGAGGGCTATTCGCTCGGCGATGCGGTGCAGGCGATTCTCGATACGGAAAAAACGCTCGCCCTGCCAGCGGATATTACAACGCAGTTTCAGGGCAGTACGCTCGCCTTCCAGGCGGCGCTGGGCAGCACCGTCTGGCTTATTGTCGCCGCCGTGGTGGCGATGTATATCGTGCTCGGCGTGCTGTATGAGAGTTTTATCCATCCGATCACGATTCTCTCAACGCTGCCTACGG [...]
+GTACGTTGGCGCTGTCGATCGCTTCGCGGACCTCATCCAGCGAGACGCCCTGGTTAAAGAGCGCCTGCGGGTTTAAGCCTACACGTACTGCGGGCAGGGAGCTGCCGCCGACGTCAACGTCGCCGACGCCGTCAATTTGCGCGATGGTTTGCGCCAGTTGGGTAGAGGCGAAATCATACAGTTTGCCCTGTGACCAGCTCTCCGAGGTGAGCGTTAAAATCATAATCGGCGCGTCGGACGGGTTGGCCTTGCGATAAGTCGGGCGGCTGGGCATTCCGCCTGGCAACAAGCTTTGCGCGGCGTTAATGGCGGCCTGCACGTCGCGCGCCGCACCGTTAATATCACGATCGAAATTAAATTCGAGAATAATGCGCGTACTGCCGAGCGAGCTGCTGGAAGTCATTTCATTGACGCCTGCAATGCGTCCCAAAGAACGTTCCAACGGCGTCGCCACCGACGAAGCCATGGTTTCCGGCGAGGCGCCCGGCAGCG [...]
+NODE	1619	1002	62195	62004	0	0
+AGTACGGTTATATTGGATACAATGCTACCGTGATGAATACGGTGCTGGTATTACTTGTCGTTCTGGTTTATTTAATTCAGTTATCCGGCGATCGCATCGTCAGGGCTGTCACGCATAAGTAACGTTAAACACAACACAAATACTCATTAAGGAAATAAGCATGGCGTTCAAATTCAAAACCTTTGCGGCAGTGGGTGCTCTGATTGGTTCTCTGGCACTTGCGGGTTGCGGTCAGGATGAAAAAGATCCGAATCATATTAAAGTCGGCGTAATCGTTGGCGCAGAGCAGCAAGTTGCCGAAGTCGCGCAGAAAGTCGCGAAAGAAAAATACGGCCTGGACGTGGAATTGGTGACCTTTAATGATTATGTTCTGCCTAATGAAGCGCTGAGCAAAGGCGATATCGATGCCAATGCCTTCCAGCACAAACCGTATCTGGATCAGCAAATCAAAGATCGCGGCTACAAACTGGTTTCCGTTGGTAAGACTTTTGT [...]
+ATTAAAAACTTTATTTGCGGCTTCGTACACTTCATCAGACTGGTAAGCCTGAACGAATTTTTTCACATTCTCGGCGTCTTTGTTATCTTCACGCGTCACGATCAGGTTAACGTACGGAGAATCTTTATCTTCAACGAAGATACCGTCTTTCGCTGGCGTCAGGCCAATCTGGCTGGCGTATGTCGTATTGATGACTGCTAACGCGATCTGCGCGTCATCCAGCGAACGCGGCAACTGCGGCGCTTCCAGCTCAACAATTTTCAGATTTTTCGGGTTTTCCACGATATCCAGCGAGGTAGGAAGCAGACCAACGCCGTCTTTCAGTTTAATCAGCCCTACTTTTTGCAGCAGCAGCAGGGAACGACCAAGGTTGGTCGGGTCGTTAGGCACAGCGACCTGGGAACCGTCCTTGAGCTCATCCAGAGATTTGATTTTTTTGGAATATCCTGCAATGGGATAGACAAAAGTCTTACCAACGGAAACCAGTTTGTA [...]
+NODE	1620	51	2991	2991	0	0
+TGTCCATCGCCGCAGAAAGCATAGGAATATTCAGACGAATAGTTTTCGTCA
+ACCGTGACGGAAGCGCGCCTGGCAATTGCCCTGGCCCAGGAAGGCGGCATT
+NODE	1621	198	7371	6783	0	0
+TTCCAGCACGGCGTCGTTGGTGACGTCGCCGGTACCCAGCGCCTCAACGTTGCTGGCAACCAGCGTGCCGCCGCTGATAAGGGTGCCGCCGGAATAAGTATTGGTGCCGGAAAGCGTGAGCGTCTCGTCGCCGGATTTCACCACCTGCCCGCTGCCGCTGATGGCGTTGTCGAACGTGCCGCCGGTGTTCAGCTCCAG
+GCAGGTGGTGAAATCCGGCGACGAGACGCTCACGCTTTCCGGCACCAATACTTATTCCGGCGGCACCCTTATCAGCGGCGGCACGCTGGTTGCCAGCAACGTTGAGGCGCTGGGTACCGGCGACGTCACCAACGACGCCGTGCTGGAACTGAACACCGGCGGCACGTTCGACAACGCCATCAGCGGCAGCGGTCAGGT
+NODE	1622	51	1990	1980	0	0
+ACTTCACACTGTTCCGCGCCGCGCTCGATATGGCTGATCGTTCCCGACAAC
+TGTTGATGGCGCTACCGGACGGCCAGACGCTGTGCGCCACGATACCGACTT
+NODE	1623	1167	49558	49284	0	0
+GCGTCCGGGCGCGCCAGTAATACATTTTCGCGTAGCGTCGCCGCAGGTAATTGCGGGTTTTGTCCAACCCAGGAGAGATGCTGGCGCCAGGATTCCGGCGAGAGATCGCGAAGCTCGACACCGTTAATACGCAAAGAGCCCTGATAGGAGAGAAAACCGGATAATACATTCAACAGAGAGCTTTTACCGGAACCGCTGCGTCCTACCAGGACGGCGCGTTCTCCTGCCGCTAATGAGAAATTCAGCGGCCCGGCAAGCGTTTTGCCTTCTGGCGAGGTGATAATAAGATTGACTGCGTCAATGGTTACAGGTTCGTTTTCCGCCAGCTCAACTTCGCCGCGCGCCGGGTGGGCGAGGGGCGTTTCCAGAAACGTCTTCAGACTATCCGCCGCGCCAACCGCCTGCGCCTTAGCATGATAAAACGTGCCGAGGTCGCGTAATGGCTGGAAAAACTCCGGCGCGAGGATCAAGGCGAGGAACCCGGCGGCGAGC [...]
+GGGTGGTGTGGTTGCGCGAGCGCGTCGGTTTTCATGCCGGACAACATATTCGCTTTGAGATCCGCCGTCAGGTGTTGGATCGTCTGCAGCAAGCCGGCCCAGCCTGGATTCAGGGCAAGCCCGCCGGTAGCTGGGCGACGCTGGTGTTGGAGCAGATTGACGATATGCATGACTATTATGCGCGCTATCTGCCGCAAATGGCGCTTGCCGTTTGCGTACCGCTCTTAATCGTGGCGGCGATTTTCCCGTCAAACTGGGCGGCGGCGCTGATTCTGCTGGGCACCGCCCCGCTCATTCCCCTATTTATGGCGATGGTGGGGATGGGCGCGGCTGACGCCAACCGCCGCAATTTCCTGGCGCTTGCCCGGCTAAGCGGCCATTTTCTTGACCGTCTGCGCGGAATGGAAACGCTGCGAATTTTCGGTCGTGGAGAAGCGGAAACCGAGAGCATTCGCGCAGCATCGCAGGATTTTCGTCAGCGCACGATGGAAG [...]
+NODE	1624	2468	161166	159917	0	0
+GCATTTTTTTGGGGGTATTTGAAGCTGGCTTTTTCCCGGGCATGGTTTATTATCTTGCATGCTGGTTCCCGGCTCGTGAACGCGGAAAAGTCAATAGTTTCTTCATGTTATCTATTGCTGTAGCATCGGTATTGGCTGCGCCGATGTCTGGTTGGATCATCGAGCATTTGAATACCCCGGATTATGAAGGCTGGCGCTGGCTTTTTGCTATTGAAGGTATCCCTACCGTATTCCTTGGCATCCTGACATTTTATTTACTGCCTGACAGTCCAGAAAAGGCTAAATGGCTTACGCCACAGCAGATATCGGCCTTAGTTAATAAATTACGCACTGACAATGAAACCGCAGCTGCATTAAATAAAAATACCAACTCATCCTTTCTTTCCGTAATCAAAAATCCAGTTTTGCTTCAGCTTTCTTTCGCCTACATGTTGATTCAGGCGGCTGCTCTGGCGGCAAACTATTGGTTGCCGGGGTTGGTGAAGGGATTTT [...]
+GCAAGAGGCTGGAAAATCAATACCTCCCGTGTATACCCGTCATACTTCAAGTTTCATGTGCGTTGGCGGCGAGTTACTCGGCCCATCCCTGGGCCTCGCCCCGTCGGGGTTAGCGCAAGCGCTGTTCAAGACGGTTAACCATTTTATCCTGCAACTCGAATTATTTAGGGGATATGCCGGGAGGCATAAACCATAATCAGTATCACCAGATGCTATTTAATCACATAGGCCAGATATTCTTTCACTACCTCATCGTTTAATTCCTGACCCAATCCGGGCTGTTCCGGCGCGACATAATAGCCATTTTCCGGTTGATAATCGTGGGTACAAAGTTCCCGAATAGATGCTTTCATCGCATTGGTATGATGCTCATGAATAATAAAGTTGGGAATTGCTGTTTCCATATGCAGCGCGGCTACCGTGGAAACAGGACCGCCGCAAACATGCACCTGTACAGTGGTGTCATAAATATTAGCATAGTCACAGATTTTC [...]
+NODE	1625	1000	46657	45794	0	0
+GCTGGCTTTTTAATAACCTTGATAATATGAGCCCGGAACTTCGCCTGACGCTTAAACACTACCTGGAAGATGTTCAGGCTGGCGAGCAACGCAGCAATGGAACACCACAATAACCCGCGACGCTCACAAGCCATTGCGGGCGCGCGTCTATGCGCTATGTAAGGTTCCCTGCGCCAGGCCAATTAAAAAGGCGAACTCCAGCGCGACGCCTTCGTAGGATTTAAACCGCCCCGACTTACCACCGTGCCCGGAGTCCATATCCGTACATAACAGCAGCAGACGTTGGTCCGTTTTTAGCTCGCGTAATTTTGCCACCCACTTCGCCGGCTCCCAGTATTGCACCTGAGAATCGTGCAATCCTGTTGTCACCAGCAGGTGCGGATAGTCCTGCGCTTTGACATTGTCATAAGGACTATAGCTTTTCATATAGTCATAATACTCAATATCCTGCGGGTTCCCCCACTCTTCAAACTCTCCTGTCGTTAGTGGGAT [...]
+AACACCTGTGGATCACCGCACGCGACGGTGTCGAAGTGCCGGTATCGCTGGTTTATCATCAGAAGTATTTTCGTAAAGGGCAAAATCCGCTTCTGGTTTACGGCTACGGATCTTACGGTTCCAGTATTGACGCCGACTTCAGCAGCAGCCGACTGAGCTTGCTGGATCGTGGTTTTGTTTACGCAATCGTACACGTTCGCGGCGGCGGTGAGCTGGGGCAGCAGTGGTATGAAGATGGTAAATTCCTCAAAAAGCGGAATACTTTTAATGACTATCTTGATGCCTGCGATGCCTTATTAAAACTGGGTTACGGTTCGCCGTCGCTGTGTTATGGGATGGGCGGGAGCGCGGGCGGAATGTTAATGGGCGTCGCTATCAACGAACGCCCCGAGCTTTTCCACGGCGTTATTGCCCAGGTACCCTTTGTTGATGTATTAACCACGATGCTGGATGAGTCGATCCCACTAACGACAGGAGAGTTTGAAGAGTGGG [...]
+NODE	1626	34	1604	1543	0	0
+ACCCGTCGCTCTCCGGTATCCATATCCAGTTCAA
+GTGCCTGGGTTTGATTCTGGCTGTTATCAGAGCG
+NODE	1627	2075	115701	111984	0	0
+GACGGGAAAGGCGTTCTGGTCGCGCTGCGCCCGGTGCCGGGCATTCGGGTTGAGCAGGCGTTAACATTATGTCGGCCAAACCGAACCGGCGACATTATGACCATCGGCGGCAACCGTCTGGTGCTGTTTTTATCATTCTGCCGGGTCAACGATCTGGATACCGCGTTAAACCATATTTTCCCTTTGCCGACGGGCGATATTTTCTCTAATCGTATGGTCTGGTTCGAAGATAAACAAATCAGCGCCGAGCTGGTGCAGATGCGCTTATTGTCGCCGGAACTGTGGGGAACGCCGCTACCGCTGGCAAAACGCGCCGACCCGGTAATAAATGCCGAACACGATGGCCGCATCTGGCGTCGTATTCCTGAACCCCTGCGATTGCTCGACGACACCGCGGAGCGTGCATCATGATGACCATCAGCGATATCGTGCAAATTATTCTTTTTTGCGCGCTGATTTTCTTTCCGCTGGGGTATCTGGCGCGCCATTCGC [...]
+ATGCCAAAAAATTTCACGCCCGCCGGGACGTTGGTGATGGAGGGGCTGGGAATATCGCGCAGGCCTGAGATCTGCATTCTGTCGCCCTTCAGCGCACCGCCGTGCTCCGGTACGACCACCACCATCACCTTACGCCCGGATTTCTCCAGTTCGGTAAAGAAGGCGTCCAGTTCATCGAACAGTTTCTGCGCGCGGATTTTATAATCCGCCGTTTTGCTGACGCCAGGGAAGTGGTTGCCATCGTGCAGCGGCAGCAGGTTAAAGAAAGTCGCGGAGCGGGAATTGGCTTCACGTTCTTCCCCTGTCAACCAGCGGTTCAGGACCGCCAGATCGTCATATACCGGCGAGCCGTCGAATGACAGCAGGGCGGTTGGCAGGCCGGACTGGTTCATCAGTTCGCTCTGCATACCGCCGTTTTCGCGAACTTCTTTCAGGAAGCCGCCAAATTCACCGTTATGATCCATCATCAGATGCTGAGTAAAGCCCAGTTTC [...]
+NODE	1628	1141	67564	65597	0	0
+ACGCCGCCGCCCAGGGCTTTCGCCAGACACAGAATATCAGGCTGCACATTTTCGTGCTCGCAGGCAAACATCTTGCCGGTACGCCCCATGCCGGTTTGTACTTCATCCAGAATCATCAGCGCGCCGAATTCGTCACAGAGCTTACGTACCTCTGTCAGGTATCCCTGCGGCGGCAGGATCACGCCGCCTTCACCCTGAATAGGCTCCAGAATCACGGCTGCTATCTCGTCGCCCGTTTTTTTGCCTTCGCTAAATGCCATGCTCATCGCGTCGATATTGCCAAACGGCACATGGCGGAAGCCCGGCAGTAAAGGCATAAAGGGTCTGCGGAAGGTGGATTTGGCCGTGGCGGAGAGCGCGCCCAATGATTTGCCGTGAAATGCGCCGCTGGTGGCGATAAAGGTAAACTTGCCGCGCGGCGACTGATACGCTTTTGCCAGTTTTAGCGCCGCTTCGACGGATTCGGTGCCGCTGTTACAGAAAAAGCTGTAC [...]
+CGTAAAACAAGATCTGCTCAAAATGCATCCAATTGTTAACACGTGACATTAAATGTTGTGTAAATGTGATTATTCCTGGTGTTTATCCCGATTTTCACTATGGGCTTAGACCCCCGCTAATCCCTGCAATACTTAATTCAGTATCATGTGATACACGGCCCTCTGGAGCTCATTTTGAACAGGTTACCTTCCAGCGCATCGGCTTTGGCCTGTAGCGCGCACGCACTGAATCTCATCGAGAAGCGAACGCTAAACCATGAGGAAATGAAAGCACTAAACCGAGAGGTCATTGACTACTTTAAAGAGCATGTAAATCCAGGATTTCTGGAATACCGGAAATCTGTTACCGCCGGCGGGGATTACGGAGCCGTAGAGTGGCAAGCGGGCAGTTTGAATACGCTTGTCGACACCCAGGGGCAGGAGTTTATCGACTGTCTTGGGGGGTTTGGCATCTTTAACGTGGGGCACCGTAATCCTGTTGTGGTATCCGCC [...]
+NODE	1629	5551	278498	273070	0	0
+GCGCATTAACGGTCATGCCGCTCATTTTGGGGCAAATATTATAAGGTTTTTGATGTTAAACGCTACTTTCTTTATTGCACATAGCGCCAGACGGATTGCGGAACCTGACCTACATCAAACAGGCGTCCTCCGGAAACCAGTTCGGCACGGCGGTGATCTGCAGCGCGATACATATTAACAATATCCATGTCATCAGTAAGGGTATAGTTAAGGTGGTCGAACAGTTTTTCCAGACTTTCGAGCGAACTAATTTTGCGGAATTTTAATAGATAATCCTGAACAGTCATATAAAGTTGATCCATATTAAATATAATGCCAACGGAGTAGTCACTGATAAAAAATAAACAAAACCGCACCAGTGAGAGGTCAGGGGTGCAGGTAAAAAGGGAATATTCTTACCGGTAAAGAGTCAGGCGCCACATGGCGCCTGGGGCGAAAGGTTAACGCGCTTTCCTACAACAGGCAATAAACGTCAGACCAGATAGGACATAT [...]
+TTTTTCGGCGGTACGCGTTTTGTACCTATCGTTTCCGCCGTTGTGATGGGGCTTGTCGGCCTGGTTATCCCGCTCGTCTGGCCGGTTTTTGCGATGGGAATTAGTGGACTGGGTCATATCATCAATAGCGCCGGCGACTTTGGACCGATGATTTTCGGCACCGGCGAGCGCCTGCTGTTGCCTTTTGGTCTGCACCATATTCTGGTAGCGCTGATTCGTTTCACCGAGGCGGGCGGTACGCAAGAGGTATGCGGGCATACCGTGAGCGGCGCATTGACTATTTTCCAGGCCCAACTCAGTTGCCCAACGACGCACGGCTTCTCTGAAAGCGCCACTCGCTTCTTATCGCAAGGCAAAATGCCGGCGTTTCTCGGTGGGTTGCCGGGTGCCGCGCTGGCAATGTACCACTGTGCCCGTCCAGAAAACCGCCCTAAAATTAAAGGATTATTGATTTCCGGTTTAATCGCCTGCGTTGTCGGCGGTACAACGGAG [...]
+NODE	1630	44	2265	2199	0	0
+ACTGGTATGAACAAGGTATTCCTCACGGAGGCGTTATTGGGCTT
+TGTAGTGGCTGGCCGGATACACAGGTAACTTAATTTCTGGCGGG
+NODE	1631	42	2304	2304	0	0
+TATGGTGTTTCCCTGGTGTTGCTGCAGTTGCTCAAGGTGAGT
+TTATACGACACACGAACAATTCAAAAAATTGACTGCAGACAG
+NODE	1632	656	37470	36842	0	0
+GAGCAACGTTTCGTGGAGCTGCGGATTCTGTTGTTTGATTTCCGTTGCAAGAATCGCCGCCTCAACCTGCATTTCCCGGGTCACAACATCCACCACCTGCATAAAAGAAGGTACGCCCTGGGTTAGTGCCATATCGATACGCGCGGTGCTATTCGGGATAGGTAAACCCGCATCACAGACCACCAGAGTATCAGTATGCCCCAGACGGGAAATGACCGACGAGATTTCAGAGTTGAGTACGGTGCCTTTCTTCATTTTTCTGCTCCACTAGCGAAACGTTTCGCTGGCCGCAGTGTAACCCTGGATGTGTTCATAAAACCATCATGACGTAACAGAATTGTGATCGCCGTCGAAACGTTTCGCTAGCGGAAATCAGGCGATTATCGTGTGGGAATCTACGGATTGGCCAGGCCGGGTAAGCCAACGCGGCCCCCGGCATGGTGATGGGAGGTTAAATCTCGACCTGCGTTCCTAACTCAATCACGCGGTTAG [...]
+CGCACGAGTCGTTGATTGTCGGCAAACGCCCGTGGTATTTGCGTTTGCGCGGTAAACTGTATTTGTTGCTGCAACGTAACGCTCTGCGCGCGCCGGATCAGTTCGAGATCCCGCCTAACCGCGTGATTGAGTTAGGAACGCAGGTCGAGATTTAACCTCCCATCACCATGCCGGGGGCCGCGTTGGCTTACCCGGCCTGGCCAATCCGTAGATTCCCACACGATAATCGCCTGATTTCCGCTAGCGAAACGTTTCGACGGCGATCACAATTCTGTTACGTCATGATGGTTTTATGAACACATCCAGGGTTACACTGCGGCCAGCGAAACGTTTCGCTAGTGGAGCAGAAAAATGAAGAAAGGCACCGTACTCAACTCTGAAATCTCGTCGGTCATTTCCCGTCTGGGGCATACTGATACTCTGGTGGTCTGTGATGCGGGTTTACCTATCCCGAATAGCACCGCGCGTATCGATATGGCACTAACCCAGGGC [...]
+NODE	1633	292	13071	12569	0	0
+ACCTTACTTGAGAAGCAAGGCATTGATCTGATCCAGGGTTATGACGCCAGCCAGCTCGATCCGCAGCCGGATCTGGTGATTATCGGCAATGCGATGACGCGCGGGAATCCGTGCGTGGAAGCGGTGCTGGAAAAAAACATTCCCTTTATGTCTGGTCCACAGTGGCTGCACGACTTTGTGTTGCGCGACCGCTGGGTACTGGCGGTCGCCGGTACCCACGGCAAAACCACGACCGCAGGCATGGCGACCTGGATACTGGAAGCGTGCGGGTACAAACCGGGCTTTGTGATTG
+ATGCCTGCGGTCGTGGTTTTGCCGTGGGTACCGGCGACCGCCAGTACCCAGCGGTCGCGCAACACAAAGTCGTGCAGCCACTGTGGACCAGACATAAAGGGAATGTTTTTTTCCAGCACCGCTTCCACGCACGGATTCCCGCGCGTCATCGCATTGCCGATAATCACCAGATCCGGCTGCGGATCGAGCTGGCTGGCGTCATAACCCTGGATCAGATCAATGCCTTGCTTCTCAAGTAAGGTACTCATCGGCGGATACACATTGGCGTCCGAACCCGTTACTTCATGACCAA
+NODE	1634	31	1768	1753	0	0
+CTGCAATCAGCAGCGCTTTTGTTTTATCGTG
+GGCAGTGGCCGGCAACGAAAATGACGCGTCA
+NODE	1635	2167	107937	107525	0	0
+GGAATATGCACGACCCAATAGGTCCATGCCGCAAGGTAAGCCAACCCCGGCCCCATCGTATGCTTAATCCAGGTACTGACGCCCCCTTTTCCCTCTTTGAAGGTTGAGCCCAGTTGCCCCACGATTAAGGCATAAGGAATAAAATAGAGCGCAAAAATAAACACCCAGGAGAAGACAACCACTAACCCCTGGTTAGCATAGTTATTGACAACATTGCCGAATCCCCAAACGGTAATAAACGACATCAGGGCGATGTTGTACCATCGCAACTGTTTTTCCTGCACATTCGGCATAACGCGATCCTTCGTGAACACAATGCTATTACTATAAATGAAGCGGGGGATTATGCGCGGTAAAGACGAAGAGAGAAAATAGAGGAGCGCAAAATTATAACCTTCGGCACATTTTATTTTTCAGTAAAGCAAGAAAATTATGCAGGTCAATTATTTTACGTAAAACATAAACAAAGAGTATGCAAGACTCACGTCCTGC [...]
+GGTACCGTTGCTCTCTGTCGCCTTCATTCTGATGCTGGCGGGGGAATTGATTGGCCGCGGCGTATTCTATGGGCTGCATATGACCGTGGGCATGGCGGTAGCCAGCTAACGCGTTGACGCGCATTCGGCCTGCAGAACGTGCAGGCCGAATACGCCTTTAGCCGCCATCAATTTAAGGAATATAACCGGGGCGGAGAAGGCGCATATAAATCCATAGAGAAGAAAACGAAGCTAAAGGAACCATGAAATTTTTCGACTGAACAAAACGCCGATTTTGCGGGTTAGATCAATAAAAACAAGGGGATGAATTTTTAGCCTTTCAATATATTCACGTGCAGAATAAGTAAATCAAATCGATAGTCTCAAAACTTGCGGATCGCCCATGCGGAGCCGATTGACAATGTTTTTGGCGATGGCATGATGCGCATGAAATTTGAACTTCCTCACGGTTTTTATTCATGTCCACCTATACCCGTCCCGTCATGCTTTTGC [...]
+NODE	1636	507	21523	21357	0	0
+CGCAAGCAGCACCATACGCCAGGCCATCAGCGAACCATAATCCGGTACCAGAGCAGACGCCTGCTGAATGGAACTGTGAATCGTCGCCAGTTCCGCGCCCTGCATGGCCACCATAATGGCAATAACCACCAGCGCCAGCACCGAAACCGCAGGTAACAGACGCATCGCCCAACCGTTCACGCCCGCGATGCGCAGCAGCAGATAACCCAGTAGCGGGCCCCCCATAAAGAGCGTCAGGAAGAAGCCCAGCGGCGTCCAGACGCTATACCAGGTCGGTACTGTATCGATGCTGTTATAGACGCGTACCATCATCCAGACGAAGACGACGCCCAGTACCATCGTGATAATCAGCCAGAGTGTGCGCAGTGCCGGCGGCAGCTTTTTCAGTACCGCCAGCAGCCAGCCAATCCCGCCGACCGCAAAAAACACCGAGCCGCTGGCAATTTCATTGCTCAGTGCGGAAGCACCCACGCGGTTAAGCGAGTTAAACGC [...]
+ACTGAGCAATGAAATTGCCAGCGGCTCGGTGTTTTTTGCGGTCGGCGGGATTGGCTGGCTGCTGGCGGTACTGAAAAAGCTGCCGCCGGCACTGCGCACACTCTGGCTGATTATCACGATGGTACTGGGCGTCGTCTTCGTCTGGATGATGGTACGCGTCTATAACAGCATCGATACAGTACCGACCTGGTATAGCGTCTGGACGCCGCTGGGCTTCTTCCTGACGCTCTTTATGGGGGGCCCGCTACTGGGTTATCTGCTGCTGCGCATCGCGGGCGTGAACGGTTGGGCGATGCGTCTGTTACCTGCGGTTTCGGTGCTGGCGCTGGTGGTTATTGCCATTATGGTGGCCATGCAGGGCGCGGAACTGGCGACGATTCACAGTTCCATTCAGCAGGCGTCTGCTCTGGTACCGGATTATGGTTCGCTGATGGCCTGGCGTATGGTGCTGCTTGCGGCGGCGTTGTGCTGCTGGATTGTGCCACAGTTAAA [...]
+NODE	1637	95	3817	3817	0	0
+AGGTGTTATGGCAGGCGAAACGTCGTATTCTTGCTACCGTTTTCGCCTTTGCGTGCGTGGGGTTGCTTCTGTCCTTTCTGCTGCCGCAAAAATGG
+CGAAAACGGTAGCAAGAATACGACGTTTCGCCTGCCATAACACCTCTATAAGGCTAAACAAATCGATTTCATGACTGTTGGCGGGCGGCAGTGAG
+NODE	1638	26	1308	1308	0	0
+ACCAGCCAGGCGATTGTCACACCGGC
+CAGAAGCAACCCCACGCACGCAAAGG
+NODE	1639	2724	147028	145708	0	0
+GCTTCCCGTGGAATGTTCTCCATGATCATATGTTGCAGGATACGCGCCATGATCCAGGCCTGAGCGACAATTAATACGCCACTCATGAACCCCAACAGGCGGGAAATATTCAACCACCGTTGGGAGATTACGCTTTGCTGTTTTAACCAGCGGGTCAGCTCTTTTTGACGGGTTTTATTCATTGCACGCTTAGCAGGTGAGTTATTGGAATTTCAGGCAGGGCAATGTTACAACGACGCAAAAATAAAGGCGACTTATAGTCGCCTTTTTTACTTTTGTTACTGATTTGTAAAAACTATTTGCTCGCGTCGGCCAGACCATCGAGATAGCGTTCAGCATCCAGCGCCGCCATACAGCCCGTACCTGCAGAGGTGATCGCCTGACGGTAAATATGATCCATAACGTCACCCGCCGCGAATACGCCAGGGATGCTGGTTTGTGTGGCGTTGCCATGGGTGCCGGACTGAACTTTGATATAACCATTTTCCAGCT [...]
+AAATAAAGAACAGTGTATCGGCCAGCCACGCGCCCGGCGCGCCGCCTAAATTATGGATGGGTTCATGCCAGGCGGTTTGCGACCAACTGGGGTCCGAAGGGTTAAAGCTCAACAAGGCCGCCATCAACCAGACGGCAAAAAGGGCAATAAGTATCAACAACGCTTCCAGAAGTCGGCGCCCGCTGCTTAACTTCGTCAATGTGACGTCTTTGTCTTCAGTATATTCCTGGCTCAAAAAAGGCTCTCCAGGTTCCAGGCTTTTCCCGCCCGATGCTAAAACGGACAACAGCACCGGGTTGCCCCGGCACTGTTGCTGTATGGATTAACAGGAGTGTAATCAAACTACAGCGATTTTGCACCTGTTCCGTGTTAGCGTGTCTTAATAACCAGACGATTACTCTGTTTTACCTCTTCCATCACTACGTAAGTTCGGGTGTCGTTCACACCTGGCAAGCGCAGCAACGTCTCTCCCAATAGTTTTCGATACGCTGA [...]
+NODE	1640	26	137	137	0	0
+CTTCCAAAAATCCAAGAATTTCACCT
+CAAGGATGTTTTCATTAATCAAGAAC
+NODE	1641	50	51	51	0	0
+AGGATGTTTTCATTAATCAAGAACGAAAGTTAGGGGATCGAAGATGATTA
+AGGTGAAATTCTTGGATTTTTGGAAGACGAACTACTGCGAAAGCATTTAC
+NODE	1642	44	438	438	0	0
+CTAATCATCTTCGATCCCCTAACTTTCGTTCTTGATTAATGAAA
+TCGTAGTCTTAACCATAAACTATGCCGACAAGGGATTGGCGGAG
+NODE	1643	7	57	57	0	0
+ACATCCT
+GATACCA
+NODE	1644	51	2064	1363	0	0
+TTACCCGCGCCAGGATGTACCACCAGATCGCGTGGTTTGTTGATAACCAGA
+ACCCGGACGGTACGGTACTGAACGCGTTGCTACATTATTATCCGCCGATTG
+NODE	1645	4636	265271	261863	0	0
+ATGCCTGGTTAGCCGGAGATGACATCCCCGTACCATGACGAACCAGCGCCGGATATGGCGGATACTGCGTCGTCCGGGTAGGTTTCACCAGTCCGGCACAACCGATCAGAAACAGCTGTATACTCTGCTGTATGGCATGGCGGTAACGCGGTGTCTCACATCCTTCAATCCACTGCGTCAGCACATCCAGGCAGACTGACTTACCGGTAATTTCAAAACGATTTCTGCACCATTCGGCCATATTCAATGCTCCTCTGATAAATGAAGAGGGCATTGTCCCGTGAGGTACAATGCCCTCACGGGAAAAGCGGAGTTGTCACACTCCGCCATCGTCAAAAGTCCGTCCGGTTATACAACCTTCCGGTATTTACTGGTTTCTGTCCCCATTTCGTTGATAGCTACGTCGATATTGCCCGGGAAACGATCTGTTTTAATCTTCCACAAATCGTTTTTCCAGTAACGTGCCACTGTCACATCTGGCGGAACGTTGCT [...]
+CTTTGTATACAATGTGACTATGAGTTGTCTCTGGTCTTCTTAAGCGCATCGTGCTGACGCATTGATGTGTTCACCTGACGGATTTTCCAGTCCGTCAGGGCGGAACGTCCGTCTTTTTCATTCGGAGGTTCCGATGTTTATACCACTTTTGTTACGTGCAGATATGCGCATAACGCCTTTCTTTCATCTTCTCAGACAATGTCTGTTTAATCAGAAGCGTTGTGTTCACCCACAACAGCCCTGGTCCGCTCCACAACTGAGGCATCTGTACTGCACTCCGTGGTTTATTAACGCCACCGGCAATCTGTCAGTCAGAGCCTGCATTGTTTCCACCAACGGTGCATTGCGACACTGCTTTGAGTTCCGTGAAGGCTCTCACAGCCGTGAATATCGTTACTGGTTTGAGGCACTTCCGCTGTCTGTCGTGCGGTTTAATGTCTTTACCGGTCGAATATCCGCTCGCCGCACGCTCTCTGCTGCCTCCCGTATGGC [...]
+NODE	1646	40	1804	1804	0	0
+GGTCAATATCGATATCCAGCTCATCAAATATCGCTTTGGT
+TGGGAACGTTATCCGTTTCGCAAATGCAGATGATCGAAAT
+NODE	1647	1104	51767	51187	0	0
+CGCGTCTGAATGACGCCGTCTGGTACGGCCACCAGGCCTGAGCCGAACCCCTGGGTCAGTACGCGCGTATCCGCCGGGAGGTTCACCACCACCCAGTGCCACCAGCCGGAGCCGGTCGGCGCGTCGGGATCGTAACAGGTCACGACAAAACTTTTGGTGCCCATCGGTACGTCGTCCCAGGCCAGATGCGGCGAAATATTATCGCCATCATAGCCCATACCGTTAAAAACGTGGCGATGAGGAAGTTTATCTCCATCGCGCAAATCGTTGCTGATAAGTTTCATGCGCTCTCCTTTTGACTCACCAGAAGTGTAGCCAGAAGCAGCATCGCTTACCGCTGATTAATGGCTAAAAAATGTTTCATTGTGTACCGCGTCATTGACCGCCTGGGTCAAACGGCGCAGTTGATCCGGACGAATAATGTAGGGCGGCATCAGGTAGATTAGCTTGCCGAACGGCCTGATCCAGACGCCTTGCCCGACGAAGAAGCGT [...]
+CATTTGCCCGCCTGATGGCCGCGCATCGCCATGAAATAGCCGCCGTGATTCTGGAACCTATCGTTCAGGGCGCGGGCGGGATGCGCATATATCATCCACAATGGCTCAGGCGTATTCGTAACATGTGCGATCGCGAAGGCATTCTGCTGATTGCCGATGAAATAGCCACCGGGTTTGGCCGTACCGGCAAACTGTTCGCCTGCGAGCACGCCGGGATCGCGCCGGATATTCTGTGTCTCGGCAAAGCCTTAACCGGCGGCACCATGACCCTCTCGGCAACGCTCACGACACGCCAGGTTGCAGAGACTATTAGCAACGGCGAGGCGGGGTGTTTTATGCATGGCCCGACGTTTATGGGGAATCCGCTGGCCTGCGCCGTCGCTTGCGCCAGCCTGACGCTGCTGGAAAGCGGCGAATGGCGTCAGCAGGTGGCGTCTATCGAGTCTCAGTTACGCGCTGAGTTAGCCCCCGCGCAAAGTTCGCCCTGGGTGG [...]
+NODE	1648	47	2295	2288	0	0
+AGCGCACCCGGATGTCTTTAACCTGCTGCTGCAGGTGATGGATAACG
+TCGATCTCATCCAGCAACAGCACCGCATGAGGATGCTTAATCACCGC
+NODE	1649	321	18213	18059	0	0
+AGAGGAGAATGCGGAGAACGGCACCATCTGACCATCGCTACCACGAACGTACCAGTCGTTAATATCATCCGGCAACATGCGGTATTTCGCTTCGGACATCACGTAAACTTTCTTCACACGACCGCGATCGATAAAGTCGTTTACATAGCTGCCGCCCCATGCTGCGCCCAGCGTGGTATTAATGTCGCTAATAGACACGCCCAGCGCCTGAGCTTTTTCCTGGTCGATATCGATTTTAAACTGCGGCGTATCTTCCAGACCGTTAGGTCGAACGCCGACCAGCAGATCAGGATATTTCGCCACCTCGCCGAACAACTGATT
+TCGACCTAACGGTCTGGAAGATACGCCGCAGTTTAAAATCGATATCGACCAGGAAAAAGCTCAGGCGCTGGGCGTGTCTATTAGCGACATTAATACCACGCTGGGCGCAGCATGGGGCGGCAGCTATGTAAACGACTTTATCGATCGCGGTCGTGTGAAGAAAGTTTACGTGATGTCCGAAGCGAAATACCGCATGTTGCCGGATGATATTAACGACTGGTACGTTCGTGGTAGCGATGGTCAGATGGTGCCGTTCTCCGCATTCTCCTCTTCCCGCTGGGAATATGGTTCGCCGCGTCTGGAACGCTATAACGGTCTGCC
+NODE	1650	35	1847	1847	0	0
+GGCGATATTGCATTTCCGTTTCAGTATTTCTACCT
+CTGGACAACGACAAAAATGAACTTCACTACCAGTA
+NODE	1651	124	6992	6992	0	0
+TCTGTCGGCTTATTTAACGGTTATTAAAATATTATTTAACAGTACTTATGAACAACAGCCAATATAGGGGAATTATTGGTGATAGTTTCACTGTGAAATTATTTATTGCCGCTTAGCCATTATC
+AATTCCCCTATATTGGCTGTTGTTCATAAGTACTGTTAAATAATATTTTAATAACCGTTAAATAAGCCGACAGACATTATCTTCTTTTACGATTTCATCCCACCCGATGTTATAAAAAAAGCAG
+NODE	1652	118	7861	7853	0	0
+CTTGAGTTTTTCGCCGCATTTGCGGAAAAGTTTTGTCGATCTTCAGGATCGCTCGCAAAACAACCTGTGGATAACTTTGTGTGTAAATTCTTACCATTACTTTAAAATCAGCGCGATA
+ACAGGTTGTTTTGCGAGCGATCCTGAAGATCGACAAAACTTTTCCGCAAATGCGGCGAAAAACTCAAGTTTTCCTCCTGTATGTGGCATCCTTTAACCATAATCTGTTAAACAGGCAC
+NODE	1653	43	1145	1137	0	0
+TTATGGTGTTTCCCTGGTGTTGCTGCAGTTGCTCAAGGTGAGT
+GGCACTGTTGCAAATAGTCGGTGGTGATAAACTTATCATCCCC
+NODE	1654	3611	247221	243993	0	0
+TCCCGGGCCAGAGATAAACGTTTTAAATACCAGCGCCTGTAGAACAACATCATCCCTACAGAAAGACACAATGACAGCGGAACAAAAATAAAAAGGTTTTGTAACCAGTATGCCGATAACGTTGAGAAGGGGGTTCGCACCATCAGCTGGATAGTGTGATCGGTTGAGGTGAAGCGCTGCGTTAAAAACGCCTTACCGCGCAACGTCGCAGCGCTGGTAATCGCCTCCCCTGTGCCGAATGTCAGGCTAAAGGCTGATGCTCTCTCTGCAGCCAATATCTCCATGAGCTCCTGGACATACTGCGAATCCACGATGACGAAAGCCGCTTTATTCGCTGCTACTTTTTTCACATACACCACAACAAGGCGATCGGGTCCTTCGGCCATACTACCGATAGATCGCAACCACCGTTCCGGATAAGAAGCAGGTAAAGAAAGCCCTGCCAGCCGGGAAAAATGATAGCGTTCGGTTCCTGTGACAAAGGAGCAAGTG [...]
+ATCCATTTTCATCTCAACAACTCCCTGACGATTGAAAATGGTCTGGCGTTTCAACGCCAGACCGTAGCGACAATTATTTATACGAAACGGCGTATTGAAGGGTGGCAGCGACTGTCCCAGCCTCTGCTTTCCCGGTAGAGTAATACCGCGCGGTATAAGTCGCGCTCGCTTCAGAAGCATTTGGTTCCAGCTGTAGGTCGCCGTCGCCAGTAAAGCCGCCGGTCAGATTGATTGGCTCCCCTGAAGTGTCGAGTAATTGGACTTCAACATTTTTCGCGCTGCCAGTATTACCCAGGTTACCGTTACTGGTGACCTGATTACCGACAAAGACAGTGGAAATTTTTGTTGTTTTGTCCTTAGAGCCGGTACACCCGGACAGCCCAATATCAAACGTTATTGGCCCCGCAGTTTTCCCTTGTTCTGATAAATCTTTAGTACTTACTGTTGGCAATAACACGACGGGTTTAGCCTGATTACCATTAATCACGACAG [...]
+NODE	1655	37	11975	6761	0	0
+TAGAGCACTGTTTCGGCTAGGGGGCCATCCCGGCTTA
+ATTCACGAGGCGCTACCTAAATAGCTTTCGGGGAGAA
+NODE	1656	3436	207304	204206	0	0
+GACCACGGAAAATTTCCGTATTACGCTTCACCTCTTCCCGTCCGTAGCCGCTGGCCTGGATTTTCACCAGCATGATTTCCCGCTCAACGTGCGCTCCCTGTCCCAGTTCGCTGACGCGCAGCACATCAACCAGCTTGTGCAGTTGCTTTTCAATTTGCTCAAGCACTTTTTCATCGCCTACCGTCTGGATAGTCATGCGCGACAACGTCGGATCGTCTGTCGGCGCGACGGTCAGGCTTTCAATATTATATCCGCGTTGCGAAAAGAGGCCGATAACCCGCGATAACGCCCCAGATTCGTTTTCCAGTAATACCGATAAAATCCGGCGCATCATCAGGTCCTCTCCGTTTTGCTTAACCACATTTCGTCCATCCCGCCCCCGCGAATCTGCATTGGATAGACATGCTCGCTGCCATCAACGGTGACATCGACGAACACCAGTCGGTTATTACGCACATGCTCAAGGGCTTCGCTGAGTTTACTTTCCAGCTC [...]
+TTCAGGAATTATTTCTGCCTTCAGCCAGAAAAAGGGAGTTAAGCGTGACAGTGGAGTTAAATATGCCAGAGGTCAAAACCGAAAAGCCGCATCTTTTAGATATGGGCAAACCACAGCTTCGCATGGTTGATTTGAACCTATTGACCGTGTTCGATGCGGTAATGCAAGAGCAGAATATTACGCGCGCCGCCCACACGCTGGGAATGTCGCAGCCTGCGGTCAGTAACGCCGTAGCGCGTCTGAAGGTTATGTTTAATGACGAACTTTTTGTTCGATATGGACGAGGAATTCAGCCGACTGCCCGTGCATTTCAGTTATTTGGTTCAGTCCGTCAGGCGTTGCAATTGGTGCAAAATGAATTGCCGGGATCGGGGTTTGAGCCGACCAGCAGCGAACGTGTATTCAATCTTTGCGTGTGCAGTCCGCTGGATAATATCCTGACGTCACAGATTTATAATCGTGTAGAAAAAATTGCGCCAAATATTCATGTCG [...]
+NODE	1657	11	518	488	0	0
+TCGCCGCCGCT
+TGATGAGCTTC
+NODE	1658	51	2910	2894	0	0
+TTACCTGCTGACCCTGGATATCCCGAGCTATCTGCCGGTCATGACCTACTG
+ACCTTCCTGCTCTTTGGCTTCCGCCTGGGCTTTAGCGGCGGCGAGCGCGCT
+NODE	1659	47	2937	2873	0	0
+TCGCGCAGCATATAGACTAAGGCATCGCCAGGAAATCCGGTAAAACG
+AGCGGTGCAGGCGGCAATTGTGCCAGTGTGCCTGTTAGAAAATATGG
+NODE	1660	227	13563	13408	0	0
+AGTCGCTATGCGGAAACAATATCTTTTGGTGTTATAGACCGTGAAGAAATAGGTGACACTAAAATAGCTAGTGCCAGTATCACGATTAAGGCTGAGTTAACGCTTCCACAGTTCATTCAGCGTGGTATTGAGTGGATTTGGAGCAAGATAGATAAATCGCTGGAACAGCAGATCATGACTGGCGACTGGTCAGCAGCAACCAACACTGGCGACTGGTCAGCAGCAAC
+CATGATCTGCTGTTCCAGCGATTTATCTATCTTGCTCCAAATCCACTCAATACCACGCTGAATGAACTGTGGAAGCGTTAACTCAGCCTTAATCGTGATACTGGCACTAGCTATTTTAGTGTCACCTATTTCTTCACGGTCTATAACACCAAAAGATATTGTTTCCGCATAGCGACTTTCTGCAGGAGGGTAATAACTGAAAACATCGAAAGGACATTCACAGGCGT
+NODE	1661	1965	91541	91137	0	0
+CTGTTTTACATTCTGTATGCGCAGATGCCTACCTCGCTGAACTTCTTTGCGATTAATAACGTACATCATGAAATTCTTGGATTCGCCATTAACCCGGTGAGTTTTCAGGCGCTGAACCCATTCTGGGTGGTCGTCGCCAGTCCGGTACTGGCAGCGATTTACACCCGACTGGGTAGCAAAGGCAAAGATCTGACTATGCCGATGAAGTTTACGCTCGGCATGTTCCTCTGCGCGCTGGGTTTTCTGACCGCCGCCGCCGCCGGGATGTGGTTTGCCGATGCGCAAGGATTGACGTCGCCGTGGTTTATCGTGCTGGTGTATCTGTTCCAGAGTCTGGGCGAGCTGCTGATTAGCGCGCTGGGACTGGCAATGGTCGCCGCTCTGGTGCCGCAGCATCTGATGGGCTTTATTCTGGGAATGTGGTTCCTGACCCAGGCCGCCGCCTTCCTGCTCGGCGGTTATGTGGCGACCTTCACTGCCGTACCGGAAAAC [...]
+AACTATCAGGCGGCGCTGTTTATTCTGCGTCAACTGGAGTTCGGTCTGTTTGATTTCCGTCTGCATGCGGAATTTAACCCGCAGCAAGGAGCGAAAATTCTTGAGACGCTCTTTGAAATTAAAAAACAGGTCGCCGTGGTGCCGTCACCGACATGGGGCCGCTTCCCACATGCATTCAGCCATATCTTTGCTGGCGGCTATGCGGCAGGCTACTACAGCTATCTGTGGGCCGACGTACTGGCGGCGGACGCGTATTCCCGCTTTGAGGAGGAAGGCATTTTCAACCGTGAGACCGGTCAGTCGTTCCTTGATAACATCCTGACTCGCGGTGGTTCTGAAGAGCCGATGGAACTCTTTAAACGCTTCCGTGGCCGTGAACCACAACTGGACGCGATGCTGGAGCATTACGGGATTAAAGGCTGATTTTACGTGCAAATCTGCTTAATGGATGAAACGGGCGCCACAGACGGCGCCTTATCTGTTCTGGCTGCC [...]
+NODE	1662	158	7812	7812	0	0
+TCAGTTCTCCGTTACGCCAGCGTCATCAGGGTGTCGCCCACGGAGACCGCGTCCCCGGACTTCACCGCGATGCCGCGTACCGTCCCGGCCTGCGCGGCGCGGATTTCGGTTTCCATCTTCATGGCTTCCAGAATCAGCAGCACGTCGCCTTCGGCCAC
+CGAAATCCGCGCCGCGCAGGCCGGGACGGTACGCGGCATCGCGGTGAAGTCCGGGGACGCGGTCTCCGTGGGCGACACCCTGATGACGCTGGCGTAACGGAGAACTGAAATGGAAAGTCTGAACGCCCTGCTTCAGGGCATGGGGCTGATGCACCTTG
+NODE	1663	742	22193	22128	0	0
+ACGATATGTTCTTCCATGACGGCGGCGATATCCCCACCGACCGTTTTATCGTCCCGCGTATTGAAGTGGAGCTGGCGTTTGTGCTGGCGAAACCGCTGCGCGGCCCTCACTGCACGCTGTTCGACGTCTACAACGCCACGGATTATGTGATTCCGGCGCTGGAACTGATTGACGCCCGCAGCCACAACATCGACCCGGAAACCCAGCGTCCGCGCAAAGTGTTCGACACCATTTCCGACAACGCCGCCAACGCCGGGGTGATCCTCGGTGGTCGCCCCATCAAACCAGACGAGCTGGATCTGCGCTGGATCTCCGCGCTGCTCTATCGCAACGGCGTGATCGAAGAAACCGGCGTCGCCGCAGGCGTGCTGAATCATCCGGCCAACGGCGTGGCGTGGCTGGCGAACAAGCTTGCCCCCTACGATGTCCAGCTTGAAGCCGGGCAGATCATCCTCGGCGGCTCGTTCACCCGCCCGGTGCCGGCGCGCAAGG [...]
+TCACCGTCAATCAGTAGCCAGTCGAAGCCGGCGCCCGCTAACAGTTCAGCGCTGTAACTGTTGGCAAGCCCCAGCCACAAACCGATTTGCGGACGCCCCGCTTTTAACGCGTCTTTGAAAGCATTTTTCATCGTTTTTTCCTTACACAAACCGGCAACTGATCGCGCCCATGTTGCCGTAATCGACATGGAAGGTGTCGCCCTTGCGCGCCGGCACCGGGCGGGTGAACGAGCCGCCGAGGATGATCTGCCCGGCTTCAAGCTGGACATCGTAGGGGGCAAGCTTGTTCGCCAGCCACGCCACGCCGTTGGCCGGATGATTCAGCACGCCTGCGGCGACGCCGGTTTCTTCGATCACGCCGTTGCGATAGAGCAGCGCGGAGATCCAGCGCAGATCCAGCTCGTCTGGTTTGATGGGGCGACCACCGAGGATCACCCCGGCGTTGGCGGCGTTGTCGGAAATGGTGTCGAACACTTTGCGCGGACGCTGGGT [...]
+NODE	1664	125	16378	16092	0	0
+GTGTTTTGGCGGATTGAGAGACGATTTTCAGCCTGATACAGATGACATCGACATGCTAAAGGCGTGTTGATAAACAGAATTTGCCTGGCGGCAGTAGCGCGGTGGTCCCACCTGACCCCATGCCG
+GTTTATCAACACGCCTTTAGCATGTCGATGTCATCTGTATCAGGCTGAAAATCGTCTCTCAATCCGCCAAAACACCTTCGGCGTTGTAAGGTTAAGCCTCACGGTTCATTAGTACCGGTTAGCTC
+NODE	1665	2069	110185	109485	0	0
+CTGCGTCAATAACGCCTGGTGGGACAGGCTCTTAATTTTTATTTTAAGGAACCATATATCTGGTCAACAATCCAGCCATACGTTGCCGCAGGTAATAATCCACTGACAAAAACATTCGGATTCACTTTAGGATTTGCTACCGGCGAGTGCGGCCTGTTACCTAAAATCACAATCGCCATATGATTAACCGGATCGATAGACGTCAGCGTTCCGGTCCATCCGGTATGTCCATACGTTTGCGGACTGGCTAATACCCCGAACGTGGGGGTCATTGAGGCGTTGCCGTTAACGCGCCACCCCAGACCAAAGGTAGCGTCTTCTGGCGAGCGGCGAGTAAACTGCGCAACCGTTTTGTCGTCGAATAGCTTCACGTTACCGTAGCCGCCCCCATTGAGCATGACTTGCATTAACACAGCCATATCATGGGTGTCAGAAAACAGTCCGGCGTGTCCTGAAACGCCGCCCATTGAGTACCAGGCTTTTTCGTCATGC [...]
+AACGGCAGTTCAAGCACCTCAATCTCTTCGTCCTCCACGCCGCCGCCGATGCTGGCACGCTCGCTATCATGATATTCGGCAATGAAGAAATGAATCAGTTCCGTGACGCCGCCTGGCGACATATACAGCTCAAATATCTTGCGTACCTCACCAACGTCATACCCTGTCTCTTCAATGGCCTCTTTACGGATACAGACCTCCGGCTCGTCGTTATCAAGCAGGCCAGCGCAGGTTTCAATTAACATACCGTCTTGATTACCGTTGACCCATGTCGCCACGCGAAACTGACGAACCAGAACCACGGTTTTTTTAGTTGAGTTGTAAAGCAGAATGGTTGCGCCATTCCCGCGATCGTAAACCTCACGCTTGTGACGGATAACCTCGCCATTACGACGGGCCAGGTCATAGGTAATGTTGCGCAGAGTAAAATAATTATCAGAAAGAATTTTATCCTTAATAAGCGTAATGGTTTGCGACATGCTGGCTCCAGGG [...]
+NODE	1666	14	5037	4791	0	0
+ACAGTTCGGTCCCT
+AAATGGCGAACAGC
+NODE	1667	11	4797	4671	0	0
+ATCAACGTCGT
+GGTACTAATGA
+NODE	1668	38	1637	1637	0	0
+TCCAGCCACTACACATTGCAGCTCAGTAGTTCTTCAAA
+TAAGGCGCCAACGTTGCCGGCGCTTTTCCCGCCGCCTG
+NODE	1669	3748	182691	181643	0	0
+TTGCAAAAACCAGGCTTCCCAGCCCTTTACGCCACCGGCAAGCCAGGTCTGAGGATCATCGTCAAAAAAGATTGTGCTTGCCAGCGGGGATAACTCTCCGCGACGTAACAACGCCCATTCTTCAGCGGTTGCCTGTCGGTGGCTAAACAGGGGGAGCCAGTCGGTCAACGCGCGACGGAGCGTTTCTCGCGCCAGCTCCTGTTGTGCGGCCTGCATATCTGGCTTCTCTTCAGGAAACAACAGTAAAGCCGCCGCTACGCTGTGCGCCTGAGCGCACAACGTAAACAAACGTGAAATAAGCGTTTTTGCGTACACCGGTGTTGCGCCCTGTAACAAACGACCGATCGGCGCCTCCTGCCAGATAATCCGTAGCGGGTGAGAATAGACGGTCAATCTTTGCACGAATTATTACCTTCATCGATCACCATAAACCCGGACTTACTGGTTTCGCAAACCGGACAGCACCAGTAATCAGGTAACTGGTTGAAGGGC [...]
+CAGTGTGTGGTACCGACAACCTGGAATGCCGGGCCACGTGACGATAAAGGTCAAATTGGCGCGTACGAAGCGGCGTTAATGGGGACTAAACTCGCCGTTCCCGATCAACCATTGGAGATTTTACGTACTCTGCACAGCTTCGATCCCTGCCTGGCCTGCTCCACCCATGTTATTGATAATCATGGAGGGGAGCTGGTCAGGGTTCAGGTACGATGACGACGATTCGGAGGTCTCAATGCATCTCAAAGAAATAACCAGCCAGGGGTACTATATCTATGAAGCGCCGGTCCGTTTATGGCACTGGATCACGGCGTTATCCATTGTCGTCCTGGCTGTTACAGGATATTTCATTGGCCGCCCCCTGCCATCGATTCAAGGTGAAGCGACCTTTATGTTTTGGATGGGCTGGATACGACTAATCCATTTTACCACGGCGTATATTTTTACTGTCGCGCTGCTGTTTCGTATTTACTGGGCATGTGTCGGCAATGA [...]
+NODE	1670	3	106	106	0	0
+ACC
+AAT
+NODE	1671	1923	103041	101186	0	0
+CCCTGACTTGGCATAATCAAGTTCTCATCTACCGGTAAGGTTTTCAGCAGCGAAGTATGATGGATAATATGTATCAGACGCCGCGCCTGCTGTACGTTGAGCCGTGAGCCCTTTTTGAGGGTTAAATAACAAAAGCCCAGGCTGATACCACTACTTACCTGACTCAGCGTCGCCAGCTCTTCCGGTTTGCCGATGGCAATCTGCACCGGATGGCGGCAACTGGTGCCCAGATCCTGGGCAAACAGTTGCGGGGTGATCCAGAATTCAATCGCTTTCAGCAGCGGATGGCTGAGGTGATAATGGTTATGACTTTCCAGACGCACCAGTTCCGGCGTGAACAACGCCAGGCGAAAAGGACCGGTGCCGATAAGCGGCAGGTCAGGATGCGCCAGACCGCTACAATAGCTCGCCAGACGATGCGCCAGCCAGTAATCAGGTCGGTGAAGGAGAAAGGTCAGGCACTGAGGATGCGTTACTTCGATCCGTGCGACG [...]
+CTGCCAGTGAAAGCCCTAAATGGTTGCTCAATACCGCCAGCGCCGATCCTTTATTGCACCCCAGCGGTAGCACTTCCAGGCAGTCGACGGCAGAGAAACAGAGATGAGCGCGTTCTTCCAGCGCCTCATTGAGCTGAATGCGCAAACGGATCAGATCGTCATGATCGCCGCAAAAACAGATCTTCGTCACCTGATGGGCCGGAATGCTTTTTATATCGATAACCTGATAACGAAAGCCGCTGTAGACGTGCGCCTGGAGTAGCGCGGGGATCTCCTGGCCTGTAAACCAGCCGTTGTCATTAAACACATGCATACTGGCTCGGGTATCCCAGGCATGGTGCATCACCGTATCGGCAACCTGAGGATCGAGATCCTGACGATGCAGCACGTCGCCTTCCAGCGAGTGAATTCGCGTCCCGTTACCGGTAATAAGATAAGCATCCAGTGAAAGCGTCCCCAGAATATGCCGCATTTCCAGCACATGACGACCCG [...]
+NODE	1672	16	5302	4889	0	0
+GGGGGATAACTACTGG
+TCCGCCACTCGTCAGC
+NODE	1673	5	1733	1642	0	0
+AAACG
+ACCCG
+NODE	1674	4	1418	784	0	0
+GTGG
+ACTC
+NODE	1675	213	12028	11617	0	0
+TCCATACGGCGTGATGTAGCTTGAAAGCGCAAACGGCGCGACTTTAATCACCTGCCAGGGCGCAAAAAAACGTTCATCCGACCACGGCCACAGCCATCCGACGCCTTTACCACCCGTGGTGATCGAATCCAGCAGGCTGTGCGACAACAATGAAACGGTTAAAAACAGCCAGCAGCGCACCTGCCCCGCTCGAAACCATCGTCGTCCCGCGAG
+TTTAACCGTTTCATTGTTGTCGCACAGCCTGCTGGATTCGATCACCACGGGTGGTAAAGGCGTCGGATGGCTGTGGCCGTGGTCGGATGAACGTTTTTTTGCGCCCTGGCAGGTGATTAAAGTCGCGCCGTTTGCGCTTTCAAGCTACATCACGCCGTATGGACACCAGGTCATTCTCTCAGAATTGCTGTGGGTGTGGTTGCCGGGAAGTAT
+NODE	1676	86	3024	1326	0	0
+TGGTGAATGGCGGCGGCAATCACCGGCTTTAAGCGGGTGAAGTCGTCCACGGCGGGAACGGCGCGCGGTGCGGGCGCGGCGACGGG
+CCGCTTAAAGCCGGTGATTGCCGCCGCCATTCACCATCACCGCCACCACGTTTAATTTCCCGGAGGGATCCATGACCATTGCCATT
+NODE	1677	51	1407	1367	0	0
+ACCGCCGGGCCATCGACGCCCTCACCCCGCAGCTGCCAGCCGGTATCCGCC
+TATTTTTCTTTCAGGGCTATCACCCCTTCGCGCGCGCCGGTTGCCGTCATC
+NODE	1678	1376	67729	67197	0	0
+TTTCGCCGCGTGTATCCAGCATCATCTGACACCACGCTTGCGCCAGCGGCGGCGAGGCATGACGCAGCATTTCCGCTCCGCATCCCAGCAAGAAAAGCTGCTGCGTAATCTCTCTGCCCATTGCTTCGTCCGGTTTGCGTAAACGTTGCTGTAGCTGACGTACCGCGCGGTCGTAATGGCGATCCTGACCTTTGACTTCCGCAAAAGCTTCACTCAATACGTCATAGACGCCGTGTTGTTTTGTCAGCACCCGAAGTACATCCAGACACATGATATTGCCGGAACCTTCCCAGATACTGTTCACCGGCATTTCACGGTACAGGCGAGGGAGTTCGCTCTCTTCGCAATACCCCATCCCGCCGAGAACCTCCATCGCCTCAGCCACAAAAGGGATTCCCTGCTTACAGATGGCGAATTTCGCCGCTGGCGTGAATAATCGCGCCCATAATGCCTCTTTCGCCTCGCGACGTTGCTCCCAGGCGCGCGCCAGCC [...]
+TGGATGACGTTCGCTTTCATCCCGCCTGGCACCTGTTGATGCAGGGGCTTTGCGCTAATCGGGTACATAACCTGGCCTGGGAGGAAGAGGCAAGGGCGGGAAGTTTTGTCGCCCGGGCGGCGCGTTTTGTATTACATGCTCAGGTAGAAGCGGGAACACTCTGTCCTGTCACGATGACCTTTGCCGCGACACCGTTGCTATTGCAGATGCTTCCCGCCACTTTCCATGACTGGCTGGCGCCGCTGCGCAGCGATCGCTACGATTCACATTTGCTGCCGGGCGGGCAAAAACGGGGCCTGCTCATCGGCATGGGAATGACGGAAAAGCAGGGCGGATCTGACGTACTCAGTAATACGACCCACGCGGAGCGGCTGGCGGATGATTCATATCGGCTGGTGGGACATAAATGGTTTTTCTCTGTGCCGCAAAGTGATGCGCACCTCGTGCTGGCGCAGGCAAAAGGAGGACTATCCTGTTTCTTTGTGCCGCGTT [...]
+NODE	1679	2	185	177	0	0
+CC
+AG
+NODE	1680	150	5731	5545	0	0
+GCCATCGCACTTGGTCATATGACCTTTGGCCGCGTTGTACTGCGGCGCGCCGTACGGGCAGGCCATGTGGCAATAGCGGCAACCGATACAGACCTCTTCATTCACCACCACAAAACCGTCATCGCGCTTGTGCATCGCGCCGCTCGGGCA
+TGAAGAGGTCTGTATCGGTTGCCGCTATTGCCACATGGCCTGCCCGTACGGCGCGCCGCAGTACAACGCGGCCAAAGGTCATATGACCAAGTGCGATGGCTGTTATGACCGGGTGGCGGAAGGCAAGAAACCGATTTGCGTGGAGTCCTG
+NODE	1681	51	3543	3543	0	0
+GGACATTATGGTTCAGATCCCAGAAAACCCACTTATTCTCGTAGATGGCTC
+CGTGCCTGTTTAACAGATTATGGTTAAAGGATGCCACATACAGGAGGAAAA
+NODE	1682	42	14876	11892	0	0
+AGGTTAACCGAATAGGGGAGCCGGAGGGAAACCGAGTCTTAA
+AATATAAGTCGCTGACCCATTATACAAAAGGTACGCAGTCAC
+NODE	1683	20	7076	4035	0	0
+TTGGGCGTTAAGTTGCAGGG
+TTCGGTTAACCTTGCTACAG
+NODE	1684	5	1767	956	0	0
+TATAG
+CCCTA
+NODE	1685	7	2366	1105	0	0
+ACCCGAA
+CCGGCTC
+NODE	1686	198	11919	11919	0	0
+TTTGCGAAGAGATTAGCAAGCTGAACGAGTATATGCCGCTGTACGCCTTCGCCAACAGCTACTCTACGCTGGACGTCAGCCTCAACGATCTGAGAATGCAGGTTCGCTTCTTTGAATATGCTTTAGGCGCCGCAGCCGATATCGCGGCGAAAATTCGCCAGAATACCGATGAATACATCGACAATATTCTGCCGCCGC
+GCCGCGATATCGGCTGCGGCGCCTAAAGCATATTCAAAGAAGCGAACCTGCATTCTCAGATCGTTGAGGCTGACGTCCAGCGTAGAGTAGCTGTTGGCGAAGGCGTACAGCGGCATATACTCGTTCAGCTTGCTAATCTCTTCGCAAAGCTCAAGGTTATATTTATCCCAGTCGAAAATGACGCCGCAAAGGCGGGAG
+NODE	1687	1880	91495	91137	0	0
+CGGTAAACAGCAGTCCGTCGAGATCGTCGAGCGAACTTAGCGCTTGTCCGGTCTCCCGGCCGCCCTGCATCAGATTAAGAACGCCTGCCGGTAGCCCCGCCCGTTCCCAGAGTTTTATTACCGTTTCCCCGGTCCATGGCGTTAGCTCGCTAGGTTTGAAGATCAGCGTATTGCCTGCCAGCAACGCGGGCACAATATGGCCATTCGGTAAATGGCCGGGAAAGTTATAAGGGCCGAATACCGCCAGCACACCGTGAGGACGATGGCGCAACGTCGCGGCGCCATCGACAAGTTCGCTTTTTTGTTCGCCTGTTCTGGCGTGGTAAGCCTTAATCGAGATGGCAATCTTATTGATCATCGCCGTCACTTCCGTTGCCGCCTCCCAGCGCGGTTTACCGGTTTCACGCGCGATGACCTCCGTGAGATCGGCTTTATGCGCCTCCAGCAGGGCGGCAAATTTCTCTACGATAGCCTGTCGTGCGGCAAAAGGCT [...]
+AAAAGCAGGCGTGATGGTGCTCATCGCCGGCGGCGACGTGGTGCGTTTTGCGCCAGCGTTAAATGTGAGCGACGAGGAGATAGCCACCGGGCTTGATCGTTTTGCCCTGGCGTGCGAACGCCTTCAGACGGGAGGCGCATCATGCGGGTGATTCGTCCTGTCGAACATGCGGATATCGCCGCGCTGATGCAGCTTGCAGGCAAAACGGGCGGCGGCTTAACCTCGCTACCGGCAAATGAAGCGACGCTGGTGGCCCGCATTGAACGCGCGCTAAAAACCTGGTCCGGCGAGCTGCCAAAAGGCGAACAAGGGTATGTATTCGTTCTCGAGGACAGTGAAACGGGTGAGGTTGGCGGGATCTGCGCCATTGAGGTCGCGGTCGGCCTTAACGACCCCTGGTATAACTATCGTGTCGGTACGCTGGTTCATGCCTCCAAAGAGCTGAATGTATATAACGCGTTGCCAACATTATTCCTGAGTAATGATCACACC [...]
+NODE	1688	3286	194649	193034	0	0
+GACGTTCTTTCGTTTTGGCGCAAAGATATTGAACCCATTCATGTTGTGTACGGCCTTCGGTAAAAGTCTGGTAAACATCAGGTCCAAGGCGTTTTGCTATTTCACTCATTGTCCAGTAAATAGGCTTGCGTTCAAATTTTGGCGATGTTGATGGTTGTCCCAGAATAACATATGCCATATTCCCGGCCTCTTCATGCGGGATAAGATCTTCCTGCTCAGTAGGCATCAGGTCAGGGAGTAAAATATCGCTATATTTTGCTGAGGCAGTCATGAAATGGTCAATGCAGACAATCATTTCGCACTTATTTTCATCCTGCAAAATTTCATGTGTGCGACTAATATTGCTGTTCTGATTTATCAGCGTGTTGCTGGCGTAGCACCACATGAATTTTATTGGCACATCTAGTTTGTCTTTACCTCGTACGCCATCACGAGTAGAGGTCATTTCAGTTCCGCGCTCAATAGCTTCGGTCCAGGTAAAGGAGGATATTT [...]
+AAAATCATCATAAACAAAGAAATAAATCATCAGCTTATTATCTTATTCAAGATAAGCAAAACAACGTTTATCCGGTTCCGCATGAGTATTTACATTGAAAATTGAGGAAGAAAATCTATCTCGATCACGTATACTAGTTCCATTGTATGAGATGGAGAATAAAATGCGTTCGCTTAATCGCTTGAAATGGCTGCACGCTTTTGAAGCAACTGCGCGTCATGGTAGCTTCACAGGTGCAGCCAAAGAGCTAGGCGTCACCCCGGCAGCCGTAGGACAACTGGTTCGGGCACTTGAAGACTGGGTAGGCCACCCCCTTTTACACCGTACACGTTCTGGTAAAGAAAGGCTCACGCTCGTGACTGAGGCTCAGGATGCGCTAAAAGAGATCACTCAAGGGCTCGATAGCCTTGAGTCAGGACTTAATAAACTGCGCGGTCGTCAGGCTCGATCCGTCGTCATTCTCACGGCCTCACAAGTTCTGGTGATGAACTG [...]
+NODE	1689	593	27454	27237	0	0
+TGAATTTGCTGAAGTCAGGCTGACGCTTCTGGTTAAAGGCGTTACGGCCTTCCTGCCCTTCTTCGGTCATGTAGAACAGCATGGTAGCGTTGCCGGCCAGCTCCTGCAGCCCGGCCTGACCGTCACAATCGGCATTCAGCGCCGCTTTCAGGCAACGCAGCGCCATCGGACTGTTTTGCAACATTTCGCGGCACCAGCGCACGGTCTCTTTTTCCAGATCCGCCAGCGGCACAACGGTGTTAACCAGCCCCATATCCAGCGCCTGTTGCGCATCGTACTGGCGGCACAGGAACCAGATTTCACGCGCTTTCTTCTGACCAACGATACGCGCCATATACGAAGCGCCCCAGCCGCCGTCAAAGGAGCCGACTTTCGGACCAGTCTGGCCGAAGATGGCGTTTTCCGCCGCGATGGTCAGGTCACACATCATGTGCAGCACATGACCACCGCCAATGGAATATCCCGCGACCATCGCGACAACCGGTTTTGGAC [...]
+CCGGCGTGCATCACCTGAACGTGCTGGATTTCCAGCGCCAGATTCGTACCTGTCCAAAACCGGTTGTCGCGATGGTCGCGGGATATTCCATTGGCGGTGGTCATGTGCTGCACATGATGTGTGACCTGACCATCGCGGCGGAAAACGCCATCTTCGGCCAGACTGGTCCGAAAGTCGGCTCCTTTGACGGCGGCTGGGGCGCTTCGTATATGGCGCGTATCGTTGGTCAGAAGAAAGCGCGTGAAATCTGGTTCCTGTGCCGCCAGTACGATGCGCAACAGGCGCTGGATATGGGGCTGGTTAACACCGTTGTGCCGCTGGCGGATCTGGAAAAAGAGACCGTGCGCTGGTGCCGCGAAATGTTGCAAAACAGTCCGATGGCGCTGCGTTGCCTGAAAGCGGCGCTGAATGCCGATTGTGACGGTCAGGCCGGGCTGCAGGAGCTGGCCGGCAACGCTACCATGCTGTTCTACATGACCGAAGAAGGGCAGG [...]
+NODE	1690	548	22778	22705	0	0
+CCAATACTCTGGTGGTGAATACCGGCTCGCTGGAAACCAGCGCCGAACGCTTTCAGGCCGATACGCTGGCACGTTTTGAAAATCGCGGCGTCGATCCTATGCGCCCGCTTTTGCCGCCGGAAGCCCTCTGGCTACGGGTAGATGAGCTCTTTTCCGAGCTTAAACGCTGGCCTCGCCTCCAGCTTAAAACCGACCATCTGCCGGAAAAAGCCGCCAATACCAATCTTGGTTTCCAGAAATTACCGGATTTGGCTATCCAGGCACAGCAGAAAGCGCCGCTGGACGCGCTGCGTAAATTCCTCGAATCTTTCAGCGGTCCGGTGATTTTTTCGGTGGAAAGCGAAGGACGCCGCGAAGCGCTGGGAGAGCTCCTGGCTCGCATAAAAATCGCGCCGAAGCGAATATTACGCCTGGACGAGGCGCAGGATGCGGGACGCTATCTGATGATTGGCGCCGCAGAACATGGCTTTATCGACACCCAACGCAATCTGG [...]
+TCAGCGCCAGATTGCGTTGGGTGTCGATAAAGCCATGTTCTGCGGCGCCAATCATCAGATAGCGTCCCGCATCCTGCGCCTCGTCCAGGCGTAATATTCGCTTCGGCGCGATTTTTATGCGAGCCAGGAGCTCTCCCAGCGCTTCGCGGCGTCCTTCGCTTTCCACCGAAAAAATCACCGGACCGCTGAAAGATTCGAGGAATTTACGCAGCGCGTCCAGCGGCGCTTTCTGCTGTGCCTGGATAGCCAAATCCGGTAATTTCTGGAAACCAAGATTGGTATTGGCGGCTTTTTCCGGCAGATGGTCGGTTTTAAGCTGGAGGCGAGGCCAGCGTTTAAGCTCGGAAAAGAGCTCATCTACCCGTAGCCAGAGGGCTTCCGGCGGCAAAAGCGGGCGCATAGGATCGACGCCGCGATTTTCAAAACGTGCCAGCGTATCGGCCTGAAAGCGTTCGGCGCTGGTTTCCAGCGAGCCGGTATTCACCACCAGAG [...]
+NODE	1691	1616	85584	84664	0	0
+AATAGGAATATCAGGCGGCAGAACGGCATCCAGCACATGATCATCACGTAAGTAGGCATGGGCCAGCACATAATCGCCAATCGCCTGACTTTCTCGTAACCCTCCACAGTGCCCAATCATAAGCCAGACGTCAGGCCGCAACACGGCCAAATGGTCGCAGATCGTTTTAGCATTTGAAGGGCCGACACCGATATTTACCAGCGTAATCCCCTGCCCATCTGCCGTTACCAGGTGCCAGGCGGGCATCTGATGCTTCTTCCAGGCCAGATCGGAAATAGCCTCTTCCGGCGCTTCCGTTTCTGCCGTGATCCAAATTCCGCCAGCACAGGAAAGCGCGACATAGGGACTGTCAGGATCAAGAATTTGGCTGCATCCCCAGCGCACAAACTCATCGACATAGCGGGTGTAGTTGGTAAACAAAACGAAGGGCTGAAAATGTTCAACCGGCGTACCGGTATAGTGCCGTAACCGGGCCAACGAGAAGTCAACACG [...]
+TGCTCGGGGCAATGATAAGTTATGGTAGACAATATTGAACAGCAAGTTTACGAGCTTGTACGGCCTTATGCTGGCACATATCTTTTCAACATTAAGCAAGTGGAATTAACACCAGAGATTGACCTTGATACTGATCTGAGCATTGATGAACTTGAAGCCGAAGATCTCATGAATAAATTCTTCGAGAAACTCAATGTCGAGCGAGGTAACTTCAGAATAGAAACCTATTTTCCTAATCACCCTTTTTCATGGCATCCGTTCAAGAAAACGGAGCCTGTACCCGTCCCAGATTTCACTATCAGCATGCTGATCGAGTCAGCAAAAGCCGGGAAATGGTTATATGACTAATTGTAATGAACTTAACAAATGGCTGTACCAGTACCCTTCTTTTTGAGCGATGATGGTGGCGCTAAGATAGTTCTCTTTTCTTTTTAAAGGGTTCATGTTTACTGCTGCCACCCTTACGCTAACCCCTTTAGTTTCCTCCTTTGC [...]
+NODE	1692	3	134	18	0	0
+TTA
+ACC
+NODE	1693	1246	69412	68861	0	0
+CGCTTACCAGGTATTAAATACAGAGTCGCTTATCTGCTGCTGGGTTGAAGGTCTGACAACTATTGCTGCCCCCGGCGCCTGTTAATACCGTGGTCTCCGCCTGGAACCCAGGCACCTGTAATCTTAAAAGGCGCTCGCCTGGCAGGAGCGCCGTGGAAAAGAACGTCGTTATGTGTTTCTACGCGCCAGCAGTGGGAAAATTAATCCCAACCCGACCAGGACAAAAGGCGTCACGATGTTCAACGTCAGCTGGAATGTCCACTCCGGCGTGAACGCCTCCATTTTGGGGAAAATACCGGTAAGGCAGGCAAACGCGGTGAAGGCAAAACACCATATCCCCACAGTTAACGCCAACGCCCGGTTGCGAATAAACACATATTCGGGTTTGTACTTTTGCGCCAGTCGAATGACGGCAATAAAGGCGACAAATACCCACAGATAGCGCAGCGGCATAACAACTGAGTTGAGATTAAGCAGCCATTTGTACAGGTT [...]
+GGCTGACGCTGGCATTGTTTGTTTTCTTTATGTGGGTTGCTTCCAGGGGGATGAAATCGCTAAAGGTTGTTGGGTCTGTGGCCGGAATTGCCATGTTTATCATGTCAATTTTATATGTTGTGATGGCAGTGACCGCGCCGGCAATTACAAACGTTGAAATTGCGACCACTAACATCACCTGGCAGTCATTTATTCCTCATATCGATTTTACCTATATCACCACCATCTCTATGTTGGTCTTTGCGGTTGGTGGGGCAGAGAAGATCTCGCCTTACGTTAACCAGACGCGGAATCCAGGAAAAGAATTTCCGAAGGGGATGCTCTTTTTAGCCGTCATGGTTGCGGTCTGCGCTATCCTCGGTTCGTTGGCGATGGGAATGATGTTTGATTCCCGGCATATACCTGACGATTTAATGACCAATGGGCAATATTATGCATTCCAGAAATTGGGTGAGTATTACCATATGGGTAATTCATTAATGGTGATTTATG [...]
+NODE	1694	1	144	46	0	0
+T
+A
+NODE	1695	3	833	779	0	0
+AGC
+TGA
+NODE	1696	1	280	270	0	0
+A
+G
+NODE	1697	19	3602	2289	0	0
+ACCCTCACAGGCCACCTTC
+ATAAGTAACGATAAAGCGG
+NODE	1698	9	1872	1345	0	0
+ACGCTCCCC
+TATCAGAAG
+NODE	1699	37	3737	3737	0	0
+TCGACTTCGAAGGTTCGAATCCTTCCCCCACCACCAT
+ACAGTCTGCTCCCTTTGGCCGCTCGGGAACCCCACCA
+NODE	1700	258	12337	12219	0	0
+GGGGTAATTCAAATTGTAGGTAAAGCTTGAAGATGGTGGTGGGGGAAGGATTATTCGTCGCTTCGCTCCTCACCCTACGGGCCGTTGCCGTTGGCAACGTTCTCTCGCTTTCGCTCGAGTCGAACCTTAATCGAAGGTTCTCACCCTTCCCCGACAAGTGCAAACTTCTGCATTGCTCATCGAGTTAACTACATCGCTGTAGTGAATAATGGTGGTGGGGGAAGGATTCGAACCTTCGAAGTCGATGACGGCAGATTT
+TATTCACTACAGCGATGTAGTTAACTCGATGAGCAATGCAGAAGTTTGCACTTGTCGGGGAAGGGTGAGAACCTTCGATTAAGGTTCGACTCGAGCGAAAGCGAGAGAACGTTGCCAACGGCAACGGCCCGTAGGGTGAGGAGCGAAGCGACGAATAATCCTTCCCCCACCACCATCTTCAAGCTTTACCTACAATTTGAATTACCCCTGGTGGGGTTCCCGAGCGGCCAAAGGGAGCAGACTGTAAATCTGCCGTCA
+NODE	1701	51	1999	1999	0	0
+AGCCGGTCCCGGCGGGGCGCGGCGAACTGACGGCGGCCATTCGTGAGTTTT
+TCTTCGCCATCCTTAACTACCGGCGCTTCCGCCAGCATGGCGCGGATGCGG
+NODE	1702	18	6648	691	0	0
+ACCGCAGCAATTGACGTT
+GTACTTTACAACCCGAAG
+NODE	1703	51	1615	1615	0	0
+TCCCGCCGCACGATCAACCCGGATACGTTGATTCGTAACCTGGCGGAGCTC
+AATCCAGGCGGCGACGCGCCACCCGCTCACCCAAGAGATCGCTTTCACAAA
+NODE	1704	11	4136	3522	0	0
+GGGACACGTGG
+ACGGGGCTGTC
+NODE	1705	4	327	152	0	0
+ACCC
+TGGC
+NODE	1706	16	1635	1635	0	0
+TTTTTATTGATTCCAG
+CCTTTTCAACCTGAAC
+NODE	1707	42	3001	3001	0	0
+CTGAAGCAGCCAGCGGGCAAAGAGTATGCGTTTGCCGGTCCT
+CGCTGGCGGCGACTTCATCCTGCAATGCGGCATCCAGACGAC
+NODE	1708	902	43898	37733	0	0
+CAGCGCCATGATTTTCCAGCCGTACACGTCCATCCCCAGCAGCAGCGCCACCAGCGGGGAGAGCATAATCAGCGGCAGGCCGGTCACCGCCCAGTGGGCCAGCACCTTCGCCAGCACCACCGCCGGCAGCGGCACCGGCAGCAGCATCAGCTGCTCCAGGCTGCCGTCCTGCAGGTCGTCGCGAAACAGCCGCTCCAGCGCCAGCAGCGAGGCCAGCAGCGCCGCCACCTGGATGATGCCCGGCGCGATACGCGCCAGCAGCTGCGGCTGCGGCCCGACGCTTAACGGAAACAGGGTGATGACCATCAGGAAGAACCACAGCGGGCCGGCGATGTCCGCGCCGTGGCGGAACGCCACGCGCAGCTCGAGACAGAAGACACGCCACATCACAGCCCTGCCCCCCCGCCGGTCAGCGCCAGGCGGCGGACGGTATCCGCGGCCCCCGGCAGCGGCTGGTGGGTGGTGAGAATGACCATCCCGCCCTGCGCCGTG [...]
+GCGCCCGGACGGCGGCGAGGTGTACTGGCAGGGCGAGCCCCTGCGCCGCGTGCGCGACAGCTTCCATCGCAGCCTGCTGTGGATAGGGCACCAGCCGGGGATAAAAACCCGCCTGACGGCGCGGGAGAACCTGCACTTCTTCCACCCCGGCGACGGCGCGCGTCTCCCGGAGGCGCTGGCGCAGGCCGGGCTGGCGGGATTTGAGGACGTGCCGGTCGCCCGGCTCTCGGCCGGGCAGCAGCGCCGGGTGGCGCTGGCCCGCCTGTGGCTGACCCGCGCCGCGCTGTGGGTGCTCGACGAACCGTTCACCGCCATTGACGTTAACGGCGTGGCGCGCCTCACCCGGCGGATGGCGGCACACACGGCGCAGGGCGGGATGGTCATTCTCACCACCCACCAGCCGCTGCCGGGGGCCGCGGATACCGTCCGCCGCCTGGCGCTGACCGGCGGGGGGGCAGGGCTGTGATGTGGCGTGTCTTCTGTCTCGAGCTG [...]
+NODE	1709	47	2483	2483	0	0
+TGAGCCACAACCGCTGGCTGGAGCAGGAAACCGACCGCATCTTTAAT
+TGTTAAACCATTTCATTCTTTCATCCTCGTATTAACGACGTTTCGCC
+NODE	1710	79	3483	3483	0	0
+TGTAAGCCTGTGAAGGTGTGTCGTGAGGCATGCTGGAGGTATCAGAAGTGCGAATGCTGACATAAGTAACGATAAAGCG
+GCCTCACGACACACCTTCACAGGCTTACAGAACGCTCCCCTACCCAACAACGCATCAGCGTCGCTGCCGCAGCTTCGGT
+NODE	1711	1	116	112	0	0
+G
+T
+NODE	1712	45	2496	2414	0	0
+TATCGCCAAGCGGTAAGGCACCGGTTTTTGATACCGGCATTCCCT
+TCCGTACAACGCTTATCGGTGAATGGTGCGGGAGGCGAGACTTGA
+NODE	1713	6	561	542	0	0
+GGTTCG
+ACCCCA
+NODE	1714	20	1726	105	0	0
+AATCCAGGTACCCCAGCCAT
+GTGCCTTACCGCTTGGCGAT
+NODE	1715	438	19180	18985	0	0
+AGGTATAGTTATCCACCATCATGGTGTGACGCTGGGGCAACCTTTGCAAGGCTCAGTGGCGCTGGTTGAAGCGCCAGGGGCCTCGGGGGTGCCAGTTGGCGGCTGGCCTGGCGTTAAGACGGATTTTCGTGGCGACACCACAGTGGGCAACCTGAACGTCTATCAGGAGAATACAGTCAGCCTCGATCCGTCGCGACTACCGGATGACGCAGAGGTCACACAAACCGATGTGCGCGTGGTGCCAACCGAAGGGGCGGTGGTGGAAGCGAAGTTTCACACTCGCATCGGGGCCAGGGCACTGATGACGCTGAAACGGGAAGATGGTAGCGCCATTCCTTTCGGGGCGCAGGTTACAGTCAATGGGCAGGATGGCAGCGCTGATCTGGTGGATACTGATAGCCAGGTTTATCTCACTGGTCTGGCGGATAAGGGCGAACT
+CACCAGATCAGCGCTGCCATCCTGCCCATTGACTGTAACCTGCGCCCCGAAAGGAATGGCGCTACCATCTTCCCGTTTCAGCGTCATCAGTGCCCTGGCCCCGATGCGAGTGTGAAACTTCGCTTCCACCACCGCCCCTTCGGTTGGCACCACGCGCACATCGGTTTGTGTGACCTCTGCGTCATCCGGTAGTCGCGACGGATCGAGGCTGACTGTATTCTCCTGATAGACGTTCAGGTTGCCCACTGTGGTGTCGCCACGAAAATCCGTCTTAACGCCAGGCCAGCCGCCAACTGGCACCCCCGAGGCCCCTGGCGCTTCAACCAGCGCCACTGAGCCTTGCAAAGGTTGCCCCAGCGTCACACCATGATGGTGGATAACTATACCTCCCGCGATATTGGCTCCCATCTGGCGCATCGCCCGGCTGTAGCTATAGTC
+NODE	1716	51	54	54	0	0
+GAAAGGTATTGTCGATAATCGGCGCGGTATCAGACTGCGGTACGTGGCACT
+CCCCCCTCGCAAGGTTACGGGAAATAAGAGGTCATTATGGAAAATTCTAAC
+NODE	1717	25	1147	1147	0	0
+ACCCCTGTTACCGCCGTGAAAGGGC
+TTCAAACTGATGAGGTCAAACCTCC
+NODE	1718	27	6361	4467	0	0
+CTGATGGCAACGCCTTTCACACATTAC
+CACGTTTGAGATATTTGCTCTTTAAAA
+NODE	1719	18	3688	3158	0	0
+AAGGCGTTGCCATCAGTA
+GGGATTCGAACCCCTGTT
+NODE	1720	21	4752	3083	0	0
+TCTCAAAACTGACTTACGAGT
+CGCGCAAGTGGCGTCCCCTAG
+NODE	1721	51	2085	1974	0	0
+ACTGGCTTCCACCTCCTGCACGCCCAGACGGTGGGCTACCGGCGGGGTGTA
+TATCGAAACTCTGCGCAACTACATCGACTGGACGCCGTTCTTTATGACCTG
+NODE	1722	2	315	315	0	0
+TA
+CA
+NODE	1723	662	41175	41022	0	0
+TGTAAGCGAATTGCCCGGTGGCGCTTTACCGGGCTTATGTTTCTGTCGCCTGGATAAGGCGTGAGCCACTATCCAGTCAGCGTTACTGTAGCTGAGCGGCAATGAGCGGCCAGCGGGCGTCGAAATCGTCCGTTGGGCGGTATTTAAATTCGCTACGCACGAACCGTGAAAGCATACCTTCACAGAAGGCTAACAGCTGGCTTGCCAGCAGATTTTCATCCGTCGTGTAGCCTTCGCCTTCACGCATTCTTTTTTCTCGTAGCACCTGGCGGAGCTGCGCTTCGATGCGTTCAAAAAGCTGATTAATGCGCCCCTGCAGGCGATCCTGTTCAAACATCAGCGCGTGCCCGGTAAGAATGCGCGTCAGGCCAGGGTTGCGTTCGCCAAAACCCAGAATCAGCAACACAATCAGGCGCAAACGCGTGCTGGTGTTTTTTTCATCTTTTAAAATCAGATTGATACGGGTAATCAGACTATCTTCGATAAACTCAA [...]
+TTGAATCCAGCGATGGAAGCCAACGCATCACGACGGCAAAACTGGCGGCCTCGGTCGGCGTTTCCGAAGCGGCGCTATACCGCCATTTTCCCAGCAAGACCCGCATGTTCGATAGCCTGATTGAGTTTATCGAAGATAGTCTGATTACCCGTATCAATCTGATTTTAAAAGATGAAAAAAACACCAGCACGCGTTTGCGCCTGATTGTGTTGCTGATTCTGGGTTTTGGCGAACGCAACCCTGGCCTGACGCGCATTCTTACCGGGCACGCGCTGATGTTTGAACAGGATCGCCTGCAGGGGCGCATTAATCAGCTTTTTGAACGCATCGAAGCGCAGCTCCGCCAGGTGCTACGAGAAAAAAGAATGCGTGAAGGCGAAGGCTACACGACGGATGAAAATCTGCTGGCAAGCCAGCTGTTAGCCTTCTGTGAAGGTATGCTTTCACGGTTCGTGCGTAGCGAATTTAAATACCGCCCAACGGACGATTTCG [...]
+NODE	1724	92	4346	4346	0	0
+ACCGGGGATGCCGCCTGAACCGGTGCGGAAGACGGGGTGGCAGCAGTGAGCTGGCTGATATCGCCGCCGTCGCTGACCTTCACCACAAAGGC
+TGCCACCCCGTCTTCCGCACCGGTTCAGGCGGCATCCCCGGTTGCTCCGGCAGGCGCCGGCACCCCGGTCACCGCGCCGCTGGCGGGCAACA
+NODE	1725	645	37164	37099	0	0
+TTATGAAGTTCAGTACGTAGCTATTACTGTAAATGAGATATTTCGAAATTCCTTCCATAATACTGCTGCCGCCGGTAAGGATAATTTGCGCCATCTCAACCGCGGCGAGCGCGACCACTATACCCACCACCAGATAAAAAAAACGCAAAATCTTTCGGTGGTTATGCGCGGAAATGGTTTTGAATCGGATACTCCAGACCATCCCGATAATGACCACAATATAGACAAACAGCATCGTGGACGTGACATATTTACCGGCATTCAGCGACTGGCCGAACAAGAAGTTAAATGCCGTAAGCCCCGCGCCGATGCCTAAGGCGATCATCAATTTTTTTACGCTAATGCGTTCCACAAATAACAGCAGCAACAGCGGTAAAAAAGTGACGATGGTAATGGGAAAGCTTTCCCCCAGTTGGGCAATCTTGACATTGACCAGTAGGTAGATCAGCGGCAGCAGCAGATAGCTACAGATTCTGATAGAACGAGACATAC [...]
+AGCGGCGTAAGCCAGAGATTGCTCAGGCGGTATTTGGCGCCACGCTGGACGCCTTTCGTATGCGTAGCCGCGTCGCGTACAGCGGTCAACAGATGCTGGAGGAGTATGTCTCGTTCTATCAGAATCTGTAGCTATCTGCTGCTGCCGCTGATCTACCTACTGGTCAATGTCAAGATTGCCCAACTGGGGGAAAGCTTTCCCATTACCATCGTCACTTTTTTACCGCTGTTGCTGCTGTTATTTGTGGAACGCATTAGCGTAAAAAAATTGATGATCGCCTTAGGCATCGGCGCGGGGCTTACGGCATTTAACTTCTTGTTCGGCCAGTCGCTGAATGCCGGTAAATATGTCACGTCCACGATGCTGTTTGTCTATATTGTGGTCATTATCGGGATGGTCTGGAGTATCCGATTCAAAACCATTTCCGCGCATAACCACCGAAAGATTTTGCGTTTTTTTTATCTGGTGGTGGGTATAGTGGTCGCGCTCGCC [...]
+NODE	1726	51	163	163	0	0
+GGAGCGATCCGGCACTGAAAAAAGGGTTACGCGAGAATGCCGGACTGGGCA
+CCCATCCCCGCCGCATTTTTCATCGCAGCAATGAGCGTGCCCTCCGTATAG
+NODE	1727	24	44	44	0	0
+CGGAAGCAACCCGTGCTGAAATAC
+CCTTTTTTCAGTGCCGGATCGCTC
+NODE	1728	42	17897	17419	0	0
+TGAAACATCTAAGTACCCCGAGGAAAAGAAATCAACCGAGAT
+GGTTCGCCTCATTAACCTATGGATTCAGTTAATGATAGTGTG
+NODE	1729	5	1928	1838	0	0
+TCCCC
+CCCCC
+NODE	1730	6436	389895	387540	0	0
+AACGAAAACAAGCGAAGACTTTCGGCGTGAGTTGGCTATAATACTCGCCACTTGTTTGTCATAAATTCAAAGGAAACAGACATGAGCTTACTCAACGTCCCGGCGGGTAAAGAACTGCCGGAAGATATCTACGTCGTTATCGAGATCCCGGCTAACGCAGATCCGATCAAATACGAAGTTGACAAAGAGAGCGGCGCGCTGTTCGTTGACCGCTTCATGTCCACCGCGATGTTCTATCCGTGCAACTACGGTTACATCAACCATACCCTGTCTCTGGACGGCGACCCGGTAGACGTTCTGGTCCCGACGCCGTACCCGCTGCAGCCAGGCGCCGTCATCCGTTGCCGTCCGGTTGGCGTACTGAAAATGACCGACGAATCCGGTGAAGATGCGAAACTGGTTGCCGTACCGCACACCAAACTGAGCAAAGAGTACGATCACATTAAAGATGTGAACGATCTGCCGGAACTGCTGAAAGCGCAGATCACTCAT [...]
+GAAAGGACAAGATATTCCGCAGGCGACCATCACGCTGGATGCCAAAGGGAATGAGCGGCAGATTAATCTCGATAAACTCACCGTCGCCGCTCTGGAGGGAAAAACCGAACTGAAAGCGCTGGTGGACTGGCAGCAGGCGATTAGCTGGCGTGGCGAACTGACGCTGAATGGCATCAATACCGCTAAAGAGATCCCGGACTGGCCCGCGAAGCTTAACGGCGTCATGAAAACCAAAGGCAGCCTCTACGGCGGCACCTGGCAGATGGATGTCCCGGAGCTCAAGCTGACCGGCAATGTGAAGCAGAACAGCGTTAACGTCAACGGGACGCTAAAGGGCAACAGCTACATGCAGTGGACGATCCCGGGGCTGCACCTTGCGCTGGGCCCAAACAGCGCCGATATAAAAGGCGAGCTTGGCGTTAAGGAGCTGAATCTTGACGCCGCCATCGATGCGCCGGGGCTGGATAATGCGCTGCCAGGACTGGGCGGCAT [...]
+NODE	1731	3041	157163	153422	0	0
+AGAGAACCGTGCAGATTGAACGCGCCAGCCGGGGCGAGGTGCAGAATTTCTTCGCTTAACAGGTTGCGGTAATAGAACGAAAAAATAATATCCGGCGCAAGCTCAGCGATGCGGTCGACCCAGATAGGATGGTTTACGTTATCCGGCGCATAAACCGGAATCCCTAATTCTGCCGCCAGCCGGGAGACGGAGCCAAAAAAGGTGTTTTCCGCAGGATTGTCGGCATGAGTAAAAATCGCGGCAATCTCATACCCGGCATCCAGTACGGCCTGCACGCCCTGACATCCCATATCGTGATAGGCAAAAATAACGGCTTTCATTGGTGACTTTCCTCAGTAAACGGCGTGCTTTCCGGGTAGATAACTTGTTGAACAAAATAACGGGGGCGGGCGCGGACATCGTTATAAATGCGACCGATGTATTCGCCCAGCAGTCCCATACCGATGAATTGCGCGCCGATGAAGGTAAACAGAACGGCAAAGAGCATAAATA [...]
+CCGTTGACCGTAATCCCCGTGCTGTCTGACAGGCAGGTATTATCGGAACGATCGCACCGCTCGGCATGGCGGAATAACACGACTACCGGATGCTGCTTCGCCAGCGCCGCCAGCGCTTTACCGTTAATCTGCGGTAGACCGTTACCACTCCAGGCATGTTGTGAGGTCAACCCGGCGATAATAACCAACGCCCCCGCCAGAGTCGCGAGATAGCGTTTGTTTTTAATAAAGCGTAGGGTAAATGCCAGCACATTAACCTCTCAGGCAGACAGTGCAGCTAACTTAATAGCAATACGATTAAAATGAAATTCCGCAACGGAAGACCAGGCCAGAAACATAAAAACAGCTTTTGGGCATGCATAAAATGCCTTAAACTTTCGGCGAAAGCAAAGCATAATTCCGTTAAAAATTATCTTTTTACTTCACCTTAATTTCTTAATGTTAATTTAATATTCATCCAGTAGGGTTCAGCTAAATGCGTTAAAAAATAAG [...]
+NODE	1732	30	1511	1511	0	0
+TCCCGCCGGAAGCGATTAACCCAACGGAGC
+CCCTCGATTCCTTTTATTATCTTCGGCGTT
+NODE	1733	69	2653	2653	0	0
+GCGGCGCTTCATCCACGTTTCTGTTAAAGGTTTTGCCTGCTGTTCGACAAACAGCGCGGAGCGCAGCGC
+AACGTGGATGAAGCGCCGCCTGACCCGCATCGAACATCTGGGCAGCTATGCCTGCCGTAATATTTATCA
+NODE	1734	311	13359	13359	0	0
+ATTGTTGCTTGAGGCGCAAAATCTTGGCTTAGGCGCGCAGTTCGGCGGCAAATATTTCGCTCACGATATTCGTGTCATCCGATTGCCGCGTCACGGGGCATCGTGTCCGGTAGGTATGGGCGTATCCTGTTCCGCGGATCGAAACATTAAAGCGAAGATCAACCGGGACGGGATCTGGATCGAGAAGCTGGAGCGCAATCCCGGTAAATATATTCCAGAGGCGCTGCGCCAGGCGGGAGAGGGCGAGGCGGTGCGCGTTGATCTTAACCGTCCCATGAGCGAGATACTGCAACAACTGTCGCAGTATCCGG
+TCAACGCGCACCGCCTCGCCCTCTCCCGCCTGGCGCAGCGCCTCTGGAATATATTTACCGGGATTGCGCTCCAGCTTCTCGATCCAGATCCCGTCCCGGTTGATCTTCGCTTTAATGTTTCGATCCGCGGAACAGGATACGCCCATACCTACCGGACACGATGCCCCGTGACGCGGCAATCGGATGACACGAATATCGTGAGCGAAATATTTGCCGCCGAACTGCGCGCCTAAGCCAAGATTTTGCGCCTCAAGCAACAATTCTTTTTCCAGCTCAATATCGCGGAAGGCCTGCCCGTGTTCATTGCCTTC
+NODE	1735	187	8497	8296	0	0
+CCGGTGGTTTTATTGTTCTGGCTCTGGCGCTGATGAAGGGCGACCTGCGCGCGGAAACGCAGCAGCGGGTGATCGCCTGTATGTTTGGTCTGTGGGTGCTGATGGGGATTGGCTTTATCGCCTCGATGCTGCATCTGGGCTCGCCGATGCGCGCGTTTAACTCGCTTAACCGCGTGGGTGCTTCCGC
+CAGATGCAGCATCGAGGCGATAAAGCCAATCCCCATCAGCACCCACAGACCAAACATACAGGCGATCACCCGCTGCTGCGTTTCCGCGCGCAGGTCGCCCTTCATCAGCGCCAGAGCCAGAACAATAAAACCACCGGCCACGCACTGACCAAAGACCGTGAAGATCATCAACGGCCATTCATGCCAT
+NODE	1736	4701	260400	258727	0	0
+TAGCGGAATGCCCGGCGAAGAGGTGAAACAGCGACTGCGCACGGGAACGGTCGTCACCACGGATGATCGTAACTGGGAGCTTCGTTATTCCGCATCGGCGCTGCGATTCAACCTTAGCCGCGCGGTCGCGATTGATATGGAGAGCGCGACGATTGCAGCCCAGGGCTATCGCTTCCGCGTGCCTTACGGCACGCTGCTTTGTGTTTCTGACAAACCTTTACACGGTGAAATTAAACTGCCCGGGCAGGCAAACCGGTTTTATGAGGGGGCTATTTCAGAACATTTGCAAATTGGTATTCGTGCTATTGATTTACTACGCGCAGAAGGTGATCGTTTGCACTCACGTAAATTACGCACGTTTAATGAGCCACCGTTTCGCTAACGAAATGAGCTGTCGCCTGCTGTTGGACAGGAGTGGAAGAGGCGTATTTATGTGATATGAAAAGCGGCTGAATGAAGCCTTAGCGGGAGGCGATTTTGCATCCCGCCAAG [...]
+GCCTTTGAAGGCTATACCAACGAAGAAAACTTCGCTAACCGACAACGTGTTTCTGTATTTAAATCTTTCTATGAAAGCGGCAATCTCAAAAGTATTTATCATTATAATGCACAAAATAAGCGTGACGGAAAAGCTGAAACTTACTTTGATGAAAAAGACAAAATAGCGGAAACGCTGACGTTTAAAGATGGTCAACCCGAAGGGGAATACATCGTATACCATGAAAACGGAGCCGTTGAAAGTAAACGTTACTTTGCCCAAGGTAAAATTAAAGATGGCGAATGCCCACATTTTTATGATAACGGCGTTTTAAAACAAAAACACAGCTATTTAAATCAGAAACTGGAAGGCCCGGCATTTGAATATTTCCCTGATGGGAAAATAAAGGGGAAATATTCATACAGTAAAGGCACCATTGTCGGCACTAGTACGGAATATTATTCTACCGGTAAAATTCGTGGTGTTTACCACAGAAATAACCAAGGTGAAAAC [...]
+NODE	1737	13	1241	492	0	0
+TGGAAAGCTACCC
+AACCTCATCCAGA
+NODE	1738	413	25634	25117	0	0
+AGGCGCAAATTTTAATGCCATATGACTATAGACCATATCTACGTCGTTTCCAGTGTGCATAAGTATATTTACCTTTTGATTACAGTTATTCAGAATTATCTAAACATCAGCTCATTTTTCTCAGTATATGCCTTCATTTTTCACAGGAAGTGTGCGCCCGCCCGCAAACTGGCATCCCCTTTGCGGGAAAAAGCATCAATCGCACATATGATTAACTATCGGCCCAAAGTGGTCGGATCACCTGCAAAAAAATAAAGAAGGAATGACCATGACCCTACGTAAAATTCTGGCGATGTCGTGTCTGCTACTCCCCATAATGGCTTGTGCGCATAACCTTGAAGTTAACCAACGGGTGCCGCCGGTAGGCATTGCCGATCGTGGCGAACTGACGTTGAATAAAGATGAGTTTAGTT
+ACCGGCGGCACCCGTTGGTTAACTTCAAGGTTATGCGCACAAGCCATTATGGGGAGTAGCAGACACGACATCGCCAGAATTTTACGTAGGGTCATGGTCATTCCTTCTTTATTTTTTTGCAGGTGATCCGACCACTTTGGGCCGATAGTTAATCATATGTGCGATTGATGCTTTTTCCCGCAAAGGGGATGCCAGTTTGCGGGCGGGCGCACACTTCCTGTGAAAAATGAAGGCATATACTGAGAAAAATGAGCTGATGTTTAGATAATTCTGAATAACTGTAATCAAAAGGTAAATATACTTATGCACACTGGAAACGACGTAGATATGGTCTATAGTCATATGGCATTAAAATTTGCGCCTTAAAACTGTTGGGCCGATTGTGGCACCGCAAGGGCGTAATACACTGCAGG
+NODE	1739	32	1688	456	0	0
+TATCTGAGTTCCAGTATATTGAAACAGAAACT
+ACCCTGACGCTGAAGCCATATCCGTTTCATTA
+NODE	1740	7	339	329	0	0
+TAATCAT
+ACCCGCC
+NODE	1741	122	6434	4310	0	0
+TGTACGGAATAAGCGATACTCTCGCAGCGAATATTGAGCTTAAATTCCCCATAATCGACCGTATCCGCCACCATGATTACCTGAAGCACCCAAAAGAGCGCGGTCCCGATATTCAGGAAAAT
+GGTGGCGGATACGGTCGATTATGGGGAATTTAAGCTCAATATTCGCTGCGAGAGTATCGCTTATTCCGTACAGACGATGGTTGTGAAGGGCGGCTCGGCGTTTGCGGCGTTCTTTATCGCTC
+NODE	1742	120	4569	4569	0	0
+ACTCGCACACCTTGCGGCGCCAGAACCTAAATCTGGTGCGTCTACCAATTTCGCCACTCCCGCAAAAAAGATGGTGGCTACGACGGGATTCGAACCTGTGACCCCATCATTATGAGTGAT
+CTTTTTTGCGGGAGTGGCGAAATTGGTAGACGCACCAGATTTAGGTTCTGGCGCCGCAAGGTGTGCGAGTTCAAGTCTCGCCTCCCGCACCATTCACCGATAAGCGTTGTACGGATGGGG
+NODE	1743	29	2929	2929	0	0
+ACAGGTTCGAATCCCGTCGTAGCCACCAT
+GTGCTCTAACCAACTGAGCTACGTAGCCA
+NODE	1744	1590	77368	77051	0	0
+GCAATTGTTCGTGGGCAATAGTCTGGTGGTGCGTCTGATCGACGCGCTGTCACAGTTGCCGGCCGGCTATCCGGTATACAGCAATCGCGGGGCGAGCGGCATTGACGGCCTGCTTTCCACGGCGGCGGGCGTGCAGCGCGCCAGCGCTAAATCGACGTTGGCTATCGTCGGCGATTTATCCGCGCTGTACGATCTTAACGCGCTGGCGTTACTACGTCAGGTATCCGCGCCGTTTGTGTTGATTGTGGTCAACAATAACGGCGGGCAAATCTTCTCCCTGCTGCCGACGCCGCAAAGCAAACGTGAGCGCTTTTATTTGATGCCGCAAAACGTCCATTTTGACCATGCGGCCGCCATGTTTAACCTGCGCTATCATCGCCCGGAAAACTGGGAAGAACTGGAGTCTGCGCTGGCTGGCGCGTGGCGAACCCCGGCGGCAACGGTGATTGAGCTGGTGGTAAACGATACGGATGGCGCGCAGACGCTGCAGCA [...]
+GCGCAAAACGCTTTATCGCCTTCGCCGGTCAGAATAATCACGCCCACGTTGTCGTCGTAACGGGCATCCGCCAGCGCCTGAATCATCTCTTTGACGGTCAACGGACGAAATGCATTGCGCACCTGCGGACGATTAATGGTGATTTTTGCAATACCGTCGGTGGATTTTTCATAACGAATGTCGGTGTAACCCTCCGAGCAGTCGTGCCATTCTACCGGTGCGTAAAGCATTGTTTCATCAGGATAGATCATAGTGTGTCCTTTAGTCAGAGACGCAGAATCTGAGCCAGACTGTCTACCACGCCAGCGGGGTTTTCCCGATGCGCGTTGTGTCCGGCGTTACGAATAACATGGCATGTCGCCGCCACTTCCTGCGCCAGGGCGCGGAATTTGCTGTCGCGTTCGCCACATAAATAATAAAACGGAAATGCCAGCGCGTTGAGCGCCTCGCGTAAATCCGGCTGGGCGGCAAGCGATGTCGCCTCCAGCATCG [...]
+NODE	1745	2433	132579	131871	0	0
+CCCGCTAATGCCGATAAATATCGTCACCATCGCGGAGATCGCGATCCCGACCGACAGGCTGGAGGCGATATCGTTCAGCGGCGTGCCGCGAGACGCCTCGCCAAGCGTAATCGTAAGAATAGCCCCCCACCACAGCCCTGTCGGCCCTTCCATAATGGCGCGGCGATGGCCGCAAAATGCCTGAACCAGGCAGGCCAACGCGGTGGTCAAAAAAGCGTATTGTGTGAGCATTAACAGGTTATCAGCGGGAAGATGAAAAGCGGACAGCAAGGTAGGGGGAACCACAACCGTGTTACAGAAAATAAAGAAAAACCACTGAAAGCCGGACAATACACTTTCGCGGTTAATAACAGGGAACATATCCACACCTTAAAATAGAGAATGCCCGTCGTGACGACGGGCATTAAATCACACCGGATTACTGCTGATGTTTAAGGATAAACTGACCTTTTGGCGGCACAGGGAAGCCATGCTCGATGTCATAAATAACAT [...]
+TTCTTTGCGGTGCTGGTGATTCTGATGACGACAATTTCAACCAACGCTACCGGTAATATTATACCTGCGGGGTATCAAATTGCGGCGCTTGCCCCGACAAAGCTTAACTATAAAAATGGCGTAATGATTGCCAGTATTATCAGTCTACTGATTTGCCCATGGAAATTAATGGAGAATCAGGACAGTATTTATCTGTTCCTCGATATTATCGGCGGTATGCTTGGCCCGGTAATCGGCGTAATGTTAGCTCATTATTTTGTGGTAATGCGTGGAAAAATTAATCTTGATGAGCTGTACACCGCCAGCGGTGATTACAAATATTATGATAATGGATTTAACCTGACTGCATTTTCAGTCACTCTGGTCGCAGTCATTCTGTCATTAGGCGGCAAGTTTATACCATTTATGGAGCCTTTATCCCGCGTGTCCTGGTTTGTAGGCGTAATAGTTGCGTTCGTTGCTTATGCGCTATTGAAGAAACGCACGGGTTTT [...]
+NODE	1746	3	1159	1122	0	0
+ACT
+TTA
+NODE	1747	3081	186884	184004	0	0
+ACTCGGCATGGGGATGCGCCTTTTTTATTATTGTTTATACAAATGTTTATACAGCTTTGGCTGAACAAACAAAAAAGCACCAGAACAATTCTGATGCTTTATGCCTTTAGTAACCAAAGTGTTTAGTACTCAGGAAGGTTTTCTAAGTTATCCTTGGATGTACCATTAGGTCTAGTAGTAATGTAATCAGTACCGTTGACACGGTCCTTAACCACTTTTTGACCTTTCTTCCACTTACCGTCATCACCTTTGAAAATGGTGTAAAAGGTATAGCCGCTATCGATTTTATTCACTACCCACTGCCGTGTTTCTGATGTCCCTTCTCCAACAGTATCGCCATTATCGACATGCACATACACATGGGTAATGTGAGTGTGTTTATCGTTATATCGGACTTTAGAAATAAGGTAATCAGCCCATTTATCAGTCATATTTCACCAGAAGTTTGAACAGGAAAAGCCCTGCAATACATTTATAAACAACAAAACAGAC [...]
+TTCTGTTCTGGCCTGAGTGGAATCACCAGCCGTTATGCCAGATGCATCATAACCAGAAGACCACGCAGCAAGACCCCATCACCAAAGCGAACCGTAAGGCAGGGCTGTACCGAGAGCAGGAAAAGCGTGCAGCCCATCGCAATGACTGGATCTATGAGGCCAGCAATGAATGAGAAAGACGTGGTGAATCTGTACCGATCGTTGATGCGCTGCCGTGATGGCTTCATGCGGGGGCGAAGCAGATGCAATGAGCGCCAGCCTGCGCAGCGTATGACCGAGCGTGACCGGGAGTTGCGGGAATGCTTCCGCAATCGCTGACAGGCCGCATGGACGGGGTGGGGGAGGTTTTCAGGACAAACCTCAAGGCGCCAGGCACCGCCCGCCCCCTCAAATTTTTACGCACGGTGATTTTTTTGAAAATAAAACGCGATGGAAACGAGAAATTTTTATGGCAAGACCACCAAAACCGCCAGCTTACCTTGATGAGTTAGC [...]
+NODE	1748	18	673	554	0	0
+ATTACGTCCCTGCCCTTT
+ATTCCTCGTTCAAGATTA
+NODE	1749	39	2935	1874	0	0
+GTACACACCGCCCGTCGCACCTACCGATTGAATGGTCCG
+ACGTAATCAATGCAGATTGATGATCTGCGTTTACTAGGA
+NODE	1750	51	136	136	0	0
+ACGGACCATTCAATCGGTAGGTGCGACGGGCGGTGTGTACAAAGGGCAGGG
+TTGAAGGCTCGGGATTGTGGTTGGTTTCCTTCATTGGGAGTTGATCGCGAG
+NODE	1751	51	3360	472	0	0
+ACTCGCTGGCCTGCCAGCAGACAATCGCAACAGCGCTTCGCAAACTGTAAC
+TCAGGTTGATAGAGTGGTGATCCCAGAGGTATTGATAGGTGGAATCAACGT
+NODE	1752	834	40432	40211	0	0
+GAAAGATTTGTATTGTCACTTTACAGACGCATTTCTCCCGTGCAGGTCACATTTGCCCGACACGGCGGGGCAAGAGGCTTGAACAGACGTTCATTTTCCGTAAAACTGGCGTAATGTAAGCGTTTACCCACTATAGGTATTATCATGGCGACCATAAAAGATGTAGCCCGACTGGCCGGTGTTTCAGTCGCCACCGTTTCTCGCGTTATTAACGATTCGCCAAAAGCCAGCGAAGCGTCCCGGCTGGCGGTGACCAGCGCAATGGAGTCCCTGAGCTATCACCCTAACGCCAACGCGCGCGCGCTGGCACAGCAGGCAACGGAAACCCTCGGTCTGGTGGTCGGCGACGTTTCCGATCCTTTTTTCGGCGCGATGGTGAAAGCCGTTGAACAGGTGGCGTATCACACCGGAAATTTTTTACTGATTGGCAACGGGTATCATAACGAACAAAAAGAGCGTCAGGCTATTGAACAGTTGATTCGTCATCGTTGC [...]
+CCAGCCGATCGTTAGCCGGGATATGGCTTTCCGCCAGCGCATCGTAATAGCCCCTCAGGCGATCTTCGGCATCAGAGATGGTGTGGTTGGAACAGATATACCCAATACGCGTATGACCTTGCTGGATCAGATGTCGGGTCGCCAGCCATGCCCCGTAACGGTCATCCAGCGCGACACAGCGGTGTTCTAACCCCGGTAAAATGCGGTTAATCAGCACCATGCCGGGGATTTGCTTCATTAATGAGGCCAGGTCCGCATCCGGAATCATTTTGGCGTGTACCACTAACGCTGCGCAACGATGACGAATCAACTGTTCAATAGCCTGACGCTCTTTTTGTTCGTTATGATACCCGTTGCCAATCAGTAAAAAATTTCCGGTGTGATACGCCACCTGTTCAACGGCTTTCACCATCGCGCCGAAAAAAGGATCGGAAACGTCGCCGACCACCAGACCGAGGGTTTCCGTTGCCTGCTGTGCCAGCGCGCGCGCGT [...]
+NODE	1753	51	148	148	0	0
+GAAGGCCAATCAAACCGGGAGATAGCTGGTTCTCCCCGAAAGCTATTTAGG
+CCCCCCCCAGCCACAGGTCATCCGCTAATTTTTCAACATTAGTCGGTTCGG
+NODE	1754	610	27934	27359	0	0
+AGGATCAATTTTTCGCCCGGCTCATTACCGACCTGTACCGCGACAATATGATCCTCGTTGACTTCAATCACTTTCAGTTTCGGCCCCCCCATTCGGGGCTGTACGATATCGCCTGGTGTGAACATCACGCCCTCCCGTTGAACAATGGTATAAACCCGCCTTCAGTCTACTACACACTTACCGACGCGTGGTGAAGGTACCGCTTAATGAGTACGGGTATTCCAGGGCATTTTTTCCAGTAGTCGCGCCATTCCGCAGAAGCCGGTCATGCCTGCCAGCATTAACCCGGCCCCGACAAAACCACTAATGAGGAAAAAGCCGCCGTGAACCGTATAGCCCAGAATCACCCCAAGCAACGTCAACCCGCCGGCGGCGATTTGCACCTGACGCATCAGTGGCAACGGTTGCGATTTGTCTTCTGTGACGGGCAATCCTGCCGCTTTCCATCCGTCGATGCCGCCTTCCAGTAGACTGACCTGAGCTGGGGCGGCA [...]
+GAACAGATTATTTTTCACTGTCAGTCAGGTAAACGAACCAGCAGCAATGCAGCAAAACTACAGGCCATTGCCGCCCCAGCTCAGGTCAGTCTACTGGAAGGCGGCATCGACGGATGGAAAGCGGCAGGATTGCCCGTCACAGAAGACAAATCGCAACCGTTGCCACTGATGCGTCAGGTGCAAATCGCCGCCGGCGGGTTGACGTTGCTTGGGGTGATTCTGGGCTATACGGTTCACGGCGGCTTTTTCCTCATTAGTGGTTTTGTCGGGGCCGGGTTAATGCTGGCAGGCATGACCGGCTTCTGCGGAATGGCGCGACTACTGGAAAAAATGCCCTGGAATACCCGTACTCATTAAGCGGTACCTTCACCACGCGTCGGTAAGTGTGTAGTAGACTGAAGGCGGGTTTATACCATTGTTCAACGGGAGGGCGTGATGTTCACACCAGGCGATATCGTACAGCCCCGAATGGGGGGGCCGAAACTGAAAGTG [...]
+NODE	1755	4135	215379	213638	0	0
+TGCCGCTTTTTGCTCAACCTCCGTCATCGGCGCGCCATGAGCATGATGACCATGCGCGAAGGCAGGACTATTTACCAACAGCATTCCCAGAAGCATTGTCAGTTTTTTTAAATGAATCACCAAAACGTTACCCTCATCTTTCTTAGAAAGATGATTGTTATATTATAACATTGCATTTATTTCAACAGAAACTCAGCGGCCACCGCGCAGGTGGCCTTTTTTGATATCAACTGGTCCGCCATCGAGGAATTGAACCCCGAACCTTAGAGGTAGAAGCTCTATGCTCTATCCGGTTGAGCTAATGGCGGAAGAAAAATTACGCGGCCATTTTAAGGCAGGCGTCTGCGCATTGGCTGCATGCCCGCGCGCAATTCTGGCAATGGTCGTGATCGTGCCTTGCACACTCTTCGGCGCAGGCTTTGCAGATATCCGCGCACAGGCGGCATAATTTTTGTGAGTACTCGCTTTCCAATGCCATAAATTGCGCCGCCA [...]
+GCACCGATAATCTGGGGCGTGATGTATGGCTTCGTTGCTTTCAGGGGGCCTTCACCAGTTTACAAATTGGCGTTGGCGCCGCGCTGTGCAGCGGCGTTATCGCGCTAGTGATGGCGGCAGTGGCGCGCATTCATCCCCGGCTGGACCTCCTGATGCGGCTGATAACCGATGCCATGCTCGCCATGCCGCATTTACTTTTGCTGATCCTTATCTGTTTTACGCTCGGCGGCGGTAAAAGCGGCGTCATTGCGGCCGTGGCGTTAACGCACTGGCCCCGTCTGGCGCTGATTCTGCGCGCCGACGCGGAGCGGGTAGCGCAGAGTGACTACCTGACACTGACCTATCGTCTGGGGCATGGACACCTTTATTGCTGGCGATATCACTATTTTCCGGCGTTATTGCCGCAATGGTTGACGGGAACGTTATTGATGTTTCCTCATGCGGTATTGCACAGCGCGGCGTTAAGTTTTCTGGGGTTTGGGCTGGCGCCGC [...]
+NODE	1756	157	7153	7153	0	0
+GCTAAAAGCAGGGTGGTTCGAATACCGCTGGCGACAAACCGGCGAGCAACAATTTATCAGGCTGGCCGATGAAACCTGGCGCCAGCTACGTATGAAAGGATAAGGAGAGCAGTGTGGGCCCAGTAATGTTGAATGTCGAAGGATGTGAGCTGGATGC
+CTCCTTATCCTTTCATACGTAGCTGGCGCCAGGTTTCATCGGCCAGCCTGATAAATTGTTGCTCGCCGGTTTGTCGCCAGCGGTATTCGAACCACCCTGCTTTTAGCATAATGACCCAGGGGTGCCATAATCGTATCTGTCGCCATAGCTGCCGGGC
+NODE	1757	238	13706	13603	0	0
+CCGGATGATCTGCGAGCGCAAATAGAGCCGTTACATGCCATGGTTAAAGCCATGGGGTTACCTCTGCTGGCAGTCTCTGGCGTAGAAGCGGATGACGTTATCGGTACACTGGCGCGAGAAGCGGAGAAGGTGGGGCGTCCGGTATTAATCAGCACCGGCGATAAAGATATGGCACAGTTGGTGACGCCGAATATTACGCTGATCAACACCATGACTAACACCATCCTCGGCCCGGATG
+GGCGTCACCAACTGTGCCATATCTTTATCGCCGGTGCTGATTAATACCGGACGCCCCACCTTCTCCGCTTCTCGCGCCAGTGTACCGATAACGTCATCCGCTTCTACGCCAGAGACTGCCAGCAGAGGTAACCCCATGGCTTTAACCATGGCATGTAACGGCTCTATTTGCGCTCGCAGATCATCCGGCATCGGAGGACGATGCGATTTGTAGTGTTCAAAGAGCTCATCACGGAAGG
+NODE	1758	51	2811	2811	0	0
+AAGTCGTTAATAAGTACGGCGTGCCGCCTGAGCTGATTATCGACTTTCTGG
+TCATCCGGGCCGAGGATGGTGTTAGTCATGGTGTTGATCAGCGTAATATTC
+NODE	1759	51	2049	1600	0	0
+GCCGCCATATCTTCCGTCATCAGATCATAGCTAAACGTTCCTTGCGGGTTA
+CTTTTGTTAAAGCGCTGAAGCTGGAAAAACCGCTGGTGATGGGTTACAGCG
+NODE	1760	260	13051	12892	0	0
+AAGTGACTGGCCCGGATTTCCGGGCCAGTTTTTACAGCGAAGAATCGTAATAAAAATGGATATCCAGGTTTTCATCGGGCTTGAAGTTTTTTTGTTTAAACTCCAGGGTTAACGGATCAATTTGTTTTAGCGGGTAATTAAAGCAGGGGACAACCACTTCAGTCTCATCCTTCTTATGAATGCGCAAGGTAAAGTCGCCAATGACACCCTCTTTCCAGTTAGCGCCAGTTTTCAGAATATAGCCCAGATAGCCCCAGCCG
+AGGGTGTCATTGGCGACTTTACCTTGCGCATTCATAAGAAGGATGAGACTGAAGTGGTTGTCCCCTGCTTTAATTACCCGCTAAAACAAATTGATCCGTTAACCCTGGAGTTTAAACAAAAAAACTTCAAGCCCGATGAAAACCTGGATATCCATTTTTATTACGATTCTTCGCTGTAAAAACTGGCCCGGAAATCCGGGCCAGTCACTTTTACACCGCAGTCTGGAAAATCACGCCGTCCGCTTTCTCAGTGTACTGAG
+NODE	1761	3449	174985	173721	0	0
+ACCGTTACCGCCAGCCGTAAGATTCCCTACCACAACCACCGGTACCGGCGCTCGCCAGGCGCGTTTAAAACCAAGCTTATAGCTCAGACGAATCGCCCCGCTCACCAGGCCATACAGCCAGGAGAGCGGCAACAGTAACCGCCATAGCGGGGATTCACCCGACCAGATACGCGCAATCATTGGCCAAATTGCATCTTATGTAGCTGGGCGTAAACGCCGTGTTGCGCCAGCAGCTCGCTATGAGTGCCGCGCTCAACGATAATACCGTCTTCGACTACAACGATCTCATCCGCCTGTTCGATGGTGGAGAGACGGTGCGCAATCACCAGAGAGGTACGGTTTTTCTGCAGCTCATCCAACGCTGCCTGAATCGCACGTTCAGACTCGGTATCCAGCGCAGACGTAGCTTCATCAAGGATCAGAATCGGGCTGTCGCGCAGTAAGGCGCGGGCAATCGCGATACGCTGGCGTTGACCGCCGGAAAGCAGTACG [...]
+CTTACAACCGCCTGCGCTGCGCACGGTGGCGGCACTGAGCGTCTGGGGAGGATTAAAATTAAGCGGACGACAGTGGAGCGGCTGGCAAGTCTGGTGCTGCTGTCTGGCCGCGATTATTTTCGCCGATCCTGTGGCGGTTATATCACAAAGTCTTTGGCTGTCAGCATTTGCGGTTGCCGGCCTGTTATTCTGGTATCAGTGGTTTCCTGCGCCAAACGGAAATTTTCCACGGGGCTTACGCTGGTTGCTTAACCTGCTTCACCTACAGGCAGGCATTACACTTCTGCTTTTGCCTCTCCAGGTGGCGCTTTTTCATGGCATAAGCGTTACCGCAATGCTGGCGAATCTTTTTGCCGTACCCTGGGTCACATTTGTGACGGTTCCGCTCATCCTGGCGGGAATGATTCTGCATTTAACCGGGCCGTTTTTTCTTGAAGAGTGGGTATGGTACCTGACCGATCGCGCGTTAGCCGCGCTATTTTACCTGTTGAA [...]
+NODE	1762	600	25935	25628	0	0
+TGCCACTAGCGTTGATGCGCTGGGTACAGGCAACGTCACCAACAACGCCACGCTGGCGCTGAACACTGGCGGTGACTTCATCAATAACATCGGCGGTACGGGCCGCGTGGAAAAATCCGGCGACGACGCGCTCACGCTCTCCGGCAGCAATACTTATACCGGCGGCACCCTCATCAGCGGCGGCACGCTGGTCGCCAACGATGTAAACGCGCTGGGTACTGGCGACGTTACCGACAACGCCGCGCTGATGCTGAACACCGGCGGTGACTTCATCAATAACATCGGCGGTACGGGCCGCGTGGAGAAATCCGGCGACGACACGCTCACGCTCTCCGGCAGCAATACTTACACCGGCGGCACCCTTATCAGCGGCGGCACGCTGGTCGCCAACGACGTGAACGCGCTGGGTACTGGCGACGTTACCGACAACGCCACGCTGGCGCTGAACGCTGTCGGCGATTTTAACAACGCCATCGGTGGCAGCGGCAAGGT [...]
+GCCGCCAGTGTAAGTATTGCTGCCGGAAAGCGTGAGCGTGTCGTCGCCGGATTTTTCCACCTTGCCGCTGCCACCGATGGCGTTGTTAAAATCGCCGACAGCGTTCAGCGCCAGCGTGGCGTTGTCGGTAACGTCGCCAGTACCCAGCGCGTTCACGTCGTTGGCGACCAGCGTGCCGCCGCTGATAAGGGTGCCGCCGGTGTAAGTATTGCTGCCGGAGAGCGTGAGCGTGTCGTCGCCGGATTTCTCCACGCGGCCCGTACCGCCGATGTTATTGATGAAGTCACCGCCGGTGTTCAGCATCAGCGCGGCGTTGTCGGTAACGTCGCCAGTACCCAGCGCGTTTACATCGTTGGCGACCAGCGTGCCGCCGCTGATGAGGGTGCCGCCGGTATAAGTATTGCTGCCGGAGAGCGTGAGCGCGTCGTCGCCGGATTTTTCCACGCGGCCCGTACCGCCGATGTTATTGATGAAGTCACCGCCAGTGTTCAG [...]
+NODE	1763	203	9463	9463	0	0
+TGGCGGCAAAACGTGGTTTAACGCCACACAGAGCTCGACGTCGGGAGTCTGGGATTACACCTGGCTGGCTGATGTGGGAGAGGGGAAGCATACCCTGACAGTGGAGGCGACCGACAAGGCGGGAAACAAGGCAACACAGCAACTGGAGTTCACCATCGACACCCTACTGTCAGAGCCGACTATCGCTCTGGACAGCACGGACG
+GTGAACTCCAGTTGCTGTGTTGCCTTGTTTCCCGCCTTGTCGGTCGCCTCCACTGTCAGGGTATGCTTCCCCTCTCCCACATCAGCCAGCCAGGTGTAATCCCAGACTCCCGACGTCGAGCTCTGTGTGGCGTTAAACCACGTTTTGCCGCCATCAATGCTCAGGCGCACCACGTTGACATCCGTCGGTACCGTCACCTGGAA
+NODE	1764	159	7905	7905	0	0
+GAAAAGCTGAAAAAAGCGCCAGTTTTTGCTTTCGACACGGAGACCGACAGTCTGGATAATATCGCCGCCAACCTGGTGGGCCTCTCGTTTGCTATCGAACCTGGCGTTGCCGCGTATGTACCTGTCGCGCATGATTATCTGGACGCTCCGGATCAAATC
+CAACGCCAGGTTCGATAGCAAACGAGAGGCCCACCAGGTTGGCGGCGATATTATCCAGACTGTCGGTCTCCGTGTCGAAAGCAAAAACTGGCGCTTTTTTCAGCTTTTCAATCCAGCTTTCCAGCGTAACGTCGTCCAGAATCGTGACATAATTTTCAT
+NODE	1765	51	1829	1829	0	0
+TCCCGCCAGCGTGCTCTGGAACTGCTGAAGCCGCTGCTGGAAGATGAAAAA
+AGATTTGATCCGGAGCGTCCAGATAATCATGCGCGACAGGTACATACGCGG
+NODE	1766	51	2541	1420	0	0
+TATCCATACCATAATGAATACTGGCTCCGGCAATAATGCACACGCTGGCTA
+ACCTGGAACGTGCTGGATATTGTGCAGCGCTGGGACAGTCTGTTTGCTTCA
+NODE	1767	185	11231	11156	0	0
+CGGCGAATAATATATACGCTACGATAAGCCCCAGCGTTTGTCCCAATGCCTGAGCGCGAAATGAATGCGCGTTTTGCGTGAAATCGGACGCGCTCACCGCTGGCGCAGCCCAGACGGCGACTACGGCGTTAATCACCACCAGGAACAGAAAGCCGCTGTGCTCTGCTTTTTGCACGCCTGAAGGC
+TGATTAACGCCGTAGTCGCCGTCTGGGCTGCGCCAGCGGTGAGCGCGTCCGATTTCACGCAAAACGCGCATTCATTTCGCGCTCAGGCATTGGGACAAACGCTGGGGCTTATCGTAGCGTATATATTATTCGCCGTAGCCAGCGTGTGCATTATTGCCGGAGCCAGTATTCATTATGGTATGGAT
+NODE	1768	811	51318	51203	0	0
+GCAACGTATTGCTTCAGCTTAAAAATAATTATATCTACTGTTTCTTTATTTTATATTTATTTGTTCCTCATAGCTAAACCCATAACAACGTTATCCGATGCGTGAAAAGAGGGATTTATGGAACATCAAAGAGAGCTATATCAGCAGCGCGGTTATAGCGAAGACTTATTACCTAAAACAGAAACCCAACGAAACTGGAAGGCATTTAACTATTTCACCTTATGGATGGGATCTGTACATAACGTGCCAAATTACGTTATGGTCGGCGGTTTTTTTATACTGGGGCTATCAACATTTAATATCATGTTGGCCATTATTATCAGCGCATTATTTATTGCGGCGGCGATGGTAATGAATGGCGCGGCAGGCAGCAAATATGGCGTTCCTTTTGCTATGATATTGCGAGGTTCTTACGGCGTCCGCGGCGCGCTATTCCCTGGATTATTACGAGGGGGAATCGCAGCAATCATGTGGTTCGGCTTGCAGTGTTAC [...]
+AGATAGTCCAGAATCGGGCCAATGCCGACCAGCGATATTGCCCAAATAGCCATGCCGCCAAAGACAATGTAAATACATGGATTGAGGATAGCGGTAAATTTATTTAATACTTTACCACCGCCAAAACCGATGCCAACGTTAATAATCCAAAAAATTAGAAAAGTAATTAGTCCTGGCAGTGAAAGACCCAGCAGCTTGAAATCTCCGCCTAATGTCAGAAATCCTGGCCAGATCTTCCCAATCAAAATAAGAAATGCCAGCGATCCCGCGTAACACTGCAAGCCGAACCACATGATTGCTGCGATTCCCCCTCGTAATAATCCAGGGAATAGCGCGCCGCGGACGCCGTAAGAACCTCGCAATATCATAGCAAAAGGAACGCCATATTTGCTGCCTGCCGCGCCATTCATTACCATCGCCGCCGCAATAAATAATGCGCTGATAATAATGGCCAACATGATATTAAATGTTGATAGCCCCAGTATAAAAAAA [...]
+NODE	1769	278	15067	14696	0	0
+CACGAAACGGCGCCAGGCCGGTGCTGTTCAGCAGCTCGGTAATACGCGCTTCGCGTTCAGCTTTGTCATGACCAAAGAGACGAGCGAAAAAATCGACGTTCTCATAAACCGATAACGTGTGATAAAGGTTTTTCCCCAGCCCCTGCGGCATCCAGGCGATGCGCGGACAGACGTCGCGGCGATGTTTCGCATCGCGCATATCGCCGCCCAGGACGATAACGTTCCCTTGCTCAATCACCCGCGCGCCAGAAATCAGCGACAGCAGGCTCGACTTACCC
+AAGGGAACGTTATCGTCCTGGGCGGCGATATGCGCGATGCGAAACATCGCCGCGACGTCTGTCCGCGCATCGCCTGGATGCCGCAGGGGCTGGGGAAAAACCTTTATCACACGTTATCGGTTTATGAGAACGTCGATTTTTTCGCTCGTCTCTTTGGTCATGACAAAGCTGAACGCGAAGCGCGTATTACCGAGCTGCTGAACAGCACCGGCCTGGCGCCGTTTCGTGACCGTCCTGCCGGGAAGCTGTCCGGTGGGATGAAACAAAAGCTGGGGTTG
+NODE	1770	9	529	512	0	0
+ACCCCGTCC
+TGATTGAGC
+NODE	1771	489	23033	22682	0	0
+CCCGCCGCCGGGTTCGAATACCGGCGCGGAGCACCGCAGTTTACCTTCGGGATAAATTTGCGGCGTGATTGTTGCGCTATCGAGAGAGGGCGCAAGCGTCAACGTATAGATACGTACCATCGTTACCTCCTGTTAGGCTGATTTCAGTCTGGCACTTAATCCCCGGAAAGTGAAGGAATTAACAATATGATTTTCCGGATCTTTATTTAAAGAAGTACGATGTAAAGTTATATAAATAAATGAATGCTTCGGGAGGGTTCTTATTCAAAAAATGAAATAGTAATTGATTGCTATGTTATTCGGGGCTTCTTATAATTCGCTACCTTTCCAGGGGCGTTTGTTATTGATCCCTATGAAAGTTTCCGGGACCGTCGTGGTCTCTTTTTTAGTTGTACGGACTCTATATAAATGAAGCTTTTGAAGGCAGTACCCGCTGTAGTTATGCTGGCGGGTGGCGTGTTCGCGTCTCTGTATGCCGCCGCCGATGAT
+CTACAGCGGGTACTGCCTTCAAAAGCTTCATTTATATAGAGTCCGTACAACTAAAAAAGAGACCACGACGGTCCCGGAAACTTTCATAGGGATCAATAACAAACGCCCCTGGAAAGGTAGCGAATTATAAGAAGCCCCGAATAACATAGCAATCAATTACTATTTCATTTTTTGAATAAGAACCCTCCCGAAGCATTCATTTATTTATATAACTTTACATCGTACTTCTTTAAATAAAGATCCGGAAAATCATATTGTTAATTCCTTCACTTTCCGGGGATTAAGTGCCAGACTGAAATCAGCCTAACAGGAGGTAACGATGGTACGTATCTATACGTTGACGCTTGCGCCCTCTCTCGATAGCGCAACAATCACGCCGCAAATTTATCCCGAAGGTAAACTGCGGTGCTCCGCGCCGGTATTCGAACCCGGCGGCGGGGGTATTAATGTCGCTCGCGCTATTGCGCATCTTGGCGGCACCGCGACCGC
+NODE	1772	27	1090	1090	0	0
+ACGCGAACACGCCACCCGCCAGCATAA
+TCCGTTTTTACTGTCATGGATGATCCC
+NODE	1773	292	13951	12975	0	0
+GTCACCGAATAGCGACAAATAAAGTCTGGGATATCGCCAATAAACCATAATGGCAACACGTGCGGGATAAGTAGTTGAAAATGAACAGAAAACAAAAAACCCCGCCGAAGCGGGGTTCAAAATTGGTCGGCGAGAGAGGATTCGAACCTCCGACCCACTGGTCCCAAACCAGTTGCGCTACCAAGCTGCGCTACTCGCCGATATACTGCTTTTTTGAATTTTTAGTTCAATTCATTGAGTCGTGGTGCGAGGGGGGGGACTTGAACCCCCACGTCCGTAAGGACACTAACAC
+CGACTCAATGAATTGAACTAAAAATTCAAAAAAGCAGTATATCGGCGAGTAGCGCAGCTTGGTAGCGCAACTGGTTTGGGACCAGTGGGTCGGAGGTTCGAATCCTCTCTCGCCGACCAATTTTGAACCCCGCTTCGGCGGGGTTTTTTGTTTTCTGTTCATTTTCAACTACTTATCCCGCACGTGTTGCCATTATGGTTTATTGGCGATATCCCAGACTTTATTTGTCGCTATTCGGTGACGAATAATCTATTGATTTATAATCACTTTATAAAAAACATCCTGTTCTGTC
+NODE	1774	6	777	717	0	0
+CTGAAG
+GCACCA
+NODE	1775	31	4377	4227	0	0
+CTAGCGCGTCTACCAATTCCGCCACCTTCGC
+TACGGACGTGGGGGTTCAAGTCCCCCCCCTC
+NODE	1776	3	10	10	0	0
+CCA
+CCT
+NODE	1777	1144	58868	57559	0	0
+AACGCCTGCTGATCGAGGCTCAGTTCCTCTACCGGACGACCAAAGTAATACAGGCTCGCCAGAGGAAAACCGCGAATTTCATTATCCCCGCTTTGACCGAGGTAGACCTCGTTCATGTACAGCTCAAGAATACGATCTTTACTGTAACGGGCATCCATGATCAGCGCCATGTAGGCTTCATTCGCTTTACGCCAGTATGATCTTTCGCTGGAGAGGAACAGGTTCTTCACCAGCTGCTGGGTTAGCGTACTTGCCCCCTGCACCGTACGTCCCGCCGTCAGGTTGGCCAGTACCGCACGCCCGATAGAGTAAAGACTAATGCCATCATGCTCATAGAAATGACGGTCTTCCGTCGCCAACAGCGTATCGACCAGCAGATCCGGGAAACCGCTGCGCGGGACGAATAAACGCTGCTCGCCATTTGGCGAAGAAAGCATGGTGATAAGCCGCGGATCGAGACGGAAGAAGCCAAACTGGCGGTTGTTATCCAGA [...]
+TCTGTCGTCTGGCGGAAGAATAGAGAATCGGGCCTTTGCGCCTGTATGTTGCGGAGAAAAAGCATGGCGGGGAATGACCGCGAGCCGATTGGACGTAAGGGGAAACCGTCACGTCCTGTGAAACAAAAGGTGAGCCGTCGTCGGCAGCATGACGACGATTATGATGATGACTATGAGGATGAAGAACCGATGCCGCGTAAAGGTAAGGGCAAAGGGCGTAAGCCTCGTGGCAAGCGCGGCTGGCTGTGGCTATTGCTAAAACTGTTTATCGTTTTTGTGGTGCTGTTCGCCATTTACGGCGTCTATCTGGATCAAAAAATCCGCAGCCGTATCGATGGCAAGGTCTGGCAGCTTCCGGCGGCGGTATATGGCCGGATGGTGAACCTTGAGCCAGACATGCCTGTCAGCAAAAACGAGATGGTGAAATTGCTGGAAGCGACGCAGTATCGTCTGGTGACGAAGATGACCCGTCCCGGCGAATTTACCGTGCAG [...]
+NODE	1778	20	1161	1125	0	0
+TCCGGCCTGGAGGCAACGTA
+TAAATTGAGAGATTTCTTCT
+NODE	1779	3352	169858	165102	0	0
+TCACGATCGAACGGTTCCAGTTCAGCAATCAGCTTTTTCGCGACCTGATGAGGGAAACCGCTTAACGCAGGCGTTGGATGCAGCAGACAGGCCAGCGTCAGCGCGTTTTCTCCGGCGTTGGCCTTGCCCTCAAACGGCGTACCGAGATGCCATAGCGTCGGCGTGGTGATCAACTGCGGAGAGGAAGGTAATTGCAGTTCCGTGCTGCGATCGCGCAGGATCTGCTTCATCGCCTGCGTCACCAGCTCATGTTCATGGCGATCTTTTTGTGAAGCCAGCAGTCGGTTTCCCGCCTCGCGATCCAGAACGTCATCCGGCTGTCGACGTGCCGAGCCTGCTAACGGCAGCGAACTAAACCGCTCGCCCTCTTTGCGTAGCAGCAATTCGGGGCTGGCGCCCAGCAGAACGCCGCCATCCGCCAGTGGCACATGGAAGTTGTAACTAACTGGATTCTGCGCAACCAGCCGCTCCAGCAATGCTCCGCTATCCACC [...]
+AAAAGGTGATTCTGCTGGCGCGCGGTACTTGCGGTATTGGCTTTATTGGCCTGTGCGTGAACGCGCTGCTGCCGGAACCATCATTGCTGGCGATATATCTCCTTGGCCTGTGGGACGGCTTTTTCGCGTCTCTGGGCGTGACCGCGTTACTGGCGGCGACGCCAGCGCTGGTCGGAAGAGAAAATCTGATGCAGGCCGGCGCGATTACCATGCTGACGGTACGTCTGGGATCGGTTATTTCCCCGATGTTGGGGGGCATATTGCTTGCCAGCGGCGGCGTAGCCTGGAACTATGGGCTGGCGGCCGCCGGGACGTTTATTACGCTATTGCCGTTACTGACGCTGCCGCGACTGCCTGTTCCTCCGCAGCCGCGGGAAAATCCATTTATTGCGTTACTGGCGGCATTTCGTTTTTTGCTCGCCAGTCCGCTTATCGGCGGTATTGCGCTGCTTGGCGGTCTGGTGACGATGGCAAGCGCGGTACGCGTCCTCT [...]
+NODE	1780	23	5449	5314	0	0
+GTCCTGGGCCTCTAGACGAAGGG
+TTCGAATCCCCTAGGGGACGCCA
+NODE	1781	378	19701	19517	0	0
+GTCAGAATACGTTGCCTGCCACATTACGCCACGCGAATTTGTTTTACGGAGAGTTACGGAGTGAAACAATCCCGCCGCGGTGAGCGGCAGGTTGCTTACAAGGTGAATGGATCGGCATCGCGCCAGGCTGGAAATTTTTCGCGATAGTCCTGCAAGGCGACGAGAGAAAGATCGGCATCGATACGTGTCGCCTGGTGTGGTTCGGCGGTGGCGATAATGTCGCCCTGGGGATTAATGATCCGGCTATCGCCGCGATAATGTAGCCCGTTACCATCGGTGCCAACCCGGTTGCAGCCTGCGACATAAGCCTGATTTTCAATAGCGCGCGCCGTCAGTAATGTTTGCCAGTGTAGCGAGCGCGGCGCGGGCCAGTTCGCT
+CGCGCGCTATTGAAAATCAGGCTTATGTCGCAGGCTGCAACCGGGTTGGCACCGATGGTAACGGGCTACATTATCGCGGCGATAGCCGGATCATTAATCCCCAGGGCGACATTATCGCCACCGCCGAACCACACCAGGCGACACGTATCGATGCCGATCTTTCTCTCGTCGCCTTGCAGGACTATCGCGAAAAATTTCCAGCCTGGCGCGATGCCGATCCATTCACCTTGTAAGCAACCTGCCGCTCACCGCGGCGGGATTGTTTCACTCCGTAACTCTCCGTAAAACAAATTCGCGTGGCGTAATGTGGCAGGCAACGTATTCTGACTAAGAGCCTATCCCATTAGGGCTATTTTACTTGCCATTTTGGACCTGGGC
+NODE	1782	4812	252500	248589	0	0
+TGCACCGGCCACTGCGCAACCTGATGGAGAAATTGTCTTGTGGTATCCGCCGTAAACGTTAACGCCAGCAGGCGCGGCGACTGCGCCGAAGGGGCAAGGGTGAAACCAGTATGGCGTTGGGCTAAATCATCTGTGTTCGCTTTTACGGCAGTCAGTGCATTCATCAGAATCATTCCTCTCGGTAGATGGTCAGGGAGACATGGCGATGCTCATTTCGTAGCCATAAATTAAAAATATCGACATTTTCCAGGAACGCGTATGAAATAACCGCTTTTGTTTAATTATTGTGATCAAAAACAACAAATATTTAACAATGCGAAAGGTGAGGTTAACGGCGCCACGAGCCTGACAACGGCAAGAAGGGGTGTAAAATGAGCGAGTTATGGAAAGAGTGATGCTGGCGGGGTTGCCCGGCCTGGCACATGAGCGCGTAGGCCGGACAAGTACAACGTATTTCAGCAGTCAATTAACCGGCGTCAACCTGCGGTTTAC [...]
+CCTGTGAGATCCAGGAAGAGAACAGCAGTTGGCCCGCCAGATAACGACGGGACTGCAGCGTTTCTGCGACATAAATCTCCGCCATGCCGATAATGCCGCCTTCGTTGACCGGCTGTAGCAAACGCGCCACGCGGATCGCCTCGCCGCGATACTCGGTATGATAGAACCACGCCAGCGCCGGATAAAGCCGGGTACGGGGCGTAGCGGGCGGCATGGCAGGCAGATCGTCATAACCGGAAATAACCTTTCCGGAAGGGTCAACGACTTTGTAATAGAGTCGATCATTCATATTAAGCTCGAAGCTATCCAGCACCACCCAGGGCACGTTAACTTCCAGATGCTTATTGCGCACCACCAGCCGTTCCGATACCGTTCGCGCCGAGGAGAGCAACGTACGATCATAAGCCTGAGTGGCGGCCTGTAGCGCATTGACATAGCTGTTAAACGCCGACAGCCCCCATAGCAGAATCAGCGGCAACCCCAGGAACAGCA [...]
+NODE	1783	5836	342203	338043	0	0
+GTTTCGACAACGGTTACAACAACTGGCGGAAACGGACATTGCCGTATGGTTTTACGGTGAGCATGGCACTGGACGTATGACTGGCGCCCGTTATCTCCATCAACTGGGGCGTAACGCGAAAGGGCCGTTTGTACGCTATGAACTCACGCCGGAGAATGCCGGGCAGTTGGAGACATTCATCGACCAGGCGCAAGGAGGTACGCTGGTGTTGAGTCATCCCGAATATCTGACACGCGAACAGCAGCACCATCTGGCGCGTTTACAAAGCCTGGAGCATCGGCCTTTTCGTTTGGTGGGCGTTGGCAGCGCTTCGCTGGTGGAGCAGGCGGCAGCTAACCAGATTGCGGCCGAGCTTTACTACTGTTTCGCCATGACCCAAATCGCCTGCCAGTCTCTTTCTCAGCGACCGGATGATATCGAACCGTTATTTCGCCATTATCTTCGAAAAGCCTGCCTGCGGCTCAATCATCCAGTGCCGGAAATAGCGGGGGA [...]
+GAAGTGAAGAGTCGGTAAAAAGCAGGCTATCACGTTTACGAAAGAAATAACCCTATACCTACCACATTATTCGGATAACCTACCATGGAGTAAATTATGCCAGCGCCTCTATATGGTGCGGACGACCCGCGTCGCTGTTCCGGCAAATCCGTCTCGGAGGTGCTGGATAAATTCAGAAGAAACTACGGCCTGATAATGTCGCTACCGCAGGAAACGAAAGAGGAAAAGGAATTTCGTCACTGTATATGGCTTGCAGAAAAAGAAGAACGCGAGCGAATTTACCAGACATCCATCCGGCCATTCCGCAAAGCCACTTACACCAAATTTATTGAAATAGACCAGCGCCTTCGTGATTACCGTTCGCGTTACGGCGCTATCAGCAATAACTGAGGAATTCATCATGAGAGGTTTGTCCTACGACCCCGGTATCCTGCCATCTGAAATGATTATTCGACACCGCTTCAAGCCCATCAACGATATTCCACGCGAAGA [...]
+NODE	1784	12	2730	2715	0	0
+ACTTCGCAGTGA
+ACACAGAACAAC
+NODE	1785	165	8483	8394	0	0
+GTTGTTGTGCCTAAGGTATGGGCGGTAGGTTCGGATCGGGATTACAGCTTTTTAGTCATGGACTACCTCTCGCCCCGCCCGCTGGATGCTCATAATGCGTTTATTCTTGGACAACAGCTGGCGCGCCTGCACCAATGGAGCGATCAACCTCAATTCGGCCTCGAT
+GTTGTCCAAGAATAAACGCATTATGAGCATCCAGCGGGCGGGGCGAGAGGTAGTCCATGACTAAAAAGCTGTAATCCCGATCCGAACCTACCGCCCATACCTTAGGCACAACAACGGTTTTACTGCGGGAGAGCAGCTCCAGCTGATCGGCTTCAGCGGTAAAAC
+NODE	1786	51	2901	2863	0	0
+ACCACGCGTCTATCATTGACGGCGTGCGTTTGTGTAAAGCGAAGCGCTATC
+TTCAGCGCGTCGGAAATAATAGCGTCTTCCGCGCCCAGCAACGTCTCAAAC
+NODE	1787	153	4759	4527	0	0
+CCGCGGCATGTCCGCCGCCGTCAACCGTTTCTTTCCTGAACCGGTCCCGGTACCGAAGGCGGCACCTGCCGCCGCCGCGCCCGCTGACGACTTTGCCCGCCTCAAGCCGGTGATTGCCGCCGCTATCCACCACCATCGCCGCCTTAACCCTTA
+GAGGCGGGCAAAGTCGTCAGCGGGCGCGGCGGCGGCAGGTGCCGCCTTCGGTACCGGGACCGGTTCAGGAAAGAAACGGTTGACGGCGGCGGACATGCCGCGGATGGCGAAAATCAGCAGGAACAGAAACGCCAGCACGAACCCCATGCCGAG
+NODE	1788	108	4631	4631	0	0
+GTCGAGCTGAGCGGCAATCGGCAGCATGTCGTCAAGGCGCAGGCGGGTGGCGAACAGGGACTGGTGGGCGTCACGCAGGACGACGTCGGTAATGGCAATGGTCATGGA
+CCTGTTCGCCACCCGCCTGCGCCTTGACGACATGCTGCCGATTGCCGCTCAGCTCGACGACGTGGGCTACGGCTCCCTCGAATGCTGGGGCGGCGCCACCTTTGACGC
+NODE	1789	1135	54083	53370	0	0
+CATCGGACGCTTTTACGCTCACTTTGAACTGATCAAAGTTGAGACGATCGAGATGATCGACATGGCGCATGGCTGATTCCAGCAGCGCCTGCGGCGTCGGCTCACCGTATTTTTCCTGCAGATCTTTTTCCAGCGATCCGGCATTTACGCCGATACGAATAGGGATGTTTTTGTCTCGCGCGCAGTCCACCACCATACGAATACGTTCTTCGTTACCGATATTGCCGGGGTTGATACGCAAGCAGTCAACGCCGTATTCCGCCACCTTCAGCGCAATGCGGTAGTCGAAGTGAATATCGGCAACCAGCGGGACGTTAACCTGCTGTTTGATAAGCTTGAACGCTTCGGCGGCGTCCATGGTCGGTACAGAAACACGAACAATATCTGCGCCAACGCGTTCCAGCGCTTTGATCTGTTTAACCGTCGCTTCCACGTCAGTGGTACGCGTGTTAGTCATCGACTGGACGGCGATGGGGGCGCCATCGCCAATCG [...]
+ACACCCGTGACGCGACAAGCCAGGATACGACGCCAGCGCAAACGGCTCCGGCGCCTGCGACGCCGGTTGATTCTACGGCGGCGACGCAAACGCCAGCGCCAACGGCGGCGGCGACGCAAAATACGGTAGTCGCGCCTTCGCAGGCGAATGTCGATACGGCTGCGACATCTGCCGCGCCAGCGGCAACGGAAACGCCGTCCGCGCTGCCGACCAGTCAGGCTGGCGTAGCGGCGCCTGCTGCCGATCCGAACGCGCTGGTGATGAATTTTACCGCTGACTGCTGGCTCGAAGTCACTGACGCCACGGGTAAGAAGCTGTTTAGCGGTATGCAGCGTAAAGATGGTAATTTAAACCTAACCGGTCAGGCGCCTTATAAACTTAAAATTGGCGCGCCGGCCGCGGTGCAGATCCAGTATCAAGGAAAACCTGTCGATCTGAGCCGCTTTATCAGAACTAATCAGGTTGCGCGTCTGACCCTTAATGCCGAACCGA [...]
+NODE	1790	3240	155992	154952	0	0
+TTTTAAAACGTCTGCCGGAAGGCAGCACTTTACCATGGCATCGGGTGGTGAACCGCCACGGCGCAATATCACTTACCGGGCCGGATCTACAGCGGCAACGTCAGGCATTACTGGCGGAAGGCGTGGTGGTGTCGGGAAGCGGACAAATCGATTTACAACGCTATCGCTGGGTGTATTAACCCTCTCCGTAACGGAGAGGGTTGGCGCAGGATTAATACTGGGTAGGCGCAGGAACGGCAGAAGACGGATTGACCTGGGTCGGTGAGGTCGATGGAACCGTCGTCGTCGCACCGCCGCTGGCCTGCACAGGCACCGCCGTTTGCTGTACCGGTACCAGCGTCAGATCCGCTTTAGTGCCGCCATTGTTAATCACCGGTTTCACGCTATCGGTAATAAATACCAGCTTATTGTCAACGGTGATGGCCGCGCTCAGGAGAATACGCGCGTTAGGTTGAATATCTGATGGGTTAAACGGCAACACAAAACTGAAAG [...]
+GGCTAACGATAGCCGCGCCAGCGGTTGCCGATAAAGCGGATAGTGCTTTTATGATGATTTGCACCGCGCTGGTGCTGTTCATGACGATACCGGGTATCGCGCTGTTTTACGGCGGATTAATTCGCGCAAAGAACGTGCTGTCAATGTTAACGCAAGTGACCGTCACCTTTGCGCTGGTCTGTATTTTATGGGTGGTGTACGGCTATTCGCTGGCTTTTGGCGAAGGGAATCATTTCTTCGGTAATGCTGATGGGGCGATGTTGAAGAATATCGCGTTGACGGCGGTAACGGGTACGATTTATCAGTATATTCATGTCGCGTTTCAGGGATCTTTCGCCTGCATTACCGTCGGGCTGATTGTCGGCGCGCTGGCGGAGCGTATTCGTTTTTCGGCGGTACTGATTTTTGTCGTGGTGTGGTTCACGCTCTCTTATATCCCGATTGCGCACATGGTGTGGGGCGGCGGCCTGCTGGCTGCTCACGGCGCGCTGG [...]
+NODE	1791	3917	196251	193726	0	0
+GCTCACGCCACGGCGGGCGGCTTTACGCATTGCGTGGAGCAAGCGATAGCCGGGGAAAAAATAGGCGTTAGCGATAATCACTTCACGCTTTGCCTGGGTCAGCATTTTCAGATAATGACGTTCGATATCGTCGCGGTGCTCTTCATTATCCCGCCAGACAAACAGCGCCTGCGCTTCGCCGGGGTGACGGTTTTCTTCTGCCTGGTGATGGCGCTTCCACCAGCGGCGCGCGGGGCTTTGCCCCGGCAGATTCTCGACTTCGAATTGCAGGATATCGGCCACAACAGGCCCTTCGACCCGTACCGCGTAGTCTTGTTTCGCCTGCGGGCCGTAATCCGACATATGTTCGGCGGAGTAGTTAATGCCGCCGACAAAGGCAATACGATCATCAATCACCACAATTTTGCGGTGCATTCGGCGGAAGATATTAGTTCGCAACCCCAGTAGACGCGGGCGGGGGTCGTAATAGCGAAAAATAACTCCCGCCGAGGT [...]
+GACGTCCAGACGCGCTACTGGTTTAACCCGGCGGCGATCAGTCAGCATTTTATTATTCCCGGGGCGGTGACCATTATCATGACGGTAATTGGCGCAATCCTCACCTCGCTGGTCGTTGCCCGCGAATGGGAGCGCGGCACGATGGAGGCGCTGCTCTCAACCGAAGTGACGCGTGTTGAACTGCTGCTGTGTAAGCTTATTCCCTATTACTTTCTCGGTATGCTGGCGATGCTGCTCTGTATGCTGGTATCGGTGTTTATTCTCGGCGTGCCGTATCGCGGTTCGCTGGTGATTCTGTTTATCATCACCAGTCTGTTTTTACTGAGTACGCTGGGGATGGGGCTGTTGATTTCCACCATTACTCGCAACCAGTTTAACGCCGCGCAGGTGGCGCTGAACGCCGCCTTTTTGCCCTCGATTATGCTGTCCGGATTTATCTTCCAGATAGACAGTATGCCTGCGGTGATCCGCGCGGTGACCTATATTATTCCG [...]
+NODE	1792	3	285	285	0	0
+CGT
+GGT
+NODE	1793	62	2675	2675	0	0
+CTAAACTTGCATTCTCATTGTAATTGGTTGCGGGGGCCGGATTTGAACCGACGACCTTCGGG
+ATGCAAGTTTAGACGGACGCGGGGTGGAGCAGCCTGGTAGCTCGTCGGGCTCATAACCCGAA
+NODE	1794	1437	69726	69266	0	0
+CAGGAGACCGCTACACTACTGCGTTTGCCCAGCTCCGCCATCCATTCACGCAGAGCAGAGATAATAATTTCGCGGGCTATCATCGTCGCCGCAGGTAACGTCACCCACCAGCTATGATAATGCTCGGTGACCAGCACCATGGCGATCGCCACCAGCACCTTGTCGGCGACGGGGTCGAGGAAAGCGCCGAAACGCGTACTCTGGTTCCAGCGTCGCGCCAGAAAGCCGTCAAACCAGTCGGTAATAGCGGCAATACAGAAAATCAGCGCGCTGACCATCGGCGCCCAGGCGAACGGCAAATAAAACACCACGACAAAGAATGGAATCAGGATGACGCGAAACAGCGTGAGCAACGTAGGGATATTAAATTGCATAGTGACGGGTAACTATCTGTTGTCAGTGAAATTACCCCTATGTTGCTACAGTGGCCTCAATGTTTCAACGACCAGAAGATCTTTTCTGCCAGACCTTGCGAAATACCCGGCACTTTTG [...]
+GGCGAAGTGGTGGAAACCTTTGTCGGGCAGTTTTACCTGCAGGGTAGCCAGATGCGCACGCTACCGGGCGAGATACTGCTCGATTTTAATCTGAGTGATAAAGCGCTGCTCGCCGACTCGTTGTCGGAACTTGCCGGACGGCGTATTCATGTCCAGACAAAACCGCGTGGCGATCGCGCCCGTTATCTCAAGCTGGCGCGGACCAACGCGGCAACGGCCTTAATCACTAAACTCTCGCAGCAGTCCACCATCACGCAGCGTTTGACTGCGCTGGCGGCGGTATTAAAACTTCCTGCGATCAAGCGGATGGAGTGTTTTGACATCAGCCATACCATGGGGGAGCAAACGGTCGCATCCTGTGTGGTATTTGACGCTAACGGGCCGTTACGCGCCGAGTATCGTCGTTATAATATCGCGGGCATCACGCCGGGTGATGACTACGCGGCGATGAATCAGGTGCTACGTCGGCGTTATGGCAAGGCCATAGAAGAA [...]
+NODE	1795	33	1112	673	0	0
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+NODE	1796	8	12	12	0	0
+GAAAAAAA
+CTTTTTTT
+NODE	1797	51	2742	2300	0	0
+TGGCTCCGCCACTCAAGATGCGGCCCGCATGACGGACAGGCAACGGGCTGG
+AACATGAACGAGCGGAAAAAGAGGCGGCTTTGCAGGCGGCGGTCGCCCAAC
+NODE	1798	53	1858	1807	0	0
+GCGCAGGCGCAGCCACGGGTCCTCGCCGAGGAAACGGATGCAGGCGTCAAAGG
+CGCGAACTCAAAAAAGCCATGCCCAAAACCCCGCTGCAGATGCTGCTGCGCGG
+NODE	1799	37	1283	1283	0	0
+TGGCGCCGCCCCAGCATTCGAGGGAGCCGTAGCCCAC
+CATCCGTTTCCTCGGCGAGGACCCGTGGCTGCGCCTG
+NODE	1800	51	1583	1548	0	0
+TCCCCCGCCGCCAGCCTGTGCGTACCCTCGACCAACCGTTTGACCGGGGCG
+ATTTTACCACGCGCGTGACCCCAACCAGCGCCGATGAGCTGGGAAAACTGG
+NODE	1801	600	38497	37324	0	0
+GCGAGCGAGCCAGCATCGCCAGCCCCCCCATGAAAGTGCCACAAATTCCCAAAATATGAATGCGCATACGTCACTATCCTTTTTTTATCTGCGAGCCATTTTACGCACATGTCTGGCAAGTGAGAAACGCATTTCAGGTAAATCTGTACTTTGCTGGCGCGATTCACCTGAGCGCATCATCTGAAATGTTTGTTAAGATTGTTACGGTCGCTTTACTCCAATCAATTGCAGGGAAAGTGTTATGAAAACGTTAGGTGAATTTATTGTCGAAAAGCAGCACGAGTTCTCTCAGGCTACCGGTGAGCTCACTGCTTTGCTGTCGGCAATAAAATTGGGCGCCAAGATCATCCACCGCGATATCAACAAGGCCGGTCTGGTCGATATCCTGGGTGCCAGCGGTGCTGAGAACGTACAGGGCGAGGTTCAGCAGAAACTCGATCTGTTCGCGAACGAGAAACTGAAAGCTGCACTAAAAGCGCGCGATATTGTAGC [...]
+CGCGTGTTCGCAGCCTTCAAAGACGACGATTTCGTCCTCTTCTTCCGATGCGATGCCCGCTACAATATCGCGCGCTTTTAGTGCAGCTTTCAGTTTCTCGTTCGCGAACAGATCGAGTTTCTGCTGAACCTCGCCCTGTACGTTCTCAGCACCGCTGGCACCCAGGATATCGACCAGACCGGCCTTGTTGATATCGCGGTGGATGATCTTGGCGCCCAATTTTATTGCCGACAGCAAAGCAGTGAGCTCACCGGTAGCCTGAGAGAACTCGTGCTGCTTTTCGACAATAAATTCACCTAACGTTTTCATAACACTTTCCCTGCAATTGATTGGAGTAAAGCGACCGTAACAATCTTAACAAACATTTCAGATGATGCGCTCAGGTGAATCGCGCCAGCAAAGTACAGATTTACCTGAAATGCGTTTCTCACTTGCCAGACATGTGCGTAAAATGGCTCGCAGATAAAAAAAGGATAGTGACGTATGCGCATT [...]
+NODE	1802	519	26677	26526	0	0
+CGACATCAAAGTAGCCTTTATGCTGCTGATAATGGGCAACCTGTTCTTCATCGCGCGGATCCATCACCGCTGTGGCCCCCATCTGGCGTGCCAGTTCCAGACAGCGTGGGCTGAGATCGGATGCTACCAGTTCAGATGCTCCGGCACTGCGTGCCGCCGCGAGGATCAGACAACCAATGGGGCCTGCGCCAATCACCAGTACGCGTTTGCCGGTCAACTGGCCTGCCTTTTTTACTGCATGAATGGCGACCGCTAGCGGTTCCGAAAAGGCCATCACGTTTGCGGGCACGCGCCTGTCGTAAGGAATGCATTGCTCCGGTTTTACCACCACGTATTCAGAAAAACCGCCATTCACATGCGGATTGAACTGCGCGCTGCCCATAAAGCGCATGGAGCCGCACAGATTTTGATGGCCGGAAAGGCACATCTCGCACTGATTGCAGGGGCTGGACGGGTTCACCGCAACCGTCTGGCCCACTTTCAGGTCGCTGC [...]
+ACGGTTGCGGTGAACCCGTCCAGCCCCTGCAATCAGTGCGAGATGTGCCTTTCCGGCCATCAAAATCTGTGCGGCTCCATGCGCTTTATGGGCAGCGCGCAGTTCAATCCGCATGTGAATGGCGGTTTTTCTGAATACGTGGTGGTAAAACCGGAGCAATGCATTCCTTACGACAGGCGCGTGCCCGCAAACGTGATGGCCTTTTCGGAACCGCTAGCGGTCGCCATTCATGCAGTAAAAAAGGCAGGCCAGTTGACCGGCAAACGCGTACTGGTGATTGGCGCAGGCCCCATTGGTTGTCTGATCCTCGCGGCGGCACGCAGTGCCGGAGCATCTGAACTGGTAGCATCCGATCTCAGCCCACGCTGTCTGGAACTGGCACGCCAGATGGGGGCCACAGCGGTGATGGATCCGCGCGATGAAGAACAGGTTGCCCATTATCAGCAGCATAAAGGCTACTTTGATGTCGTGTTTGAGGCCTCCGGCGCGCCG [...]
+NODE	1803	3034	200220	198605	0	0
+CGCTGATGGTGGCAATGCTGTCGGCTCTGAACCATTTCCCGGTTAACGCGTCCGTCATACTTATCACCAGTGCGCTATTTATCGTCATTTATCTACCGCTGAGTTTTATCCTTTACCGCTCACAACGGTAATTCGTATCGGTTCCAGAAGCTGACGCTTCCCCTTATACTGGCGCTATCACTCAATAGCGAGATAAAACAATGAACGACAGTGAATTTCATCGCCTGGCTGACGCCCTGTGGCTCACCATTGAAGAACGCCTCGATAACTGGGACGGCGACAGCGATATCGACTGCGAAATCAACGGCGGCGTGCTGACCCTCAGCTTTGAGAACGGCAGTAAGATCATTATTAACCGTCAGGAGCCGTTGCACCAGGTATGGCTGGCGACCAAACAGGGCGGCTATCACTTTGACCTGAAAGGTGACGAGTGGATTTGCGATCGCAGCGGCGAAACCTTCTGGGAGCTGCTGGAGCAGGCGGCGACGCAGC [...]
+ACTTCCGTAAGCTGGACGTTTTCAGCTTTGGCGAAGAGCAAAACTGTCTGATAGGCAGTATCGACTTGTTATATCGCAACTCGTGGAACGAAGTGCGTACTCTGCACTTTAACGGCGAGCAGGCGATGATCGAAGCGCTGAAAACGATTCTGGGGAAAATGCACCAGGATGCCGCGCCGCCGGATAGCGTCGAAGTGTTCTGCTACAGTCAGCATCTTCGCGGTCTGATTCGCACCCGCGTGCAGCAACTGGTCTCCGAATGTATCGAGCTACGTCTTTCCAGCACCCGTCAGGAGACCGGTCGCTTCAAGGCGCTGCGGGTTTCCGGGCAGACGTGGGGGCTATTCTTCGAACGCTTGAATGTCTCGGTGCAGAAGCTGGAGAACGCTATCGAATTCTACGGCGCGATTTCGCATAACAAGCTGCACGGGCTGTCGGTACAGGTGGAAACCAACCAGGTGAAATTGCCGTCAGTGGTGGATGGCTTCGCCA [...]
+NODE	1804	376	20353	19965	0	0
+TCCTGCTGCGGCAACATTAAGCTGTTAAGAAGGGGCGAGTCTTTTCCGCCCCTATCGCAAAGACTTCGCTGGCCGCCATCTGCCAGTAGCCAGGGTTAAACAGTTCCAGCGAACAGATCCCCTCATAGCCCTTCTGCACTAGCTCATGCGTGATCTCATGCAGTGGGATCACGCCGTTGCCAGGAAACAGACGATGGCAATGCTCCAGCGTTGCCAGCGGCAGATTATCGGCGTCATCAATATGGTAAACGAAGATCTTTTCCACAGGGATCTGGCGAAGCGTGGTCAGATCCCGCCATTGATCGTGCAGGTAAAGGTTAAAGGCATCGACGACCAGCCCGACATTACTGCGATCGACCGCATCTACGATCTCCAT
+TGCCTTTAACCTTTACCTGCACGATCAATGGCGGGATCTGACCACGCTTCGCCAGATCCCTGTGGAAAAGATCTTCGTTTACCATATTGATGACGCCGATAATCTGCCGCTGGCAACGCTGGAGCATTGCCATCGTCTGTTTCCTGGCAACGGCGTGATCCCACTGCATGAGATCACGCATGAGCTAGTGCAGAAGGGCTATGAGGGGATCTGTTCGCTGGAACTGTTTAACCCTGGCTACTGGCAGATGGCGGCCAGCGAAGTCTTTGCGATAGGGGCGGAAAAGACTCGCCCCTTCTTAACAGCTTAATGTTGCCGCAGCAGGAGATGGACAACCGCCGCGCCCAGCAGCGCGCAGGCCGCGGCCAGAAGAAAG
+NODE	1805	6	758	758	0	0
+CCCCAG
+TATATA
+NODE	1806	7	569	569	0	0
+TCACATA
+TGAAGGG
+NODE	1807	30	2150	2150	0	0
+GTTATCTATGCTCCTGGGGACTCACTCCCT
+GCGTAGCCAACACATAAGCAACTTGAAGTA
+NODE	1808	900	40733	38434	0	0
+CCGTCAGCAGTATGCGTTTCCGACGGGACATGGCATTTTCCATTTATCCTGCCCCCGCTAACTTAACGCCGGGCTTATCAGCCCTGCCAGCATGGCTGCCAGTCCCACAAGAACCAGCAGATAAACCGTGACCAGTACACGTACAGATATTTTCATTACGATCCCTGCTCAGAAATAGTTCACTACCGGCGTCAGGTTGCCCTGCCAGCGCGTCACGGGCTCCTCCGCACCGGGAAAACGAACCCGGATACCCTCCAGGGATGTCACCCGGGCCCCGGCAATTTGATTTTTTGTGCCGTTATCCGGCAGGAAACTGCCGGGCATTACCGTAAAGGCGTCCGGCCGGGTCTTCAGACCCGAGTAAGACGGGTTCCACCGGTAATCTCTTACCTGCCACAGCAGGCGTTTTATCTCCTGTGCCGCATCCGGCGTGACGTTGCCGCTGACCACGCTCCAGCCCTTCTCTGCGGTGGTACTGTCCTGCCAGGCCAG [...]
+ATCCGCATCCGTGAGCAGCCAGCCGCTGACAGTCGTACAGGCCCACTGGCAGGAAGGCATGGCCGTGGGCGTGACTGAACTCAGCGGCACACTGTATATCCGGGATACGGCCTGGCAGTGGCAGCCCGTCCCGCTGGAGATGAGCCGGCAGGAGGGCATGGTGAGTGAAAGCCGTCCGGGGAGACGTTATTACATTCTTAAAGGGTATACCACGACCCTGACATCAGCCCGTCCCGGGCTGCAGCCGTCGGTAAGCCTGCTGCATGCCGGACATGGCGTCGTCCGCCTTGAGGCCCGGGGCAAACTGGCGAAGGGGCAGGTGCGGTATGGCGAAATTACCTTTACTGCCAGCCATGTACTGGCCTGGCAGGACAGTACCACCGCAGAGAAGGGCTGGAGCGTGGTCAGCGGCAACGTCACGCCGGATGCGGCACAGGAGATAAAACGCCTGCTGTGGCAGGTAAGAGATTACCGGTGGAACCCGTCTTACTC [...]
+NODE	1809	30	13097	12944	0	0
+AACGCATCGCTGCGCTTACACACCCGGCCT
+ACCGTGAGGCTTAACCTTACAACGCCGAAG
+NODE	1810	164	8172	8172	0	0
+AATTTTGGGCGGCGTTCGCGGTATGGAACGCAAGGTGCATCCCAATGATGACGTCAATAAGAGTCAAAGCTCAAACGATGTGTTCCCAACCGCCATGCACGTGGCGGCGTTACTGGCGTTACGCGAACACCTCATCCCGCAATTATCTGCATTAACGGATACGC
+AGTAACGCCGCCACGTGCATGGCGGTTGGGAACACATCGTTTGAGCTTTGACTCTTATTGACGTCATCATTGGGATGCACCTTGCGTTCCATACCGCGAACGCCGCCCAAAATTTCACTGGCGCGGTTCGCTAACACCTCATTCATATTCATGTTGCTTTGCGT
+NODE	1811	1	133	133	0	0
+A
+C
+NODE	1812	1	80	80	0	0
+C
+C
+NODE	1813	1246	56243	56074	0	0
+ATGAGGTGGAGTCGGAGCTGGGTACGCAGCCGGGCCTGGGGCTGCTTAATACAATCACTCGCTTTGCACAGGATAAAACCACGACGCAGGTTAACGCGACAATGTCAGGCGAGCTGCCCGGCTGGCTGGCTGCCGCGGCGGGGCTACCGGTACGCGGTTATGAAATTCACATGGGGGAAACGGTGCTACAGGAAGGATGCTGTACGGCCATGACGTTACAGAAAAATGGATGCTCTGTGGCGGATGGCGCGGTCACCGCCGATGGACTGGCGTTTGGCACTTACCTTCACGGCCTGTTTGACAGCGATGCGTTTACCCGTGCGGTGGTCAATGGGTTACGGGCGCGAAAAGGACTTACGCCGTGGGAAACGACTTTTTGTTATGCGGAGCATAAAGCGCGGCAATTTGATCTGCTGGCGGAAGCGATGCGGCAACATATTGATATTGATAAAATTTATACCATCATGCAACAACATCAGGAGCCGGTATGAT [...]
+TGCAGGAGGATGAAAATCAGGCCGCTTACGCCCCCCAGAATCAACCCGATAAAGGGAAACATCACGATCCCACGCGAATACTGCTCGAAATCCAGTCCCTGCGACCAGCGTGACGGCACGGGCAAGCGGCTAATAAAAGCGAGCATGGCCCAAAACAGCTTACTCATTTAATTTTGACTCCAATACCTGAGACTACCAGCCAGACCTCATCCGCCGCTGCCGCCAGTCGTTGGTTGACCCGACCGGCAATATCACGAAAATGGCGCGCCAGACGGTTTTCCGGGACGATCCCCATTCCCACCTCATTTGTCACCAGTACCACTTTCGCCGGGCAGCGCTGGCAGGCTGCAATTAAAATCTGAATTTCATCGTCAATGGCGCGCTCCATCGCCGCGTAATCCCACTGTTCGGGATCGTTCTCGCCTCCCAGCGCAAACAGCAGATTCGTCACCATGGTGGTAATACATTCCAGCAAAATCGCGTCGTCAGGGG [...]
+NODE	1814	138	11731	11511	0	0
+CCAGCTTGCGGGAAACGCCATTGACGACGTCCTCACCGTGGCGCTGTTCCCGCAGATTGGTCTCAAATTCCTTGAGAACCGCCACAACCCGGCGGCGTTTGAGCCACTGCCGCAGGCGGAAGCCGCGCAGCCGGTGGC
+GTTGTGGCGGTTCTCAAGGAATTTGAGACCAATCTGCGGGAACAGCGCCACGGTGAGGACGTCGTCAATGGCGTTTCCCGCAAGCTGGATGCCCTTCTCCTGCGCCTGGCGCCTGACGTCCGCTTCCAGTTCAGCCAG
+NODE	1815	15	661	646	0	0
+GAGTAACCGACCAGG
+GTCAAATCGGCTATC
+NODE	1816	20	1024	999	0	0
+GTGATTAGTGTAATGGTTGC
+CGTCGGCGCAGGCGGCCTCG
+NODE	1817	2109	123997	123664	0	0
+CATATAAGAAGCCGCCATATCGATATGCAGGAAATCACGCGCCGAGATAAGCATTCCTGGATGCGGCTTGCGGCAATCACATACCTGACGGAACTCTTCTATGCTGCCCTGCGGATGGTGAGGACAATAATAGATGCCGTCCAAATCAACATCGCGATCCGCCAACGACCAGTCCATCCATTCGGTTAACGTTTCAAACTGCGCCTCAGTGAATTTGCCGCGCGCGATTCCGGACTGGTTCGTCACCACCACCAGCGCATAGCCCATTTTTTTTAGCTCGCGCATAGCGTCAATAACGCCGTCTATAAACTCAAATGCATCGATTTCATGTACGTAGCCGTGATCCACATTAATGGTGCCGTCACGGTCGAGAAAAATTGCGGGTACAGACTTTGCCACCTTTTATAGCTCCTGAGTAAAGCAAGTGGCGCTAGTATCGCATGTTTCAGCAGGCAAGAAAGTGCTCATCGTATAAAGCCTGATTGATTTAGA [...]
+CGCATTCACCAGACCAGGCAGCGCTTCCGGTAAAAGGATTTTACGTACAATTTGCAGCGGCGTGGCGCCCATCGCTCGCGAGGCTTCAATCAGCCCGGCAGGGATCTCTAATAACGCATTTTCCACCATACGGGCGATAAAAGGCGCGGCGCCGACGGTCAGCGGTACAATCGCGGCCTGCAAACCAATGGAGGTGCCGACAATTATTCGGGTAAAAGGAATCATCCACACCAGCAGGATGATAAAGGGAATCGAGCGGAAAATATTGACCACCGCAGAGAGGGAGCGATACAGCCTGGCGTTCTCCATAATCTGCCCCGGGCGCGTAACATACAGCAATACGCCAACCGGCAGGCCAATCACGAAACCGAAGAAACCGGAGACAAAGGTCATCGCCAGCGTTTCCCAAACGCCACGAACCAGTAACCACATCATTGCCTCAGACATAACCCAGTACCTCTACTTTCACATGGTGATCCTGCAGCCAGGCAA [...]
+NODE	1818	46	2445	2445	0	0
+AGACGATTAATAAAATAGCGAACAGAAAGGCGGGGATCGCATAACC
+TGCCGGCGGCAGCTACTACGATATCTTTCCGCTACGTGGCCTGGTC
+NODE	1819	33	1133	952	0	0
+ACTTGAACCCCCACGTCCGTAAGGACACTAACA
+TTATCTTATCCTTCCTTTGTCTCTTCATTTTCA
+NODE	1820	1	83	73	0	0
+C
+A
+NODE	1821	125	3542	3542	0	0
+CGGTTGGGCGCACTACGTCGGCCAGGAAAAACTGCGTCCGCAGACCGGCTGGCAGCCGCTGGCGTTTGCCCTTGACTGGCAGCGTCCGGCGCGTCACATGAATAGCACCTCTTACTTCTATAACC
+TCAAGGGCAAACGCCAGCGGCTGCCAGCCGGTCTGCGGACGCAGTTTTTCCTGGCCGACGTAGTGCGCCCAACCGCCACCGCTCTGACCAACGCAACCACAGAACACCAACATATTAATCAGCCC
+NODE	1822	9	207	207	0	0
+ACTCCAGCC
+CGCTGCCAG
+NODE	1823	37	37	37	0	0
+CCAGGTTCTGCCATATTTTTGGGGCGCGTTTGACGTG
+ATAGAAGTAAGAGGTGCTATTCATGTGACGCGCCGGA
+NODE	1824	51	339	339	0	0
+GTTCATAGTGGCCGGAGATAAACGCCAGCGCTTCCGGCTCCCAGCACCAGT
+CCCGGCGAGCCGTTGCCGAAGGAACTGCTGGATAAAATGCTGGCGGCGAAA
+NODE	1825	390	20742	20673	0	0
+CTACGCCGACGACGTGGTGGAGCGCTTCGTCGAACGCGCGGTGAAAAACGGTATGGACGTGTTCCGCGTCTTCGACGCCATGAACGACCCGCGCAATATGAAAGCCGCACTGCAGGCGGTGCGCAGCCATGGCGCCCACGCCCAGGGCACACTCTCGTACACCACCAGCCCGGCCCACACCCTGCAGACCTGGCTGGATTTAACAGAGCAACTGCTGGAAACCGGCGTTGACTCGATTGCCATCAAGGACATGTCCGGCATTCTCACCCCGATGGCCGCTTTTGAGCTGGTGAGCGAAATCAAAAAACGCTATGACGTGCGCCTGCACCTGCACTGTCATGCCACCACCGGGATGGCGGAGATGGCCCTGCTGAAGGCTATCGAGGCGGG
+ATGACAGTGCAGGTGCAGGCGCACGTCATAGCGTTTTTTGATTTCGCTCACCAGCTCAAAAGCGGCCATCGGGGTGAGAATGCCGGACATGTCCTTGATGGCAATCGAGTCAACGCCGGTTTCCAGCAGTTGCTCTGTTAAATCCAGCCAGGTCTGCAGGGTGTGGGCCGGGCTGGTGGTGTACGAGAGTGTGCCCTGGGCGTGGGCGCCATGGCTGCGCACCGCCTGCAGTGCGGCTTTCATATTGCGCGGGTCGTTCATGGCGTCGAAGACGCGGAACACGTCCATACCGTTTTTCACCGCGCGTTCGACGAAGCGCTCCACCACGTCGTCGGCGTAGTGGCGGTAGCCGAGCAGGTTCTGGCCGCGCAGCAGCATCTGCAGCGGGGT
+NODE	1826	4633	256198	253050	0	0
+GGCCATCTTTCATCAGGTTGATGAAGCCCACTTTCTTCGCATGGCGCAGGATTTTTTTACGCATGGGCACCGGAGCGGAGCCATCCACGGTGAACAGGTCGCGCGCGATATTGACCGCCATTTCGGGATAGGCGGTAAACATGCGGGGATTATCAAGAAAAGCTGGCAGTTTCTGATACATACGCATATCGCGCATCGGACCTTCGTCCAGATGCTGACGGTATTCCCCCAGCGACTGCTTGCTAAAATCGTCGCGCTTCATCGCCGAAAGCACCGTCTTCGCCGCCGCTTCGCCTGCGGATATGGCGAGATCCATACCCCGGATGGTAAAGCCGAGGTTCATACACATGCCGGCAGCATCCCCGGCAATCAGTACGCCATCGCCCACCAGTTCAGGCTGCATATTCATTCCCGCCTCGGGTACAACGTGCGCGGCATATTCCACCAGCTTGCCACCGGCGATCAGCGGCGCAACGGCCGGATGCTGTTTGA [...]
+ACCCATCACCATCCCGAAGCACAGTTCACGTACGGTACGACCACGGGAAATACGGGCCAGGAAGATACTCATCTGGATGGCGTAAATAACCCACCACGCCCAGTAGAAAACGGTCCAGCCCTGTGGGAAGCCGCCTTTACCGATGGCGTCGGTATAGAACAGCATCCGTGGCAGGTGCATTAACAGCATCCCGACGGAGTCGGTGAAGTAGTTCATGATGAAGCTGGCGCCGCTGACGATAAACACCCAGCCGAGCATCAGGAAGCTCAGGTAACTACGCACATCGCTGGCGATTCTGACCCCTTTTTGCAGGCCGCAGGCCACGCAAATCGCGTTCAGAATGATCCAGCAGGTAATGATGATGGCGTCGAGTTGCAGCGTATGCGGAATACCGAACAGCCATTGCATACACTCGGTGACCAGCGGGGTAGCCAGACCGAGGCTGGTACCCATCGCGAAGATCAGCGCCACCAGGTAGAAGTTATCGACGAT [...]
+NODE	1827	28	1939	1939	0	0
+TGCCGCCAGCCTTACGCATAACCAGAAT
+CACTTTCACAGATCTGATTATTGCAATG
+NODE	1828	13	1610	1610	0	0
+GGCCTGCGGAATG
+AGTACCTCAAGTA
+NODE	1829	145	7741	7636	0	0
+GTAGCGGTCTCGGTTCCGGTAAGGTCTCCGTCACTAATCTTTCATTTGAACATTACATCGATCGCGCCAGCCGAACCTGTTCAAATACTGCTCTTCCGGTAAGCACATTCCGCAGGCCATTCTGGTTATGCGTAAGGCTGGCGGC
+AAGAGCAGTATTTGAACAGGTTCGGCTGGCGCGATCGATGTAATGTTCAAATGAAAGATTAGTGACGGAGACCTTACCGGAACCGAGACCGCTACCGGCGTGCATGGTGGATTCCTGATGAATATTCCAGCGCCAGCTCAGTACT
+NODE	1830	2827	190896	188407	0	0
+GTGGCGGACGCTGGCGCCGGAGGCATTCATATTTGCTGACTAAATAAATTCTTAATTCTCCGCCGGATGCTGGCTGATTGTGGAGCTTAGGGTGAGCGAGTATGGGCGCGACATCCTGGCACCGCGCCTCCCTCTCCCCGGCCAGTACCGGGCGGTGATGAGCAACCGGCTACCGGGGCCGTATTTTGACGATGAAACGGGCCTGCATTAAAATCTGTTCAGATATTATGCACCGGAGTGTGGCAGGTTCGTCAGTCAGGGCCCGACAGGGCTGTAAGGAGGATTAAATCCTTACCACTATCCGTTGAATCCCGTCACAGATACAGATCCGCTGGGATTGTTTACATGTGAATTATGTAGTCGCATGATAGATGAGACTAATAATAGTCTGGATAGTCTTCCATTTAATCCGGCAAAAATGTTAACGGCTAGTTTAAATATGGCTAATTCTGCAAGATTGCACGCAAGTGGGGTAGCCAAACTCGGGATAGG [...]
+ATCACGCCGCAGCATACCCGCGGACTCTTTGGCTGTATTGAAGGGATGGGCGTGATCCGCATTAATAAACGGAATGCAGAACAGTGGTTAAAAACATTTCTGGGGGCGCTGAACAATACCGGAGATATTCCGGTGATTAAACGCAAAAGAACGGAACAGGAGTTAATGAGTAATTGATAATAAAAAGCCGGGAAAAGATAACCCCTCCGGCTTTTACACATTATTCATCCGGTTCCAGATGTTTTATTTCAATCCTTTTGGTTTTATTTCTGGATGCTTTTCATATAATGGATTCATTATTTTAATAAGCATTTCACCCATGATAAAACCAACCGCTTCTCGATATACCTTAAATTCATCCTCATCACAACGGGACTGAACAACAGCAACAGATTCATCAAGTTCCTTACCGAATCTCAACATTAAATCACTAATTAATATAGCTGTATCCTTATCGTTAACCATACTTATTCCTGTAGTAAAAACATCAAT [...]
+NODE	1831	42	2766	2766	0	0
+TACGATCCGCCTCGCATCGTGAGGACTATCCTTCAATCGGAT
+GATCCATCACACTTTTTATGAAAATTCTGTAACCGCTTCCAC
+NODE	1832	51	3755	3737	0	0
+CCTGTGACGTCGCCAGGAAATGGCCGTTATCCATTCTGACAAAATTATAAG
+GGAATAAACCATTGTCTGAATATGTATGAATTTGACATTATGGGACGGGTT
+NODE	1833	44	2812	2686	0	0
+ACGCGAGCCGGAAGATCAGTTTGGCCTGATGCTATTAGCCTGTA
+TCAGTGAATACCATTCCCTGCGACTGTAAAAAAGCTCGATAATC
+NODE	1834	11	448	448	0	0
+TACCGGCGACG
+TTGATAAGGGT
+NODE	1835	1	86	85	0	0
+C
+T
+NODE	1836	325	13663	13446	0	0
+GACGCCACGCTGGAGCTGAACACCGGCGGCAAGTTCGATAACGCCATCAGCGGCAGCGGCAACGTAGTAAAATCTGGCGCAGACACGCTCACCCTCTCCGGCAGCAATACTTATACCGGCGGCACCACCATCAACGACGGCACGCTGGTTGCCACTAGCGTTGATGCGCTGGGCACCGGTGACGTCACCGACGACGCCACGCTGGAACTGAACACTGGCGGCGATTTTGACAACGCCATCAGCGGTAGCGGCCAGGTAGTGAAATCCGGCGACGACACGCTCACGCTTTCCGGCAGCAATACTTATACCGGCGGCACCCTTATCA
+TCGTCGCCGGATTTCACTACCTGGCCGCTACCGCTGATGGCGTTGTCAAAATCGCCGCCAGTGTTCAGTTCCAGCGTGGCGTCGTCGGTGACGTCACCGGTGCCCAGCGCATCAACGCTAGTGGCAACCAGCGTGCCGTCGTTGATGGTGGTGCCGCCGGTATAAGTATTGCTGCCGGAGAGGGTGAGCGTGTCTGCGCCAGATTTTACTACGTTGCCGCTGCCGCTGATGGCGTTATCGAACTTGCCGCCGGTGTTCAGCTCCAGCGTGGCGTCGTCGGTGACGTCGCCGGTACCCAGCGCCTCAACGTTGCTGGCGACCAGCG
+NODE	1837	37	18628	18271	0	0
+TGTGGGGTCTCCCCATGCGAGAGTAGGGAACTGCCAG
+TACGGCGTTTCACTTCTGAGTTCGGCATGGGGTCAGG
+NODE	1838	9	623	623	0	0
+ACATCAAAT
+CATCGGCGC
+NODE	1839	2	137	137	0	0
+AA
+AC
+NODE	1840	348	23162	23162	0	0
+ACGCAGCACCAGTACGGCGCCACACTCAGGACACAGTTGCCCCTCCAGAATTTTAACGATATGCCCGTCCGCCTGACTTTTCAGCGGACGAACATAATCGCATTCCGGATAGCGAGAACAGCCGAGAAACGGACCATGTTTCCCGGAACGAATTACCAGTTCGGCCCCGCACTGCGGGCAGGGCTCATTTTTACGCACCGAAAACAGTGCTGATTTAGCCATATTCACTCATGCAGCATTAACACCTATCAATGCAGCATACCTTCATTTACCTCAAAGAGTAATTCTTCCATTTGCTGATAGGCGTTTTCACAGCCCGGAATGTTGAATAACACCATCAAAATAACC
+AGCAAATGGAAGAATTACTCTTTGAGGTAAATGAAGGTATGCTGCATTGATAGGTGTTAATGCTGCATGAGTGAATATGGCTAAATCAGCACTGTTTTCGGTGCGTAAAAATGAGCCCTGCCCGCAGTGCGGGGCCGAACTGGTAATTCGTTCCGGGAAACATGGTCCGTTTCTCGGCTGTTCTCGCTATCCGGAATGCGATTATGTTCGTCCGCTGAAAAGTCAGGCGGACGGGCATATCGTTAAAATTCTGGAGGGGCAACTGTGTCCTGAGTGTGGCGCCGTACTGGTGCTGCGTCAGGGGCGCTTTGGCATGTTCATCGGATGCAGTCAGTATCCGCAATGTGA
+NODE	1841	51	3978	1692	0	0
+CATTTCAAGTCTTCCAGGTCAAACTCTGCGGTATCCAGCGCCAGCACACGC
+GGGTTATTTTGATGGTGTTATTCAACATTCCGGGCTGTGAAAACGCCTATC
+NODE	1842	45	5963	5849	0	0
+ACTTTCTGAAGCAGTATCCACACACTATCCCAGCCACAAGGGGGT
+AAAATCCATCTGGTAAAGTTCCATCAGATAAGTCAGCACGATATT
+NODE	1843	78	5918	4728	0	0
+GATTATGACGATAGCAGAGCAACTGGAAGAGAAAGGTCTGGAGAAAGGTCGTGCTGAAGAGCGCTCCAGATTAGTGCT
+TTCCAGTTGCTCTGCTATCGTCATAATCACCCCCTTGTGGCTGGGATAGTGTGTGGATACTGCTTCAGAAAGTTCAGC
+NODE	1844	42	3187	3187	0	0
+TAAGTTATTCACTTTCCGAATCAGGCGTGATGACTTTGACGG
+AGACGGCAATTTTATTGAACATGGTGGGATCGGACTGGTTTC
+NODE	1845	9	674	674	0	0
+ACTCAAAAA
+AACCATTCC
+NODE	1846	1	332	227	0	0
+A
+T
+NODE	1847	51	3563	3563	0	0
+ACCCGCGCCGCACTTGGCGTCAATGCGCCGCCTATCACTATAGAGGTGCAT
+TATGAACAATCGCCAGTGACATAATCCCTCCTGTTACGTGGATTATGCGGA
+NODE	1848	12	600	600	0	0
+ACCTTGGCAAGG
+CTTATCTACAGT
+NODE	1849	2	104	104	0	0
+TC
+TT
+NODE	1850	1	169	169	0	0
+G
+A
+NODE	1851	26	6749	6749	0	0
+TGCTCTACCAACTGAGCTATTCCCGC
+GAGTTCGAGTCTCGTTTCCCGCTCCA
+NODE	1852	12	870	858	0	0
+ACCTTGCCAAGG
+CTGTGCTTAACA
+NODE	1853	1	71	70	0	0
+T
+T
+NODE	1854	9	1265	1261	0	0
+CGGGGTCGC
+TTGGGTGCG
+NODE	1855	6	308	308	0	0
+CGGTGA
+GACACA
+NODE	1856	21	1093	1073	0	0
+CGGTGGACACGCAAATCGCCA
+TTCCCCGCTTTATCTTCGACT
+NODE	1857	2	112	110	0	0
+TT
+TG
+NODE	1858	765	51981	51846	0	0
+AAACTAAAATCTGGCTCCTCTGACTGGATGCGATTCTTTTAGTATTTCATTGAAATAAAATGATTTTTATCAGAGGATTAAAAATAGGGCCCTTGAAAAGGCCCCCTAATGATATGATTGGCTTAAATCGCGATGTAAATCACGTTTTTCAGCAATTAAAGGACAAAAACCTACATTAGCCTTTAGCAGGCTGGTTAATTAGCTCAAGATTCACCACTATAAAAATGTAGAGCAGGGCCGGATAGTCTTGAGCTTTGACAGTTTTAGTCCTTTTTTACAGTGCTGTCAGGTCAAGTGCAATTATCCATCTTTACGCATTTTCCTGTAACTTACATCAAATATATAATTAGATTGAGGAGAGAGCCTCTCACGTTCTTGTTTGATGAGTATTACTTGAGGAGTAATGGAACAATGGGGGCTATTAAAAGAATAAACCCGGTACCTGCGACTACACCAAATGACACTCGGAAGCACCTTCCATAAGTCCATGTC [...]
+TTTGTTTGCAGCAAGGCGGTAAATACAGTTATCTGGCATCGGCACTGGGATTATTTATAGTTTTTATTTCATTTATTTTTTATAAATTAGATGAGCGAGTTTCTTTGCTGATAAAAAAATCTGAAGTAGCTCTAAAAATATTAGAGGAAGAATTTAATGAACCAACAGCAATGATCTTTAAAAATGAAAGCATCGATAATTCTCTGAATAAATCTATACTTTCGACATGGACTTATGGAAGGTGCTTCCGAGTGTCATTTGGTGTAGTCGCAGGTACCGGGTTTATTCTTTTAATAGCCCCCATTGTTCCATTACTCCTCAAGTAATACTCATCAAACAAGAACGTGAGAGGCTCTCTCCTCAATCTAATTATATATTTGATGTAAGTTACAGGAAAATGCGTAAAGATGGATAATTGCACTTGACCTGACAGCACTGTAAAAAAGGACTAAAACTGTCAAAGCTCAAGACTATCCGGCCCTGCTCTACATT [...]
+NODE	1859	6	362	352	0	0
+AAACTG
+TTTTAC
+NODE	1860	7	423	411	0	0
+ACCGATA
+TTTTTGC
+NODE	1861	51	2686	2662	0	0
+CCAAGCTCTTTTTCAAGCTGCCGAATATTAAAACTCACTACCGCTTTTGTT
+GCGTAACGTTACTGCTACGTTCCACCCGACGATTGACGCTCACAGACGCTG
+NODE	1862	108	4925	4816	0	0
+AGGCGGCGACTGGCAGGAGGATAACGGCGTCTGGCACCAGAACGTGTTTGCCTATTACCTCTCCATTTCGTGCAACCACTGCGAAGACCCGGCCTGTACCAAAGTCTG
+GTAATAGGCAAACACGTTCTGGTGCCAGACGCCGTTATCCTCCTGCCAGTCGCCGCCTGCATACTCATAAATGCGGCGGAAGCTGACATCCGGGGTCAAATCTTTGTA
+NODE	1863	734	43622	43431	0	0
+TAACGTCTCTGTCGGTACGATTTTCTCGATTTATCGCCGCGTGACGCCCGTCGGCACGCCGGTCACCGAAGAAGATTTCCTGCAACCCGGCAACAAACAGGTCGCTGCGGGATATGTCGTGTATGGCTCGTCCACCATGCTGGTTTACACCACCGGCTGCGGCGTACACGCTTTCACCTACGATCCGTCGTTGGGCGTGTTCTGTCTGTGCCAGGAACGTATGCGTTTCCCGGAAAAGGGTAAAACCTACTCCATTAACGAAGGCAACTACATTAAATTCCCGAATGGCGTGAAGAAGTACATCAAATTCTGCCAGGAAGAGGATAGTTCAACAAGTCGCCCTTATACCTCACGTTACATTGGCTCTCTGGTGGCCGATTTCCACCGCAACCTGCTGAAAGGCGGCATCTATCTCTACCCCAGCACCGCCAGCCATCCGCAGGGGAAACTGCGTCTGCTGTATGAGTGCAATCCGATGGCGTTCCTCGCGGA [...]
+TGCCCAATGGCGGCTTCATGCGTTATTCCGCATGGTGGTAAAGATTACGCGTCCGGGTATTCGCGGATAAAGCGTTCCACATCGTCAACCATATGGCGGTTGCCGACGAAGAACGAGCGGCGCTGGTGCAGGCTTTCCGGAATGATATCCAGAATACGTTCTTTACCATCGCTTGCTTTGCCGCCGGCCTGTTCCGCGAGGAACGCCATCGGATTGCACTCATACAGCAGACGCAGTTTCCCCTGCGGATGGCTGGCGGTGCTGGGGTAGAGATAGATGCCGCCTTTCAGCAGGTTGCGGTGGAAATCGGCCACCAGAGAGCCAATGTAACGTGAGGTATAAGGGCGACTTGTTGAACTATCCTCTTCCTGGCAGAATTTGATGTACTTCTTCACGCCATTCGGGAATTTAATGTAGTTGCCTTCGTTAATGGAGTAGGTTTTACCCTTTTCCGGGAAACGCATACGTTCCTGGCACAGACAGAACACGCCC [...]
+NODE	1864	28	3533	3533	0	0
+GCGGTTCGATCCCGCTTAGCTCCACCAA
+GCGCTCTCCCAGCTGAGCTATAGCCCCA
+NODE	1865	14	4271	3983	0	0
+GCTAATCCTGGTCG
+ACCGCCCCAGTCAA
+NODE	1866	12	3973	3816	0	0
+GACATCAGGAGG
+CTTTAGGAGGAG
+NODE	1867	2025	116412	115644	0	0
+GTACCAGTAATGGCAGCTACAAACCTGTAAAGTAAAAAGGCCGCGTTTTCCCGGGGAGGCTTTTAGACAGGAGAAGGCCATGGCGTTAAGGATCAGAGTATTGCTCGAAAATCATAAGGGAGCTGGAGCGGATAAATCGTTGAAGGCCCGGCCAGGGTTAAGCCTGTTGGTCGAGGATGAGTCTACGTCTATCTTGTTCGATACCGGCCCTGATGGCAGTTTTATGCAAAACGCGTTGGCGATGGGGATCGACCTGTCCGATGTGTCTGCTGTGGTGCTTTCGCATGGTCATTACGATCATTGCGGCGGCGTGCCGTGGCTTCCTGATAGCAGTCGAATCATCTGCCATCCCGATATTGCACGTGAACGTTATGCAGCAATGACTTTTCTTGGTATTACCCGAAAAATAAAAAAATTGTCGTGTGAGGTGGACTATTCACGCTATCGAATGATGTACACGCGTGACCCCCTGCCGATTGGCGAAAACTTTAT [...]
+CGCATTGCCGGTTTGCGAAGCGGAGATAAGCGTAACCCCCGGCATCTTCCCCTCAGGAGCAGGCGTGACGGCAACAGCGCCTGAGCGCGGATTCAGTACGCCCCAAAAATAGCCGGAGACCCAGGCAAGCTGTTCGGGAGTAAGGTCGGTTGTCGCGGCCTGAAGGCGCGCCAGTTGCTCCGGATTAAGCGGAAGCAACCCAGTCAGTGGAGCCGGTGTCGTCATGCGTCGTTATGTTCCAGTAAGCAAAGCGGATCTATACACAAAATCATTCAAGTTCGCCGTAAGCTGAGCGCGCCCCAGGAGCGTACATAAATACGTGACTGGGGTGAGTAAACGCAGTCAACACAGATGCGGCTTGAAAGATGAAATGTATAAGCGATAAATCCCAAACTGAGGATAAGGTTAACGGTGAGAGGAATAACAATTAAAGAAGGGTTGGAAATAACAAATAACCAAATGAACTAACCTGTTTTAGTTATCGTTATTAAC [...]
+NODE	1868	9	4317	1823	0	0
+ACTATCATT
+TTATAACGG
+NODE	1869	4	1971	844	0	0
+AACT
+CCGG
+NODE	1870	28	13631	7488	0	0
+GAATCCATAGGTTAATGAGGCGAACCGG
+CACACTGGGTTTCCCCATTCGGGTATCG
+NODE	1871	6	2813	2309	0	0
+GGGAAC
+ACGAGT
+NODE	1872	102	5680	5626	0	0
+GTTATTGTTTTTTTTAAACGTCTCCGGACTCGCTGGGATATCCCGAAACTAAAATTTGGCTCCTCTGACTGGACTCGAACCAGTGACATACGGATTAACAGT
+TTAGTTTCGGGATATCCCAGCGAGTCCGGAGACGTTTAAAAAAAACAATAACTTATCTTTACCCGGTTGACCTGAGAAGGTTTACCGGGTTTTTTGACATCC
+NODE	1873	4	457	452	0	0
+CCGC
+AATT
+NODE	1874	91	11339	7624	0	0
+CACCAGCGCCATATACGAGTACGCCGCCACCGCGATGGCCCCCAGCAGCTCCGGCGCCAGCTTGCCCGACAGATAAATCGCCGTCGGGCCG
+GGGCCATCGCGGTGGCGGCGTACTCGTATATGGCGCTGGTGCCGTTAATCCAGCCGCCGATTATGAAGGCGCTGACCACGGAGACGGAGCG
+NODE	1875	21	1817	1784	0	0
+TGTCGCGCCGCTGGTCATCTT
+CGCCAGCACCCCCGGCGTGTA
+NODE	1876	96	4325	4230	0	0
+CATGGGCGTCGGCGCGATGACCGACTTCGGCCCGCTGCTGGCCAACCCGCGCACCCTGCTGCTCGGCGCGGCGGCGCAGTTCGGTATCTTCGCCAC
+GTTGGCCAGCAGCGGGCCGAAGTCGGTCATCGCGCCGACGCCCATGAAGATGACCAGCGGCGCGACACCGGAGCCAATCGCCACTTTATAGAACAG
+NODE	1877	5	804	773	0	0
+TTGAT
+TTCGG
+NODE	1878	252	14265	14080	0	0
+AAGCAGAATGCAAAGCCCTCCTGAATAAAGACCTTGCCACGGTCGCCAGACAAATTAACCCGTACATTAAAGTCGATATACCGGAAACAACGCGCGGCGCTCTTTACTCGTTCGTCTACAACGTGGGTGCTGGCAATTTCAGAACATCGACGCTTCTTCGCAAAATAAACCAGGGCGATATCAAAGGCGCATGTGATCAGCTACGGCGCTGGACATACGCTGGCGGTAAGCAATGGAAAGGGCTGATGACTC
+AGCTGATCACATGCGCCTTTGATATCGCCCTGGTTTATTTTGCGAAGAAGCGTCGATGTTCTGAAATTGCCAGCACCCACGTTGTAGACGAACGAGTAAAGAGCGCCGCGCGTTGTTTCCGGTATATCGACTTTAATGTACGGGTTAATTTGTCTGGCGACCGTGGCAAGGTCTTTATTCAGGAGGGCTTTGCATTCTGCTTCGGTATACGTTTTACCGAGCATGATGTCTTTTCCGGTGTGTCCGTGACAT
+NODE	1879	34	1679	1644	0	0
+TACGTAGTACGTGAAGTTTGACTCGCTACGCTCG
+CGCGCTGTCCGTGTCCAAACTGGCTGCGCCAATA
+NODE	1880	31	1516	1496	0	0
+CCCTTCGGGCCGCCGCAAGCGGCGTTCAAAA
+TTCACGTACTACGTATACGCTCCGGTTTTTG
+NODE	1881	5	1248	1248	0	0
+TGCTC
+GCTCT
+NODE	1882	1	190	190	0	0
+G
+G
+NODE	1883	12	3162	1455	0	0
+CCGAAGGGCGAG
+GCGAGCACTGCC
+NODE	1884	867	51910	49886	0	0
+GGGCGCTCATTAAGAACGTGTAGGCCATTGCCCCGCCAGACCATCACCAGTTCACAAAACTCATGCGTATGTTCCGCAAAAACATCCTGTGGATAGCGATCGGCAACCGTAACGGCCTGCTGCTCATCAGTAAAAAAATCTTTTTTCAAAAGGATTAACTGATTTGCCACCGCAGCACCTCATGTTGAATGCTTGCCGGATGGCGCTACGCTTATTCTGTCTACCGCTCGCCGCCGTAGGCCAGGTAAGGCGCAGCCGCCATCCGGTATTAAAGGGTATAATTATCAGCATATTGGCGACGAAAACGTTGATAGCGTTCGCGTTACTGGATTATCGCATCGCGTCCCTGACGGATATCCCGCGGCGACCAGTTAAATTCTCGGCGAAACAGAGTCGAAAAGTGGTTACTGTCGCCAAAACCGCAGCGGTACGCGATTTCTGTCACGCTATGATCGCTATGGCGCAATAAATGCCGGGCTTTGATCAAACGCA [...]
+CGGGTGAATCAGAGTGTGTTGCAGCAGGTGCGCCAGTTGGTCGGTCTGATGGAGCGCGCCGGAGACGGCATGGATGCGCCTGCCGTGGCGAATCGCGAAATTTTGTTTATGCAACTACTGGTGTTGTTGCGCCGCAGTAGCCTGATGGAAGGCGCGACCAATAACGACGCCAAACTCAACCAACTGATGGCATGGCTGGAAGACCATTTTGCGGAGGAGGTCTGCTGGGAGGCGGTAGCTGAACAGTTTTCGCTGTCGCTACGTACGCTGCATCGTCAGCTTAAACAGCATACCGGCCTGACGCCGCAACGTTACCTTAATCGCCTGCGTTTGATCAAAGCCCGGCATTTATTGCGCCATAGCGATCATAGCGTGACAGAAATCGCGTACCGCTGCGGTTTTGGCGACAGTAACCACTTTTCGACTCTGTTTCGCCGAGAATTTAACTGGTCGCCGCGGGATATCCGTCAGGGACGCGATGCGATAATCCAG [...]
+NODE	1885	51	2964	2688	0	0
+CGACCTGGGCGTAGGGAACGCAACCGCTGCGCCATTAGTTTGCGGGTGTTT
+GCCCAGCCATAATGGATTAGGTTGCTTATGAAGCGCGTGTATTAAAGGATC
+NODE	1886	339	18441	15721	0	0
+TGGCGAAAGGATCGCTAAGCGACACAAATACCCTCAGTTCGATTCTCTGAGGGTGTTCATGCGACTGCCCAACAGCAATGTTTCAACCTCTTCTAACGCAACGGAAGGAAATAACGTGCCCTGGGTTGCCCAAATGCCTGCCGTTTTTAACGCCGGCAAATAGCGTGTGTTTTCCTGGCCACCCACCACGATCTTGTCACAATAACGCCGGATATGTTTGACGAGCAGCGGAAACGTCATTTTTTCAATTTGTGAGATAAAAAAGCTGCGATCAAGTTTTACGCCGCTAAAACACCCGCAAACTAATGGCGCAGCGGTTGCGTTCCCTACGCCCAGGTC
+TAGCGGCGTAAAACTTGATCGCAGCTTTTTTATCTCACAAATTGAAAAAATGACGTTTCCGCTGCTCGTCAAACATATCCGGCGTTATTGTGACAAGATCGTGGTGGGTGGCCAGGAAAACACACGCTATTTGCCGGCGTTAAAAACGGCAGGCATTTGGGCAACCCAGGGCACGTTATTTCCTTCCGTTGCGTTAGAAGAGGTTGAAACATTGCTGTTGGGCAGTCGCATGAACACCCTCAGAGAATCGAACTGAGGGTATTTGTGTCGCTTAGCGATCCTTTCGCCATGCGTCAGCGGTCAGCGCCTCGCCAAAATGGCCTGCGATTAAACGGCGGG
+NODE	1887	1917	88584	88404	0	0
+GCCGGCTGCTGGAAGAAACGGGCGCCGGTTTCGCACTGTTCACGGCGGGTATTATACTCGCTGCCCACCAGCGTGCGCTTAAAGTTACTATTGATGATCACCACGGCGACACCTTTCGGCATGGAAACCGCTTTGGCGCCGAGCGTACGGCAATCAATCAGCAACGCATGATCTTTTTTGCCGAGCGCAGAGATGAGCTGATCCATAATGCCGCAGTTACAGCCGACAAACTGGTTCTCGGCCTCTTGTCCGTTGAGCGCAATTTGCGCGCCGTCCAGCGGCAGGTGATAAAGCTGCTGGAAGACGGTGCCCACCGCCACTTCCAGCGAGGCGGAGGAGCTTAACCCGGCGCCCTGCGGCACATTGCCGCTGATGACCATATCCACGCCGCCAAACGCGTTGTTACGCTGTTGCAGGTGTTTCACTACGCCGCGCACATAGTTAGACCACTGCTGGCTATCGTGGGTCACGATCGGCGCATCCAGTGAAAAT [...]
+ACTGGCGCGTCACCCGCACGCTTGACGAAATGGCGCAGGACACCTGGCACTGGCAGTCACGCCATCCGCAGGGATACCCAGATTAAGGACGTTGTTATGACCCCATTTAATCCCATCGATCATCCGCATCGCCGTTATAACCCGCTTACCGGCCAGTGGGTTCTGGTTTCGCCGCATCGCGCAAAGCGCCCCTGGCAGGGGGCGCAGGAAACGCCGTCTCAGCAAATGCTGCCGGCCCACGATCCCGACTGCTTCCTGTGTGCGGGCAATACGCGTGTCACCGGCGATAAAAATCCCGATTACAAAGGGACTTACGTCTTTACTAACGATTTCGCGGCGCTGATGGCCGATACGCCGGATGCGCCGGACAGCCACGATCCGCTGATGCGCTGTCAGAGCGCGCGCGGCACCAGCCGCGTGATCTGCTTTTCTCCCGATCACAGTAAAACGCTGCCGGAGTTGAGCCTGCCCGCGCTGACGGAAATCGTCAGA [...]
+NODE	1888	169	7982	7982	0	0
+GCGTCCGTCATCAAAGGGAACCGTGTCGGTATGGCCGGTCAGCAGCAAACCGCCCGCGCCATGTCCGGTGCTGGCGAGCATATTGAATTTGTTTCGCGTTCCTGGAACCGGTTGAACCTCTACGTTGAAACCAAGATCGCTGAACCAGCCTGCAAGCAAAGTGATTAAA
+AGGTTCAACCGGTTCCAGGAACGCGAAACAAATTCAATATGCTCGCCAGCACCGGACATGGCGCGGGCGGTTTGCTGCTGACCGGCCATACCGACACGGTTCCCTTTGATGACGGACGCTGGACGCGCGACCCGTTCACGCTGACCGAGCACGACAATAAGCTCTATGG
+NODE	1889	18	820	727	0	0
+CCGCCGTCGGAGAAGTCA
+TGTTGGAAGGGCAGAAAG
+NODE	1890	5	604	604	0	0
+TGCTT
+GCTGG
+NODE	1891	5	320	320	0	0
+ACCGG
+AATCC
+NODE	1892	5055	258264	257281	0	0
+TATACCCCGCTCGCGCCTTGGCGGAAAGCCCCGCCATTAGCGTCCCCATAAAGTCCGTCGTCCGGTCAGCCTCTTGCGGATACCGCATGGCGACATAAGTGCGAATCAGGTTTTCAGCAGCGATGTAAAACTCGCAGGCGGCCTCTCGTGCCGGTTTATCGTTACAATGAGCGCCCTCCAGAACCAGACATCCAGTGGCATCAGGATCGGCAGCGTAACGTCTTGCCGCTTCCATCAGCACATCGATAAGGCACTTCGCGGTCGGGCGATCGTGACGCAGAAGCGCCCCGAGCGGAATCGCGTCGGTCATCCTGTAACGCTTTAATACGCGAGTATACAGCCCCAGCTTGCTGCCAAACGCCGCATAGAAACTGGGAGGATTGATCCCGAACGCTTTTGTCAGATCCGCTACGCTCACCGCGTCGTATCCGCGCGAATGAAATAAGTGTTGAGCGGTTTCAATGGCTTGCTCCGGATCGAACTGGCGAGGGC [...]
+ATCTTAAAAAGGAGTCACAAGACAGTTGTCGTAAAGCATGAGTAATATTTACCTCAGTGTCAGGAAGGTAACCGGTGTAAGTTATGGCAAAATAAGAGGAACGACACCCGCAATCGCAATTCAAGCTGTGGCTTTTTAGTGTTTATCTCTGGGGTGATGAGAACAAGAGAGCACTTTAATATCATTCTTTCCTTTATTCTTGAGGGCGCATTCAGTTTTGGGCCGGAACCGGAAGCTATTCGTGACGCTATCTCTATGGATTAAAGCGTTTTGTTAAAAGCATCGTTAGATCACAAAACGGAAAACTATTTTCCCTACGGTAAAAATGTCGGCATCAGTTTTTGCAGATAAGAAAAAAGCATTATCAGACATGGTGTTACAGCAGGAGCACATAACCAGGCACTGATGCGTACTGGTTTCTTGTTAACGCAAGGTAACCACGCCAGCCGCCTGGTGCTGGCAGAAGGCATGGGGATTAAGCGAGCGCCTGAT [...]
+NODE	1893	51	53	53	0	0
+GATCCATACCATAATGAATACTGGATCCGGCAATAATGCACACGCTGGCTA
+CCCTGGAACGTGCTGGATATTGTGCAGCGCTGGGACAGTCTGTTTGCTTCA
+NODE	1894	254	12026	11950	0	0
+CGAGCGGAAAAACAGCGGATTCGCGATATCCAGCGTGCAAGACGCGGCTGAAGCCACTAAAATCTTCCACTATGGCAATGCGTTGCCGCGCGGGTCGCGGCATCATTTTCAGGGAAGACATTCATTGGGATTTATAAAGCAATCAACCTCATCACATGCCCGTTTAAATGTGCCTACGCTGGTGCAGGTTGCGGCTATGGCGATTATTTTGATTCGCGGTCTCGATGTGCTGATGATTATGAATACCCTCGGCA
+ATCGCCATAGCCGCAACCTGCACCAGCGTAGGCACATTTAAACGGGCATGTGATGAGGTTGATTGCTTTATAAATCCCAATGAATGTCTTCCCTGAAAATGATGCCGCGACCCGCGCGGCAACGCATTGCCATAGTGGAAGATTTTAGTGGCTTCAGCCGCGTCTTGCACGCTGGATATCGCGAATCCGCTGTTTTTCCGCTCGCGCCATCAGGTACCAGGCAATAAATCCGACGATTCCTACCACGCCGAGGA
+NODE	1895	219	12237	10934	0	0
+CCCTGCCCCTCGCGGAACAGGTCCGGCAGTATCCCCTCATAGCTCACCGTCACCGACCCTTCGGCGTCGTAGAGGCTGAAGTTCACCTTCAGCGAGTCCGGGTCGCGCCTGACGCTGCCGGGCATCACCATCCCGCCGACGCGCAGGCGCTGGCCCGCCGCCGGCAGCTGCTGCGTCTCGCGCTTGCCGTAGAGGATTTCGCCGGGGGTATAGAACAGG
+AGCTGCCGGCGGCGGGCCAGCGCCTGCGCGTCGGCGGGATGGTGATGCCCGGCAGCGTCAGGCGCGACCCGGACTCGCTGAAGGTGAACTTCAGCCTCTACGACGCCGAAGGGTCGGTGACGGTGAGCTATGAGGGGATACTGCCGGACCTGTTCCGCGAGGGGCAGGGGGTGGTGGTGCAGGGCACCCTGGAGAAGGGCAACCACGTCCTGGCGCACG
+NODE	1896	37	1186	1186	0	0
+GCGGCACGCTGGTCGCCAGCAACGTTGAGGCGCTGGG
+GCCGCCGGTATAAGTATTGCTGCCGGAAAGCGTGAGC
+NODE	1897	6	229	229	0	0
+TACCGG
+AAGGGT
+NODE	1898	1033	61794	61195	0	0
+GGTGCAGCAGATCGCTAAAACCTGCCCGAAAGCGTGCGTGGGCATTATCACCAACCCGGTGAACACCACCGTTGCGATTGCGGCGGAAGTGCTGAAAAAAGCAGGCGTATACGACAAAAACAAACTGTTTGGCGTCACCACGCTGGATATCATCCGCTCTAATACCTTTGTCGCAGAGCTGAAAGGTAAGCTGCCAACGGAAGTTGAAGTCCCGGTGATTGGCGGGCACTCCGGCGTGACGATTCTGCCGCTGCTGTCGCAGATTCCAGGCGTAAGTTTTACCGAACAAGAAGCGGCCGAGCTGACTAAACGTATTCAGAACGCCGGTACTGAAGTCGTCGAGGCGAAAGCCGGCGGCGGATCGGCAACCCTCTCTATGGGTCAGGCTGCCGCGCGTTTCGGACTTTCTCTGGTTCGCGCTCTGCAGGGCGAAAAAGGCGTGGTGGAATGCGCCTATGTGGAAGGCGACGGTCAGTATGCCCGTTTCTTCTC [...]
+GCCTCAAGATGCGCGACCTGCATGTGCCTGTTGGGCAGTCGGATTAAAAAACCTTCCTGTTCGAGTGACTGTAGCGCTTCTCGAACCGGCATTCGTGAAAGACCAAGCTGCTCCGCAATACTTTCCTGCGCGAGTTCTTCTCCCGCTTTTATATTGCCGGAAAGAATTTCATAGCGAAGCATTTGCGTAATGTGATCGCGGGTTTGCGTTCTTTGGATCTTTTTCACGACGTTCTCGTTAATAACCGATAAGACGTGAGGAGTTTAGCAGATTTAGTACTTGATTTCGTGGCTTGTTTACAGTCAAAGAAGCCGGAGCAAAAGCCCCGGCATCGGGCAGGAACAGCTTATTTATTAATAAAATCTTCACCCAACTGAATATCTTTTTTCAGCGTATCCAGCATAGCGTCCAGCGAATGTTGCTCGAAAGCGCTCAGTGTGCCGATGGATTTACGCTCTTCTACACCGTTTTTACCCAGCAGCAGCGGCTGAG [...]
+NODE	1899	2	268	268	0	0
+CC
+TA
+NODE	1900	10	2648	668	0	0
+GGGTGAGCGA
+TGCCGCCTTT
+NODE	1901	25	4496	550	0	0
+ATGTTTGAATATAGGCAGCGCAGGG
+CTCGTATATGGTATCGCTGCCAGCA
+NODE	1902	1	181	179	0	0
+T
+A
+NODE	1903	1144	60943	60538	0	0
+GTGGTTCGCGCCCGGAAAGTGTTTGGCGAAAGCCGCATTACGATTATCTCGCAAGCATTTCATAATCAACGGGCGATCTGGCTGGCGCAACAATATGGCATTGACGCTATCGGCGTTAACGCGCCGGATCTGAATAAAAGGCACGGAACCTACACACGACTTCGGGAAAAGCTGGCGCGGGTTAGCGCGGTGCTGGATGCCAAAATTTTGCACCGTCAGCCTAAATATCTGGGCGCTGGCGTCACTATTGGGGCTGATAGCGCACACGGGTGCCCTTCTCGCCAGTAAAATGCCAGAGTGCGTCGCAGCGCACTGGCAAGGGCGGAAAGGCGTGCTACATTGACGAAAATCCCTTTCTGGAGTCCGCTGACGTTTATGATACGTTTCGCTGTAATTGGGACTAACTGGATCACGCGCCAGTTTGTCGACGCCGCCCATGAAACCGGCAAATTCAGGCTCGCCGCCGTTTACTCCCGTAGTCTTGAACAGGCG [...]
+ATTTCACTGGCCAGTACCGAGTCGCTGACTTTGGAATGCTGTAGCGTGACGCTAAAATCGCCGTAATCCATAACCACGACGCCGTGCGCATCTACTCCGCTTTCCAATAAATTCGCCGACGCCTGAACGCTGCGCGGCTCGCCCCATAGCGCGATCGCCGACGCCAGACAGTAATACCCGATATCCATAATCGAACCATTGGAGAAGGCCGGATTAAACGTATTCGGATTTTCACCGTTCAGATAGCGCTGATAACGTGAAGAGTACTGGCAGTAATTTAGGAATGCTTTATGCATTCTGCCGATTTTCGGCAACGATTCCCGCAGCAGCAGGAAATTGGGCAGGCAGGCGGTTTTAAAGGCTTCAAACAGTACCCGCTGATTATCGCGCGCGCAGGCGATAGCGGCATCAACCTCCGCCAGGTTAGAAGCCAGCGGCTTTTCGCACATGACATGTTTTTTATGCTGCAAAAAGCGCTGCGTTTGGGAGAAA [...]
+NODE	1904	42	964	964	0	0
+ACAGCCGACAGCGCCGCAAGACAGCTTGATCCACCCGCTGTT
+CTGATACTGTGGCTGCGGCGCTACCGGCTGCTGCGGCTGCTG
+NODE	1905	51	69	69	0	0
+GTTTTCCTTTGGCGTCAAACACCACCGCAGCATGCGTCGGCTGATACTGCA
+CCCTTCCGTGATGAGCTCTTTGAACACTACAAATCGCATCGTCCTCCGATG
+NODE	1906	2175	129932	128624	0	0
+AAACCCAATAATTTCTGTGCTTGAACATCAAGTTGGGCTGTTGGAAGGTTAGTTTTTACTTCGAATACTGATGAGTTACTCACGAAAAATCCTCTCTGTTTGTGCCAAAACCATTACTGCTATAGTTACGACCAGCAGAAGAGGCTAGTCCTTTGTGACCGACATCGGTTGAGGCTGGCACCCAAGATATCTTCAGAGGAAGCTTCGCGCGTTCTTCCGCCGATGAAGAATCGGTATAGCGCAAATGGATACGAACCCACCCGCCTTTATCTTTTGGTGTCAGCGGCCACAATACACCGCCGGGCCTTCCTGTTCCCGTTGCACCTTCAGTCTGAAACTCATATTTGACTGCGCGGACTTCAGTGGAACCGTTCATAAGCGTCACATCAGCGAATTTAAGATAGTTTTTCTTGGCCAAGACTTCGATATCGTGGGCATAGTTTGCTGCATCGGACTCAGTCATCGCCTTGGTCGAGCCAGCAATCATAATCA [...]
+GAATCGCTGCGGGTCTACGGGATAAGTGCGCTCTGGGTGAAGTCGTCATCGCTGAGCGAGTTGTCGCTTATGAAGGTGCGGCTTTTCTTGAAGAGGGCAGAGTCGAAAATCGTCCGGAAATTAGCAGATTAAGTATGCGAGTTCGCCAAGATGTTAGTTCATACCTTTCCAACAGGGCGACACTCGAATTTCGCCTTACAGAAAGTTATAGAACACTGGGTATTGAATTCCCCGACCAAGTGGAGGCGGGTCCCGTCATTCAAGGAGTCATGCCGAAGACAGCCACTGTTGCTAGTGGTGAAAAGCTTCTTCGAGATCCCGATAAATTCTTGGGCATGCGTGAGCTTCACGGTAAGACTGAAGTTGCAGAAATGGAAGGCGCAGGACTTTTCGCTGCATGCGCCAACTTTGGCAAACCAGTGCTGATGATTCGGGGTATTAGCGATTTTGGTGATTCGAAAAAGGACAACCGATTTCATCTCTTGGCAGCGA [...]
+NODE	1907	51	177	177	0	0
+GTCGGTCGCTGGGGCTGCGGCAGGCGCTATCATCTCACTCATAAAAGACTC
+CCCGCCAGGTGAGCGAGTGGGCGAGGAGGCGCAAGGGAGTCAGAGGTTGAT
+NODE	1908	19	217	210	0	0
+TTGACGAACAGTCAAACCC
+TCGTAAGACAGTTTGGTCC
+NODE	1909	42	901	901	0	0
+AGTGGCGCTACGAGACGGTGACCGCCGAGGAGTTACTGTCGC
+TGGTTATAGAAGTAAGAGGTGCTATTCATGTGACGCGCCGGA
+NODE	1910	501	29884	29730	0	0
+ACTGGTCGTCGTCACAAACAATCTCCGCGAATTTGAACGCATTCCGGGTATCCGAATCGAAGACTGGTGCTAATTTCTGCATCAGATGTTATCCCCGGATTCAAACTCTTTTCCGAATTTAGTGGCACAGTCAATTTGGTTACCTGCTTAATGGTGGTTTGCATCACATTTTTAGCTGGTGGTATTTTTTTATGTTGACTGGAGATATCTGCCAACAGCATAACTTTTACGGCCAGATAATAAATAAAAGAGTACCAAAATGTCGTATTCTGACATGTTTACGAAGGGAGTACCGCTCCCTTCTTTTTTTGTTTCCTGGATACTCACTGAATAATGCCGTTACTGCCCGATAACTGCCGCCCCCCCTCACCATAGCCGTTTCCTGCAACTAAGTCACAGACGTTGATTTACCAGGCCGATATGCCTTCTTTCCCGTTATATACCCTTCATACTTCAAGTTGCTTATGTGTTGGCTACGGATTACCCGGCCCA [...]
+TATGAAGGGTATATAACGGGAAAGAAGGCATATCGGCCTGGTAAATCAACGTCTGTGACTTAGTTGCAGGAAACGGCTATGGTGAGGGGGGGCGGCAGTTATCGGGCAGTAACGGCATTATTCAGTGAGTATCCAGGAAACAAAAAAAGAAGGGAGCGGTACTCCCTTCGTAAACATGTCAGAATACGACATTTTGGTACTCTTTTATTTATTATCTGGCCGTAAAAGTTATGCTGTTGGCAGATATCTCCAGTCAACATAAAAAAATACCACCAGCTAAAAATGTGATGCAAACCACCATTAAGCAGGTAACCAAATTGACTGTGCCACTAAATTCGGAAAAGAGTTTGAATCCGGGGATAACATCTGATGCAGAAATTAGCACCAGTCTTCGATTCGGATACCCGGAATGCGTTCAAATTCGCGGAGATTGTTTGTGACGACGACCAGTCCGCGGCTACGGGCATGGCCAGCAATCATCTGGTCATAAGG [...]
+NODE	1911	11	884	843	0	0
+CTCGCCCTGAC
+GCAACTTGAAG
+NODE	1912	207	7634	7634	0	0
+CCTGCTGCTGCCGGACGCCGCGCCGCTGCTGGGGATGTTCTGCTTTGGCAACCTGATGCGTGAAAGCGGCGTGGTGGAGCGTCTGAGCGACACGGTGCAGAACGGGCTGATTAATATCGTGACCATTTTCCTCGGGCTGTCGGTGGGCGCAAAGCTGGTGGCGGATAAGTTCCTGCAGCCGCAGACGCTGGGCATTCTGCTGCTGGG
+CAGCTTTGCGCCCACCGACAGCCCGAGGAAAATGGTCACGATATTAATCAGCCCGTTCTGCACCGTGTCGCTCAGACGCTCCACCACGCCGCTTTCACGCATCAGGTTGCCAAAGCAGAACATCCCCAGCAGCGGCGCGGCGTCCGGCAGCAGCAGGGCCACCAGCAGTAACAGCACCACCGGAAAGAGGATTTTTTCCCGCTTACT
+NODE	1913	35	1534	1534	0	0
+TGTGATTGCGTTCGGGATTGGGACGGCGGCCGGGG
+CCCAGCGTCTGCGGCTGCAGGAACTTATCCGCCAC
+NODE	1914	31	13133	12960	0	0
+GTCGTAAGGGCCATGATGACTTGACGTCATC
+CAATGGCGCATACAAAGAGAAGCGACCTCGC
+NODE	1915	3	268	268	0	0
+ATT
+CTT
+NODE	1916	168	8812	8766	0	0
+CCCGGAGGGATCCATGACTATTGCCATTACCGATGTCGTCCTGCGCGACGCTCACCAGTCCCTGTTCGCCACCCGTCTGCGTCTTGATGATATGCTGCCCATTGCCGCCGCGCTCGATGACGTGGGCTACGGCTCCCTCGAATGCTGGGGCGGCGCCACCTTTGACGC
+ATCGAGCGCGGCGGCAATGGGCAGCATATCATCAAGACGCAGACGGGTGGCGAACAGGGACTGGTGAGCGTCGCGCAGGACGACATCGGTAATGGCAATAGTCATGGATCCCTCCGGGAATTAAGGGTTAAGGCGGCGATGGTGGTGGATAGCGGCGGCAATCACCGG
+NODE	1917	142	6168	6168	0	0
+ACCCAGCGCCGCATCGCGGTTTTTCGGGTCCAGACGGTAAGCGTTCGCATACGCCCCGGTGGCGGTACCGGCATTACCCAGTACCATACCGGTGCGCCCCAGCATGAGCCAGCCCTCAACATTGCCGGCATCATTCTGCAGG
+CCGGTATGGTACTGGGTAATGCCGGTACCGCCACCGGGGCGTATGCGAACGCTTACCGTCTGGACCCGAAAAACCGCGATGCGGCGCTGGGTTACGCGGAGGCGCTGACGCGCTCGTCCGACCCGGAGGATAACCGCCGCGG
+NODE	1918	83	3067	3067	0	0
+GATGGCGCGGCTGGCGCTGGGGCTGCGCACCCGCCTGCAGAATGATGCCGGCAATGTTGAGGGCTGGCTCATGCTGGGGCGCA
+CGGGTGCGCAGCCCCAGCGCCAGCCGCGCCATCTCCTCCTCATTCAGCGGCTGCGCCTGCGGGTCCAGCGCCCGCGCCAGCAG
+NODE	1919	3490	207692	205928	0	0
+CAAAGCGATGGCTCTTTTGTCCTGCTGGCGACCGAGCGTAATTTACTAACCTTCAACCGCGCATCGGCGGAAGAGATTCAGGACCATAGTTGCGCCATTTTGTCTTCCCGCTGATTTTCGTTCCACCCCCTGCTCATTATCTTATTGATTCTTATCCCGGTTTAAAACTGGGGTAAGATCGTGTCTATAAAAATATGTGAAACCGATCAAAAGATATAAAGGTATACCTTTATATCTTTTTGTGGTTAGTTACACTCTCTTCATAGCCTCCATAGATTGTCTGGTGGATGGCTTATATAAAAACGTTTTTATTTCATGTAGTGACATCATTAATTGTTCACCAGATTTGCGCTGTTAAGCGTAAAGGAATATCAACATGAAACTTTCTATCGTGGAAAAAATCGGCTTCGGCGCGGGAGATATGGCGATAAACGTTGTGATTATCGCCATGCAGCTGCTCCTCGCCTATTTCTATACCGATATCTACGGCCT [...]
+GCGATGACGTTTACCGATATCCACGGCCAGTTCAATGCGTCGGGCAACGGAAGGCCCGGCGACCATCATCGCCCCTTGCTCCTGCGCCAGCAGATAGCCCCTTTGCGCACCGTAAATACCGGCGGCAATAATGCTGTCTGCGTTGGTCTGCGCTCTTAACGCCTCGCTGGTTGCCGCCGCCATCGCCGCTGCGCCGGACATCGCCAGCACGTTATTATGCGTAAAACGGCAAATCTGTAGCGCGCAGTCAATCGCCGCGTCAATATCACCCGGATGCAGCACCGCCGCTGGCCAAATCTTCATGGCGGCGCCGTTCGTTGCCTCCGCGTTACCCTTATTAATAATCTGTACCGACTGTTTCTCGCCTTCCAGCTCACCCTGTAAAGAGGCGCGGTTATCATTGAATATTGCCTTCATTGCCGCACGCGTCGTCGGGCCGGTAAAGTTGGCGTAGTACGGATAATCCAGCCACTGCTGAAAAGCCTCGCGCAT [...]
+NODE	1920	202	10844	10586	0	0
+TGCTCCTGTACCTGCTGTTGCTGACTGCCGACAGGCGCTGCTTCAGAAGGCACTCCCAGACTTACCGGGCTGGCTTTCCCCATCATAGGCAGGGTATTGAAAACCGGCGTTTCAGGTTGTTGGGATGTTTCAGATTGCCCATTATAGTGCTGGACACCGACGATAACTGCAAGTGAAACGCACGCCGCCACGCCCATTTGGG
+CAGCACTATAATGGGCAATCTGAAACATCCCAACAACCTGAAACGCCGGTTTTCAATACCCTGCCTATGATGGGGAAAGCCAGCCCGGTAAGTCTGGGAGTGCCTTCTGAAGCAGCGCCTGTCGGCAGTCAGCAACAGCAGGTACAGGAGCAGCGTCGTCGCATTAATGCCATGTTGCAGGACTATGAACTGCAGCGCCGAC
+NODE	1921	115	6924	6913	0	0
+GCGCACGTTGTTGGTCTGGTTGTCATTGGGGATACCACTGTCGTTAACCAGTTCAATATTGTCGATGCCGATTTGGGTATCGACAGTGACCTTCAGCGATGCAGAATGGCTGGTG
+TCGACAATATTGAACTGGTTAACGACAGTGGTATCCCCAATGACAACCAGACCAACAACGTGCGCCCGCAGTTCCAGGTGACGGTACCGACGGATGTCAACGTGGTGCGCCTGAG
+NODE	1922	91	5232	5183	0	0
+GTCACCACATTTGACGCGACTAAAGACGCAGGCGGATGGACCTTTACGCCGCCGACATCATGGGGGGCGGGCGATTATACCCTGAGTGTGT
+GTCCATCCGCCTGCGTCTTTAGTCGCGTCAAATGTGGTGACGCCGCCGCCATGCTCCACGCTGACCGTAACGCGAACGGCATCATCATCAA
+NODE	1923	22	1591	1058	0	0
+CCCACGTCGCTCCGGCGACCAC
+TATGGAACATTGGTGGTCGCCG
+NODE	1924	15	1752	1732	0	0
+AGGTGTAAAACTGAC
+AACATCCCTGATGTA
+NODE	1925	77	9851	7756	0	0
+CACCCGAAGGCGCTCCTCACAGGTCATATGGAGCATTGGTGGTCGCCGGAGCGACGTGGGCCACCCGAAGGCGTTCC
+ATGACCTGTGAGGAGCGCCTTCGGGTGGTCAGTTTTACACCTCCGTAGCCTGAAAGGAGCTGTGAGTACTGAAGGGA
+NODE	1926	51	2086	2023	0	0
+ACCACGCAGTTACCCGCCGCCAGCGCTGGCGCCATTTTCCAGCTTGCCATC
+TGCTTAAACCGGCACGCCTGACGCCGCTTTCCGTTCTGCTGTTAATGGAAG
+NODE	1927	166	910	910	0	0
+TTGTTACGACTTCTCCTTCCTCTAAATGATAAGGTTCAAGCAACTTCTCGCAGATAGGTAACTTGCGAAACCTACCCAGCAATCCGAAGATTTCACCGGACCATTCAATCGGTAGGAGCGACGGGCGGTGTGTACAAAGGGCAGGGACGTAATCAACGCATGCTGA
+CCTACCGATTGAATGGTCCGGTGAAATCTTCGGATTGCTGGGTAGGTTTCGCAAGTTACCTATCTGCGAGAAGTTGCTTGAACCTTATCATTTAGAGGAAGGAGAAGTCGTAACAAGGGCAGGGACGTAATCAACGCGAGTCATCAGCTCGCGTTGATTACGTCCC
+NODE	1928	1	38	35	0	0
+T
+A
+NODE	1929	7	76	76	0	0
+GCTCCTC
+GTAACGG
+NODE	1930	1128	58466	57946	0	0
+CCTGAGCGCCGAAACACGGCGGACTGGAGTAAATTCGGCGCACCGTCGCTTTTAGCTGTCCCAGAACCCGCGCGGCAATTTCAGCATCTTCACACACCACGGACAGGCCGCCGACGCGCTCGCCGTACAGCGAGAAAATCTTCGAAAAAGAGTTACTGACTAACGCAGGTAACCCGGCGCTGGCAATGGCGCGAATAGCGTAAGCATCCTCGTCCATGCCTGCGCCAAACCCCTGATAGGCAATATCAAGGAACGGAATCAGATCGCGCGCTTTCACTATTTCAATCACCGCATCCCATTGCGAAGGCGTTAAATCCGCCCCGGTCGGGTTGTGACAACAGGGGTGCAGCAGCACGATACTGCGTGCAGGTAACGTATTCAGCGTGGCCAGCAGATCGTTAAAACGGATGCCGTTAGTCGCGTCGTCATACCAGGGGTAAGTACTCACTTCGAATCCTGCCCCGGCAAATATCGCAATATGGTTTTCCCAGG [...]
+GTATATTGATTAAATACGCGGCAGGCCGGGTGGCGCTTGCGCTTATCCGGCTTGTCTCGCGCATTGGCTGTAGGCCGGATAAGACGTTCACGCCGCCATCCGGCAATATGCGCATCCACCACAACATCCTCTCGATCTTCTCGTCCTTCCGGTTTATTGTGTTATTTCCTGCCCTCTGTAAACCTGGAGAACCATCGCGTGTTTCAAAAAGTTGACGCCTATGCCGGCGATCCGATTCTTTCACTGATGGAGCGTTTTAAAGACGACTCCCGTCACGACAAAGTAAATCTGAGCATTGGCCTGTATTACAACGAAGACGGGATTATCCCACAGCTCAAAACGGTGGCCGAAGCCGAAGCCCGGCTTAACGCGCAGCCGCATGGCGCTTCGCTGTACCTGCCGATGGAAGGACTCAATACTTATCGCCATACTATCGCGCCTTTGCTCTTTGGCGCCGATCACCCGGTTCTTCAGCAACAGCGCGTGGCTACT [...]
+NODE	1931	43	2100	2100	0	0
+CAGTGATTTACTGAAACCGATCAGGCCCGCTTTCGCCGCAGCG
+AAGTTGCGTCCCGTGGTATTACTGTCAATGTTGTGGCTCCGGG
+NODE	1932	45	1631	170	0	0
+CCTGGCGACCGCTGGAAGACGATAATTTTCGTCTGGGACTGGGCT
+TCCCAGCCATAACCGCCTATGGGTTCCCATTTGTTAAATGAATCT
+NODE	1933	26	1460	1426	0	0
+TCATCAGGAATCCACCATGCACGCCG
+TCAATTTCATTTTTGTGTTTGTCATC
+NODE	1934	104	5375	5375	0	0
+TTCAATTGATTCGCGAGACGCAATTTCCCCTCCCTGGCTTCCGCTGGGCGATACCATTGCAATAATCAGATCTGTGAAAGTGTACTTGAGGTACTCCAGCGGAT
+GTATCGCCCAGCGGAAGCCAGGGAGGGGAAATTGCGTCTCGCGAATCAATTGAACTCTCCTTCAGCACCGTGAAGCAGGAATACGTGGTGCAGAACCAGCAGGG
+NODE	1935	121	5437	5367	0	0
+GATTATGTGACTGCCTCCCGCGTGGCGGGCGCAGGCGCGATGCGTCAGATGTTCGTCAATATTTTCCCGAACTGCCTTGCGCCGCTGATTGTTCAGGCATCGCTCGGTTTCTCTAACGCCA
+TTCGGGAAAATATTGACGAACATCTGACGCATCGCGCCTGCGCCCGCCACGCGGGAGGCAGTCACATAATCGCGGTTCACCTCTACCAGAACCGCCGCGCGGGTTAAGCGGACATAGTGCG
+NODE	1936	51	2007	1831	0	0
+CGGGCAAGACTATTGAGCGTGTCAATGTGCATACCGGCGACGTGGAGGTGA
+GTAAATGACGCGCCTGAAGGCCGCACATCAAAGACCAGCCACTGGCTGTCA
+NODE	1937	31	6740	2753	0	0
+ATTTGCCTGGCGGCAGTAGCGCGGTGGTCCC
+AATTCTTTATCGCATCAGCGGCGTTGCCTGC
+NODE	1938	16	3330	1022	0	0
+ACCTGACCCCATGCCG
+TTTATGCTCAGTACGC
+NODE	1939	5	2108	1461	0	0
+GCCAG
+GTGAA
+NODE	1940	9	3142	1983	0	0
+GCAAATTCT
+AACTCAGAA
+NODE	1941	51	2010	1963	0	0
+ACCGGACCCGGTCTGCCAAATCGCCAGCGGAAACTCATCAGCATGTTTTCC
+TACGCAAAGCAACATGAATATGAATGAGGTGTTAGCGAACCGCGCCAGTGA
+NODE	1942	46	3243	3243	0	0
+AGGGGAATAAAAAAAGTCTGTGCAAATCGTGTTATTATTAACGTTT
+TGTAAAAGAAAGGCATAAAAAGCAGCGCAATAAGCAGGAGAACGGG
+NODE	1943	51	232	232	0	0
+GTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATT
+CCCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCG
+NODE	1944	51	2775	2775	0	0
+ACCCCCGCTGAATTCCGCCTGCTAAAAACCTTATCGCTTGAACCGGGTAAA
+TTAAATCCAGCGCTTTACCACACCAGGAGGCCTGAAAGCGGCTTTCATCAA
+NODE	1945	12	1325	1325	0	0
+CAGAAGCAATGG
+TGCCAGTGATTC
+NODE	1946	33	1653	1653	0	0
+TAAAAATATACGATGTCTCATAATATCACCCGT
+GTCGGCTACAGCCTTTTCGGCATCGGCGATGGC
+NODE	1947	850	45075	44762	0	0
+GGTATAGTTCAGCTCCTGCCACTTGCCATAGACGCGCAGCGGCACCGGCGTCTCTTTCAGGAAGGTGATCAGGTTGCTATCGCCGTTCCAGCCGCCCAGCACACGCAGATTAAATTGCGTATCACAGCTCTGCTTAACCAGATCCAGCGTTCCGCTGCCGGTTAACGCCAGCATAGAAGATTGCCCGACCATGTCGTCGAGCGTCAGCGTGCCCTTATTTAGCGTCAGATCGGTCGTGAAGCGATCCAGTCGGGTCGCGTTGTCCATATTTTCCTGCGACTGCTGCGCGTCGCCGCCGCTTCGCTCTACGGCCTGCTGCACCAGTTGCTGGAAATTCATTCCTTCGAGGCGCGTATTGCTCATGTCAACATGCGCTTTTCCTTTCCAGCTATGGCGAAATGCCTCTGCGTCAATATCCGCCCCGGAGAAATCGCCAACCAGCGACATCTTACCGGTCAGGCTAATCGGATAATTGAAGGCTTTCAGGATAGT [...]
+TGTCGCAGGGGCAAAATACGCTCCCCCTGACCAGGCCAGTTATCGCGTCGCGTGTTGGTGCGCCGCCTTATCAGGGGCTGCAAAGCTTTACGGCGGAGATTGCTTTACAGGCGGATTCAGTTCGCTGGCGGGGAATGGACTTTACCCAGGTTTCGACGAAGATGTCTAATCAGGCCGGATTGCTGGATATCACCGAGTTGCAGGGGAAACTGGCCGACGGAGAGATGTCGCTGCCCGGCACGCTGGACGCCCGCACCGCCAGTCCGCGCATCGAATTCCACCCTCGCCTCAACCATGTTGAGATTGGGACTATCCTGAAAGCCTTCAATTATCCGATTAGCCTGACCGGTAAGATGTCGCTGGTTGGCGATTTCTCCGGGGCGGATATTGACGCAGAGGCATTTCGCCATAGCTGGAAAGGAAAAGCGCATGTTGACATGAGCAATACGCGCCTCGAAGGAATGAATTTCCAGCAACTGGTGCAGCAGGCCG [...]
+NODE	1948	2445	160696	160154	0	0
+TCGAAAGCGTCGTAGCAGTATTCAGAAAGACTGTGTCTTGATTACGCCGCAAAATACCCGCAAACTTTGGGCTGTGTTGAAGAGATGAGCGTGACGTATATCAACCAGCGAAACATTAAAGCATGGCTGAAAAACTTTCCCGGTGCGCTGAATGATACCGGGGGATATTCCGGTGATCAAACGTGGCAGATAATTGATATGGTCCCGGTGATGAACCGGAATCTTCAATAGGTCAGTGCGGATCAGTTACTCATTTCTCTCATACGGCGAATGCACTACCCGACTGCCATCAAATAGCGCTTCGATATGCGTCAAAACAGCCACGCGTCCGCCGAATCCGGCCACGCTGTCGCTGCCCCCCAAGTCTTTCTATACTTATTTATTCCGATTTTCATAAAAAACAATAGATGATTACATGGGGGAGTAGTATGATAATAAAATCTAAATATTATTTGGGGTTTATTACAGTGTGACAAAGTTTCAGCCCATGGA [...]
+GGCGAACGACGACACCAGCGACTTTTATCCCATACTCATCGGCCCGGACGGCGCGCCGCAGGAGATGTACAGCGCGAACGGGCGGAAGGTGTGGCGGCGGCAGCGAAGCCTGTGGGGGCTGGCGGCGGCGAATGACGCGTCGCCTGACGGGCGTGAAAGCTGTGACGCGGGCTTTATGGGCCAGTGGCAGGACGAGGAGAGCGGGCTGTGGTATAATTTACACCGCTACATGGACTCACGGACGGGGCAATATTTAAGCCAGGACCCGCTGAAACTGGGCGGCGGGCTGAACACGCAGTCGTATGTGCATGATCCGGTGGGGTGGTGCGATCCGTGGGGGTTGATGGACTGTCCGTCTTCAGCGGAGGCGGAGATATTCTATCGGACTATGTCAGAAGATAATTATGCCACATTACAAAGTACAGGGCGTATGCCTGGAACAACCGAAACGACGATATCGCCAACAAGAGTGTTTTCTGAAGCATATGATGG [...]
+NODE	1949	51	6088	6063	0	0
+TGTCGCTGCCGCAGCTTCGGTGCATGGTTTAGCCCCGTTACATCTTCCGCG
+ACTGTGTGTTGTTGGGTAGGGGAGCGTTCTGTAAGCCTGCGAAGGTGTCCC
+NODE	1950	33	3498	3063	0	0
+TGCGAAACGCAGACCGTCGTCCATTGCGATCGG
+TACCGTTGGCGCGGGCGTTGTTGCTAAAGTTCT
+NODE	1951	51	3472	3472	0	0
+GGCGTAAACCAGCGCATTTATGAGCTGCTGGATAAGACAGATATTGATGAT
+CGCTTTGATCCAAAAACTGGTTAAACGCATCGGCAGTGGTTGCAAAACCAT
+NODE	1952	165	10043	10043	0	0
+CATCCGACGAAAGCTGCGCATAGGCATCGCGGATGGCGTTTTCCAGCTCCGGCTGGAAAGGAGTGTCGATAATCCACTGGCGGATCTGCGCGCCCGCTTTCGCCAGCTGGGAGACATCATCAATATCTGTCTTATCCAGCAGCTCATAAATGCGCTGGTTTACGC
+GTCTCCCAGCTGGCGAAAGCGGGCGCGCAGATCCGCCAGTGGATTATCGACACTCCTTTCCAGCCGGAGCTGGAAAACGCCATCCGCGATGCCTATGCGCAGCTTTCGTCGGATGATGAAAATGCCTCTTTTGCCGTGCGTTCCTCCGCCACGGCGGAAGATATG
+NODE	1953	16	5061	3252	0	0
+AGCAAGCTGCTTCCTG
+TCTGGGAAACTGCCTG
+NODE	1954	51	2363	2363	0	0
+TATTGATTGTCGGTTTAAGCGCGATGAACGGTTTCGAACGCGAGTTGAATA
+ACCGCCACGCCCAGCGCGATACCGATGGTAGAAATGACGGAAATGAGCGAA
+NODE	1955	51	2597	2021	0	0
+CAAGATGGCATCAGGATGTACAGGCGGTTAAAGCGTACCTTTAACCGCCAT
+GCTTTGTCCATCCCATACTTATCACTTTTACGTTCCGTGCTCTTTTTGCCT
+NODE	1956	545	27589	25871	0	0
+CCACGTCTTTGCCCCACAGCGGACGATGCTGGAACAGATAGTTAATGGCGACCGCCAGATAATGGTTCGGGTTCATCAGCCCTGCAGGCGTCACGATGCCATGACGGTCGTAGTCCGGGTCGTTGGCGAAGGCCAGGTCAAACTTGTCACGCAGCGCCAGCAAACCCGCCATCGCACATTCGGAGGAGCAATCCATACGGATCGCGCCATCTTTATCAAGGTGCATAAAGCGGAAGGTTTGATCAACCTGATCGTTAACTAACGTCAGGTTAAGTTTGTAATGCTCAGCGATACGTTTCCAGTATTCAATACCGGAGCCGCCCAGCGGATCAACGCCCAGCGTCAGACCGGCTTTCTGAATCGCCGCCATATCAACGATATCCGCCAGCCCTTCGACAAATGGCTGCACCAGATCTACCGCTTTAACGTGGCCCGAGGCCATTGCCGCATCCAGAGAGATGCGCTTAACGCCTTGCAGGCCGCCCGCCAGCA [...]
+CGCTGCTGGCGGGCGGCCTGCAAGGCGTTAAGCGCATCTCTCTGGATGCGGCAATGGCCTCGGGCCACGTTAAAGCGGTAGATCTGGTGCAGCCATTTGTCGAAGGGCTGGCGGATATCGTTGATATGGCGGCGATTCAGAAAGCCGGTCTGACGCTGGGCGTTGATCCGCTGGGCGGCTCCGGTATTGAATACTGGAAACGTATCGCTGAGCATTACAAACTTAACCTGACGTTAGTTAACGATCAGGTTGATCAAACCTTCCGCTTTATGCACCTTGATAAAGATGGCGCGATCCGTATGGATTGCTCCTCCGAATGTGCGATGGCGGGTTTGCTGGCGCTGCGTGACAAGTTTGACCTGGCCTTCGCCAACGACCCGGACTACGACCGTCATGGCATCGTGACGCCTGCAGGGCTGATGAACCCGAACCATTATCTGGCGGTCGCCATTAACTATCTGTTCCAGCATCGTCCGCTGTGGGGCAAAGACG [...]
+NODE	1957	145	5294	4959	0	0
+ACCGTCGCACTTGGTCATATGACCTTTGGCCGCGTTGTACTGCGGCGCGCCATACGGGCAGGCCATGTGGCAGTAGCGGCAGCCGATACAGACCTCTTCGTTCACCACCACAAAACCGTCATCGCGCTTGTGCATCGCGCCGCTC
+AGGTCTGTATCGGCTGCCGCTACTGCCACATGGCCTGCCCGTATGGCGCGCCGCAGTACAACGCGGCCAAAGGTCATATGACCAAGTGCGACGGTTGTTATGACCGGGTGGCGGAAGGCAAGAAACCGATTTGCGTGGAATCCTG
+NODE	1958	43	2021	2021	0	0
+TAAATATTCTCTTCATATACACTCCACCACCATTTCAATGTCA
+ATTATTACTTTGCGCATTCGCATGTTCTGCTAATGATAATGTT
+NODE	1959	51	3298	1745	0	0
+ACAAATCCCCGCCGTTTATACGCCGGGGATTTGTTATTTGTTTTAACTTTT
+TTTAATGGTTCCCTCGTTGAATCAGTTCTATTTTGCTATATAGCGCATCCA
+NODE	1960	347	19837	19452	0	0
+CAAACCTGGCCTGGCGCCTGCCAGATAACCATGCCAGACATCGCCGCGACGTCCTGGCAGGTCATAGCGACGCTCATTCCCTCGGGAATCAAAAACGCACAGCTCTACGCGCTCCGCATGGGCGGAAAAGAGCGTGAAATTCACGCCATGACCGTCATACGTTGCGCCATGCGGCGTTGCTTCGCCGATCGCAAGCTGCGTCATTCCCCCTCCCGCATCAGCCAGATCGTCGCCAACGGCGGTAACGTCAGGTTAAGAGAGTGCTGACGGCCATGGCTTTCGATCTCATCGCTGTGCACCACGCCGCCATTGCCGGTGTTGCTACCGTGATAATGCATCGAATCAGT
+GCACAGCGATGAGATCGAAAGCCATGGCCGTCAGCACTCTCTTAACCTGACGTTACCGCCGTTGGCGACGATCTGGCTGATGCGGGAGGGGGAATGACGCAGCTTGCGATCGGCGAAGCAACGCCGCATGGCGCAACGTATGACGGTCATGGCGTGAATTTCACGCTCTTTTCCGCCCATGCGGAGCGCGTAGAGCTGTGCGTTTTTGATTCCCGAGGGAATGAGCGTCGCTATGACCTGCCAGGACGTCGCGGCGATGTCTGGCATGGTTATCTGGCAGGCGCCAGGCCAGGTTTGCGCTATGGCTATCGCGTACATGGCCCGTGGCAGCCAGCGCAGGGGCATCG
+NODE	1961	28	4374	4374	0	0
+GCGCAGGCCAGGCCATCATGCTGCTGGT
+CTGAAGCAGGGCGTTCAGACTTTCCATT
+NODE	1962	38	4481	4481	0	0
+ACCGCCAGCTGCCCGGCGTCGTGATGCGCCAGCAGGCT
+GCTTAACTGCGCGCCGGACGTGCACGCCATTAAAGAGG
+NODE	1963	2478	124420	120916	0	0
+TATTTTTAATCATATGCCACTGTTCTTCCAGCGGCATCATTCCCTTTGAGGAGGTTAATGCGTGCTGCGGTTCGTACACGGTCAGACGGCCGCGACCGCTATTTTTCGCGGCGTAGCAGGCTATATCGGCCTGAGACACGACCTCTGTGAGCTGGCAGTTATGTTCATTTATCATTGTGATCCCGGCGCTGGCGCCGATCCGATGCAGGCGTCCTTCCCACATAAAGTGATATTCATTAACGGCGTTGATAAGCCGCGTCACGATAAAACGCGCGCTGTCACTATTACAATCCGGCAGCAACAGGCCAAACTCATCGCCACCCAGACGGGCCAGAAGATCGCCGGATCGAAGCATACTGAGCATCAGTGACGCGAGCTCGCGCAATAAGGCATCGCCGGCGGCATGTCCCGCGCTGTCGTTAACCGCTTTAAAACGGTCCAGATCGATAAACACCAGCGCATGATGTTGAGGCGATTCCTGTATTGTTTGCA [...]
+GGCAGCGGTTTTATCGACCCGTCTGGAGGAGGAATACGCCGGGAGCCACAATTTATATTCAGCCAGCGTATAAATCATTACGCGTTTATACTAGCATAATCACAGAGTAAACTGACGCGTCCGGTATTCCGCGACGTTACCGGCGATTCGGATAGAGTGGTAATGAGTAAACCATCCCAACATGTTTTCGTTACCGTCCCCCACCCGCTATTGCGTCTGGTCAGTTTAGGCCTGGTCGCGTTTGTCTTTACGCTCTTTTCGCTCGTATTATCGCGTGTCGGCACCCAACTCGCGCCGCTGTGGTTCCCCACCTCCATTATGATGGTCGCGTTTTACCGCCATGCGGGCCGTCTGTGGCCAGGGATCGCGGTCGCCTGCTCGCTCGGCAGCATCGGCGCCTCACTGACTTTATTTCCTGCCGCCTCGCTTAACTTTAGCTGGACGGCAATAAATATTATCGAGGCGGCCACTGGCGCGATACTGCTGCGAAAA [...]
+NODE	1964	45	63	63	0	0
+TTGCAACCTCAGCTCCACTTCATCGTAGGTAAACGAGGAGCAGCG
+CGCTGGCTTTCGGCGCTACCACCACCAGGCTATTGCCAAGCAATG
+NODE	1965	50	3242	3242	0	0
+CCTGCGGCAAGTTACGCAAAATCCAGCTACGAATGCCGGTGGCGGAGATA
+GCGTGGCCCACGGAACCGGTATCGGTATTGGCCTGTTTTTGTTGCTGATT
+NODE	1966	1099	59243	57832	0	0
+GAGGTGCCGCGTTGCGTATACACCAGTTTCGGCTCCGGATAATGTCTATCGAGCTTGAGGTTCGCCTGGGCGAGATTTTCCCGCAGACGGCGCATCACGGCCTGCTGGATAGCGATAGGGAGACGAGGGGTTTTCATAGCGGCAGAGAATAGTGCGACGGAAGAGGGACTGCAAGAAAAACGCTTCCTCCTGTGGCAGGAGGAAGCGTGGAGGGATTAGTCGTGGGCGCCGATTTCGCGCAGTTTACGACCTTTCATCAGGTTACGTTCAATGTGTTCCAGCGAAACGTGTTTGGTTTCCGGCACCAGCCACAGGGTCAGCAGGATAAACAGCACGTTCAGGCCAGCGTAGACCCAGAAGGTGTTGGCGTTACCCAGATTGTTCAGCATGGTCAGGAACGTTGCGCCGACGATCATATTGGCGATCCAGTTGGTCGCGGTGGAGCAGGTGATGCCGAAATCGCGGCCTTTCAGCGGCTGGATTTCGGAGCAC [...]
+GTCTTCTTCCTACCGGACAGCCCGCGCTGGTTTGCGGCAAAACGCCGCTTCCATGATGCTGAACGCGTCCTGTTGCGCCTGCGTGACACCAGTGCGGAAGCAAAACGTGAGCTCGATGAAATTCGCGAAAGTTTGCAGGTTAAACAGAGCGGTTGGGCGCTGTTCAAAGAGAACAGCAACTTCCGCCGCGCCGTGTTTCTTGGCATTTTGTTGCAGGTCATGCAGCAATTTACCGGGATGAACGTCATCATGTATTACGCACCGAAAATCTTCGAACTGGCGGGGTACACGAATACCACGGAGCAGATGTGGGGCACCGTTATTGTTGGTCTGACTAACGTGCTGGCAACCTTCATCGCTATCGGCCTGGTTGACCGCTGGGGCCGCAAGCCGACCCTGACGCTGGGCTTCCTGGTCATGGCGATTGGTATGGGGATTCTGGGTACGATGATGCACATCGGCATCCATTCGCCGTCTGCGCAATACTTCGCT [...]
+NODE	1967	50	4649	4649	0	0
+TGGCGATCTCCTACAGACTTTGTAAGAGATCTCTCACACCCGTTAGGGCA
+GGATATCAGCGGATACTGAGTTCCGTTTTCTTATGTAAGTCTATATAAAA
+NODE	1968	51	2234	1544	0	0
+TAATTTCTGGGACGATGAGACATTGCAGCGGCGTCTGGCCCCTCGCCTGGA
+ACCTTCCGGCACCGCCCACTGCATCTCCTCTTCCAGCCACTGACGCCAGCC
+NODE	1969	51	2897	2897	0	0
+AGCGGCGGCAGAATATTGTCGATGTATTCATCGGTATTCTGGCGAATTTTC
+TGACAAAAGCACTGTTCAAATATGTGCGCGAAGGGAAATATACTTTCTGTA
+NODE	1970	51	3719	3719	0	0
+ACTCCCGCCTTTGCGGCGTCATTTTCGACTGGGATAAATATAACCTTGAGC
+TTATTTTCAATCAGCTTCAGCAGGTCTTCTCGGTCGTTTGGATAGACGATA
+NODE	1971	1626	79551	78323	0	0
+CCTCTCTATTGCTTGTAACCATTGCGATGAGCCGGTATGTGTCTCCGGCTGTCCGACCGGGGCGATGCATAAACGCAAAGAAGATGGTCTGGTCGTGGTGGATGACAGCGTATGCGTCGGCTGTCGCTATTGTGAAATGCGTTGCCCCTACGGCGCGCCGCAGTTTGATACGCAGGCGAACGTGATGCGTAAATGCGACGGTTGTCTTGACCGACTGGAGAACAATCTGCGCCCTATTTGTGTGGATTCTTGCCCGCAGCGAGCGCTGGATTTTGGCCCTGTCGATGAATTACGGGCAAAATATGGCACGGAGAATCAAATTGCGCCGCTGCCTTCGGCGTCGTTCACCCATCCTAACCTCATTATTAAACCGCATCCGAAAGCGAGACCCACAGGTGATACGGAAGGCGCAATCATGAACATTCGGGAGGTGCGCCATGCATGAGTTACCGCTGGTCTTTTTTACGGTCTTTACCCAGAGCGCGGTCGGCG [...]
+GGCGGTGGTTTCCCCCATCAGCAAATTATCTTTTTCCAGATAGACCGATCCCCAGGGCGGGACGGGCATCTTTCCCTGGCCTTCAAACAACACAGAAAATTGCCATGTAAGCGCATCATCATCCGGTAGCGACCATGACGCACACAGTGATTCAATAGGTCCGCGATCGCGCCAGGGGTAAAGCTCAGGCAACGTTGGCAAACAACCGAACAACGCTTTCACCTCCGGCCTCGCAGGGGAGTAGTAAAACAGTGCGCCGAGGATACGCGGCAAAACAGCACGGGAAAGCATAGCAATAGCTCCTGAAATATCTCGCCTGATGACGCTACGCTGATCAGGCTTACATGGCATAAGCCGGGCAAAAACTACATTGGCAGCGTCCACAGATTGTAAAACGCAATCCTACCCGCCAACTCCGCCGCGATAACCACCACAGCCGTCATGGCCAGCACCGCAGCGCTCGATTTCAGGCGCGCGCAGACCACCACCCCG [...]
+NODE	1972	51	2840	2662	0	0
+TCCGCCGGGCGACACGCTAAAACCTCGCCAGCGGCGGGGGGATGACAATCG
+AGACAGAACAGGATGTTTTTTATAAAGTGATTATAAATCAATAGATTATTC
+NODE	1973	51	1145	1083	0	0
+ACCCGCCGTATATGGGCGGGAAAGGAATGAATGGCGAACTGAAAGAGTTTG
+TTTGCCACCACCGCATCATAACGCTGCGCCAGAATCCACGCCTGCTGGATA
+NODE	1974	689	56389	53188	0	0
+ATTTCGCCATTAAGTTTCTGCCACAATATGTCGCAAGACGTGCAAGCGTTCCACCTCACCTGATGAACGACACCACCATCAATAAGACGTTATTGCTGCAATTCAATTATTAAGAATAAAAAAAGAACCAGAAGAAAATTACAAAATAACTTATCCAGCATATTAGCTATTGTTAAAATCAAAGTAATCCCCCGTAAAAGCTGGATATTTTTATTTCTCATAGACGAGAATTTATATATTATGATATAATACGGCAGAAAAACATGCAGGTTATTAACCTGCCATTAATGTAAATAATTTTTTGAGGAGATATTTCCAGTGGGACGTAAATGGGCAAATATTGTTGCTAAGAAAACGGCTAAAGACGGTGCAACGTCTAAAGTATATGCAAAATTTGGTGTAGAAATCTATGCTGCGGCTAAACAAGGTGAACCAGACCCGGAATCAAACTCAGCTTTAAAATTCGTTATTGAACGTGCGAAACAAGCACAG [...]
+AATCGTACGGTTAACATTAGACGTCAACGTTTCAGCGATAACCATTGAACCATTGGGTCCAAAGCCTTCATAACGCCCTTGCACGAACGTTTCATCTCCGCCACCTTTGGCTTTATCAATGGCTTTATCAATAACATGTTTTGGAACCTGTGCTTGTTTCGCACGTTCAATAACGAATTTTAAAGCTGAGTTTGATTCCGGGTCTGGTTCACCTTGTTTAGCCGCAGCATAGATTTCTACACCAAATTTTGCATATACTTTAGACGTTGCACCGTCTTTAGCCGTTTTCTTAGCAACAATATTTGCCCATTTACGTCCCACTGGAAATATCTCCTCAAAAAATTATTTACATTAATGGCAGGTTAATAACCTGCATGTTTTTCTGCCGTATTATATCATAATATATAAATTCTCGTCTATGAGAAATAAAAATATCCAGCTTTTACGGGGGATTACTTTGATTTTAACAATAGCTAATATGCTGGATAAGTT [...]
+NODE	1975	98	6078	6078	0	0
+AAGCAGACGATCGCGTGACCATAGAACGCCATCAATATCAACTTGCTTCCCATAATCGTAGCTGTCATCTGGATAATCGGCATGGGCAATCACGTACT
+AAGCAAGTTGATATTGATGGCGTTCTATGGTCACGCGATCGTCTGCTTGGTTCGTTACAGGGGAATATCCATCCAATACGCGGTGCGGATACTTTTAT
+NODE	1976	416	23761	23761	0	0
+CTTTCAGGAGAAAAAAGGCCGCTCCGCCCATAATCGCCAGCGTCAGGTATTTTGGCGTGTAGCGATTTCGTTGCCGCTCAAAGGGATTGACCGGTTCGGCTATCCGTCTTATTGCCGAATGGCCTACGCCGGATGTGCTTCTGGATTTTCGTTTTTTTGCCATGATCTTCCGTTACCATGTCATACAGGCAGCGTTAAAAATACCGCCAGCCAGCGCTGCGGTTCCCATAAATAGCCCCGCCGCCACGTTGTGATTAATAATTTTTTCGCTCAGCGTAGGCATGTATAACCTTACGCAACCATAAATCAGCAGCTGAATAACCAGCGCAATGCCGCCCCAGGCAAAATAGTCCGGGATACTGACCGAGTTTATCGCCGCGCTGGATAAGGGGATGACATAGCCCAGCAACGTACCG
+CGGTCAGTATCCCGGACTATTTTGCCTGGGGCGGCATTGCGCTGGTTATTCAGCTGCTGATTTATGGTTGCGTAAGGTTATACATGCCTACGCTGAGCGAAAAAATTATTAATCACAACGTGGCGGCGGGGCTATTTATGGGAACCGCAGCGCTGGCTGGCGGTATTTTTAACGCTGCCTGTATGACATGGTAACGGAAGATCATGGCAAAAAAACGAAAATCCAGAAGCACATCCGGCGTAGGCCATTCGGCAATAAGACGGATAGCCGAACCGGTCAATCCCTTTGAGCGGCAACGAAATCGCTACACGCCAAAATACCTGACGCTGGCGATTATGGGCGGAGCGGCCTTTTTTCTCCTGAAAGGGTACGGTGACGGCAGCAATAGTGACAACGACGGCGATGGGACGTTTTAC
+NODE	1977	42	2640	2640	0	0
+AGTTGATAAAAAATAACAATACTGCGGCATCGCTGGCCTTTA
+TTATGCGGCGTTATCTTTGAGTAAATAAAAAGAAATACAATG
+NODE	1978	34	1843	1836	0	0
+TGAACGTGGCGGGATGCCGGTTCGTCAAAGGTAG
+ATCGAGAAGGCGAAACGTCTGGTTGAACACAAGA
+NODE	1979	1791	98307	97986	0	0
+GCCATTGCACAGCCCATAAAGGAACAGCGAGCGCGCCAGACGATGCTTGAGGCTACCGGTGGGATGCGTGCTTTCGTCTTTCAGGTAAAGCTGGATACCTGGAAATGCCGACAGGGGCAAACGAATAAGATGCGTATCCGCCGAGCGCTGGTGGTCAGCGTTAATTTCATTAATGGCATTTTTAACCCAATTGCTACTCATCATTAATATCCATTTATCATTTTGTGCCAAGAGTAGCGAAAAGTACGGAAAAAATTGTTGCTATTTGACCTTTAAATTACAATGTAAGGAGAAAAATATTCTCTATGGAGTGGGTATGTTAGATAAAATTGACCGTAAACTGCTTTGCTTATTGCAGCAGGACTGTACCCTCTCTTTGCAGGCGCTGGCGGATGCCGTTAATCTGACGACAACGCCTTGCTGGAAGCGGCTTAAACGCCTGGAAGATGACGGTATCCTGCTTGGCAGGGTCGCGCTGCTGGACCCGGAAAA [...]
+CTGTATGCGGCGCTACCCCGCTCCACGATATTAAACATCCAGGCCAGCGCCAGCATCGGCCAAATCATCAACCCCAGATACATCATAAAGCTGGTGAGTTCGCCCAGCGTCAGGCTGCCGTTAACCACCATCCAGCTTCCGCCGCTAATCGCGAGCAGGTTCGCCATGCCAATGGCGATGTAAATGGTTGGATCAAAACGCGCGTCAATACGCGCCACGCGCATATTTTTCTTGCCGGTATCTTCGGCATCCGCCGCAAACAGCGAAGACTGGCGGTCCTCCAGACCAAACGCTTTGATCATGCGGATGCTGGTCAGACTCTCCTGCGTGCGGTCGTTCAGGCTGGAAAAGGCAGCCTGCGCCAGTTTGAAATAATCATGCAGCCGATCGCCGTAACGTTTGATCATCAGCGCCATAATCGGCATCGGCAACAGCGCTAATAGCGTTAGCTGCCAGCTAATTTGCGTCGACATAACAATCAGTACCGCGCAG [...]
+NODE	1980	3605	181565	180107	0	0
+GACGATAATACCCTGCCGCTTTAGGTAGGGTATTCCTGTTGAGTTTTATTGCGGAATATATTTGATGAATAACACATGGAAAAGTGTTCTTTGCCCAATAGCGTGCGGAGTGGGAATGCTTCTAAGCGCCTCCCCTTATAGCGCGTCAGGCAAAGACATCGAATTTAATACCGATTTCCTCGATGTAAAAAATCGCGATAACGTTAACATTGCACAGTTTTCTCGTAAGGGTTTTATTCTGCCAGGCGTCTACCTCTTACAAATTAAAATTAACGGACAGACTCTGCCGCAGGAATTTCCTGTTAACTGGGTTATACCAGAACATGATCCACAAGGAAGCGAGGTTTGCGCAGAACCAGAATTAGTTACGCAATTGGGTATAAAACCGGAACTCGCGGAAAAACTCGTCTGGATAACGCACGGTGAACGACAATGTCTGGCGCCAGATTCACTGAAGGGCATGGATTTTCAGGCCGACCTGGGACACTCCAC [...]
+GCACAGGATTACTTATTCGCTTTCTTCTCAGCGTCACGGGTTTTCTCCTCATTGACCTTGCAGGTATTCCCTGAGCAGGTGAAAACCAGCAGGCGATGGCCGCCGTAATCATCGACGTAGCCCACCACCGGCGAACTGCCGAGCGAGGCACCTTTGATGGGAGAGGTCACTTTTTCACGCGGGGCAATCAGCAGGTTTTTAAAGCCGGAGGCGGTTTCGTTCTCTTTGCTACCGGCATTGCTGATGACGAGGTAAAACGGTGTGGGGTTGTCGAAGATCACGCCATCGCCCTGGTAGGTCAGCGTGAGCTTCGTTTGCCACGGGTGCGTCTTATCCACCTGCCGGGCGACGGCTACCGGGCGGTAGAAAAACTTAATACGCGTTTGCAGCGCCAGCTGGAGCGTATTAGGCTTATCGCTTTTCGGCGGAATTTCCCGCACGTTGAAATAAAACAGACTTTCCCGGTCCTGCGGTAGGCTAGCCGCGGCTGGT [...]
+NODE	1981	46	19478	19366	0	0
+ACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACACACGTGCTA
+CCCACCTTCCTCCAGTTTATCACTGGCAGTCTCCTTTGAGTTCCCG
+NODE	1982	780	32244	32087	0	0
+CGGACAGACTCGGGGCTTTCCGGAAGTGCAGATGATGTGTCGCTCATTTTTTTTCCTCTGATGGGAATTTTTGTAGGGTACTACGGTTGCCCGGTAGCGCTACGCTTACCGGGCCAGGCTTAATAGACGCCGGACGCACCGGACAGTTTTTTTTCTGCGCCAAAGCGCGCCGCCAGCGCCTCCGCGCCGCGCGCCAGCAGCGTGGTGTCAACGCCGACGGCGACAAATAGCGCCCCCAGTTCCAGATAACGTTTCGCCAGTGCTTCATTGGCCATCAGAATCCCCGGCGCTTTCCCCACCGCGCGTATCTGCACGATGGCGTTCTCAATCGCCGCCTGCACTTCCGGGTGCTGCGGATTGCCGGCAAAGCCCATATCGGCGCTGAGGTCCGCCGGGCCGATAAACACGCCGTCAATGCCATCCACGTCGAGAATTGACGCCAGATTGCTCATCGCCTCACGCGTTTCAATCTGCACCAGTACGCACATGGCG [...]
+CGCCTTATCCCAGCCAGCCGGTGGTGCGTCCGTCATGGAACGATCCGGTACAGATTAAGCAACTGCTCGACGTCGGCGCGCAAACGCTGCTGATACCGATGGTGCAGAATGCCGATGAAGCGCGAAACGCCGTGGCGGCTACGCGTTATCCGCCTGCCGGTATTCGCGGCGTGGGCAGCGCGCTGGCGCGGGCATCGCGCTGGAACCGCATTCCGGACTATCTCCACCAGGCCAACGACGCCATGTGCGTACTGGTGCAGATTGAAACGCGTGAGGCGATGAGCAATCTGGCGTCAATTCTCGACGTGGATGGCATTGACGGCGTGTTTATCGGCCCGGCGGACCTCAGCGCCGATATGGGCTTTGCCGGCAATCCGCAGCACCCGGAAGTGCAGGCGGCGATTGAGAACGCCATCGTGCAGATACGCGCGGTGGGGAAAGCGCCGGGGATTCTGATGGCCAATGAAGCACTGGCGAAACGTTATCTGGAAC [...]
+NODE	1983	12	594	580	0	0
+TCGCCCCAAGCA
+ACCATGCCGCCG
+NODE	1984	109	6261	6261	0	0
+GCCCTGGATTACGTCCCGGTGCAGCGTAATGGTGCGCTAAATCAGGACTGAATAACCGGAAGACTCTGTTCCCTTTTACACCACGCCTGCCTTGTGCAGGCGTTTTTTT
+CCGGTTATTCAGTCCTGATTTAGCGCACCATTACGCTGCACCGGGACGTAATCCAGGGCCTGCAGCAACTGCTCATCTGTCAGATCCAGAAAATCTTTGATTTCCTCCA
+NODE	1985	12	1827	1813	0	0
+ACGCCACCTCGC
+CAGGATTTTTCT
+NODE	1986	43	5476	5395	0	0
+AACGGTGAGCGAAAGCCGCGTTGCACTGCTCTTTAACAATTTA
+GGCGTATATTACGCTTTCCTCTTTCAGAGTCAACCCTGAATTT
+NODE	1987	51	3150	3150	0	0
+CATCAGCGCGCATCGTTTATCCGCGCTGACCGACGCCAATGAAATTATCGT
+GATGACCGTACGCCCTTCGCCCCACTGGCGCAAATTATGCAAAATCTGATG
+NODE	1988	110	5771	5771	0	0
+ACTGCGTGCTGAGATCGGCAGTATTCGGCAAAACGGTGGAGTGAGCGGGAACAAGGAGGACGTCGTCAAACGTCAGGGCTTCTTTAGCGATACGTAGCATGGGCAATATC
+TCCTCCTTGTTCCCGCTCACTCCACCGTTTTGCCGAATACTGCCGATCTCAGCACGCAGTTGACGAAAACTATTCGTCTGAATATTCCTATGCTTTCTGCGGCGATGGAC
+NODE	1989	27	1336	1202	0	0
+TAAATTAGAGAGCTTCGTAACCGAGTT
+ACCCGCCATCAAACGCTGGTAGTAACG
+NODE	1990	702	41813	41681	0	0
+CCAACATGCTATTTGGTCGTCTGGAAGTATTCACTTTGCTGGTACTTTTTACCCCGACTTTCTGGCGTGAATAATGGAGTAACACGTGAAAACATTGATTCTTTTCTCTACCCGGGACGGACAAACGCGCGAAATTGCCTCTTATCTGGCTTCTGAACTCAAAGAGATGGGGATCTGGGCCGATGTCGTTAATCTGCATCGCGCAGAAGAACCGGACTGGGATTGCTATGATCGCGTAGTGATTGGCGCGTCTATTCGTTATGGCCATTACCACAGCGCCTTTCAGGAGTTCGTTAAGAAATACGCCACGCGGTTGAACGGAATGCCGAGCGCCTTTTATTCCGTTAACCTGGTGGCGCGTAAAGCTGAAAAACGGACGCCGCAGACTAACAGCTATGCGCGTAAGTTTTTAATGAGCTCTCCGTGGCGACCTGACTACTGTGCCGTCATTGCAGGCGCGCTTCGCTATCCCCGCTATCGCTGGTATGACCG [...]
+CGCACTTTTTATTCTTTGCGTTTATTTTGCCGACGATTTGTTGGTTAAATGGGCTATTTCACGGGCAAAGTGCGCAACCTGCTCCCAGTCGGTGTACACCACTTCTTTACTGGTATCCGTTTCGCCGCCCGACATCTTCATAATAAGCTTGATCATCAGACGGTCATACCAGCGATAGCGGGGATAGCGAAGCGCGCCTGCAATGACGGCACAGTAGTCAGGTCGCCACGGAGAGCTCATTAAAAACTTACGCGCATAGCTGTTAGTCTGCGGCGTCCGTTTTTCAGCTTTACGCGCCACCAGGTTAACGGAATAAAAGGCGCTCGGCATTCCGTTCAACCGCGTGGCGTATTTCTTAACGAACTCCTGAAAGGCGCTGTGGTAATGGCCATAACGAATAGACGCGCCAATCACTACGCGATCATAGCAATCCCAGTCCGGTTCTTCTGCGCGATGCAGATTAACGACATCGGCCCAGATCCCCATCTCTTT [...]
+NODE	1991	51	2032	1985	0	0
+TGAAGATATAGCCCTGCTGCGTATGCTCATCGAAGATGACGGCCCGCCTGC
+ACACCCGTTTCCCCCGGCGCACGCCGCCTGCGTCTGTCCGCTATCAAAGAC
+NODE	1992	26	55	55	0	0
+AGGGGATCGAAGATGATTAGATACCA
+GCATTTACCAAGGATGTTTTCATTAA
+NODE	1993	52	875	875	0	0
+GGACTCCGCCAATCCCTTGTCGGCATAGTTTATGGTTAAGACTACGATGGTA
+CCTTTAATAGCTCCGTCAGCACCTTATGAGAAATCACAAGTCTTTGGGTTCC
+NODE	1994	14	491	491	0	0
+CGCCGCTAGCGGCG
+GCTACGTGTACGCT
+NODE	1995	1	188	105	0	0
+T
+T
+NODE	1996	1906	96394	93595	0	0
+GCGTTCCCAATCGAACGCCAGATCGTTATCGCGCGCCGCTTCCAGCGTGACCGGCGGCGTGCGCGGTTTTTTGCGGGCGTGCTGAATACGCACGGTTTCGTACTCTTTGCGGGTACGGGCGACAAAGTCATCGCGCTGGTTGTCGGAGAGTAGCGCCGCCACCACGCCCACGGTACGCGAAGCATTCTGCACGTAGACCGTCGGACCGCTGTAGTTCTGCTCGATTTTCACCGCGGTGTGCGCTTTCGAAGTGGTTGCGCCGCCGATCAGTAGCGGGATAGTAAAGCCCTGACGCTCCATCTCTTTCGCCACGTTGACCATTTCGTCCAGCGACGGGGTGATAAGCCCGGAAAGGCCAATCAGATCGGCATTCACTTCACGCGCCGTTCTGAGGATTTTCTCCGCAGGCACCATCACGCCAAGATCGACGATTTCGTAGTTGTTACATTGCAGCACCACGCCAACAATGTTCTTGCCAATGTCGTGCACATC [...]
+GCTTCCTGAATATCGTTGGCGGCTGCTGTGGCACTACGCCGGAGCATATCGCCGCCATGAGCCGCGCCGTTGCCGGTTTGCCGCCGCGCCAGCTGCCGGATATCCCGGTCGCCTGCCGCCTTTCCGGCCTGGAGCCGCTGAACATTGGCGACGATAGCCTGTTTGTCAACGTCGGCGAACGTACTAACGTCACCGGCTCGGCCAAATTTAAACGGCTGATCAAAGAAGAGAAATACAGCGAAGCGCTGGATGTCGCCCGTCAGCAGGTCGAAAGCGGCGCGCAGATTATTGATATCAACATGGATGAGGGGATGCTCGACGCCGAAGCGGCGATGGTGCGTTTCCTCAGCCTGATTGCCGGTGAGCCGGATATTGCCCGTGTACCAATCATGATCGACTCCTCCAAATGGGAGGTTATCGAAAAAGGGCTGAAGTGCATTCAGGGTAAAGGCATCGTCAACTCTATTTCGATGAAAGAGGGCGTGGAAGCCT [...]
+NODE	1997	3267	185915	183311	0	0
+TATTAACCGGCGAGCGTCACTACACGCGTAACGATGATATCCGTCAGGCGATACTGGCTCTGGGCGCGCCGGGAACCTTCATGACGCAGGATGTGAACATTATCCAGAGCCAGATTGAGCGTTTGCCGTGGATTAAACAGGCCAGCGTCAGAAAACAGTGGCCTGATGAATTGAAGATTCATCTGGTTGAATATGTGCCGATTGCGCGTTGGAATGATCAACATATGGTCGATGCTGAAGGGAACACCTTCAGCGTGCCGTCAGACCGCATCGGCAAACAGGTTTTACCCATGTTGTATGGCCCGGAAGGCAGCGCGAGTGAAGTGTTGCAGGGATACCGCGAGATGGGGCAGGTGCTGGCTAAGGATAAATTCACTCTAAAGGAAGCGGCGATGACCGCACGTCGCTCCTGGCAATTGACGCTTAATAACGGCATTAAGCTCAATCTCGGCAGGGGCGATACGATGAAAAGGTTGGCTCGCTTTGTAGAAC [...]
+GTATAATCTCGCCAAATTACCTATCCAACCGAAGTGTACTATACATTCGGCGGGCCAGTTTAGCACAAAGAGCCCAGAATCCCAAATTCCAGCTAATTCTTAATCAGCTTGCTTACGCAGGAATGCGGGGATATCCAGATAATCCGGCTCTTTCGCCGCCTGTGGTGTATTGTCGTTAACCACTTTCGCGACCGTTTTTTGCTCCTGCGTCAGCGGCGCCATACCGTGCTGCTGATAACGATCCAACACCGGCTGCTGCACCTGTTTATTGGTGACCAGGGTGATTTCCGGACGTTTGTCCATACCAATACCGGTCGCCACTACCGTCACGCGCAGTTCATCATTCATATCCGGGTCCAGAGAGGTACCGATAACCACGGTGGCGTTATCCGACGCAAACGCGCGAATAGTGTTACCGACGGTTTCGAACTCATCCAGACGCAGGTCGAAGCCCGCAGTAATGTTGACCAACACGCCGCGCGCGCCGGACAG [...]
+NODE	1998	72	3913	3878	0	0
+CACCAGCTCATACGCCGCCATCGGAGTGAGAATGCCGGACATATCCTTGATGGCAATCGAGTCGACGCCGGT
+GATGGCGGCGTATGAGCTGGTGAGCGAAATCAAAAAACGTTTTGAGGTGCGCCTGCACCTGCACTGTCACGC
+NODE	1999	72	3410	3410	0	0
+CTCTAACAGCTGTTCGGTTAAGTCCAGCCAGGTCTGCAGCGTGTGCGCCGGGCTGGTGGTGTAACTCAGGGT
+CTTAACCGAACAGCTGTTAGAGACCGGCGTCGACTCGATTGCCATCAAGGATATGTCCGGCATTCTCACTCC
+NODE	2000	87	4580	4580	0	0
+TTACGCCGACGACGTGGTGGAACGCTTCGTCGAACGCGCGGTGAAAAACGGCATGGACGTGTTCCGCGTCTTCGATGCCATGAACGA
+GCGTTCGACGAAGCGTTCCACCACGTCGTCGGCGTAATGGCGGTAGCCGAGCAGGTTCTGGCCGCGCAGCAGCATCTGCAGCGGGGT
+NODE	2001	111	8677	6557	0	0
+CCCGCGCAATATGAAAGCCGCCCTGCAGGCGGTGCGCAGCCACGGCGCGCACGCCCAGGGGACCCTGAGTTACACCACCAGCCCGGCGCACACGCTGCAGACCTGGCTGGA
+CCCCTGGGCGTGCGCGCCGTGGCTGCGCACCGCCTGCAGGGCGGCTTTCATATTGCGCGGGTCGTTCATGGCATCGAAGACGCGGAACACGTCCATGCCGTTTTTCACCGC
+NODE	2002	46	3486	3486	0	0
+ATGCAGAAAAATTTTCTCGATCAAGATTTGAACAAGAATTTAAGAA
+TCTACAAGCCTGAGATGTAAAAAATGATGCATTTTTTTCAAACTCA
+NODE	2003	11	1107	538	0	0
+TGCTGGGGGGA
+GCGTCAGCATC
+NODE	2004	58	3729	3607	0	0
+TGCGGCCAGCGCTTTTAGGGTTACATCTGTCATGCTGTTCCTTCCTGCTACAGTTTAT
+TGGCCGCAGAGAGACAGGTTTCCGTGGATCGCCTGGTACAGCAGTTTGCTGATGCAGG
+NODE	2005	182	6089	6089	0	0
+CGCCTTGACGATATGCTGCCGATTGCCGCTCAGCTTGACGATGTCGGCTACGGCTCGCTGGAGTGCTGGGGCGGTGCGACCTTTGACGCCTGCATCCGTTTCCTCGGCGAAGACCCGTGGGTTCGCCTGCGTGAACTCAAAAAAGCCATGCCCAAAACCCCGCTGCAGATGCTGCTGCGCGG
+ACGCAGGCGAACCCACGGGTCTTCGCCGAGGAAACGGATGCAGGCGTCAAAGGTCGCACCGCCCCAGCACTCCAGCGAGCCGTAGCCGACATCGTCAAGCTGAGCGGCAATCGGCAGCATATCGTCAAGGCGCAGGCGGGTGGCGAACAGAGACTGGTGGGCGTCACGCAGGACGACGTCGG
+NODE	2006	24	2207	2187	0	0
+CCAGAACCTGCTCGGCTACCGCCA
+TTTGGGCATGGCTTTTTTGAGTTC
+NODE	2007	51	1977	1977	0	0
+GCCCGCGTCTCCAAAGCCGATGGCTCGCAGTCTCTCGACCTGCAGCACGAC
+CATATCCGATCAGCATGTATCACAAACGTTGGTTTGAGGCGGCGCTTCGGC
+NODE	2008	84	3958	3688	0	0
+ATTTCTTCGAGTTTGCGGTTCACCGCGACGGTATTGGGGTATCGCCAAGCGGTAAGGCACCGGTTTTTGATACCGGCATTCCCT
+ATACCGTCGCGGTGAACCGCAAACTCGAAGAAATATGGCTGGGGTACCTGGATTCGAACCAGGGAATGCCGGTATCAAAAACCG
+NODE	2009	575	32651	32484	0	0
+ACCAAATAAATACATGGTTCCCAGGGTAATCACCAACGGGTTTACGCCGGTATAAATAATAAGTCCGGCATTTATCAGCCCACATATTGCGCCGAGTAGTAGGGTAATAATAATCGCTAAAGGTAGCGGCATACCGAGCTGAAACAGCACACCCAGGGTAATCGCGCATAGCCCGATTGTAGAACCAAATGAAATATCCATACCACCGCTGACAATAACCATTGTTAGCGGCAAAGCGACAATACCGATACAAATAAAATCGCTAGTGCTAAAAAGTAAGACATTAATATCTAATAAACGTGGATTAATCAGACCGAAAGCCAGAATTTCAAAGATCAATAAGGCTGCCAGCGCAATTTCCCAGCTATAGCGTCGCCATGGATTCATTATGCCACCTCTTTGTTTTTATTCTGTTGTGCGTGCGTTTTTGCTTCCGTCTGTAGTGGAGTGGGTGGTGATATAAAACGGGCATATTTCTGGCGGCGCAGATTG [...]
+ATTCGATGGGCGGCTGCGTTGTGCATTACAACGCAATCTGCGCCGCCAGAAATATGCCCGTTTTATATCACCACCCACTCCACTACAGACGGAAGCAAAAACGCACGCACAACAGAATAAAAACAAAGAGGTGGCATAATGAATCCATGGCGACGCTATAGCTGGGAAATTGCGCTGGCAGCCTTATTGATCTTTGAAATTCTGGCTTTCGGTCTGATTAATCCACGTTTATTAGATATTAATGTCTTACTTTTTAGCACTAGCGATTTTATTTGTATCGGTATTGTCGCTTTGCCGCTAACAATGGTTATTGTCAGCGGTGGTATGGATATTTCATTTGGTTCTACAATCGGGCTATGCGCGATTACCCTGGGTGTGCTGTTTCAGCTCGGTATGCCGCTACCTTTAGCGATTATTATTACCCTACTACTCGGCGCAATATGTGGGCTGATAAATGCCGGACTTATTATTTATACCGGCGTAAACCCGTTG [...]
+NODE	2010	949	54835	50499	0	0
+GGTTCATACCAATACATGTATGAAAGGTACAACGCAGGATAACTGGGAGACAGCAGGCGCTATTGCTGGCGGCGCTGCGGCGGTAGCAGGGTTGACGATGGGTATCATTGCGCTTTCTAAATGATACATGCAGGCGCGGCAATGCCGCGCTTTCAGTAATAATATAAAGGTCGTAAGGATACTCAGCGACGTAATCTATTCAGCCTATCCCCCGAAAGTTAACACGATAAAACGCTCTCTTTTCTTACTCGCCCATCCCGATGGTATTTATTCTATTCCTTGTCCGATGCAGACAAAATTGTAGCTTGATAGCATCGTAAGCCGCATTACAAACACGCTTTATACAGTAAGACTTAGAGCGTGGTCATTAGGCATAAATTATTACAGACAGTCTGGATATAAACCGGAGCATACACGTAATACATGAGGATTTTGAGCACTGTCCCAGGGCCAAACTGGCAAATAAAATAGCCTAATGGACCAGATTCTTAG [...]
+AACAAAAGGCTCAGTCGAAAGACTGGGCCTTTTGTTTTATCTGTTGTTTGTCGGTGAGTAGTCTCCTGAGGAGGACAAATCCGCCGGGAGCGGATTTGAACGTTGCGCAGCAACGGCCCGTAGGGTGGTGGGCAGGACGCCCGCCATAAACTGCCAGACATCAAATAAAGCAAAGGGCCCAATCGAAAGACTGGGCCTTTTTGCATTTATCTCTCTATGGAAAAAGTTATCGGATAATGACGCCGACGCGTTTTAAACATCTTCGTAGAGTGGATAAAAACCGTTTTAGTCAACGTGATTTCCCGCCATATATCCGCCTGAACCATCGAATGTGAACCGTGCTGAAGTAGATGTACAAACGGCTTTTACTTACGCCTCTAATAAGCAATAGAGATATTCGCTGAGGACTAAGAATCTGGTCCATTAGGCTATTTTATTTGCCAGTTTGGCCCTGGGACAGTGCTCAAAATCCTCATGTATTACGTGTATGCT [...]
+NODE	2011	1	113	113	0	0
+A
+A
+NODE	2012	51	2076	2076	0	0
+ACCTTAAATCGAATATCGGACAACTCATGTCTATTATTACAAATTTACGAT
+TACATTTTTATGCGACTTTTTGGTTACGCTCGGGTCTCAACCAGTCAGCAG
+NODE	2013	177	8554	8554	0	0
+TTAATAGACATATTAATGTAACAGTTTTACGATGTCCGATAATTTATAACATTTCGTACGGTTGGAAAAATGTTACTAAATGCCCGTCAGGCAGGGAGGCCGATATGCCCGTTGACTTTCTGACCACGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAGG
+GTGGTCAGAAAGTCAACGGGCATATCGGCCTCCCTGCCTGACGGGCATTTAGTAACATTTTTCCAACCGTACGAAATGTTATAAATTATCGGACATCGTAAAACTGTTACATTAATATGTCTATTAAATCGTAAATTTGTAATAATAGACATGAGTTGTCCGATATTCGATTTAAGG
+NODE	2014	1362	72516	72082	0	0
+AGGCGTAGTGGAAACATCGCTGAACGTTGGCGTGGTCACAATGTCTGATGCGAATGTCGAAATTCACTGCCTGATTCGCTCTCTTATCGACAGCGGTAAAGATTATGTGGTGAGTATGCTGGATTCGCTGGGCAAGCTGGCTGGCGCGAAAACCGAAGCAAAAGGCAGCTATCCGGGCTGGCAGCCCGATGCGAACTCGCCGGTCATGCACCTGGTGCGGGAAACCTATCAGCGTCTGTTCAACAAGACACCGAACATCCAGATTATCCACGCCGGCCTGGAATGCGGTCTGTTTAAGAAACCCTATCCGGATATGGACATGGTTTCTATTGGGCCTACCATTACCGGACCTCACTCTCCGGATGAGCAGGTACATATCGAAAGCGTCGGCCACTACTGGACTCTGCTGACCGAATTGCTGAAAGCGATTCCTGCGAAGTAAGAAAGCGCTAAAATGCCCGTCCCATTTCTGGACGGGCTATCAATATGGAA [...]
+ATCGATAGCGTGGTGGATTGTCTGGCAGACGCCGGACTGATTACGCCGGTTGCCTGCCTGCGTCCGGTGCTGACGCTGAAAACCTCAGGGGAGAAAAGCGCATGATCTTACTGCAACTTTCTTCTGCGCAGGGACCGGACGAGTGTTGTCTGGCGGTAAAAAAAGCGCTGGATTGTCTGACGAAAGAAGCCGCCAGAGAAAAGGTATTGCTGACACGGCTTGAAACGGAGCCGGGACGATTACCAGACACGCTGCGTTCCGCGCTGGTCTCGCTGGACGGCGAAAAAGCTATGGCTTTCAGTGAACGTTGGTGTGGCACGTTACTGTGGATTTGTACCAGCCCGTATCGCCCGCACCATGGGCGAAAAAACTGGTACGTCGGCATTGGGCGCTTTTCCGCCGACGAACAGATGCAGTCTGATGAGATTCGTTTCGAGACTTTGCGCTCTTCCGGCCCGGGTGGGCAGCACGTTAATAAAACCGACTCGGCAG [...]
+NODE	2015	768	36354	35931	0	0
+CATCATCGGTGGCGTGTGTGACGGCGAGCTCCACGCATTTGAACTCCACGGTCTGACGAAAAATCATCATATCGTGAAACTCTTCGCGGCTAAGGTGCATGATTGGGCGGGGATCGTTACTCAACATCTGCGGGGTGAAGTTTTCGCTCACGTAGCTGCCGCTGCCCTGACGCGTCACCACAATCCCCAGGTCACGAAAACGCTGTACTGCGCTGCGAACGCTGACCCGGCTGACGTTAAATGAGGCGGTCAGTTCCGCTTCTGAGGGCAAACGGCTACCCGGCGCCCAACTGCCGTCCAGCAGTTTGCTGCTTATCTGATCATAAATTTCATTTACAACATTCTGTTTTTGAATGGATTTTATGCTCAAGATGGGTATCCGTTAAGATGTCGCCGAAGTGCTTTATTATATAACAATTCTCTTTTAAGAACAAAGCGCCCGGCCGGGCGCTTTACACTGTTAATCGAAACGAATGAGTACCTTAGCAGAGA [...]
+GGCACTATCGTTCAGGTGGGGATGGGCGCCAGCCCGGTAAGCTGGCCGGTGTCAACGATGCTGGTTAAAGAACTCAACTGGGTCGGCTCATTCCGTTTTATCGGTGAGTTCATCACCGCGGTACGCTGGCTGGAAGATGGGCGCGTCGATCCTCGCCCGCTTATCAGCGCCGAGTTCCCGCCCCAGCAAATTGAAGACGCGCTGATTACCGCCACAGACAAAAATGTCTCTGCTAAGGTACTCATTCGTTTCGATTAACAGTGTAAAGCGCCCGGCCGGGCGCTTTGTTCTTAAAAGAGAATTGTTATATAATAAAGCACTTCGGCGACATCTTAACGGATACCCATCTTGAGCATAAAATCCATTCAAAAACAGAATGTTGTAAATGAAATTTATGATCAGATAAGCAGCAAACTGCTGGACGGCAGTTGGGCGCCGGGTAGCCGTTTGCCCTCAGAAGCGGAACTGACCGCCTCATTTAACGTCAGCCGG [...]
+NODE	2016	32	7503	6931	0	0
+GCCACCACTGACACGGAACAACGGCACACAGG
+TCTGCCTGACAAGAGGAAATTTAAAATAATTT
+NODE	2017	12	4495	2333	0	0
+CCGCCGGGTCAG
+TAGGGAGTTATT
+NODE	2018	48	3310	2937	0	0
+TTTAACGATCAGAAAGACGGGATGCTGCGCCAACTGGAGCAACTGTCG
+ACCAGCCGGAACCAAACTGCACTTTTCCGGCAATTCCCGGCCCCTGGA
+NODE	2019	51	3336	3336	0	0
+TAACAATTTTTTATACGGCAGACAAACCAGCTGGCAACCATACCCAGGAGG
+ACCCCTTCTACTTTGTTGCGCTCCTGTTAATCATTAGCGTGGTCTGTTCCT
+NODE	2020	608	42333	42048	0	0
+TATCCCAGTTGGCCGCCAACGAGAATAACACCAATACGATCGGCTGGAATAGACAGTGATTTACTCCAAAAATAAACACCATACGACGATCCCAGCGAACTGATAAAAGAGAGCACCAAAAAGAAAAAAGTGATCCCCCAGAATCGATAGCTACTCAGGAGATCGGCGCAGGTCCATTTTTTATCTGACATTGACGGTAAAGTAATTTCCATATTTATCCCTTGTTTTCCATAGAAAATAAGAATGTATAGAACTATTTAAATTGATAATAAATATTGATTATGTGAATAACGTTTATAGCCAATTTTAACTTAAAACGAAGGGCCATTTTATCAAATAGTTCTATTCTTTTTCAGCGTATAAAAGTAGGATGTGAGGTGATTAAATCTATAGCGCCTTCTGAATGATAATCTGTGATTTTTTATGCGTGGCATTACATCATTGGGTTAAATGTGATTCCATTGTGAGTTATATTTTTCCGTCAGCAAATAC [...]
+GCTATGGCAACAACCTGAATTCCAGCAAAGCGCCCACTATTCCGCCAAACGCGTCACGCAAATTCTGTATTTGCTGACGGAAAAATATAACTCACAATGGAATCACATTTAACCCAATGATGTAATGCCACGCATAAAAAATCACAGATTATCATTCAGAAGGCGCTATAGATTTAATCACCTCACATCCTACTTTTATACGCTGAAAAAGAATAGAACTATTTGATAAAATGGCCCTTCGTTTTAAGTTAAAATTGGCTATAAACGTTATTCACATAATCAATATTTATTATCAATTTAAATAGTTCTATACATTCTTATTTTCTATGGAAAACAAGGGATAAATATGGAAATTACTTTACCGTCAATGTCAGATAAAAAATGGACCTGCGCCGATCTCCTGAGTAGCTATCGATTCTGGGGGATCACTTTTTTCTTTTTGGTGCTCTCTTTTATCAGTTCGCTGGGATCGTCGTATGGTGTTTATTTTTG [...]
+NODE	2021	46	2808	2808	0	0
+GCTGGAAAACATCGACATCGTGCCGCTGTATTTGGCTGCTGAACGC
+TGTATTGCCAGATATCCTGCTCAGTCCAGTTGGAGAGCGGGAAGAC
+NODE	2022	39	40	40	0	0
+AACGCCGAACGGCGTGATCCGCAATTCAGACGTGGCGAA
+CCAAATACAGCGGCACGATGTCGATGTTTTCCAGCCAGA
+NODE	2023	51	2327	2218	0	0
+ACCGACCACCGGTATGCTGCGCACGCGTGCCTACATTGGCCAGCATATGCC
+TTCCAGCTTATAAATCAGGATAGCGTGATCATCTTCACGGCTGGAAAAATT
+NODE	2024	51	1588	1551	0	0
+ACCTGCCGCTGTAATCTCCAGGCCGCGTTTACCCTGCTCCTGACCGATCAC
+TGGCCATAATCTGCTATTGATCGGCCCGCCGGGTACGGGTAAAACCATGCT
+NODE	2025	773	37874	37710	0	0
+CGCGCCTTCTGCGTCGTTATGGCTCACCAATATCTGTGTGCAAATCTGTCTGGTGCTGATCTGGCTGACCGGTTCGGACTACAACACGCTATTGACGATTGCGTCAGAAATGATTCTGGTGCCCTACTTTCTGGTCGGCGCATTTCTGCTGAAGATTGCAACGCGTCCCCTCCATCGGGCGGTCGGTATCGGAGCCTGTATTTATGGCTTATGGTTATTATATGCGTCGGGTCCCATGCACCTGCTGCTGTCCGTCGTACTGTACGCGCCAGGATTACTGGTTTTCCTGTATGCGCGTCGGACGCACAAGCATGACAACGTATTAAATCGTCAGGAAGTCGTGCTGATTGGTTTATTGCTGGTCGCGGCGGTTCCGGCTACGTGGATGCTGGTGGGTTAACAACCTCCCCATCGTAATATCCGTCTGTATTACGATGGGGAAACCACGGTCTTTGCCAATATTAATGCCATTTAATCCAGCAAAAAATCAGC [...]
+TTATTATATCGCCGGATTAATTCCTCTGTTTCCAACGTTTGCGCTTATCGCGCACTATATCGTGGCCAGCGAGCGGGGCATCGACGCGATGCGTACCACCATCGTCTTTAGCATGTGGTCGATCATTCCTTATTTCATTTATCTTGCAACGCTATGGTATTTCAGCGGCGTGATGCGCCTGCCCGTCGCGCTTGGCGGTGCGGTGGTCTGCTGGGGGCTAAGCGCGTGGCTGCTGATTTTTTGCTGGATTAAATGGCATTAATATTGGCAAAGACCGTGGTTTCCCCATCGTAATACAGACGGATATTACGATGGGGAGGTTGTTAACCCACCAGCATCCACGTAGCCGGAACCGCCGCGACCAGCAATAAACCAATCAGCACGACTTCCTGACGATTTAATACGTTGTCATGCTTGTGCGTCCGACGCGCATACAGGAAAACCAGTAATCCTGGCGCGTACAGTACGACGGACAGCAGCAGGTGCATGGGA [...]
+NODE	2026	184	10615	10615	0	0
+CCTCACCATACCCCCTTTCGCTATGAACAGCAGGAGGAGGCTTACCGTCACTTTTCAGCAAATGTCGGCTTTGATCCCGCCGTCGTTACCACGTTACTCCACGAGCTCAGAACGCAGTACGAGACGTTAATCGTCGTAGGGTATAGCGTCGGCGCAACGCTCGCATGGCTAAGTGCAGCCAGTG
+ACGATTAACGTCTCGTACTGCGTTCTGAGCTCGTGGAGTAACGTGGTAACGACGGCGGGATCAAAGCCGACATTTGCTGAAAAGTGACGGTAAGCCTCCTCCTGCTGTTCATAGCGAAAGGGGGTATGGTGAGGAAACAGCGCGGGAATATAGATGTCGAATCCGCGCGTCATCCATTCATGGC
+NODE	2027	1531	90720	90247	0	0
+CCCAGCTGCCCGGCGCGGGACTGCTTACGTCCCAAAAAGAAAATCACGCCAATAAAAATCAGCAGCGGCGATAGCCACGACAAATCAAAGGTGAGAATACGCGCCATTAGCGCAGTACCCACATCAGCGCCCAGCACAATCACCAGAGCTGGCGTCAGGGCGACAAGATCCTGGGCGACAAACGACGTTACCAATAAAGTGGTGGCGTTACTGCTTTGTACCAGCGCGGTAACACCGATACCCGCACAAAAGGCGAGCGGTTTCTTTTCCACGCTGCGGCTGAGGACAGTGCGTAGACGCGCGCCAAACACGCGCATTACGCCAGTACGAACGATATGTGTTCCCCATACCAACAGCGCAACGGCAGAAAGTAGATGGAGCAAAGTTAACACGGCGTCAGGTTCTCCTTATCGTTATACGTTTTCCTGAAGCTCACTTGCGATAAATTGCCTGATGGCGCACAGCGTTAAGGCCTGCTGGCGTTGCACGCCA [...]
+GTCGCTGGCCGGCAAATACCCGCGCATTCTGGAAGATGAGGTGGTGGGCGTTGAGGCGCAGCGTCTGTTTAAAGACGCCAATGATATGCTGGATAAACTAAGCGCCGAGAAACTGTTGAATCCGCGTGGCGTGGTGGGCCTGTTCCCGGCGAACCGCATCGGCGATGACATCGAAATCTATCGCGATGAAACCCGTACTCATGTTCTGACGGTCAGCCACCACCTGCGCCAGCAGACCGAGAAAGTTGGTTTTGCTAACTACTGTCTGGCGGATTTTGTCGCGCCGAAACTGAGCGGCAAAGCGGATTACATCGGTGCTTTCGCGGTGACCGGCGGTCTGGAGGAGGATGCGCTGGCGGACGCCTTCGAAGCGCAACACGACGACTATAACAAGATCATGGTGAAAGCGATTGCCGACCGTCTGGCGGAAGCGTTTGCCGAGTACCTGCATGAGCGTGTACGTAAGGTTTACTGGGGATATGCGCCGAACGA [...]
+NODE	2028	37	5306	5306	0	0
+ACCGGGACAACCGTCGCCCGGCCAACATAGCCTTCTC
+TGTGTGTTCCAGGTAAATCCGGTTCACTTTAACACTG
+NODE	2029	44	7666	7633	0	0
+AGAGTTGAGTACGCAATAATTTGCGCAGCAGCAAGGCGGCAAGC
+GTGCTGAAAATCTTCTCTCATCCGCCAAAACATCTTCGGCGTTG
+NODE	2030	4	1716	989	0	0
+TGCC
+ACGC
+NODE	2031	4904	272345	270898	0	0
+ATATCGTCATCTTCATAAACAATATCTAACGGGATATCCTGCGCTTCAAAACGAATCTCTTCGTCGATCTCCGCATCAATAGCCACCCGCTCGCCGCCTAACACTTTTTCTTTTGGCTTATCGCAAAGTTGACCATTGACCAACACGCGCTGATTCAAAATCCATTCTTTTATACGCGAACGTGAATAATCCGGGAACATTTCGGCCAAAGCCTGATCTAAGCGTTGACCGAGTTGGTTTTCGGAGACCGTTGCGGTGAGTTGTACTCGTTGTGCCATATACAGCTTCTTCGTTTAACGTTGGGTTTTACGGCTTTGCCGTTTAATATAGTGTGCTATTGTAGCTGGTCTTAACCGGGAGCAGGAACAGAGAATCTCCCGTAAAACATTTTGAGGAAAGTCAAAACGTCATGACGCGCATGAAATATCTGGTGGCAGCAGCCACGTTGAGCCTGTTTCTGGCGGGTTGCTCGGGTTCAAAGGAAGAGGTGCC [...]
+GGGCTATCAGGTCCGTATTCTGGAACAGCAGGACTGGCCGCGCGCCAGGGACATTGTTGCCGATGCCGGAATGGTGATCGTCAGCGTGCCGATTCATGTTACTGAACAGGTCATAGCGCAACTGCCGCCCTTGCCGTCCGACTGTATTCTGGTCGATCTGGCATCGGTGAAAAGCGGTCCGTTGCAGGCAATGTTGGCGGCCCATGATGGCCCCGTGTTGGGCTTGCATCCGATGTTTGGTCCGGACAGCGGGAGCCTGGCGAAGCAGGTGGTGGTCTGGTGTGATGGGCGTCAACCGGAAGCGTATCAGTGGTTCCTTGAGCAAATCCAGGTGTGGGGCGCGCGGTTGCACCGAATTAGCGCAGTCGAGCACGATCAGAACATGGCTTTTATCCAGGCGTTGCGCCACTTTGCTACCTTCGCTTATGGGCTGCATCTGGCGGAAGAGAACGTCCAGCTTGAGCAGCTTCTGGCGCTATCATCGCCGATTTA [...]
+NODE	2032	484	24654	24463	0	0
+GGGCGGTGGTAATTAAGTCTTCTTTATTTAATTGCGGCCAGACATGTTCCTGAGTGGTTTGCTGAAAATCATTAAATTTTAATTTAACGCCCTGTCGGGCAATCAGTAAATCGGGCTTCACTATAGCCAGACGACGCTCCAGTTCCGGATATAAATGTTCAATAATGGCCTCGCAGTCCGACCACTCATGAATATCCTCCGCCAGAGTACGCTCAACGCCTACCGATTTACGCAGCCTTTCGCTGTTAACATCACGCTCGTCAATACCCTGACTACGCTCCCATAATACCCGGCCAAATTTACCGAAGCGTTTGAGAAGCATCGCCAGATCGCACTGTTGAATATCCCCGCAGGTTCTTAACCCCATATTTTCCAGTTTGGCGGCGGAAACTTTCCCCACGCCTGGAATTTTGGCTAACGGCAACGTTTTAAGAAAGCCGGGTACATCGGCTGGCGTAATAACATATTGTCCGTTCGGTTTATT
+TCTTAAAACGTTGCCGTTAGCCAAAATTCCAGGCGTGGGGAAAGTTTCCGCCGCCAAACTGGAAAATATGGGGTTAAGAACCTGCGGGGATATTCAACAGTGCGATCTGGCGATGCTTCTCAAACGCTTCGGTAAATTTGGCCGGGTATTATGGGAGCGTAGTCAGGGTATTGACGAGCGTGATGTTAACAGCGAAAGGCTGCGTAAATCGGTAGGCGTTGAGCGTACTCTGGCGGAGGATATTCATGAGTGGTCGGACTGCGAGGCCATTATTGAACATTTATATCCGGAACTGGAGCGTCGTCTGGCTATAGTGAAGCCCGATTTACTGATTGCCCGACAGGGCGTTAAATTAAAATTTAATGATTTTCAGCAAACCACTCAGGAACATGTCTGGCCGCAATTAAATAAAGAAGACTTAATTACCACCGCCCTTAAAACCTGGGACGAGCGTCGCGGCGAGCGCGGCGTACGGCTGGTGGGG
+NODE	2033	229	12705	12668	0	0
+CGGCGGCGCGCAGTCACGTCCACAGCAATCCGCGCCAGCGCCGTCTAACGAACCGCCAATGGATTTTGATGACGACATTCCGTTCTGATTTTTGGTAAAAAACTCAAAGCGTTATTTGCATTTTCGCTATAGTTCTCGTCTGCTGAAATGCCTGGTGTAAACCAGGCATTTTCTTACCTGGTATTATTGTCTTAGAGCCTATCCCACCAGGCGTTATTGGCGCAGCCAG
+AGGTAAGAAAATGCCTGGTTTACACCAGGCATTTCAGCAGACGAGAACTATAGCGAAAATGCAAATAACGCTTTGAGTTTTTTACCAAAAATCAGAACGGAATGTCGTCATCAAAATCCATTGGCGGTTCGTTAGACGGCGCTGGCGCGGATTGCTGTGGACGTGACTGCGCGCCGCCGCTGAACTGGTTGCCGCCCTGCGGCTGCTGAGGTTGTTGCGGTTGACCCCA
+NODE	2034	4	589	589	0	0
+GCAG
+TAGT
+NODE	2035	51	2773	2147	0	0
+CGGCAGATAGCAGCCATAAAAAAACCCGCTTTACGCGGGTTTTTCTACAAA
+GTTTTGCTCGTCAACCGCTGGCGCTGACCTCACTCGTTCACGCTCTTCCTG
+NODE	2036	10	20	20	0	0
+GTAGATGCCT
+CCCTCTTTTT
+NODE	2037	8	977	977	0	0
+TCTGAGTG
+TATAATGC
+NODE	2038	28	5774	5746	0	0
+CGTTCTACCGACTGAACTACAGAGGAAT
+ACTGGTTCGAGTCCAGTCAGAGGAGCCA
+NODE	2039	3	421	421	0	0
+CGT
+GTC
+NODE	2040	3	297	297	0	0
+GTG
+TAT
+NODE	2041	1	156	73	0	0
+A
+G
+NODE	2042	439	24571	24334	0	0
+CATACAATATCGGGAAAAATACTCGTAATCTGAGCATTGGCGTACATGCGTACTGCTCGTGGACATACCTTAATGGCTCGCCTTTTGGTGGTTTTCAGCAGATATACGCCGACCAAAACAAGGTTTGGTATGTGAATAATTATGCGTGGGGAAATTATGAGTCCGGTGGCACAATTACAGTGACATGCCTCAACCTTCCTGGTGCCGGAATCTAACCAAAAGGGCAACAGTAAGCATCGACGTGCTCTTCATCAACACCATCTCCGATGCCGTACATTCTTGTACCTGTCATGACGTACCCGGCAGGGCACTGAATCGGCTTGTAATAAATAGAACCTCCACTTCTGCCACCGATAAAATGTGCGGAGGTCGCTTCATACCATTTACAGGCAGAATAGTTCACTTTATTGCCTCCAAGCCACAAACCGGATTGGCACTG
+CTGTAAATGGTATGAAGCGACCTCCGCACATTTTATCGGTGGCAGAAGTGGAGGTTCTATTTATTACAAGCCGATTCAGTGCCCTGCCGGGTACGTCATGACAGGTACAAGAATGTACGGCATCGGAGATGGTGTTGATGAAGAGCACGTCGATGCTTACTGTTGCCCTTTTGGTTAGATTCCGGCACCAGGAAGGTTGAGGCATGTCACTGTAATTGTGCCACCGGACTCATAATTTCCCCACGCATAATTATTCACATACCAAACCTTGTTTTGGTCGGCGTATATCTGCTGAAAACCACCAAAAGGCGAGCCATTAAGGTATGTCCACGAGCAGTACGCATGTACGCCAATGCTCAGATTACGAGTATTTTTCCCGATATTGTATGTACTGGTAGTGAAGTTCATTTTTGTCGTTGTCCAGATACCGGATTGGCAC
+NODE	2043	19	887	887	0	0
+CGTTAAAAAGATACGGGGG
+CGCTCATTGCCTGCCGCCA
+NODE	2044	32	1150	1150	0	0
+AAGGGGCATTTTCAGAATTTATTGTGCCGACA
+GGCGTGGGCATAAAATCGGCGCGTTCACATTT
+NODE	2045	51	1474	1431	0	0
+TTGCCGTACAAAGGCAACGCACGAGTTATTAGTGGCTATAAGGGCGTTTCA
+ACGCCCTCATCCTGTTGAGGATATTGCTATGAGCATCACTTTACTTGACGG
+NODE	2046	1	142	142	0	0
+C
+A
+NODE	2047	4978	327740	326380	0	0
+AGCACCCCGTACAAATTAATAGATAACGGAGGCTATACCGACTATGAAAATGACCTGCAAAATATTCATTTCAGCATTGGCATCTGCAACCAGCGTCTGAGTAAACAAGAACCTGATACCGAAAAACGTTCCGCTTATGAAAAAGAACTGCTCGATAATCTCTGGCTGGCGCATCAGTTCGGGCATAAAGAGGCCTGGGGCTTGTTCCTGCTGAATATTTTTGAAGTGAAGGATATTACGCTGGCGCATAAGCATCTGGAACTGGTGCAACAAGAGGCCAACAAAGGCACGCTACATGCTATGGTGACCCTATCGCGTCTGCACGGTAATAAACACGATCGAACTCTGTTTAATATGAAGCTAAGCGCACGCTGGGCGCATTTTGCCTTCACACTTTACCCGGATAATGAAATCGTTATGGACTGCCTGGACCACCTGCATTTCGATTCTTTCTGGAAACGCTTTCGTTTCGCCTGGTATACCGTCCGTATC [...]
+TGATGGTATGAAATATTAATTGGATATGTCGTGAACATATTTTTGTTATATGTTTTCAATGTGTATGACAAGAAAATTTGCATGAAAAGATTATATGAGATGGTTTGAAAAATGAATGAAGTTCACATAAAAGCAAGGTCATTCTGAAACGAATTTGTCAAATTTACTGAATTATATATCAATAATTCCTGACTATCGACAATAATGTGAAATCGAGTACAAACTCACGGATTTGTAGTAATTAGGGCAAAGAACAAGTCAGATAAAAAATTTCTCATTATTTATTCAAAAAGCAAGTGCAAACTGTTAGTTTGAATTTGTACTTCTTCATAGAAGTGTTGAATAATATTGACGTCAAACATGTTCTGCCTTTTTTTACTAAACTGAGTAAGGTAACTTTAATATTATAATTGCAATGATACAAAATCACATCAATATATAATGAGGAAAACTATATGCCCGCCGCCGCTCGACTAAACGACAAAGGTATGC [...]
+NODE	2048	1378	56860	56758	0	0
+CCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTGCAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCAGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGCGACCGAGTTGCTCTTGCCCGGCGTCAACACGGGATAATACCGCACCACATAGCAGAACTTTAAAAGTGCTCATCATTGGAAAACGTTCTTCGGGGCGAAAACTCTCAAGGATCTTACCGCTGTTGAGATCCA [...]
+TCTCTTGATCTTCAGGTCAGAGCACTCAAAGACGCAGGTGTGAAAGCAAACCGTATATTTACCGATAAGGCATCCGGCAGTTCAACAGACCGGGAAGGGCTGGATTTGCTGAGGATGAAGGTGGAGGAAGGTGATGTCATTCTGGTTAAGAAGCTCGACCGTCTTGGCCGCGACACTGCCGATATGATCCAACTGATAAAGGAATTTGACGCTCAGGGCGTGGCAGTCCGGTTCATTGATGACGGGATCAGTACCGACGGTGATATGGGGCAAATGGTGGTCACCATCCTGTCGGCTGTGGCACAGGCTGAACGCCGGAGGATCCTAGAACGCACGAATGAGGGCCGACAGGAAGCAAAGCTGAAAGGAATCAAATTTGGCCGCAGGCGTACCGTGGACAGGAACGTCGTGCTGACGCTTCATCAGAAGGGCACTGGTGCAACGGAAATTGCTCATCAGCTCAGTATTGCCCGCTCCACGGTTTATAAAATT [...]
+NODE	2049	832	42070	41785	0	0
+CAATTTTGAACGCGGCGCGAAGGTCGACGCGCAGCAGATTGTGATTGTCAGTGGCGCGCGTCAGGCATTCTGGCTATGCGGGCAACTGCTGGCAGAGGCCGGACAGTCGGTGGTGATGGAAAATCCAGGCTATCCCGGCGCACGTCAGGCATTCTCTGCCGCACAGCTCAACCTTCTTCCCATTGAAGTCGATAGAGACGGTATTCGGGTGGATAAACTGCCGCCTGCGCCGCTGGTTTACGTTACGCCGTCGCACCAGTTTCCCTCCGGTCATTTGCTCTCTCTGGCGCGGCGTCATGCCCTGATTGACTGGGCGCGGACGCATAATGCCTGGATTATCGAAGATGACTACGACAGTGAATTTCACTACAACGGCGCGCCCGTCGCCTGTATGCAGGGGTTAGATCGCGAGCAGCGCACCCTGTATGTCGGCACCTTCAGCAAAACGCTCTACCCCGGTCTGCGCATTGGTTATCTGGTGGTGCCTGCGTC [...]
+TTAACCCGGCCCGCCGCGCGGCGTTAAGGGTCTGTTGTTCGTCAATACCTTCATGTAGCCAGCAGGGCATTTGTAATCCTCCGGGCGTCACGACCGGCGTCACCCAGTCACTAAGATGCTGATTGATGGCCTGCGCCAGGCACGCCTGCCGCACCGCGTACATACTGCGCATGGTGCGGATATGGGCGGCAAAATGGCCGGATGCGATAAATCGCGCCAGCGTCAATTGGGTCAACGCGGGCGTTGCGCCATCAAGCAAATTGCGCGCAGCGGCAAAATGCGCGGCCAGCGACGCAGGCACCACCAGATAACCAATGCGCAGACCGGGGTAGAGCGTTTTGCTGAAGGTGCCGACATACAGGGTGCGCTGCTCGCGATCTAACCCCTGCATACAGGCGACGGGCGCGCCGTTGTAGTGAAATTCACTGTCGTAGTCATCTTCGATAATCCAGGCATTATGCGTCCGCGCCCAGTCAATCAGGGCATGACGCC [...]
+NODE	2050	821	49100	47693	0	0
+ACATACAGTGGTTATTGATAAACCGGATGAAACGGCGATTGCCTGTCCAGCCTGCCAGCAAGGACATTTGGTCCAGCGCCGTTCTCGTTACGGTAAAATCTTTCATTCCTGCGATCGCTACCCGGAATGTCAGTTCGTCATTAACTTCACACCGGTTGCGGGGGAATGCCCCGAGTGCCATTATCCGCTACTCATCGAAAAGAAAACCGCGCAGGGCGTGAAGCGCTTTTGCGCCAGTAAACAATGTGGAAAGCCGGTTCCGGTGGAATAAACAAGTGAATAATAACCTGCCAACAGGATCTATCGCCGCAGCGGTAGATCTCCTGAATAAAGAAAATGTCATCGCTTATCCAACAGAAGCCGTTTTCGGCGTCGGCTGCGATCCCGATAGTGAAACAGCCGTTACGCGCCTGTTGGCGTTAAAACAACGGCCCGTCGATAAGGGACTCATTTTGATTGCCGCCAGCTTTGAGCAGTTAAAACCTTATGTTG [...]
+CAACCACCGGAAAATCATCACCAAATTGCGCACGCACCTCTTCAACGGTACGGCATGGCGGTAATCCGCTCAGATTAGCGCTGGTGGAAACCAGCGGTTTGCCATACGCATTGCATAGCGCGACCACCAGCGGGTGGTTGGTAACACGAACGGCCAGGGAATCAAAACGTCCCGTGAGCCACCGCGGCGTTGTCGCGGGCGCAGGAAAAACAAACGTTACCGGCCCGGGCCAGCAATCAAATACTGCTTTACGCTGTGCGGCGGTAAGTATGCTGTCATCAACATAAGGTTTTAACTGCTCAAAGCTGGCGGCAATCAAAATGAGTCCCTTATCGACGGGCCGTTGTTTTAACGCCAACAGGCGCGTAACGGCTGTTTCACTATCGGGATCGCAGCCGACGCCGAAAACGGCTTCTGTTGGATAAGCGATGACATTTTCTTTATTCAGGAGATCTACCGCTGCGGCGATAGATCCTGTTGGCAGGTTATTAT [...]
+NODE	2051	51	2714	1736	0	0
+ACCTACATTTGGGCGGTAGCCATCGTCATCAATCACCGGACTACCTCAACA
+TATCGTAATTTGTAATCGTCAGGGGCAGGTGATGTGGGCCCGGCGATTTGG
+NODE	2052	51	92	92	0	0
+GTTTATCCAGACGAAACGCTTCGCGAAAGAAGAAAATAGTGACGACGATAG
+CCCGGCCGCAATAAAATGTTCGTGGCGTTTATTCTGATGATTGAAGCCGTG
+NODE	2053	51	3824	3824	0	0
+ACCGGCCGCAATAAAATGTTCGTGGCGTTTATTCTGATGATTGAAGCCGTG
+TTTTATCCAGACGAAACGCTTCGCGAAAGAAGAAAATAGTGACGACGATAG
+NODE	2054	51	3337	3285	0	0
+ATAGGGGGAGCGAATAACGCCGATTTGTTCAAACTGAAAGCTGCTCATTTC
+TAAAGAAAAATTCGCCGTTCCGCGCCAGCCTGGTCTGGTCAAAAGCGCCTG
+NODE	2055	1522	97468	96603	0	0
+GATTGAACACAGGAAAAAATTGATGAAGACGCAGATTAGGTACGTTGAAACAAAGCTTTCAAAGCCCCTCAGGCCGAGGTCTTAGTTGACGCGAAACATGGCATAATAGCCATTTCGAACTGGTAACCACGACGATTACGCTGGAAGACGGTTCAACTGGCACCGGATATACCTATACCGGCGGAAAGGGAGGGTATGCAATTAAAGCGATGATCGACCACGATCTTGCCCCGGTACTGTCAGGGAAAGAGGGCGCTGCGATTGACGATATCTATGACTTTATGGAATAGCATATTCACTATGTGGGTCGCGGAGGCATCGCATCGTTTGCGATGTCTGCGGTGGATATCGCTCTTTGGGATTTGAAAGGCAAACGTGAAAAACTGCCGCTGTGGAAAATGGCTGGCTGAAGGCGGCGCGTCTGTCGACGAATGGCGGTCTTTCGGTATGCTCGCTCGGTATGCAGGAATTACACGTCAGACTGGTTTCCGC [...]
+GGAACAAATTTTAACCAAGCGGCGCTATTTTGATATAGGGCTGCAAATAGAAGAACTACTCTATTCAGGGGTATTTAAAGCTGGCGAGCGACTTCCGGCGGAGAGAGAACTTAGCGAGCGTTTTCAAACCAGCCGCACGACGATTCGTGAGGCGATTATTATGCTTGAGCTGAAGGGAGTGGTAGAGGTTAAGCAAGGCGCAGGCACTTACTTTATTGATAGTCTGGAGAAAATCAATCAAAAAGCGCTCTTGCCTTACTCAGACATTGGCCCCTTTGAATTGCTACAGGCCCGGCAGGTCATCGAAAGCAACATCACCGGTTTTGCCGCTACGCAAATAAGATTTAATGAACTTAAGCAGCTTAAACGTATTATTGAGCAGCAGGAAAAGCAGATTGGCGGCGACAGCGACAAATTTGAAGAACTGGATCGCCAGTTCCACAATATCATCGCGGAATCCACGCAAAATCGTGTATTAATGAAACAATCTGC [...]
+NODE	2056	51	3515	3515	0	0
+CAAATCCTAATGTTTATGGTAAACAATTTCCCTGCCAGAGAGTGGTCGTTT
+GTTTACACTACCCTCAAGTGGAGCAATTGCTGTCTACATAGGTATGTGCAT
+NODE	2057	51	123	123	0	0
+GAATAATGCAATCCCGCTCCCCATCATATTACCGGCAACGACGCCAGTACA
+CCCCGCCAACCTTGCCAGTATTGGTGGCATTGCCATCTGGGGCTGGGTAAT
+NODE	2058	42	2920	2920	0	0
+GACGCTTTTCAGCGTCTCTTTTCTGGAATATTGGTACCGAGG
+CGTCTGTTGAAACTGCTCTCAGAGAGGAGGTTGAAGCACGCT
+NODE	2059	1285	68167	66544	0	0
+CCGCCTGTTAGCGGAGCGTGGGTTTCACTGCACAGGCGTAGATTTCTCTCCGGCATCCATCACATGGGCTCGCCAGCAGGCGCAAGCCGCAAACCTGAATATTGACTACATTCAGCAGGATATTCGTACATACCACCCCACGGAACCTTTTGATTTCATTATGATGACGTTTGGGGAACTGAATGTCTTTAGCGCTGCTGATGCGCAAAGCCTCATCAGTCATTGCGCGCAGTGGTTGAAACCGGACGGCAAACTGCTTGTTGAAGTGCATACCTTTGATGAAGTTAAACGCCAGGGCATGGCGCAGCCAGGCTGGCAGCGTTGTCCGCACGGCCTGTTTCTTGCCATGCCTCATCTGCTGTTAACGGAAAATGCCTGGGATGAAGAGGCCCAAACCAGCTCAACGCAGTTCTGGGCGATAGCGGAAAACGGCTGTACCACCCGTTTCGGCAGTCAAATGAAGGCCTGGCGCGATGATGAATATATCAGCCT [...]
+TCGCGGCTTCATATCTGTCCCAGCCTTGCGGGTCCGCCAGCACCATTTCCACTACGTCATAGCCGAGTTGGTCAAAAAAGGCGACCAGCTCGGGCAGGGGACGAAAATCGGCGACGGATGAGACGCCACAGGCGTGGGCGATCTCTTCCGTTGCGGGGATCCGACGCCAGTACGGTTCGCCGATGAGAATGATCCCGCCTGGTTTGAGGCTTTTGGCCAGCAGATCTATTGTCCCAGCGACACCGCCCGCAATCCAGGTGGCGCCTACGCAGGCCGCCACGTCATATTTTTCCTCGTCGATATAACCGGCCGCGTCGTTATGAATAAAATGTACGTATTCACTGACGCCGAGCTCTTCTGCACGTTGTTTTGCCTGTGTGGTGAAGAGCGGGCTTATATCAATGCCAGTACCTGTAACACCGTAATCGCGAGCCCAGGTGCAGAGCATCTCACCCGAACCGCTACCGAGATCGAGAATCCGTGTGCCTGGTT [...]
+NODE	2060	61	2570	860	0	0
+CACATTTTTTGTGAAAAACCGCTCAGCATGAATGAAGATGAGCAGGCCTCAATGGCGGTGC
+CAAAAAATGTGCTTCCCCGCCTGCGCTGCCGCCGTGACGATCTCTTCGTGCATATCCGTTG
+NODE	2061	51	4336	4336	0	0
+CGTTTGAGTGGCAACCATTCACCAGGCTGAGAATATGAAAACATTTTTCCT
+GTATCACACTAAAATAATTCTATATTTCATAAATTATGATGATGAAGTTAA
+NODE	2062	51	2423	829	0	0
+GCCCGATATGACCCGCCAGTAAGTGAAAAATTATGATAAATGCAAATCGTC
+CTGACCTGGTTAATGCTGTGCATTCAGAAACAAGCAATTCCATTTGTAATG
+NODE	2063	3	114	112	0	0
+ACG
+CTG
+NODE	2064	5	309	309	0	0
+GCCCG
+TGAAG
+NODE	2065	29	1713	1563	0	0
+ACGGCGATTTATCTGTCGGGCAAGCTGGC
+AATGCCGATGGCCGCCGCCTGCGGCAGGG
+NODE	2066	5	1346	1318	0	0
+GACAC
+AGGGG
+NODE	2067	5	493	486	0	0
+CACCA
+TCGCT
+NODE	2068	42	2610	2610	0	0
+ACCGCGGCCTCAGGCGTATCTTCAATCACGCATTCCGGGTGT
+AGAAATGTAAGTGGACGGTCAACGCGCTGATTAACCACCATT
+NODE	2069	9	538	538	0	0
+TCGTTGGTG
+TGGGGCTGG
+NODE	2070	51	1927	1921	0	0
+ACCCGACGCGTCGCTGACCACTTGCACCTCATCGCCAGGTTTTAGCGCCGC
+TTTCTTTGTACTGGATGAAGTGCCTGACTGCGAGACGCTATGGATGCTGGC
+NODE	2071	1239	69494	68312	0	0
+CAGCCGCGGGCTGAGCTTTCCTTGCGGCACCGTCACCAGATAAAACTCTAAATTCGGATTGTCAGGCGCATTGACATAGGAATACGCGCGCTGAACGCGCTCGCCATCGATCTCCAGTCCGAGTTTGGTAAATTGGCCTGCAGTAAAAGGATTAATGGGGGCGTGAACGGTCAGGCTGAACAGTGCGTCAGTCCAGTTTTGCACCTTAGTGACTTTACCTGTTACCCAATCGGCCATGGTTTTCTCCTGTTCTGAATCGCTAACCTTATCTTCGTTCGTCAGGAGAAAGATTTCCAGCCCCGCGAGGCTGGAAGGCTCTAACTAACAAATGCGCTAGAGGATATGCGCCTGTACATCCGGATCTTTACGATCAAGATAGTGGATCGACTGAATGCGGCGGATGGTGCGTGATTTGCCGCGGATCAGCAGCGTTTCCGTCGTGGCAATATGGCCTTTCCGGCTAATTCCTTCCAGCAGATCGCCTTTCGTGAT [...]
+CATCGTGATTGGCGAAGGCGAAATCGACGAGGCCCCGATGCTCTATATCGGCGAGAAAGTCGGTACCGGCCACGGCGATGCGGTAGATATCGCCGTCGATCCGATTGAGGGCACGCGCATGACGGCGATGGGTCAGGCGAACGCGCTGGCGGTGCTGGCGGTCGGCGATAAAGGCTGCTTCCTGAATGCGCCCGATATGTATATGGAAAAACTGATTGTCGGTCCGGGCGCCAAAGGGGCGATCGATCTCAATCTGCCGCTGGCGGATAACCTGCGCAACATCGCGGATGCGCTGGGTAAACCGCTTGGCGATCTGACCGTGACCATTCTGGCAAAACCGCGTCATGACGAGGTCATCGCAGAGATGGCCAAACTGGGCGTACGCGTGTTTGCCATTCCTGACGGCGACGTCGCGGCCTCAATTCTGACCTGTATGCCGGATAGCGAAGTCGACGTGCTGTACGGAATTGGCGGCGCACCAGAAGGCGTGGT [...]
+NODE	2072	51	72	72	0	0
+GTCAGTCTGCTAACAGCACTAACTCCCAGTCTGACCTCGACTCCATCCAGG
+CCCGCCAGTTCACGCACACGCTGCAGGTTGTTGTTGATTTCGTTCAGCGCG
+NODE	2073	158	7929	6073	0	0
+CTGCTGGCGCTGCACACGGTGCTGCAGCGCCGGGCCATTCTGCGCGGCGTGGCGCAGCAGCGGGCGCGCGAGGCGCGGATGCGTGCCGCACAGGCGCAACAGGAGGCGGCGTGAACCTGCGACGTAAAAACCGGCTATGGGTGGTCTGCGCGGTGCTG
+CGCCTCCTGTTGCGCCTGTGCGGCACGCATCCGCGCCTCGCGCGCCCGCTGCTGCGCCACGCCGCGCAGAATGGCCCGGCGCTGCAGCACCGTGTGCAGCGCCAGCAGCACCAGCGGCGCCACGGTCATCGCCACCGCCAGCCAGACAAAAAAGGCGT
+NODE	2074	51	3366	3289	0	0
+ACCGTCCGGGCGACGAACACCCTTCTTGGTGCGCACCACTACCGCCTTCAG
+TTCTGTCATTCGCTTCGATGGTAATGCATGCGTTATTTTAAACAATAACAG
+NODE	2075	4	213	213	0	0
+CTCT
+GCGA
+NODE	2076	2	752	244	0	0
+GT
+AC
+NODE	2077	51	2576	2576	0	0
+GCTGGGGTGAGCGAGCGTAGCCAACACATAAGCAACTTGAAGTATGAAGGG
+CCACAGAGTTATCTATGCTCCTGGGGACTCACTCCCTTGCCGCCTTTAAGC
+NODE	2078	916	49552	49202	0	0
+TCCGCAAAGCGGAATTTACCTCCAGCGCGGCTTAATTATTTTTGCATTATTGTGGATAGTCGCTGGTTGGTTTGACTGGTTTGGCATGTCTATGGCGAACGGCGCGCACATCGCCGGGCTTATCGTCGGTTTAGCGATGGCCTTTGTTGATACGCTGAATGCGCGAAAACGAACGTGAGGCGTATCCGGCCTGTGGTCGAGATATTTTTCCAGGCCGGGTAGGGCGAATGCCGCTATCCGGCGCAAGGTTGGTTACTTTCAGAGATTATTCATGAAACAAACACAACGGCATGACGCGATCATTGAACTGGTGAAAAAACAGGGGTACGTCAGTACGGAAGAGCTGGTGGAGCATTTTTCTGTCAGCCCGCAAACCATTCGTCGGGATCTTAACGATCTGGCGGAACAGAATATGATTTTGCGCCACCACGGCGGCGCGGCGTTGCCCTCCAGCTCGGTGAACACGCCGTGGCACGATCGTAAGGCGACGCA [...]
+AATTTTCGATAATCGCGCGCTTGGTGCGTACCTCATGATAATCAAACTCCAGCAGCGAACCATCGCTGTCGATGCCGCTAATCCCCAGAATACCGAAATCGAGACGGAACTGGGAGATGAAATCCTGCGTCGCCTCGCCAATAATGCCGCCGTCGCGGCTGCGGAGTTCGCCGCCGGCGAGGATAATACGAAAATCCTCTTTCGCCATTAGCGTGTTCGCTACGTTCAAATTGTTGGTCACGATCCGCAAATTACTGTGCCCTAACAGGGCGTGCGCTACGGCTTCCGGCGTCGTGCCGATATCAATAAACAGCGTTGAACCATTGGGGATCTGGGCCGCGACTTTGCGAGCGATGCGCTCTTTTTCTTCCGTTTGCGTCGCCTTACGATCGTGCCACGGCGTGTTCACCGAGCTGGAGGGCAACGCCGCGCCGCCGTGGTGGCGCAAAATCATATTCTGTTCCGCCAGATCGTTAAGATCCCGACGAATGG [...]
+NODE	2079	104	5545	5545	0	0
+TCCGCCCAACGCATTGTCGATATGCTGGTTGCCGAGTGCGACAAAGGCGGCGTAACGATGCGCCTGCGTAGCGAGGTACTGAGCGTCGAGCGTGATGAGTCGGG
+TACGCCGCCTTTGTCGCACTCGGCAACCAGCATATCGACAATGCGTTGGGCGGAATCATCGCAAAAAAGCTGTCCCAGCGTTTTCTCATGCCAGGCTATCCCAT
+NODE	2080	47	2128	2128	0	0
+ACTGGAAACCTTAACCTGGCAGTATCGTATTCAGGGTTGGAACGTGG
+TGCGCCGCCGCCATTCGGGCGCGCTGGAAGTTTTCTTTATTGATAAC
+NODE	2081	49	69	69	0	0
+CCGACGCCGGAGAGATTGTCGCCAGTCAACGCGTCGCTATTGCGCAGGA
+GTTAACCAGAACCCAGTTTAGCGGCGCACGGCCACGATAGGCAGGCAAT
+NODE	2082	59	3475	3475	0	0
+GAAAAATACACGATGTCTCATAATATCACCCGTAAATATTAAGATTATCCTTGCTGTTA
+GTATTTTTCCCATTGCTTCTGGTGTTGTCGGCTACAGCCTTTTCGGCATCGGCGATGGC
+NODE	2083	1680	67878	66910	0	0
+GCAGAAGCGGGAGATGAACCGGTATTGATTTATCAACGGACCGGCGCGCCTGTCGCGGTGGCGCCTGAACGCGCCGCGGCGGTGAAAGCGATTCTGGCGGCGCATAATGTGCAGATTATTATCACCGACGATGGGTTGCAGCATTACCGACTCGCGCGAGATATTGAAATTGTGGTGATTGACGGGGTGCGCCGTTTTGGCAACGGCTGGTGGCTTCCTGCCGGTCCTATGCGCGAACGCGCCAGTCGCCTGAAAACCGTAGACGCCGCTATCGTGAATGGCGGCGTCGCCCGGGCGGGCGAAATCCCCATGCAGCTAGCGCCTGGACTGGCGGTGAACTTACGCACGGGAGCGCGTTGCGATGTGGCGCAACTGAGCAATATTGTAGCGATGGCGGGCATCGGTCATCCGCCGCGCTTTTTCGCCACGCTGGAAGCCTGTGGCGCGCATCCGCAAAAGTGCGTCCCGCTGGCCGATCATCAAACGCTCGCC [...]
+TCCGAAAAGCTGCGCTGCCCGCTTGCGATCCCATACCACAGGATCGAAAGGCGACAGTACTGCGCTATGGGTCGCCTTTAAGGCGTTATTCAGCGCCGGTTCCAGCTGCGAAAGAAGATCGGCATGAAGCCACATCCGCCCCAACGTTTCCACCTCGACCGGAATAATCTGCTGCTGTTCCGCCCGGCTCTCCCGCCATCCCTTCAGGTCAGGACGTTTCAGGCGGTAGTAATCCGCCAGCCACTGTTCACGGAAAATCCCCAGACTGCGCGCGCTATTATCCAGCATCAGGTTTTCCGCCTGCGACTGTGACAGTCCATCGCGTTCATCATCCCAGTGCGGCATCACACGGGGCGTTAAATCATATACACGTTGAAAATTACGCCGCTCAACAACCATGACTTTTCCGGCGGTAAATAAACCCTCAAGGTGGCGTTTATGTGGTTTCCATTCCCACCAGCCGCTGACGCCTTTCCGCGCATGTTCAAAATC [...]
+NODE	2084	51	145	145	0	0
+GATTGATTGTCGGTTTAAGCGCGATGAACGGTTTCGAACGCGAGTTGAATA
+CCCGCCACGCCCAGCGCGATACCGATGGTAGAAATGACGGAAATGAGCGAA
+NODE	2085	30	1116	1116	0	0
+TGCGGCGCTGAAGATTTGTCTGGTGATGGG
+AGCGAACACGCCGATAGTGGCGTTAGAGAA
+NODE	2086	147	10229	10148	0	0
+TTCCTGTGTATTGATGGGTAACAAGACCCGCGCATACTAATAAATTCAATGAACCGTGAGATGTGACTATCTTCACTGAATGGTTGTGTTTTTAATTAATTTAATTATTTTTATTAACTCTGGTTAATTAAGGAAATAAAAACCATA
+AATTAAAAACACAACCATTCAGTGAAGATAGTCACATCTCACGGTTCATTGAATTTATTAGTATGCGCGGGTCTTGTTACCCATCAATACACAGGAAAATGTTTATGACCAACATGACCCAGGCTTCGGCGACGGAGAAAAAGGGGG
+NODE	2087	9	257	257	0	0
+ACCCGTCGC
+AGCAAAGAT
+NODE	2088	5	239	228	0	0
+ACCGC
+GATTG
+NODE	2089	113	6049	6025	0	0
+CGGTTATACCTTCACGCTGGAAAACTATCCCACTGCCGAAGTCAATCAGGAATACCTGCTGATGCAGACCTTGCTGTTTGTGCAGGACAACGCGCAGCACAGCGGGCAGGACC
+ATCAGCAGGTATTCCTGATTGACTTCGGCAGTGGGATAGTTTTCCAGCGTGAAGGTATAACCGGTCATGAGTGTGCGGATATTCCCTCCCCCCAGCACCCGACTGCCGGGGCT
+NODE	2090	20	1879	1879	0	0
+AGCACTTTACCTTTTCCACC
+GCACAAACAGCAAGGTCTGC
+NODE	2091	66	7245	4403	0	0
+GACAATCTGTGAGGTCGGGGTGACCAGCGGGATAAAGCCGAGGTCCTCGCGCACGCGGGGGATTTC
+GACCTCACAGATTGTCGGCACCCAGGCGGTGCTCAACGTCCTGACCGGCGAGCGCTACAAAACCAT
+NODE	2092	51	2752	2752	0	0
+CAGGGAAGTTACTATGTCATGCTCGTTTTCCGTGACGCGCGCGTTTGCCGT
+GATAATGATAGTAATTATCGTTATCTATCTTATTTGGTTATGTTAGCATGT
+NODE	2093	51	2477	2433	0	0
+ACTTTTTTCAGTGCCGGATCGCTCACCATTCCCGCCGCATTTTTCATCGCA
+TGTTACGCGAGAATGCCGGACTGGGCACGGAAGCAACCCGTGCTGAAATAC
+NODE	2094	2670	153864	152051	0	0
+CGACTCACCGTCGATGCCGTCAATTTTCAGAAAAATGTCATAAGCCATTTTTATATCCTTATTAAGTTTTACTTAAAATAAACCTGATTTTATCTATATCTTTTTGTTTATAGATAAATCATTGCCGTACAGAATCCTTCTCCAATAACTTCAGGAGAACAGAAGACTGTATATTTTTTCGGTACCGATAATGTATTTAGTTATTTTATGAATTTGCATTATTTAATGCATATGAATAATGCTTCATAACTTCCGATAATAAAAACCATAACCTGTACTGAAATTTTCACGTCTCAAATCGCTAATTACAGATAAAAGATACAGACTGGTTTTCTGGCGATCCCTCAAAATTATGAGTCTTACAGCGAGTAGAAGAAGCAGGTATTGGTTGCGTCAACCATATCTGTTCATGACCATAAATACACGAAACCCAATAGCGATCGGTTTCTTTATCGCTAACACGTTCTGTTTCCCATACAGACCAATTTTCAC [...]
+CGAACCTCCAGACCTACATGGATGGCAAGGCCGGGGCGGAAAATCTGGTCAATAAACTGTTGCAGGACCCGACTCTGCTGAAAACGCTGGCGAATGCGCCGAAATCGGCCGCTACCCAGCAAGGTGTGTCAGCGGATAATGAATCAGCGGAATAATGTCGAATTTTTAAGGAATTTTCATGGCAAACAGTAATATGCAGGCAACCGACGCGGTTGCTCAGGATACCGTCTCCGCATCCGGTGAATTTGATGCGTTGCTGAATCAGGCCTTCCGACCCAAGACTACCCAGGCGGCAAAAGCCGTGGAAGCCGCGGTGCAGACGCTGGCTCAACAGGCGCTGGCGAACACGATCACCGTCAGCGATGACGCCTATAAAAGCATCAGCGCTATTATTGCGCAGATCGACTTTAAACTGACCGAACAGATCAAACTGATCCTGCAACATCCCGACTGGCAGAAGCTGGAATCCTCGTGGCGCGGTATGGAGCATCT [...]
+NODE	2095	72	4796	4695	0	0
+ATGCGCCCACGCCCCAGGAAAGCGCGTAGAAAATCATAAAGAACAGCATACCAAATAGCGCGAAATAACCGG
+CTTTCCTGGGGCGTGGGCGCATGGGTGCTTATTTCTGAAATATTCCCTAACCGGATGAGGTCGCAGGGAATG
+NODE	2096	793	46889	46738	0	0
+GGTTTTCAGTGCGGTATCCGCCAGACCTTTACGCGCACCGTGCGTGGAGATGAAGTACTGGAGTACGTTCAGACCTTCACGGAAGTTCGCGGTGATTGGCGTTTCGATGATGGAGCCATCCGGCTTCGCCATCAGACCACGCATACCAGCCAGCTGACGAATCTGTGCCGCAGAACCACGCGCACCGGAGTCGGCCATCATGTAGATGCTGTTGAAGGAGACCTGCTGCTCTTCCTGGCCGTCACGGTTAATCACGGTTTCGGTTTGCAGGTTATCCATCATCGCTTTGGATACACGATCGTTCGCCGCAGCCCAGATATCGATAACTTTGTTATAGCGTTCGCCAGCGGTTACCAGACCGGACTGGAACTGCTCCTGGATCTCAGCAACTTCAGCTTCCGCCTCAGAGATGATCTCGTGTTTTTTCTCCGGGATGACCATGTCATCAATACCAACGGACGCACCTGAACGCGCTGCATAAGCAAAGCCGGT [...]
+CTCTGCATGCGCGCGTTAAAGTGCGTATCACTGAATATGAAAAAGATGAAAACGGCGAATTCGTTGCGCACACCAGCCTGAAAGACACGACCGTTGGTCGCGCCATTCTGTGGATGATCGTACCGAAAGGTCTGCCTTTCTCCATCGTCAACCAGGCGCTGGGCAAGAAAGCGATCTCCAAAATGCTGAACACTTGCTACCGTATTCTGGGCCTGAAACCGACCGTTATTTTTGCGGACCAGACGATGTACACCGGCTTTGCTTATGCAGCGCGTTCAGGTGCGTCCGTTGGTATTGATGACATGGTCATCCCGGAGAAAAAACACGAGATCATCTCTGAGGCGGAAGCTGAAGTTGCTGAGATCCAGGAGCAGTTCCAGTCCGGTCTGGTAACCGCTGGCGAACGCTATAACAAAGTTATCGATATCTGGGCTGCGGCGAACGATCGTGTATCCAAAGCGATGATGGATAACCTGCAAACCGAAACCGTGA [...]
+NODE	2097	6	393	393	0	0
+ACACGG
+ACAATA
+NODE	2098	1	138	138	0	0
+A
+G
+NODE	2099	744	47393	47312	0	0
+AATGTTACGAACCATAACACGTCTGGCTGTCCATGGGGTGTAACCGCCTAACCATGTCGGAAGGGATATTCCAAAGGGAAATTTTGACTTTTTAAACACTGCACGTGCAGTCCTGGACGCGTATGATGTGCCTTTAGTCGCTCCAGCGGGTTTCGCCCTTGTCCAGAGATTATTACGACCTGATAGCAGAGCAACAACGGCCCCGAAATCTGCAACACCAATCCCAAACTGGCTTGCGGTATTCTCACAAAAAATCATAAACAGAAGTTCGGCAGCAGTCAGATTGGATTTTCCTGCATAGAAGTATGTTCCATTTAGTTCTTCTACTGTATCCATTAGAAACTCTATAGTTGCTATTTTGGTTTACTTATTGTACAGCCTTGTTTCGAATGAAAGAAATCAATCTTTTGGGAAAGAACGGATCAAGATCACGGGAAATATCTGAAATCAGATGAAAGAGACGGTCGCGATTCCCACCAGGGGCATCACCTC [...]
+GACCCGGTTGACCTGAGAAGGTTTACCGGGTTTTTTGATATCCATAGTTTTTGGGGCTTAATCGGAGGCTTCACGGTTCGTTGGAAAAATGGAGCCCCCACGTATGGCATTAACCGATACAGCTATCCGCAAGATCAAACCCGTATCAGTATGCTGACATATAGATGTGTTCGGTTCAAACGGAGCGATCACACAAGCTTGCGAGGTGATGCCCCTGGTGGGAATCGCGACCGTCTCTTTCATCTGATTTCAGATATTTCCCGTGATCTTGATCCGTTCTTTCCCAAAAGATTGATTTCTTTCATTCGAAACAAGGCTGTACAATAAGTAAACCAAAATAGCAACTATAGAGTTTCTAATGGATACAGTAGAAGAACTAAATGGAACATACTTCTATGCAGGAAAATCCAATCTGACTGCTGCCGAACTTCTGTTTATGATTTTTTGTGAGAATACCGCAAGCCAGTTTGGGATTGGTGTTGCAGATTTCGG [...]
+NODE	2100	20	1112	1015	0	0
+TAATGAGGGATTGCATCGTG
+ACCCCGCCTGCGGTATCTAT
+NODE	2101	703	39315	38753	0	0
+GATAGCAATCATCCTGATTTTACTGACTATCTGGATACGATAAGCTGCTGTTGGCGAGCCCCGCTTAAAATAAGAATCGATGTAGTTGTTCTTTTTATGGCGGGGCGCTATTTTCATGGTATCCCACATCAGAAGGGCAATATCATGAATAATCGTCGTGGTTTAACCGCCGTCCTGGCGACGTTGATTACGTTTTCCCTGAGCGCTACGCCTGTGCTGGCGAATCCGGGAAATGGTAATGGCGGCGGACATGGTAATAACGCGGCTAATCAGGGTAATAACGGTAACGGACATAAAGGAAATGCCGGGCAAAAAACGGAACACCGTAAAAATGGCGGTAAACCGGATCACGTCGAGTCGGACATTAGCTATGCTGTCGCCAGGCAACTGGCAGTGAATTTAGGGCTGACGGGTTATCAGTCTTTACCTCCGGGGATTGCGAAAAATCTGACGAGAGGAAAACCGCTGCCGCCGGGAATCGCTAAAAAAACG [...]
+ACGCCAATAACGCCTGGTGGGATAGGCTCTTAATCAAATACGCCATTAATAATCGCCGTGACCACCGCGGTACTGAGCGCGATCAGCACCAGATTATCCCCAACGATTTTCCACTCATAGCCCGGATAATAAGGTAATTGTCCCAGCATAGACGCCGGCACCGTTTTTTTAGCGATTCCCGGCGGCAGCGGTTTTCCTCTCGTCAGATTTTTCGCAATCCCCGGAGGTAAAGACTGATAACCCGTCAGCCCTAAATTCACTGCCAGTTGCCTGGCGACAGCATAGCTAATGTCCGACTCGACGTGATCCGGTTTACCGCCATTTTTACGGTGTTCCGTTTTTTGCCCGGCATTTCCTTTATGTCCGTTACCGTTATTACCCTGATTAGCCGCGTTATTACCATGTCCGCCGCCATTACCATTTCCCGGATTCGCCAGCACAGGCGTAGCGCTCAGGGAAAACGTAATCAACGTCGCCAGGACGGCGGTTAAA [...]
+NODE	2102	1290	65843	64432	0	0
+GTTTCACAACTCTATATTAATGGGGTGGCTAATGGGATTCGAACCCACGACAACTGGAATCACAATCCAGGGCTCTACCAACTGAGCTATAGCCACCACTGAAACTTTTTACGCGGTATTAAACCACCGCAGCTCAAGCACCTAAATAAATGGTACGCCCGACAGGATTCGAACCTGAGACCTCTGCCTCCGGAGGGCAGCGCTCTATCCAGCTGAGCTACGGGCGCTTAGCGCCGTTGCGGGGGTGGATAATACGGACTTCACACCCCGCTGTCCAGTGCCTTTTTAAATAAAATGCGCGTTTGGTTATGCTTTGCGCATTTTGGCGCTTATTCCCCCACCTTGTGGGCGGTTCCGTGACGATTCAGGCCGAAAACTTTGTAGACCAGCGTGACGGCCAGCAGGAAGATGACGCCGACAAACAGCGACATGCGCGTATCTTCATTAAAGTACATGCCGATTAAAACGCAAACCAGAAACGCCATCGTCAAA [...]
+CCACGATTATTGTGATGATCATCATCGGCCTGGGGGTGATTTTCTTCGGCTTTGGTAACGGCGGCCAGGCGATTGGCTTTGGTAATCTGACCGAGCATGGCGGCTTTTTTGCCGGCGGCTGGAAAGGCTTTCTGACCGCATTATGTATCGTGGTGGCCTCTTATCAGGGGGTTGAGTTGATCGGTATTACCGCCGGTGAAGCGAAGAATCCGCAGGTGACGTTGCGTAGCGCGGTGGGTAAAGTGCTGTGGCGTATCCTGATTTTTTATGTTGGCGCGATTTTCGTGATCGTCACCATTTTCCCGTGGAATGAGATTGGCAGCAACGGCAGCCCCTTTGTACTCACCTTCGCGAAAATCGGCATCACCGCCGCGGCGGGCATTATCAACTTTGTCGTGCTGACGGCGGCGCTCTCCGGCTGTAACAGCGGAATGTATAGCTGTGGGCGTATGCTTTACGCGCTGGCGAAAAACCGTCAACTGCCGGCGGCAG [...]
+NODE	2103	240	13762	13633	0	0
+ACAAAGCCATGCCAGATGGCGTGGTTATAAGGTATGCGTTTGCAAACATAGAAAATTACGCCTAGCGAGTAAACGACGCCACCTACCGCCAGCAGCGTCACGCCGCCTATCGCCAGCTTAATCGCCAACTGATAAACCACTATCAGCGACAGCCAGCCCATTGCCAGATACGTAACCAGTGAAAGCACTTTAAATCGGTGCGCAATCGTCAACTTGAAGAGGATACCGAATAGCGCCAGG
+AAGTGCTTTCACTGGTTACGTATCTGGCAATGGGCTGGCTGTCGCTGATAGTGGTTTATCAGTTGGCGATTAAGCTGGCGATAGGCGGCGTGACGCTGCTGGCGGTAGGTGGCGTCGTTTACTCGCTAGGCGTAATTTTCTATGTTTGCAAACGCATACCTTATAACCACGCCATCTGGCATGGCTTTGTGCTGGGCGGCAGCGTGTGCCACTTCCTGGCCATCTATTTGTATGTGGGAC
+NODE	2104	1036	50957	50518	0	0
+TAACGTAGCCCGAACCATGACCTGTCAGGACAAATCACTTTTAGCCCCCGCTCTCGCTTCCACGCCCGTCATTCCGCGCTATCGCCAGATCATACGCAAACGGGCTGTGCTCATGTTAGCTATTGCGTTGGCGATGATGGCTTCACTGATGGTGGATGTAACCTGTGGGTCTTCTGGTTTACCGCTCAGTGCGCTATGGCAGGCGCTTTTTCAACCGGAAAAGGTGAATGCGGGCATACACGTTATTGTCTGGGATATTCGTTTACCCTATGCCCTGATGGCCCTACTGGTGGGCATGGCGTTAGGGTTAGCGGGCGCCGAAATGCAAACCATTTTAAATAATCCGCTGGCGACGCCGTTTACCCTTGGCGTATCGTCCGCAGCGGCTTTTGGCGCTGCGCTGGCGATTGTGTTGGGGATCGGTATTCCCGGTATTCCTGCCACCTGGTTTATCCCGGCCAATGCGTTCATCTTTGCGCTTTTATCCGCGTT [...]
+CAATAGAGGCCAGCGATAACACCAGCCCGCCTATCAGCACGCTGCCCGGAAGGTAGAAACGGTGATCTTCCCCCAAAAGTATTCGCGCAATGTGCGGTGCAACGAGACCAATAAAACCAATCGGCCCGACGAAAGCTACCGCCAGCGCTGATAACAAGCTGATACGCAACAATGACAGCAGGCGTAAACGGCGGACATGAATCCCAAAGCTCATCGCCCTCTCTTCGCCCAGACGTAATGCCGTGAGTTGCCAGGCGCTTCGTAACGCGCAAAAAAGCACAGCAATAAACACCACGGCCAGTACGCCCAATTTTTCCCACGACGCGCGGACCAGGCTCCCCATCGTCCAGAATACCAGCCCCTGCAGCGTATCTTCATCAGCCACAAACTGCATAATGGCGACCAACGCGTTAAAGGTGAATACCAGCGCAATACCGAACAACACCACTCCGGATGCGGCGACGCCTGTCCAACGGGTAATACCGTCCATGA [...]
+NODE	2105	112	145	145	0	0
+CAAAACAATCAATACCCAGTCTCGGCTACCTCCCTTCACCGGATAACTTGCAAATATAAGGTTTTCACATCCAAATTCAGCCAAAACAAGAAACGAGATTTTATTAACAAAT
+ACCTTATATTTGCAAGTTATCCGGTGAAGGGAGGTAGCCGAGACTGGGTATTGATTGTTTTGTACAAGTTCTAATGCATAATGTGTCCATATAGTAGCGTTAGCATAGGGCG
+NODE	2106	26	3993	1631	0	0
+TGTATGAAGGAATGGTGTATGCGGAT
+ACCAGCCTGTGGGCACGATCAATAAC
+NODE	2107	840	153782	143513	0	0
+TATTTTTGTGGCTTTCCTGGCTATTGCAACGGTGATTCTTTGCTTATTTATGACGGGGTGTGCACAACGTTATGAGAGTGGTCATGATCAGCTTTTCGAACTGTCAGAACGCCATATCATTTACCGGGATCTGACTGTTCCGGCATCGATGAGCAATTTGCCGGAGAAGCAGCAGATAAGCGTACCGGGGATTGAACCGTGAACGTCCGGTTAATTTTCATGCTGGCGTTTCTGATATCTGGCGGTATCAGCGCATCAACGGATGAAGAAATTCTACTGGCGTCGATAACCGCGCCAGGAGTTACCAGCTTTACCGATGAATCACCTTCTTCGGAATGGATTACAGCGATGCAGGGACGTTGGGGTAGTACAACTGATATGAAGGATATGCGTAGTTTGCGCGAGATAAGAGAAGCGGTGATTGCTGAAATTAATGCCGTGTCAGAGCCGGTGGTGGAGAAAACAGGGCCAGAAAACAAAGAATCGACCACA [...]
+CTTCCCCAGCGTTATATGCAGCCAGAGCAAGCCGTAAATCCCCGTATTTATCGAGAAGATATGAAAGATGCCCTGTACCAATTTTCACGTTGGTTTCAACATCAAATGGATCAGCATTATGCCTTTTGGTATGTACAGGCATTAACTGCATCAGTCCCTTTGCACCTTTTCTGCTGACAGCGTTTGGATTAAATCCAGACTCCGTTTTAATTAACGCTTTCAACAAAGTTTCACTAATTTGATATTTTTCTGCGTATTTATTGATTATCTCCTGTATTTTTTCAGATATTTTTATTCCTGTGGTCGATTCTTTGTTTTCTGGCCCTGTTTTCTCCACCACCGGCTCTGACACGGCATTAATTTCAGCAATCACCGCTTCTCTTATCTCGCGCAAACTACGCATATCCTTCATATCAGTTGTACTACCCCAACGTCCCTGCATCGCTGTAATCCATTCCGAAGAAGGTGATTCATCGGTAAAGCTGGTAACTC [...]
+NODE	2108	9	708	643	0	0
+AGGCGGAGT
+CGGCGATGA
+NODE	2109	24	1963	1421	0	0
+TACATCGTCATCGCCGCTATCGTC
+CGATGTAACCCCGCCCGACGATAG
+NODE	2110	2293	118636	116477	0	0
+CGCTCATGATCTCCGTCGGCAACAGACGCATCGGAAGATTATCGGTCACCAGCGGCAGCAATCCGGTTGGTCGTAACGTCAGCACCAGGGTAGAAACCAGAATACTGGAAGGCTCAAAGAAACCGCGAATCCGATCGACTATACTGGCCGCCTCCCCGCAGGTGATCGAGACTTCGTCGCCGTTGGTCATATCAACCAGGATTTCACGTCGCTCGCCGGGCGCCAGTGACAACTGTTTGACGGAAACCGGCGCAGGTAAAAAGCCCTGATCGCCTGAAATCACATGCAGCGCCCGGCCATCGCTCATCTGAAGCTGATAGCGCCGCGAGTTCGAGGCGTTCAACAACCGTAACCGCACCCAGCCGCGGGACACTTCGACATAGGGGCTTTGCGCGCCGTTCACCAGCAGCGTATCGCCGACAAAACCACCGCTTCCCGGTTCGCTGTACTCCGGCGTCCCAAAGTTATCCAGCCGTTTATCCTGGATAATGA [...]
+TGCGCCCTGAAGAGTTACAGAAAGTGGTCGGCGAACGCGGACGCCGTGGCACATTAATGCGCGGCCTGCAGCGTATCGATCGCATTGAGATTGATTCACCGCATCGCGTAAGTCATGGCGACAGCGAAGAGTAAGACAGGGGCACCCGTAGGCCGGACAAGGCATTTAAGCCGCCATCCGGCGCTCTGCCGTTGCCGGATGACGACGCAGTAGCGTCTTATCCGGCCTACGGTTTCAGATCGGATTAACATTAAAATTTCCCGTAAAACCGTTGTTTATTCGTGCATTGCGATTAACAATACGTTTTTCCAGAGAGCCACACTTACCAAAATCCTAACCTGAATTTCAGGTGACGTAGAATGCCGGGCTCTTAGGCCTTCAGAGGTTGTTATGCTATATATTTTTCGTCTTATTGTTACCGTTATTTACTCCATTCTGGTCTGTGTTTTCGGTTCTATTTACTGCCTTTTCAGCCCACGTAACCCAAAACAC [...]
+NODE	2111	892	46262	45877	0	0
+GCCTGGCAGCGCCTGCGTTGGTGCTGTTGGGCCGGTTATTACAAGGATTTTCTGCGGGCGTTGAGTTAGGCGGCGTCTCGGTCTATCTGTCCGAAATCGCAACGCCAGGCAATAAAGGGTTTTATACCAGCTGGCAATCTGCCAGTCAGCAGGTCGCGATCGTTGTCGCCGCGTTGATTGGTTATAGCCTGAATATCACGCTGGGACACGACGCGATATCGGAGTGGGGCTGGCGAATTCCGTTCTTTATCGGCTGTATGATCATTCCGCTGATTTTTGTTTTACGTCGTTCATTACAAGAAACAGAAGCGTTTTTACAACGCAAGCATCGCCCCGACACCAGGGAAATTTTTGCAACTATCGCCAAAAACTGGCGCATTATTACGGCCGGAACGCTGCTGGTAGCGATGACCACCACAACGTTTTATTTTATCACCGTTTATACGCCGACCTATGGCAGAACCGTGCTTAATCTCAGCGCGCGGGACAGTT [...]
+CTTTACCAGCGCGGTAGAGATGGCTGGCGTCAGGCCGCCAAAAATTGCCGTCGCCAGGCTAAAGGCCAGCGAGAAACCAACGGTACGCACATAGACTGGCATCACTTCGGTTAACGCCGCGACCATTGCGCCGTTATACATGCCAAAAAAGAAAGAGAACCACAGCAGTACCAGCGTCATGCGGGTAAAGTCGGGCGCGGCGGTCAGCCACTGCATGACGGGCCAGGTGGTGATCAGCGCCAGCAACGTAATGCCCATTAATACGGCGCGACGGCCAATCCGGTCGGAAATCGCGCCGCCAATGGGTAACCAGATAAAATTGGACACCCCCACCAACATGGTGACGATCAAACTGTCCCGCGCGCTGAGATTAAGCACGGTTCTGCCATAGGTCGGCGTATAAACGGTGATAAAATAAAACGTTGTGGTGGTCATCGCTACCAGCAGCGTTCCGGCCGTAATAATGCGCCAGTTTTTGGCGATAGTTGCAAA [...]
+NODE	2112	2723	166282	164819	0	0
+AGGCGTTTGCTCAGCGTAAACAGAGGTAATGAAGAAAAAAGGAAATATAAGGCTGAAGAAACGGCGTGCGCGTAGTGTTTTCCTTGCCATAGAGGTCTCATCCAGATTGCGCCATTATCTTTAATGGCGATTTTTTATCGTTTTCCATAACAGCAACCGCACAAATACTGTTATTACATTGCTCTCCTCTATGTGTAACAAATAACCACACTTAAAATGTTGTCTTTAATCAATTGTAAGTGTATGTAAAATACCACTTTAGAGTTAGTAACCTGGACAAAACTCCCTCTCTTTTCTGATTTCCGGACACGGATCACTTTTTTAAAAAATTTCATATAACGTCATGTTATCCCGAAAATTTATCTAATTTTGCGGGACACAATCAAAAAATAGATTGCTGCTTATTTGCACAGTTCCCTTTTTGCGTGATCTGTCGCCCAAATACTAAACAAAACTTATTAAGACCCTACATTTAACGTTTGTGCGACATAT [...]
+GTTGGCCGCACTCGCGCGCCCCAGCCACATAGTGAACTATGCTGCTGAGGATGTGCTCGCTTGCCGCCTTCCTGTAACACGAAATCCTTTGGGGGAGGGTTTTTTTATATTTCCCTCTCCCGGTTTGAGAGAGGGCAGGGGTAGGGTCGTAGGCCGGATAAAACGCGTTCGCGTTGCCATCCGGCATTTATGGTTATGACGGCATCGCGATGGCCTGCTTCTCTTCGAGCAGTTTCTCCACCACGCCAGGATCGGCGAGAGTCGAGGTATCGCCCAGATTGCTGGTATCGCCCGCCGCGATTTTGCGCAAAATACGGCGCATAATTTTGCCGGAACGGGTTTTTGGCAGTGAGTCGGTCCAGTGCAGCACGTCCGGCGTCGCCAGCGGGCCAATCTCTTTACGTACCCAGTTGCGCACCTCCGCGTACAGTTCTGGCGACGGCTCCTCGCCGTGGTTGAGCGTCACATAAGCGTAAATCGCCTGGCCCTTGA [...]
+NODE	2113	51	2274	1669	0	0
+TTCAGGTCCGGTGAAAGCGCAGGCGGAAGCGGAGGGTCTGGACAAGATCTT
+ACCCGGCACCACCAGCGCCTGCACGCCCGGCGCAACTTTGCGCCCTTTGGC
+NODE	2114	5	2398	804	0	0
+TATTC
+ATTGA
+NODE	2115	12	1008	1008	0	0
+TAAGAATCCGTA
+TGAACACGTAAT
+NODE	2116	33	2660	2660	0	0
+TCTTCGAGTGCCCACACAGATTGTCTGATAAAT
+GCAAGACGAAAAATGAATACCAAGTCTCAAGAG
+NODE	2117	1	104	104	0	0
+A
+T
+NODE	2118	2	103	103	0	0
+CA
+CC
+NODE	2119	115	6118	5922	0	0
+GTTATCTTACTTTTTGATATCGCCTCGTTGGTGCGAGGGGGGGGACTTGAACCCCCACGTCCGTAAGAACACTAACACCTGAAGCTAGCGCGTCTACCAATTCCGCCACCTTCGC
+TACGGACGTGGGGGTTCAAGTCCCCCCCCTCGCACCAACGAGGCGATATCAAAAAGTAAGATAACTGTGCGAAGGTGGCGGAATTGGTAGACGCGCTAGCTTCAGGTGTTAGTGT
+NODE	2120	447	20640	20578	0	0
+AAATACCGCCAGTGACCACATCCGGCGGCAGCGACGCGCCCACCGAAAAGGAACCGATAAACGCCAACTCCAGCGTCGCGCCCATCACAATTCCGGTTTCCATGTCGCCCAGCACCAGTCCGGTTAAAAGTCCGGTCACGATAGGTCTGGAAATCAGCGACGTCCCTAATGCATATTCAGACTGGGCGATAAACGCCACCAGTCCAAGTAAAAGCGCCTCTACCATAATATGTCCTCAGGAGGGTATCCGCTCAGGCAAAAAGTTGTTTACGATCGTTAGGCACCAGCCGAATTTCTATCTCTACTCCGCCAGCCGCCAGCTCCCGAAGTTGAGTCATTTCATCCGCTAACAGATTGATGGCTTTAGCAATATTCTGGCTCCCTTCACGTACCTTCGTGCCGCCTAAATTAATGCTTTTAATGTCGGGTAATTCGCGCGCCAGCCGG
+CGAAGGTACGTGAAGGGAGCCAGAATATTGCTAAAGCCATCAATCTGTTAGCGGATGAAATGACTCAACTTCGGGAGCTGGCGGCTGGCGGAGTAGAGATAGAAATTCGGCTGGTGCCTAACGATCGTAAACAACTTTTTGCCTGAGCGGATACCCTCCTGAGGACATATTATGGTAGAGGCGCTTTTACTTGGACTGGTGGCGTTTATCGCCCAGTCTGAATATGCATTAGGGACGTCGCTGATTTCCAGACCTATCGTGACCGGACTTTTAACCGGACTGGTGCTGGGCGACATGGAAACCGGAATTGTGATGGGCGCGACGCTGGAGTTGGCGTTTATCGGTTCCTTTTCGGTGGGCGCGTCGCTGCCGCCGGATGTGGTCACTGGCGGTATTTTAGGTGTGGCCTTTGCGATTAATTCCGGCGCTGGGGCGGAAACCGCGCTG
+NODE	2121	3594	159122	157219	0	0
+GTTACTGGAAGTCGTCAGCCCCAATTACGTCACCCCCACGCCATCAATGGCAGTGGTAAAGCTGTATCCCGATACGCAGGAAGGCGACCTGGCGAAAGGGGTCACCGTGCCGCGCGATACCGCGTTCGTTTCCCCTATCCCGGAAGGCGAAAATACCGCCTGCCAGTTTCGCAGCAGCCAGGACGTCACGCTGTGGCCGCTGTCCATCGAGGAGGTACGCCTGACCGCCGCGCCACCGGATATGCCCGCCCTGCACCGCTATCTGCCGCCTAATATTCATGTCGCCGGGGCATTGCGCATCACCCTGCGAACCTTCGGGGAACTGACTTTCAGCGAGCTGGCCGGTCCGGCACGGCTGCCCTTTTACCTCTGCGGCGAAGAACGCATTGCGTCACACCTGTTTGAGCTGCTGCATACCAGCGCCGTCGCCACACTGGCCGGTGAACCCGGTCACTTTGACGGCGAACTGAATGTGAATCTTCAACACCCGGT [...]
+ATCGCGAATTGGCCCCGGTTCAGCATTGTGTGGGAGGGATATACCGGGTGGCGCGTTGACAGGCGGCACATCCTCTGCCCGTGCCGGAACGGCATTATCCATAACCGTGCCTGCGGGAGCTGGCACTGGCGCTGGCGAAGGAGGGATTTCCGGTGTGGTTGTCTGTACCACGTCAGGCAGCAGCGCTAACAACTGCCGCAGGCGTGAAAAATCTGGAGCCAGATCGCCTAATGTCTCACGCGCCCACACTTGCAGGCGTTCTGCGCTTTCCTGCGCTTCGCGAAACGCTGCCAGCGGTAATGCCCCACGGGCTTCGAGGTCGGCCAGTTGCTGGCGGACGGATTCGGGGGCCAGCGCATCAGCCGGGCGAGGGGCGGATAACGCTCGCTCCACATCCCGTACCTGCAGGCGCAGGGCGGCACTGTTTGACAGCGTGATACCGCGAATGTCTGCCATCACGCCTTCGTGATCCAGCAGCGCCGCCAGGGCATT [...]
+NODE	2122	172	9611	9523	0	0
+TAGTGTGCTGATATGGCTCAGTTGGTAGAGCGCACCCTTGGTAAGGGTGAGGTCCCCAGTTCGACTCTGGGTATCAGCACCACTTAATACGGTTAAAGTTCGGCATTTGAAAAAGAATTTGTCTGGCGGCAGTAGCGCGGTGGTCCCACCTGACCCCATGCCGAACTCAGAA
+ACAAATTCTTTTTCAAATGCCGAACTTTAACCGTATTAAGTGGTGCTGATACCCAGAGTCGAACTGGGGACCTCACCCTTACCAAGGGTGCGCTCTACCAACTGAGCCATATCAGCACACTAAATTTGATGCCTGGCAGTTCCCTACTCTCGCATGGGGAGACCCCACACTA
+NODE	2123	1955	109231	107531	0	0
+TTAATCCTCTCTTGCCTGATGGCGCGCTTATCTGGCCTACCTGTCGTCCTCAGGCCGGATAAGGCGCTTGCGCCATCATCCGGCAACTATCATGATTTCTTGAGCGGCATTACTACCAACTGATGACGCGAATTATAGAACTTCCGGTAGGTTAAATAGCAGGCAATGATGGTAGACAGGCTGGCTGTCGACAACAGCATAAACGTTACCATAATTTGATATTTAATCGCTTTTACCGGATCGATCCCGGCAAAAATCAGCCCGGACATCATCCCCGGCAGGCTCACCAGCCCAACGGTCTTTGCCGAGTCGATCGTCGGGATAAGCGATGCGCGGATACTATCGCGGATAAGCCCGGCGGAGGCCATTTTCGGCGTTGCGCCCAAACTTAACTTTTCCTGGATTTGCTGCTGCTCGCTATGAAAACGTAGCCCCAGTTGGTTGTAGCACAGCCCTACCGCTACCATCGCATTACCGGCGACCATGCCAGCG [...]
+TTGAGATCACCTCCTGCGACGGAATATCCAGCACCTGCTCCATCATATTGATCTTGCGGCCAATTCTGTCCATAAACGGTACAACAAGGCTTAATCCCGGCTGCAGGGTTTTGGTGTAACGTCCAAAGCGCTCCACCGTCCACTGGTATCCCTGCGGAACGATTTTGACGCCCGCGCCGACGATCACCAGCGCGACGAAAATGAGAATAGGGATAAGAATGAGCATAGCTAAACCTCCTGTTGCGTTGTCCATAAACCGATTTTGCTGACGAATTAAGCGAATTATACCTGATTCAGTAAAGCATGTTCCCCCCTTATTAATTACAGGGATACACTATCGCTATAAAAATATGAACAACGGATGCGCAATAAATGACAGAACGTAGCATGTTGCTTGAGTTAAAGCAGGTCGGTTACCGGACTGCGACGACAAAAATAGTGAATAACATCAGTTTTACGCTGCAACGCGGCGAATTTAAGTTAATTACCGGT [...]
+NODE	2124	23	1023	1023	0	0
+GATGCGCCGCGCGCCGCCTATGA
+GATAGTGACGTTGGCGTTATCTT
+NODE	2125	28	1373	1373	0	0
+AGTCAGTAACCTGGAACTGGCGATCATT
+CGATAACCTGAATAAAACAGACCGCATC
+NODE	2126	124	933	933	0	0
+TAAAGGGGGTGAAAAGCCCCCTCGCCGTAAGTCCAAGGTTTCCTGCGCAACGTTCATCGGCGCGGGGTGAGTCGGCATTCGCACTTCTGATACCCACAGCAGCTTTTACAAGCTACCTTCGCAG
+CGACTCACCCCGCGCCGATGAACGTTGCGCAGGAAACCTTGGACTTACGGCGAGGGGGCTTTTCACCCCCTTTATCGCTACTCATGTCAGCATTCGCACTTCTGATACCCACAGCAGCTTTTAC
+NODE	2127	69	4046	4046	0	0
+CAGACCTTTCTTCAGACCTCTCTCTTCCAGTTGCTCTGCTATCGTCATAATAACCCCCTTGTGGCTGGG
+AGGTCTGAAGAAAGGTCTGGAGAAAGGTCTGGAGAAAGGTCGTGCTGAAGAGCGCTCCAGATTAGTGCT
+NODE	2128	27	1792	1792	0	0
+ATAGTGTGTGGATACTGCTTCAGAAAG
+GACGATAGCAGAGCAACTGGAAGAGAG
+NODE	2129	51	3145	3145	0	0
+CGCGGATTTGCAAACGCAGATCGACAGGCTTGCCCCGTTGCTGGAGACGCT
+GAACTCGGTCTGACGCTGTTGCCATATTTTCGCTTCGTCGGCGCGCTCATT
+NODE	2130	27	788	788	0	0
+GCCGCAGCCACAGTATCAGCAGCCGCA
+ATACTGTGGCTGCGGCGCTACCGGCTG
+NODE	2131	12	155	155	0	0
+GCAGCCGGTAGC
+CTGCGGCTGCTG
+NODE	2132	42	42	42	0	0
+GTATGCACCACGGAACCCGCCATCGCTTTCATCAGGTCGTAG
+AATACGGGCGCCAGAAGATCCTGGCGATCACGATTGTGATTA
+NODE	2133	4	1671	494	0	0
+TTGT
+TCCA
+NODE	2134	35	6218	5784	0	0
+GAATAGCAAGGCGTCTTGCGATTGAGACTTCAGTG
+ATCTGTGTGAGCACTGCAAAGTACGCTTCTTTAAG
+NODE	2135	51	2901	2901	0	0
+ACCGCCGCTTCCCTGCCGACGGCGAACCGTTCTTACAGTTTGCCAGAGACT
+TGAACCCTGAACCGCGCTATACCATCTTATCTGGTTGTTTATTATCATTAA
+NODE	2136	1540	82692	82027	0	0
+CTGGTTGAAGGCACCAATACGCTGCGTTTTACCGCACGCTATAAGGCAACCGCCACCGCCACGACGCCAGGCCAGGCTAATGCCGACGCCACCTTTATCATGAAATACGAATAATCCCGTCCGGGAACGCCAGGGAAGGGAGGCGCCTCAACGGAAGAGGCTATCGGGGATAAAAGAGAACATAGCAGATGATAAGGAAAGGCGCGGCGCTAGTGGGGCTTGTTTTGATGTCGCCCGTTATTGCGCAGCCGGTAATGGTGGAGAGCGGGCGTATTCACCTGCGCGGACAACTGGTCAATGGCGGCTGCGCTGTCGCCACAGAAAGCCAGGATTTGCGCGTACTGATGGGACAGTACCGCACGAATGCGTTTACCGGTCCTGGCAGCTTCGCTCCCGTCAGCGTTCCATTTTCGTTACGGTTAATCTCCTGTAGCGCGGAGGTCTGGCGTCATGTCGGCATTGCGTTTGCCGGCGTTACGCCTGCGGAAGATC [...]
+ATCGTGTTCTCGTGTGGCTTCACGCGATCTGCTTAACCGAGACTGGCCGTTGTCGCCGACGTCAATGCGCCGTAATCATTGACGGTCTGAAATGTCACGCTGCCCTGCGCGCCAGTCGGTAAGGGAATTTGCATGTCGCTTTTTGGCGCGATCATCACGTTATCAATCTTTTTCGCGCCCACGCTGATATTGACCAGCGTGAGGTAATAAGCAGATGGGTTGGTTATCTTGAGATGGTTGCCGACACGGGAAAATTTCAGCAAGGTCGGCGCGTCTTCCGGCGTCTGCGGCAAATTCGCCGGACGCACGAACAGTTTGATGCGCGACAGAATCGCCAGTTGCAGAACGTTTTTTCCTTCAATATGACTTTTATCGACCGACGGGATGGCTTTCACGTTCATCCAGAATAACGACTCCCGATCCCCGGGTAGCGGTTGCCCGGCGTAGATAATACGCAGCGTGTTTTCGCTTTTGGGTTCGCTGACGAATAAA [...]
+NODE	2137	48	1856	1856	0	0
+GATAAACCATGCCATAGCCAAAACCGTTTCCCCGCGCCTGGTGCTTTT
+GACAATCCGGAAAGTGTGGCGCGCACGTTATCTGCTCGCTACTACAAA
+NODE	2138	51	62	62	0	0
+GTTTTCAAATTGCGTTTACGTAACCTGGCGCTGAGATGATGTTGTGTTGCG
+CCGCGTTTCGCCTTGAATTGCCGGTACAGGGTCTCCATATGGTTATTGTGG
+NODE	2139	1763	82713	81315	0	0
+CGGGCTACCGTTTTGCCAGTGAGATGTTCCGTCAACGCGTGCTGGTCGCTGGTACGCTGAATAATGCGAAAACAATTCGTATTGAGCCACCGCTCACGCTAACCATTGAACTGTGCGAACAGGTATTGAAATCAGCGCGTAATGCGCTGGCGGCGATGCAGGTGAGCGTTGAAGAGGTTTAAAAACGATGCCGGATGGCGCTGTGCTTATCCGGCCTGTTTTCCCCGGGTCGCAGCCTCTTTTTTGAATCCCATCACAATCACCACATTCCCCTTTTCCCTTTTACCTCGCGACGGCTACAGTAGTAACTCATCCGACCACATAACAATAATTTTACATACTGGATACGCTTATGAGCTACCCGTCGCTGTTCGCCCCGCTCGATCTGGGCTTTACTACTCTCAGAAACCGCGTGCTGATGGGATCGATGCACACGGGTCTGGAAGAACATCCTGATGGCGCCGAGCGCCTGGCGGCATTTTATGCCGAGCG [...]
+AGATCCTCTGCGTTCACCCGTTGGTTCAGTTTCAGCGTAACGCCAGTAATATCGATCATTCGACGGTAGTAGCGCAGCGTTTCGTAAAACTCCTCTTTACCCGGGATCTGCCTGGCGATAGTAAACTGGCCGCCAATTTCACTCTGGGCGTCAAACAGCGTGACATGATGGCCGCGCGACGCGGCGTTAATCGCGAAAGCCAGCCCCGCCGGGCCTGCGCCGACAACGGCCAGGTTCTTTTTGCGTATGGCCGGCGTTATCGGCATGTGGGTTTCGTGACAGGCGCGTGGGTTCACCAGACAGGAGGTCACTTTGCCGATGAAGATCCGATCCAGACAGGCTTGATTACAGCCGATACAGGTGTTGATCTCATCTGCGCGTCCGGATTGCGCTTTAGTCAGGAATTCGGCATCGGCAAGGAAGGGACGCGCCATCGACACCATATCAGCATCGCCGCGCGTCAGGATCGTCTCGGCGACCTGCGGATCGTTA [...]
+NODE	2140	18	986	942	0	0
+ACCCGCCCCGGCAACTGC
+TGATATGCCCCTGCTTTA
+NODE	2141	9	3670	2642	0	0
+AGTGTCTGG
+ATTAAAGGG
+NODE	2142	4	1645	1150	0	0
+TGGG
+AAAC
+NODE	2143	17	6977	4739	0	0
+TAGTTTGACTGGGGCGG
+GTCCACGTTAGAACATC
+NODE	2144	45	6501	6454	0	0
+AGAGGGTTAAATTCACTTTTACCTGTTCATGAAAACACAGGAAGG
+TGCAGAGGGTTTTTATTTATGTGCATAGATGAGTTTTCTGTGTAG
+NODE	2145	437	20780	20717	0	0
+CCTGCGGTTTGGCCGCCGGTTTCGCGCTCTTTGCCTGTAGCCATTTGCCTGCCTCGACGTCCGCCGTCCAGCGCTTGAACTCATATTTTTTAAACAGGCCCAGCAGTTCATCCGCAATCGGCTGCTGCACTTCAAGCTGTTCGCAGGTCAGCTCCAGCTCAACATCCGTTTTAATGGTGGCGAGTTTATAAGACAGGTACGCTACGTCTTTATTCTGCGCTAATTTAGCGGCCATCGTTTTGGCGCCGCGGAAAGTGAGACCGGCAATTTTTTCCGGCTCGGCGTACAGCGTATCCAGGCCGCCCAATCCCTGAAGCAAGGCTTGCGCCGTCTTCTCACCCACGCCTGGTACGCCCGGAATATTATCCGAGGAGTCCCCCATCAGCGCCAGAAAGTCGATAATCAGCTCAGGCGGCACGCCGTACTTATTAACGACT
+CGCTGATGGGGGACTCCTCGGATAATATTCCGGGCGTACCAGGCGTGGGTGAGAAGACGGCGCAAGCCTTGCTTCAGGGATTGGGCGGCCTGGATACGCTGTACGCCGAGCCGGAAAAAATTGCCGGTCTCACTTTCCGCGGCGCCAAAACGATGGCCGCTAAATTAGCGCAGAATAAAGACGTAGCGTACCTGTCTTATAAACTCGCCACCATTAAAACGGATGTTGAGCTGGAGCTGACCTGCGAACAGCTTGAAGTGCAGCAGCCGATTGCGGATGAACTGCTGGGCCTGTTTAAAAAATATGAGTTCAAGCGCTGGACGGCGGACGTCGAGGCAGGCAAATGGCTACAGGCAAAGAGCGCGAAACCGGCGGCCAAACCGCAGGAAACGGTCGTTATTGATGAATCGCCCAGCGAACCGGCAGCGGCGCTCTCT
+NODE	2146	25	68	68	0	0
+GTGCCAGTGTTGGTTGCTGCTGACC
+GACTGGTCAGCAGCAACCAACACTG
+NODE	2147	1	177	177	0	0
+C
+T
+NODE	2148	6	1083	1083	0	0
+AACACT
+CGCCAG
+NODE	2149	1	174	174	0	0
+G
+T
+NODE	2150	2	341	341	0	0
+GC
+AG
+NODE	2151	51	2764	2764	0	0
+ACTGCCCCACACCACGCGAAGTTCGCCTTGCTGTTCTACGCCGCGCACGTA
+TGGTAAAGAAAGCACCTGTACAGTGCGTTACCAATTAGCTGAAACCACGGC
+NODE	2152	11	1006	1006	0	0
+CTCCAGCGCGG
+ATTGCCGCGAA
+NODE	2153	10	984	984	0	0
+TCAGCGCCAT
+GCTGGCGGTG
+NODE	2154	153	5718	5718	0	0
+GCCCGCTTCCGGGATATTGGAGAGCAGGCCGCCGAAGCCAATCGGCAGCAACAACAACGGCTCGAACTTCTTCGCTATCGCCAGCCACAGCAGCAGCAGGCTGACCAGCAGCATGATGGCCTGGCCTGCGCCAAGGTGCATCAGCCCCATGCC
+CAGCCTGCTGCTGCTGTGGCTGGCGATAGCGAAGAAGTTCGAGCCGTTGTTGTTGCTGCCGATTGGCTTCGGCGGCCTGCTCTCCAATATCCCGGAAGCGGGCATGGCGCTGACCGCGCTGGAGAGCCTGCTGGCGCATCACGACGCCGGGCA
+NODE	2155	461	22677	22502	0	0
+TGCTGCTGCCAAACGCGCCAAAGCGCGACGGAAGCGGTTAATAACGCCGGCTGCGTCTGCCAGGTTTTATTCAGTTCTTCCGCTGGACCTTGCTGGGTGAGCGCCCACAGATCATATCCCAGAGCCGCAGAAGCTTCAGCAAACGTTTCTTCTACGATAGGGTAATTTGCCGCCATCTCGGCCAACATCCCAACGCTCTGAGAACCCTGACCGGGGAACACAAATGCAAATTGCGTCATGTTTAAATCCTTATACTAGAAACGAATCAGCGCGGAGCCCCAGGTGAATCCACCCCCGAAGGCTTCAAGCAATACCAGCTGACCGGCTTTAATTCGCCCGTCACGCACGGCTTCATCCAGCGCGCACGGCACAGAAGCCGCGGAGGTATTGCCGTGCCTGTCCAGCGTGACGACGACATTGTCCATCGACATGCCGAGTTTTTTCGCTGTCGCGCTAATGAT
+CGTCACGCTGGACAGGCACGGCAATACCTCCGCGGCTTCTGTGCCGTGCGCGCTGGATGAAGCCGTGCGTGACGGGCGAATTAAAGCCGGTCAGCTGGTATTGCTTGAAGCCTTCGGGGGTGGATTCACCTGGGGCTCCGCGCTGATTCGTTTCTAGTATAAGGATTTAAACATGACGCAATTTGCATTTGTGTTCCCCGGTCAGGGTTCTCAGAGCGTTGGGATGTTGGCCGAGATGGCGGCAAATTACCCTATCGTAGAAGAAACGTTTGCTGAAGCTTCTGCGGCTCTGGGATATGATCTGTGGGCGCTCACCCAGCAAGGTCCAGCGGAAGAACTGAATAAAACCTGGCAGACGCAGCCGGCGTTATTAACCGCTTCCGTCGCGCTTTGGCGCGTTTGGCAGCAGCAGGGCGGTAAAATGCCTGCGTTAATGGCAGGTCACAGCCTGGGCGAATATT
+NODE	2156	101	4400	4400	0	0
+ACCCGCTGCTTTTGCTTCGCTTACGCCTTTTTCAGACAGGTCAACATCATACCAGCCGGTGAAACGGTTCTCTTTGTTCCATTGACTTTCACCGTGACGTA
+TATGATGTTGACCTGTCTGAAAAAGGCGTAAGCGAAGCAAAAGCAGCGGGTAAACTGCTAAAAGAAGAAGGTTTCAGCTTTGATTTTGCCTACACTTCCGT
+NODE	2157	3077	171662	168194	0	0
+TTAAAGGAATGGCCCATACCGTACCGAAAGTCTGAATAATCCCTAACAGGAAAGTACAAATAATAACGGAACGATATCCCCCCATTCGGTTGGCTAATACGCCGATGGGACCGCCGGAAAAGAAGAGCGGAACAAAACCAGGCAATACCATAATAGGGCTATGGATGAGCAGCAGAATGCCCATGGAAAAAATCGTGCCGAAGGTACAAAAGACGAATCCCAGCGTAGCCGCGTTCGGCGAAAAAGGTAATAAAGCAGCAACATCCACAGCCGGTATAGCGTTAGGAATAAAGCGATCCTGCCATCCTTTAAACGAACCGTTAATTTCGCCTACCATCATCCGCACGCCCTGCAGCAAAATGACCATATACATAGAGAATTGCAGGCCCAGATTGATGATATAGATATACCAGGGTTTGCCTTTCGCCATTAACTGTACGTTATCGATCCCTGTCGCCAATAGAAAACCGCCAACGAAGAGCGTCATCACAA [...]
+TACGCGGGATGGGCGAGTTTATTCATCGCAGCGTGCAGACGTGGAGCTTAACCCTTGTCTTTCTGGCCAGCTTAGTGCTGGTCTTTGTTGAAATTTATTGTGCGTTTTCGCTGGTGAAAGGCCGTAGCTGGGCGCGCTGGGTGTACCTGGCGACACAAATTATTGTGAGCGGATATCTGTGGGCGGCGTCGTTAGGCTACGGGTATCCGGAGTTGTTTAGCATCGCGGGAGAATCGAAGCGTGATATCCTGCATTCCCTGGTCATGCAAAAACTCCCCGATCTTTTAATTCTGTTTCTGCTGTTTATTCCCGCTCCCAGCCGTCGGTTCTTCCGGCTGCAATAATGTGTATAATCGTCGCCCCGGATAATATGAAGGTTTTTTGGTATGCAGTGCGCACTCTATGACGCGGGTCGCTGCCGTTCCTGTCAATGGATTACGCAGTCGGTTAACGAACAACTTTCCGCAAAAACAGCCGATTTACATCGTTTGC [...]
+NODE	2158	51	3388	3360	0	0
+CGCCAGCATGGCGTACATTATGGTCAGGGCTGGTTATACAGTAAACCCCTA
+GTAGCCACTGTTCTTGCCTGGTCGTTTCGATGCCTTCTGCGACCATCTTGA
+NODE	2159	11	1143	1118	0	0
+CATCCGTTTAT
+GGCGGTCGGCA
+NODE	2160	2354	107471	105072	0	0
+CCACCCCCTTTCCGCCGCGGTCGATCCTGCCTGGGAATCCAAAAGCGACTGGGAGATCTACAAAGGCATCGCCAGCGCCTTTTCTGAAGTGTGTGTCGGACACCTCGGACAGGAAACCGATGTGGTGTTACACCCGCTCCAGCATGATTCCCCGGCGGAACTGGCGCAGCCATTTGATATTCTCGACTGGCGTAAAGGCGAGTGCGAACTTATTCCGGGCAAAACCGCCCCCAATATCGTCGTGGTTGAACGCGATTATCCGGCCACCTATGAACGTTTTACCTCGCTGGGTCCCCTGCTGGATAAATTAGGCAACGGCGGTAAGGGTATTGCCTGGAATACGCAAGATGAAGTCGATTTCCTCGGTAAGCTCAATTACACCAAACACGATGGCCCGGCGAAAGGACGTCCGCGAATAGACACCGCGCTGGATGCTTCGGAAGTGATTCTTGCCTTAGCGCCGGAAACTAACGGTCAGGTGGCGGTGAAAGC [...]
+CGGCGACCGTTGGGCGGCGTCGATGACGTTTTGCGGGATGCCCTGTTTAAGCGCCTCTTCAATGACCGCCGGATCGTGCGGATTGAGAAACACATCGCACTGACGTTCATACAAATCTGTCTCGTGTTCGGTACTGGCCGCTTCTTCAATCCTGTCGGCGTCGTAGAGCAGAACGCCAAGATAACGGATGCGCCCGACGCAGGTTTCCGAACAAACGGTCGGCTGGCCGGATTCAATACGCGGATAGCAAAATATGCACTTCTCAGACTTGCCGCTCTTCCAGTTAAAGTAGATTTTTTTGTACGGGCAGCCGCTGATACACAAACGCCAGCCCCGGCATTTATCCTGGTCGATTAGCACGATGCCGTCTTCTTCACGCTTATAAATAGCGCCACTTGGGCAGGTGGCGACACAACTGGGGTTCAGGCAGTGTTCGCACAGGCGCGGCAGGTACATCATGAAGGTGTTTTCGAACTGACCGTACATCTCTTT [...]
+NODE	2161	1445	71748	70497	0	0
+GATCGGGATCAAAGCCCATTTCACGGGCATGGGCGGCATAGTTGCGACCCACGCAGTAAACGCGACGTACCGGAAACTGCTCATCGCTGCCCGCCACGGGTACTGTCACCGGGGCCTGCGGCTGGAATACATATTTGGTCATGTTCTCTCTCCCTAATTAATAACGTGCTTCGCGGAACAGCCCCAGGGCTTCCTGAACCGGCTTGTCCGAAAAGCTGAATAACACCGTGTCTTCGCTGCTGCGAAACGACACCTCATGCCAGGTCGGCGCCACAAAAATGTCTTTTGCGGAAAAATGAAAAGTTTCGTTGCCGATAGTGACCAGTCCTGCCCCTTCAACGACGTGGTAGATAGTGCTGTCGGTGCTCCGCGCCACACGCGAGGCAAAGCCTTTTGGCAGCAGTTGCAGGAACGCGCCCATCGACGGCATCGGATAACCGCCGGTGACGGGATTAACGTAACGCAGCTTGTAACCTTCCCACTCATCCGGAT [...]
+GGGGCGATTGTCGGTTCGCTCTCCGGCGGCATGATGATGGCCCTCAATTTCTCTTTCGATACGTTGTTTTTTGTCATTGCTATTCCGGCGGCTATCAGCGCGGTAATGCTTACCCTGCTGACGGTGGTTGTCCGCCTTTCGATTTCTGTACCTGACGACCTGCCGCGTGCCAGCGTCGTAAACGAATAAGGAGAATCTCCATGTCTGAAATAAATCAGAACGTAAAAGATAGCCGTCAGCAGTATTACCAGCATATTTCCGGGCAGAATCTGACGCCGCTGTGGGAATCGTTACATCACCTGGTACCGCAGACGCCAAACGCCAACTGCGCGCCGGCCTACTGGAATTATCAGGAAATTCGTCCGCTACTGATGGAAAGCGGCAATGTCATTGGCGCGAAAGAGGCGATCCGCCGGGTGCTGGTGCTGGAAAATCCGGCATTGCGCGGTCAGTCGTCGATCACGGCGACCTTATACGCTGGTTTACAGCTGA [...]
+NODE	2162	6	763	763	0	0
+TTCCGG
+GGGCAT
+NODE	2163	3	265	265	0	0
+TTT
+GAA
+NODE	2164	38	2226	2188	0	0
+ACCAGCACCACAACACCCGTCGCGACCAGGGTAGAGGC
+CAACGTCTTTACCATCATCCAGCCGGTGATTGAAGCTG
+NODE	2165	1660	89967	88973	0	0
+ATACGCTTCGGCGTTCAGTAACACGCGTTAACATGCTGAACAGCCGGGCATTTTTTTACGCTATACCCTACATAATAAAACCGGAGCTACCATGAATAAGAAGGTACTGACCCTTTCTGCCGTGATGGCAAGTCTGTTATTCGGCGCGCACGCGCACGCGGCTGATACTCGTATTGGCGTGACGATTTATAAATATGACGATAACTTTATGTCCGTGGTGCGTAAGGCTATTGAAAAAGATGGCAAATCCGCGCCGGATGTTCAGCTACTGATGAATGACTCGCAAAACGATCAATCTAAACAGAATGATCAAATTGACGTTTTATTGGCGAAAGGGGTTAAAGCTCTGGCGATTAACCTGGTCGACCCGGCAGCCGCCGGTACGGTGATTGAGAAAGCGCGCGGGCAAAATGTGCCGGTGGTGTTCTTTAACAAAGAGCCTTCCCGCAAAGCGCTGGACAGCTATGACAAGGCGTATTATGTCGGGACTGA [...]
+ATCCTGGTACATTTTATCCTGGTCGACAAACATACCTTTGGTGGGATAACGTCCCAACCACATGTTATCCATGACCGAACGTTGCAATACCAGATTTAACTCCTGGTGTACCATCGAAATCCCATTCTCCAGCGCTTCTTTCGCCGAATGGAAGTTCACTTCTTTTCCCTGAAATACAATGCTGCCGGAGTCTTTTTGATAAATACCGAAAAGACATTTTAATAATGTTGATTTGCCTGCGCCGTTTTCGCCCATTAATGCATGAATAGAGTGCGGACGAACGTTTAAGTTGACATTATCAAGCGCTTTCACGCCGGGAAATGATTTGTTAATGCCACGCATTTCCAACAAATATTCACCCGACGACGGAGAGATCGTGCTGCCCATAATGATACCCTGTCGGCCTTTTTAATTATGACTATCCGCGCCGGATGGCAAAAGAAATACGTTATCCGGTCTGCGGCGCGTCACCCTTCCACGGTTTCAGGGCGC [...]
+NODE	2166	1280	63485	63090	0	0
+GCCTTTGTTTTCCCGCGCCAGACCAAGCGGAATCGCGATACAAAACATCACCGGCAGGAAGCTAAAGGCAAAAGAACCTACTTTACTCATCCAGGTGAAGATAGCCTGTAGCAAGGGATTACCCAGCACGGGGAGCAGGGTGATAACGTCGTGGCTACTGAGTGAGCTGCCGATACCGAGCATAATGCCGCAGAACGAGAGCAAGGCGACGGGCAACATAAACGTTTTGCCCAGTTGCTGGAAAAATTCCCATAGCGTTATTTTTGGCGTGGTTTTCGTCGTCATCTAACGACTCCTTGTTAATAAAGGCCGGTGTCAGGTTATGATGGCGAAAAGATAAAACGTTTTATCAAATTTTAGTGCGGCATTAATCACATTACTGACCGATAATAACGCGTATAAAGATAACAGATAGGTAAAACGTTTTATCTGTCAGATTCTGGAGCGATTTGTTGACATGGCTATCGCCAAAAAAATCACTATCCACGATGT [...]
+GCCCCCATCGCAATGGTTTCGTTGTAACAAACGACAGCGCTAATGGTCGGATTGTATCGCAACAGCGCGGTAATGCTTTCTGCTGCCTGTTTCTGACTGGAAGCGCATTCCACGACCCACTCGCTGTGAAACGGTAGACCGTATTTTAACAACGTCGCGCAATAGCCGCCCACGCGCTCCGCGCGGGTTAAAGATGCGCTTTGTCCTCCCAGCCAGGCGATGCGCTGATGGCCCTGACGAATAAGGTACTCCGTCAGGAGCTGCGCCGCCTGCATGTTGTCAGGCCGAACGGTATCCGCATCATCAAGATAGCTGGCGCGTGACGCAAACACCACCGGAATACCTTGTGCGTCGGCCTGCGCTCTCAGCGCTTCGCTACTACCCGCCGCACCGGCGATCACCATGCCATCCACGCCCTGATTAAGCAGCATGGTAAAACGCTGATTTAGCTGTTCGCCATCTTTCCCCCCGTGCAGGAGAAAAACCATACGG [...]
+NODE	2167	7	353	353	0	0
+TTTTGAT
+ACCCTCG
+NODE	2168	51	1391	1391	0	0
+AGGACGGGCTTCTTTGCGTGTGTGGTAACTGTAAAAATGTAGGCCTGATAA
+TGACGGACGGGCTTCTTCACTTGTCTGATGCCTGGCAGTTTATGGCGGGCG
+NODE	2169	21	1544	1544	0	0
+GCGCAGCGCCATCAGGCAACC
+CACACGCAAAGAAGCCCGTCC
+NODE	2170	16	547	547	0	0
+GGCACCGCCGGATGGC
+ATTTTTACAGTTACCA
+NODE	2171	51	3169	1261	0	0
+CGTCCAGCTTTTTGGTGAACGGTTTTTAGCATAACAGCTTCGCGAAATAGT
+GCCATACGCGCCCTGTTCGGGCCTGGCTCAAGCTATTATGGCAGCGTATCG
+NODE	2172	36	2735	2735	0	0
+AAAATCCTCACGTACTACGTGTACGCTCCGGTTTTT
+ACCAAAATGGCAAGTAAAATAGCCCTAATGGGATAG
+NODE	2173	139	6031	5642	0	0
+GTCGCCCGTACCCGCGTGATGGTCTGGCTGTTCCACGCGCAGCCAAGCCAGCGCGCTAACGGTTGACATAACAGATCGCTTTGGTTAAATCCCCGCCGCCAGTGTCGGCGCGACCAGAGCGGAACGCTGACGATTCTGT
+TTTAACCAAAGCGATCTGTTATGTCAACCGTTAGCGCGCTGGCTTGGCTGCGCGTGGAACAGCCAGACCATCACGCGGGTACGGGCGACCGCAACACAACATCATCTCAGCGCCAGGTTACGTAAACGCAATTTGAAAA
+NODE	2174	291	14582	14463	0	0
+GCGGTAAACTCCAGCAGCGACTCATAGGTCAGACGTGAGTCAACGCGAATTCGGTCCAACTGCGCATCGGCGAAATCGCGCAGCACGCGCTGCGCCAGCGCCAGTTCGCCATACATCTGGTAGCGCGTTTGCGGACGCTTTTTGCGCTCCATGACTTTCGTCCAGACGCGCTTGAGATAGGCGGCATCAGACGCGAGATCCTCTTCACACACGCCTTCCGCCGCGGTACGGATAATAAACCCGCCCTGTTCGTCGCAGTATTCCGCCACCACCTTTTTCAGGCGCTCGCGT
+GGTTTATTATCCGTACCGCGGCGGAAGGCGTGTGTGAAGAGGATCTCGCGTCTGATGCCGCCTATCTCAAGCGCGTCTGGACGAAAGTCATGGAGCGCAAAAAGCGTCCGCAAACGCGCTACCAGATGTATGGCGAACTGGCGCTGGCGCAGCGCGTGCTGCGCGATTTCGCCGATGCGCAGTTGGACCGAATTCGCGTTGACTCACGTCTGACCTATGAGTCGCTGCTGGAGTTTACCGCAGAATACATCCCGGAAATGACCAGTAAGCTGGAGCATTACAGTGGCCATC
+NODE	2175	177	8682	8461	0	0
+GAGTAAATCCGCCGGACGGCAGGTCACCGGGGCTGCCCCTTCCAGCACGCGGGCCTGCAGTGCCGCGTTCACCGGCACCGGGGTGTGGCCGTATTCGCCTTTCAGAATGCCGGCCGTTTCTTTGGCGATGGTTTTGTAGCGCTCGCCGGTCAGGACGTTGAGCACCGCCTGGGTGCC
+CGCCAAAGAAACGGCCGGCATTCTGAAAGGCGAATACGGCCACACCCCGGTGCCGGTGAACGCGGCACTGCAGGCCCGCGTGCTGGAAGGGGCAGCCCCGGTGACCTGCCGTCCGGCGGATTTACTCAAACCGGAACTGGCTGAACTGGAAGCGGACGTCAGGCGCCAGGCGCAGGA
+NODE	2176	24	954	880	0	0
+ACCACCAGTCCCGCCCCTTTCACC
+TAAACGTGGGCGATACGCTATGGT
+NODE	2177	136	4846	4846	0	0
+CGACAACGCCACGCTGGAGCTGAACACCGGCGGCGATTTTGACAACAACATCGGCGGTACGGGCAGCGTGGTGAAATCCGGCGACAAGACGCTCACGCTCTCCGGCGCCAATTCTTATACCGGCGGCACCACCATC
+TGTCGCCGGATTTCACCACGCTGCCCGTACCGCCGATGTTGTTGTCAAAATCGCCGCCGGTGTTCAGCTCCAGCGTGGCGTTGTCGGTGACGTCGCCGCTGCCCAGCGCCTCAACGTTGCTGGCGACCAGCGTGCC
+NODE	2178	32	2328	1886	0	0
+AGCGGCGGCACGCTGGTCGCCACCAACGTTGA
+ATAAGAATTGGCGCCGGAGAGCGTGAGCGTCT
+NODE	2179	9	1892	796	0	0
+GGCGCTGGG
+GCCGCCGGT
+NODE	2180	89	3484	3484	0	0
+CGTTCAGCTCCAGCGTGGCGTTGTCGGTAATGTCGCCAGTGCCCAGCGCCTCAACGTTGCTGGCGACCAGCGTGCCGCCGCTGATGGTG
+CTGGCGACATTACCGACAACGCCACGCTGGAGCTGAACGCCGGCGGTGACTTCGCCAACAACATTGGCGGTACGGGCAGCGTGGTGAAA
+NODE	2181	2	229	154	0	0
+GT
+CA
+NODE	2182	3231	179646	178789	0	0
+TCAGTAAGTAACATATCTGCATCAAGATATATGCAACCGCCGCCTGGTTGCAGATGATGACAACCAGGTTTACCAGCTTCCAGAAAAGCATCGCTTCCTTTTAGCAGGAAAAGATTTCTGTAGAAGTCAAACCATAAGTGCCCTTTGTCTTTATTATGAGATGAAATAAGCGTTTCCTCCGGATTGTTTTTCAAGACATCTTCCAGGCTTTTTTTTACCCCGTTAAGCAAGACCTCATCTCGTTCACTTGCTGACTGAGCTTCCAGTTTGGTGATGTTTTCTAAATAAATCGTCGTTAACTTTTTATCATACATGCTATAATTAAGGTCAGAATTATAAATAACCTTTATGTTTCTATAATTTTGTTCCAATTTTGCCAATGCTTTTCTTTGTCCCTTGCTAAAATCGCCATCAACGAAAATACCGATAATTCTTTCTTTTTCTATTATAGCAGCATTGATAATATTATTAAGATAAGGGTTTTTCTGCGTA [...]
+TGGCGTTTGCTATACGGGTATCAGACGCCTGATCCCCATTATCCGCTCCATTCACCATGCTAAACGTCAGCAGCGCATTATCAGAACCGGTATAGCTGACAAAAAAACCGGCGTGATCCCATCCCTTTTCACAAACGTACTCAACCTCCGTGTGGTGATCAAATTCGTTATCCACAGGAATATGCTCTGAAAACCAACCTACCTGCCCCAACAGGTAGTTAAAACCGGGTATCGGCTTATTAATATCAAAACTTTTCATCCACTTATAATCAACCCCAGCCCCAATTCGGTACAGCACATACATCCCAACTTTTTTATCAATCAGGGTATTAATTTTCGCGTTGTCTCGCTGCTGAAAAGCGATAATCACCTGTCTTGCCGTCTCTTCAAACGACGGAGCGGCACAAACGGGATGCGCGACCATTCCCAGCAGACTCAACGCGATGGCCGTGCGGCTCATTTTCATCATTGGCTCTCCATTAACATCCGGTG [...]
+NODE	2183	33	1533	1533	0	0
+TGAGGTTTGACTCGCTACGCTCGCCCTTCGGGC
+GCGGTTTTTGCGCGCTGTCCGTGTCCAAACTGG
+NODE	2184	2251	125632	123866	0	0
+ACATCACGAGGCCCGCGATGGGGTAGTACCAGGAACCGCCAATAGCAACCAGCCAGACACCTCCGATAAGAAGATACAGCCCACAAAGTGCTGCAAAGAGGGCCGTCAGCGTCACGAGTAATCGTGGCGATCGTGCGTTATTTTCTGCCATAAAAAGACACCATCCCAAATTGTTAATTTTTTAGTAGCAATTAAGTATAGGAATTAACATGTGTGATCGTCATCACAAAATGAGCTTTCTTATCAAATGCCGCGAATGAATACGTTTGCTGTTATACTGCGTGCCTTGCGCGTCAATGCGGCGTTATTAGTCACCGGCATTGAGTGATTTGTTTTTAAATCATATGGTTATAAATATGAAACATACTGTTGAAGTCATGATCCCCGAAGCGGAGATCAAAGCACGTATTGCCGAGCTGGGTCGTCAGATTACCGAACGTTATAAAGACAGCGGCAGTGAAATGGTGCTGGTAGGTCTGTTGCGTGGCTCAT [...]
+GAGAATCAATAGCTTAGGCTCATGCATCAATGCGCGGGCGATCATCAGGCGGCGTTTCATCCCACCGGACAGCATCCGCGCGCGTTCATGACGTTTTTCCCACAGATCGAGCTGTTTTAAATACTTTTCGCTACGTAAAACCGCCTCTTTATGCTCTACGCCGTAATAACCGGCCTGATTCACTACGATCTGTTGCACCGTTTCAAACGGGTTAAAGTTAAATTCCTGTGGTACCAGTCCAAGCTGTCGCTTGGCGTTAACCACGTCTTTTTCCAGGTCATAACCAAAAACGTTAACGCGCCCGGACGTTTTATTCACCAATGAGCTGATAATACCGATGGTGGTCGATTTCCCTGCTCCATTTGGCCCCAGAAGCGCGTAAAAATCCCCCGCTTCGACCTGCAAATCTATGCCGCGCAGCGCCTGAACGCCGCCGGGATAGGTTTTTTTAAGTTGTTGAAGTTCCAGCGCAATGGTCATAAATTCTCACTT [...]
+NODE	2185	45	3443	3443	0	0
+ACATATCGCAGGGCATTTATCCTTATGATTAGGTATAAATGATGA
+TCCGGGAAATGTTGAGCCGCTGTTCAGAGAAATGTCGATGAGTGT
+NODE	2186	47	48	48	0	0
+TTGAATTTTTTTACCATTGGGTTTGTTTTTTTTCTGTAACATTGAGT
+GAGTATTGTGGATTCTCTACTTTTATTACGCCGGTTGATGGCGTTGG
+NODE	2187	1680	106679	106249	0	0
+TTCCGTCTGGGTAATGGTGGGATCGGATACGATTGTAGTCATTCGATATATGACAATGAAAGTGATGTTGGCTCCAAAATACAAAGCGCCTGGTAATAATTATCAGGCGCTTTGCAGACAGAAAACCATCAAACATCGGTTTCTCGTTCTCCAGGATCTACTGGAAAATATGGCAACCCACAGTTAGTGGATTTTACTGTCGGGTCTTGCCAGGGATTTTGTGTTACCCCCAGGTCTTTTAAAAGACTTCGTAACAGCACTAACTCGCTGGGTGTCATTTTTTGCTTTGATTCACCCCCTTTAGGTGGACGAATATCCTCCTGACTAGTACATGTAACACAATAACCTTTTAACTCTATCCACTTAGGCTTAGAGGGGGCCTTAGGATCGGGAGGCATCGGACTGGCAACGCATGAACAGGCACTTATACATCCAGGCATAACGTTTTCCTTTTCAAACAATTCGCTTTAGTTGGAAGTTCTACTTGAGAAA [...]
+CTTCTGCTGCTATGCGGCAAGCTACCTCTCCCAAAACTATTCTGGAATATATCATCAACTTTTTTACCTGTGGTGGGGTACGTCGGAAAAATGAAGCACAATATCAGGAATTGATAGACACTATGGCTGATACATTGAAAAGTTCAATGCCTGACAGAGGTGCTCCGTTGCCAGAAAACATTATACTGGATGATATGGATGGGTGTCGTGTCGAATTTAATCTTCCTGGTGAGAATAACGAAGCTGAACAAGTTATTGTACGGGTCAGTAAAGGCGACCATTCTGAGACGAGAGAAATTCCGCTTGTCTCTTTTGAAAAAATATGTCGAGTTTTACTATTCAGATACGAATTTTCTATCCCTCAGGATTCTGTAATGTTAACTGCCCAGGGAGGCATGAATCTTAAAGGCGCTGTCCTTACCGGAGCAAATCTGACGGCAGAAAATTTATGTGGCGCAGACTTAAGCGGCGCAGATTTAGATGGGGCAGTAC [...]
+NODE	2188	539	34124	33918	0	0
+AGGTGAAAATAAAAACTGCCTCTATATCATCACGCTGTAAAAGTTCCTGATAATTTTTATACCCTGAAGTTATATTTACCGAATAAAGCCAATCGCTCATCTCCTCAATAAAATAATCGGCGGCGCAGATAATATCTAATTGAGGCAGTAAATACATATTCTCAACATGCATTTTACCTACCCGACCGAGGCCAATAACACCACATCGAAGCTTTTTCATTCGTACCTCTTAATCTCATGAATAGTAAATTTAAAACCGCAAAAGAAAAGCATCCGTAATTCTGCGAAAAACGGATCGTTTTATTTTGCCGTTCTGAAAAGCAAACAATGCGTTGACGCTGTATCGTTCAGGTTGCAGAACAATAACCACACTTCTGCAACCTGAGCGACGGCAAATTAATCAGTACTGCCGGGCCTGTCCGATATGTTCTTCAAGCATACGCGCTACCGCCTGGATACGTTCGCTACGGGATACCTGCGCCCCACCAACGC [...]
+TTGGTGGGGCGCAGGTATCCCGTAGCGAACGTATCCAGGCGGTAGCGCGTATGCTTGAAGAACATATCGGACAGGCCCGGCAGTACTGATTAATTTGCCGTCGCTCAGGTTGCAGAAGTGTGGTTATTGTTCTGCAACCTGAACGATACAGCGTCAACGCATTGTTTGCTTTTCAGAACGGCAAAATAAAACGATCCGTTTTTCGCAGAATTACGGATGCTTTTCTTTTGCGGTTTTAAATTTACTATTCATGAGATTAAGAGGTACGAATGAAAAAGCTTCGATGTGGTGTTATTGGCCTCGGTCGGGTAGGTAAAATGCATGTTGAGAATATGTATTTACTGCCTCAATTAGATATTATCTGCGCCGCCGATTATTTTATTGAGGAGATGAGCGATTGGCTTTATTCGGTAAATATAACTTCAGGGTATAAAAATTATCAGGAACTTTTACAGCGTGATGATATAGAGGCAGTTTTTATTTTCACCTCAA [...]
+NODE	2189	41	2969	2634	0	0
+ACCTGCCAGTGCTTCAGATGGTATTGTTATAGACCGTATAA
+TTCATACCAGTATTGATTTTAATGCAGTTTGTTTTTTATTG
+NODE	2190	821	53217	53031	0	0
+ATGCTGTGACATAATCAGCAGGTGAGTAATAAATGTAATTTGTAGGTTGTAACCCAAACTCAGTAAGTAAATTATGCGCCGATATGATTATCGCAGAATAAATAAGGTACTGACAAATAAGCTTTGATCTGCTTTTTAAAAATTTACTAAATCTGTCAGCATACTTGTCGTAATGAAAGAAATAACCCGATAGCAGAAAAAATCCGGCAACTTGATAGTAATAGAATACCTCCCCAAATGGGAAATTTGCAATGTGTCCAGCAACAACAGACAGCATCATAATTCCCTTGGCTATATCAAGACTTCTGTCTCTGTTGCTTCTTACAGATGGAGTTTGCAATAATTCTGGCGTTAGATTGTGCATGTCGTACAAAAAGTGAATTAATCAGTGCGAGAAATTTAACATATTACACTGGAAAAGAAAAACAACTTACCACTTGTGAGCAAAACCATCGCGCCAGAAAATTTACAAACATAAAAACCGTCTCTGCA [...]
+AATACCAGAATCTGGCTTGAGTACCCCGGCCCGCTGGAGTGATGGTGTCACAGCCGCCCTGCTGAGCTATAACCTGATGACGAACCTGTGGTCTACATTCCACTGGTATTGGCATCTGAAGCTGCACGCGAAAGATCTGGCTGGAAAATGGCATAGCCATTCATAGTCTCAGCCAAGCATGTACTGCAATTGACCCTGCAGATCCCGTCAATTTTGAATCTCTGGCTGTCGCTTGCATATGCTGGGTTCTCCTTAGCCCCCTCGTTCCTAAGTTTGTAATGCAGAGACGGTTTTTATGTTTGTAAATTTTCTGGCGCGATGGTTTTGCTCACAAGTGGTAAGTTGTTTTTCTTTTCCAGTGTAATATGTTAAATTTCTCGCACTGATTAATTCACTTTTTGTACGACATGCACAATCTAACGCCAGAATTATTGCAAACTCCATCTGTAAGAAGCAACAGAGACAGAAGTCTTGATATAGCCAAGGGAATTA [...]
+NODE	2191	29	6235	6212	0	0
+AACGCGGCTTTCGCTCACCGTTGCGAGGT
+TCAGACAATCTGTGTGGGCACTCGAAGAT
+NODE	2192	47	9027	8912	0	0
+TGAAGTCTCAATCGCAAGACGCCTTGCTATTCACTTTTCATCAGACA
+TCCCCTTCGTCTAGAGGCCCAGGACACCGCCCTTTCACGGCGGTAAC
+NODE	2193	1270	66068	64842	0	0
+TTTGACCGTGAAAAGCGACAAACCGGTGGTGTTTACCGCTGCAATGCGGCCCGCGTCGGCAATCAGCGCCGATGGCGCAAGGGCAGCCTGGACTGGTGTCTGACTCGCTCAACCCGGCGAAGGCGCGAGTCTTGCTGATGACGGCATTAACTCAGACGCGTAATCCGGAACTGATCCAGAGTTATTTCAGTACGTATTAATCATGCAGGCCTGTGCGCCCACCCTCGAAGATGGGCGCGCAAGATATTAACGCATGGTCACAAACTCTTCCGATGCGGTCGGGTGAATGGCGACGGTATTATCGAAGTCTTTCTTGGTAGCGCCCATCTTCAGCGCCACTGCGAAGCCCTGCAACATTTCATCCATGCCGAAGCCGATACCGTGGATACCCACAATTTTTTCTTCCGGCCCGACGCAGACCAGCTTCATACGGCACGGCTGGCGGTGCGTCGTCACCGCGGTATACATAGCGGTAAACGATGATTTATAGAC [...]
+GCGAAACCATCACCGCCGACCATATTTTGATCGCTACCGGCGGCCGTCCGAGCCATCCGAGCATTCCAGGCGTGGAATACGGCATTGATTCCGACGGTTTCTTTGCGCTGTCTGCCTTGCCGGAGCGCGTCGCAGTGGTAGGCGCAGGTTATATCGCCGTTGAACTGGCTGGCGTTATCAACGCGCTGGGGGCGAAAACGCATCTGTTTGTCCGTAAACATGCGCCGCTGCGCAGTTTTGACCCGATGATTAGCGAAACGCTGGTTGAGGTGATGAACGCCGAAGGCCCGCAACTGCATACTCACGCCGTGCCGAAAGCGGTGGTGAAAAACGCCGACGGCAGTCTGACTCTGGAACTGGAAGATGGCCGCAGTGAAACCGTTGATTGCCTGATCTGGGCCATTGGTCGCGAACCGTCGACCGACAATATTAATCTGGCGGCAGCGGGCGTGAAAACCAATGAAAAAGGTTACATCATTGTCGATAAATTCC [...]
+NODE	2194	4	98	98	0	0
+GGAG
+GTTC
+NODE	2195	26	125	125	0	0
+GAATGTCTGGGAAACTGCCTGATGGA
+GAAGCAGCAAGCTGCTTCCTGTTACC
+NODE	2196	15	871	868	0	0
+GTTTATGAAGAGGTG
+AGGGCGGCAGGATGA
+NODE	2197	2083	108897	107920	0	0
+TCGGCGCAGGCAACGTCACAAAACTGGCTAACCAGGTGATCGTGGCGTTGAATATCGCCGCCATGTCTGAAGCGCTGACGCTGGCGACTAAAGCGGGCGTTAACCCGGATCTGGTCTATCAGGCGATTCGCGGCGGTCTGGCTGGCAGTACGGTACTGGATGCGAAAGCGCCGATGGTCATGGACCGAAACTTTAAACCAGGTTTCCGTATCGATCTGCACATTAAAGATCTGGCGAATGCGCTGGATACCTCCCACGGCGTTGGCGCGCAGCTCCCGCTGACCGCCGCCGTTATGGAAATGATGCAGGCGTTACGCGCGGATGGACACGGTAATGACGACCATAGCGCGCTGGCGTGCTACTACGAAAAACTGGCGAAAGTGGAAGTCACTCGCTAACGACGTTGTGCCCGGATGGCGTGTAGCGATCCGGGCCTGAATTTCAGGCTGGATAAGTGAAACGCCATCCGGCGTTGTGCAGTAACAGGCTACC [...]
+ATAAGCCGGGTTCTGTCGTGGACAGTCATTCATCTAGGCCAGCAATCGCTCACTGGCTCAAGCAGCCTACCCGGGTTCAGTACGGGCCGTACCTTATGAACCCCTATTTGGCCTTGCTCCGGGTGGAGTTTACCGTGCCACGGACTGTTACCAGCCGCGCGGTGCGCTCTTACCGCACCCTTTCACCCTTACCTGATCCCACTTACGTGGGCCATCGGCGGTTTGCTCTCTGTTGCACTGGTCGTGGGTTTCCCCCCCAGGCGTTACCTGGCACCCTGCCCTATGGAGCCCGGACTTTCCTCCCCTCCGCCCGTCTCCCCGAAAGGACGACGACGAAGCGGCGACTGTCTGGTCAGCTTCGGCGCGCAGTATAGAGGGTTCGCGCGACTTTGTCACCCTGCGCTGCGCATTCCTATCGCCAGAGCGGCAGCAACATTTCTGGATGCCCGATAAATATTGTCAAAAGCGCCCCGAAAAGCCTCCTCCAGCGTC [...]
+NODE	2198	1	134	50	0	0
+T
+A
+NODE	2199	29	1828	1828	0	0
+GGTGGTTTTGCCCTTATGTTTGTGATGGG
+ATTATAAAAATGAGAAAGTAATAAAGTAA
+NODE	2200	22	1643	1643	0	0
+GGCCATTTTTGGTGAAATCGGC
+CGACTAAGTCAGTCGGTATAGC
+NODE	2201	29	1759	1759	0	0
+AAACGTTTACCGATCTTCAATAAATATAT
+CCCCATCACAAACATAAGGGCAAAACCAC
+NODE	2202	51	3054	413	0	0
+ACCTTCACCCGCGTTATCGGCGCGCATCACGAAGGTGAGATATTTGATGGA
+TGGAATTTTGACGCTGATGTCGCTTGCCGGGCGTAATACCTCGGCGCGCAC
+NODE	2203	2	70	70	0	0
+TA
+TG
+NODE	2204	49	1888	1888	0	0
+TTCGTTGGGCGCGGGGCATGGTGCAAATTTTCCGCCTCGATAACCCTCT
+ACGCTGCCCGATATGCGCCGACAGGCTTTCCGTCGCCAGCCCCGCCGCC
+NODE	2205	2309	128536	127542	0	0
+TCAGGGGAGCTATGAGATGCGGGGTAATACCTTCCGTAAAGAGAGTTTTGTCTGCTCTTTTGATGCAGATGGGCAGTTTTTACATCTTTCTATGCGGTAAAAGCCGCGCCTGGTGAGGTGTGATGCCGCGAAATCCGGCAATTTTCGCTAAACAAACCGGTTTCATACTGTATATCTCGCATCCAGCGGGTATACTGGCTCCTTCCTTTAAATCCACACGTATCCAGCACGAAATAATATGCAAAAGTTTGATACCAGGACCTTCCAGGGCTTGATCCTGACCTTACAGGATTACTGGGCTCGCCAGGGCTGTACCATTGTTCAACCATTGGACATGGAAGTCGGCGCGGGAACTTCTCATCCAATGACCTGCCTGCGTGCGCTGGGGCCGGAACCGATGGCGACTGCCTACGTGCAGCCGTCCCGTCGTCCAACCGATGGCCGCTATGGCGAAAACCCGAACCGCTTACAGCACTACTACCAGTTCCAGGT [...]
+CGGTCGGTCTTGTCGCGCAGCGTGCCCAGCTGTTGCTGGAACAGCACGGTTTGCAGACGCGGCAGATGGTCTTCCAGACGTTTTTTACGGTCGGTATTGAAGAAGAATTCAGCATCTGCCAGACGCGGACGCACCACTTTCTCGTTACCGGAGATAATCTGGGTCGGATCTTTCGACTCGATGTTGGCGACGAAGATAAAGTTCGGCAGCAGCTTGCCCGCGTTGTCATAAACCGGGAAATACTTCTGGTCGCCCTTCATGGTGTACACCAGCGCTTCGGCAGGCACGGCGAGGAATTTCTCTTCGAATTTCGCCGTCAATACCACCGGCCATTCCACCAGCGAGGCCACCTCTTCCAGCAGGCTTTCGCTCAGATCGGCATTACCGCCAATCTTGCGCGCTGCTTCTTCGGCGTCCGCTTTGATTTTGGCTTTACGCGCTTCGTAGTCCGCAATGACTTTACCGCGCTCCAGCAGAATTTGCGGGTACTGG [...]
+NODE	2206	58	2319	2319	0	0
+CGAAGATGCCGAACTGCGCCGCCGCGCCGAGCAGCAGGGTGCGCGGATTCGCCAGCAG
+CATCTTCGCCACCGTGCTGGGGGCGCTGACGCTGAACTACTTCGGCCTGATTGCCTTC
+NODE	2207	6	371	371	0	0
+CGGGCC
+GTTCGG
+NODE	2208	78	2754	2754	0	0
+GAAGTCGGTCATCGCGCCCACACCCATAAAGATGACCAGCGGCGCGACACCGGAGCCAATCGCCACTTTATAGAACAG
+TATGGGTGTGGGCGCGATGACCGACTTCGGCCCGCTGCTGGCGAATCCGCGCACCCTGCTGCTCGGCGCGGCGGCGCA
+NODE	2209	1518	71619	71182	0	0
+CACCAGCGGCAGCGCGAGCGAGTTTGCTTCTCGCCAGAAGTGAGAAGCGTCAACCTGGCTTCCGGCGGCGAGTTGGCGGCGAAGGCGCGTAGCGGTCTGTATAGCGACAGGAGCGACGGGCGGGCTCAGTCTCATTCTTTGTATTCCATCTCATTTATATTTCGGTCAGTATCAATAGCTAAAGCGGCTGTTACAGGAACAGCCGCTTGCGGGCTTTCTTTTGCGTAAATCGTGGCGATAAAAACTATCCTATGACCTCTCCTTGCGTATCGCGTGTCTGGCCGATGCTGTCCCGCCACAGACGAGCATACAGGCCATGAGCCGCTATCAACTGCTCATGGCTGCCATATTCAGCGATACATCCTTTATCGATTACGACAATAACATCGCAGCGACGAGCGGTGGTCAGCCGGTGCGCGACGATAAGCGCGATGCGTTTCTCGGTATGCGTCACTCCGGTAAGCGAGGTTATTAAGCGCTCCTCGGCGCTGC [...]
+TTGAGCTCGCCTGCCTACGCCCAGGCACGGCTGGAAATTGGTAAGGTGAACAGTACGCTTCAGGAAAAGGTCTCCGGTATGCGGGTAGTGCAGTCACACGGTCAACAGAAGCAGGAAGCCGCCAGGCTACGGGCGTTATCAGACAACTTCCGCGCCACCCGCGTGCGGGCGCAAAAATACCTTGCTGTCTATTTTCCGTTCCTGACCTTCTGCACCGAGGCCGCCTATGCCGCCGTGCTTTTAATCGGAGCGACCCGGGTCGCCGAAGGCGAAATGACGCCCGGGATACTGGCGGCGTTCTTCCTGCTACTGGGACAATTTTATGGCCCGGTACAGCAGTTGTCAGGCATTGTTGATTCCTGGCAGCAGGCGACCGCCAGCGGCAAACATATCAATGCGCTATTGGCGACTGAGGAAACGGAGAATATTGAACCGTCCTCCATAACGCCTGGCACTGGCGGCGCGCTACGTCTGGAGGCATTGACATTCCGC [...]
+NODE	2210	51	2004	1621	0	0
+CCGTTAACGCAAGAATGGGGTCAAGCCAGAACATTGCCGCGGCGATAGCGA
+GCATTAAGCGCCGTACCTGTAGTGATACTGGCGACGTGGATTTACCGCCGT
+NODE	2211	80	5262	5166	0	0
+CCTGATTGCCTATCTGGAAGAAAAACCTGATATGGCTGAGCATCTGGCGGCTGTGCGAGCATACCGGGAAGAATTTGGCG
+TCAGGTTTTTCTTCCAGATAGGCAATCAGGTCTTTCAGCGTAATGATGGAGATAACCTTACAACCATAGTCGCGCTCCAC
+NODE	2212	8	420	76	0	0
+GGCGTGGG
+CGTGAAAT
+NODE	2213	16	2113	2113	0	0
+ACGAGCAGTAAAACCT
+TACGCTTCTTTAAGGT
+NODE	2214	51	2816	2798	0	0
+TAAGTGGGAACCGGTTAACGAACAGACCATTTTGCGGTTGTGACCTTGCCC
+AGAACAAGGTGTCGCCGTTAATCTGGCGGCTAGTCGCCGCTTTGTTACCTG
+NODE	2215	51	60	60	0	0
+GGGAATTTTGACGCTGATGTCGCTTGCCGGGCGTAATACCTCGGCGCGCAC
+CCCTTCCCCCGCGTTATCGGCGCGCATCACGAAGGTGAGATATTTGATGGA
+NODE	2216	1825	109996	107079	0	0
+AGTAGGCGGTTTCATCGAGCGTGTCAGTGCCATGAGTAATAACCACACCGTCAACATCGTCCCGCGCCAATAACGCATTCACCTTCTGTGAAAGTTTCAGGATAATATCGCTGGTCATATTTTCGCTACCAATATTCGCCACCTGCTCGCCGTCAACGCGAGCGATATTATTCATTTCCGGCACGGCATTTATTAATGTTTGCACGCCAAGTTCACCAGATTTATATCCGGCGGTTTGCGTATGATTGGCTGCCGTCCCGGCGATAGTACCGCCTGTCGCGAGAATAACAATATGCGGTAGTGACGTTGTGCTAAATACACAGTGGCTGATGAGCAGCAACACGGCGGCCATGAAAACTCTGATTTTCATTTTCTTCCTCTGAATTAAAAATAATAAGTGACGTGTGCTATAAAAATATTAATAACAATCAGGCCAGAACCATTTTTCCTATTAACAGCCCGACAATGACCGAGACAATCACGTTAACTAAT [...]
+CTCACTCCAGATAACCCAGGAGGAAGTATGTTTTGGACGGAATTATGTTTTATCCTTGTGGCCCTGATGATAGGAGCCAGGATCGGCGGCGTATTTTTAGGGATGGTCGGCGGGTTAGGCGTCGGCGTGATGGTTTTTATTTTTGGCCTGACGCCTTCTACGCCACCGATTGATGTTATTCTGATAATTCTTTCTGTTGTCCTGGCGGCCGCATCTTTACAGGCCTCCGGCGGGCTGGATTTACTGGTCAAACTGGCGGAAAAAATTCTGCGTCGCCACCCTCGTTACATTACGTTATTAGCGCCGTTTATCTGTTATATCTTCACGTTTATGTCAGGAACGGGGCATGTCGTTTATAGCTTGCTGCCGGTTATTTCTGAAGTCGCACGGGATTCAGGTATTCGACCGGAACGTCCTTTATCTATTTCTGTTATTGCATCGCAACAGGCGATCACCGCCAGTCCTATATCTGCCGCCATGGCGGCGATGATT [...]
+NODE	2217	51	6586	6586	0	0
+ACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTA
+TTAGACCAAACCATGAAACCAACATAAACATTATTGCCCGGCGTACGGGGA
+NODE	2218	2174	114506	113935	0	0
+ACGATGTCCATCTTTATCGCCAGCCTGGCATTTGGCAATGTCGATCCGGAACTTATTAACTGGGCGAAATTGGGCATTTTGATTGGTTCATTGCTCTCCGCAGTGGTGGGGTATAGCTGGTTGCGCGCGCGTTTGAACGCGCCGGCATAACCAGTACGAAGGAAAGGGGGAGCGATGTATCGCTCCCTTGCGACATTGAACAGGGAGAGGAATGAGCATGTCTCATATTAACTACAACCATCTTTATTACTTCTGGCATGTCTATAAAGAAGGTTCTGTCGTGGGTGCCGCAGAGGCGCTTTTTCTGACGCCGCAAACCATTACTGGTCAAATTAAAGCCCTGGAAGAGCGTTTACAGGGGAAGCTATTTAAACGTAAGGGACGCGGTCTTGAGCCCAGCGAACTGGGCGAGCTGGTTTTTCGCTATGCGGACAAAATGTTTACGCTAAGCCAGGAGATGCTGGATATCGTCAATTACCGCAAAGAATCAAA [...]
+CGACTCATCCGGGCGCGCGCGACTACGTCTGGGGCAAAGCCAAACGCAACTATTACGATAAAGGCGTGAAGTTATTCTGGTTAGATGAAGCCGAACCTGAGTTCAGCGTTTACGACTACGACAACTATCGCTACCATGCCGGGCCGGTACTGGAAGTGGGCAATATCTACCCACGTATGTACGCTAAAACCTTTTTTGACGGCATGAAAGCCGATGGCGAAGACCAGGTTATCAACCTGCTACGCTGCGCCTGGGCCGGCAGTCAGAAGTTCGGCGCACTGGTCTGGTCAGGGGATATTCACTCCTCGTTTAGATCGCTACGCAACCAGTTTGCCGCCGGACTCAATATGGGAATCGCGGGGATACCGTGGTGGACGACGGATATCGGCGGTTTTCATGGCGGTAATATTCACGACCCGAAATTCCATGAATTGCTGATTCGCTGGTTCCAGTGGGGCGTCTTTAGCCCGGTGATGCGTCTGCACGGCAACC [...]
+NODE	2219	39	2448	2337	0	0
+GACGGTGAGCTGAAAGCCGCGTCGCACCTGCTCTTTAAC
+TATATTACGCTTTCCTCTTTCAGAGTCAACCCTGAATTT
+NODE	2220	51	1366	1366	0	0
+TCCCCTTTAGGCGGCGCCGCGCCGCCGTAGCCCGCTTTACCGAAATCGGTA
+AAACGCACCGCTATATCTTTACGGTTCACGCGCTGGACGTCGAGCGTCTTG
+NODE	2221	51	179	179	0	0
+GTTCAACTTCGGGTAATTCAGGCATAACGTCTCCGGCTGTGTGGCAGGGCT
+CCCAGCCGCCGGGGTATTGAACCCCATTTAGTTGGCGCTACTATCCTGCAC
+NODE	2222	22	1494	1494	0	0
+GCATCGTCGATGAAGTGGTGGC
+TTCGCTGCGATGCGCCTGGCGT
+NODE	2223	19	3205	3113	0	0
+AAAACGAAGGGCCCTGTCG
+TGGGGAGACCCCACACTAC
+NODE	2224	1235	53735	53370	0	0
+ATATTTCGATTGATGACACGGTGGCCTATCTCATCGGTTTCCAATAAATATCCTCCGGCATAGCCCTGTCTCTTGATCAGATCTCCTGATCAAGAGACAGGGCCTGGCTGGGGGTTTTCCATAGACAAAAAAAGCGTGGAGCCATCCACGCTTGAGGCTGCTGACAACGTGTAACCAGGTGGCAATGTTCCAACCACGGACCTACAAAAAGTACGTAATCTGTTGATATTCTCGTTTCGTAAGTCAGGCAAAGCGCTAGCTGCCTCTCGCAGAAATGCCAACACAACAGATAATTGTCAGCAGTCCTCATTTTTCAGTCAGCAAATATCGGTCCGGCAGGGAATTTCGCCAGAAACCCGGTGACGGCCAGCAGCGACCACAGCCCGGGCCACTCAATCTGGCGCTCCCGCAGTTCATCATCCAGCGTCATAAGCGCAAACTCACCTTTATCGCCCAGCACGCCGCCCTGCCAGAGCAGCCGCTGCGCCTGCT [...]
+GATTGGCTCGGCGATAGCCGCCGGGGTGATGCTGAAGTACGTGCTGGCGATGTAAATCTGTTCCTTTCCCGGAGGCGGCGCGTTGCGCCTGTCCGGGCTACCGGATTGCATGGATCTGTAGCCCGGACAGATGCGCAGCATCGCCTCCGGGAATGTCCCATAAGGAGACTTTGATGAATGAAACCATAGCATTTCGTCCGGAAGGCCGGGCATCGACAAAAGATGTGGTTGTCAATTACACGCTGGCGTCACTGGACGAGCTTGAACAACTGCACCCGGCGCTGAATCTGCTGGCGCACCCGTCAATCGTCCGTGGCAGCCATGATTTCTTTGTCCGTTGTTATGACGCGGGCGTACAGCATGCGCAGGCCGGGGCGGCTGAAACGGTAGCGGTTTTGCCTGATTCGCTGCCACAAGAACGGCAAAGGAGCGGGCTGCTGTGTGCCGCAGCAGGTCGTCTGGATGCCCTGCGCCAGCCGCTGACGCACAATC [...]
+NODE	2225	122	5856	5856	0	0
+CACCTGGGCCACGAGGATACGGCTGTCGTAGCCCTTCAGCTGGCCTTCAAAGGCGTGATACTTTTTGCGCACCTCGCGGAAGTATGCGGCGATATTTTCCAGCTTCAGGATATCCAGCCCGG
+GTGCGCAAAAAGTATCACGCCTTTGAAGGCCAGCTGAAGGGCTACGACAGCCGTATCCTCGTGGCCCAGGTGCCGGGCGGAATGCTCACTAACCTCGAAAGCCAGCTGAAGCAGCAGAACGC
+NODE	2226	13	734	734	0	0
+TGTCGTGCTCAGT
+ATACTTCCGCGAG
+NODE	2227	12	1227	1199	0	0
+ACCTGCCAACGT
+AAATATCGCCGC
+NODE	2228	201	10869	10598	0	0
+TATCCGTTTTCTCGGCGAAGACCCGTGGCTACGCCTGCGCGAACTCAAAAAAGCCATGCCGAAAACCCCGCTGCAGATGCTGCTGCGCGGCCAGAACCTGCTCGGTTATCGCCACTATGCCGATGACGTGGTGGAGCGCTTCGTTGAGCGGGCGGTGAAAAACGGCATGGACGTGTTCCGCGTCTTCGATGCCATGAACGA
+CCGCTCAACGAAGCGCTCCACCACGTCATCGGCATAGTGGCGATAACCGAGCAGGTTCTGGCCGCGCAGCAGCATCTGCAGCGGGGTTTTCGGCATGGCTTTTTTGAGTTCGCGCAGGCGTAGCCACGGGTCTTCGCCGAGAAAACGGATACAGGCGTCAAAGGTGGCGCCGCCCCAGCATTCGAGGGAGCCGTAGCCCAC
+NODE	2229	1314	77616	76990	0	0
+TCGGCCATTATGTCGGTTCACTGCGCCAGCGCGTCGCGCTACAGCAGGATCACCAACAGTATGTCCTGATTGCCGACCTGCAGGGACTCACCGATAACGGCAGTAATCCGCAAAAAATCCGCGATAATATTCCGCAAGTGTTAGCTGACTATCTGGCCGTCGGCATCGATCCCGCGCTAACGACGATCTGCCTGCAATCCGCATTACCCGCCCTCGCTGAATTAACGGTGCTGTATATGAATATTGTTACCGTCGCCCGAGTGGAGCGTAATCCTACGGTAAAAAATGAGATTGCCCAAAAAGGCTTTACCCGTTCCCTGCCGGTCGGGTTCATGGCGTATCCCATTAGCCAGGCGGCAGATATCACCGCCTTTAAGGCCGAAATGGTACCGGTTGGCGACGACCAATTGCCCATGATTGAGCAAACGAATGAGATCGTTCATAAGATGAATAGTCTTTTCTCCTCGCCGGTATTGCGACCCTGTCAGGCGC [...]
+AAGCGACCCATAACAGTATGTTGGTAGAGCTCTTCCGTCAGTCCTGGCAATGGCGTGAAAATAATCCGATGTGGCTCCAGCTTCATAGCCATCTGGGCGATACGCTTTACCGTAAGGAGTGGCTGGTCGATCATAAGCAGATCCTCGCGGCGTTAATTAAGAAAGACGCCCGCGCAGCGAAGCTGGCGATGTGGCAGCACCTGGAAAACGTGAAGCAGCGTCTGCTGGAGTTTTCCAATGTTGATGACATCTACTTTGATGGCTATCTGTTTGAGTCATGGCCGCTGGACAACGTTGATGCCTGATTATACCTGGAATAGCGTGGGCAGACCCAGTCCACGTTTTACTTCCTGTAGCGTCTTTTGAGTGACCTCATGCGCCCGCTCGCTACCTTTTTTCAGCAATTCCATTAGCATTCCCTTATCCGCAATAAAGGTTGCCCGTCGTTCGCGTATGGGCGCGATCAGTTCTTGCAGGCAGGTCTCCAGCTCA [...]
+NODE	2230	51	2935	2935	0	0
+TTTGTTCATTGATGCCCAACACCACCGCCCCTTTATTAGGGCGCACTTTTA
+ACGATCCGTGAACACTATGAAATTCGCGCGCTGTTAGAAAGTGAGGCGGTG
+NODE	2231	38	84	84	0	0
+GTAAAACGAGTATTTGACATGCTTCCTCCACTTAACAC
+TACGTTAGTCGCCATTAAACCGAATAAACATGCGCCCA
+NODE	2232	1984	111709	108695	0	0
+CAACGAAGGTAATATTTTGGGCCATTCGCCGCGCAAATTGGGGATTGGCATGGTGGAGATCAAAGTGGTGAATGTTGAGGGTTAAAAGAGAATGTCGTATATGCCGGGTGGCGGCTGCGCCTTACCCGGCCTACACATCATCTTTATCAATAAACTGGCGCGTAGGCCTGATAAGCGAAGCGCCATCAGGCACTGTATATGCTACACGCCCCTTTCTGTTAATAATCGAACTGACGGTAGTAACGACGAATATCCAGACTGTGGCCGGTATATTTCTCGAAGTGCGCCGCCAGCCGATCAACCAGCAGTGTCGAGACGACGCAGGGCGCCATGATCCAGCGGAACTCATCATCAATGCCGTCCAGCGCATACGCTTTCGGATCAATCACCACCAGGTTATCGGTAATCTTACTGGCGAAGCGTTCCACGCGCTCGTCCAGCTCGCGGCATTTCCCTTCCCCTTTCACCAGAATGAGCGGAACGTCTTTTTCC [...]
+TCTTGGCAAGGCCAGTGATTATCCACTGGATATTCTGACCGGGATTGAGTCCGTCGGCTTTGTTACCCGTGGATTTAGCGCGACGGTACTGAATCTGTTGCTTATCGCGTTGTTAATTGCCCGTCAGCAGCAGCGACTGACGGAATCGCAGGTCGAGGAGTATGTGGCGCAGCTTCAACGCATCGCGGCAACCCTGCCGTTGGTTATCGTGCGTACGGAAGCGTTTATTCACCAGCACCAGTCCGTTTTACGAAACGGGACGCGTTTTGTGGCGATAGGCTACGGCGCGCTGGTTGGGGTGGCAAAAGAGTTGGAAACTAAATTTACCGAGACGGTACGTGTTCCCTCAAGCGGGTTTGAGTTGGAAGCCTATATGCACGGCCCGTATCTGGAAGCCAATGCGGAACACGTGATGTTCTTCTTTGAGGACCGGCCCGACGCGCGCTCCAGGGCGCTACGGGAGTATATGACGCCTGCGGTCGCCAAAACCTT [...]
+NODE	2233	51	2342	2342	0	0
+ACCCGGAGCCACAACATTGACAGTAATACCACGGGACGCAACTTCACGCGC
+TTTTATTGAAACGGACATGACGCGTGCGCTGTCTGACGATCAGCGTGCGGG
+NODE	2234	45	1741	1445	0	0
+TCGATGTCATCTCGCGCTAATATCCCCTCAGGCAACACCAGAAGC
+ACCTGCCGATTCGCGCCGCGCAGCCGCTGGATGGCGCGTTTATGA
+NODE	2235	4757	242040	239209	0	0
+GCAATCTGTGCCGGTGAAAAGTCGTCCATATTTTCCAGCGTGATATCGACCATCAACTGACCTTCACCCGTCAGCGTATTCGGCACAGCGAACGCCACGCGCGGCGCAATGGCTTTCATGCGCTCATTGAAGTTATCAATATCAATATCGAGGAATTTGCGATCCGTCACCGGCGGCAGTTCTTCACGCGGTTTCCCGGCCAGATCGGCCAGCACCGCCATCACGAACGGCAGCTCGATTTTTTTCTCAGAGCCGTAAATCTCTACGTCATATTCAATCTGCACGCGCGGCGCGCGGTTGCGCGCGATGAATTTCTGCGCGCTATTGTTGATAGCCATAATCCTTCATTTCCTTTTTAGTCAACTGGTTGCCGCCAAGGGGAGCGGTATACCGGTACAGTTTTTAAAATCGCACTACGGACACTTCGAACGGCCGGTTTCAGCAAACGATCTCAAAAACAATCTGCTCATCACCATTAACGCCGATATCAAT [...]
+CAACCTCACCGGTATCGTCATGACAGGCGAGTGCCGCCAGCAGTGACTCCACCCAAACGGGTTGCGGCAGAAGGAAACCGGGTCGTTGTTCACCCTGAAAAACGGTGCGGCGGAACATTTCGCAGCGAACCAGCTCCCGGTACAGCCGGGCCTCCTGGGTATAATTGGCCTCCATCCTGGCGCATAGCTGAAGCTGGTGTAGCGCCCGCGACCAGTCTCCGGCCACACACAGCAACTGAAACAGGCTGTGGCGGCAGAGCGCTTTCGCCGGATTTTCCCGAACCTGCTGCTCCGCCATCTGAATCCCCTCCGCAATAGAGTATTCCTGTAGCAGCGCGGACAGGGTAGCAGGAAGCGTGTCAGTTTTTTTCATGGGCGGTATTTCCATTTTTCTGTGTCGGAGTGATTCGGTAGTGGCTGTCGATGCCAATAATACGATGCTCGCGGCGGGTCAGATCGGGCAGTATCTCGCTATGTGCGGTTTTCCCCGCC [...]
+NODE	2236	1245	68607	66553	0	0
+AATTTTTTCTCTTTATCATAGGGGAGGGGCATATGGACTACTGTTGTTGCCTGACGTTTAACCGTCGGTTGCAGTTCATCATCCAGCCACAAGTCAGACGATCTTTTCATGTATTCGGCACCGCACAGCGCTTCGGTACATAGCTCGATTCCAGTCAGCATGGGCGTGCCGCCAGCATCGCACTGATCGACCGTCAGGTAAAAATAACGGTCATCGAGAATAGCCGGTCTTAAACTGCGTATTTTATTAATATATTCTTCTGTCGTCAGTCCCATTGATTCTGCGCGCGCAGAAAGGGTATTAGTATTACAGGGTGTTTTATCTTTAAAATAATAACGGTCGGCGAGTAAAAGTTTCAGGTCACTGCTAATGGCGGTTTTATTAAAATCGATATTTACAATTTTGGAGATGAAACTAACGGGTTTGGATTCTGTACTGGGGGATTGTTTTGCACATATATTCGCGCAATATAATGAAACTATAATTGTTATG [...]
+TGGTCTGACTGGCGCATATTCTCCGCATTCCCTGCGTTATGCGTGGGCGCAGGATACCATTAGTCACTATCTGGCGCAGGGGTTCAACAGGAAAGAAGCGCTGGCAATTTTGGCGATGGATCTGGGGCATGGGGACGGGCGTGGGCGGTATGTGGCGCAGGTGTATGGGCAAATTTGACAGTTGGCTAAGAGCGAGCAGCGGATGGAGCAGGTTACCACAGTTCACAGTTAGTGAAAGACTGGGCGGAGGTGGTAAATATCAGGCTGCATTACCTTCCCCCTTACAGTCCAAACCTGAATCCGATAGAACGAATGTGGAAATTAATGAACGAACATGCCCGGAATAATCGCTACTTCAGCAGTACGCGAGAGTTCAGGGACGCAATATCTGTCTTTTTTAACCAGACGCTGCCGGATATAGCGGACTCACTGACATCCCGAATTAAAGATCACTTTCAGGTGCTCACTCCCGCATCTTGAGGTTTATTGGGT [...]
+NODE	2237	323	16704	16588	0	0
+GTTGAATGCCCGGCATCGCTTCAATCATTAAAGACATCAATCAACGGAACGCCATCCGGGTATTCAACAAAAATATTAACGAATGGAACAAAAGGCTCAGCCGACTATATGGGGGTGTCAGTAGCGCGCGCATCCAAACCAGATGAACCTTTTGTTATTAACTCCACCGCCGATTCAGAACGTCTGGTCTGGAGTGAGGTAGAAATTAACAATAAAGAGGTTCCGCTGATCGCCATCATGAAAGAGACCAAGGCAAATTCGGCTACCACCGGGGCTTTCTCAGCCGTTGCGACTTTCGTATTTAGCTACGAGTAATTAACGCA
+CCCGGTGGTAGCCGAATTTGCCTTGGTCTCTTTCATGATGGCGATCAGCGGAACCTCTTTATTGTTAATTTCTACCTCACTCCAGACCAGACGTTCTGAATCGGCGGTGGAGTTAATAACAAAAGGTTCATCTGGTTTGGATGCGCGCGCTACTGACACCCCCATATAGTCGGCTGAGCCTTTTGTTCCATTCGTTAATATTTTTGTTGAATACCCGGATGGCGTTCCGTTGATTGATGTCTTTAATGATTGAAGCGATGCCGGGCATTCAACAATCACTAATTTAAAATCTGCCGTTGCTGTTCCCGCTCTTACATCATCAA
+NODE	2238	165	9264	9183	0	0
+CGGGTAGGGGCCAAAAGCCAGCTTTTTCTCTTTGCCATCGACGCGGTACTTCATGTACCAGAGTTTTGAGCCGTTGGGTTTGATCAGCAGGTAGAGTCCTGAACTGTCGGTAATTTTGAAGGATTTCTCGGTGGGTTTGATCTTGCGGATAGCGGTATCGGTTAA
+AATTACCGACAGTTCAGGACTCTACCTGCTGATCAAACCCAACGGCTCAAAACTCTGGTACATGAAGTACCGCGTCGATGGCAAAGAGAAAAAGCTGGCTTTTGGCCCCTACCCGGATGTTTCCCTGTTCAAAGCGCGTCAGCTACGTGATGCCGCACGCGCCAG
+NODE	2239	6	589	589	0	0
+CTTCAA
+TGCCAT
+NODE	2240	5	271	250	0	0
+ACGCA
+TAAGC
+NODE	2241	51	69	69	0	0
+GATGGGCGCCGCGCTTTTAGGGTTGCTCAATGCGGAATTACGCGCCGGCGT
+CCCCCCTGCCGCGCCCGCGCCGGGAGCATTAATCACCTCACGCCCCGTAGC
+NODE	2242	1260	69482	67717	0	0
+CCCCCGGTCTGAAGGTACGGACAGCATTCGCTCATTCATAACAATCTGATTTAAAGGAAAAACTTTATGAATACAGAAAAACAACTGCCGTCCGGCATTGGATCTGAAGTGAAATACACCCAGCAGTTCTGGCTGCTGAGTAACGGAAAGGTCATGACGGAAAAAGACGGGCTCTGTAACCCCTTCCCCCCGAACTGTATTGAATCGGCTCATCCTTTCACTCCGTTTCAGCAGAATCAGTGGATTGAACTGAACACTGTCGGGTCGAATGGACCGGTGAAAGCGACATTTCTTGTGCACAGCGTACTTCATAAGCTGAAACGTCAGGGTGGCTCCCTGAATGATGACTGCCGGCCTGAATACGGCCGGAGCATTGCTCACTGGCACACTGACGTGTTTGTTGAGAAAAAAGCGCTGCCTGACTGGCTGAGAGCATTCCACACTGACGTTTCGCACTCGTAAAGACACGTTCAGCCCGACGGGTCATATTTT [...]
+GCCCTTTTTCCTTTTTTTACACAGCCAGGTTTCCGGTTATCTGCGGGGAAGTGACGCACCTGGCGGGCAGAGAGATATGGAGGTGAAAGTATGTCTTCCTCAGTGAAATATTCTCCGGTTCCGGCGGTGTTAACCCGCCCTGAATTGCTGGCTGAACTGAACCTGCTGATGACCCGGATTGCCAGTGGGTGTCGTGTGGGGGTTCCGGCGTCATGTCGTCCGGTCATTGCGGTGCACGGTGGTTATGTTTCATACAGTTCTCCACGCGCCGGACGTGTTTTTCAGGACGGTTCCCGCCCGGAGATAGTGATGGCCGTCAGTAACCGGGAACGGATGTGCGAATGGTTCAGTCAGGTCTGGCTTCCGCTGCATCTGGCTGCCCTTGAAGGCGATGAGAGTGCTTTTTTCAGTGCGGAGGTCAACATGGTGCGCCGCGAGCTGCAGCGCGTTCCGGGGAATTCAATGAACTGCATGTGCTGGGCAAGCCTTGCT [...]
+NODE	2243	6	589	589	0	0
+CTACAC
+CGACGA
+NODE	2244	51	3670	3670	0	0
+TCCTGCTGCCAATCCTTTTCCCTTTTCATCCGTAATTAACGGAAGCTGTTC
+ATCAAGCTGACAATGGTTGAAACGATAATCAGGGGGATACCGGCCTTAGCG
+NODE	2245	9	1560	484	0	0
+ACGTCGCGT
+ATAGTTATC
+NODE	2246	21	820	738	0	0
+AACCTTATAATCCCGTGGCTG
+ACCTGCCGTAGCCTGGGAGCA
+NODE	2247	1855	104009	103365	0	0
+ACGGGCGAACTGTTTCGACAGGGGTAATATGATGGAAACCTATGCTGTTTTTGGAAATCCGATTGCGCACAGCAAATCGCCATTTATTCATCAGCAATTTGCTCAGCAGCTAGATATTGTTCACCCCTATGGTCGCGTGCTGGCCCCTATTAATAATTTCATTAATACGCTTGATGCCTTTTTCGCGGCAGGGGGAAAAGGCGCAAACATCACAGTACCTTTTAAAGAGGAGGCGTTTGCGCGATCGGATGAGTTAACGGAACGAGCATCGCTGGCGGGAGCCGTCAACACATTAAAACGGCTGGAAGATGGTCGTTTGCTTGGCGACAATACTGACGGTATCGGTTTATTAAGCGATCTCAAACGTTTAAATTTTATCCGCCCAGGATGGCGTATTTTGCTGATTGGCGCGGGCGGCGCATCCCGGGGCGTGCTGTTACCTCTGCTTTCTTTGGATTGCGCGGTCACTATCACTAACCGTACAGCTTCACG [...]
+TCCCATTTTTTTGCACAAGCGTTTTTTGGATCTTTTTTTCTGTTTGTTGATTTTTCATCCCTTTCGCTCCATTCCTGCGCAAAGTGGCGATTTTTTGATGCTATCTCCCCTTGCACAACGCCATTAAAGCAACCAAAGTCTTCATGACTATTCATTTATGATGAGGTAGACATGTCTGACACATTACGTCCTTATAAGGATCTTTTTCCTGAAATCGGTCAGCGCGTGATGATCGATACCAGCAGCGTGGTTATTGGCGATGTCCGTCTGGCGGATGATGTCGGGATCTGGCCGCTTGTGGTGATTCGCGGCGATGTGAATTACGTTGCGATAGGGGCTCGTACGAACATTCAGGATGGCAGCGTTCTTCACGTAACCCACAAGTCTCCATCCAATCCACACGGCAACCCATTAATCATTGGCGAAGACGTTACCGTTGGCCATAAAGTTATGCTGCACGGCTGTACCATCGGTAACCGCGTACTGGTCGGT [...]
+NODE	2248	51	2307	2216	0	0
+ACCTGACGTTGTTTCATCAACGCTGCCATACGCACTGCGTTACGGGCATAT
+TGATGGTTTACACCCACGACTCCATCGGTCTGGGCGAAGATGGCCCGACGC
+NODE	2249	4183	205232	202417	0	0
+GACCCGCGCAAAGCCGCGGTGGAAGCGGCTATCGCCCGCGCCAAAGCCCGCAAGCAGGAGCAGCAGGCCGGAGGCGAACCTGCCGAACCGGTCGATCCGCGTAAAGCCGCGGTGGAAGCGGCCATCGCCCGCGCCAAAGCCCGTAAGCAGGAGCAGCAGACCGGAAGCGAACCTGCCGAACCGGTAGACCCGCGTAAAGCCGCGGTTGCTGCGGCTATCGCCCGCGTTCAGGCAAAAAAAGCAGCACAGCAGCAGGTTGTTAACGAGGATTAAATGGTATTCAGAATCGCAAGCTCGCCTTATACCCATAACCAGCGCCAGACATCGCGAATCATGTTGCTGGTATTAATCGCCGCTCTGCCGGGGATTGCCGCGCAGACGTGGTTTTTTGGTTGGGGAACGCTTTTCCAGATCGTTCTGGCTGCTATCACGGCGCTCGTCGCAGAAGCCATTGTCCTCAGGCTGCGCAAACAATCGGTCGCCAGTCACCTG [...]
+ATCACCTAACCAACCGCCAATGGCGACCAGGCCGTACACCAGCGCACTGAAGGAAGAGAAAAGGGTGATGGAATCCGCTTCTGACATACCCAGTTGTTTTACCAGGTAGACGGCCATAATGCCTTGCAGGCCGTAATAACCAAAACGCTCCCATAACTCTATCGAGAAGATGAGATAGAACGCCTTCGGTTGTTTGAAAGCGTTCAAACTGACGCTTTCAGTTGGTTTTTTGTTTGCAGTAGACACTTTTACCTCTTTTTTACGCCCCGTATTAACAGGGATTGTCTGGCGCGTGATGAGTCAGACTCATCCGTCCGATTGTTATATTGGAGGGGAAACGGCAGGTAATGTTCACTATCTTTCCTCTCCAGACAAGAGCTTTGTAATAATCTGTTACATATAACTCTTCTGGTTGAATCGTCCGATGTCAGAAATGTTATCCAGCGTTAAATTTCTTCATTTGAAGAATGGCAGATTTTTACACTGCAAAAA [...]
+NODE	2250	3	320	320	0	0
+GCA
+CAT
+NODE	2251	2931	148841	147650	0	0
+GAGGTCAGAACCCCATTTTTTGTATGGATACCTGGCGTTGCGCTCTTTATAATCCGCTGCGGTTCTATAACTCAGTTTGAGCTATAGGTTTATGTAAACTCTTTCCGGCATTTCAGGTGCTGAATGAGGCAAGAGGCTTAAAATATGGTTGTTACGCTCGCGTATATCGTACTTTTTTTGGTTTTCTCGTGGGTCATCTTGAGAATTAATCAAAAAAGCGATTCCCTGTCGAAAAGCGTTTTTATCGCTATCTTTTTAGGGGCTGTTATTGGTTTATCCCTGCATTTTATTTCAGCAAATCACACTAAAACTATTATCGAATGGTACAGCATCGTCGGCAATGGTTACGTCCACCTGTTAAAACTGGTCGCTATACCGCTAATTTTTATTTCTATTCTTTCCGCCATCAATAAACTGGAAAATAGCGCCGGCATCGGAAAAATGTCGCTGACGATCGTCGGATGCATGTTATGCCTGGTGATGGTTGCCGGT [...]
+AGCGCGGCGATTTTCATGTGTTGCTGGTGAATGAATGGCTGGCGCAGGAAATAAATGCAAGACTGTCCGTCGAGGTGAGCGGCGAACCGTGGTACTTTTTTGGTCATTGTACGGAAGTCACGGCTTTACCCGGCGCGCCTGCGCAGTGGGCCGCCATCTTTGCCCATTTTGGCGCGAAGCTGGAAAATGTCAGCGTAGGCTGCTGCGGTATGGCGGGCACTTATGGACATGAACTCACCAATCATAAAAATTCGCTGGGAATTTATGAGCTATCCTGGCATCAGGCGATGCAACGTCTACCGCGAAACCGCTGCCTGGCAACCGGCTATTCCTGCCGAAGCCAGGTTAAACGCATTGAAGGTACGGGCGTGCGTCACCCGTTGCAGGCATTACTGGAGATTATAGGTTGATCTGGAAACGTGAAGTGACCCTCGATGCGCTTAATGCGATGGGGGAAGGAAATATGGTTGGCCTGCTTGATATCCGCTTTGA [...]
+NODE	2252	37	2769	2760	0	0
+ACCATGCCTTCGCCTTTGGCGTTAACACAGTCACGGG
+AAAGAAGCTGAGCGTATCTATCGCGCAGGTCTGGCCT
+NODE	2253	1875	113867	112643	0	0
+AATCATCATCGGTTCGCTATAGCCCAGATGGCTAATTTTTACTGCGGAAATCATCGCGGTATAGGCGGAAATCCCCGGAAACATCGGGATCACGGCCGCGACGGTAAACACTTTAGGGTGAGCGAGATACCAGCGTGACCACTGAATACCAATACTGCCGACCAGTAGCGAAGCCATAAACGTCGACCATTCGATATTAAAACCAGCGCTCATCATCAGCATACGCGAGCCATGACCCAGCGCCCCCAGTAGCGCGCACCACGGAAGCGCCCGGTGGGGAACATTAAAGACCATCGCAAACCCGACGGCGGGGATCGCAGACAAGATCATGTCCTGCATTAGCGCCAGTAAAAAGTCGATTATACCCATCCTCGTAGCCCCCATATTGTCATTGACATCACTACGCCCACACAGGTGGCCAGTGTCAACAGGCTGGCGATAGCCCAGCGCGCCAGCCCGGTATTAATATGTCCTTTAAACATATCTGCCACG [...]
+CCCTTTCATTGCCCCATTAATAAAAACACTATTAACAATGATCGCAAAGAAATATAGGCCGAGTGGATTAATTATCCTTGTTTTATTTTTAAATATCTAACATCGATTGCGCTACAATCCACATAGCACAAAAACATGAAATCACTATCGCATAGTTACTCATAAAACCAGAAGCAAGACAATTAAATTAACTAAATTTGCACATTAGCAATTCTAACGAAAACTCATCATATTAATAAATTTAAAATATGAGTTCGTCCTTCATTCATATTGCTGAGTCCTAAAACAAAAGCCCAACAATACTGTCTACCATCCATAAAACCCATGTAATATCTGCGAATTACACTAAGGTATGCCTATTTTTACGCCCGCTGCTCACGCCATTGTGGTTAAACCATTAATGCATATCGTTGATAAAATTCACCACATCATTGATTCAAAAATGAGCGGCCAGGCTGGCATAATGCCTCTATTCTGGAAACGGACATACGA [...]
+NODE	2254	2950	132963	131492	0	0
+ACCGTGCATTACCGTGTACCGGCGGTAAATTGCGCCCAAAAATGGAGGGGATGACGTGTATAATCCCGTTCACGCTTTTTTTGCATGGAACAATTATGCGCATCCTCCACACCTCTGACTGGCATCTGGGACAAAATTTCTACAGTAAAAGCCGCGCCGCGGAGCATCAGGCTTTTCTGGACTGGCTGCTGGAGACCGCGCAGGCCCATCAGGTGGATGCCATTATTGTCGCTGGCGATATTTTTGATACCGGTTCGCCGCCAAGCTATGCCCGAGAACTTTATAACCGTTTCGTCGTTAATTTACAGCAAACGGGCTGTCATCTGGTGGTGCTGGCCGGTAATCATGATTCCGTCGCCACACTAAACGAGTCACGCGACATTCTGGCGTTTCTCAATACAACCGTGATCGCCAGCGCGGGCTATGCGCCGCGGCTACTTCATCGTCGCGACGGTTCTCCGGGCGCCGTACTGTGCCCCATTCCCTTTTTGC [...]
+CCAGCGCGTCGCGGCGGGGTTGATTCGCGCTCAGCTCCAGCGCCTGATAGGCGGCGATGGCGGGGTGTGTCGTCGAGCCGCAAAGCGGACACGGCTGGCCGGACTGTAAGTACGCCCGCTGGCTTTCCAGATCTTTGATGCGCGCCTCCTGCTCGCAAATAGTGCGAACGTCCGCAAGCTCCTGCGCTTTAGTCTTATAACTCAGGCGTTTATCCGCCAGACGTTGGGTGTATTGCGCCTGCTCCTGATGATGACGCGCGATAGCTGCCTGTAGCTGCGCCTGACGCTTTTGTTTCGGGACAATTTGCCCCTGAAGCGCGGCGAGACGATGGCGTAGCGGACGCTGTCGGGTATGCAATGCTCTGGCTTCCGCCAGCGCCTGTGGCGTGAGGTCGAGCGTGAGCGGCGGTAGCGCATCACGCTGACGCGTATCGCTCAGCAACTGCTGTTGCCATTGGCTCAGTTGCGCCCGGTCGTGGGATTGTTGTGTTA [...]
+NODE	2255	51	3188	1517	0	0
+TCCCCTGCGGCAGATGCGCCAGCTTGAAACGCAGCGCCAGCCAGCAAAACA
+ACCACTTATCAGCAAATCATGGCGGTCGGCATTTTGTGTGGCATTGGCTTT
+NODE	2256	392	16320	16172	0	0
+CGCGAGAAATGTTGCATGCTGTAGGGCTGGAGCATCGCGCAACCCATCGACCTTCGGAACTTTCCGGCGGTGAGCGCCAGCGTGTCGCGATAGCGCGCGCGTTGGTGAATAACCCGCGTCTGGTACTGGCGGATGAGCCGACCGGTAATCTGGATGCGCGTAATGCCGACAGTATTTTTGAGCTTCTGGGCGAGTTAAATCGTCTGCAGGGAACCGCGTTTCTGGTGGTGACTCACGATTTGCAACTGGCGAAACGTATGAGCCGCCAGCTTGAGATGCGCGATGGCCGCCTGACGGCGGAACTGAGCCTGATGGGGGCTGAGTAATGGCGTCGCCTTTATCATTGTTAATTGGCTTGCGTTTCAGCCGTGGACGGCGGCGCGGCGGTATGG
+GATAAAGGCGACGCCATTACTCAGCCCCCATCAGGCTCAGTTCCGCCGTCAGGCGGCCATCGCGCATCTCAAGCTGGCGGCTCATACGTTTCGCCAGTTGCAAATCGTGAGTCACCACCAGAAACGCGGTTCCCTGCAGACGATTTAACTCGCCCAGAAGCTCAAAAATACTGTCGGCATTACGCGCATCCAGATTACCGGTCGGCTCATCCGCCAGTACCAGACGCGGGTTATTCACCAACGCGCGCGCTATCGCGACACGCTGGCGCTCACCGCCGGAAAGTTCCGAAGGTCGATGGGTTGCGCGATGCTCCAGCCCTACAGCATGCAACATTTCTCGCGCCCGAGCGTCAATCTCCGCCGGTTTCTTTTTGCCAATCAATAATGGCATC
+NODE	2257	374	17834	16939	0	0
+CATAGTCAGCGCGCATTGCGGAGGCGATTTTCCCTTCTCCCGCCGCGCCAATAAAGACGCCATGTTTCAGCGCGGCAGGGACGCTCGCCAGGTAGTTTTCCGTATACCAGCCGTTACGTAATAGCGTGTGAGGAATACCTGACTCAGCCAGCATCTTTTCCGTTTCAATATGTTCATCGGCGAGCGCCAGCGGCGATTTATCCGCATGTAGCAGGCTGGTATAGGCGATGAATTTCACCTTCGCGGCAATGGCGGCCTGAATAACGTTGCGGTGCTGCGCGGTGCGTTGTCCCACTTCGCTGGATGATATAAGCAGCAGTTTATCAACGCCCTGTAAGGCGGTGGTCAGCGCGGCTTCGTTAGCGTAATCCGCC
+ATAAACTGCTGCTTATATCATCCAGCGAAGTGGGACAACGCACCGCGCAGCACCGCAACGTTATTCAGGCCGCCATTGCCGCGAAGGTGAAATTCATCGCCTATACCAGCCTGCTACATGCGGATAAATCGCCGCTGGCGCTCGCCGATGAACATATTGAAACGGAAAAGATGCTGGCTGAGTCAGGTATTCCTCACACGCTATTACGTAACGGCTGGTATACGGAAAACTACCTGGCGAGCGTCCCTGCCGCGCTGAAACATGGCGTCTTTATTGGCGCGGCGGGAGAAGGGAAAATCGCCTCCGCAATGCGCGCTGACTATGCCGCCGCCGCCGCGCGCGTCATCTGTGAAGAGGGTCACGCCGGGAATGTC
+NODE	2258	41	1872	1872	0	0
+ACCCGCTTCCGGGATATTGGAGAGCAGGCCGCCGAAGCCAA
+ACCGCGCTGGAGAGCCTGCTGGCGCATCACGACGCCGGGCA
+NODE	2259	1553	76623	76199	0	0
+TCGCTGGTCGGGGTTCCGTTCTTTTTAAGCATTGTATTGCGACATCGGGGGAGTCTCTGATGCGCGGGTTAATGCTCCGCTCATTTAGTGCCGGCTATTCCACTCAGCCAGTTATTGCAGACCTCAACGTTCCCTTACTGCCGCGCGGGAAAATTACCATTTTGCTGGGGCCGAACGGCTGTGGTAAATCGACGTTACTACGTTCGCTGGCCGGGCTGAATAACGCCGACGGCGAGGCGCTGCTTGATGGCGAAGATCTCATGTCGTTATCGTTTGCCGAGCGGGCGCAGAAAGTTGTGTTTTTGCCGCAGTCATTACCGCAGGGCGTACATCTGCATGTACTGGAGTCGATTATCGTGGTACTGCGGGCATCAGGCGGCAGAGACAATGCGCAGGGCAGAGCGCAGATACTGGCTATCCTTGAGCAATTGGGCATAACGCATCTGGCGTTGCAGTATCTCGACCAGCTTTCCGGCGGTCAGCGGCAGTTAG [...]
+ACTGAAACGCGCTATCCATACGCTGTGGAACGTACTGGATGAACTGGATCAGGCGTGGCTACCGGTGGAAAAATCCTGGAAACTCAATGAACGTCACTATGGCGCGTTGCAGGGGCTGAATAAAGCGGAAACGGCAGAAAAATATGGTGACGAGCAGGTTAAGCAGTGGCGCCGCGGTTTTGCCGTGACGCCGCCGGAACTGACCAAAGATGATGAGCGTTATCCGGGTCACGATCCACGTTATGCCAAACTGAGCGAGAAAGAGCTGCCGTTGACCGAAAGTCTGGCGCTGACCATCGACCGCGTTATTCCTTACTGGAACGACACCATCCTGCCGCGTATGAAGAGCGGTGAGCGCGTGATCATCGCCGCTCACGGTAACTCATTGCGTGCGCTGGTGAAATACCTGGATAACATGAGTGAAGATGAGATTCTTGAGTTAAACATCCCGACCGGCGTTCCGCTGGTGTATGAGTTCGACGAAAACTTCAA [...]
+NODE	2260	51	2774	2525	0	0
+ACCAGCCGTTAGATACTCTCATCATTAAAGACAACACTATCACGGTAAAAA
+TAGGGTAATATAACCAAATTATTACCATCTGAATTATTAGGGCAGTTATTA
+NODE	2261	322	17429	16839	0	0
+GGGTAGGCGATCAGCTTGCCGTTATAGCGTACCGCATCCCAGGTGAACGGATAGAGTTTGTCCTGAAACGCTTTATCCGGAGTGACCTCCGCCAGCAGACCAGACTGCGCGTAGCCGCCAAAACGGTCGTGCGCCCAGAAGATAATGTCAGGACCGTCGCCGGTGGCTGCCACCTGCGGGAATTTCTCTTCCAGCTTATCCGGGTGCTCAACGGTCACTTTAATGCCGGTGTCTTGCTCAAATTTTTTACCGACCTCGGCCAGACCGTTATAGCCCTTGTCGCCGTTGATCCAGATAACCAGTTTACCTTCTTCAATTTTGG
+TATAACGGTCTGGCCGAGGTCGGTAAAAAATTTGAGCAAGACACCGGCATTAAAGTGACCGTTGAGCACCCGGATAAGCTGGAAGAGAAATTCCCGCAGGTGGCAGCCACCGGCGACGGTCCTGACATTATCTTCTGGGCGCACGACCGTTTTGGCGGCTACGCGCAGTCTGGTCTGCTGGCGGAGGTCACTCCGGATAAAGCGTTTCAGGACAAACTCTATCCGTTCACCTGGGATGCGGTACGCTATAACGGCAAGCTGATCGCCTACCCCATCGCCGTTGAAGCCCTCTCCCTGATTTATAACAAAGACCTCGTCCCAA
+NODE	2262	18	1622	1622	0	0
+GAAGCGAGAGAACGTTGC
+TCATCCTCGTCAGGCTTC
+NODE	2263	3	570	233	0	0
+AAA
+CTC
+NODE	2264	2	717	56	0	0
+GT
+GA
+NODE	2265	49	5896	5862	0	0
+ATATCGTGCTGACTTATCTGATGGAACTTTACCAGATGGATTTTGCTGA
+CTGGTGAACGCTGCTGCCATACTTATCCGTCAGTGTGATTGATTTACCA
+NODE	2266	15	602	602	0	0
+CGATGGCGGACAAAT
+CGCCACTGGCTGGAG
+NODE	2267	51	2274	2274	0	0
+CCCGCTATAGCGGTCATCTGATTGACTTCAATGTGCGCGCCGAGCGTATGG
+GATTTGTCCGCCATCGGCGACAGTAACTCCTCGGCGGTCACCGTCTCGTAG
+NODE	2268	32	1024	1024	0	0
+GAGCGGCAGCACCAGAATGCCCAGCAGGACGC
+TTCGCCGCCGCGGCGATGGACGCGGCATCGAT
+NODE	2269	79	2557	2557	0	0
+CGCCGCGCCGCAGGCCGGCCGTCAGCGCAACGCCCGGCGCGGCGAGAAACCCCAGCGCCGGCGTGCCGAGCAGCAGCGT
+TGCGCTGACGGCCGGCCTGCGGCGCGGCGGCGTCCTGCTGGGCATTCTGGTGCTGCCGCTCAGTGTCCCGGTGCTGATT
+NODE	2270	47	76	76	0	0
+GGAATATTTACAAGCCTCGCAATCCGAATGGGATATATTTATTGAGG
+CCCCCCTCCACTACCTGACGGTCATAGGCTTTATTCGCGTTAAATAA
+NODE	2271	51	177	177	0	0
+GTGGCGCGCTCTTTAAGGCGCCAACGTTGCCGGCGCTTTTCCCGCCGCCTG
+CCCAGCCACTACACATTGCAGCTCAGTAGTTCTTCAAATTACGACAACCTG
+NODE	2272	25	3303	2023	0	0
+GTCGTTGGCACCAACCTGGATGGTC
+AGCAGATCAACTCTCAGACCCTGGG
+NODE	2273	51	6088	3080	0	0
+AGGGTGTTGTCCTGCGCCAGGACTTTCACGCCGTTGAACTGAGTCTGGCCG
+TGACCATCCAGGTTGGTGCCAACGACGGTGAAACTATCGATATCGATCTGA
+NODE	2274	138	5855	5855	0	0
+ATCAGCGCATCCAGCATAATGTCGCCCGTCAGCGACGCGAAAATGACCTGCACGCCATTAGCTTGAGTGATCGGCGTCACCGCCTGCACAATCAGCTCCAGCGCCAGTAGAATCAGGCCAAGCCCGATACCGACGCGA
+TGCAGGCGGTGACGCCGATCACTCAAGCTAATGGCGTGCAGGTCATTTTCGCGTCGCTGACGGGCGACATTATGCTGGATGCGCTGATTGGCGCGATGTTCGCTATTATCAGTTATTCCAGCCTGGCGGCGGTGTTGC
+NODE	2275	156	572	572	0	0
+TGAGCTGACCTTAGGACACCTGTGTTATTCTTTAACAGATGTGCCGCCCCAGCCAAACTCCCCACCTGACGTTGTCTCCCGCGTAGCTCGCTGCAAGCAGCTTCAAGCTGGGGCGGCACATCTGTTAAAGAATAACACAGGTGTCCTAAGGTCTCA
+TTGAAGCTGCTTGCAGCGAGCTACGCGGGAGACAACGTCAGGTGGGGAGTTTGGCTGGGGCGGCACATCTGTTAAAGAATAACACAGGTGTCCTAAGGTCAGCTCAATGAGAACAGAAATCTCATGTAGAACAAAAGGGTAAAAGCTGACTTGATT
+NODE	2276	51	3988	3988	0	0
+TTGTAGGCCCATAAAATTACATAGAGAAGCGACGCGCTGATAATTAAGAAT
+ATCCCCCTAATAATTAAAAAGGGGTGTGAGTATGAGTAAATTTAAATTTAA
+NODE	2277	100	3953	3160	0	0
+GCCCACCACCCGCGCCGCCGTGACCAGCCCGCTGATATGTCGTTTACCGCCACCATCCAGTTCGATGTTGACGCACAGATCTTTGCCCACCATCGGTTTG
+GCGGTAAACGACATATCAGCGGGCTGGTCACGGCGGCGCGGGTGGTGGGCCATGAAGGGCGTTCGGTTACCTATGAGCTGCGTATGGAGCCGTGGGTAAA
+NODE	2278	71	5523	4424	0	0
+AGCGGCAGGTTGGCCGCCGGGGAGACATAGCCCAGATTCAGGGTGTCGGGCGTTTTTAGCTGTACCACATA
+CCCGGCGGCCAACCTGCCGCTCAAACCGATGGTGGGCAAAGATCTGTGCGTCAACATCGAACTGGATGGTG
+NODE	2279	4054	244049	241662	0	0
+CACCGTCTCGCCGGTGGCCAGGTTGAGCGCCTCAAGGTGCGGTGCCGCAACGTGGATGATATTCAGCGATGACAGGGCTTTTTGGCCGACGGCAATAAACTTTGTCGTCAGACGGTAGCTCCCGGCCGCCGGCGCTGGCGTCACGTATCCGCAGGATTGAAGCCCCTGCAACAAACGATGGACGGTACTCTTGTTCAACCCCGCCAGCTCCGACAGGTGCGCCAGTGGGCAACCGTTCGGGTAGTTACTCAAAATTTCTATCAACATCAGGCCACGAAACAGGCTCTGACTCCCCGCAGGCTTCTCTTTATCGTTGTTCTGGCTCATCAGAAAACTCTCTCCTTTCTTGGGCGATCAGATGGTAGCTCAAAGTGTGTTGCAGTTCACGATATCAGCATAAAAAACATAACCCGATGATTTTAATCGTTTTTAAAAACCTTCTCTGGCGTTGCCATGTCAATTTTTGATCTATATATTTGGAACTACATTTCG [...]
+GGTTGATCGGGTAGTTTGCGGAGCGCATCATCGGCACCAGCAGCGCGGCGACCGCAGCGGTATCTGCTACCGCAGAGCCGGAAAGGCTGGCCATAATCATTGCCGCAATGACGCCCACGTAGCCCAGGCCGCCGGGCTTATGGCCGACCAGCTTCATCGGCAGGTCGACAATTCGCTTTGACAGGCCGCCCGCGTTCATGATTTCACCGGCCAAAACAAAAAAGGGAATGGCCAGCAGGGAGAAACTGTCCGCGCCGTTAACCAGGGTTTGCGCCATAATCTGCACGTCAAACATATCCAGGTATGCCATCAGAGCAGCGCCGCAAAGCAGCAGCGACCAGGCGATGGGTAAACCTATCGCGATCCCGCCGAGCAGACAGCAGAGAAATATCACCACGGCCATGATTAGGCTCCTTGCTGTGGTTGTTGAAAGGAATCGTTATGCGTTATTAAGTGATAAAGCCGACGCAGCTCGATTAACGCGATGGCAAC [...]
+NODE	2280	51	1567	1157	0	0
+ACCTGCTGATAGCCGATAAACGGCGTCAGCAGGCCCGCTATTGGTCCGGTA
+TCTTTCTTCTGGCCGCGGCCTGCGCGCTGCTGGGCGCGGCGGTTGTCCATC
+NODE	2281	47	2649	2649	0	0
+ATCATGCGACGAGTGGGCCAGCAGCGTAACCACTTCATCCAGCGTGT
+GGGCTGGAGTTGACGTTAAATATTAAAAACGACGTCCCGGATAATGT
+NODE	2282	51	3295	3295	0	0
+TGGCAGCGGCGGCACCATTACCGCAGGCTACGACTTCAAGGCCAACAAAGA
+ACCCTGCTGGTTCTGCACCACGTATTCCTGCTTCACGGTGCTGAAGGAGAG
+NODE	2283	556	29242	28812	0	0
+GGCATCGGCTTCGCATAGAGATAGCCCTGTAACATTTGCACGCCATGCTGGCGCAAATGCTGTGCCTGCGTCTGGTTTTCGACCCCTTCCGCCACCAGTTCAATATTCAGTCTTTGCCCCAGCGCGATAATAATATCGGTCACCGTTGAATTGACCGCATCGGTACCGATGGCGGCGGTGAAGGATTTATCGATTTTCAAAATATCCGGCCGCAGTTTTTCCAGCCAGGAGAGCGAGCTGTTTCCTGTGCCAAAATCATCGATGGCTAACTTGACACCTTTACGATGCAGCTCGCGCATCAGGCGGTAATCAACGTCAAGCAACGCGTCGCGTTCCGTGAGCTCCAGCACCAGTTGCTGAACAGGTTCCGCACTAAACCAGTACTGATTAAGATCTTTGAGAAGCACGCCGTGTCGGAAATGGCTTGCCGCCACATTGATGCCGATATGAAACTGATGGTTGATGGGGAAGTAGTGCCGCTGCCGAATGGTT [...]
+TATGTGATTGCGGAAACCATTCGGCAGCGGCACTACTTCCCCATCAACCATCAGTTTCATATCGGCATCAATGTGGCGGCAAGCCATTTCCGACACGGCGTGCTTCTCAAAGATCTTAATCAGTACTGGTTTAGTGCGGAACCTGTTCAGCAACTGGTGCTGGAGCTCACGGAACGCGACGCGTTGCTTGACGTTGATTACCGCCTGATGCGCGAGCTGCATCGTAAAGGTGTCAAGTTAGCCATCGATGATTTTGGCACAGGAAACAGCTCGCTCTCCTGGCTGGAAAAACTGCGGCCGGATATTTTGAAAATCGATAAATCCTTCACCGCCGCCATCGGTACCGATGCGGTCAATTCAACGGTGACCGATATTATTATCGCGCTGGGGCAAAGACTGAATATTGAACTGGTGGCGGAAGGGGTCGAAAACCAGACGCAGGCACAGCATTTGCGCCAGCATGGCGTGCAAATGTTACAGGGCTATCTCTAT [...]
+NODE	2284	166	10507	10465	0	0
+ATATTATTCAGGACGGGCTATTGCCCGTCTTGTCATTTATGCAAGCTCCTGATTCAATATCTGGCAATTAGAACATTCATTGAGGAAATATTATGCGTGCTTTACCGATCTGTTTATTGGCACTCATGCTGGGCGGTTGTTCCATGCTAAGCAGATCCCCTGTTGA
+TAAACAGATCGGTAAAGCACGCATAATATTTCCTCAATGAATGTTCTAATTGCCAGATATTGAATCAGGAGCTTGCATAAATGACAAGACGGGCAATAGCCCGTCCTGAATAATATTACAGATTGTGGAATCAGCCTAAAACTTACCAGCCTTTCACCGCGCCGCC
+NODE	2285	51	118	118	0	0
+GTTCCTGAAAGACTTAAACGCCAAAGGCACCACCATTATTCTCACCACCCA
+CCCCCACATCGAGCGACGCAATTCGATATCGACACCCGCCGTCGGCTCGTC
+NODE	2286	102	5732	5732	0	0
+GCTGGCGATACATACCGGTCAAATCCGTGCCGAACTGGCCCGCAAGGGAACACCTGTCAGGCCTTATGACCAGATGATTGCTGGCCATGCCCGTAGCCGCGG
+TGTTCCCTTGCGGGCCAGTTCGGCACGGATTTGACCGGTATGTATCGCCAGCCTGAAGGGGCATGTTGGCTTTGACGATCAGGCAAAAAACAACGGCGAATA
+NODE	2287	13	535	535	0	0
+TGGCGGCGATGTC
+GAGTGACATCGCC
+NODE	2288	11	372	372	0	0
+ACTCCGCCGGA
+ATCGTCCGGCG
+NODE	2289	3	206	206	0	0
+CGA
+GCC
+NODE	2290	37	1145	1139	0	0
+CGGTGGCGATGTCTCTCCGCCGGACGATGGCGGCGAT
+TGACATCGCCGCCATCGTCCGGCGGAGTGACATCGCC
+NODE	2291	1444	71907	70358	0	0
+AGGGCGACGCGGCGCAGTACTTGCAACGTTCGCGCGAGGTGCAGAACGAGCAGCAGCAGGTATATACCCTGGCGCGAATTGAAAATCAGATTGTTGACGACCTGCGCGACAGATTGAATGAGCTCAAGTCTGGCAATAATGACGGGATGCTGGTGGAGACCCATATTCGCTATCTGGAAAACCTAAAAAAAACGGCGGATGAGAATATTCGTGCGCTCGATGACTGGCCCAGTACGATCACGCTGCGGCAAACCATCGACGAACTATTGGAAATCGGGATGGTAAAAAATAAGATGCCCGATACCATGCGCGATTATGTTGCGGCGCAAAAAGCCTTACTGGACGCCAGCCGCGCCAGAGAGGCTACGCTAGGGCGCTTTCGCACGCTGCTTGAGGCGCAGTTAGGTAGTAGTCACCAGCAAATGCAGACGTTCAATCAACGCCTGGAGCAGATTGTCCGCGTTAGCGGCGGGCTTATTTTAGTGGCGACGC [...]
+CGTCGACGCCAGACGCAGGTCGCCCTTCATTTGCGCCATCAGCGACACGCTAATCGACAGCCCAATACCCAACCCGACAGCTTTACTGGTGGTAAACGGCTTGAGTAAAGAGGGCAACAGCGCCACAGGCCAGCCAGGGCCGTTATCTGCAATATAAACCTCCAGCGCCTCTCCCTGCGTCTGCCACGTCACCGCGATCGCCGCATCATGCGAACAGGCGTCAAGCGCATTCGCCAGCACATTCACCAGAACCTGCTGAATACGCACTTCATCGCCGCTGACCCATACGGTGTCGGTTGGCAGTGAAAGCGCTCCCTGCCGGGATTGGTGGCGCATGGCTAATAGCTCCCATGCCGCCACAAAGGTTTGGCGCAGATCAACGGGATACAATGGCGTTTCCAGCTCCGCCCGGCGGGTAAACTGCCGCAGCGAACGGATGATGGCGTCAATCCGGTTAATGAGCCCTTCCGCTTTGGTGAGCGTATTTCTCGC [...]
+NODE	2292	51	3676	3676	0	0
+TTATGGTTTTTATTTCCTTAATTAACCAGAGTTAATAAAAATAATTAAATT
+AAGCTTATAAAAGCAAGGGGGAAAGTGTGATGTCTATTCCAGACGAGTAAT
+NODE	2293	51	3487	3487	0	0
+GCCCCCTTTTTCTCCGTCGCCGAAGCCTGGGTCATGTTGGTCATAAACATT
+CTAGCGATTTACTCAGATTCAAAATCTTTGGTATGCCGCTACCGCTTTATG
+NODE	2294	34	1708	1622	0	0
+GGTGAACGCTTTCATCCCGGCCATAAAACCGATG
+GTATTGGCAGCATTCCGGGCGCGATGATCGGCGG
+NODE	2295	51	202	202	0	0
+GTTGCCACCACCGCATCATAACGCTGCGCCAGAATCCACGCCTGCTGGATA
+CCCCGCCGTATATGGGCGGGAAAGGAATGAATGGCGAACTGAAAGAGTTTG
+NODE	2296	13	6699	4987	0	0
+TGTTAAAGAGCAG
+GATTCTTGACGTC
+NODE	2297	17	860	860	0	0
+GAAATGTCCATAAATAG
+TCGGTCAGGTGATGGGG
+NODE	2298	51	2739	2739	0	0
+CGGCAGCGGCGGCACCATTACCGCAGGCTACGACTTCAAGGCCAACAAAGA
+GCCCTGCTGGTTCTGCACCACGTATTCCTGCTTCACGGTGCTGAAGGAGAG
+NODE	2299	39	4211	4211	0	0
+AATTTAACGGTTGTTTTTCCGGCCAGATTTATATCTGGC
+CTTGAAGTCGTAGCCTGCGGTAATGGTGCCGCCGCTGCC
+NODE	2300	1268	75261	74540	0	0
+GGCTGCGTACCGCGTCGTTGCTAAACGTGGTCGTCGCGCATAGTGGTTGTCTGGAGAGCAGCATTAACCATTATGTTCAGCAGGAAACCTTGTGCCAGCAAGGTGAAGAGCGCCAAATTTCTCTGGCGCTTCAGGCCATTTATTTCGATAGTTTGCAAGGAGAGCAATGATGGACTTTTTCAGCATTAACAATGTAATGGTCAACATTCCTCTCGGCGAGGGTGGGTATGCGCTGTCGTGGATTGAGGCTATCGGCACCGTCTTTGGCTTATTGTGCATCTGGTGCGCCAGCCGGGAAAAAATCGTTAATTACCTGTTTGGTTTGATTAACGTCACTCTGTTTGCCGCCATCTTTTTTCAGATTCAACTGTATGCCAGCTTGCTACTTCAGGTGTTTTTCTTTGCGGCGAATATTTACGGCTGGTACGCATGGAGCCGGCAGAATGACGCCCGGGAAGCCGCTCTGAAAGTACGCTGGCTTTCTCGTCAACA [...]
+TTACGGCCGAGCGTCTGCCCGACGCGTTCTTTCATCTCACGCGCTGCCTTGTTGGTAAACGTCACCGCCGCAATATGCCGGGCCTGATAGCCGCATCCGCGGATCAGGTGGGCGATTTTATTGGTAATTACGCGAGTTTTACCAGAACCCGCTCCTGCCAGCACCAGGCAGGGTCCGGTGACGAATTCGACAGCGTGTTGTTGGCCGGGATTTAAACGCATGGGAATAGTGCTCAATCTTCGAACGGGGGAGGGATTGTAGCAGAAAGCGAGGCCCAGAGAAGACCAGGCTGCTTTTTCAGGCAGCCTGGAAAAGGTCAATCAGCAGGCTCTGGCGGCAAGCGGCGTATAGCCATTACGCTGTGCGCTCTTGATCCAACTGTAAGAACCCATTAGCGCGATCGCCGTCAGCAGAACATACTCAAGCGACATCGCATAAACGCCCTGTACTGCATAGATCACGACGCTAATTACATCAATAATCACCCACAGC [...]
+NODE	2301	51	3337	3337	0	0
+ACCTGCCGACCAGATCGATAAAGTCCCACTGGGTATAGCGGGCTAATGCTG
+TATGGGATAGCCTGGCATGAGAAAACGCTGGGACAGCTTTTTTGCGATGAT
+NODE	2302	45	154	154	0	0
+ACTGGCGACCGCTGGAAGACGATAATTTTCGTCTGGGACTGGGCT
+TCCCAGCCATAACCGCCTATGGGTTCCCATTTGTTAAATGAATCT
+NODE	2303	51	2268	1068	0	0
+ACTCCTGTCAGGTGTGGAAACCCTGCCACAAACGGTCATGGCAGGTTAAAG
+TATGTAATGTCCAAGCAACAGATCGGCGTCGTCGGTATGGCAGTGATGGGG
+NODE	2304	566	29777	29435	0	0
+CGGGAGGGATGAACCATCGGCCTGCAGCAGTTCAAGTGTACTGTCAATATTGGCAGTGACGGTAATATCCTTCTGAACCGCAGAAACAGAAAAAGAATAAACGGTGGCCAATGCCACAGCTGCGGCAATAAAAGATGTTTTCATGTTCATAAAAAATAACCTTGCTTTGTTGTTTATTACAGTGATATATGTACACTCGGTATACATCCGCTCCCCCTGAGAATAAATGTAGGGTATAGCGTACGCTCCGTGTGTTTTTACTTTCCGGCTGCTGTTAAATCAGCAGAGATTACCGGTGAATTTGCACCCGTACGATATTCCACACGAAATGCATTACTTTTTATTCCGGCCGGAATATCAGCACTCCCGCCGGGATAAATACTTTTGTCTATATTCTGCCAGTGGCATGTGGTGTCGCAGTTGCCGGCCCGAATAAGAGAAAGCCGGGTATTTCCCGTATTCAGCAGGTGGTGACCGTTCGTTACCAGCGCA [...]
+TGTTTCTCCGTCAGACCCCAGGCCTGCGCTGGTAACGAACGGTCACCACCTGCTGAATACGGGAAATACCCGGCTTTCTCTTATTCGGGCCGGCAACTGCGACACCACATGCCACTGGCAGAATATAGACAAAAGTATTTATCCCGGCGGGAGTGCTGATATTCCGGCCGGAATAAAAAGTAATGCATTTCGTGTGGAATATCGTACGGGTGCAAATTCACCGGTAATCTCTGCTGATTTAACAGCAGCCGGAAAGTAAAAACACACGGAGCGTACGCTATACCCTACATTTATTCTCAGGGGGAGCGGATGTATACCGAGTGTACATATATCACTGTAATAAACAACAAAGCAAGGTTATTTTTTATGAACATGAAAACATCTTTTATTGCCGCAGCTGTGGCATTGGCCACCGTTTATTCTTTTTCTGTTTCTGCGGTTCAGAAGGATATTACCGTCACTGCCAATATTGACAGTACACTTGAACTGCTG [...]
+NODE	2305	25	4482	4412	0	0
+TCCAGCCATACAGAGAAAAACAGTA
+AATGTAGTGGGGCAAAGAAAAAATT
+NODE	2306	536	31687	31372	0	0
+TCTTCTGGATTCTCATGCTCGGTATACACCACGCCGGAACAGCAGTAGCCAAACAGCGGCGCGCGCCAGTTTCGCTGGTTGTTAATTTCATTGAAGGTCATCCAGTATTTGACCTTATGTTTGTAGCGTTCAAACACGACTTCAGCAAAGCGGACAAAGAAATCAACCACTTTACGATTGGTCCAGCCGCCGTAGTGCTGTACCAGATGTAATGGCATTTCAAAGTGAGAAAGGGTAATGACCGGTTCGATGTTGTATTTGAGTAACTCATCAAACATGTCGTCGTAGAATTTCAGACCGGCCTCGTTTGGCTGGGATTCGTCGCCATTCGGGAAGATACGCGTCCAGGCAATAGAGGTACGGAAGCATTTGAACCCCATTTCGGCGAAAAGACGGATGTCTTCTTTGTAATGTCCGTAAAAATCCACCGCCTCGTGGTTCGGATAGTATTTGCCAGCAACGACATTCTGGGTGATTTCGCGTGGCACGCCG [...]
+GCCACGCGAAATCACCCAGAATGTCGTTGCTGGCAAATACTATCCGAACCACGAGGCGGTGGATTTTTACGGACATTACAAAGAAGACATCCGTCTTTTCGCCGAAATGGGGTTCAAATGCTTCCGTACCTCTATTGCCTGGACGCGTATCTTCCCGAATGGCGACGAATCCCAGCCAAACGAGGCCGGTCTGAAATTCTACGACGACATGTTTGATGAGTTACTCAAATACAACATCGAACCGGTCATTACCCTTTCTCACTTTGAAATGCCATTACATCTGGTACAGCACTACGGCGGCTGGACCAATCGTAAAGTGGTTGATTTCTTTGTCCGCTTTGCTGAAGTCGTGTTTGAACGCTACAAACATAAGGTCAAATACTGGATGACCTTCAATGAAATTAACAACCAGCGAAACTGGCGCGCGCCGCTGTTTGGCTACTGCTGTTCCGGCGTGGTGTATACCGAGCATGAGAATCCAGAAGAAACCAT [...]
+NODE	2307	51	2632	2632	0	0
+GACTTCTACCACGAAATGACCGACTCCAACGTTATCGATAAAGTATCCCTG
+CGTTACCCTCACGAGTACGTTCACCTACGCCCGCAAACACAGAGTAACCGG
+NODE	2308	51	2561	2561	0	0
+ACCGCCGCTCTGGCAGCGTCTGGTGAGCGTCAGTGACTATACGCCGCCCTT
+TTTTTGCAGGCAGCGACCGCAGGGGAGCGAAGGATGCGCGGCGGGTAATCC
+NODE	2309	118	4510	3068	0	0
+GAGTTTACTGGTGCATCAGCTTAAATTTACCCGCCGCAGCGAAATTGCCGCCGCACTGGCGCGTCTACTGTTGCAGGAAGTCCTCATGGCGCGCCGCAGCACTGGCTTGCAGCTTCCC
+GTAGACGCGCCAGTGCGGCGGCAATTTCGCTGCGGCGGGTAAATTTAAGCTGATGCACCAGTAAACTCAAGGGCGGCGTATAGTCACTGACGCTCACCAGACGCTGCCAGAGCGGCGG
+NODE	2310	51	1336	1305	0	0
+CGGGAAGCTGCAAGCCAGTGCTGCGGCGCGCCATGAGGACTTCCTGCAACA
+GACAGAATCGTCAGCGTTCCGCTCTGGTCGCGCCGACACTGGCGGCGGGGA
+NODE	2311	51	3036	2944	0	0
+CTTTGTACAGAGTCGCCATGGTAATTACTTATTACTGACGAATAAAGAGCG
+GCCAGCCACTGGCGCAGGCAGATACTTGCTTTCATCATGAGAAGGCGCAAT
+NODE	2312	180	7949	7860	0	0
+CTTCAGCAGGTCCGCCGGGCGGCAGGTCACCGGAGCGCCCCCGTCCAGCACGCGGGCCTGCAGTGCCGCGTTTACCGGCACCGGAGTGTGGCCGTATTCGCCTTTCAGAATGCCAGCGGTTTCTTTGGCAATGGTTTTGTAGCGCTCGCCGGTCAGGACGTTGAGCACCGCCTGGGTGCC
+TGCCAAAGAAACCGCTGGCATTCTGAAAGGCGAATACGGCCACACTCCGGTGCCGGTAAACGCGGCACTGCAGGCCCGCGTGCTGGACGGGGGCGCTCCGGTGACCTGCCGCCCGGCGGACCTGCTGAAGCCGGAACTGGCTGAACTGGAAGCGGACGTCAGGCGCCAGGCGCAGGAGAA
+NODE	2313	62	4163	4141	0	0
+CGGGCAAATCTGCACACCTTTGAGAGCAGATGTCACCACGGTTTTACGTGATGATGAAGGCA
+CAGATTTGCCCGTACATCAGGGATGTTTCCCTTCAGTACTCACAGCTCCTTTCAGGCTACGG
+NODE	2314	471	23685	23624	0	0
+CGTGAACAACTACTGGAGGTTGGCGATTTCTTAAAGAAACTGCCGAAACCTTACGTCATGCTGTTTGACTTACACGGCATGGATGAACGCCTGCGTACGCACCGTGACGGGTTACCCGCCGCGGATTTTTCCGTTTTCTACCACCTGATTTCCATTGAGCGTAATCGCGATATCATGCTCAAGGTGGCGTTGTCTGAAAACGACCTGCGCGTGCCGACCTTCACTAAACTTTTCCCTAACGCCAACTGGTACGAGCGTGAGACCTGGGAGATGTTTGGTATTGATATCGAAGGTCACCCGCACCTGACGCGCATCATGATGCCGCAAACCTGGGAAGGCCATCCGCTGCGTAAAGATTATCCGGCGCGCGCGACCGAATTCGACCCGTTTGAGCTGACCAAAGCCAAGCAGGATCTGGAAATGGAAGCGCTGACCTTTAAGCCGGAAGACTGGGGGATGAAGCGCGGGACT
+TTTCCAGATCCTGCTTGGCTTTGGTCAGCTCAAACGGGTCGAATTCGGTCGCGCGCGCCGGATAATCTTTACGCAGCGGATGGCCTTCCCAGGTTTGCGGCATCATGATGCGCGTCAGGTGCGGGTGACCTTCGATATCAATACCAAACATCTCCCAGGTCTCACGCTCGTACCAGTTGGCGTTAGGGAAAAGTTTAGTGAAGGTCGGCACGCGCAGGTCGTTTTCAGACAACGCCACCTTGAGCATGATATCGCGATTACGCTCAATGGAAATCAGGTGGTAGAAAACGGAAAAATCCGCGGCGGGTAACCCGTCACGGTGCGTACGCAGGCGTTCATCCATGCCGTGTAAGTCAAACAGCATGACGTAAGGTTTCGGCAGTTTCTTTAAGAAATCGCCAACCTCCAGTAGTTGTTCACGCTTGACCCAAACAACGGGGATACCGGTGCGGGTCGCCTGAACGGTAAAGG
+NODE	2315	333	16977	16832	0	0
+CTATGTTCACAGTGAAGATCGCCTACGCTATCCGGAATACCGCGCGCCGGGTTCCGACAAGTGGCAGCGCATTAGCTGGGATGACGCTTTCACTCGTATTGCTAAATTAATGAAAGCCGACCGCGACGCCAACTTTATTGAAAAGAACGAGCAGGGCGTCACGGTTAACCGCTGGCTCTCTACCGGAATGCTGTGCGCCTCGGCGGCCAGCAATGAAACGGGGATGCTGACGCAGAAGTTTGCGCGTTCTCTCGGTATGCTGGCGGTAGATAACCAGGCGCGCGTCTGACACGGACCAACGGTAGCAAGTCTTGCTCCAACATTTGGTCGCGG
+GCGCGCCTGGTTATCTACCGCCAGCATACCGAGAGAACGCGCAAACTTCTGCGTCAGCATCCCCGTTTCATTGCTGGCCGCCGAGGCGCACAGCATTCCGGTAGAGAGCCAGCGGTTAACCGTGACGCCCTGCTCGTTCTTTTCAATAAAGTTGGCGTCGCGGTCGGCTTTCATTAATTTAGCAATACGAGTGAAAGCGTCATCCCAGCTAATGCGCTGCCACTTGTCGGAACCCGGCGCGCGGTATTCCGGATAGCGTAGGCGATCTTCACTGTGAACATAGTCCAGCAAACCGGCCCCTTTCGGGCACAGCGCGCCACGGCTTACCGGATG
+NODE	2316	21	1983	1961	0	0
+TGCGATGACCAACCACTGGGT
+TACCGTTGGTCCGTGTCAGAC
+NODE	2317	1123	58914	58675	0	0
+CCGCTTGGTCACAAAGTTCAGAATGCCGCCCGTGTTGTTGTCGCCCGGGAACCAGTTTTGTACGGTGGAATATTTTACTTCAGCATCTTTATGGATGATGACTTCCACTACCGCGGCGTGGAGCTGATAACTGTCGCGTACGGGCGCGGAGCAGCCTTCGATATAACTCACATAGCTGCCTTCATCCGCCACCAGAATCGTGCGCTCAAACTGACCGGTTTTCTCGGCGTTAATGCGAAAATAGGTGGATAACTCCATTGGGCAACGCACGCCTTTGGGAACATAGATAAATGTCCCATCGGAAGCGACTGCCGCATTCAGCGCGGCAAAAAAGTTATCGTTCCCCGGCACGACGGTGCCAAGATATTTCCTGACCAGGTCAGGGTGATCGTGTATCGCTTCGCCAAAAGAACAGAAAATAATGCCCTGTTCCGCCAGTTTTTCACGGTATGTGGTCGCTACGGAGACCGAGTCAAAAATCGCATCGACGGC [...]
+GAAGGCGCAAAGCTTTTCGCACCGTTACAGGCGATGCCTTTTATTGACGGAACAGAAGTGGATTACGTACAGGAAGGGCTGAACCAGTTATTTAAATTTCATAACCCCAAAGCCCAGAATGAATGCGGCTGCGGCGAAAGTTTTGGGGTATAGGCGGTACTATGTCTCGTAACACTGAAGCAACGGAAGAGGTCGGCATCTGGACAGGCGGACGCCTTAATTACAAAGAAGGATTTTTCACGCAACTACCCACTGATGAACTGGCAAAAGGCATCAGCGAAGAGGTGGTGCGCGCGATTTCCGCAAAGCGTAACGAACCTGAGTGGATGCTGGAATTTCGTCTCAATGCCTATAGAGCCTGGCTGGACATGGATGAACCGCACTGGCTGAAGGCGTACTACGATAAACTGAACTATCAGGACTACAGCTATTACTCTGCGCCATCATGCGGAAACTGCGACGATAACTGCGTTTCCCAGCCGGGAGCCGTAC [...]
+NODE	2318	2195	107394	106526	0	0
+GATTTTCGTCGTAGTGTTCGTAACGCGCGGTCCCCATTACATTACCGCCTTGTGCAGCGAACGCTTTTGATGCCACGGCACGTGTCCGCATTTCATGTTGCGGTGCTTCGGCTGTTGCCAGAGATCCCGCTTTGGCATCTGCCAGAGATGCCGCTTTGGCATCTGCCAGGGCTTTGGCTTCAGCTTTCGCTTTATATTCGGCTGCTTTTTTCGCAGCCTGTTGGGCGGCCTCGGCTTGTCTTTTCTGGACAGTGTCATCCCCGGCCTGAGCGCTATTTTCTTTCTGGATAGCCTGCTCCTGTTTTAACTCAGCCGGATTATTTCCCTGCGGGTCGGAGGGCTCCGGCCCACAGCCCGAGAGAACAACCCCACCCAACAACAGCATTAATGTTTTTCCATTAAGCATACAAATTCCTTTTCAATTATATTCGGGTAACTCTCTGCAGATGTCCTGCATTATATTCCGCTTTACTTTTATTATCTGCATGGCGA [...]
+GTCACTCCGCCAGACGATGGCGGCGATGTCACCCCGCCGGACGATGACGGCGATATCACTCCGCCTGACGGCGGCGACGTCACGCCCGTGGCGCCGCAGTACCGCGCCGACATTGGCGTTTATCTCGGCAACCAGTGGATGGCGCGCAACCTGCAAATGCAGACCCTCTACGACCGGGAAGGCAGCCAGTACCGTTCCGCCGACGGCAGCATCTGGATGCGTTTTAAGGCCGGTAAAGCCGAATCGCAGGCGGTTAACGGCAATGTAGATATCGACAGCGACTACTCGCAGTTCCAGCTCGGCGGCGACATCCTGACCTGGAGCGACGGCGCGCAGAGCGTCACCGTTGGCCTGATGGGCAGCTACATCAACGCCAGCACCGACAGCACCGGCAACCGGGGGGCGGACGGCAGCCAGTTCTCCGCCAACGGTAGCGTGGACGGCTACAACCTCGGCCTCTACGCCACCTGGTTTGCCGATGCGCAAAGCCAT [...]
+NODE	2319	11	15	15	0	0
+TAAACCCACCA
+ACTATACCCAA
+NODE	2320	19	1063	1063	0	0
+CGCTTCGCTGCCTGGCAAT
+TGGTGATATAGATCCCTCA
+NODE	2321	16	6518	2714	0	0
+ACTCAAAGGAGACTGC
+TTGCGCTCGTTGCGGG
+NODE	2322	37	42	42	0	0
+GCTCACGACGTTCTAAACCCAGCTCGCGTACCACTTT
+CTCTGCCGTGGGCGCTGGAGAACTGAGGGGGGCTGCT
+NODE	2323	24	1380	1380	0	0
+ATAACGTTGCTTAGAAGGGATAAT
+GCGAAAAATGTAGCTGCTTTTTTT
+NODE	2324	2643	139118	138235	0	0
+GCGCGGCCCAGCGCGGCGTCAGCTTCTTTACCGGTCAGGTTTTTATCCACCAGGTCCAGCAGGAACAGGTGGTTTTCAGTGCCGCCAGACACCACTTTGTAGCCGCGGTTCAGGAACACTTCTACCATCGCTTTGGCGTTTTTCGCCACCTGCTGCTGGTAAACTTTGAACTCCGGCTCCATCGCTTCTTTCAGCGCTACCGCTTTACCCGCGATCACGTGCATCAGCGGGCCGCCCTGCGCGCTTGGGAACACGGCGGAGTTCAGTTTTTTATACAGCTCTTCATCGCCGCCCTTCGCCAGGATCAGGCCGCCGCGCGGACCCGCCAGGGTTTTGTGGGTGGTGGTGGTGACAACGTGAGCGTGCGGAACCGGGTTCGGGTAAACGCCTGCGGCAATCAGGCCCGCCACGTGCGCCATGTCGACAAACAGGTATGCGCCGATGCTGTCAGCGATTTCACGCATTTTTGCCCAGTCAACCACGCCAGAGTAG [...]
+GAGGAAAACGGGCGTTCGCCTTAACGATAACGCCCGTTTTTTCAGCGGATTTCTTGCAATTACAGCACTTTATGCGGGCCGAAGCATTCGTAATGAATGTTTTCGTTATTCACGCCAAGTGAAACCAGTTGTTTTGCGGCAAACTGCATAAAGCCTACCGGGCCGCAAAGATAGAACTGCATTGCCGGATCGCTGATCGCGGCTTCCAGTTTGCTTAAATCCATCAGCCCTTCGCTGTCAAAGACGCGTTGGGCGCGATCGGCCTCGGTTGGCTCGCGGTACCAGGTATGGGCAGTGAAACGCGGCAGTGTACGACCCAGCTCGCTCACTTCGTCGGCAAACGCATGGACGTCGCCGTTCTCCGCCGCGTGGAACCAGTTCACCTGCGCGGTATGCTGTCCTTTCGCCAGCGTATCGAGCATCGCTAACATCGGCGTCTGGCCGACGCCAGCGGAAATCAGCGAAACGGGGGTATCAGCGGCGACATTCATA [...]
+NODE	2325	179	17735	12948	0	0
+GTGAAACTGATTTTGATTTTCTTCAGCGACTGATGCAGGAGTGGGGCATCTACTGGTGGTTTGAGCACAGCGAGGACAGCCACACGCTGGTGCTGGCGGATGCCATCAGCGCCCACAAAGCATGTCCGGACTCGCCGCTGGTCGAGTGGCACCAGGAAGGGCTGAAGCTGGACAAGGAG
+CCGGACATGCTTTGTGGGCGCTGATGGCATCCGCCAGCACCAGCGTGTGGCTGTCCTCGCTGTGCTCAAACCACCAGTAGATGCCCCACTCCTGCATCAGTCGCTGAAGAAAATCAAAATCAGTTTCACCGTACTGCACCTGCCAGGTGCGTACCGGGTAGCTTTCCACCAGCCGCTTT
+NODE	2326	48	3486	2735	0	0
+CGAACCCCCGATACGTTGCCGTATACACACTTTCCAGGCGTGCTCCTT
+TCCCCCCCTCACCGCCATATTTAAGTTGAGAGCCTGTACAGAAGTACG
+NODE	2327	28	2763	2732	0	0
+CAGCCACTCGGACACCTCACCATATTGT
+GTATACGGCAACGTATCGGGGGTTCGAA
+NODE	2328	2240	117905	116162	0	0
+AGATGCGCGGGCTTTACCAGTTCGAGCAATTCGCTTACCACCCGGTTCAAACGGTCGGCCTCTTTGGCCATCACCTGCGCCAGTTCATGCGACTCGCCGCCGGCAGGCGTGCGCTCGGCAAAGTATTTCGCCAGCCCTTTGATGGACGAGAGCGGGTTACGAATTTCGTGCGCGACGCCCGCCGCCAGATGCCCCATCGCCACCAGCTTTTCTTTACGCTTCATTGTATCAAGCAGTTCTCTGTGCGAGCGCTGATAACGCTGATGCCAAAAAAACGCCAGTAACGTTGCCAACAGCACCGTCGCTAACGCAGACAAAACAATCAGCGTATTACGCCACTCCCTTGCCTGTGTCGCGGCCAGCTCGCTGGCGTCAAAGGCAATAAAAATAGTTTGTTTCGCTGGTTCGTCGTCATTGGCGCTACGCGCCATGCCGTGCCCCCTCATACCGTGACCTCTCATACCGAAAAGCGGCTGGAACTGACGGTAAATT [...]
+CCATCTGCTTTCTGTTTTTAGCCCGTGGCATAGCGGCAGCACGACGACCAGCGAATATCGTTGGCAGGGTGATACGCTTTCGCTTATTGAACTCAATATTTACAGCAAACCGCCAGAACATATTCGCGCGCGTTTCGACGCTCATGGCGAACTCAGTTTTATGCAGCGTGAAGTCGGGGGGCAGAAGCAGCAGCTTTCCAACGATCAGATTGCCTTGTATCGCTATCGCGCCGAACAAATCCGTCAGACCAGCGACGCCTTGCGCCTGGGGCGGGTCATACTACGCCAGGGACGCTGGCACGCCGACCATACGGTAACCACCTGTGAAGGTGAAACGCTGAAACCGGATCTGGATTCCTGGGCAATAAGCCACATTGAGCGCCGCCAGAACCACTCATCGGTAGAGGTGAGCGTAGCATGGCTGGAGGCGCCGGAAGGATCGCAACTTTTGCTGGTGGCGAATTCAGATTTCTGTCACTGGCAGCCGCAAGC [...]
+NODE	2329	51	2446	1467	0	0
+ACCGTTTGAAAAAACGGACTGCGGCATGTACTACCTGCCGTATGCGACGTC
+TAATGTGGTTGGCTTTCCTTGCAGAAAAGAGGAACAAATGGCCGGAGACGC
+NODE	2330	51	2867	2867	0	0
+ACCGGCCACACCATGTTCCTGACGCTGGGCGTCAAAGCAGGCACCATCAGC
+TAAACAGTTCGGAACCGGCGATGATGACCAGCGTTAAGGCGATACCGAAGG
+NODE	2331	198	10171	10101	0	0
+CAGTTTGTCCGCCGCGTTCTGCTGCTTCAGCTGGCCTTCCAGGTTAGTGAGCATTCCGCCCGGCACCTGCGCCACCAGAATGCGGCTGTCGTAGCCCTTCAGCTGGCCTTCAAAGGCGTGGTACTTTTTGCGCACCTCGCGGAAATACGCGGCGATATTTTCCAGCTTCAGGATATCCAGCCCGGTGTCGTGCTCAGT
+GTATTTCCGCGAGGTGCGCAAAAAGTACCACGCCTTTGAAGGCCAGCTGAAGGGCTACGACAGCCGCATTCTGGTGGCGCAGGTGCCGGGCGGAATGCTCACTAACCTGGAAGGCCAGCTGAAGCAGCAGAACGCGGCGGACAAACTGGACCAGGTGCTGGCGGAAATCCCCCGCGTGCGCGAGGACCTCGGCTTTAT
+NODE	2332	29	1603	1603	0	0
+CAAAATTGCGCGACTCCGCATTCTTGATG
+GTAATCCGGATCGACTGCAACCAGAGAGC
+NODE	2333	22	1421	1421	0	0
+AGTGAGGATTGTAATCATTGAA
+GGCTTTTATGCATTTAATTTGC
+NODE	2334	29	1942	1942	0	0
+TTTGTGAATTAAGGTCGCCGCCGCGGAGC
+TCATCAAGAATGCGGAGTCGCGCAATTTT
+NODE	2335	289	14929	14929	0	0
+AAGCGCCGGGGTTGCGTCTTCACCGGAGAAACCTTTGATTTTTACAGCGGTGGGGATGTGGCTCAAATCAACGGCCACACCGGGAGTCACTGGAGCGATGTCGTACAGGGAGAGTTCTGAACCTGAAGGCAGTTGGTTTTTTAAAAGTAATGCCAGCGCCTGACCGATACCACCAGCAGCGCCGAGGACTGCGACTTTCATCCTAAACTCCTTATTATATGATTAGCTAAGTGTCTATTGCTCCGCGGCGGCGACCTTAATTCACAAATTCAATGATTACAATCCTCAC
+AATAGACACTTAGCTAATCATATAATAAGGAGTTTAGGATGAAAGTCGCAGTCCTCGGCGCTGCTGGTGGTATCGGTCAGGCGCTGGCATTACTTTTAAAAAACCAACTGCCTTCAGGTTCAGAACTCTCCCTGTACGACATCGCTCCAGTGACTCCCGGTGTGGCCGTTGATTTGAGCCACATCCCCACCGCTGTAAAAATCAAAGGTTTCTCCGGTGAAGACGCAACCCCGGCGCTTGAAGGCGCTGACGTAGTACTGATTTCTGCGGGTGTGGCGCGTAAGCCGGG
+NODE	2336	51	108	108	0	0
+CGCGTAGCGCACAGCGTTTGCCATTCCTCAGTAAGCGCTTGCTCCTCCTGC
+GGGGCGTTCAGCTCCAGCCGCAAGAAGACCTCGCGGGCTGGTTGACCGCCG
+NODE	2337	8	18	18	0	0
+GTCATATC
+CTCGTCAC
+NODE	2338	31	12678	91	0	0
+ACCTTACCGGCGCTTATCGCAGATTAGCACG
+GGCGATACCCGAATGGGGAAACCCAGTGTGA
+NODE	2339	19	66	66	0	0
+CTTGCGCGGTAATGTGTGA
+ACCGCCGTGAAAGGGCGGT
+NODE	2340	346	17043	16900	0	0
+ACCATTAAAGATCGTCCCGGTACGTTAGGTTTGCCCAACGTGGGGCAGTGGCGTAACGACCCGACGGAACTGGCCCAGGTCAAGGCCAGCCCGGTCAACCTGAGCTTCTGGCAGGTTTTTGTGAAATATATCCTGACCAATCCACTGGTATGGATCATTATTATCGGTGATATGTCGGTTTATATTGCGCGCACTATTCTTAACGACTGGCCGCAGATTTACTATTCGCAGGTTCACGGCTGGAGTCTGATAAAAGCGAACTCGATTATTTCCTGGTTTGAGGCGGGCGGACTGGCAGGTGGGTTGCTGGCAGGCTACTTGTCTGACTTTATGTTCAAAAGTAACC
+GCCAGTCCGCCCGCCTCAAACCAGGAAATAATCGAGTTCGCTTTTATCAGACTCCAGCCGTGAACCTGCGAATAGTAAATCTGCGGCCAGTCGTTAAGAATAGTGCGCGCAATATAAACCGACATATCACCGATAATAATGATCCATACCAGTGGATTGGTCAGGATATATTTCACAAAAACCTGCCAGAAGCTCAGGTTGACCGGGCTGGCCTTGACCTGGGCCAGTTCCGTCGGGTCGTTACGCCACTGCCCCACGTTGGGCAAACCTAACGTACCGGGACGATCTTTAATGGTAAATAGCGCCACTATCCCCATCAGCAGCGAAATGGCGCCGGGAACATAAA
+NODE	2341	51	2889	2889	0	0
+ACCAGATCGCACTGGAGGAAGCGGGGCGCTATGCGGCAGAAGATGCGGATG
+TTAAAGGTGAGCTGGTTTTTACCTTTACCGGCAATGTCTTCAAAGGTGATA
+NODE	2342	777	41642	41237	0	0
+TCACGTTACAGTTGCATCTCAAAATGTGGCCTGAGCTCCAGCAGCACAAAGGCCCGCTGAATGTTTTCGAAAACATCGAAATGCCGCTGGTGCCGGTACTGTCACGCGTTGAGCGCAATGGCGTAAAAATCGATCCTGCCGTCCTGCACAAACATTCGGAAGAAATCACACTACGTCTGGCGGAACTGGAAAAGAAAGCGCATGACATTGCGGGCGAGGCGTTCAACCTGTCCTCGACGAAGCAGTTGCAGACTATCCTGTTTGAAAAGCAGGGTATTAAGCCGTTGAAGAAAACGCCTGGCGGCGCGCCGTCAACGTCGGAAGAGGTGCTGGAAGAGCTGGCGCTGGACTATCCGCTGCCGAAAGTGATTCTGGAGTATCGTGGTCTGGCGAAGCTAAAATCCACCTATACCGATAAGCTGCCGCTGATGATTAACCCGAAAACCGGGCGCGTCCATACGTCCTATCATCAGGCGGTAACGGCGACGGGAC [...]
+AGCGGCAAGCCAAAGACTTCCGCCGCCGTTGCGCGGTGAATATCTTTCCCTTCGGCGAACGCCGTGAGCAGCCCTTTATCACGGGAAAGATGCGCCATAATACGCAGCTCAATCTGTGAATAGTCCGCAGACACGATGAGATAATCCTCAGGCGCAATAAATGCCTGACGAATGCGGCGGCCCTCTTCATTGCGCACCGGAATATTTTGCAGGTTCGGATCGGTGGACGATAAACGTCCCGTCGCCGTTACCGCCTGATGATAGGACGTATGGACGCGCCCGGTTTTCGGGTTAATCATCAGCGGCAGCTTATCGGTATAGGTGGATTTTAGCTTCGCCAGACCACGATACTCCAGAATCACTTTCGGCAGCGGATAGTCCAGCGCCAGCTCTTCCAGCACCTCTTCCGACGTTGACGGCGCGCCGCCAGGCGTTTTCTTCAACGGCTTAATACCCTGCTTTTCAAACAGGATAGTCTGCAACTGCTTCGTC [...]
+NODE	2343	750	36965	36488	0	0
+CCTGGCCAGCGAGCAGGCCGCACGAATGGTGGCGATGAAAGCCGCAACCGATAATGGCGGCAGCCTGATTAAAGAGCTGCAGTTGGTATACAACAAAGCTCGTCAGGCCAGCATTACTCAGGAACTCACCGAGATCGTCTCGGGGGCCGCCGCGGTTTAACCAGGTTATTTCGTAGAGGATTTAAGATGGCTACTGGAAAGATTGTCCAGGTAATCGGCGCCGTGGTCGACGTCGAGTTCCCTCAGGATGCCGTACCACGCGTGTACGATGCCCTTGAGGTGCAGAATGGTAATGAGAAGCTGGTGCTGGAAGTTCAGCAGCAGCTTGGCGGCGGTATTGTGCGTACCATCGCGATGGGGTCTTCTGACGGTCTGCGTCGCGGTCTGGATGTAAAAGATCTCGAACACCCGATCGAAGTCCCGGTAGGTAAAGCCACGCTGGGTCGTATCATGAACGTCCTGGGCGAACCGGTCGACATGAAAGGCGAGATC [...]
+AGTGCTCGATCGCGATGTTACGGATAAGCTCCATCATGTTTACGGTTTTACCTACACCCGCACCACCGAACAGACCGACTTTACCGCCCTTCGCGAACGGACACATCAGGTCGATAACTTTGATACCGGTTTCCAGCAGTTCCTGAGAGTTTGACAACTCTTCGTAGGAAGGCGCTGCGCGGTGAATCGCCCAACGCTCTTCTTCGCCGATCTCGCCTTTCATGTCGACCGGTTCGCCCAGGACGTTCATGATACGACCCAGCGTGGCTTTACCTACCGGGACTTCGATCGGGTGTTCGAGATCTTTTACATCCAGACCGCGACGCAGACCGTCAGAAGACCCCATCGCGATGGTACGCACAATACCGCCGCCAAGCTGCTGCTGAACTTCCAGCACCAGCTTCTCATTACCATTCTGCACCTCAAGGGCATCGTACACGCGTGGTACGGCATCCTGAGGGAACTCGACGTCGACCACGGCGCCGATTACCT [...]
+NODE	2344	9	739	739	0	0
+AATTTGTTG
+TCGGGGTCG
+NODE	2345	12	971	971	0	0
+CTGTCGTAATTC
+ACCTTGCCAAGG
+NODE	2346	31	1501	1501	0	0
+GGTGCAGGCCTGCAGCCGGTGCGACCGGAGT
+TCCACCCGTTTACGTTTCAGGCTGTCCATAT
+NODE	2347	1320	83117	82647	0	0
+TTAATGGGTGGCTTGAGCTATGGGGGGCATGGGTTTATTCAGGAAGACTCGAAAAACGCATGAGCAGCGTTATAGCGCAGTTTATGGAGAGGGTAGAACCATCAAGAGTGATGACAAGGCCAATGTGCAATGATGATGACGGAATGTTGATTTCTCAGGTCGTAGATTCCGTTATGCGCATCGACACAAAGGCCTTTGGCATTCTGCTTAGCTATTACGCACATGGTTCCTCTAAGCGAGCAATTGCATCCTACTATCACGCGACTGCAAAGCCACGCAAGATGTGTGGACGTGGTGGCGAGGGATGGAGAAAACCTTCACTGGCAACCTGTAGAAATGAAATTGACGACATCCTGAAAGCGTCATTATTTTTTTTATACCAGCCAATGCAAAATGCTTTCAAAATGCGTAAACGTGTTGAGAAAGTTAAGCATGTTGTTGTTAAAAGTCTTGACATGCAATTATCCATTTAGCCATAATTAGAGGGTAAGC [...]
+ACAGTCCATACACCAACAATATCTTTGTATGGTATGTAGCTGACACCTTCCAGACCATCGTTACCACTCTGACCTGTGATTAACACAGATGCTATAGCAATAGCCCCGCCACTTATCGCCGCTATTACGCTATTTCGTAGTGCCGGTGACATTGCCATTCAATCTGTCCTCACGCTCTTTGCGTTTGTAGTACCAGTTGATGCCAAATGTGCCGACAGTACAAAGAATACCAACGATTACAGCCCAGTCATTCAGGGAGAGAATGCCACCCATCGCAGTCAGTCCTCCGAAGCTGTAACTGAACCATTCTCTGATTTTGTCCATACGGTACATGCTCTACCCCCTTTATTGAGGGGATTTGCTCTATTGAATTAGGAATAAGGTCGATTACTGATAGAACAAATCCAGGCTACTGTGTTTAGTAATCAGATTTGTTCGTGACCGATATGCACGGGCAAAACGGCAGGAGGTTGTTATCGCAACCTCTTGCCA [...]
+NODE	2348	33	1485	1485	0	0
+TGCTGCCGTTGTACCCGCAATACTCTTGCTCAA
+TCGCTTGCTAACAGTTCATCGACAGCGCTTTCC
+NODE	2349	138	271	271	0	0
+CAAAAGCCCTTCTAACTAGAAGTTAGAAGGGCTTTTGGTGTAATGAGGAGCTTGGCGGTGACCTACTTTCACATGGGTAGTCCACACTATCATCGGCGCTAAGTCGTTTCACTGTACTGTTCGGAATGGGAAGGAGTG
+AGTGTGGACTACCCATGTGAAAGTAGGTCACCGCCAAGCTCCTCATTACACCAAAAGCCCTTCTAACTTCTAGTTAGAAGGGCTTTTGGGTTTTTCGCTTTACTCGCTATGGCCGCCAAGCAAAAAAGCGTAGTGATG
+NODE	2350	51	2421	2421	0	0
+TCAACGTTGTGACAACAGTGCCAAAGCGGGAAAGACAGGTAATGGCCCCAT
+ATATATATTGCCATCATTACGCTTACCGGCGTGTCATTAGCTTACCTTTTC
+NODE	2351	66	2653	2608	0	0
+CTATCCTGTAACGCTACCTCACCGGCCAGCGCCGCCAGCGCGTTAACCGACCACGGCATTTGTTGG
+TAGCGTTACAGGATAGCGCCTGGCAACAGGCGACCTGGCATTGGTTACGGGAGGAGGGCGCCCGGT
+NODE	2352	325	16890	15705	0	0
+TAGGTTCACGTAGCGCATCCAGTGTGCGTCGTTCAAATTCAGGCAATTCATCAAGGAACAAAATTCCGTTGTGCGCCAGCGATATCTCTCCCGGGGTGGGTATTGCGCCGCCGCCGACCATAGCAGTAAGTGAGGCGCTATGATGAGGTGAGCGAAAGGGGCGTTGCTGCCATCGTTTTTGTACCGTATCGGCATTAACCAGACTGAGGATCGCGGCGCTTTCCAACGCCTCTTCATTGCTTAATGGTGGAAGAATCCCGCTCAGTCGACTGGCCAGCATGGTTTTACCCGTACCCGGCGGGCCGATCAATAGCAGATTATGGCC
+GGCCAGTCGACTGAGCGGGATTCTTCCACCATTAAGCAATGAAGAGGCGTTGGAAAGCGCCGCGATCCTCAGTCTGGTTAATGCCGATACGGTACAAAAACGATGGCAGCAACGCCCCTTTCGCTCACCTCATCATAGCGCCTCACTTACTGCTATGGTCGGCGGCGGCGCAATACCCACCCCGGGAGAGATATCGCTGGCGCACAACGGAATTTTGTTCCTTGATGAATTGCCTGAATTTGAACGACGCACACTGGATGCGCTACGTGAACCTATAGAATCCGGTCAAATTCATTTATCCCGTACCAGAGCGAAAATAACGTAC
+NODE	2353	19	860	860	0	0
+TTACTATCCTTCTCACTGG
+ACCCCGCCAGGAACTGGAA
+NODE	2354	4	8	8	0	0
+GTTA
+CCCG
+NODE	2355	51	2650	1203	0	0
+ACCCGCGGCGATATTTGCAACGCCTGTGGCAGGGCATCCACGTCACTTAAT
+TCATCCGTTTGCTGAACGTGGCAGGTTTGCTGCGCCATTCCGTTCAGGAAG
+NODE	2356	1338	64087	63701	0	0
+CGTTATGGGTAAGTGAAGATGCCGAACAGCAGCGCATTCGCGGTTTCGGCGAACAGTTTAAGCTCGGCATACCGCTCGGTAAAATCGCCCGTCCGCAGGAGATAGCCAATACCATTTTGTTTCTTGCCTCCGATCTGGCCAGCCACATTACCTTGCAGGATATCGTGGTGGACGGCGGTTCAACATTGGGAGCCTGACGATGATCTGGAAACGGCATTTAACGCTGGATGAATTGAACGCTACCAGTCAGAACACGCTGGTGGCGCATCTGGGCATTGTTTACACCCGTCTGGGCGATGACGTGCTGGAGGCGGAAATGCCCGTCGATGCCCGCACTCATCAACCGTTTGGTCTGCTACATGGCGGCGCATCGGCAGCGCTGGCGGAGACGTTAGGATCAATGGCGGGTTATCTGATGACCCGCGACGGGCAGTGCGTGGTCGGGACCGAGTTAAACGCCACCCATCACCGCGCCGTCTCGCAGGGGAAAGT [...]
+ACCAGCGCGATCACCCCTGCCGTCGCGCCCATCTCCTCTTTAACCAGCTCGCCAAGCGAACGCCCATCGCGCCGGGTCGAGACGAACAGCACCATAAAGTCCTGCACCGCTCCCGCCAGCACAACGCCCGCCAGCAGCCAGATCATCCCCGGCAGATAGCCCATCTGCGCCGCCAGTACCGGCCCGACCAGCGGACCTGCGCCAGCAATGGCAGCAAAATGGTGACCGAACAGCACTTTCTTATCGGTCGGGACATAATCCAGACCATCATTATGACGTACCGCGGGCGTCATACGCGTTGGGTCAACCGCCAGCACTTTTTTGGCGATATAGAGCCCATAAAAACGATACGCAATTAGATAGACACAGACCGACGCCACCACGATCCATAGCGCGTTGATCTGTTCCCCACGATTTAACGCAATATAGCCCAGGGCAAACGCACCCAATACTGAGAGCGCTGTCCAGACGAGGTATTTCCCTGATTTATTC [...]
+NODE	2357	37	2061	2004	0	0
+ACCCGTGACTGTGTTAACGCCAAAGGCGAAGGCATGG
+CCCAATACCACGTCCTGAGACGGAACGATGATAGGTT
+NODE	2358	14	857	855	0	0
+TGCTGACTGGCCCG
+TCATATAGTACAGA
+NODE	2359	97	18687	14131	0	0
+GAAGGAAAGGAAGGAGCATACAGAAGTATGTGACTGACTTTACGAGCGCAGGCAACGCCGCTGATGCGATAAAGAATTGCGTACTGAGCATAAAAGA
+GCTCGTAAAGTCAGTCACATACTTCTGTATGCTCCTTCCTTTCCTTCGCTTGCCGCCTTGCTGCTGCGCAAATTATTGCGTACTCAACTCTGAATCA
+NODE	2360	2073	105467	104338	0	0
+AGCTCTTATTCAACTCTTTATTTTTGTCCGGTAGTCGCGGGATATTGTGATAACGGTTTTTATAAGCGAAATACCCCAGCAAAACTGACAACTAACTGTTACACATTAGTTACAGTGCGACAAACGTTGTCATCATAGCTATCACAATGTTAATAAACTGTGAATTTACTCACAGATTGAAAACGGTTACATGCGGGGCGTAATCAGTTAGTGATCAGTACCGCATTCTGTCGCCACGCCACCGAATGGCGCCGTACCAGGGTCGGCATAAAGCAGTGCGTCGCCGTGATATCCAGCGTGCCTGCGGCCCCCTGTAACGCCAGCTCGGTCGCGATTTTCGCCATAGAAGCAATAGGATAGCGCACGGTAGTCAACTGAGGATCGGTATAACGAGCAATAGGGATATCATCGAAACCGATGACAGACAGATGCAAGGGAATGGCGATGCCGTTATCTTTTAACGCCGTCAGCGCGCCCGCCGCCATGTTATCG [...]
+TCGGCAATATTGTATGAAAAATACTGGAAGCTGAACGGCGGCATGGAGGCTATCAGCAACCGGGCAGAGATGCTGTCGAATAGTTTACTGGCGCTCGGCGCGCAGTATGGCTGGCAACTGGCAGGTATGATGCTGCTGGGCGCCGCGCTAATGCGTAGCGGCTGGCTGAAAGGTCAGTACAGTCTGCGGCACTATCGTCGTACTGGGGTTCTGCTGGTGGCGTTAGGGCTAATGATCAACCTGCCTGCGGTCATTTTACAATGGCGGCTGGACTGGGCGTACCGCTGGTGTGCCTTCTTATTGCAGGCGCCGCGCGAACTGAGCGCGCCGTTGCAAACGCTGGGCTATGCCGCGCTGATGTTTGGCTTCTGGCCGCAGCTTAGCCGATGCAGACTGACGCTTGCCATTGCCTGCGTAGGGCGAATGGCGCTGACCAATTATCTGCTGCAGACGATCATCTGTACCACACTGTTTTATCAGTTTGGCTTATTT [...]
+NODE	2361	15	688	647	0	0
+TCACAACCGCAAAAT
+TCCCTGCCATGTTTT
+NODE	2362	46	46	46	0	0
+ATTGCGTTAATGCATAAGAAAATGGTTTATTTACTAATTGTAATGT
+GGATCTATATCACCACCTTCTGGCTGCTCATCCACCACGTTGATAG
+NODE	2363	5	485	485	0	0
+GGCAG
+AAGAA
+NODE	2364	5391	290005	286054	0	0
+CTGCGGAATACGAAGCCCCGCCTGATATAGCGCCTGATAGGCGCCGACAGCCATCGCATCGTTTCCGGTAAAAACCGCTTGCGGTCGCTGTTGATGGGCGAGTAACGCCTGCATGGCGTCAAAGCCGCCGCCAAATTCAAAATCGCCGGTGATCTCATAGCCTTGCGGAATAGCCAGCCCTGCGCGTTTCATCGCCGCCCGATACCCTTCCAGCCGTAAACGCGCTGGCGTTTTGTCCAGCGGGCCGGTAATACAGGCTATTCGGGTAAAACCTTTATCGATAAGGTATTGGGTGGCAAGATCGCCGCCTAACAACGAATTATCCTGAATGAGATCGCTATCGCCCTCACCATCAAACGGCGACCAGTCCATCATGACGGTAGGAATAGACGGATAACGCTCCATGATTTCACGAGAAGGCTGATGCGTTTCGGTACACAGCAGCAGTAAACCGTCTACCCGTTTTTGCATCAGCGTCTCCAGGTTGCGGTT [...]
+TCAGGCAGTGATTCGCAGCGGGGAGTGTTCCCCGTATGCGAACGTCATTCTTTGCGCTGGCGTCACTTTCTGAGGCCGCTATGGACGCATTACTGCAACTCAAAGGGATCGATAAAGCGTTCCCCGGCGTGAAGGCTCTCTCCGGCGCCGCGTTAAACGTTTATCCTGGCCGCGTTATGGCGCTGGTGGGGGAAAACGGCGCCGGAAAATCCACCATGATGAAAGTATTAACCGGCATCTATACGCGAGATGCGGGATCGTTGTTATGGCTGGGTAAAGAGACCACCTTTAACGGGCCTAAATCGTCTCAGGAAGCCGGGATCGGCATTATTCATCAGGAACTGAACCTGATCCCGCAGTTGACCATTGCGGAAAACATCTTCCTGGGCCGTGAGTTTGTGAATCGCTTTGGCAAAATCGACTGGAAAAAGATGTATGCCGAAGCCGACCACCTCTTAGACAAACTCAATCTGCGCTTTAAGAGCGATAAGC [...]
+NODE	2365	819	53855	50178	0	0
+ATAGGCACGATGACATTATCGACATCGTACAGATCTTCCATAATTTCCAGACCAATAGTGCCCTGTCCGGCAATGACTTTTGGATCGTCGTAAGGCGGAATAAAAATGCGGCCTTCGGTTTCGACAATTTCACTCACCTTAGCAATGGTGTCATTGAAGTTGTCACCGTGGAGCACCACTTCCGCCGAATAATCACAGGTGGCCGCCACTTTTGACTTTGGCGCGCCCTTCGGCATCACGACTTTGCCGTCAATACCCAGCATTGCGCAAGAAAGAGAAACGCCCTGTGCATGATTACCTGCGGAACAGGCCACGACGCCTTTACGTTTTTCCGCCTCCGTTAACGAGCTAAGTTTGTTAAAAGCGCCACGAATTTTAAATGAACCCGTACGCTGCATATTTTCAAACTTGAGAAATATTTCGCCTTTGCAACGTTCACTAAAATAGTTAGAGCGAGGCATTCCCGTTTTATATATCTTCCCCGCCAGTCTT [...]
+TTATGCGGCGGTATGGTCTAAAAATTATCGTATCAAAAAAGCCGCTTCAGTATTAGTAGAATTGGCTAAGCAATATTCATCATATAATGGATGCAGACGCAGGCAGTTAATAGAAATTGAATGATATGGAATAAACATATTTAGCGAAATTGACGTCACCTGTTTCTTTTAAACAGTGGACAACGGTAACTTATTTTTAATACCCAGGTTAAGAGGTTATAATGCACATTACATACGATCTCCCGGTTGCAATTGAAGATATCCTCGAAGCGAAAAAAAGACTGGCGGGGAAGATATATAAAACGGGAATGCCTCGCTCTAACTATTTTAGTGAACGTTGCAAAGGCGAAATATTTCTCAAGTTTGAAAATATGCAGCGTACGGGTTCATTTAAAATTCGTGGCGCTTTTAACAAACTTAGCTCGTTAACGGAGGCGGAAAAACGTAAAGGCGTCGTGGCCTGTTCCGCAGGTAATCATGCACAGGGCGTTT [...]
+NODE	2366	14	1214	822	0	0
+CCCGGCCACCGAAG
+TCCACGCCGTCGAC
+NODE	2367	4	1404	774	0	0
+CCCT
+ACCC
+NODE	2368	51	107	107	0	0
+GTTCCTTGACAGCCGCATTCGTCGCTTCCAGTCTTTTGCGGAAATCAGCAC
+CCCGGAGGGCTGCGCATCCAGTTCGCGACGCAGTTTACAGAAGCCTTCCAG
+NODE	2369	49	2378	2378	0	0
+CGGAGGGCTGCGCATCCAGTTCGCGACGCAGTTTACAGAAGCCTTCCAG
+TTTCCTTGACAGCCGCATTCGTCGCTTCCAGTCTTTTGCGGAAATCAGC
+NODE	2370	17	736	713	0	0
+TCCAGCCGATAGTTAAA
+TTATTTTGTGCTGCCGC
+NODE	2371	105	40532	36244	0	0
+GCTCCATGCAGACTGGCGTCCACACTTCAAAGCCTCCCACCTATCCTACACATCAAGGCTCAATGTTCAGTGTCAAGCTATAGTAAAGGTTCACGGGGTCTTTCC
+TGATGTGTAGGATAGGTGGGAGGCTTTGAAGTGTGGACGCCAGTCTGCATGGAGCCGACCTTGAAATACCACCCTTTAATGTTTGATGTTCTAACGTGGACCCGT
+NODE	2372	16	18	18	0	0
+GGGTATTTCAAGGTCG
+TACCCGGGTTGCGGAC
+NODE	2373	4	230	230	0	0
+CGAT
+ACCC
+NODE	2374	48	49	49	0	0
+ACTTTACGCACCTCAAGCTCGATGCCGCGCTCGTTGAGCTTTTTAAAG
+TCCACCGATCCGAAACTGAAAATGATGGATTTAATTGCCAAAGTGGCG
+NODE	2375	51	2846	2846	0	0
+GCTTCAAGCGTATTGCTGAAGAAGGTCAGCGCGTGAAAGTTGGCGATCCGG
+CCTTCGCCTTTCAGCTCAACGGTGTCGATACCGAAGTGAACGAACAGCTCA
+NODE	2376	277	18567	18567	0	0
+TACGAACTTCACCACTACTATTACCAATGATTAATTCCTGTACCGTGTCGGAGCCTGTACCACCGACCAGTTTCATGTTGCACGTCGTCTCTAAAATTGTGGCCGTGAAGTTAACATCCAGGTTAGTGGAGTTAGCGGCAAGCGCGCTTCCAGAAGCTGCCATTACGGCAAGTGCCGCGATGGGAAGACTGAGGCGGTTTCTTTTCATATAAACTCTCATTAGTTTTTCCCTAAACAGGTCATTACATGTGACAAAGTTGATTACTCAGTACGGGGG
+AAAACTAATGAGAGTTTATATGAAAAGAAACCGCCTCAGTCTTCCCATCGCGGCACTTGCCGTAATGGCAGCTTCTGGAAGCGCGCTTGCCGCTAACTCCACTAACCTGGATGTTAACTTCACGGCCACAATTTTAGAGACGACGTGCAACATGAAACTGGTCGGTGGTACAGGCTCCGACACGGTACAGGAATTAATCATTGGTAATAGTAGTGGTGAAGTTCGTATTGATGATGTAAGAGCGGGAACAGCAACGGCAGATTTTAAATTAGTGATT
+NODE	2377	25	85	85	0	0
+GTTAGCCCCGTTACATCTTCCGCGC
+ACGTATCACTTAAAGCGATTCAGCG
+NODE	2378	26	65	65	0	0
+AGGCCGACTCGACCAGTGAGCTATTA
+CCCATGCACCGAAGCTGCGGCAGCGA
+NODE	2379	23	39	39	0	0
+GCACACTATCATTAACTGAATCC
+AAATCGCCGGTTATAACGGTTCA
+NODE	2380	28	55	55	0	0
+ATAGGTTAATGAGGCGAACCGGGGGAAC
+CCGAGTCACACTGGGTTTCCCCATTCGG
+NODE	2381	42	48	48	0	0
+CGTGGGAACGTTATCCGTTTCGCAAATGCAGATGATCGAAAT
+CGGGTCAATATCGATATCCAGCTCATCAAATATCGCTTTGGT
+NODE	2382	2	153	145	0	0
+AC
+TG
+NODE	2383	1170	75590	75453	0	0
+TGTTCATATGTAAACCTCGAGTGTCCGATTTCAAATTGGTCAATGGTCAAAGGTCCTTAAACCCATTGCTGCGTTTATATTATCGTCGTGCTATGGTACATACATCCATAAATGTATGTAAATCTAACGCCTGTAAATTCACCGACATATGGCACGAAAAACCAAACAACAAGCGCTGGAGACACGACAACACATCCTGGATGTGGCCCTGCGTTTGTTCTCGCAGCAAGGCGTATCAGCAACCTCGCTGGCGGAGATTGCGAACGCTGCTGGCGTGACGCGCGGCGCAATCTATTGGCATTTCAAAAATAAGTCGGATTTATTCAGTGAGATCTGGGAGCTATCAGAATCCAATATTGGTGAGCTTGAGATTGAGTATCAGGCAAAATTCCCCGACGATCCACTATCTGTATTAAGAGAAATTTTAGTTCATATTCTTGAAGCTACTGTAACAGAAGAACGACGCCGCTTATTGATGGAGATTATATTCCA [...]
+ACGAGCTTATCCTGGGCGGAGAGATCTTTTTGCTTATTCAGCGTATCCAGCTGGTTTTGTACATCCGCTTTTGACGGCAGGTCGCCATTCGTTTGCCCCCGGGCAAATGCCAGAGACTGACAGGACAGCAGGATAATAAGGACGCTAATTGTAATAAAAACAAAATGCTGTGAACGTTTATAAAGCTGCAACATAGTCATGAGAATGAAGTGTCTGAACCGGCAAGCAGACCGGAAATAATTGAGTCGCAAGAATATCACGCCTGTAACAAACAGAATAGCGACACAGAAAATGTCCAGGAGTTTTCCTGGAATATTATCAGGGGGAGCCGTTGACCGTCGACGCGCGCAGCGTCGGACACAATTGATACATCTCCAGCAGGATCGTGACGTAGGCGCGAGCTTCTTTTTTTAAATCAAACGATTGCGGAGCAAATAACCAGTTTTCCATGAGCCCTGAAATAAAGCTGCGCATCAGTATCGCCGCACGACG [...]
+NODE	2384	2832	141450	139801	0	0
+TGTACGGCGATACCGCGACGCTGCTGGATAAAAAACTGCCGAAAAGCAACTGGCTGGCGATGTGGATCTTCCTGGCGGCGATTGCCGTGGTCGCTCTCCTGGGCGCGGACTCCGACTTACGCCCAACCTTCGGCGGCAAACCGTTGTCGATGGTGCTGGTCATTCAGATGTTCATGCTGCTGACCGGGGCGCTCATTATCATTCTGACCAAAACCAATCCTGCGTCTATCTCAAAAAACGAAGTTTTTCGTTCCGGTATGATTGCGATTGTCGCGGTATACGGGATCGCCTGGATGGCGGAAACCATGTTCGGCGCGCATATGTCGGAAATTCAGGGCGTGCTGGGCGAAATGGTCAAAGAGTATCCGTGGGCCTATGCCATCGTTCTGCTGCTGGTCTCCAAGTTTGTTAACTCCCAGGCAGCGGCGCTGGCGGCGATTGTTCCCGTCGCGCTGGCTATCGGTGTCGATCCGGCGTATATCGTGGCCTCTG [...]
+TGGTGCTGGGGCTGATTGGCTACACGCCGAACGTGGCGCAGTCTGCGCAAACCCTGCAGGGGATGCAGTTTATTATGATTGTCCTGCCGGTACTGTTTTTCATGATGACGTTGGTTCTCTACTTCCGCTACTACCGTTTGAACGGCGATATGCTGCGCAAGATTCAGATCCACCTGCTGGATAAATACCGGAAAACGCCGCCATTCGTCGAACAGCCGGATAGCCCGGCGATTTCTGTGGTAGCGACCAGCGATGTAAAAGCGTGAGCATGGTCTCTCGTGCAGGCCGGATAAGCGTAGCGCCATCCGGCAATTAACCGATAACGCGGCCCGGGAGAACGCCGGGCCTGCCAGGTTATTTCGCGCAGTTAGCGCACTGTTTGCTGACAATCTGCTGGAAGAAATCGTTGCCTTTGTCATCCACCAGGATAAAGGCCGGGAAATCTTCTACTTCAATTTTCCAGATAGCTTCCATGCCGAGTTCCGGATACTC [...]
+NODE	2385	316	15320	15248	0	0
+TGCCGGTGATGTGGCTGGGTGGCGACCCGGTCAACGGCGTCGGGCTGGCGCTGCTGCTGGCGGACATCGTCGCGCTGATCTGGCTGTTAACCAATCAACGTTTGCGTGCCTGTTTTTCCTTTGAGAAAGAATAACGGCACTTTTTGGCGAACCCGCACTCCAACCAACGTTAATTAATAAAAGAAAGGAAGTGAGATGAAATCGCTGCGTTTGACTTTACTCGCACTGCCGCTGGCGCTGACCGGCTGCTCGACGCTCTCCTCGGTCAACTGGTCTGCCGCAAATCCATGGAACTGGTTTGGTTCCTCGACAGAAG
+ACCGAGGAGAGCGTCGAGCAGCCGGTCAGCGCCAGCGGCAGTGCGAGTAAAGTCAAACGCAGCGATTTCATCTCACTTCCTTTCTTTTATTAATTAACGTTGGTTGGAGTGCGGGTTCGCCAAAAAGTGCCGTTATTCTTTCTCAAAGGAAAAACAGGCACGCAAACGTTGATTGGTTAACAGCCAGATCAGCGCGACGATGTCCGCCAGCAGCAGCGCCAGCCCGACGCCGTTGACCGGGTCGCCACCCAGCCACATCACCGGCAGCCAGCACAACGACACCAGTTGAGCAAGGATCAGGAGTCCGCGCAGCCAG
+NODE	2386	1316	63809	63563	0	0
+ATGCCATCCACATATTGCGGACGACCGCGCGCTTTCCAGTCCTGCACCACCGCATGGACTTCCTGGTCACGCACAAACGCCCCATGGACACGTACCGGCATGGTGGAGTTTGGTCCGGAATAGAGCATGTCCCCCATTCCCAATAACGACTCAGCGCCACCCTGATCAAGAATGGTGCGGGAGTCGATCTTGCTGGATACGGTAAAAGCGATACGGGTTGGAATGTTGGCTTTAATTAAACCAGTAATCACATCGACCGACGGACGCTGCGTCGCCAGTACCAGGTGAATCCCCGCAGCGCGCGCTTTCTGCGCCAGACGCGCGATCAGCTCTTCAACTTTTTTACCGACGGTCATCATCAGGTCGGCAAATTCATCAACCAGTACCACGATATACGGGAGTTTTTCCAGAACCGGATGCTGAACATCCATACTGTCGCCCGGCTTCCAGTACGGGTCCGGAATCGGGCGTCCCATGCGGGCCGCTTCGGCG [...]
+GATGCGTAACGGCGACAGTCGTCCATTACAGCGTCCGACGACGCCGCTGCCTTCGTTAGATCTTCTGACGCCGCCGCCGAGCGAAGTTGAACCGGTAGATACCTTTGCGCTGGAACAAATGGCGCGTCTGGTTGAAGCGCGTCTGGCGGATTTCCGCATTAAAGCTGATGTGGTGAACTATTCGCCAGGCCCGGTCATTACTCGCTTTGAACTGAATCTGGCCCCGGGCGTTAAAGCGGCGCGTATCTCCAACCTTTCCCGGGATCTGGCGCGCTCATTGTCAACGGTAGCCGTACGCGTTGTGGAAGTCATTCCAGGCAAACCTTACGTAGGGTTGGAATTGCCGAACAAGAAACGGCAAACCGTTTATCTGCGCGAAGTGTTGGATAACGCCAAATTCCGCGAGAATCCGTCGCCGCTTACCGTGGTGTTAGGTAAGGATATCGCGGGCGATCCGGTAGTGGCGGATCTGGCGAAAATGCCTCACCTGCT [...]
+NODE	2387	183	10759	10663	0	0
+TGTAAGTATCCCGCATAATCGAGCCATTCACATTTAGAGATCATCCGGCATAATCAATCTGCCAACGCAGGAGATCGCTGTGCGTAAAGCCCGTATTACTGCGCACCAGATCATCGCTGTGATTAGATCAGTTGAATCCGGACGGACTGTTAAAGATGTCTACCGGGAGGCCGGTATTTCTGA
+AACTGATCTAATCACAGCGATGATCTGGTGCGCAGTAATACGGGCTTTACGCACAGCGATCTCCTGCGTTGGCAGATTGATTATGCCGGATGATCTCTAAATGTGAATGGCTCGATTATGCGGGATACTTACAGTGCAACCTGGCGCCATTTTTCAGTACACTGCAACGTTTCTGGTATGGGC
+NODE	2388	9	3471	3397	0	0
+CATCGGCGC
+GCATCAAAT
+NODE	2389	51	167	167	0	0
+GCGCTGGGGCTGCGGCAGGCGCTATCATCTCACTCATAAAAGACTCAATAC
+CCCGAACCGCCAGGTGAGCGAGTGGGCGAGGAGGCGCAAGGGAGTCAGAGG
+NODE	2390	169	7130	7130	0	0
+CGGTAAGCGTTAGTCAGTACATACCCTTCATACTTCAAGTTGCTTATGCGTTGGCTACGGATTACTCGGCCCATTCATGGGCCTCGCCCTGACGGGACGTCGCTCACCCCAGCCACATCGTTATCTATGCTCCTGGGGACTCACTCCCTTGCCGCCTTTAAGCAACTCG
+GATGTGGCTGGGGTGAGCGACGTCCCGTCAGGGCGAGGCCCATGAATGGGCCGAGTAATCCGTAGCCAACGCATAAGCAACTTGAAGTATGAAGGGTATGTACTGACTAACGCTTACCGTATCCCACCATAAAGCGAATAATTAACCCACATGCCGGTGCAAGAAAAAG
+NODE	2391	65	2524	2441	0	0
+CTACTTCGGCCTTATCAGCTTCACCCTGCCGCAGGCGGCGGCCATCGGCATTATCGGCGGCGCGG
+ATAAGGCCGAAGTAGTTCAGCGTCAGCGCCCCCAGCACCGTGGCGAAGATACCGAACTGCGCCGC
+NODE	2392	123	5961	5961	0	0
+GAAAATCCGCATGGTGCAGCTGCGCACCGTCAGCAAGCGGGAAAAAATCCTCTTTCCGGTGGTGCTGTTACTACTGGTGGCGCTGCTGCTGCCGGACGCCGCGCCGCTGCTGGGGATGTTCTG
+TAGTAACAGCACCACCGGAAAGAGGATTTTTTCCCGCTTGCTGACGGTGCGCAGCTGCACCATGCGGATTTTCCGCTCCGTCTCCGTGGTCAGCGCCTTCATAATCGGCGGCTGGATTAACGG
+NODE	2393	83	3623	3427	0	0
+CACCCCGGCGGCAGTCCCGATACCAAAGGCAATCACCCCCAGCAGCAGAATGCCCAGCGTCTGCGGCTGCAGGAACTTGTCCG
+ATTGCCTTTGGTATCGGGACTGCCGCCGGGGTGCTGATGGCGAAGCTGATGAACCTGTGCAGTAAGAACAAAATCAACCCGCT
+NODE	2394	13	145	145	0	0
+CCTTCACCGGACC
+TCCCGAGCCTTCA
+NODE	2395	6	82	82	0	0
+ATTCAA
+CCACAA
+NODE	2396	4	66	66	0	0
+TCGG
+CCAA
+NODE	2397	2	38	38	0	0
+TA
+AA
+NODE	2398	14	336	336	0	0
+GGTGCGACGGGCGG
+CTCCCAATGAAGGA
+NODE	2399	17	772	772	0	0
+ACCTATGCCCGCCGTTT
+CCGTTTTTTGTCAGGAA
+NODE	2400	51	64	64	0	0
+ATTTTGAACGCTGGTACAAACGTTATCAGACGAAAAAAATGCGTTAATGGC
+TAAACGGCGGGCATAGGTTTGGCGAATAAAAAGCCCTGTCGTTCATTGACG
+NODE	2401	12	573	573	0	0
+ACCTTCCTTGCC
+TGTTGACTTTCA
+NODE	2402	49	2657	2657	0	0
+GCACCTGCTCAAAGAGACCCCTTGCGAAGTCATTCTCCTCGGTGGAATC
+CGATATAACTGCTCACGGTGATGATCGTGACATCTTTTTGTTCCGCCAG
+NODE	2403	46	2057	2057	0	0
+AAATCAAAAAACGTTTTGAGGTGCGCCTGCACCTGCACTGTCACGC
+GACCAGCTCATACGCCGCCATCGGCGTGAGAATGCCGGACATATCC
+NODE	2404	5	231	231	0	0
+CGAAG
+GGGCA
+NODE	2405	51	2601	2601	0	0
+AAGAGAGCGCCGCTGCCGGTTCGCTGGGCGATTCATCAATAACGACCGTTT
+TATGAAAATTATGTCACGATTCTGGACGACGTTACGCTGGAAAGCTGGATT
+NODE	2406	6	269	229	0	0
+GTGTGT
+ATTGTG
+NODE	2407	4	374	332	0	0
+GTGA
+AGGG
+NODE	2408	7	636	578	0	0
+AGGCTCG
+AAAGGGC
+NODE	2409	2	113	99	0	0
+GG
+AC
+NODE	2410	19	1531	1516	0	0
+ACCACACCGTCAGCGAGGT
+ACGCTTCGCCGTTCTGCGT
+NODE	2411	553	29043	28961	0	0
+GCGCTCAACCAGCCGGAAACGGTACGTAGCTTCCCTAATATCTGCTATTTCGCGCTCTCTCCAGAAGATGAAGCCCGTGACGCGGCGCATCATATTTATGACCAGGGCAAGCAGTCGCCGCTGCTGTTGATCCCACGCAGCACGCTTGGCGATCGCGTGGCGAACGCCTTCACCCAGGAGTGGCAAAAACTGGGCGGCGGCATCGTGTTACAGCAAAAATTCGGCTCCGTAGCCGAGCTGAAAATGGGCGTGAACGGCGGCGCGGGTATCGCGTTGACGGGCAGTCCGGTCGCCGCCAGCGTGCCTGCGCAACCGGGCGTCACCATTGGCGGTCTGACCATCCCTGCGCCGCCGACCGACGCGCAAATCACCGGCGGCGGACGCGTAGACGCAGTCTATATTCTGGCTACGCCGGAAGAGATTGGCTTTATCAAACCGATGATCGCCATGCGTAACGGCACCCAGAGCGGCGCGACGCTGTATGCCAGCTCC [...]
+TGCGCGCTGCGGGAGCTGGCATACAGCGTCGCGCCGCTCTGGGTGCCGTTACGCATGGCGATCATCGGTTTGATAAAGCCAATCTCTTCCGGCGTAGCCAGAATATAGACTGCGTCTACGCGTCCGCCGCCGGTGATTTGCGCGTCGGTCGGCGGCGCAGGGATGGTCAGACCGCCAATGGTGACGCCCGGTTGCGCAGGCACGCTGGCGGCGACCGGACTGCCCGTCAACGCGATACCCGCGCCGCCGTTCACGCCCATTTTCAGCTCGGCTACGGAGCCGAATTTTTGCTGTAACACGATGCCGCCGCCCAGTTTTTGCCACTCCTGGGTGAAGGCGTTCGCCACGCGATCGCCAAGCGTGCTGCGTGGGATCAACAGCAGCGGCGACTGCTTGCCCTGGTCATAAATATGATGCGCCGCGTCACGGGCTTCATCTTCTGGAGAGAGCGCGAAATAGCAGATATTAGGGAAGCTACGTACCGTTTCCGGC [...]
+NODE	2412	147	8013	6491	0	0
+TGCTGGTGATTGCACGCCGCCGTTCAACACTGCAGTTAGCCGATCGGATCGTCGTGCTGGATAAAGGCCGCGTCGTGGATATCGGTACCCAGGCGGAGCTGGATGCAAGGTGTCCGACGTTTCGCTCGCTGATGAGCGGCGAGGGGG
+TCCGCCTGGGTACCGATATCCACGACGCGGCCTTTATCCAGCACGACGATCCGATCGGCTAACTGCAGTGTTGAACGGCGGCGTGCAATCACCAGCAGCATATGCTCATTATCGGCATAACGACCAAGAGCCGTGTTAATTTCCGCT
+NODE	2413	14	591	569	0	0
+ATTTTCTCGCCCTT
+ACCTTGCATCCAGC
+NODE	2414	621	27601	27344	0	0
+CCATCGTCACGATGCTGGTGGCCGCGCTGGCAAGACCGTTTTGCAGAAATCGGGCGAGTGAATCAACGTCGACGGTCATGCGAGTAAGACGCGAGTCGATGTGCTTCTCGTGCCAAGGAAGACTCAGGCGTAGCAGGTGGCTGAAGCTGCGTAAGCGTACCGTATGCTGTACCGACTCTGCCGCGCGGGCGGCGAAGATCGTTTGCAGCGCATAGCAGCACCAACCGATCGCCACCAGGCACAGCGCGAGCAGGGCGCATATGCCAATAGTCGACATATCCCCTGCGGCAACGCCTGAGTCAATACCGCGCTGCAAAAGCACCAGCACGCCAACGCCTGCGGCGGAATCAAGCGCGATAAGCAGGGCGGCGATGACGAACATCCAGGCTACTGGCGTCAGCAGCGATGAGACTTGACGCCCGTGGCCTGCCAGCGCCATCTGTACGGCGCGTTCCGGAACGCGCGTCATTCGGTCGACAAAACCTTTTCCAG [...]
+GCCCCGGCAGAACAACGTACGCTATGGCCAACAACGCAGGCGGTAAAATCCGACGACGCGCATGAGCGCCAGACACCCGCTGGAAAAGGTTTTGTCGACCGAATGACGCGCGTTCCGGAACGCGCCGTACAGATGGCGCTGGCAGGCCACGGGCGTCAAGTCTCATCGCTGCTGACGCCAGTAGCCTGGATGTTCGTCATCGCCGCCCTGCTTATCGCGCTTGATTCCGCCGCAGGCGTTGGCGTGCTGGTGCTTTTGCAGCGCGGTATTGACTCAGGCGTTGCCGCAGGGGATATGTCGACTATTGGCATATGCGCCCTGCTCGCGCTGTGCCTGGTGGCGATCGGTTGGTGCTGCTATGCGCTGCAAACGATCTTCGCCGCCCGCGCGGCAGAGTCGGTACAGCATACGGTACGCTTACGCAGCTTCAGCCACCTGCTACGCCTGAGTCTTCCTTGGCACGAGAAGCACATCGACTCGCGTCTTACTCGC [...]
+NODE	2415	1	400	71	0	0
+T
+A
+NODE	2416	650	33637	33303	0	0
+GATGCGGTGCATTACTGCGTGAAAGCGCGCGGTATTCGTGACGCAACCAGCGCCACGACGACGACGTCGCTGGGCGGATTGTTTAAGTCCAGCCAGAATACGCGCCAGGAGTTTCTGCGTGCCGTTCGCCATCATCCATGATTAAGGCGGAGACGATGGAGCGTAATGTCACGCTGGATTTTGTACGTGGCGTCGCTATCCTCGGTATCCTGCTTCTTAACATTAGCGCCTTTGGATTGCCGAAGGCGGCTTATCTCAATCCCGCCTGGTACGGCGCGATCGTTCCCGAAGACGCCTGGTCCTGGGCGATTCTCGATATTGTGGCGCAGGCTAAGTTTCTTACGCTGTTCGCGTTGTTGTTTGGCGCGGGGCTACAAATGCTGCTTCCGCGTGGTAAACAGTGGATTCAGTCGCGCTTGACGCTATTGGTACTGTTAGGTTTTATCCATGCGTTATTCTTTTGGGACGGCGACATTCTGCTGGCCTACGGTC [...]
+GCAGCAGTAGCACGCCAATCCCGACCAGATAAAGGAGTATGCCGGTATTGAACAGGCTTTTTACCGAAGGCGCATCGCGTATCAGTCGCCAGCAAATTAACCCGACCAGACCGTAGGCCAGCAGAATGTCGCCGTCCCAAAAGAATAACGCATGGATAAAACCTAACAGTACCAATAGCGTCAAGCGCGACTGAATCCACTGTTTACCACGCGGAAGCAGCATTTGTAGCCCCGCGCCAAACAACAACGCGAACAGCGTAAGAAACTTAGCCTGCGCCACAATATCGAGAATCGCCCAGGACCAGGCGTCTTCGGGAACGATCGCGCCGTACCAGGCGGGATTGAGATAAGCCGCCTTCGGCAATCCAAAGGCGCTAATGTTAAGAAGCAGGATACCGAGGATAGCGACGCCACGTACAAAATCCAGCGTGACATTACGCTCCATCGTCTCCGCCTTAATCATGGATGATGGCGAACGGCACGCAGAAACTC [...]
+NODE	2417	51	2249	2193	0	0
+ACTCGCCACCGATTCTCCCCGCGTCTATCACTTCCATAACATGTGCGACGG
+TAAGTTTCAGAATCGTTTAGTCGGCACGATTGTGTTAGTCGCGCTGGGGGT
+NODE	2418	1589	101188	99803	0	0
+ATGTTTGGCCGCGATTGTCCGCAACAGATCAAGCAGAAAACGGCGCTTCTGCGAATTGTCCCATGACGAGATAACAAACTCAGGGTGTAGCGGACGAGCTGGCGACGATGCAAAATGGGTAGTGATTTCGACACCCAGTAAATCCCCCTCCATTGCCCTTATCGGCTCTGCCATAAAAAAATAGCGCATGTGACCACTCCACTTGATCTTAACTCCCTGATAATGCGCTTTTAACGCAAATCAATCAATAAAAACGATCAATATATAAAAAATGATCGAAAAAAACAATATATGTTAACTTCATGATAACTTGCTAATTTTATGTTTTGAGAATGTTCTTCTATTGCTATAAGGAAATTTACATACTAAGCCGAACAACGCTAATATGACGGCATTAGACCATCCGTAAAGCCATGTTTTTCTTGTCAGGCAGAGGGGAAAAATCAAGGCGAGTTAATGGTGTTGCACCATCGCGTGGCATTTCACCCACTA [...]
+ATAATGATAACCAGCCGCCGAGCGAAGCAGGTAGTAATGGAATCTATGAGGCTTTTGAGCAACGTTTGATAGACTTCCTGACCACGCCCGCTACGGCGTCTGGTGATGAGAGCGGCGCTATTGATCAGACGGATACATCACAACCAGCGGCAATAGAGGCGTTTATTAACTCGTCGGAGTTTAAGAAAAATATTCGCATGCGTGATATTGAAAAAAATAAAATAGGTAGCGGAAGTTATGGGACAGTCTATCTGTTAAATGATGAGTTTGTTGTTAAGATTCCAATTAATGAGCGGGGGATAAAAGTGGATGTTAACTCTCCGGAACATCGTAATTGTCATCCTGATCGTGTCAGTAAGTATTTGAACATGGCTAATGGCGACAAGGATTTTTCTCGTTCGGCCATCATGAATATTAATGGTAAAGACGTTACGGTTTTAGTTTCAAAATATATTCAAGGTCGGGAGTTAGATGTTGAAGATGAAGATAACT [...]
+NODE	2419	42	3776	3733	0	0
+CCCATCCATGGGCCTCGCCCTGACGGGCCGTCGCACGCGACG
+TCCGTAGCCAACACATAAGCAACTTGAAGTATGAAGGGTATA
+NODE	2420	32	1525	67	0	0
+TTCCGGCATTCCCGCCAGCTCGGCTTCGTCGG
+AAAGCCCAGGCGGAAGCCAAAGAGCAGGAAGG
+NODE	2421	3942	253400	250719	0	0
+ATCAATGCCAGTATGCATTCTGTTTAAATCGGGTCTTCCCGGAACGCTGTAGCGGTAAAGCCGATCGCTTTCCTCCAGATCTTTTCCAGCCATTCGCATGGCGATATGCCCCTTGTTGCAGGTAATCTGATAATTACTTCCCAGATCGGTCCAGCCGCCAAAGGCACCTGTAACGGAATTATTCTGGAGCATAAAACCACCGAGTCCATTAATCTGGCCCGCTATGCGACGTAACCCATCTTCTTTAATATCCTGTCCTCCGGTTGTACAGGTAAGTGCTTCCAGACGACCGGATAAATTATTTTTTCTGATACCGGTAATATAGCTGTGTCCAAAGGGGGAGCGGGAAAATCCGTTGTTCAGATATCCCTGCTGAATTAATTCATTTACCGTGATGGTTTTACTGGAAAGTGAGCTGGTTTTATCAGCCACATAATTTTTTATTGCATTATTATATTCATCAGCATGTAAAGCCGCACTTTGATAAAGTTG [...]
+AGCCAGCGTCTGGTTCAGCTGATATGTCCGCACTGCCGTCGCCCCTGGCATGAGGTGGCCACCGGACGCACGGATGATGAACGGCGCCTGGTGGAAGGCTTCTGTAACCCGGACCAGGTGTATCTGCGAAATCATGAAGGCTGCTCACACTGCTGGCGTGGCGTGACGGGGCGAACGGTTATCGCAGAAGTCATCTCCCCGGATGCGCGTTTTTTCCAGTTGTACCGGGAAAAGGGTCGTATTGAGGCTAAAACCTACTGGCACAGAGAACTGGGCGGAATGACCCGAAATCAGCATCTCCTGGGAAAAATCAACAGCGGACAGGTTGATCCGCTGGCAGCCCATTACATCTCTCCCATCGACGAGGACAGCTATACGCTGCTGCACTGACATGAGATTTCTGGAAAAACTCAACAACACCGACATTGAGCTGACAGCACTGACCGTCTGGATAGCCAGAAAAACCTTTGCCCTGAACCGGGTGGAGTTCTA [...]
+NODE	2422	2	184	184	0	0
+TC
+CG
+NODE	2423	51	2750	2707	0	0
+GCCCAACGGAAGGACTGCTGCTACTGAGCAACTCAGCACGATACTGTAATG
+CCCAACGAGGCAAAAGCGGCGGTGGTGATGTTCTTTGATTACCAGTGTTCG
+NODE	2424	1722	99759	98103	0	0
+GTACGCTGACCGATAACAATGGCCGTAAGGCGGATTTCCGCAACGTGGTGCTGGTGATGACCACCAACGCCGGCGTGCGAGAAACCGAACGTAAATCTATTGGTCTTATTCATCAGGACAACAGTACCGATGCGATGGGCGAGATCAAGAAAGTGTTTACGCCGGAGTTCCGTAACCGTCTCGACAACATTATTTGGTTCGATCATCTGTCTGGCGAGGTGATTCATCAGGTTGTCGATAAGTTTATCGTCGAGTTGCAGGCTCAGTTGGATCAGAAAGGCGTCTCTCTGGAAGTCAGTCAGGAAGCGCGCGACTGGCTGGCGGAAAAGGGCTATGACCGGGCGATGGGCGCACGACCGATGGCGCGTGTGATTCAGGATAACCTGAAAAAACCGCTGGCCAATGAGTTGCTGTTTGGATCGCTGGTTGATGGCGGACAGGTCACCGTCGCGCTGGATAAAGAGAAAAATGCGTTGACGTATGGCTTCCAGA [...]
+GCGAGTCAATCCCCCCTCACCGCCATATTCAAGAAAGAGCTCGTACGAAAGTACGGGCTTTTGTATCTAAACTTCTTGTTTTTGCTGTGATTTTCCTGACAAAAGGTTCGTTTTGGACCTTTGGTTGCTATAGGGAAGTTGCTGTAGATTCTATAAAAACCGCCCCACTCCCCTACCTAAAACGCTTTAGAAAAGTTTGCATAAGTATCTCTCGGTAGTAAAAAAGCACCGAGTTCCTCTGTCTGATTCTGCCGTTGCTTTATTAGAAGGCTTACCGCGTTTGAAAAATAACAATCATGTATTCCCTGCCCCTCGCGCTGAAACACTTTCTGATATGTCGTTATTGGCTGCATTGAAACGAATGGAATATACCAACTTAACGCAGCATGGCTTCCGTTCTACTTTCCATGAGTGGGCTGGTGAAACAACGGACTATCAACGTGAGGTTATTGAACATGCGTTGGCGCACCAGTTGGCAGATAAGGCTGAAGC [...]
+NODE	2425	176	7245	7245	0	0
+ATATCCCCCAAACTAAGGGGGGATGAGAACCACCGACCGGGGTTCGACACAAAAATGCCGGGAGCGTTTTTGAACAGAGCTTGCTCTGGCCCCGAAGGGGCGAGGCCCAGGGATGGGCTGAGTAGCGGCGCAGCCAGTTGGACAGACCGGGCGCGCAGCGAACGGGCTGCCCGAAG
+GCTACTCAGCCCATCCCTGGGCCTCGCCCCTTCGGGGCCAGAGCAAGCTCTGTTCAAAAACGCTCCCGGCATTTTTGTGTCGAACCCCGGTCGGTGGTTCTCATCCCCCCTTAGTTTGGGGGATATATATAAGCAAAAAGCCCGTACTTCTGTACAGGCTCTCAACTTAAATATGG
+NODE	2426	59	2346	2346	0	0
+TCCTCCGTAAATTAAGGGTTAAGGCGGCGATGGTGGTGGATAGCGGCGGCAATCACCGG
+TACGGAGGAATCCATGACCATTGCCATTACCGACGTCGTCCTGCGTGACGCCCACCAGT
+NODE	2427	28	1754	1716	0	0
+GAGCGATAGCCGCCTCCACTGCGGCTTT
+GCAGCAGGCCGGAAGCGAACCTGCCGAA
+NODE	2428	1950	117040	115874	0	0
+GTGTCCTAAACGGTCGTGTCAGTTGGTTACATACCATTGAGGTGTGTACTAATGAAAATACTGCCCGTTGTCTCCACCAAAGGTGGTGAAGGTAAATCAACACAATCCGCAAATCTTGCTGGTTTTCTGGCCGATGCAGGTATACGTACCCTGCTGATTGACGGAGATCATGCTCAACCCACAGCCAGTAATATCTTTCCGCTGACATATGAAGCGCCAGCCGGCCTTTTTGAACTTCTTATGCGTACGGCTGACCTCACTCATCCCGATAATATCATTTCCCGCACGGCTATCGATGGCCTTGATCTGATTGTCTCCAATGATCCTCATGAACAGTTAAAAACCGCGATGCTTCACGCCCCGGACGGGCGTCTTCGCCTCCGGAATGTTCTGCAACATCCACTTTTCCTGAATAACTACGATGTCATTGTCGTTGATTCTCAGGGGGCGCGCTCCGTCATGCTGGAGATGATAGTACTGTCGGCGACTGAG [...]
+ACCCCGGTCAGAAGGTACGGACAGCATTCGCATACTCATAACAGATTGTTTTAAAGGAGAATTTTTATGAATACAGAAAAACAACTGCCGTCCGGCATTGATAACAACCATGATGAGGATGGCAACATGGCAAAATATTATGAAAACTGGAAAGCCGGAGGCATGAGCACCGACGATGTGGAACGTTGTAAAACCTTCTTTGACCAGGGAACTGAAATCTTTCCCGGGGCTGACCAGAAGCTCGCTTACCGACTTTGCTGGCTCGGACACTGGCTGATTAACAGCCGTCGCTGGTTTTTTCTGGACGATAACAGTATCAGCATTCAACAAGCCGTTAAGTTTGCTCTTATTCATCAGCATCACTGGCTCCCGGCAACGGTTGAGCAGATGACCCCCGCAGAGATGTCCCTTGCTCTGACAGATTACTGGGCTGACTACTGGACACAGCCGACTGAGCCGGAGAAGGCGCTGGTTCACATGACTGACTGGCAG [...]
+NODE	2429	21	2613	2586	0	0
+CCCTGCAACTGTTCGTCCGGC
+TTCAGACCGGTAAGTTTGCCG
+NODE	2430	5	214	214	0	0
+TCCCG
+TCAGA
+NODE	2431	2832	182479	181689	0	0
+CCCTTCGATATGGAAAATAGATGCTTTGGCGTTTTTCGCACCGTCGCCGAGGCTGTACATCAACAGCCCGCAGCCAACGGAACAGTAGGTGCAGGTGTTACGGGTTTCGCGGGTGCGCAGCAGTTTATATTGCCGTGTTTCCGCTAGCGCTACGCCGGGCGCGAAGCCCAGTGCCGCCGCCGTGGTGCCTGCCATACCGCCAGCGCAGATCTTAAAGAACTGCCTTCTGCTGACCTGCATGGTTTGCTCCTTGTTTCGACATTGTCACTTCTCTTTCACATTTCTCTATCCGAAACGCTCAGGGAGTGGTTGTTATTTTTCTTTGCGGACGGGCCCGCAAAGGTTCAGAATTGGATAAATTTTCCTCCATCCGGGAGGAGTTGTAACAGAATACCATAATGTTGGTGTGTGTGTTCTTATATGGTTAAAAGAAAGTGAACAATATACTGTCTGAAGAAGTCCTAAATGTGACTGATTTCACAACCTCACGCC [...]
+TATCGCTGAGGATAATAAATTCCTTTTCATTTAATTGCCTTTTGTATATTTACGTTGGGGTTCTCTTATTTTAACGAACACATTGATATTGATAATGTTAATTATAATGAAATATGGATTAAGTATTTTTTGTGTTGAATAAATCACATACCTGTTTTTTTTCATTAAAATGAATCTGTAAATTTCAATGATATTATTTATAGGTTATTCTAATGAAAAAGGATTTGTTATCATCAATTATTATCGCTATGCTGATGACTGCCGGGCTAAGCGCTTGTGATGAAAAAAAAGCGGACGAACAACCTGTAGCTCAGAGTGCGGATTCATCAGCGAGCAATACACAATCCACATCAGCGGAAAGCGCAGATGCGAACGATGTTCTTAACCAAAAGCTGAATGTTTACATTGATTGTTATAATAATCTCCAGGCAGATATTTACCGTGCTGTAAATCGTTATGCTAACACATTCGACGATTTCCGCACCGGTCCTA [...]
+NODE	2432	3	913	6	0	0
+ACT
+TTG
+NODE	2433	44	5624	5438	0	0
+CATAATATTTACCTGTGAACTGATAACGGAAACGACCATTTTCC
+AAAACAAAAGCGCTGCTGATTGCAGCCCTGCTGTTACCGGCAAT
+NODE	2434	264	18550	18431	0	0
+AGCCGCAATTCAGTCTCTACAGCAGAAGTTAGCGGCAAAACCATCAACCGCACAAGATGTTGGTGAGTTCGTTGGACAAGCAGCACCATTTGTTAGTGGTGGTGGGATTATTTCTCAGGTTCCGAAAGGGGCGGCAAGGCTGGCTGCCGCCGCAGGGCTTGGTGCTGGAGAAGGGGCTATTGTAGCCAATGGAACAAATAGCGATGTTGCTTCCGGCGCTGCTATTGGCGCTGTGGCTGGCCCTGTAGCCGAGATTGTTGGTCC
+GGAAGCAACATCGCTATTTGTTCCATTGGCTACAATAGCCCCTTCTCCAGCACCAAGCCCTGCGGCGGCAGCCAGCCTTGCCGCCCCTTTCGGAACCTGAGAAATAATCCCACCACCACTAACAAATGGTGCTGCTTGTCCAACGAACTCACCAACATCTTGTGCGGTTGATGGTTTTGCCGCTAACTTCTGCTGTAGAGACTGAATTGCGGCTTGCTCTTCTGGTGTCATATCCTGAAACAGGCCAACACCTTTACCAACATC
+NODE	2435	5	305	305	0	0
+TTTGG
+ATACC
+NODE	2436	51	3678	3678	0	0
+TCAAAGACCATAAACTCCAGGATACCAGGCTCATCGTTTGGAATTTCAACA
+ATAATGGTAACTATCGTTCACGCGAAGATGCGAAAAGTCTGTTGCCGCTCG
+NODE	2437	1266	59560	57494	0	0
+GTTCATCACCAGCCACAACGTCGCGGACAGCGCCGTCAGGCTACGCCAGAACGTTTCATTCGCCGTAACCACGCCCGCACGGGTAATCCCGATCCAGTACGGCCCGACAGAGATGCCAGCCAGCAGCATTTGCGGCTCGCGGCTGATGCTGAAGATAATCGTTATCACGCCGACCAACAAAAATCCAAAAGGTATCGCCATCCATCGACACCAGCGCCAGAGGGATATGCGCAATAGCCAACAGCTCAATCCGGCAATGATCAGCAGCTCAATGCCCTGCCCTACAGGCGGCAGAACAAACGCCAGTATCATCATCGCCAGCCACAGCAAAAACTTGCGCTGCGGCGCAACGTGTGCCCAGCGGCTTTGATAGCTGAGTCGATCAAGCCCGGTCATCACGGCGTTGTTTACCTTTGCAATACCCCAGGATATAAAAAATCACCGCCGCGCCAAGAGAGCCCTGAAGGGTAAACAGCAGGCTTTCAATTTCAC [...]
+GTATTGTGCAGGAGGATAATCATCAGAAGGTACTGCTGGCGCTGTGCGGCGCGTTTATTTTTGTCCTGTCCGCGCTCAAAATTCCGTCGGTAACGGGGAGTTGTTCACATCCGACCGGCGTTGGTCTGGCGGTTATCTTGTTCGGGCCCGGGGTGGTGGCGATTCTCGGCGCGGTTGTGCTGTTGTTTCAGGCGCTATTGCTGGCGCACGGCGGCCTGACGACGCTTGGCGCAAATGGAATGTCGATGGCGGTGATTGGCCCGGTTGTCGGTTATCTGGTGTGGAAAATGGCCTGCCGTGCCGGACTGCGCCGTGATGTCGCCGTTTTTCTGTGCGCGATGCTGGCGGATTTGGCGACCTATTTTGTGACTTCAGTCCAGCTTGGCGTTGCGTTTCCCGATCCCCATGCCGGAGCGACAGGGTCTGTTGTGAAGTTTATGGGGATTTTCTGCCTCACACAGATTCCTGTCGCCATTGCCGAAGGTTTATTAA [...]
+NODE	2438	723	51848	51342	0	0
+AGGTGCTGTCAGCTATATGTTTGACAATACTGGAGTGATTGTATTTAAAGGAACAGACCCTGACCATATTTTTGAAATTTTGCTTGATGCTGAAGTTGATGTTCGTGATGTAACCGAAGAAGAAGGAAACATCGTTATTTATACTGAAGCTACAGACCTGCACAAAGGAATTGCAGCGCTAAAAGCAGCTGGAATTACTGAATTTTCAACAACAGAATTAGAAATGATTGCTCAATCAGAAGTTGAACTTTCACCAGAAGATTTAGAAATCTTTGAAGGACTTGTTGATGCCCTTGAAGATGATGATGATGTGCAAAAAGTATATCATAACGTTGCAAACCTCTAATTATAAATTAAACAAATCTGTCTCTATGGCAGATTTGTTTAATTTATAAAGCTGTTATAAAAAAGCCTATCTGGCCAGATATATAGATTTTTAAATTTATGTGTCTTATCATGACCTGATCTGACACATAGCCTTAAAAGGTTGAG [...]
+TGAGTCATCATGAGCGCAAGCGGAATTTATGAGGCGCGGCATCTTAAAGAGCACGGGGAGATTGTAAGTAGCCTGATATTGCTGGCTTTTGCTTAGCTTGCTGACGGGATTCGTCGTATGAAGCATGAAAATTACCTCATGTTTTATATAAGGATTCGACACTATATCAAAACCGGTAACTCTCAACCTTTTAAGGCTATGTGTCAGATCAGGTCATGATAAGACACATAAATTTAAAAATCTATATATCTGGCCAGATAGGCTTTTTTATAACAGCTTTATAAATTAAACAAATCTGCCATAGAGACAGATTTGTTTAATTTATAATTAGAGGTTTGCAACGTTATGATATACTTTTTGCACATCATCATCATCTTCAAGGGCATCAACAAGTCCTTCAAAGATTTCTAAATCTTCTGGTGAAAGTTCAACTTCTGATTGAGCAATCATTTCTAATTCTGTTGTTGAAAATTCAGTAATTCCAGCTGCTTT [...]
+NODE	2439	270	12971	12772	0	0
+TGGATTCAGCCTCGCCCCATTCAGCTACGCTTCATTGAACTTATGGAGACGGGCGAGGGGAGCGATCTCTTCCGCAAACATCATATTTCGGGTCAGGTATTGCGCGACGAGCTGATTAAGCGCGGCTGGATCCACCAGCTCCGCCAGCGTAGCGATGGCCCGGCGCAGGTTTTTTGTCATCCCGATTACGCCGGTGAGATCGGTCTCATTATGCCGTACGAAAAAGATTTCTGCGCCACCTGTAACCGCCTGCGTGTTTCGTCCGTCGGG
+CGTACGGCATAATGAGACCGATCTCACCGGCGTAATCGGGATGACAAAAAACCTGCGCCGGGCCATCGCTACGCTGGCGGAGCTGGTGGATCCAGCCGCGCTTAATCAGCTCGTCGCGCAATACCTGACCCGAAATATGATGTTTGCGGAAGAGATCGCTCCCCTCGCCCGTCTCCATAAGTTCAATGAAGCGTAGCTGAATGGGGCGAGGCTGAATCCAGGCAAGGAAGGTATCCAACTGATGGTGATTCACGTCGCGCATCAGCACGG
+NODE	2440	1135	64607	63969	0	0
+TCGGTGGGTGACGTGACGACGCTTTCCAGTGATTTATCTGTCGCCGCCGCCACCTCACGCGTCGGGTTTAACATCGGGCGCATTAACGGACGCTTGCTGGATCTGGAGCTGTCAGCGCTGGAGCAAAAGCAGCAGTTGGATATTATCGCCAGCCCCCGGCTGCTGGCTTCCCATCTGCAGCCAGCCAGTATCAAGCAAGGCAGCGAAATTCCTTATCAGGTTTCCAGCGGCGAAAGCGGCGCGACCTCCGTGGAATTTAAAGAAGCGGTGCTGGGAATGGAGGTGACGCCCACCGTTTTGCAAAAAGGGCGCATCCGCCTGAAGTTACATATCAGCCAGAATGTCCCCGGTCAGGTACTACAACAGGCTGACGGCGAAGTGCTGGCGATAGATAAACAGGAAATTGAAACGCAGGTAGAGGTAAAAAGCGGCGAGACGCTGGCGCTGGGCGGTATTTTTTCGCGAAAAAATAAATCGGGTAGCGATAGCGTG [...]
+GCGTTTCTCTGCCATTTTTTCGGTACTACTAAGACTATTCGTTAATGGTAAACCCGCTTCACAGACACCCAGCGCAGCAGGACATGAACTGAAACCTCATAAGATATTGCGAGAGTCAGACTGAAAATTATCTCAATACTCAAGCGGGTTTGGCAACTGAATAAATCACCAAGCCTGATTGTTGCAAAACCCGAGTTAGCGTTGCCGGATGGCGGCCAGAACAACATATCCGGCCTACAAATTGTTCTACTTTCAAACAATTGTGCGCAATCCGCAGAACCAATACGTCTGCATCAGCGGACATTCAGCCGTTTATCATCGGTCTTATGCACACCTTAGGCAAGGCAAAGCGCATTAATCAATGCGTAAGCAACGAAAAGCACGACTCTCAAATCGGTACTCCTTGTATGCTAAATACATCCGCACGTCAAATCCCGCAGATGCGTTCAGTGCAAAAACAGCGCTTTTTTATGCATAAATTATTCTGTCGCC [...]
+NODE	2441	12	1010	1010	0	0
+GCCAAAAGGCGT
+ACCCGTCGCACG
+NODE	2442	1552	73774	73008	0	0
+CGTGGGTGAAGTGAAATCCTGCCACGTTATCCCGCGTCCGCACAGCGATGTTGAGGCCATTTTACCGAAATCAGCCTAATCGATGGCGAATAAGGAGCACCGCGTGAAGCAATCACTGGGATTACTTGAAGTTTGTGGTCTGGCACTGGCTATCAGCTGCGCCGATATCATGGCGAAATCCGCTTCTATCACGCTGCTCGCCCTCGAAAAGACCAATGGTTCAGGCTGGATGGTGATTAAAATTACCGGTGATGTGGCCTCCGTTCAGGCGGCTATCACCACCGGTGCGCATTTCGCCGAACAGCGGAATGGCCTGGTGGCCCACAAGGTTATCGCCAGGCCCGGAGAAGGGATCCTGCTCGCAGAGACGCCTCCCCCCTCCGTCATAGAACCTGAGCCTGAAGCGTCAGAGATGGCCGATGTCGTTTCTGAAGCGCCAGCCGAAGAGGCCCCGCAGGAATCAGAACTGGTCAGCTGCAACCTGTGTCTGGA [...]
+CAGACGAGCCAGTTTTTTTACCGGGATAACCGGCAGCAACTGGCTGTGCAGGCTGAGCTGTACGCGGATGCCAAACGCCAGCGCGTCGTGAATTTTCCGGGCGGCGGCATCGTCGGTTTCTGCATCCGCAAGCTGACCCAGCAGCGGCAGGTCGACGAGCAGGATGCGCAGCGACGCGTGCTGACAGAACAGTGCTGGACAGTCGGCATCACGAAGTTGCGTAACGCTCAGCGTCGCCGTGCTCTGGGCACGGCGCTGCAGCCGGGAGACAATCTCCTCGACAATGCGCTGCAGAGTTTCGCCGTTCATCGCGGGCCTACCAGCCGGGCAAAGGCCTGCGGGTTATCGGCACCAGCGGCGTTGGCTTCATCGGTATCAATGTGCATTTCGAGGCGCATGTCCGGTGAAACGCGAATCGCCACGTTGTTGAAAATCAGCCCGCGATCGTCGCCTTCAATCGCCACGGAGACCATATCGCCGTGGGAAACCCGC [...]
+NODE	2443	51	2892	2892	0	0
+ACCTGCCGGGCTTCAATATTCCTATGCTGCCGCGTGAGCTGTCTGACGATC
+TAGTTGGTGAAGGCGCGAATTTTCGCGGCGTTATCCAGCTTACTGCCTTCG
+NODE	2444	184	8263	8263	0	0
+CGTTCGGTGGAAACGAGAATAAAGCGTGAAGGATAACGTTGCGTCAGCAACGGCCCGTAGGGCGAGGCGAAGCCGAGTCATCCTGCACGACCCACCGCTAACTTCGGTTAGTCAGTAATATCCAGCGTAGTATCGGGTGATTAGCTCAGCTGGGAGAGCACCTCCCTTACAAGGAGGGGGTCGG
+GATACTACGCTGGATATTACTGACTAACCGAAGTTAGCGGTGGGTCGTGCAGGATGACTCGGCTTCGCCTCGCCCTACGGGCCGTTGCTGACGCAACGTTATCCTTCACGCTTTATTCTCGTTTCCACCGAACGATTGGTGGGTCGTGCAGGATTCGAACCTGCGACCAATTGATTAAAAGTCA
+NODE	2445	10	768	768	0	0
+GCAACGTTGA
+GTAAGAATTG
+NODE	2446	6	300	288	0	0
+GTTTGA
+GAAATA
+NODE	2447	51	3138	3051	0	0
+ACCGGCTATGACCTGCCGATGTCCGAACTGCAGAATTTCCGTCAGCTACAT
+TGAGGTGCAGCAGGCTGTAAATCAGCATTGAGCCGTGGCCATTGGACAGCA
+NODE	2448	51	1806	1793	0	0
+CGCTTCTGTTGTGGCATGGTCAGGAGGATGACGTGGTGCCTGCTATCGAAA
+GGCCTGTCGGCCAGTCGCTCTAACTGGTGTGTGACTTCCCATTCACGTAGC
+NODE	2449	6	709	649	0	0
+CTACAC
+TGACGA
+NODE	2450	682	38339	38150	0	0
+GCAGCGGCCATTTTTTTGCTCGTCATAAACATAATACTCTCTCCTGAATTAACGATTCACGGAATTAAGCTCACTATAACTATAGTTAAAATAAAACCTGTTAAGAGATTTTCCGTAAAACCTGATTGCGCAGGGGTATATCACGCAGGTGATAGTCACTTCCTGTTATTTCGCTAATATTAATTTTACGACGTTACGCTCGTTACAACAGGTAAATAGTCTTAATTGGGATGTCAGAAAAGTCTTAGAGAGAGGATGATTTGCCATAGGGCAAACCATCGGGAAATATTTTAAACGGATGAGCCAATAACATTGACTAGCAGCCCCGCATGTTCTAACTGCATTTGATCGCTGGCGGAAATTCTGGAATCCGTAATGACACGATGGAAGCGAGAGAGCGGGCCCAGGGGATAGGGATGCACACAGCCAAATTTGGAGCTGTCGGTGAGGACAATCGCTTCTGAACCTTTTTCCAGAACAGCGTTAACCACA [...]
+TATCAGAAAAAAAGTGAAAGCATGGTAGGGCCGTTGACGCGACAGTTTATCCATCAAGTGCATTTCAGCAAAGCATTTATCGGTATTGATGGCTGGCAGGCTGATACCGGTTTTACCGGACGCGATATGATGCGATCGGATGTGGTTAACGCTGTTCTGGAAAAAGGTTCAGAAGCGATTGTCCTCACCGACAGCTCCAAATTTGGCTGTGTGCATCCCTATCCCCTGGGCCCGCTCTCTCGCTTCCATCGTGTCATTACGGATTCCAGAATTTCCGCCAGCGATCAAATGCAGTTAGAACATGCGGGGCTGCTAGTCAATGTTATTGGCTCATCCGTTTAAAATATTTCCCGATGGTTTGCCCTATGGCAAATCATCCTCTCTCTAAGACTTTTCTGACATCCCAATTAAGACTATTTACCTGTTGTAACGAGCGTAACGTCGTAAAATTAATATTAGCGAAATAACAGGAAGTGACTATCACCTGCGTGA [...]
+NODE	2451	687	40711	40538	0	0
+AAATATCTATAACGGAATGTTTATTCCGTTGCTCTGTCATAAAGCCGATGCTTACGCTGAGATGGGGGATACCCGGGGCATTGAGCGTATGCATTTAATCTCCGGCATTGGGCTGTCGCTGACGCTGGGGATTATCGTCACGGTCTCTTATTTAGCGGGCGTGAATATGGTTAAAGGTTTTCTGGATGCCATTCCAGAATTTATTAAACATGGATTAAGCGTTGCCACCGGTATTATTCCCGCGCTGGGTTTTGCCATGCTGGCGCGCTTATTAATTAATAAAAAGGTCGCCCCCTATTTTTTCCTCGGTTTTGTTTTAATGGCGTATTTAAAAATTCCGGTGACGGGTATTGCGATTCTCGGCGCGATCGTCGCCGTCGTGATGGTCAATATGCCGAAATTTGCGGCCTCGCAACCGGCACCTGCGCAAGGAGCGTCTCATGACGATGAAGATGATTTCTGATAAAGACCACCAGCAGGCGGAAACCACTG [...]
+TCTTCTTTTCGGCTATACAGTTTCTTTAATACCGGAATGAGCGTATAGACGAACGCCAGGTTCATTTGTCGTTCATAGTTCCAGGAAAACTCCATCTGGAATGACCGCCAGAAGACGCGGCGTAAATCACGCGCGGTGACCAGACCAGTGGTTTCCGCCTGCTGGTGGTCTTTATCAGAAATCATCTTCATCGTCATGAGACGCTCCTTGCGCAGGTGCCGGTTGCGAGGCCGCAAATTTCGGCATATTGACCATCACGACGGCGACGATCGCGCCGAGAATCGCAATACCCGTCACCGGAATTTTTAAATACGCCATTAAAACAAAACCGAGGAAAAAATAGGGGGCGACCTTTTTATTAATTAATAAGCGCGCCAGCATGGCAAAACCCAGCGCGGGAATAATACCGGTGGCAACGCTTAATCCATGTTTAATAAATTCTGGAATGGCATCCAGAAAACCTTTAACCATATTCACGCCCGCTAAATAAGA [...]
+NODE	2452	51	2049	2049	0	0
+ACCCTGCGCCAGAACGGCTGCCGGGCCGCCGATACTGCCCAGGTAGAAGCC
+TAGTATCAAGCGCCTGGAGTGCGTGGAATATCCTGAACTGGGTATGGAGGC
+NODE	2453	111	4867	4796	0	0
+ACGTTATCAGTGGCTGGGGATGGCGCTGTCGGCGAGTGAGAAGCGGTATGCGGACGGGAGTCCGGCGCTGCGTGAGCAGTGGCATTACCGGGGCGGTTTTGAGCTGCTGGC
+ACTCCCGTCCGCATACCGCTTCTCACTCGCCGACAGCGCCATCCCCAGCCACTGATAACGTACCTCGCTGACGGTGTGGTGATTTTGTTTCCACGCCGCACGGATAATATT
+NODE	2454	7	7	7	0	0
+TATGGCG
+CCCAGCC
+NODE	2455	51	165	165	0	0
+GTTAAGCGTGTAGGTGTGTGTTCCAGGTAAATCCGGTTCACTTTAACACTG
+CCCGGGACAACCGTCGCCCGGCCAACATAGCCTTCTCCGTCCCCCCTTCGC
+NODE	2456	6	289	289	0	0
+GCATGG
+GCGTTC
+NODE	2457	20	1095	1095	0	0
+TTTAGCCCCGTTACATCTTC
+ATGCGTTGTTGGGTAGGGGA
+NODE	2458	287	16669	16261	0	0
+TCACTTACGTCATCGGGTCGATAACCATATATTTCCGCCGTTTTATCGGCTATGGCCTCCCTCAGCGCCTGCGCGCCCGTCATCGGCGCATATTGATTCGCGCCCTGCGCGACATGATAAGCCAACCGCTCGTGCAAATAAGAAGGACCATCAAAATCAGGGAAGCCTTGCGATAAATTTATTGCCTGATGTTTCTGCGCCAGCGCGCTCATTTGCGTAAAAATCGTGGTGCCAAGATTGGGCAATTTGCTTTTTGGAATCAGTGGGTTATTTCTCATTATCTTCAT
+TCTTGGCACCACGATTTTTACGCAAATGAGCGCGCTGGCGCAGAAACATCAGGCAATAAATTTATCGCAAGGCTTCCCTGATTTTGATGGTCCTTCTTATTTGCACGAGCGGTTGGCTTATCATGTCGCGCAGGGCGCGAATCAATATGCGCCGATGACGGGCGCGCAGGCGCTGAGGGAGGCCATAGCCGATAAAACGGCGGAAATATATGGTTATCGACCCGATGACGTAAGTGATATCACCGTCACAGCGGGCGCGACAGAAGCGCTGTATGCGGCGATTACCG
+NODE	2459	51	55	55	0	0
+CGCACGTACAGGGGCGCCAGTCCATCATCGCCTTTCGCCGCTTCCGCAGAG
+GGCCGCCACAAAGCACTCTGACTATCCATGTCGGGAAGCGCAAAATCAAAC
+NODE	2460	31	1547	1485	0	0
+TCATCAGAATTTGTAACCTGCAAGGGCGTGA
+ACCCGTCACGCTTTTGATGCCTTTTGGCAGA
+NODE	2461	16	1015	1015	0	0
+ACCCTGGCGGCGCAGC
+AAGTCCGCAATGACGT
+NODE	2462	4	449	337	0	0
+TATG
+CGGC
+NODE	2463	12	629	629	0	0
+GCAATATTGCCG
+GTGGATGAATCA
+NODE	2464	442	22861	22801	0	0
+CCGTGCAATGACCGACCGGCGCTGGCGTAGCGCGTCTTCAATTAATATCAACAGCTTGCCCGGATCGACGGGTTTTTGCAGAAAATCCCAGGCGCCCTTTTTCACCGCGTCAACCGCCATCGGTACATCGCCATGTCCGGTAATCAATAAGATTGGCAGTTGATCGTCATCCTGATGAAACAGCGTCATAAGATCGATACCGGAACACCCCGGCATACATACATCGCTCAAAACGATCCCCTCCCAATCCGCTTTTACCCACTCTTTGGCCTCGAAAGGATGGGTAAAGCCACGCACGCGGTAGCCTGCCTGCTCAAGCATTTGGGTATAGGCGTCAAGTACATCAACGTCATCATCAATCAGCAAAATAGAACATTCATCATTCAACATCATCGACATCCGTTACCGAGAATTGCAGCACCACGCAAGCGTTACGCGTCAG
+TGATGTTGAATGATGAATGTTCTATTTTGCTGATTGATGATGACGTTGATGTACTTGACGCCTATACCCAAATGCTTGAGCAGGCAGGCTACCGCGTGCGTGGCTTTACCCATCCTTTCGAGGCCAAAGAGTGGGTAAAAGCGGATTGGGAGGGGATCGTTTTGAGCGATGTATGTATGCCGGGGTGTTCCGGTATCGATCTTATGACGCTGTTTCATCAGGATGACGATCAACTGCCAATCTTATTGATTACCGGACATGGCGATGTACCGATGGCGGTTGACGCGGTGAAAAAGGGCGCCTGGGATTTTCTGCAAAAACCCGTCGATCCGGGCAAGCTGTTGATATTAATTGAAGACGCGCTACGCCAGCGCCGGTCGGTCATTGCACGGCGGCAATATTGCCAGCAGACGTTACAGGTTGAACTGGTTGGGCGCAGCGA
+NODE	2465	39	2809	2809	0	0
+ATAACATCGGGTGGGATGAAATCGTAAAAGAAGATAATG
+CTACATTTTTCGCAGCTGCTTTTTTTTAACGTCATGCTA
+NODE	2466	51	132	132	0	0
+GATCGAAATCGCCCAGCGCGACCGGCAGGCCATCCAGCGGGGTTTTAATGA
+CCCTTCCCGGTGATTATGTCGCTTGTGGGGCTGGCTGTTATTCTCGGTCTG
+NODE	2467	14	1701	1481	0	0
+TCCCGCCAGTCTCA
+TTATGTACTATATA
+NODE	2468	28	77	77	0	0
+AAATGCACAGGAGGGTATGTACTATATA
+CCCCGCCAGTCTCAAGAGAAAACGCATT
+NODE	2469	102	3400	3193	0	0
+GATGCCTATCGCCGCCGCCTGCGGCAGGGTGAAGGCAATCAGGCCGAAGTAATTCAGCGTCAGCGCCCCCAGCACCGTGGCGAAGATACCGAACTGCGCCGC
+TTACTTCGGCCTGATTGCCTTCACCCTGCCGCAGGCGGCGGCGATAGGCATCATCGGCGGCGCGGACGGCCCGACGGCGATTTATCTGTCGGGCAAGCTGGC
+NODE	2470	43	4174	4174	0	0
+TTCACGCACACGCTGCAGGTTGTTGTTGATTTCGTTCAGCGCG
+TTCAGTCTGCTAACAGCACTAACTCCCAGTCTGACCTCGACTC
+NODE	2471	5	212	206	0	0
+TGGCG
+ACCCA
+NODE	2472	51	2295	2295	0	0
+ACGCGACCGCGCCACGGCCAACGCGTCCTCTGAGCTGGTGCAGCTGCGCCA
+TCGCACTGCGTGCTGCTCTATAAATCACCGTTGTCGAAAACGGCGCAGAAG
+NODE	2473	27	1330	1273	0	0
+CCGCCGCCAGTTGTACGCGCTACTGTA
+GGTGCCGAGTGCGGCAAGGATCTCCTG
+NODE	2474	51	3393	1653	0	0
+CGGTAATACTGTGCCGGATGGCGGCTGCGCCTTATCCGGCCTACAAGATTT
+GCTCGTTAACCCAAATCCGCATTTCTCCCTCGCCACGGTTGGCCCAGCTAA
+NODE	2475	1148	64042	63659	0	0
+GCAATATCAGTACATTGCGATGAATTTTTGTAGGCCTGATAAGCGAAGCGCCATCAGACATTACCACCAGGCTAATATCAACGCGGTAGACCCGATAAGCGAAGTGCCATCGGGCATTACCACCAGACTGATATCAATGCGGTAGGCCCGATAAGCGCAGCGCCATCGGGCATTACCTCTTGCGTCAGAACAGCCCCAGCGGCTTATCGGAATAGCTCACCAGCAGGCACTTGGTTTGCTGGTAGTGTTCCAGCATCATCTTATGCGTTTCGCGCCCGATGCCCGACTGCTTATAGCCGCCAAACGCCGCGTGTGCCGGATAGGCGTGATAGCAGTTGGTCCATACGCGCCCGGCCTGAATGCCGCGACCCATCTTATAAGCCAGATTGCCGTTGCGGCTCCAGACGCCTGCGCCGAGGCCATACTGCGTATCGTTAGCGATTTCCAGCGCCTCCTCCATGGTTTTAAAGGTGGTTACCGCCAGCACCGGGC [...]
+TCATTGGCGATCTGTTACCGCCGGGCGTCGTCAACGTCGTGAACGGCGCGGGCGGCGAGATCGGTGAATATCTGGCGACCTCGAAACGTATCGCGAAGGTGGCGTTTACCGGTTCGACGGAAGTGGGTCAACAGATCATGCAGTACGCCACGCAGAATATTATTCCTGTGACGCTGGAGTTAGGCGGCAAGTCGCCCAATATCTTCTTCGCCGACGTGATGGATGAGGAAGATGCGTTCTTTGATAAAGCGCTGGAGGGATTTGCCCTGTTTGCCTTTAACCAGGGCGAGGTGTGTACCTGTCCAAGCCGTGCGCTGGTTCAGGAGTCCATCTATGAGCGCTTTATGGAGCGCGCTATTCGCCGGGTAGAGAGCATTCGCAGCGGGAACCCGCTAGATAGCGGTACACAGATGGGGGCGCAGGTCTCTCACGGCCAGCTTGAGACTATCCTCAATTATATCGATATCGGTAAAAAAGAGGGGGCCGATATTC [...]
+NODE	2476	51	2359	1864	0	0
+TTTTACACGCCAGTTTAGGGACGTTGTTGACCATCATGCCGCAAGAGCCGC
+ACCTTCCTGCGCGATTACACCAACGGTATGAAGGTGGAAGCGCTGGCGAAC
+NODE	2477	4533	256897	255160	0	0
+TCCGCCGACTGATCGTATTTTTATTCGTGTTGTTTATCTTCTCGTTCTTAGACCGTATCAACATCGGTTTTGCCGGGTTGACGATGGGGCAGGATCTGGGGTTAAGCGCCACCATGTTTGGCCTTGCCACGACGCTGTTTTACGCCACCTACGTCATTTTCGGCATTCCCAGCAACGTGATGTTGAGCATCGTCGGCGCCCGCCGCTGGATTGCGACCATTATGGTGCTATGGGGCATTGCATCTACCGCTACGATGTTCGCGGTGGGACCGAAAAGCCTGTATGTGCTGCGAATGCTGGTGGGCATTACCGAAGCGGGCTTTTTGCCAGGAATATTGCTCTATTTAACCTACTGGTTCCCGGCATTTTTCCGCGCCCGCGCCAACGCATTATTTATGATTGCCATGCCGGCCACTACCGCGTTGGGGTCGATTGTCTCCGGCTATATTTTATCGCTGGACGGCATATTCAATCTGCATGGATGGCAGTGGT [...]
+GCCTCTGACATACTTCCCCCAACGGAAGAAATATAGCCTTTCACCGCGCACAACCCGATCAACGAACCGCCAATGTCAGCCATTAATGCGCCATTGCGAAGATCATCGTTTAAATAAAGACCAGCCACACGTTCACATTTTTTAGATACGTCGGTTATTTTTACACGTTAGCGATCATTTATTGCCTGAAGAATATATTCTTTCACTGTTTTGTACTCTCTGGTTGATACGTACCTTCTCCCTGTCAATGCCGGGTAAAATGTACCGCTGCGCTTACAGGTTGCGGTATTTATAAATAAGAAATACAACAGTCACTTACAGTTTAATAATTGAGCGTTATAACATCCACTACCGCCCAATATTTACACCACGCCTAAAATACAAAAATGTAATAGAATGTAAACAAAATAAGAGCATAAAATAAATAACTTATTAAAAAATCAATATAAATAGAGTGGTCAATAAAAAACGATCGTTTTCAACGAGTTATGT [...]
+NODE	2478	4	761	761	0	0
+GGTC
+TCGG
+NODE	2479	68	1789	1621	0	0
+ACCGACAGCATCTGTAGTCCTGCCGGCAACGGCGGCAGGCTGGTCAGTTGGTTATCTTCGACAGTAAG
+ACTACAGATGCTGTCGGTAGCAGGTAATCAACTGACCCGCCTGCCGGCGCTGCCGTCAGGCCTACAAC
+NODE	2480	51	1673	653	0	0
+CCATCACTCAATATTGATATTATTTACGGCATTCCCGGCCAGACTCACGCA
+GAAAATGACCCGCCTTTAGCCACTCCAGCGCCTGGTGCGCGCTGGCGGCAT
+NODE	2481	2284	127094	126357	0	0
+CGTGCATCAGGCGATTGCGATGGTGGAGTCGGAAGAGGTTCCGGCAGGCAATGTGCTGGGTATTATGCAGAAAGGCTATACGCTGAATGGTCGTACCATTCGCGCGGCGATGGTGACGGTAGCGAAGGCGAAGTAAAAGTCTGATGGCCGATGTAAAGTCGGCCATTTTTTTAGCTTAAAAAATCCTGCACTTCCAGCCACGGCGTGTTGAAATCCTCTATTTTTTTATATTCGCTCATTGGCAGAACGACCACATTATAGGTGTCAGATCCTTCATTCAGATCAAAAATCTGGAAGCCCCTCTTATTGAGTTCGGTCTGGATGCGTTCAAAGATCTCGTCAAGGTAACGGTCCCCGGCTTCACAGACATCGGAGATTTCATCCTCTTGGGTTATTTCGACAAGAAGATTTCTTAATTCCTCAGAATCCGTCAGGTTTTTTGTGAGTTCATAAAAGCGATCTGCGGCAAAATTAGCCAGTTCGCCTTCTTCA [...]
+GTAGCCGCATATTACAGCAATTTGTAAGCTAAGCTTTTAAAGGAGTTTCCCCTGGAACACATTTCCACCACCACGCTGATTATCATATTAATCATCATGGTGGTCATCTCGGCCTATTTTTCCGGTTCCGAAACTGGAATGATGACGCTAAACCGTTACCGTTTACGCCATATGGCGAAGCAAGGTAATCGCTCGGCAAAACGGGTAGAAAAATTATTGCGTAAACCCGATCGACTGATAAGCCTGGTGCTGATCGGCAATAACCTGGTCAACATTCTTGCCTCGGCGCTCGGCACGATTGTGGGTATGCGGCTTTACGGCGACGCCGGCGTGGCTATCGCCACCGGGGTATTGACGTTTGTCGTGTTAGTTTTTGCTGAAGTCCTGCCCAAAACTATCGCCGCGCTCTATCCGGAAAAAGTGGCCTATCCCAGCAGCTTCCTGCTGGCGCCGTTACAGATACTGATGATGCCGCTGGTGTGGTTACTTAAC [...]
+NODE	2482	51	1804	827	0	0
+ACCCGCCGACCCCGCCAGCCCTCATGGTAATGCCCCCACAGCAGAACGATA
+TCGTGTGGTTTAACGTCGCAGGCGCGGGTATTCTGACGCTGGCCTATTTTG
+NODE	2483	1	116	116	0	0
+A
+A
+NODE	2484	1	163	163	0	0
+C
+T
+NODE	2485	2	93	93	0	0
+GG
+CA
+NODE	2486	2599	152200	150706	0	0
+ATACAGTGCGGGCGTCTGGAAGAGCTGGAAATCGAGGGCCTGACGCTGGAGCGCGCGCTGGTTTTCCCAAGCGGGCTGGCTATTCTGATCGCGATATTTACCGAGCTGAACATCCAGAGCATGACGCTGGCAGGCGGCGCGTTACGCGAAGGGCTGGTGTATGGGATGTTGCATCTGGCGGTAGATCAGGATATCCGCAGCCGCACGCTGCGAAACATTCAGCGTCGGTTTATCGTCGATACCGATCAGGCAAATCGCGTGGCGAAGCTGGCAGATAACTTCCTCAAACAGGTAGAAAATGCCTGGCATATTGAGCCTATCAGTCGTGAACTGTTGCTTAGCGCTTGCCAATTGCATGAGATCGGTCTGAGCGTTGATTTTAAACAGGCGCCCTATCATGCTGCCTATTTAGTACGCCATTTGGATCTGCCTGGCTATACGCCCGCGCAGAAAAAGTTGCTCGCCACCCTCTTACTGAATCAGACCAATCCG [...]
+TTATTAAGCGCGAGTACGCTGCGCTGGGGATGAAATCGAACTTTTCATTGTTTGACGATACCGACCAGGTCGCCTTGCTCAAAGAGCTGACCGAAGGCCTGATCGAAGACGACAAGGTTCTGTTGCAACAGCTGATCTCCACGATCTCCAACTGGAAAAACGATCTCAAAACGCCTGCACAGGCAGCGGCGGGGGCGAAAGGCGAACGCGATCGTATTTTTGCCCACTGCTACGGGCTTTACGACGCCCATATGAAGGCATGTAACGTTCTCGATTTTGATGATTTGATTTTGCTGCCGACGCTGCTGCTGCAACGCAATGACGAGGTGCGCGAGCGCTGGCAGAATAAAATTCGTTATCTGTTGGTGGATGAATATCAGGATACTAACACCAGCCAGTATGAGTTGGTTAAGCTGCTGGTCGGGCAACGCGCGCGCTTTACGGTCGTGGGCGATGACGACCAGTCTATCTACTCCTGGCGCGGGGCGCGTC [...]
+NODE	2487	38	1142	1084	0	0
+ACCGACACCGCCGGAAGCTCCGCCTGGTTTGAACGCGG
+CAGCCAGCCGCCGGTACAGGACTCTGCTGTCGTTACGG
+NODE	2488	51	2431	2431	0	0
+GCTTTTCTGATTGGCGGATATGGTTGCCGCGCGGCGCTACAAAAATGGCAG
+CGATGGTTTGCGGAACATAGCTCAGGCCAATCACTGCCGGGCTGTAACCCA
+NODE	2489	50	64	64	0	0
+CCCAGGAGCATAGATAACTATGTAACTGGGGTGAGCAACGGCCCGTCAGG
+TACTCACTCCCTTGCCGCCTTTAAGCAACTCGAATTATTTTGGGTATAGA
+NODE	2490	23	784	784	0	0
+GCGAGGCCCATGGATGGGCCGGG
+ACATAGTTATCTATGCTCCTGGG
+NODE	2491	3	296	285	0	0
+GGG
+TAA
+NODE	2492	3	181	181	0	0
+CCG
+ACA
+NODE	2493	17	26	26	0	0
+GCGCACGCGACGTTCAA
+GGTAATCCGTAGCCAAC
+NODE	2494	122	5078	5008	0	0
+TCGCTGATGAGCGTGCCGCCGCTGTAGCTGTTGGCGCCGGAAAGCGTGAGCATCTTGTCGCCGGATTTGACCACCTGACCGCTGCCGCTGATGGCGTTGTCGAACGTGCCGCCGGTGTTCAG
+GGTCAAATCCGGCGACAAGATGCTCACGCTTTCCGGCGCCAACAGCTACAGCGGCGGCACGCTCATCAGCGACGGCACGCTGGTCGCCAGCAACGTTGAGGCGCTGGGCAGCGGCGACGTCA
+NODE	2495	26	1100	1100	0	0
+CTTTTTGCTATACGGCTGGCTGGCGG
+ACCCACGGCAGCACGCTCACCACCGG
+NODE	2496	51	2741	2741	0	0
+TGTTTAATTTTTATATTGCCATCATAGGGTTACTTGCTGCAGGTAGTGGTG
+ACAGTCATTCTCTGTTGAGTATGGATTTCAAAGTATTTCCAGGCATGCTCG
+NODE	2497	722	35858	35496	0	0
+TGCCGACGGCATTGACCCGAATGAACTGCTGAATAGCATGGCTGCCGCTAAATCCGGCACCAAAGCTAAACGCGCAGCTCGTCCGGCTAAATATAGCTACGTTGACGAAAACGGTGAAACTAAAACCTGGACTGGCCAGGGTCGTACACCGGCTGTAATCAAAAAAGCAATGGAAGAACAAGGTAAGCAACTGGAAGATTTCCTGATCAAGGAATAATTTACTTCCTGGATGCTTAAAATCCCGCCGCTGGCGGGATTTTTTTTGCCTGAGTTCTCCGCTGACGACCCCAGGCATAAAAAAAGCGCCGGATTTACCAGCGCTTCTGTTAAAAAATTTATAACGTATCGTTACTTCTTAATACCCATTTCTTCTTCAAGCCAGGCTTTAAATTCAGCACCCAGCGAATTATGACGGATGCCATATTCAACGAATGCCTGCATATATCCTAACTTATTACCACAGTCATGGCTTTTACCCTTCATGTGGTAGGC [...]
+ATGGTTGGCGTGGTTGAAAAACCAAAAGCGGATGTCGCGCCGTCTAACCTTGCGATTGTCGGGCGTTATGTGTTGAGCGCGGATATCTGGGCGTTGCTGGCGAAAACCCCTCCGGGCGCCGGGGATGAAATTCAGTTGACCGATGCTATCGATATGCTGATCGAAAAAGAAACGGTTGAAGCCTACCACATGAAGGGTAAAAGCCATGACTGTGGTAATAAGTTAGGATATATGCAGGCATTCGTTGAATATGGCATCCGTCATAATTCGCTGGGTGCTGAATTTAAAGCCTGGCTTGAAGAAGAAATGGGTATTAAGAAGTAACGATACGTTATAAATTTTTTAACAGAAGCGCTGGTAAATCCGGCGCTTTTTTTATGCCTGGGGTCGTCAGCGGAGAACTCAGGCAAAAAAAATCCCGCCAGCGGCGGGATTTTAAGCATCCAGGAAGTAAATTATTCCTTGATCAGGAAATCTTCCAGTTGCTTACCT [...]
+NODE	2498	51	2467	2467	0	0
+TGCCGCGATCGCCAGCTCATTTATGAGGAAGCGCCGCAGGCGTATAAATCC
+AAATCACCCGGCTACCCATCCCGGTACGGCAGAGCTGTCGCGGGGTAAATT
+NODE	2499	79	2028	1973	0	0
+CGTAGCCGCGGGAAACGACCCCCACGCGCACGCCACGCTGTTGCAGCTTTTCCACCAGCCAAATGACTACCGGGGTTTT
+GCGCGTGGGGGTCGTTTCCCGCGGCTACGGCGGCAAAGCTGCCGCTTATCCGCTGCTCCTGACGCCAGAGACGACAACC
+NODE	2500	51	3107	3107	0	0
+GCGCTACCTGTCATAAAGCCGCGCCTGAACGTAAGACAACGTAAAGATCCT
+CCGCGCTTACCAGACCTACAAGGGCATAGGTCTGATAAACGCAGCGCCAGC
+NODE	2501	2	78	74	0	0
+AC
+TA
+NODE	2502	2969	164012	159674	0	0
+GCCACGATTAAAGCGGCATTATGGACATCCGCCAACGCCATCGCGAAGAGCCCTGCGCAACTCAGAACGGGCATCACGGAGGCGCCCGCCCACAATATCCGCCGCGATAACATTTTCACCAGCCGGGGGAAGACAATCAGCGTCAACAGATTCGCCGCGCCGGCGTAAGAAAGGTAATAGGGAAAAAGATCGGCATCGCCAATCACATAGGTGAAGTAGTAGATCGCAAAGCCATTGATCATATTGGAGGCAATGTTATACGCCAGCGCCATTCCCAACAGGCAAGAGAGCTGCTCGTTTTTGTATATCAATCCAACGATCGTTTTTAACGTCAGATGTGGGCGGCTCGCCGTTACACCGTTGTCGGAGGAGTACACCTCATGTACGTTGCGTAATGTCACGATAGTCGAGGCGATAAAAAACGCAATCAGTACCAGCGTAAACATCTGAAAGCCGAACCCACGATCCGCTCCGCCAACGTAGTTCACAAAC [...]
+TCTGCACGACTTCATTGTTGATTAAATACTCCACATCGCCGTCAAACGGAACATTCACTTCTACTTGCCCATGCCAGTGACTGCTGGCCATTCTGTGTGGCGGCCTCAGTTCAACGTCCAGTCGTTGATATTCGGAATAGAGCGACAGCGGGCTACGGGTTTGCTTTTCATCGCCGTTGCACATGTGCGGGTCGGGCGGGAGGAGGGATATTGCTTGCGTACTCATCGTCACTCCATTTCCTGAATTATCAGAATTATGCCCCTTTAGCCGGGAGGAAACCGGGAATCCGGACACAGAATCCGTCGATATTGTAGAGCGTAGCCTGACTATCAGGCCGAATACTCTGCTTTTTACGCCATTTTGTCCCAAAAACTCAGATCTTCCGCGCGCCAGCATACGATCTGAGTTTTCGGGAATGCTCATCGGGGAAGACGGAGGTTTTCACCGGGAACGCGTGCCACCATGAAGGTGTTCACTACTGTTCTGGAGAG [...]
+NODE	2503	785	45926	43355	0	0
+ATCCTTTTGAAAATAGATTTTCAGGATATCGTTATTGGCTTCTTGCCGCAGGCTGTAACGATCGATTTCCTCAGGATTGGTAATGCCCAGACTTTTTAGATTGTCATACATAGCGGTATCCTTCATCACACTATAACTTTTGAATAATTAACGAAAAATTGGTTTTTCGCCACCAGTGTATACAAAAAAAGCGCGGTTGATCGCAGAAGACGTCTCGGCAACGTAATGAGCAAAAGGGCGGCGGTTATTGATAGCTTAAGTAATTCAACGTGATATTCCGTTTATAGAGAAAGCGTTTGAAGTCAGTGTGGGAAATTGACCGGAGGCAGTGGTCGATAACCTTGAGAGGCGGAGTCTATGTCCGGAACGTATAATGCTACTATTCGCCGGGTGGTGGTTTCCGCCTGGATAGGAAACTCCATTGAATATTATGATTTTCTATTATACGGCCTGGCAAGCGCGCTGGTATTTGGCCCGCTTTTTTTCCCTGGC [...]
+AAATCCCTGTAGAAAACGCAGAATAACCAGTAAAGCAGGCGCCAGCGCGCCAATACTGGCGTAAGAAGGCAGGCAACCGATGAGAAACGTGACCGCGCCCATCCCCCCTAATGTGATTAATAACGTGTTTTTACGCCCAAGCGTATCTCCCCTGTTGCCAAAAAATAGCGCGCCCAGCGGTCGGGAGATAAATCCCACGCCGAAACTGGCAAAAGAAGATAACGTTGCAGTCAATGGGCTGGCGCCAGGGAAAAAAAGCGGGCCAAATACCAGCGCGCTTGCCAGGCCGTATAATAGAAAATCATAATATTCAATGGAGTTTCCTATCCAGGCGGAAACCACCACCCGGCGAATAGTAGCATTATACGTTCCGGACATAGACTCCGCCTCTCAAGGTTATCGACCACTGCCTCCGGTCAATTTCCCACACTGACTTCAAACGCTTTCTCTATAAACGGAATATCACGTTGAATTACTTAAGCTATCAATAAC [...]
+NODE	2504	182	11729	11653	0	0
+CGGTTCAGGAAGACAAGCGGAAAAATGCATTTTTGTTTTAACCGCTCATCTTTTATCCATAACGCTTATTTTTGCTGCTTTTTTATCGCCGATGGCAGATCGGCAAGGCTGTTTAACACCCAGTCCGCCGCGTTTTCTGCTTCTGCCGTGACCGGTTTGCCCGTACGCACCAGCACTTTTGT
+CGCGGCGGACTGGGTGTTAAACAGCCTTGCCGATCTGCCATCGGCGATAAAAAAGCAGCAAAAATAAGCGTTATGGATAAAAGATGAGCGGTTAAAACAAAAATGCATTTTTCCGCTTGTCTTCCTGAACCGACTCCCTATAATGCGCCTCCATCGACACGGCGGATGTGAATCACTTCACA
+NODE	2505	29	1096	1055	0	0
+CCGTACTGGGTGAGCGACGTAATGAAGCC
+CGGCTTGCCTTCTTTAAAACGGGTAATGG
+NODE	2506	1421	73509	72955	0	0
+TACATCTATGTTAGTTATCATGGGACTGATAGGCGGCAGCTTTTTCTATGGCGAAGTGGTCATTACGCCGGCGATTTCGGTGATGTCGGCGATTGAAGGCCTGGAGATTGTCGCGCCGCAGCTGGATACCTGGATTGTCCCGCTCTCCATTATTGTGCTGACTCTGTTGTTTATGATTCAGAAGCACGGTACGGGAATGGTAGGGAAACTCTTTGCGCCGATTATGCTGACCTGGTTTTTAATCCTGGCGGTACTTGGCCTGCGCAGTATTATCGCCAATCCCGAAGTGTTACATGCGCTGAATCCTGTCTGGGCGGTACGTTTTTTCCTTGAATATAAAACCGTATCATTTATTGCGTTGGGCGCGGTGGTGCTGTCGATTACCGGCGTAGAGGCGTTGTACGCCGATATGGGACACTTCGGTAAGTTCCCGATTCGCCTGGCGTGGTTTACCGTGGTACTGCCGTCGTTAGTACTGAACTACTTTGGTCA [...]
+CAGCGGTGGAACACCTCTTCAACGTTTGGCGTTTCGCGCCAGCCGTAGCTGGCCACCACGCGCCAGAATGTCGGAGACAACTGCTCAATCTGCACCCGGCGAACGTTATGCACATAAGGCGCATCTTCCGTACGCAACGTCAATAAGATTACGCGCTCATGCAACACTTTGTTGTGCTTCAGGTTATGCAATAAAGCAAAAGGGATCACACTGAGCGCGCGCGACATGTATACGGCAGTACCCGGCACCCGAACCGGCGGTGACTTCTCCAGTGAAGCAATCATCGCTTCCAGCGAATTACCGTGTTCATGCATACGACGCAACAGACGGAAACGCTCGCTCTTCCAGGTGGTCATGATCGTGAACATGATCAGACCCAGGCTCAGCGGCAGCCAACCGCCGGACAACAATTTGTCGAGGTTAGCCGAGAACAGCGGGATATCCACGCACAGGAACGCGATGAGGATCAGCGCGACAAAATATTTGTTCCAG [...]
+NODE	2507	51	2594	2594	0	0
+GGCAAGGATAATTTCCCCGATCAAAGGAATGGAACGTCCAACAAACGGCGC
+CGCAGATGTGTCACAAATAACATATCGCACTATACGCGACTACAATACCAT
+NODE	2508	47	2677	2677	0	0
+AGGCTGCGTCGATCTCAGCGTTATCCCCGGCGCCAGCCAGCGGTTTG
+TCACTCTCCAGGGGTGGAAAAAGGTCGGTTTTGACGCCGTTATCTTT
+NODE	2509	51	133	133	0	0
+CCCTGACCCCATGCCGAACTCAGAAGTGAAACGCCGTAGCGCCGATGGTAG
+GGGGACCACCGCGCTAGTGCCGCCAGGCAAATTCTTTTATGCTCAGTACGC
+NODE	2510	3	329	97	0	0
+GGC
+ATT
+NODE	2511	12	1977	1485	0	0
+CGGTGAGGGGGG
+TTTTGCTTATAT
+NODE	2512	1	119	78	0	0
+G
+T
+NODE	2513	57	1738	1738	0	0
+GACTCGTTGCGCTCGCCCTTCGGGCAGCCCGTTCGCTGCGCGCCCGGTCTGTCCAAC
+ACGAGTCAATCCCCCCCTCACCGCCATATTTAAGTTGAGAGCCTGTACAGAAGTACG
+NODE	2514	44	46	46	0	0
+AGCGCTTTGGCTGTGCGACGCGGCCAATCCCGAATCTGCCTGAA
+ACAACGACACCAGTTGAGCAAGGATCAGGAGTCCGCGCAGCCAG
+NODE	2515	40	1407	1407	0	0
+AGACGGACGGGCTTCTTCACTTGTCTGATGCCTGGCAGTT
+CTTTGCGTGTGTGGTAACTGTAAAAATGTAGGCCTGATAA
+NODE	2516	11	730	730	0	0
+TATGGCGGGCG
+TGGACGGGCTT
+NODE	2517	131	7178	7178	0	0
+CCATCAGGAATCCACCATGCACGCCGGTAGCGGCCTCGGCTCCGGTAAGGTCTCCGTCACCAACCTGGATTTTGATCACTATATCGACCGCGCCAGCCCGAACCTGTTCAAATACTGCGCCTCCGGCAAGC
+TAGTGATCAAAATCCAGGTTGGTGACGGAGACCTTACCGGAGCCGAGGCCGCTACCGGCGTGCATGGTGGATTCCTGATGGATATTCCAGCGCCAGCTCAGTACTTCAATTTCATTTTTGTGTTTGTCATC
+NODE	2518	41	2400	2400	0	0
+ACATTCCGCAGGCCATTCTGGTTATGCGTAAGGCTGGCGGC
+AGGCGCAGTATTTGAACAGGTTCGGGCTGGCGCGGTCGATA
+NODE	2519	104	4759	4613	0	0
+CTCCACCGTTTCACGGGAGGCGATTTCACCATCGTGGCTGCCGCTCGGGGAAACCACGGCGACAATCAGGTCGGTGAAGGTATACTTGAGGTACTCCAGCGGAT
+GTTTCCCCGAGCGGCAGCCACGATGGTGAAATCGCCTCCCGTGAAACGGTGGAGCTCTCCTTCAGCACCGTGAAGCAGGAATACGTGGTGCAGAACCAGCAGGG
+NODE	2520	28	1330	1330	0	0
+TGCCGCCAGCCTTACGCATAACCAGAAT
+TACCTTCACCGACCTGATTGTCGCCGTG
+NODE	2521	85	1149	1149	0	0
+GTGGTGGTGTGCACCTGTAATCGCAGCTACTCTGGAGGCTGAGGCAGGAGAATTGCTTGAACCCAGCAGGTGCACACCAGCAGAC
+CCAGAGTAGCTGCGATTACAGGTGCACACCACCACACCCGGCTAATTTTTTAATTTTTACTAGAGATGGGGTTTTGCCATGTTGG
+NODE	2522	118	1604	1604	0	0
+CCAAGCTGGTCTTGAACTCCTGACCTCAGGTGATCTGCCCGCCTTGGCTTTGAGAACAAGAACACCATGTCTGCTGGTGTGCACCTGCTGGGTTCAAGCAATTCTCCTGCCTCAGCCT
+ATGGTGTTCTTGTTCTCAAAGCCAAGGCGGGCAGATCACCTGAGGTCAGGAGTTCAAGACCAGCTTGGCCAACATGGCAAAACCCCATCTCTAGTAAAAATTAAAAAATTAGCCGGGT
+NODE	2523	33	2276	2276	0	0
+ACAGCGCGCGAATTTCATAGTGTTCACGGATCG
+GCTAAAGCTTCTCGTCCTGGCACCGATATCTCG
+NODE	2524	30	1770	1770	0	0
+GACTCGCTTCGCTCGCCCTTCGGGCCGTCG
+TTAACATCAAACTCAGATGTTGAGCGTGAA
+NODE	2525	37	1748	1748	0	0
+CGGATTCCTGAACCAGCGAGGCGTTCTGTTGCGTTAC
+CGCGCTGGAAGAGCAGGCCAGCCGTCTGACCCAGGCG
+NODE	2526	51	70	70	0	0
+CGTGTTGGTTGCTGCTGACCGGTTGCCAGTGTTGGTTGCTGCTGACCAGTC
+GGGCGACTGGTCAGCAGCAACCAACACTGGCAACCGGTCAGCAGCAACCAA
+NODE	2527	430	21667	21405	0	0
+GGCTTCGTTAACGAAGTGCAGGTTATCGCGACCGTCGTTTCCGTTAACCCGCAGGTTAACCCGGACATCGTTGCCATGATCGGCGCATCCGCTGCGCTGTCCCTGTCCGGCATTCCGTTCAACGGCCCAATCGGCGCGGCGCGCGTAGGTTACATCAATGACCAGTACGTGCTGAACCCGACCCAGGACGAGCTGAAAGAAAGCAAGCTGGACCTGGTGGTTGCCGGTACCGAAGCGGCTGTGCTGATGGTGGAATCCGAAGCTGAACTGCTGAGTGAAGACACTATGCTGGGCGCGGTGGTGTTCGGTCACGAGCAGCAGCAGGTTGTTATCCAGGCGATCAACGATCTGGTGAAAGAAGCCGGTAAACCGCGTTGGGACTGGCAGCCGGAAGCCGTCAACGACGCGTTGAACGCGCGTGTTGCTGCGC
+TCCCAACGCGGTTTACCGGCTTCTTTCACCAGATCGTTGATCGCCTGGATAACAACCTGCTGCTGCTCGTGACCGAACACCACCGCGCCCAGCATAGTGTCTTCACTCAGCAGTTCAGCTTCGGATTCCACCATCAGCACAGCCGCTTCGGTACCGGCAACCACCAGGTCCAGCTTGCTTTCTTTCAGCTCGTCCTGGGTCGGGTTCAGCACGTACTGGTCATTGATGTAACCTACGCGCGCCGCGCCGATTGGGCCGTTGAACGGAATGCCGGACAGGGACAGCGCAGCGGATGCGCCGATCATGGCAACGATGTCCGGGTTAACCTGCGGGTTAACGGAAACGACGGTCGCGATAACCTGCACTTCGTTAACGAAGCCTTCCGGGAACAGCGGACGAACCGGGCGGTCAATCAGACGCGCAATCAGGG
+NODE	2528	51	3046	884	0	0
+AGCACGTACAGGTGCGCCAGTCCATCATCGCCTTTCGCCGCTTCCGCAGAG
+TGCCGCCACAAAGCACTCTGACTATCCATGTCGGGAAGCGCAAAATCAAAC
+NODE	2529	401	21534	21388	0	0
+GGGATATTAATGATCTTATTCCCTTTGCCTTTCGACAGCTGCGGCAGAGAGTCAACCGGGAACATCAACATCCGTCCGGCCTGGGTAATCGCCAGCAGCATATCGTGCTCGTCTTCAATCACCAGCGGCGGCATGACGTGCGCATTTTCCGGCAGTGTAATCAACGCTTTACCGGCACGGTTACGGGCAACCAGATCGTTAAACGTACAAACGAAGCCGTAGCCCGCATCCGACGCCATCAACAGTTTCTGGTCATCGCCTTCCATCAGCATATGCTCTACGGTCGCCCCCGGCGGCAGCGTGAGTTTGCCGGTCAGCGGTTCGCCCTGCCCGCGCGCCGACGGAAGCGTAATGGGATCAATAGCATAGCTGCGACCGGTGGTATCAATAAACACCACCGG
+TACGCTTCCGTCGGCGCGCGGGCAGGGCGAACCGCTGACCGGCAAACTCACGCTGCCGCCGGGGGCGACCGTAGAGCATATGCTGATGGAAGGCGATGACCAGAAACTGTTGATGGCGTCGGATGCGGGCTACGGCTTCGTTTGTACGTTTAACGATCTGGTTGCCCGTAACCGTGCCGGTAAAGCGTTGATTACACTGCCGGAAAATGCGCACGTCATGCCGCCGCTGGTGATTGAAGACGAGCACGATATGCTGCTGGCGATTACCCAGGCCGGACGGATGTTGATGTTCCCGGTTGACTCTCTGCCGCAGCTGTCGAAAGGCAAAGGGAATAAGATCATTAATATCCCCTCTGCGGAAGCGGCGAAAGGCGATGATGGACTGGCGCACCTGTACGTGC
+NODE	2530	179	818	818	0	0
+TCAGCTTAATCTCTGATACGGGAGCCACCGGCTCCCATCAAGATTAAACTTATTTTTGTGCCGTGTGGAGGATCACGAGATTTATCTCGCCCTCCCGCAAGTGACCCGGTGGCTCCCGTATCAGAGATTAAGCTGATAAGAACAGATACCTTCTCGGCCTTTTGGCTAAGATCAAGTGT
+AATCTCTGATACGGGAGCCACCGGGTCACTTGCGGGAGGGCGAGATAAATCTCGTGATCCTCCACACGGCACAAAAATAAGTTTAATCTTGATGGGAGCCGGTGGCTCCCGTATCAGAGATTAAGCTGATAAGAACAGATACTACACTTGATCTTAGCCAAAAGGCCGAGAAGGTATCT
+NODE	2531	179	9151	9103	0	0
+CTTGGATAAGGGTTACAGCTTCAATCATTCAGGATGGTGGGTCGTGCAGGATGACTCGGCTTCGCCTCGCCCTACAGGTTGCTGACGCAACGTTATCCTTCACGTTCTCTACCAGTTACCACCTTGTATATTGGTGGGTCGTGCAGGATTCGAACCTGCGACCAATTGATTAAAAGTCA
+ATACAAGGTGGTAACTGGTAGAGAACGTGAAGGATAACGTTGCGTCAGCAACCTGTAGGGCGAGGCGAAGCCGAGTCATCCTGCACGACCCACCATCCTGAATGATTGAAGCTGTAACCCTTATCCAAGGGGTCGTTAGCTCAGTTGGTAGAGCAGTTGACTTTTAATCAATTGGTCGC
+NODE	2532	16	620	620	0	0
+ACCTGCCTGTCACGCA
+TCTTTGTCACAACCCG
+NODE	2533	8	684	684	0	0
+GGGGGTCG
+ACCGAATT
+NODE	2534	36	102	102	0	0
+TGGTTATTAACCACAACACCTTCCTCCCCGCTGAAA
+CCCCGCAGAAGAAGCACCGGCTAACTCCGTGCCAGC
+NODE	2535	1	176	175	0	0
+T
+G
+NODE	2536	24	1490	1490	0	0
+GGAAATGCAGAGAAAAAACGCCGC
+TACTTGCCATTTTGGACCTGGGCA
+NODE	2537	2	253	207	0	0
+GC
+TG
+NODE	2538	14	1233	1233	0	0
+AGCGGCACGCTGGT
+GGAAAGCGTGAGCG
+NODE	2539	239	9975	9894	0	0
+TGCTGTTCGCCTCCTGCGTTAACGTATTTCCCCGCAATGCGCTGTCTGCGCCAATTGCGGTGGTGGCGTTATCGTGAGTGGTGAGATTTGCCGTAACGAACTGGCCGCTGGCGTTCAGTTGCAGGCTGGCGTAATTGTCGATATCGCCGCTGCCCAGCGCCTCAACGTTGCTGGCGACCAGCGTACCGTCGCTGATAAGGGTGCCGCCGGTATAAGTATTGCTGCCGGAAAGCGTGAGC
+ACGGTACGCTGGTCGCCAGCAACGTTGAGGCGCTGGGCAGCGGCGATATCGACAATTACGCCAGCCTGCAACTGAACGCCAGCGGCCAGTTCGTTACGGCAAATCTCACCACTCACGATAACGCCACCACCGCAATTGGCGCAGACAGCGCATTGCGGGGAAATACGTTAACGCAGGAGGCGAACAGCACCCTGGCCGTACACCTGACCGACAGCAACAGCGGCGCCATCGTCACCGCC
+NODE	2540	1	79	79	0	0
+G
+G
+NODE	2541	1951	101680	100744	0	0
+CGTCGCGCCGCGCGGCCCCTCTAACGGAGCACAATACCAGTCGTCAACCACGCTTTTCAACCAGGCTAACGTGCCGGCGATATCTTTATCATGCAGCATACCAATCACCGCAAGCACGCGCCCGCGTTTCGGCAACATTTTCAGACGACCCGTCAGGTATTCCGCCGCGTGGGGATTATGGGCGACATCAAAGATAACGCGCGGCGACTCACTCACGATTTGAAAACGTCCCGGCAAGGTAGCCTGCGCAATACCGTCGCGAATCGCCTGCTCGTCAATGTTCAACCTGCTGGCGCGCAGCGCGGCCAGAGCGGTGGCGGCATTCGGCTGAGGAACCTGCGGCAACGGCAGTCCGGCAAGCGTGCCGTCGCCATCGGTAAACGCCCACTGGGTCGCTGTCACCTCATAACGCCAGTCAACGCCGCGACGCAGCAACAGCGCGCCGGTCTCCTGCGCGACATCCGCGATAGTTGCCGGCATTTCCGGTTCGCC [...]
+CAATCGCCTGCATAGCCTATTAGATGAAGGTTCCCTTGTGGAGTTGGGTAGCGAGCTGGAGCCGAAAGACGTGCTCAAGTTCCGCGACTCCAAAAAATATAAAGACAGACTGGCGTCCGCGCAGAAAGAAACCGGCGAGAAAGACGCGCTGGTGGTCATGAAAGGGACGCTTCACGGTATGCCGGTTGTCGCCGCCGCGTTTGAATTCGCGTTCATGGGCGGCTCAATGGGGTCTGTCGTTGGCGCACGCTTCGTTCGCGCCGTTGAACAGGCGCTGGAAGACAACTGTCCGTTAGTGTGTTTCTCTGCTTCCGGCGGCGCGCGTATGCAAGAAGCGCTGATGTCTCTGATGCAGATGGCGAAAACCTCGGCGGCGCTGGCGAAAATGCAGGAACGTGGTCTGCCCTACATCTCGGTATTGACCGATCCGACAATGGGCGGCGTTTCCGCCAGTTTTGCGATGCTGGGCGATCTCAACATCGCCGAGCCAAA [...]
+NODE	2542	11	1369	853	0	0
+TCACAGGCCAC
+CAATGCTCCAT
+NODE	2543	32	1578	1578	0	0
+ACCTTCTGGCTGCTCATCCACCACGTTGATAG
+TTTACGTTATTCACAACCAGTCAATGTCTTAA
+NODE	2544	67	2673	2673	0	0
+GCGCTGGGTGATTTCCGCCTGGATGGAGTCGAGGTCAGACTGGGAGTTAGTGCTGTTAGCAGACTGA
+CGGAAATCACCCAGCGCCTGAACGAAATCGACCGTGTATCCGGCCAGACTCAGTTCAACGGCGTGAA
+NODE	2545	17	1103	1103	0	0
+GAAACGGCGGGCATAGG
+AAAAATGCGTTAATGGC
+NODE	2546	55	3232	3171	0	0
+GCGGGCCTGGGGCTGACCACCGCCCTGGTCCTGTACGCGCTGCGCGCGAATATCG
+CCCGCCAGCACCGCGCAGACCACCCATAGCCGGTTTTTACGTCGCAGGTTCACGC
+NODE	2547	4803	250045	244605	0	0
+GCAGCGACTTCCACGGCTGGTGGGGGTCAGTACCGCGCTGGATATGATCCTGACAGGTAAACAGCTTCGCGCCAGACAGGCGCTTAAAGCCGGGCTGGTTGATGATGTGGTGCCGCAAACTATTTTACTGGAAGCGGCTGTCGAGCTGGCTAAAAAAGAACGCCTGGCGCAGCGGACATTACCGGTCCGTGAACGTATCCTGGCTGGGCCGCTGGGGCGCGCGCTGTTATTTCGCCTGGTGCGTAAAAAGACGGCGCAAAAAACGCAGGGTAATTATCCGGCGACGGAGCGGATCATTGATGTGATTGAAACCGGACTGGCGCAGGGCAGCAGTAGCGGCTATGACGCGGAAGCGCGCGCTTTCGGCGAGCTGGCGATGACGCCTCAATCGCAGGCGCTGCGCGCTATTTTCTTTGCCAGTACCGAGGTGAAAAAAGATCCCGGTAGCGATGCGCCGCCCGGCCCGCTGAACAGCGTGGGCATCTTAGGCGG [...]
+GCGCATCAGTTCGTCCAGCGCGTCAAGTTTGTCCGCATCGGGACAAAAGAACGGATTAAGCTCAACCTGACGCCAGTCTTTAATCTCCAGCGGAATATCGCCCATCTGGGTCAGGCAGCCGCGGATTTCGATGCCGAACTTTTCCGCCAGGTATTTCTTGGCAATCGCCCCTGCCGCTACGCGCATCGCGGTTTCACGCGCGGAAGAACGTCCACCGCCACGGTAATCGCGCAGGCCGTATTTCTGCTCATAGGTGTAATCCGCGTGTCCCGGACGAAAAACATCTTTAATCGCGCTGTAGTCCTGCGAGCGCTGATCGGTGTTTTCAATCAGCAGGCCAATGCTGGTGCCGGTCGTCACGCCATCAAACACGCCGGAGAGAATTTTTACCTGATCCGGTTCGCGGCGCTGGGTAGTATAGCGCGAGGTGCCGGGGCGGCGTCTGTCGAGATCGTGCTGCAGATCGGCCTCCGTCAACGGGATGCCGGGCGG [...]
+NODE	2548	2	77	77	0	0
+CG
+CC
+NODE	2549	67	2582	2101	0	0
+GCGATCCCAGCCAAACTGTACCTTTACCCGCCCGTACTGATCCGTCCAGATTTCCTGGCCCGCCGGG
+AGTTTGGCTGGGATCGCTACGGCAAAATGGATGAAAACAGCTCCTGCTGGATACGCGTCAGCTACCC
+NODE	2550	51	1861	1643	0	0
+CCGGTGACGATGGCGCTCTGCGGCCCTTTGGTGTGGGGTTTGCTCACCGTC
+GCCCGGCGGGCCAGGAAATCTGGACGGATCAGTACGGGCGGGTAAAGGTAC
+NODE	2551	51	1523	1430	0	0
+CGCGTAAACGTTGCGATGCCAGTGGAACTCATCGCCACCCTCCGCTGCCGC
+GCCATTGAAATATTCGGTGGCGGAGATTTTCGACAGTATCGATCTCACCCA
+NODE	2552	5	1954	798	0	0
+ACTTA
+CGGGA
+NODE	2553	1	388	155	0	0
+A
+T
+NODE	2554	45	16135	15132	0	0
+ATTTCACAACACGAGCTGACGACAGCCATGCAGCACCTGTCTCAC
+GTTAAGTCCCGCAACGAGCGCAACCCTTATCCTTTGTTGCCAGCG
+NODE	2555	51	2886	2886	0	0
+TGCGGTGGCGAACGTGCCGGGCAAGGAGGATCGAATCCTCACGGCGAATGG
+AACGGCGTGCATACGGTACTGGCCGGGTTTGTTGAAGTCGGCGAAACCTTA
+NODE	2556	51	3333	3333	0	0
+ATGCAGCATTAGCGTATGCGCCCGCTCGCGCTGGATCTGGCGGGCAAAATT
+TGGCGATCCGCAGGGAGAGCCGGAACTGCGCCAGCAAATTGCTCATTATCT
+NODE	2557	51	2284	2225	0	0
+CGCAAGCGGGCGGTACGCTGGTGTGCAATAAAACCCAAAACCCGCCGCTGT
+GGATCTTTACTGGAGCCAACGAAGACCGGGATATCGCTACGCACGGCCGGG
+NODE	2558	1504	84920	84581	0	0
+ACGCACCAGCCAGGCGATCGCGCAGAGATCGTGCATCCGGACGCCAGTGCGCATACTACCACTGCGATAATGGTTGAACAGGCTGTGCAACATCTTACCGGTGCGATTCAGCGCAGGCAGTTTATTCAGAAAATCTGGCGAGAGCATTGCCTGATTCGTGACGTCCAGCCCACACATCACAATCTCAATGCCGCTACGAAATACGTGGGCGGCGGCTTCCGGATCGACAGCAATGTTAAATTCAGCATTAGGCGTAAAATTGCCGCGCCCTGCGGAACCGCCCATCAACACCAGACGGCGAATGTTACACGCACACTCCGGATAGTGCATCAGTAGCAACGCAATATTGGTCAATGGCCCAATCGCCACTAATGTCATGGGCTCCGGGGCGTTCATCAGCACATCCCGGATAGCGATAAACGCAGGCTTCGCCAACGGTTGGCGCTGATGGTCGACAAAATCATAGCCTTCCATACCGGATTCGCCGTGGAC [...]
+GTAAACTCATACAGACCTTAGATACCGCCTCGGTGGGCACTTGTAGCCCGTTTATGCCTCAATGGGGGGATGTCAATTTTGATGGCTACCCGGATCTGTCGATTGTCACAGAGCTACTTGCAGGGCCGGATGCTCCAGTACAAACATGGCTCTATGACCCCGCCAAACAGCGTTATGTTGATGCGCCAGCGTCTTATCAGGAAATCACTTCACCAGAGATCGATGCTGAACATAAACAGATTGTCAGCTATTGGCGCGGCGGTTGCTGCAGTCATGGCGTCAATGTGTATCGCTGGAAAGGAAAAACGATTGAACTGATCGATCGCGGTGAAAGCTACTTTCAGCCTGTGATCAGTAAAGGCAAAATGTATAACTGCTACATGATACCTTCCTACGCTGATGGGCGTATTATTTATCCGCTAGTACGTAAAAATGGTCATTTGACGCCGCCTCTTAGCCTTGATGGGACGTGTCAACCTTTTTGGCTAATCG [...]
+NODE	2559	51	2799	2799	0	0
+CCAAAGTTAATGGCTTTCGCACTTCGGCGCTGTTCCCCGGTCACGCTATCC
+GCCTGATTTACGGGATGAGCGCCTTCGGTCTTTCTCGCCAGCTTAATATTC
+NODE	2560	208	10457	10457	0	0
+CTCAATAAACTGGCACAAAGAAGTATTGCGCACCGCCAGCCAACAGCAGGTTCCGGCGAGTCCTTCCACGCTCTTTTTCACAGGGTATTGCGCGCCATAAAGCGGGATGCGCAGCGTAAACTGGCTTCCCATGCCCGGCTCCGAATCGACGGAAATATCGCCGTCCATCATGCTGATCAATTTTTCGCAAATCGCCAGCCCCAGACCG
+ATATTTCCGTCGATTCGGAGCCGGGCATGGGAAGCCAGTTTACGCTGCGCATCCCGCTTTATGGCGCGCAATACCCTGTGAAAAAGAGCGTGGAAGGACTCGCCGGAACCTGCTGTTGGCTGGCGGTGCGCAATACTTCTTTGTGCCAGTTTATTGAGACCAGTCTGGCGCGTAGCGGCGTTCATACGCAGCGTTATGAAGGGCAAGA
+NODE	2561	51	70	70	0	0
+GAAAGCAACGAATACGCTACCGCCTTGTTCCTCGCAGGCTTTCCCGGCGGA
+CCCCTGCAATGCAAAGGCGGCAAAGCCGATGACGCCGATGTTGCGTACATC
+NODE	2562	10	685	685	0	0
+CAATAACGGG
+TCGTTGCTTT
+NODE	2563	34	4021	3372	0	0
+CGGACGTAACCCTGGCACCTCAAGGGTCAGGGAT
+GCTGCCGGCTGGTAAGCAGAACCGATTTCATGAT
+NODE	2564	1458	85224	84227	0	0
+GTTGCGGTGGGGTTGACGCCGGAAATGTTGCCCATGATTGTCAGTTCCAACCTGGCAAAAGGCGCGATTGCGATGTCGCGGCGCAAAGTGATCGTCAAGCGCCTGAACGCTATTCAAAACTTCGGCGCGATGGATGTGTTGTGTACAGATAAAACCGGCACCTTAACCCAGGACAATATTTTTCTGGAGCATCATCTGGATGTGAGCGGTGTAAAAAGCAGCCGGGTATTGATGCTGGCCTGGCTGAATAGTAGCAGCCAGAGCGGCGCACGGAATGTGATGGATCGCGCCATACTGCGTTTTGGCGAGGGCCGCATCGCGCCATCGACAAAAGCGCGCTTCATTAAACGCGATGAACTGCCATTCGACTTTGTACGTCGCCGGGTATCGGTCCTGGTGGAGGATACGCAGCATGGAGACAGATGCCTGATCTGCAAAGGCGCTGTTGAAGAGATGATGATGGTAGCCACCCATCTTCGCGAAGGCGATCGT [...]
+CGTACCACATCAGCGCAAAGGTTGTGATATCGAAAATAGAAGACGTTGGGCCAATCCATAGCATAAAACGACCAATATTTTTCGCGTCCCATTTCCGCGGCTTACGCAGGAACTCTTTATCCATTTTGTCCCACGGCAACGACAACTGCGAAATATCGTACATCAAATTCTGGATCAACAGATGAATCGCCAGCATCGGCAGAAACGGAATAAACGCGCTGGCTACCAGTACCGAAAAAACATTGCCGAAATTAGAGCTGGCGGTCATATTCAGGTATTTAATGATATTACCAAAGGTTTCCCGCCCTTTGATAACGCCTTCCTCAAGCACCATGAGATCTTTTTCCAGCAGAATAATATCTGATGACTCTTTAGCAATATCGGCGGCGCTATCGACGGAAATTCCCACATCCGCATCACGAAGCGCGGGCGCGTCGTTGATCCCATCTCCAAGAAAACCAACGGTATGACCATTTCTCTGTAGCGCTTGCA [...]
+NODE	2565	11	639	639	0	0
+ACCCTCAATAA
+CAGAAAATACC
+NODE	2566	20	2279	2279	0	0
+AGCCACCAGGGACAACTGGA
+TTAACAGTCCGTCCGGATTC
+NODE	2567	51	2659	2659	0	0
+ACGCGCCAGGCGCTGATCGTGACGCCGCTGTGGTTTATCGCGTTGGGTCTG
+TATCGTCTTCCAGCGTCAGTAATACCAGCACGAACGCAAAGAACGCCATAC
+NODE	2568	14	768	768	0	0
+GCCACGGTGAACGA
+GCCGTCACCGTACC
+NODE	2569	51	65	65	0	0
+ATGTATTGACGATGGCAATAGCGCCAGCGTTTGCGCTGACGGCTGGAATAA
+TTCGTTCACCGTGGCGTAAAACGTCCCATCGCCGTCGTTGTCACTATTGCT
+NODE	2570	71	5781	5370	0	0
+TCCCCCCTTGGTTTGGGGGATACATATAAGCAAAAAGCCCGTACTTCTGTACAGGCTCTCAACTTAAATAT
+ATCCCCCAAACCAAGGGGGGATGAGAACCACCGACCGGGGTTCGACAACTGGCGCAGCCAGTTGGACAGAC
+NODE	2571	2	258	176	0	0
+GG
+GT
+NODE	2572	3	608	402	0	0
+TGG
+GGT
+NODE	2573	47	1934	1753	0	0
+CCGTATTATGGGGGTCACTTATCCCTGTTGGCATTGCATTTCTGTGT
+TCCAGCCATAAAGATTCAGCAACGCACCGGATGAAAACGACCCGACA
+NODE	2574	13	663	663	0	0
+ACCACCTAACAGG
+CCAATATCGCGGG
+NODE	2575	1	118	117	0	0
+G
+C
+NODE	2576	25	806	806	0	0
+TTCAATTGAGACGCTTCCCGTTCCC
+AGGTGACGGCTATCGAGCGTAATCC
+NODE	2577	47	3047	3047	0	0
+TGCCGGCGGAGGATCTAAAGGCAAATTATGGAGCCAAATACTTGCCG
+ACCAGAGAGTCGGCCTGTACGCCGGAAAACGCGGCAATTTGCTGTAA
+NODE	2578	37	2253	2253	0	0
+CTGTATTGACGATGGCAATAGCGCCAGCGTTTGCGCT
+CGTAAAACGTCCCATCGCCGTCGTTGTCACTATTGCT
+NODE	2579	9	502	502	0	0
+GACGGCTGG
+TCACCGTGG
+NODE	2580	5	265	265	0	0
+AATAA
+GTCGT
+NODE	2581	46	2115	2115	0	0
+TGCGAAAACAGAATTTTACGCTAATGTGCCTAAGCAATTGACGCAG
+TCCAGCCGTCAGCGCAAACGCTGGCGCTATTGCCATCGTCAATACA
+NODE	2582	143	5307	5254	0	0
+GCTCGACGCGGATGCAGCAGAGTATCGACCCGGCGATGCGCTCGCCGCTGCGCTGGGCCATCGCCGGCTACCTGCTGCTCTTTATGACGCTGGCGCTGATGCGGATGCGCAACCTGATTTTACTGATGGAAAAACGCCGCCCG
+CCAGCGTCATAAAGAGCAGCAGGTAGCCGGCGATGGCCCAGCGCAGCGGCGAGCGCATCGCCGGGTCGATACTCTGCTGCATCCGCGTCGAGCCCTGGTGCAGGGTGCTCCACCACTCGACGGAATAGTGGATAACCGGCAGG
+NODE	2583	17	3079	3013	0	0
+ACCCCTAACCAGGGAGT
+ACCATTTTTCGCGCCTT
+NODE	2584	12	30	30	0	0
+AGGCCTCAAACA
+CCCCGCCCTGCC
+NODE	2585	51	2492	2054	0	0
+CGCAGTTGTTTCTACCTCTAAAGGTGTTATGACTGATCGTGCAGCGCGCCA
+GATACCCAGACCGGCCATAACTTTCGGCAGCTCATCTTTACGTTTGTAGAT
+NODE	2586	26	1097	1024	0	0
+ACCCCACAGCCCGCCAGCTCCAGCCC
+TTCGACCGACACCGATATGCAGCGCA
+NODE	2587	51	2871	2841	0	0
+ACCAAATGCGCCGTAATGAGATAACACCTGCGCCGCCGATTTCCCGCCCTG
+TTTTGGTAAACCGTTTGCACAATAGGTTACGTCCCTCAATGTAAAGCGACA
+NODE	2588	14	592	592	0	0
+GCTGCTGCTGCCGG
+TTTTCCCGCTTACT
+NODE	2589	28	1490	1490	0	0
+ACGCCGCGCCGCTGCTGGGGATGTTCTG
+CAGTAACAGCACCACCGGAAAGAGGATT
+NODE	2590	23	2274	2274	0	0
+CTTTGGCAATCTGATGCGTGAAA
+TCCGGCAGCAGCAGCGCCACCAG
+NODE	2591	60	2969	2905	0	0
+GATACCAAAGGCAACCACCCCCAGCAGCAGAATGCCCAGCGTCTGCGGCTGCAGGAACTT
+CTTTGGTATCGGGACGGCGGCCGGGGTACTGATGGCGAAGCTGATGAACCTGTGCAGTAA
+NODE	2592	5	245	245	0	0
+GTCCG
+GTTGC
+NODE	2593	1	91	68	0	0
+C
+G
+NODE	2594	1326	81230	80862	0	0
+ATATTCGCGCTACCGTCTTCGTTTTTATATTTTATTCCTGCATCCAGCTGTTTTAACGCCTTGCGAGTGGCGGCGGTCAGGCATTGATCGCCGAGCTCATCACCAAGAAGACTGTCAAGGCTGTCAGGCACGCCGGTGGATTTACTGGGCGTGTATGAGTGGTGAATAACGATCTCCTTGCCCGCCGGAAAACGTTGTTGCCAGATAAAATATTGTTGAACGGCAATATTCAGATAGCCGTCATCAAACCACTCTGACGGTAATTGCTGTTTTCCCTCTTTATATCCTTCTTCAATAGAGGCTTTGCCCTCGCGATTGAGGACATGGCGTAGCTGTGGGATCGTCCAGCCGGTTTGCAGTAGTTTCGCCGTAATGTCTTCTTCACCTTTACCGCCTAAGTCATGGATGACTCGCCAGCGGGACTCGCTTTTAACCGGTTTACCGTCCACGCTGATCTTAAAGTTGGCAATACCTTCTGTACTATCTCCCATA [...]
+AGAATATCGCTTCGCAGCGGGTCGTTGGCTTTTACCGGCTGGCAAATATTTTTGCGCCCTTGCGCGGCGACCTGCTCACGTAAGAGCGCAGACGTTAACGGTACGTTTTTACCATAATGGCAGTGAACATCCTGCGGCGAAGCAATGGTTTTATCAAAGCGCACAACGCTGCCCCAACTCCAGCGATAACCTATCGCCATCACGCGGTCATAAAGATGATATTGATTTTGCCCATCCGTCAGAAAATTATCGTTTTTGTCTTTTATTAAGCCACAAACGTAAGCAATGCTACTGCTTGCTTCAATCCGCCGCAGGTTAAACAGCCCATCCTCAAGCCCTTCTTCATCGCGCAGCGACAGGGCAATATATTTGTGCCAGGTATCACCTTGTGGCAATGGCTTTATTTCTTCGGCAAATGTATTTTGGCAAATTATTAATAATAAAAATAAATAATACCGCATTTTTCTTCCCTCGAAAAACGGCACTCGCCGG [...]
+NODE	2595	12	650	162	0	0
+GTTCTTACTGCA
+GGTGCCGATGGC
+NODE	2596	38	2915	2854	0	0
+AATTTATCAGACAATCTGTGTGGGCACTCGAAGATACG
+GTGCGACGCGGCTTTCAGCTCACCGTCGCGAGGTGGCG
+NODE	2597	12	528	500	0	0
+ACCGTCCTGCCG
+TATAGCGTTCCC
+NODE	2598	27	1366	1303	0	0
+GCCCTGCGACGCGCTGTAGACGGCGGT
+AAAATATGTCGCTCCCTACGTCAACCG
+NODE	2599	117	10268	8300	0	0
+CGGGGAAGGATGAGAAGCTTCGACTAAGGTTCGATTCGAGCGCAGCGAGAAAGCGTTGCCGCAGGCAACGACCCGAAGGGCGAAGCGCGCAGCGCTGAGTCATCCTTCCCCCACCAC
+TGCCTGCGGCAACGCTTTCTCGCTGCGCTCGAATCGAACCTTAGTCGAAGCTTCTCATCCTTCCCCGTACGGAGAGATATGAGACACTATGCTTAACGGGGATAAGATACGCGACGG
+NODE	2600	831	44318	43774	0	0
+CCGGCAACCAGCACCAGACAGCGTTCACGCTCATCGGACGGCAGGGTTATCGACTCTCCAGCCTTCAACTGCCAGACATCAAAACCGACATACTCCCAGCCTGCATTTTGAGGGGAAATGTGTTGGATATTTCCCGACTCAGAGGTACAGGTACTCAGCAAGTTGGCCATAATCTTCTCCTTCCTGAAAGCGTATTAACCGAGAGTCGGCATACTGAACTCCGATACGATCTGCTGTCCGTTCGGCCAACGCGAGGTAACGGTTTTCATCCGGGTATAGAAGCGCACGCCATCCGGCCCATGGACGTTCAGGGCGCCAAACACCGAGCGCTTCCAGCCGCCAAAAGAGTGAAATGCCATCGGAACCGGAACTGGAATATTAATACCGACCATCCCGGCTTCAACCGACTGGGCGAATTCGCGCGCATAATGACCGTTGGTGGTGAAAATCACGCTGCCGTTGCCGAATTCATGGGAGTTTACCGTGCTAATG [...]
+CGGCGCTACGTATCGGCCCGGGAGAGCTGCGCGGCAAAGATGAAAATGAAATGGGCCCGGTTGTTTCACGTGCTCATCAACAGAAAGTGTTGGGTTACATCGACAAAGGAGTTAGCGAGGGAGCAACTCTGGTCATGGATGGCCGCAACTATAGCGTGGCGGGATATCCTGAAGGCTTTTATGTCGGCGGCACTCTGTTTGATAACGTCACGCCTGAGATGACCATCTGGCGTGAAGAAATTTTTGGCCCGGTTCTCGGAATTGTGCGCGTCCCGGATTATGCCACCGCCATTAGCACGGTAAACTCCCATGAATTCGGCAACGGCAGCGTGATTTTCACCACCAACGGTCATTATGCGCGCGAATTCGCCCAGTCGGTTGAAGCCGGGATGGTCGGTATTAATATTCCAGTTCCGGTTCCGATGGCATTTCACTCTTTTGGCGGCTGGAAGCGCTCGGTGTTTGGCGCCCTGAACGTCCATGGGCCGGATG [...]
+NODE	2601	202	10678	10463	0	0
+ATATAGGCCGTTGCGACCAACACGCTCATATTGGTCTGCCGTTGGCGGATACCGTCGATTAAGTCCCAGAACTGAGCGCGGGAGAGCGGGTCCACGCCGGTGGTAGGCTCATCAAGAATCAGCAATTCCGGGTCATGAATCAGCGCACAGCACAACCCCAGCTTTTGTTTCATCCCACCGGACAGCTTCCCGGCAGGACGGT
+TGCTGTGCGCTGATTCATGACCCGGAATTGCTGATTCTTGATGAGCCTACCACCGGCGTGGACCCGCTCTCCCGCGCTCAGTTCTGGGACTTAATCGACGGTATCCGCCAACGGCAGACCAATATGAGCGTGTTGGTCGCAACGGCCTATATGGAAGAGGCGGAGCGTTTTGACTGGCTGGTGGCGATGAATGCGGGCGAGG
+NODE	2602	247	10796	10401	0	0
+GATGAGCATCAATGCGGTGAAAGGCGTGGAGATCGGCGAAGGATTTAACGTGGTGGCGCTGCGCGGCAGCCAGAATCGCGATGAAATCACGGCGCAGGGTTTTCAGAGCAACCACGCTGGCGGCATCCTCGGTGGCATCAGTAGCGGGCAACACATTGTGGCGCATATGGCGCTGAAACCTACCTCCAGCATTACCGTGCCGGGACGTACGATCAACCGGATGGGTGAAGAAGTCGAAATGATCACC
+CGGTAATGCTGGAGGTAGGTTTCAGCGCCATATGCGCCACAATGTGTTGCCCGCTACTGATGCCACCGAGGATGCCGCCAGCGTGGTTGCTCTGAAAACCCTGCGCCGTGATTTCATCGCGATTCTGGCTGCCGCGCAGCGCCACCACGTTAAATCCTTCGCCGATCTCCACGCCTTTCACCGCATTGATGCTCATCAGCGCATGGGCGATGTCCGCATCCAGTCGGTCAAAAACCGGTTCGCCAAG
+NODE	2603	31	131	131	0	0
+TCTTATTTCTCCTGCGCCAGCCGGATACTGC
+TGGCGCCACCGGGCCTGGCTTGTTACTGCAT
+NODE	2604	8	326	298	0	0
+GCTCTATC
+CGGTGGCG
+NODE	2605	32	1604	1563	0	0
+ACCGCCCGCCGGGCGTCACCCGCCGGCAGCAG
+GCTGGCGCAGGAGAAATAAGACCCTGACGGCC
+NODE	2606	111	3100	3100	0	0
+CAGCGGCAGCACCAGAATGCCCAGCAGGACGCCGCCGCGCCGCAGCCCGGCCGTCAGCGCGACGCCCGGCGCGGCGAGAAACCCCAGCGCCGGCGTGCCGAGCAGCAGCGT
+CGCGCTGACGGCCGGGCTGCGGCGCGGCGGCGTCCTGCTGGGCATTCTGGTGCTGCCGCTGAGTGTCCCGGTGCTGATTTTCGCCGCCGCGGCGATGGACGCGGCATCGAT
+NODE	2607	57	87	87	0	0
+GGGCCGGCCTTGAACAAAGCGAAGCTATCGGCGATCGCTTTAATGTGCGTCGGTTTC
+CCGGCCCCCGCCCCCTGCCAGTCAAACTGCGGGAACTCACGCAGGAGTTCGGCAATC
+NODE	2608	57	1840	393	0	0
+TCGGCCACCGCCACCTGCCAGTCAAACTGCGGGAACTCACGCAGGAGTTCGGCAATC
+TGGCCGACCTTGAACAAAGCGAAGCTATCGGCGATCGCTTTAATGTGCGTCGGTTTC
+NODE	2609	51	69	69	0	0
+TCTTTGTCCATCCCATACTTATCACTTTTACGTTCCGTGCTCTTTTTGCCT
+AAAGATGGCATCAGGATGTACAGGCGGTTAAAGCGTCCCTTTAACCGCCAT
+NODE	2610	51	80	80	0	0
+GTCCAGCTTATAAATCAGGATAGCGTGATCATCTTCACGGCTGGAAAAAAT
+CCCGACCACCGGTATGCTGCGCACGCGTGCCTACATTGGCCAGCATATGCC
+NODE	2611	18	561	494	0	0
+ACCCCGCCCGACGATGGC
+TATAAGAATGATTAGAAT
+NODE	2612	791	43865	43731	0	0
+TTGATGTGGGGCCGCTGAACAGCTGGCTGCGTGCGCTGCCAATGTGCTTTGATCCGGATATGGACAGGAAGCAGTGGCACACACGTCTGATGTGGGTACAGCATCTCGCAGGGCTTCTGCCGGTGACCGGCCGGGAAACCGGTACAGGGCATCCCGGCTTCAGTTTTTTTAACCGCGGGGGAGATGTCCTGACGTTTGATCCCCTGAACAAACTGGATCGTACCCAGAATGCCCATCTGTTGCTGTTCGGGCCCACGGGGGCAGGGAAGTCTGCCACGCTGTGTGCCTCTCTGTCACAGGTGATGGCCGTGCATCGTCCCCGGTTGTTTATTGCCGAGGCGGGTAACTCGTTTGGTCTGCTGGCCGATTACTTTGAAAGTCTCGGGCTTTCAGTGAACAAAATCAGTGTCAAACCGGGGAGCGGTGTGACACTGCCGCCCTTTGCGGATGCGCATAAGCTGGTTGAAGAAGGGCAGACCCTGCAGAGTGTGG [...]
+CATCACAGGAGATTTCCCGGAGTGCCACCTGCAAATCTTCCGGCAGCATCTGCCGCCCTTCCCGGTACGTCGCGTGTGTGGCCATCAGCAGCGCTTCACGGATCATCGCCCGGTCCGCACGTTTGAGTGAGGCCTCTTCCTTCGGATCACCGCCGGTGATCATCATCCTGGCAGAGATTTCCATTTCTCCCAGAATGTCGCGTTTCTCCTCCTCTTCATCGCCATCCAGATCGGGCAGCGAGTGCTCATCCACACTCTGCAGGGTCTGCCCTTCTTCAACCAGCTTATGCGCATCCGCAAAGGGCGGCAGTGTCACACCGCTCCCCGGTTTGACACTGATTTTGTTCACTGAAAGCCCGAGACTTTCAAAGTAATCGGCCAGCAGACCAAACGAGTTACCCGCCTCGGCAATAAACAACCGGGGACGATGCACGGCCATCACCTGTGACAGAGAGGCACACAGCGTGGCAGACTTCCCTGCCCCCGTGGGCC [...]
+NODE	2613	179	9555	9465	0	0
+GCTCGCCGTTGATCACCATCGCGACGTTGTCGCCCTTCATCGCTTCGAAAAAGCGCACCACGTTGCCGTTATCGGTTTTCATACCGCTACGCAGGCGATAATCGCCATCTAATGCCTCTGCAATAGCCGGCTCTTCCAGCGGCGTGGCGGCGGTCAGCGCTCCCACGCCTTGCTCAGTG
+CGGCTATTGCAGAGGCATTAGATGGCGATTATCGCCTGCGTAGCGGTATGAAAACCGATAACGGCAACGTGGTGCGCTTTTTCGAAGCGATGAAGGGCGACAACGTCGCGATGGTGATCAACGGCGAGCAGGGCACCGTGAGCCGTATTGATGTGCTGGACAGCGACATCCCAACCGCC
+NODE	2614	3	136	136	0	0
+TGA
+CCG
+NODE	2615	29	1322	1277	0	0
+TGAAAAGCAACACGCCGCTCAACGTGCTG
+TCAACAGCGGCCCGACCACGATACTGGCG
+NODE	2616	314	14278	14079	0	0
+ACCTGGAAAGCGATGTATAACGGCATTAATGAGATGATTGATGATCTGATGGAGCACATCAGCCTGGAGAATAACGTGCTGTTCCCACGCGCGCTGGCCGGGGAATAATCGCCAGCCGGGCATTTTGCCGGATGGCGGCTGTAAACGGCGCCTTATCCGGCCTCCAAATCAACGCTACGCTGTAAGCCCGGTAAGCGCCAGCGCCACCGGGCAAAACAATTAACGCATTCCCGCCATCCGTTTCTTACCTATCAACAGCCAGCCCAGACCCAACGCGATAAACCACAGCGGCGTCACGATCAGCGCCTGGCGCG
+GGCTGGCTGTTGATAGGTAAGAAACGGATGGCGGGAATGCGTTAATTGTTTTGCCCGGTGGCGCTGGCGCTTACCGGGCTTACAGCGTAGCGTTGATTTGGAGGCCGGATAAGGCGCCGTTTACAGCCGCCATCCGGCAAAATGCCCGGCTGGCGATTATTCCCCGGCCAGCGCGCGTGGGAACAGCACGTTATTCTCCAGGCTGATGTGCTCCATCAGATCATCAATCATCTCATTAATGCCGTTATACATCGCTTTCCAGGTGGTACAGGCTTCTGGCGGCGGCGTTACATTTTGGGTGACGTGTTTGATGA
+NODE	2617	4	186	186	0	0
+ATCA
+ACGT
+NODE	2618	47	3494	3494	0	0
+TTTCATCGACGATCTCGCCCAGACGTTGCAACTTAGGCGCGGAAACA
+TGGCGAAACGTCGTTAATACGAGGATGAAAGAATGAAATGGTTTAAC
+NODE	2619	51	3552	3530	0	0
+TGGCTTCGCCAGACATGATCCGTTCATGGTCTTTCGGTGAAGTTAAAAAGC
+AGAGCAATTTTGATCGCATCAAACTCTTCGGTTTTAGTCTGCGCTTTCAGA
+NODE	2620	51	1678	521	0	0
+GTACTTTCTCCATAAACTTCGCCACGCGCGCCTGGTCAACAAAGTTGGCGA
+CGCCATATCCGACAATAAAATGGGGATAAGCAAAACGCTTATCCCCTGCAG
+NODE	2621	51	2727	2727	0	0
+GCCTATCGCCATAATCAAGCCGGTCGTCAATAATACCGGCAACGTCGCCCG
+CATTTATATTCCATTCTCACCTCTGGGCGCGATGGTTGGACTGGAGCCGCT
+NODE	2622	62	3860	3860	0	0
+CCTTTGCATTAATTACTTTATTACTTTCTCATTTTTATAATGCTATACCGACTGACTTAGTC
+TTAATGCAAAGGCATAAAGCGGTAGCGGCATACCAAAGATTTTGAATCTGAGTAAATCGCTA
+NODE	2623	5	166	166	0	0
+GCGGG
+GACTT
+NODE	2624	396	19029	18886	0	0
+GGTATCCGTATGCTCGCTTTTATACGTGGGATCGTTGCTGTTGACCATCACGGCAGCAGGATCGTCTTTATCCGCCAGATTGATACCAATCAGTACCAGAATGGCCAGCGACAGTAGAATGATAACCCAACGTCTGGTTTTACTCATATCGATTGCCCTTTGGCCTCATCCAGCTTGCCCTGCGCCAGCAGCAGCAAATCGCACACCTCACGTACCGCGCCGCGCCCGCCGGCAATGTGCGTCACATAGTCAGCGCGGGGGATCAGCAGCGGATGCGCATCCGCAACGGCAACGCTTAACCCCACTTTTTCCATCACTGGCCAGTCAATCAGATCATCGCCGACATAGGCAACATTTTCCGGCGCAATGGCCAGTTTTTCCAGCAGATCGCTAAAG
+ATGTCGGCGATGATCTGATTGACTGGCCAGTGATGGAAAAAGTGGGGTTAAGCGTTGCCGTTGCGGATGCGCATCCGCTGCTGATCCCCCGCGCTGACTATGTGACGCACATTGCCGGCGGGCGCGGCGCGGTACGTGAGGTGTGCGATTTGCTGCTGCTGGCGCAGGGCAAGCTGGATGAGGCCAAAGGGCAATCGATATGAGTAAAACCAGACGTTGGGTTATCATTCTACTGTCGCTGGCCATTCTGGTACTGATTGGTATCAATCTGGCGGATAAAGACGATCCTGCTGCCGTGATGGTCAACAGCAACGATCCCACGTATAAAAGCGAGCATACGGATACCGTCGTGTACAGTCCGGAAGGCGCGTTGAGCTATCGTCTGATCGCGCAGCA
+NODE	2625	35	1022	1022	0	0
+TGAAGTATGGCCCCGCTGTTGTCGCGGCCTACAAG
+GTGGGCAGGTTTTGAATCCTACCCTGTCGGAAGCC
+NODE	2626	2	96	96	0	0
+CC
+AT
+NODE	2627	2	335	331	0	0
+CA
+GT
+NODE	2628	44	2223	2223	0	0
+CAGGCGCATGATCATCGCCAGTATCAGGCCGGTAATGCGCGCGC
+CTGGCGTCAATCTCGTGGCTGGTCACCTTGACTAAGCCGCTCTT
+NODE	2629	29	1138	1138	0	0
+TGTCTCCCGCTTCTGGCGCGATGTTCGCT
+AGCCCACCCATAATCTGAATCGCATCGTC
+NODE	2630	22	866	866	0	0
+ACGGGCTTCGTCAGTATAACCA
+GCGAACGTATCGGTGGCGGCAC
+NODE	2631	51	3184	3184	0	0
+ACCCCCGTACTGAGTAATCAACTTTGTCACATGTAATGACCTGTTTAGGGA
+TGAGTCCCGCTTTTGCCGTGGTTTCAGCTAATTGGTAACGCACTGTACAGG
+NODE	2632	1	119	118	0	0
+A
+A
+NODE	2633	58	2536	512	0	0
+AGCCCGGTAACCCTAAGCACGGTATCGCGATCGAAACCATCGTTTAGCATGGAGCGGG
+ACCGGGCTGGCGCCTGCCGATCTGGCGTCTGAAAGCCATTAACCTTGCAGAATGGTCC
+NODE	2634	151	6267	6090	0	0
+TTCAGCAACGGCCCGCAGGGCGAGCCACGCAGTGGCGAGTCATCCTCTATCACCGACCAAATTCAGAAACCCTGCTCAGCGAGCAGGGTTTTTTTGTATCTGAAGCCTGACGAGGATGAGAACCTCCGGGGGCAAGAGGTTCGACCCGAGC
+AGATACAAAAAAACCCTGCTCGCTGAGCAGGGTTTCTGAATTTGGTCGGTGATAGAGGATGACTCGCCACTGCGTGGCTCGCCCTGCGGGCCGTTGCTGAAGCAACGTTCTCTCGCTTCGCTCGGGTCGAACCTCTTGCCCCCGGAGGTTC
+NODE	2635	51	1889	1888	0	0
+ACCTTTGTGTACGCGGGACGGTACCAGGTAATCGCGCGCGCCTTCCGGGGT
+TAAATTCTATGCGTTGCCGCAGTCTCCGCAGTTGTTCAAACAGCTCCTGAT
+NODE	2636	34	1282	1282	0	0
+TACTGATGGCGAAGCTGATGAACCTGTGCAGTAA
+AATCCCGAACGCAATCACACCCAGCAGCAGAATG
+NODE	2637	18	1505	1470	0	0
+GAACAAAATCAACCCGCT
+TACCCCGGCCGCCGTCCC
+NODE	2638	51	2584	2344	0	0
+GTTTCTCATCATAGAAACGCACGACCTGCAATGACTTAAATATCAATGAGG
+CGCAACACGCTGGCGTATCTGGCCTACTCCGACAAAGTAGTCGACGGGTCG
+NODE	2639	39	2516	2396	0	0
+TTAACGATAATCGCCAGATGGCGAATTTCACAGGGGCTG
+ACCCGACGGCGGCGTTTCGCAATAAGGTGGTTCATTTTG
+NODE	2640	38	2931	2931	0	0
+AAGCGATGAGGAGTAAGCCGCCTTTAGACGTAATTGGC
+GGATGATCAAAACCGTAACTGATGTTCTTAGGTTAACG
+NODE	2641	13	931	931	0	0
+AAATTAATCCATT
+TTAGCAGCGACCC
+NODE	2642	51	2493	2471	0	0
+TACAGCCGCTGGGGTGGTATCACGATCCGCTGACGGTGGTGATGGCGGGTG
+ACCACTAACTGTGTATAGTGACCTTTCGGGCTGGCCTCAATGACCTGTACT
+NODE	2643	57	6292	6116	0	0
+CCCTCACGGGACACCTTCGCAGGCTTACAGAACGCTCCCCTACCCAACAACACACAG
+GTGAGGGATGCTGGAGGTATCAGAAGTGCGAATGCTGACATAAGTAACGATAAAGCG
+NODE	2644	1120	61493	59809	0	0
+GACATATCGGCAAATGTTATCATCAAAGATAGGATACATGACACGATGCGTGAAAAATCCCGCAGACATCCATATGGTTTAAATGCAATAATCAGCCACGTTTCTAGTCAATAACAATACCAGTACCTGGTTTGCGCAAGGCGAAGGATTATTTTTATGAAGCTTAAGAACACTCTCCTGGCGTCGGCTCTGCTTTCTGCGGCTGCTTTTTCTGTCCATGCAGCAACAGAACTGACGCCGGAGCAAGCGGCTGCACTAAAACCTTATGACCGCATCGTTATTACCGGTCGTTTTAATGCTATTGGCGATGCGGTCTCCGCCGTGTCCCGCCGCGCAGATAAAGAAGGCGCAGCCTCCTTCTATGTTGTCGACACCTCGGAGTTCGGCAACAGTGGTAACTGGCGTGTTGTGGCGGACGTGTATAAAGCCGACGCGCCGAAAGCCGACGCGCCCAAAAATCGTGTCATTAATGGCATCGTGGAATTACCGAAA [...]
+TTATTACCGCGCTCCTGCCACTGACGCGTAATATGATAATACTTAGCGCCTTTCTTCGCCGCGCGTTTGGCGACCTGGTAGGAGATTTCTGTCATATTGCCGTAGTTGCCGGTGAACTTAACGCTGTCGAAAGGCACCATCATCGCAGCCGTCGCTTTATTCAGCTCCTCAACTTTTGTGCCATCCGGTAGTGTGACAGTGTAACGCCCGCCTTTGGAGGATTGCGTTTCGAAGAAACGGCCTACTTCGGCGCTCGGCGAGGCTGACGTGGCGACGCCTGGAATTTCGACTTTCTTCGCAGCTTCGCCGCCCTGAGCCAGCGCGGCGCGGCCAGCTTCAGAGTCTGCCGGAATAGCGTCCGGGCTCTGGACGATGCGTTTTTTCGCATCTTGTTTATAGATAAATGCAGTGATGCGCTGGTTTCCGCCCTGATTCGCATCTATCTGACGAACAATATAGAAAGCGTATGCGCCTTTTTGTTTCGCCGCTTTC [...]
+NODE	2645	51	79	79	0	0
+GTTTATTGGGCGCAAGCACCATCGTTGGCCGCTGCAAGTCCGCAATGACGT
+CCCCTGGCGGCGCAGCTCTACGGCGAAATGAAAGAGTTTTTCCCGGAAAAC
+NODE	2646	51	2931	2931	0	0
+TGAAGGAGCTGAAGGCGGAGATGCCTGACCGCAACTTTGATTACTTGTTAC
+ACCAGCGTCTGGCGCATCGATATAATGCGGTTACGCATCGCGTCGACTTCC
+NODE	2647	24	58	58	0	0
+CGGTCAGCAGCAACCAACACTGGC
+GGTTGCCAGTGTTGGTTGCTGCTG
+NODE	2648	14	14	14	0	0
+GTTTTCTCGCCCTT
+CCCTTGCATCCAGC
+NODE	2649	39	97	97	0	0
+TTAACGATAATCGCCAGATGGCGAATTTCACAGGGGCTG
+CCCCGACGGCGGCGTTTCGCAATAAGGTGGTTCATTTTG
+NODE	2650	3	150	147	0	0
+TCT
+CCA
+NODE	2651	12	469	469	0	0
+AGGCCTCAAACA
+ACCCGCCCTGCC
+NODE	2652	1375	81049	80748	0	0
+CTTGAGTCTGTCGAATCCGATATTCGTCTTGAGCAGAATACCATGGATATGACCCGAATTGATGCGCGCAAGATGCAGATGACGGGCGATCTGATTATGAAAAACTCAGTTACGGTCGGTGGTATTGCAGGGGCGTCCGGGCAGTACGCCGCTACTCAGGAACGTTCCGAGCAGCAAATTAGCCAGGTGAATAACCGTGTTGCCAGCACCGCATCGGACGAAGCCCGTGAAAGTTCACGTAAATCGACCAGCCTGATTCAGGAAATGCTGAAAACAATGGAGAGCATTAACCAGTCGAAAGCATCCGCACTTGCTGCTATCGCAGGCAATATTCGCGCTTAATCTGAAAGGTCATCTATACGCCATCATGGGTGTGATTTAATCGCGCTCCTGATGGCGAACTGGGGATATTATGCTTAATATTCAAAATTATTCCGCTTCTCCTCATCCGGGGATCGTTGCCGAACGGCCGCAGACTCCCTCGGCGAGCGA [...]
+ATGTGGTTTTCAGATTTTCTTCCTGCGCTTTAAAACCCGACTGCCAGGCTTGATATTTGGCGTTATCCATTTCGAGTTTTGAATCTTTTCCCGGCGCGCCTAAACCATCAATATCCTGAACCATTTTTTGTAATGGCGTCAGATCAACGGTGACGACATAACCGGATCCATAAGATTTCAGGCAGCTATTCGGCAAATTCAATTCACTGAGCCACTGTCTCGCTTCCGCTTCAGTAGCTACTTTAACGCCGCTGCCTGACTGCGCTGGGAATAAAACGGTATTACTGTTTATTTGATTATATTTATTGACTAAACTGTTTAAATCATTTTTGAGTGAGGTAACATCTAGCTTAACGGTATTACCGTCCTTACCTGGTAATAACCAGCCTCCCATTTTGGACAGAATGTCACTGAAGGCCTGATAAAAATCGGTATAGACTGCGACAACGTTTTCATAAACGCCCAGATAGCTGTCACCTATCGCCGATATAT [...]
+NODE	2653	51	3294	3241	0	0
+GCCTTCTCGTCTTAATAATTACCCATTATTTTCAATGAGTTGTTAACATCA
+CTATCGCGCTGATTTTAAAGTAATGGTAAGAATTTACACACAAAGTTATCC
+NODE	2654	49	2907	2871	0	0
+GTTAAGCACAGACGCACCCAAGCGGGAATAGCTCAGTTGGTAGAGCACG
+AGCACTTTCAAATTTGGAGCGGGAAACGAGACTCGAACTCGCGACCCCG
+NODE	2655	23	2585	1015	0	0
+GATACACGGTCGATTTCGTTCAG
+AGTCCTGGCGCAGGACAACACCC
+NODE	2656	92	3528	3528	0	0
+GCCGGGGATGCCGCCTGAACCGGCGCAGGCGAAGCCGCCGTCAGCTGGCTGATATCGCCGCCGTCGCTGACCTTCACCACAAAGGCTTTGCC
+GACGGCGGCTTCGCCTGCGCCGGTTCAGGCGGCATCCCCGGCTGCTCCGGCAGGCGCCGGCACCCCGGTCACCGCGCCGCTGGCGGGCAACA
+NODE	2657	10	610	610	0	0
+CGGAAACCAT
+TGGCGAAGCC
+NODE	2658	51	53	53	0	0
+CAAAGCGGCTGGTGGAAAGCTACCCGGTACGTACCTGGCAGGTGCAGTACG
+GCCACCGGGTAGGGGTATTCCGCCAGCACTTCATCCAGAATATCCACCACG
+NODE	2659	8	248	248	0	0
+ACCAGCGG
+TTCGGTGC
+NODE	2660	68	162	162	0	0
+AGGGGAAAGGAAAAAAAAGCGAGGCCAGCGTCACCATTGATAAGGCTATTGATGACGTTCGTCCCGAC
+TTTTTTTTCCTTTCCCCTTTTTCCCCGCCTCTTTTTCGATGGTGATGACCTCATGGCCGGCCTGACGG
+NODE	2661	897	37565	37162	0	0
+CCAACATTGCGCGCGAAATTGTGCTGGGTACGGGGATGAATGTTCATACCGATGCCTATAGCGTAAGCCGCGCCTGCGCCACCAGTTTTCAGGCGGTAGCGAATGTGGCGGAAAGCCTGATGGCCGGCACGATACGCGCGGGTATCGCTGGCGGCGCAGATTCGTCGTCGGTACTGCCAATAGGCGTGAGTAAAGCCCTGGCGCGGGTACTGGTTGATGTCAATAAAGCCCGGACGACCCGCCAACGGCTGACGCTTTTTTCTCGTCTGCGCTTACGCGACCTGCTGCCCGTTCCTCCCGCCGTTGCTGAGTATTCCACCGGTCTGCGCATGGGCGATACCGCCGAACAGATGGCGAAAACGTATGGTATTACGCGTGAACAGCAGGACGCGCTGGCGCATCGTTCACATCAGCGCGCCGCGCAGGCATGGGCGGAGGGCAAACTGGCGGAAGAAGTGATGACGACCTATGTGCCGCCGTATAAAAACCCCT [...]
+AGTTGTAAGTTCGCCAGAGTCTGAGCGGCAAACGCTTCATGCATGTCGAAAAGCGTCAGATCGGCCATCGTCAACCCGGCCCGCTCCAGCGCCAGCGGCGTTGACCAGGCCGGCCCCAATAGCATGTCCTGCCAGACATCAATAGCGGTAAAGGCGTAGCTGCGCAGATAACCAAGCGGGTGCAGCCCCAGCTCTTTAGCGCGGGATTCGGTCATCAGAATAACGGCGGCAGCGCCGTCGGTCAGCGGTGTACTGTTGGCGGCGGTCACGGAGCCATGTTTTCTGTCAAAAGCGGAACGCAGTTTAGCGTAGTCCGCCAGCGTGGAGGCGCCGCGAATGTTGTTGTCTTCTGCAAAGGGGTTTTTATACGGCGGCACATAGGTCGTCATCACTTCTTCCGCCAGTTTGCCCTCCGCCCATGCCTGCGCGGCGCGCTGATGTGAACGATGCGCCAGCGCGTCCTGCTGTTCACGCGTAATACCATACGTTTTC [...]
+NODE	2662	51	2324	2224	0	0
+ACCCGGCAGGGTAGCTATAACACGCTACAGTTTGAAATTCGCGGACAAATT
+TTTTATCGAGCAATGGCGTGACCCTGAGTGTGGCGGCGTTCAGCCGGGGTT
+NODE	2663	4	225	225	0	0
+ACCG
+GGCG
+NODE	2664	6	444	437	0	0
+CGATGT
+ATCGTC
+NODE	2665	104	11913	8157	0	0
+CTGGATGATTTCGATTTTACGAAGCCACGTTCATTGCTGGCAAACACGGTGGCAAACCCGCGTGAAACCGGTCATGCCACCTACGAGCATTATGAGTGGCCGGG
+TGCCACCGTGTTTGCCAGCAATGAACGTGGCTTCGTAAAATCGAAATCATCCAGCACCCACTGTCCAGTCCGCAGACTCTCGTTTGCCGTGATAGTGTGGATAA
+NODE	2666	4067	244725	243690	0	0
+AAGACGTTATCATCCTGCTCGACTCCATCACCCGTCTGGCGCGTGCCTACAACACCGTGGTGCCGGCTTCCGGTAAAGTATTGACCGGTGGTGTGGACGCTAACGCCCTGCATCGTCCGAAGCGTTTCTTCGGCGCGGCGCGTAACGTGGAAGAGGGCGGTAGCCTGACTATCATCGCGACGGCGCTGATCGATACCGGTTCCAAGATGGACGAAGTTATCTACGAAGAGTTTAAAGGCACCGGTAACATGGAGCTGCATCTCTCGCGTAAGATTGCTGAAAAACGTGTCTTCCCGGCTATCGACTACAACCGTTCCGGTACCCGTAAAGAAGAGCTGCTCACCACTCAGGAAGAGCTGCAGAAAATGTGGATCCTGCGTAAAATCATCCATCCGATGGGTGAAATTGACGCGATGGAATTCCTCATTAACAAACTGGCGATGACCAAAACTAATGACGACTTTTTCGAGATGATGAAGCGCTCATAACCTG [...]
+TGATTGCCCGTCACCATAAGGATTATGGGCGCGGCTCATGGTTTGATATTCATTTTCGTCGTGCAGCAGACGCATAACTTCCGCCACAATGCGCCGGGAATCCGTGCCGATCAGTCTTACCGTACCAGCGGTAATGGCTTCCGGACGCTCTGTGGTTTCACGCATGACCAATACCGGCTTACCTAATGACGGCGCTTCTTCCTGAATACCGCCGGAATCGGTCAGAATGAGCCAGGCGTGATTCATCAGCCAGACAAAAGGTAAGTAGTTCTGCGGCTCAATCAGTACCACGTTTTCAACATGGCCGAGGATACGGTTGACAGGTTCGCTGACGTTGGGATTGAGATGCACCGGATAGACAATTTGCACATTCTGGTTCGCGGCGGCGATTTCCGCCAGCGCCTGGCAGATATGCTCAAAGCCCTGACCAAAGCTTTCACGCCGATGACCGGTCACCAAAATCATCTTCTTATTCGCGTTGAGGAAAGGATA [...]
+NODE	2667	30	2343	2343	0	0
+GTAAAAAAGCGCCCTAAAGGCGCTTTTTTG
+TCGAACCTGCGACCAATTGATTAAAAGTCA
+NODE	2668	51	2609	2578	0	0
+ACCCTAACGATTATTCCGCCAGTAATCTTCTGCTTCCGCGTGGGGCTATCA
+TTATCCGGAAACTCGCCATAAGCCAGCAGGTTCATGCTCGATAACCCGCCG
+NODE	2669	11	1455	528	0	0
+ACCGACGGCAG
+CACGCCGGGGG
+NODE	2670	34	2430	2430	0	0
+TGCGCTGTCCGTGTCCAAACTGGCTGCGCCAATA
+CACGTAGTACGTGAGGATTTTGAGCACTGCCCAG
+NODE	2671	10	646	633	0	0
+TTAGATGCCT
+ACCTCTTTTT
+NODE	2672	1	77	40	0	0
+G
+G
+NODE	2673	3	124	124	0	0
+CGG
+GGT
+NODE	2674	7	311	311	0	0
+CGACGTC
+CGCTGAT
+NODE	2675	1	45	45	0	0
+A
+C
+NODE	2676	1	90	90	0	0
+C
+G
+NODE	2677	690	49537	45293	0	0
+GCATTTACCCGCTGACGGCTATCTGGCGGTGCTGGGGGCGCTGCTGGCGGGCAGCGCGACGTTAAGCCCCTTCGCCACCGCGGCGGCGCTGCGCCTCAGCGTGCAGTAGCGCCCCGGCGCGACGGACATTTTACTGGTTTCAGGAGGTCAGGTGACAACGATGTGGAAAACCCTTCATCAGCTGGCGGCGCCGCCCCGGCTGTATCAGATTTGCGGCAGGCTCGTGCCGTGGCTGGCGGCGGCCGGCATCATCGCGCTGGCCACCGGCTGGGTCCGGGGCTTTGGTTTCGCCCCGGCGGACTACCAGCAGGGGGAGGGCTACCGCATTATGTACCTGCATGTCCCGGCGGCCATCTGGTCAATGGGTATCTATGCGGCGATGGCGGTGGCGGCGTTTACCGGGCTGGTCTGGCAGATGAAAATGGCCAGCCTTGCCGTCGCGGCGATGGCGCCGGTGGGGGCGGTGTACACCTTCATCGCGCTGGTCACCGG [...]
+GCCCGCCGCGCGCCCGGCCATTTTACGGTCGTCAAAGGCGTGCCACAGGGCGATGACCCCGGCGTAGAGAAACAGCAGCACCAGCTCCGAGGTCAGGCGCGCGTCCCACACCCACCAGGTGCCCCACATCGGTTTGCCCCACGCCGCGCCGGTGACCAGCGCGATGAAGGTGTACACCGCCCCCACCGGCGCCATCGCCGCGACGGCAAGGCTGGCCATTTTCATCTGCCAGACCAGCCCGGTAAACGCCGCCACCGCCATCGCCGCATAGATACCCATTGACCAGATGGCCGCCGGGACATGCAGGTACATAATGCGGTAGCCCTCCCCCTGCTGGTAGTCCGCCGGGGCGAAACCAAAGCCCCGGACCCAGCCGGTGGCCAGCGCGATGATGCCGGCCGCCGCCAGCCACGGCACGAGCCTGCCGCAAATCTGATACAGCCGGGGCGGCGCCGCCAGCTGATGAAGGGTTTTCCACATCGTTGTCACCTG [...]
+NODE	2678	51	2037	466	0	0
+TTTCGCTCATTTCCGTCATTTCTACCATCGGTATCGCGCTGGGCGTGGCGG
+ACCATACCGCCGCGCCGCCGTCCACGGCTGAAACGCAAGCCAATTAACAAT
+NODE	2679	77	2731	2731	0	0
+TTTTGCGTGTGCGGTAACTGTAAAACCGTAGGCCTGATAAGCGCAGCGCCATCAGGCAACCGGCACCGCCGGATGGC
+GGTTTTACAGTTACCGCACACGCAAAAAAGCCCGTCCAGACGGACGGGCTTCTTCACTTGTCTGATGCCTGGCAGTT
+NODE	2680	2289	123624	123142	0	0
+AACCTCATGTAAGCGGACAGCGCGGTGGGGAAAGCGGGAACACGGGCGAATGGTCTAACGTATTTCGACGTTTTCCGGCGTCCCTGCCTGTTCAGGCATCCGTTTATTCGCATGGGAATAAATGGATGCGCATAAAGAGAGAATATTATTGCGCGGCTAACCAGAAAAAATTGAATTAATTATCCAGCTCGCTCATATTTTTCAGCTGATCGCGATTAATCTGTTCGGTTTTCCCGGTGGCGGCGTTTTTGTAAGACACCATACCGGTATCGTTATCGACCTCGGGTTTCCCGTCGGTGACAATAGTTTTGCCATCCGTGGTTTCAACCGCCTGGTTAGAAGAGCATCCTGCGACGGTGAATAGTGTTGCTGCGGTAAACAGTGCGGTCATAAGACGTTTTTGCATGGTGTTCTCCCTGCTTTTCAGTTGTTTTAGCATGTGACTGTTAACTGTAGCGTTATTGGCGAAAAGCAGGGAGAAATGCAGAACAC [...]
+TGGGCGTCAATAAGTTCAATGTGGATGAAGATAGCCCGCACATCATTCTCAAAACCGATCCTGATAAACAGGCGCTGGAGGTGCTGATTAAGGCCTGTCCGGCGGGACTGTATAAAAAGCAGGACGACGGTAGCGTTCGTTTTGATTACGCCGGGTGCCTGGAGTGCGGAACGTGCCGGATCCTCGGCCTTGATACGGCGCTGGAGAAATGGGAATACCCACGCGGGACGTTTGGCGTGGAGTTCCGCGACGGCTAATAAGTACGAAGTTGTGCCCCCGTTGGCCGGATAAGATGCGGTAGCGTCGCCATCCGGCAATCATGTGGCGCCAATGCCGGATGGCGGCGGAAACGCCTTATCCGGCCTACAGATGACGCTTTGCCCGTGTTGAAACAGGACATCACCATGCCGCAGCCCAGGAACTTTGACGACCTTAAATTCTCCTCCATCCATCGCAGAATTATGCTGTGGGGAAGCGGCGGCCCGTTCCTTG [...]
+NODE	2681	51	2193	2193	0	0
+CAATAATCCGCTAACGATGTCATCGCCATCCTGCAGCCATACATTGAGTAA
+GCTTTTTCTTGCACCGGCATGTGGGTTAATTATTCGCTTTATGGTGGGATA
+NODE	2682	73	4143	4143	0	0
+ATAAATCAGCGCGGCAAGGATAACCATTCCCGTAAATGAAGAAACCGCGGAAAAAGCCCCCATCACCTGACCG
+TTATCCTTGCCGCGCTGATTTATTTACTCAATGTATGGCTGCAGGATGGCGATGACATCGTTAGCGGATTATT
+NODE	2683	7	305	288	0	0
+TTTTCAA
+ACCAGCC
+NODE	2684	277	14423	14382	0	0
+TGAGCGCTGGCACGCGTCCGGTGAGCGAGCCTGGCACGCTCTCCCGGCTGACCACCGTTTGGATGCGCAGCTTGCCTTCATAACGCTGTTGCAGTTCCAGCATTAGCGGCAGATAGCTTAAATCGGCGGCGAAGCGTGCGGCGTGGACTAAGACCAGATTTTTAAAGCGCGCGACATCCTGGCCATATTGCAGAATAGACAAATACGGGCCAATAGCGGTTCCGGTTGCCAGCATCCATAGCGTCTCGCAGTCAGGCACTTCATCCAGTACAAAGAA
+AACCGGAACCGCTATTGGCCCGTATTTGTCTATTCTGCAATATGGCCAGGATGTCGCGCGCTTTAAAAATCTGGTCTTAGTCCACGCCGCACGCTTCGCCGCCGATTTAAGCTATCTGCCGCTAATGCTGGAACTGCAACAGCGTTATGAAGGCAAGCTGCGCATCCAAACGGTGGTCAGCCGGGAGAGCGTGCCAGGCTCGCTCACCGGACGCGTGCCAGCGCTCATTGAAAACGGCGAGCTGGAAAAAGCCGTTGGATTACCGATGGATAAAGAG
+NODE	2685	154	8694	8500	0	0
+AGAACTCCCCTGGCCGACCATTCGGCATCCAGTTCAGCTTCGCGATCGGTATAAAAACTGTCATGGCTGCGTACCAGCCCGCAAACGGCAGAGATGTTCATCTGTTTCGCCTGCTGTATCAGCGTGGCGGTAAGATACGGGTCCGCACAGGCCG
+CAGATGAACATCTCTGCCGTTTGCGGGCTGGTACGCAGCCATGACAGTTTTTATACCGATCGCGAAGCTGAACTGGATGCCGAATGGTCGGCCAGGGGAGTTCTCGGCGCGGATATGGAAACCGCCGCGCTGATGGTGGTGGGGGCGTTACGTG
+NODE	2686	51	2185	2131	0	0
+TGGGCGTTCAGCTCCAGCCGCAAGAAGACCTCGCGGGCTGGTTGACCGCCG
+AGCGTAGCGCACAGCGTTTGCCATTCCTCAGTAAGCGCTTGCTCCTCCTGC
+NODE	2687	1276	71808	70594	0	0
+ATCACCACCTCAGATGACTTAATCGACTTCCTCACCCTGCCGGGCTATCGCTTACTGGCTTAATTCACCACATAACAATATGGAGCATCTGCACATGAAAACCCGTACTCAACAAATCGAAGAATTACAGAAAGAGTGGACACAACCGCGCTGGGAAGGCATCACCCGCCCGTACAGCGCGGAGGAGGTGGTGAAATTACGCGGCTCGGTTAACCCGGAGTGCACGCTGGCGCAGCTCGGCGCCGCGAAAATGTGGCGGCTGTTGCACGGTGAAGCGAAAAAAGGCTATATCAACAGCCTTGGCGCGCTGACTGGCGGTCAGGCGTTGCAGCAGGCGAAAGCCGGTATTGAGGCGATTTATCTTTCAGGCTGGCAGGTGGCGGCAGATGCCAACCTGGCATCCAGCATGTATCCGGATCAATCGTTGTACCCGGCAAACTCTGTTCCGGCGGTAGTGGATCGGATCAACAACACTTTCCGTCGTGCAGATCA [...]
+AGTGTTTCATGCCCTCGCCCTGAGCGTATGCATGCGCCAGGTCAAACATGTTGAACCACATGCTGTGAATACCCGCCAGGGTAATAAACTGGTATTTGTAACCCATGTCCGACAACTGCTGCTGGAAGCTGGCAATGGTCTTGTCGTCCAGATTCTTCTGCCAGTTGAAGGATGGTGAACAGTTATAGGCCAGCAGTTTGCCCGGATACTTCGCGTGGATAGCATCGGCAAAACGACGCGCCAGTTCGAGATCCGGCGTAGAGGTTTCGCACCATACCAGATCGGCATACGGGGCATACGCCAGACCGCGGCTGATCGCCTGCTCAATGCCCGCATGGGTGCGGTAGAAACCTTCGCTGGTGCGTTCGCCGGTAATAAAACTGCTGTCATAGGGATCGCAGTCGGAGGTGATCAGATCTGCCGCATCCGCATCGGTACGCGCAATCACCAGCGTCGGGACGCCCATCACATCAGCGGCCAGACGCGCAGCAA [...]
+NODE	2688	5	297	297	0	0
+CCAGA
+CCGGT
+NODE	2689	107	439	439	0	0
+TTCTTCTTGCTATCAGGGTTTGTACAGTTTCGGGTGGCGGCGACATCAGTCAAAACCCTGATAGCAAGAAGAAATTTAGGATTGTACCTACAGGAACAATCCTAAAT
+GGTTTTGACTGATGTCGCCGCCACCCGAAACTGTACAAACCCTGATAGCAAGAAGAAATTTAGGATTGTTCCTGTAGGTACAATCCTAAATTTCTTCTTGCTATCAG
+NODE	2690	3	108	108	0	0
+GCG
+GGT
+NODE	2691	1246	71464	70670	0	0
+TTACCGCAGGCGTTACCGCGCGCGACAACTGGAATTATATTCCCATCCCTGTGCTGTTGCCTTTAGCGTCGATAGGCTATGGTCCCGCTACCTTTCAGATGACCTACATTCCGGGTTCGTATAACAACGGAAACGTCTATTTCGCCTGGATGCGTTTCCAGTTTTGACGGGGAAGGGCATTCTTCAGTTGTGAATTAAAAAGCCTTAAAAAACAATAAGTAGATAGAGTTAGCTAAAAATTAACGCGATATTTATCACTTTTTCGCAAAGTTCGACTGGACAAAATGCATCACAATTGTTGTACTGGTATCCGACACAGCATTTGTGTCTATTTTTCATGTAAAGGTAATTTTGATGTCTAAGATTAAAGGTAACGTTAAGTGGTTTAATGAATCCAAAGGATTCGGTTTCATTACTCCGGAAGATGGCAGCAAAGACGTGTTCGTACACTTCTCTGCAATCCAGACCAATGGTTTTAAAACTCTGGCTGAA [...]
+GATACGCCGCGGTCCGCCGCCTGAGCCATTAACGAAACGCAAACTTGCGCATTCTTTTCCCATACAGAACTCACCACAAACTGCCCGGCTGCAACGAACATATCCCCTCCCACACCTCTGTCAGGACTCGCCAATTATGCGTGTTCGGCGTTACACTCCTCTTGTATAGCAATTAAATAAAGGATTCGGCAGTGTTACAGCTTCTTTTAGCAGTTTTTATCGGCGGTGGAACGGGGAGCGTAGCCCGGTGGATGCTAAGTATGCGTTTTAATCCGCTTCATCAGGCGATTCCCATCGGTACGCTAACAGCAAATTTGCTTGGCGCGTTTATTATCGGCATGGGGTTCGCCTGGTTTAACCGCATGACACATATCGATCCGATGTGGAAAGTGCTCATTACGACCGGCTTTTGCGGCGGCCTGACGACCTTTTCTACTTTTTCTGCTGAAGTGGTATTCTTGCTGCAAGAGGGGCGCTTTGGCTGGGCGCTGC [...]
+NODE	2692	51	71	71	0	0
+GATGCGCCGCCGCCCTGCCGCAAATAAACCCGGCATCAAACGTCAAATATG
+CCCCGTTATTGTCCGCCGGGAAAGCCTGCGAGGAACAAGGCGGTAGCGTAT
+NODE	2693	27	1078	935	0	0
+TTCCCCGCTTTATCTTCGACTGACACA
+AGGTCACTGTCGATACCCAAATCGGCA
+NODE	2694	220	11715	11590	0	0
+GTGCGCAAAGTGGGGCAAAACCTCAAGTACGATCGCGGCGTCTTGCAAAATTACGGTATTGAGCTGCGCGGTATCGCCTTCGATACCATGCTTGAGTCTTACATTCTGAACAGCGTCGCCGGACGCCATGATATGGACAGCTTGTCCGATCGTTGGCTGAAGCACAAAACTATCACCTTTGAAGACATTGCCGGTAAAGGTAAAAACCAGCTCACCTTTA
+GTTTTGTGCTTCAGCCAACGATCGGACAAGCTGTCCATATCATGGCGTCCGGCGACGCTGTTCAGAATGTAAGACTCAAGCATGGTATCGAAGGCGATACCGCGCAGCTCAATACCGTAATTTTGCAAGACGCCGCGATCGTACTTGAGGTTTTGCCCCACTTTGCGCACTTTTTCATCTTCCAGCAGCGGCTTCAGCAGTTCCAGAGCACGCTGGCGGG
+NODE	2695	4	217	217	0	0
+TAAC
+GAAA
+NODE	2696	16	846	820	0	0
+ACCCGCTACACAGGCA
+TTTTACTCATCTCACG
+NODE	2697	51	2614	2002	0	0
+ACCTGTTCTATACCCCCGGCGAAATCCTCTACGGCAAGCGCGAGACGCAGC
+TCGATATTCGCGCGCAGCGCGTACAGGACCAGGGCGGTGGTCAGCCCCAGG
+NODE	2698	47	2130	1954	0	0
+TCCCCTGCCACAAGCAGTCTGAACAATCTTTGCGATTGGTCACTGAT
+AAAGGATGGCCCGTACCGAAATTTGGTTACGTTTAATGTACGTCGGC
+NODE	2699	139	6466	6466	0	0
+TAACGACGCCGTGCTGGAACTGAACACCGGCGGCACGTTCGATAACGTCATCAGCGGCAGCGGCAAAGTGGAAAAATCCGGCGACGACGCGCTCACGCTTTCCGGCAGCAATACTTATACCGGCGGCACCCTTATCAGC
+CGTCGTCGCCGGATTTTTCCACTTTGCCGCTGCCGCTGATGACGTTATCGAACGTGCCGCCGGTGTTCAGTTCCAGCACGGCGTCGTTAGTGACGTCGCCGCTGCCCAGCGCCTCAACGTTGCTGGCGACCAGCGTGCC
+NODE	2700	18	934	888	0	0
+ACCGCCCAGCACCGCCGC
+TCTGATTTTGGGCGTCGC
+NODE	2701	9	396	386	0	0
+GACCCCGCC
+ATCGCCGCT
+NODE	2702	21	682	659	0	0
+CGATGATAGCGGCGATGACGA
+GTCGGGCGGGGTTACATCGTC
+NODE	2703	113	5933	5933	0	0
+AGGCTATACCTTCACGCTGATGAATCACCCTACGGCAGAACTCAACCAGGAATATCTGTTGGCGCAGACCTTGCTGTTTGTGCAGGACAACGCGCAGCACAGCGGGCAGGACC
+GCCAACAGATATTCCTGGTTGAGTTCTGCCGTAGGGTGATTCATCAGCGTGAAGGTATAGCCTGTCATGAGTGTGCGGATATTCCCTCCCCCCAGCACCCGACTGCCGGGGCT
+NODE	2704	46	71	71	0	0
+GGCGCTTTGGCATGTTCATCGGATGCAGTCAGTATCCGCAATGTGA
+CCGCAGCCCCAGCGACCGAACCGCCAGGTGAGCGAGTGGGCGAGGA
+NODE	2705	8	704	704	0	0
+TCCGGCGA
+ACCGCCGG
+NODE	2706	79	3511	3511	0	0
+TAAGACGCTCACACTCTCCGGCAGCAATACTTACACCGGCGGCACCACCATCAGCGGCGGCACGCTGGTCGCCACCAAC
+TATTGCTGCCGGAGAGTGTGAGCGTCTTATCGCCGGATTTCACCACGCTGCCCGTACCGCCAATGTTGTTGGCGAAGTC
+NODE	2707	91	3746	3671	0	0
+TGCTCAGCTCCAGCGTGGCGTTGTCGGTGACGTTGCCGGTCCCCAGCGCCTCAACGTTGGTGGCGACCAGCGTGCCGCCGCTGATGGTGGT
+GACCGGCAACGTCACCGACAACGCCACGCTGGAGCTGAGCACCGGCGGTGACTTCGCCAACAACATTGGCGGTACGGGCAGCGTGGTGAAA
+NODE	2708	5	225	225	0	0
+GTAAG
+GTTGA
+NODE	2709	51	2847	423	0	0
+TTAAGGGTTAAGCTATTGCTGTCGCCAATATAACTGGCGCGCAGGCCGTTC
+ACGGCCCGCTGCCGACGGTAAAATTTATCGTCGAAGACCTTTGCGCCACGG
+NODE	2710	51	2513	2513	0	0
+TCACTGAGCAAGGCGTGGGAGCGCTGACCGCCGCCACGCCGCTGGAAGAGC
+ACTTCTGTCGAGGAACCAAACCAGTTCCATGGATTTGCGGCAGACCAGTTG
+NODE	2711	48	2609	2534	0	0
+ATTACAATCTCTATTCCAGTAATACGGTGCGCACCATCCAGTCGGCAA
+TGTATATCGGCACTAAAGGCTTTACCCAGCGCTCTGGCATCTTGCGCA
+NODE	2712	1718	93222	90989	0	0
+GATTTTCAGCTACCTCTTTTTCACCCGGCATCAACTTGCCTAACGCTCGTAACTCACGACCGCCCAGTTTTTTGAGCTGCGCTTCCGTCATCGGTAATCCCGCCGGTACCTGCGGACCGCGGCTTTGCTCACGCATAAAGCGTTTCACAATACGGTCTTCCAGCGAGTGGAAACTGATGATTGAAAGCCGCCCGCCTGGGGCCAGTACGCTGAGCGAGCTTTTTAGCGCCTGCTCTATCTCCTCCAGTTCACTGTTTACCCAGATGCGCACCGCCTGGAAGGTACGGGTCGCGGGATGTTTGAATTTGTCTTTTACCGGGGTCGCCGCCGCAACCACCTCCGCCAGCTCTTTGGTGCGGGTCATCGGCTGTTCGCGATTGCGCTCAACAATGGCGCGAGCAATACGTTTGGCAAAACGCTCCTCGCCGAATGTTTTCAGCACCCAGGCGATATCCGCCTCCTCCGCCGTTTGTAACCACTCGGCGGCAGACT [...]
+AACAGGCACTGTTAACACGGTGCAATATGTCCTAAAATGCCGCTCGCGTCGCAAACTGACACTTTATATTTTTCTCGGATTATATTGAGTCCGTTTTAAACGGCGGTGGGTCTTTGGTTTTTTTCTTACAAATATTCATAACGTTAATTTGACTTGCACGCTGGGTGGAAATTAATCAACGCAGATATTCGCCGTAAACATTGGCTTTTTTACTTAGGTAAGCGTTGTGACTTGCTTGACAAGCTTTTCCTCCGCTCCGTAAACTCCTTCGAGTGGGAATTTGTGGGATAAAGTGGTAAGAAGGGGTGAGACTGGCATGTTCCGGGGGGCAACGTTAGTCAATCTCGACAGTAAAGGGCGCCTGACCGTGCCGACCCGTTATCGGGAGCAACTGATCGAGAGCGCTACCGGTCAAATGGTATGTACCATTGACATCCATCACCCATGCCTGCTGCTTTACCCCCTGCCTGAATGGGAAATTATTGAGCAAAA [...]
+NODE	2713	20	1061	828	0	0
+TGATGCAGAGTAAACAGATA
+ACCAGCCGGTGACTTTCCAT
+NODE	2714	51	1925	1803	0	0
+ACCACCGCCGGAACCGGTTCTGAAACCACCAACGTGACGGTGATTATCGAC
+TCGGCACCGCAATCAGCGGCAGACGCGGGCGTAATGTGCTGCGATCGGTCA
+NODE	2715	51	66	66	0	0
+GATCCAGGCGGCGACGCGCCACCCGCTCACCCAAGAGATCGCTTTCACAAA
+CCCCGCCGCACGATCAACCCGGATACGTTGATTCGTAACCTGGCGGAGCTC
+NODE	2716	51	2760	2712	0	0
+TGATGTACAGCTTGAAGATCTGCTGAAAGATTACGATGCGGTATTCCTTGG
+ACGACCCACTTCGGTATTAAGTTTGAACTCAATACCCATGCCGGTGAAGAT
+NODE	2717	51	2244	2244	0	0
+ACCGCCAGCGCGCTGGCGACAAACTGATGATGTAAGACCTGATACATGGTT
+TAAAAGCGGCACGTCGTATTAATCCACAGATGAAAGTGGGCTGCATGCTGG
+NODE	2718	84	4669	3882	0	0
+ACGATAAAGACCATTGACCGCCTTTATCACCAGTCATGTATTGGCGCAGTCCGCTGGGGGAATCTGCCGGATAATGCCCGGGAG
+ACTGGTGATAAAGGCGGTCAATGGTCTTTATCGTCTCTTCATCCAGTACGGCATCTTTTACCAGCAGCCCCAGCCACTGTTCAA
+NODE	2719	9	1046	1046	0	0
+GGTTCCCGA
+AAATGTTGG
+NODE	2720	18	1083	1059	0	0
+CCCACTAAACTAGTTTGC
+AGGTGTGACACGCCTCGC
+NODE	2721	51	85	85	0	0
+TGCTGCGAGTGGTTGATATCCCGGGACCTTATAATCCCGTGGCTGAATATG
+AAATTACCCTGCCGTAGCCTGGGAGCATAGCTGGCATAGCCGATAAAGATA
+NODE	2722	9	421	404	0	0
+ACCCGCGCC
+TGCTGATGT
+NODE	2723	44	1932	1932	0	0
+GCACTCGGCCAAAGGGCTGGAGTTTCCGCAGGTGTTTATCGTCG
+ATCAGCTGTACCGCATCCTGCCAGGTATCCGCCTGCCCCTCGCC
+NODE	2724	18	819	819	0	0
+TATGTTACTTTACCATGC
+TGCCCCAAGTCTGGATAG
+NODE	2725	51	4023	4023	0	0
+ACCATTGCCGCGCCAATAAAAAAATAGGCGCAGAAAGCCAGTAATGCGTCC
+TCATTGTATTTCTTTTTATTTACTCAAAGATAACGCCGCATAATGAATGGC
+NODE	2726	24	1914	1882	0	0
+TCCGTTATAACGCAAAGTTTCAAC
+GATAATTGGTATAACCAATGTAAA
+NODE	2727	46	2003	2003	0	0
+TGAAACCTGCCTGCGCCACGATGATTACCTGTCTAAAAAATTCACG
+AACCCGGCACTGGCGGGATACGCCGCAAGGGACGGAGGTCTCTTTC
+NODE	2728	20	1191	1191	0	0
+GCCGCCTTTGCATTGCAGGG
+GCCCTGCGCGGAGTGGGCCG
+NODE	2729	15	1003	944	0	0
+ACCCTGCTCCCCGCC
+TATCCCACGGCTGAA
+NODE	2730	1485	83201	82632	0	0
+ATAGTTATTTTTAACCGGCTAACATATTTAAAATTTTCTACCCCACGCTTACGCTCACAGAAACGGCTGATATAGCATCCAGTATTAATATTATTTTCATAATTACTCCAACCAGCATTTTTGATGCAAACAGGCTGGACATGGACTGTGTGCAGAAATCAAAACATACTCACTACGCTCTCCCCTTGAGTCGCCCCAACGGGTGCTCAAAACGCCGCGAGTGTTGTTCAGGCACATCCAGGATAAGTTATAAGTGAATGACTCTCATTCCTGACCACATTTTCATTTATGATAAGAATATCGTCAGAATCTCTTTATCGCATAAAAATACCTCTGCTATTGACTTAATATTTAATTTAACAATGTCGCGGTTTATTCGTTCTGCTCAGATGTATTTCATTGACATTAATAAAACCATAAATAAATTCAATTAAAATAATTTGTTAATAATGAAAAGCTTTAGACGCTATGACTTTTAATAAGGAATTTCCT [...]
+TCCGCGTGTTTGTAAAAATAGAATGGTCGCCGCGACGCGCGAGCGCACGTTTAGTTTGCGAAGTAGATTACGAATGTGCACCTTAACCGTCTGCTCAGAAATATTCAGTACTGACGCAATCTGTTTGTTAGAAAGCCCCTGCGCCAGCTCATGCAAGACATCTAACTCTCGTTCGGTCAGGATACTAAAGGGATCTTCCTGCGCGCCAAACCGTTCGCGCTCACGCAGATATTCATTGACCCGATCGCTAAAGACTTTACCGCCGTTAGCGCCTTTGCGAATGGCCTCCAGCAGCACTTCCGGATCGCTATCTTTGAGCAGATAACCGTCGGCGCCGGCGTCGATCAGCGCGTAGATGTCGCTGGCGGAATCCGAGACGGTAAGAATAATAATTTGCGCCGTCACACCATCCCGGCGTAGCGCGTTCAGGGTATCTAACCCGCTCAGACCTTTCATATTCAGATCCAGCAGGATCAGATCGGGCTCAATGCG [...]
+NODE	2731	51	108	108	0	0
+GCTTTCTTCTGGCCGCGGCCTGCGCGCTGCTGGGCGCGGCGGGTGTCCATC
+CCCTGCTGATAGCCGATAAACGGCGTCAGCAGGCCCGCTATTGGTCCGGTA
+NODE	2732	51	3217	3217	0	0
+TATCACAATCCTGTCGCGTTAAAACTGGGTCTTAACTATACGCCAGTACCT
+ACCCCGTTCCGGAGTCAAACAGATCCACGCTATCGCCAAAGTACTGCTCCA
+NODE	2733	1	205	205	0	0
+A
+C
+NODE	2734	1	6940	6940	0	0
+A
+T
+NODE	2735	1	250	115	0	0
+C
+T
+NODE	2736	1	203	117	0	0
+A
+T
+NODE	2737	1	173	107	0	0
+A
+T
+NODE	2738	1	157	94	0	0
+A
+T
+NODE	2739	2	266	161	0	0
+AA
+TT
+NODE	2740	51	2735	2735	0	0
+ACCCTTTTCTGCCATGTCGATAAGCGTCTCTTTTATATTTTTTAGGTCGAC
+TAATTTATGTGACTGGAAGGAACAGGAAAGAAAAGCCGCAATCTCCTCCAG
+NODE	2741	52	1932	1932	0	0
+CGGACCCGCAGAACTTCCTGCTGATGCACGCGATGGGGCCGAACGTGGCGGG
+CGATTCCAGCCCCACTTTGTTCGATACGCGTGCCGCCATCGGCACTGCCGAC
+NODE	2742	2	251	251	0	0
+AA
+TT
+NODE	2743	2	181	181	0	0
+AA
+TT
+NODE	2744	11	363	363	0	0
+AAAAAAAAAAA
+TTTTTTTTTTT
+NODE	2745	1	3	3	0	0
+C
+C
+NODE	2746	1	103	62	0	0
+A
+T
+NODE	2747	1	88	51	0	0
+A
+T
+NODE	2748	1	85	85	0	0
+A
+T
+NODE	2749	0	125	125	0	0
+
+
+NODE	2750	0	98	98	0	0
+
+
+NODE	2751	51	2670	2670	0	0
+GTGCTGCGCGATCAGACGATAGCTCAACGCGCCTTCCGGACTGTACACGAC
+CGTTGAATATTTTTCCGATCAGGCGGTCTCATGGTTTACGCAACCGGTATT
+NODE	2752	2	68	32	0	0
+AA
+TT
+NODE	2753	2	43	43	0	0
+AA
+AA
+NODE	2754	1	49	49	0	0
+A
+A
+NODE	2755	1	125	125	0	0
+A
+A
+NODE	2756	1	172	172	0	0
+T
+T
+NODE	2757	1	167	167	0	0
+A
+T
+NODE	2758	52	2355	2355	0	0
+CGCCAGCCAGCGGGAAAAACGGGACGCTATCGCACGTCAGATGGGCATTGAG
+CGTTGAGCGTTAACCCAGGGTTTAGCCCCAGACCGATATTTTGCTGCACATT
+NODE	2759	2648	143655	142670	0	0
+TTCGAAGAAAGTATGGTGACGTGCAGTGTATCCGACGTTTTCCAGATCGTTGTGTTTCCCCCCCGCGCGTACGCAACGCTGGGAAGTGGTTGCACGGGAATAATTACGTTTATCGAGCCCAAGGAAAACATCCTTGAACTGGTTCATCCCGGCATTGGTAAACAACAGAGTGGGGTCATTGTTAGGCACCAGGGAACTGCTGGCAACTACCTGATGCCCTTTACTATGGAAAAAGTCGAGAAACGCCTGACGGATCTCAGCGGTGCTCTTGCTCATAATTATCCTGAAATCAAGCTACACTTCATCCTTCAGGCCGCCTCTGCGTTGGCTGCGAGTTTCCCGGTCACGCGTTCCCGAGGCTCACTTGCCGCTTTGATGCGGCTTGAATGATTTTGTGTATTTAAGGAATATTCGTCGCAGACGCTGTTCGCCGTTAAGCAACCCGCGTCCAGACGGAAAAAGTGGGAATAAGATAAGTTTTCTTTACCGGGA [...]
+GAAGCCAAAGCGCAGATGATTGGCGTGCGTGAAGAGACTCTGGCGCAGCATGGCGCGGTCAGCGAACCCGTAGTGGTCGAAATGGCGATCGGGGCGCTGAAGGCCGCTCGCGCCGATTTTGCTGTCGCTATTAGCGGAATTGCCGGGCCGGATGGCGGCAGTGAAGAAAAGCCGGTTGGTACGGTGTGGTTTGCTTTCGCCAGCGTCAGCGGAGAAGGGATTACGCGTCGGGAATGCTTCAGCGGCGACCGTGAATCGGTGCGTCGACAGGCGACGACGTACGCGCTACAAACCCTGTGGCAACAATTTCTACAAAACACTTGATACTGTATGAGCATACAGTATAATTGCTTCAACAGTACGAATTCACTATCCGGTTCAATACCAAGTTGCATGACAGGAGTAATAATGGCTATCGACGAAAACAAACAGAAAGCGTTGGCGGCAGCACTGGGCCAAATTGAAAAGCAATTTGGTAAAGGCTCCATCATG [...]
+NODE	2760	48	264	246	0	0
+AAGTTGATGACTTGCGTTTACTAGGAATTCCTCGTTGAAGATCATTGT
+CTTGTTACGACTTTTACTTCCTCTAAATGATCAAGTTTGATCTACTTC
+NODE	2761	81	756	756	0	0
+CACAAGCCGCAAGTTGCCTCGCGACCCGCAGTCCGTAGAGCTCACTAAGCCATTCAATCGGTAGTAGCGACGGGCGGTGTG
+CTGCGGGTCGCGAGGCAACTTGCGGCTTGTGGGAAGTAGATCAAACTTGATCATTTAGAGGAAGTAAAAGTCGTAACAAGG
+NODE	2762	5	264	264	0	0
+ACCCT
+AAAAC
+NODE	2763	1	62	62	0	0
+A
+G
+NODE	2764	9	603	603	0	0
+GACTAATTT
+TCCCGCCAG
+NODE	2765	51	174	174	0	0
+GATGAACAATCGCCAGTGACATAATCCCTCCTGTTACGTGGATTATGCGGA
+CCCCGCGCCGCACTTGGCGTCAATGCGCCGCCTATCACTATAGAGGTGCAT
+NODE	2766	51	2405	828	0	0
+GTTTATAAATACCTGCCGTTTTCATCTCTTCATAATCCGGCATATCGGGAT
+CTTAAATGTCCGGATGAGCATGTTGTCGCATATAAGGATTTTCGCAAAGAC
+NODE	2767	1	57	57	0	0
+A
+T
+NODE	2768	1	1	1	0	0
+C
+A
+NODE	2769	223	14576	14257	0	0
+AAAAATTTTAGCGCTAAAGCGATCAGCGCCAAAGAGAGGCCAAAATACACCGGCGCGAGCAGCCAGCGAGACGCATACATTACATTTTCAAGAAAGCGTTCCATAGGGACCTGTCAGGTAACTAAAATCAGCAACAGTATATCTCAACCATGCAACATCAGATCAACATGCAGTTAAGAGCCTATCCCACCAGGCGTTATTGGCGCAGCCAGTTTGGACACGG
+CTGCATGTTGATCTGATGTTGCATGGTTGAGATATACTGTTGCTGATTTTAGTTACCTGACAGGTCCCTATGGAACGCTTTCTTGAAAATGTAATGTATGCGTCTCGCTGGCTGCTCGCGCCGGTGTATTTTGGCCTCTCTTTGGCGCTGATCGCTTTAGCGCTAAAATTTTTCCAAGAAATTCTACACGTTCTGCCGAACGTTTTTGCCCTGGCGGAAGCCG
+NODE	2770	3	114	114	0	0
+TGT
+ACC
+NODE	2771	51	1803	520	0	0
+TTGACGTCAGCGCCAATCTGACCGGCAATCCAGCCCGCCAGCGCCTGAATA
+ACCACGCCACTCGTGCGGGCCTGCTCTCCAAGTGCGACCTGATGACCAACA
+NODE	2772	2	84	84	0	0
+AC
+AC
+NODE	2773	44	44	44	0	0
+GCGCGCCGTAATCCGGTTCGCTGATTTGCGAGCTGGCCTGCATC
+CGGATAAAACTGATACTAAAACGCGGCCTGTTATCGCGTTTTTC
+NODE	2774	6	174	174	0	0
+TGTGTA
+GATCAA
+NODE	2775	1	30	30	0	0
+C
+C
+NODE	2776	4	11	11	0	0
+TAAA
+AAAA
+NODE	2777	51	72	72	0	0
+GATCTGGTTAAACAGCTCAGCAAATTGCAATTCCCGGTATTGTTGGATAAT
+CCTCATGGCCATGGTCAAATTCATGGTTACCGACAGAGACGGCGTCGTAAG
+NODE	2778	123	4321	4317	0	0
+ATCATCAAAACGCAGCATGTTGCCGTTCGTTGGCCCGCCATATAGTGAGTGACTGAATATCCCGCTCTGTGTTGCCATTCCCGGCAGTCCCCACGGCGGCATGGTGTCCTGGTTGTAGGTACG
+AACACAGAGCGGGATATTCAGTCACTCACTATATGGCGGGCCAACGAACGGCAACATGCTGCGTTTTGATGATAAAACGGGCGCGGAGGAAGTGAAGTTCCACGCGGAAAAAGATCTCAACAC
+NODE	2779	1347	74592	73831	0	0
+CTGCGCGCACCGCCAGCCATGACAACGGTCGAACTTCAGCGCCGACACCCACGTACTGTGAATTGTCTTCGCTCTTAAAGCCTTTCGTTTCCGTCAGATCGCCATCGGCGCTTACGGTCAGCAAATCGTTATGCCATGCGATGCCCGCGGTAACCAGGGGGCGGATTTGGTATGTATCTTTGTAGTTGGTGGTTTCTCCCGTCATACCATTAGTGATGTAAATATCTTTCGTATCGATATCGCGAGATACCAGATTTTGCCCGCTCAGCCCCAGCGTCCAGTTTTCACCGATATCGGCAGCAAGCCCCGCATCAATGTTAAAACCCGTATCGTCATTGCGATAACGGCTGCTATTCCAGTCGCTACTGTCGTAGTTATAAATTGAGGTGGTGTAGTTATAGAGCCAGGTTTTTTGCAGTTTTGGCGTAACGCCAATGGAAACAGGCACCTCGCCCACCACAAACTGCTTCGCCAGCGCAATACCGTAGTCAG [...]
+AGTATTCTCATCTATACCTAATGAGGGTCGATATTATAACAACAGGATTTAACATCACTATTTCACAGCAATAGTTCGCCTCTGTCCGGTAAAGCGTGGCGGAGGGATTACTTCACCTGATAATAAGATGGGCTAACTGTGAACAAAAACGTCAAACTTTCACTGATTGCTATCGCGGTCTCGCTTTTTATGGCAAAGCAGGCGAGCGCCGCCAATACCTGGACGGAAGCGCGTAATGACGCAATGGGCGGGACGGGCGTCGCGTCCGCGAATTATGGCAGCGGAGTACTGTTAAATCCGGCGTTACTGGCAAAAGCCAAACCGGAAGACAATATCACTGTTGTCCTTCCTGCGGTCGGCGTCCAGATTACGGATAAAGACAATCTCCAGGATGAAATTGACGATATCAGCGATAAAGTGGATTACTACGATGAGGTCGTCGATAACCTTACGCTGGGGCAAATTCTGCTCAATCCGCGAGGCGTGCTGAAT [...]
+NODE	2780	170	405	405	0	0
+ACTTAATCAGCATGGGTTGATGACCCATGCTGATTAAGTCCCTGCCTTATCCTTCCTCTAAGTGCTATGGCTTACACAACTTCTTGAGACTCTAATGAGTCCCAATCCGAAGAATTCGCCGAAACACTCGAATCGGTAGGAGCGACAGGCGGTGAGTACAAAAGGCAGGG
+GGCGAATTCTTCGGATTGGGACTCATTAGAGTCTCAAGAAGTTGTGTAAGCCATAGCACTTAGAGGAAGGATAAGGCAGGGACTTAATCAGCATGGGTCATCAACCCATGCTGATTAAGTCCCTGCCTTTTGTACTCACCGCCTGTCGCTCCTACCGATTCGAGTGTTTC
+NODE	2781	162	10873	10858	0	0
+AGCCATTCACATTTAGAGATCATCCGACATAATCAATCTGCCAACGCAGGAGATCGCTGTGCGTAAAGCCCGTTTTACTGCGCACCAGATCATCGCTGTGATTAGAACAGTCGAATCCGGACGGACTGTTAAAGATGTCTACCGGGAGGCCGGTATTTCTGA
+GACTGTTCTAATCACAGCGATGATCTGGTGCGCAGTAAAACGGGCTTTACGCACAGCGATCTCCTGCGTTGGCAGATTGATTATGTCGGATGATCTCTAAATGTGAATGGCTCGATTATGCGGGATACTTACATACTCACGCGTTGAGAGACTTTCAGTTCG
+NODE	2782	51	1913	1913	0	0
+TATGGACCGTTCCGACCTGTTTAACGTTAACGCTGGCATCGTGAAAAACCT
+ACCCGGCTTACGCGCCACACCCGCAGAAATCAGTACTACGTCAGCGCCTTC
+NODE	2783	24	1994	1994	0	0
+CGCGCCGAGCAGCAGGGTGCGCGG
+GGTGCTGGGGGCGCTGACGCTGAA
+NODE	2784	21	687	687	0	0
+ACGCCAGCCGCCGAAGTGGTT
+GATGATCGAAATCTTTGGTTG
+NODE	2785	51	2682	1842	0	0
+ACCCGACATTTTTTACTTAAAAGCGCGATCTTACGCTCAATGAATGACGCA
+TGCTGACATCCACGTTATCCAGTACTTCGTCCACCAGATAATCAGAAAGGT
+NODE	2786	750	47775	45646	0	0
+ATTTAGGCTGGCCACCATTGGCCGCAATTACCTGGGGCTCACCAATCGCACCCTTTGTCATTCCGCTGACGATGCTGATTAATGTCGCCATGCTGGCCCTGAATAAGACACGTACTGTTGATGTCGACATGTGGAACTACTGGCACTTTGCCCTGGCTGGAACGCTGGTTTACTACAGCACAGGGAGTTTTGTTTTGGGTCTGTCCGCAGCCGCTATTGCCGCGATCGTGGTTCTCAAACTGGCGGACTGGTCTGCGCCATTAGTGGCAAAGTACTTCGGTCTGGAAGGTATTTCACTTCCGACCCTGTCATCTGTCGTCTTCTTTCCGATTGGATTGCTGTTCGATAAAATTATCGACAAGATCCCAGGCGTTAACCGTATTCATATTGATCCGGAAAACGTTCAGAAAAAAATGGGAATCTTCGGCGAGCCTATGATGGTGGGTACTATTCTGGGGGTCTTGTTGGGCATCATTGCCGGATATGACTTTA [...]
+ATCAGTGCTGTAGATATAATGGCTGGGTTACCTACTGCTACCGCGATATCCAGTCCGATAAAGAGATCATCACGGCCAGGATATTTGGCATTCAAATATTTCTTAATGGCTTCAGACAGAGGTAATAAACCTTCCATCAAAATTCGTACCATACGCGGAAGAATGAACATGACACCGCCAATGCTGATCCCCAGCAACAGGATATGTTTAAAGTCATATCCGGCAATGATGCCCAACAAGACCCCCAGAATAGTACCCACCATCATAGGCTCGCCGAAGATTCCCATTTTTTTCTGAACGTTTTCCGGATCAATATGAATACGGTTAACGCCTGGGATCTTGTCGATAATTTTATCGAACAGCAATCCAATCGGAAAGAAGACGACAGATGACAGGGTCGGAAGTGAAATACCTTCCAGACCGAAGTACTTTGCCACTAATGGCGCAGACCAGTCCGCCAGTTTGAGAACCACGATCGCGGCAATAGCGGCT [...]
+NODE	2787	21	978	978	0	0
+CATGATGTCGGCGGCGTAAAG
+CAGTCGAAGATAAAGCGGGGA
+NODE	2788	20	1358	1358	0	0
+ACCCTGCAATGCAAAGGCGG
+TCGCAGGCTTTCCCGGCGGA
+NODE	2789	31	1739	1739	0	0
+CAAAGCCGATGACGCCGATGTTGCGTACATC
+TAAAGCAACGAATACGCTACCGCCTTGTTCC
+NODE	2790	1655	98776	98320	0	0
+ATCAGCGTCGCTAACGCCCTGCCCTTAACGCCGCGCGCCTGAAGCGTCAGATAAGGATCGACGGCCCGCTGAGGCAGCTTCTGAGAACCGTCCATCGCAATCTGTCCGGTCTTATGTTTAATGTTCGGGTTGCTGAATCGCTCAATGAGCAACTGCGCATATTGATGTACATCTACCGCCAAATTCGGGCGCAGCGATTTTGCCTGCTCTTCCGTCATTAAATGATGTACGGCGGTTTTAAAAGCGTCGTCTTCCATGCACTGATAGATAAACTCATATCCAGCCAGGCTGCCGTTATAGGCGAGAAACGAATGGCTGCCATTCAGCATACGAAGTTTCATTTCTTCATAGGGAAGCACGTCCGAGACGAACATCGCCCCTGCTTTATCCCAGTCAGGACGACCGGCAACGAAATTATCTTCGATAACCCACTGACGGAAATCCTCGCATACGATGCCGCAGGGATCGGCAAAACCGATCTGGTCTTTAATC [...]
+TAAATTGAGCTCATTAATTCACTAGACAAATTATCAGGTTTGGTTTGCTGTATTTCGGGAGGTTGTTGAACCAATCATGCGTGACATATACGCTTGCAGCGGGGTGTTATTCAATAAGATATTGTTTTTCATGGGGTTTAATGATTGCGGGTTGTATGGGTGGTATGCCAATTCGTGGCCGATTTTTCTAATCAAAATCACGCTTTTGTGAATCATAAAATTTATCCTGAGAAGTGCTTTTTGTAACTAATTGATAAATAAATTATTTTTATTCATTGGCTATTAGTCAGCATACCGGGGGAAAGAATCTGGTGCCATGAGTGTGATCATATTCACGGATTTTGGTATGGTGTTTAAGCAGAATTGGTAAACAAAACAGGAGTGGGAAAAATTCATGGACACCATAGCTCGCCAGTTAGACGCCGCAAGGCACCAATTCAAAACGACTTATTCACGTCAGGGAATGGAAGCCAACATCGTACATATTGGATT [...]
+NODE	2791	13	1023	1023	0	0
+CGGGTCGCTGCTA
+TTGATGCTGATAA
+NODE	2792	2	87	87	0	0
+TG
+TT
+NODE	2793	47	351	320	0	0
+GAATGTCTGGGAAACTGCCTGATGGAGGGGGATAACTACTGGAAACG
+ACCCGTCCGCCACTCGTCAGCAAAGCAGCAAGCTGCTTCCTGTTACC
+NODE	2794	46	1350	1350	0	0
+ACCCTGCCGCAGGCGGCGGCCATCGGCATTATCGGCGGCGCGGACG
+GCAATCAGGCCGAAGTAGTTCAGCGTCAGCGCCCCCAGCACGGTGG
+NODE	2795	81	7240	4993	0	0
+CACCGTGCGCAGCTGCACCATGCGGATTTTGCGCTCCGTCTCCGTGGTCAGCGCCTTCATAATCGGCGGCTGGATTAACGG
+CAAAATCCGCATGGTGCAGCTGCGCACGGTGAGTAAGCGGGAAAAAATCCTCTTTCCGGTGGTGCTGTTACTGCTGGTGGC
+NODE	2796	167	12043	12043	0	0
+ATTCGCAAAGTCAGTCACATACTTCTGTATGCGCCTTCCTTTCCTTCGCTTGCCGCCTTGCCGCTGCGCAAATTATTGCGTACTCAACTCTGAATCAGTACTGAAAATCATCTCTCAATCCGCCAAAACATCTTCGGCGTTGTAAGGTTAAGCCTCACGGTTCATTA
+TGAGAGATGATTTTCAGTACTGATTCAGAGTTGAGTACGCAATAATTTGCGCAGCGGCAAGGCGGCAAGCGAAGGAAAGGAAGGCGCATACAGAAGTATGTGACTGACTTTGCGAATGCAGGCAACGCCGCTGATGCGATAAAGAATTGCGTACTGAGCATAAAAGA
+NODE	2797	38	1736	1736	0	0
+TGGACCAACAATCTCGGCTACAGGGCCAGCCACAGCGC
+ATTGCAGGAAAAATTAAAAATAGTGCCGGGGATATTTA
+NODE	2798	13	749	749	0	0
+CAATAGCAGCGCC
+AGCGATTGGGAAG
+NODE	2799	285	11545	11463	0	0
+TAATCTGGCCAGCCGCAGTGCCCAGGCGGCGAAAGAAATAAAAGCGTTGATTGAAGATTCCGTCTCGCGTGTCGATACCGGTTCAGTGCTGGTGGAAAGCGCCGGGGAAACCATGACTGACATCGTCAATGCCGTTACGCGCGTCACGGATATCATGGGCGAAATCGCCTCCGCCTCGGATGAGCAAAGCCGGGGTATCGATCAGGTCGCTTTGGCCGTTTCCGAAATGGATCGCGTAACGCAACAGAACGCCTCGCTGGTTCAGGAATCCGCCGCCGCCGCCGC
+GCGATCCATTTCGGAAACGGCCAAAGCGACCTGATCGATACCCCGGCTTTGCTCATCCGAGGCGGAGGCGATTTCGCCCATGATATCCGTGACGCGCGTAACGGCATTGACGATGTCAGTCATGGTTTCCCCGGCGCTTTCCACCAGCACTGAACCGGTATCGACACGCGAGACGGAATCTTCAATCAACGCTTTTATTTCTTTCGCCGCCTGGGCACTGCGGCTGGCCAGATTACGCACCTCGCCTGCCACGACCGCAAAACCGCGCCCCTGCTCTCCCGCGCG
+NODE	2800	331	15658	15605	0	0
+GTACCGGCGCTATTCTGGCGGCGACGCAGTTGGACGATGGTCAGTTACTGGTTCAGGCCGTCATGAATAACGATTTAGAAGCCGAAAGCGTCTTCCGTGTTCGCGACGATGCCAACACCCTGCATATCGTCCCGCTGCCTTACTCGCTGGAAGAGTGATATCACGTTAAAAGCCGGATAGCCTGATAGCGCAACGCCATCAGGCTCGCACGTGCTGCTCTCGTAGGCCGGATAAGGTACGACAGCGCCGCCATCCGGCACGGGCATCCGGGAATTACGCCTGTCCCACATACAAATAGATGGCCAGGAAGTGGCACACGCTGCCGCCCAGC
+AGGCGTAATTCCCGGATGCCCGTGCCGGATGGCGGCGCTGTCGTACCTTATCCGGCCTACGAGAGCAGCACGTGCGAGCCTGATGGCGTTGCGCTATCAGGCTATCCGGCTTTTAACGTGATATCACTCTTCCAGCGAGTAAGGCAGCGGGACGATATGCAGGGTGTTGGCATCGTCGCGAACACGGAAGACGCTTTCGGCTTCTAAATCGTTATTCATGACGGCCTGAACCAGTAACTGACCATCGTCCAACTGCGTCGCCGCCAGAATAGCGCCGGTACGACGCCAGTTCTCGCCCATCTGTAGCTCCAGATCTTCTCCTGCTTCCGGT
+NODE	2801	51	85	85	0	0
+GTGACGTCAGAGCCAATCTGACCGGCAATCCAGCCCGCCAGCGCCTGAATA
+CCCACGCCACTCGTGCGGGCCTGCTCTCCAAGTGCGACCTGATGACCAACA
+NODE	2802	10	563	563	0	0
+CGAACGCGCA
+TTGGCCAATG
+NODE	2803	41	2223	2223	0	0
+TCCTCCTGAGTTGCTGCGTTACGATCCCCAGGGACAGCGTC
+GCCAGACGCCCCAGTTCCAGTGATTCCGCCGTTCCCAGTTG
+NODE	2804	32	68	68	0	0
+GATAGACCCGAAACCCGGTGATCTAGCCATGG
+GGTTAAGACTCGGTTTCCCTACGGCTCCCCTA
+NODE	2805	5	1816	33	0	0
+GCAGG
+CGCCC
+NODE	2806	144	12554	9209	0	0
+ACCAGCTTCGCGCCCACCGACAGTCCGAGGAAGATGGTGACGATATTAATCAGCCCGTTCTGTACCGTGTCGCTCAGACGCTCCACCACGCCGCTTTCACGCATCAGATTGCCAAAGCAGAACATCCCCAGCAGCGGCGCGGCG
+GCGGCGTGGTGGAGCGTCTGAGCGACACGGTACAGAACGGGCTGATTAATATCGTCACCATCTTCCTCGGACTGTCGGTGGGCGCGAAGCTGGTGGCGGACAAGTTCCTGCAGCCGCAGACGCTGGGCATTCTGCTGCTGGGGG
+NODE	2807	24	124	124	0	0
+GAGTTTGACTGGGGCGGTCTCCTC
+GTAACGGGTCCACGTTAGAACATC
+NODE	2808	42	42	42	0	0
+CTGGCGGCAAGTAAAGCGGGCGGGCTGGCGGTAGATGATGCG
+TACACTGATCGGGAGAAGGGGTAAACGTGGTGTCTTTCATTC
+NODE	2809	72	3350	3171	0	0
+GCCGCCAACGGCGTCGGCCTGGTCATTAAAAACCCGCTGGATGGCCTGCCGGTCGCGCTGGGCGATTTCGAT
+CCAGGCCGACGCCGTTGGCGGCAATCAGCAACAAAAACAGGCCAATACCGATACCGGTTCCGTGGGCCACGC
+NODE	2810	51	2379	2235	0	0
+ACCTTCCCGGTGATTATGTCGCTTGTGGGGCTGGCTGTTATTCTCGGTCTG
+TATCGAAATCGCCCAGCGCGACCGGCAGGCCATCCAGCGGGTTTTTAATGA
+NODE	2811	36	880	880	0	0
+AGCAATCCTCCATGAGAAAAGCGACTAAAATTCTTC
+CCAAAAGGAAAATTTTATGGCACAAGTAATCAACAC
+NODE	2812	1	48	26	0	0
+G
+A
+NODE	2813	51	93	93	0	0
+CCATTACTCACCCGTCCGCCACTCGTCAGCAAAGCAGCAAGCTGCTTCCTG
+GCTGGGAAACTGCCTGATGGAGGGGGATAACTACTGGAAACGGTGGCTAAT
+NODE	2814	45	141	141	0	0
+GGTGAAATCATATCATTACCACGGTCAACTGCCAGGGTGTACTGC
+CCCAGCCAATGTCACCGTCCGTACTGAACTTGATCAAGCAAGTTA
+NODE	2815	8	436	406	0	0
+TTTATGTT
+CCCGTTCA
+NODE	2816	9	19	19	0	0
+GGTGGTTGC
+ATCCGCCAC
+NODE	2817	2	86	71	0	0
+AC
+TG
+NODE	2818	34	1248	1248	0	0
+TTTGGCGAATAAAAAGCCCTGTCGTTCATTGACG
+CTTTTGAACGCTGGTACAAACGTTATCAGACGAA
+NODE	2819	69	761	761	0	0
+CCCCGGTCTCAACCTGGGAATTGCATCTGTGACTGCATAGCTAGAGTACGGTAGAGGGGGATGGAATTC
+TCCCAGGTTGAGACCGGGGATTGCATCTGTGACTGCATAGCTAGAGTACGGTAGAGGGGGATGGAATTC
+NODE	2820	121	2774	2694	0	0
+CTTTGTTTTATCTGTAGTCTGCCGGTGAGCACTCTCCTGAGGAGGGCAAATCCGCCGGGAGCTGATTTGAACGTTGCGCAGCAACGGCCCGTAGGGTGGCGGGCAGGACGCCCGCCATAAA
+TTCAAATCAGCTCCCGGCGGATTTGCCCTCCTCAGGAGAGTGCTCACCGGCAGACTACAGATAAAACAAAGGGCCCTGTCTTCCGACAGGGCCCTTCGTTTTATTTGATGCCTGGCAGTTC
+NODE	2821	51	2596	2441	0	0
+GAAATCCAGAACCGCAAGCCTCTACTTTTCCCTCGTGATGGAAGGTCTTGC
+CACGCCTGTGAATGTCCTTTCGATGTTTTCAGTTATTACCCTCCTGCAGAA
+NODE	2822	85	3897	3897	0	0
+GCGCCGCGTCAGATTATCGAAAGCGCCGCTATTGAGTTATTGCTAAAAGAGGGCCATGTGGTGATTTGCAGCGGCGGTGGCGGGG
+TCAATAGCGGCGCTTTCGATAATCTGACGCGGCGCCGGGGAAGCGACGACACGGCGCAGATATTTTCCATCACGTTTCATATGCC
+NODE	2823	7	312	312	0	0
+GCATGGA
+CAGCGTC
+NODE	2824	341	14973	14918	0	0
+CTGGTGGACTTTATCCACTCTGAAAGCCGCCTGAAATTCCCGCAATACCGCGCGCCGGGTTCAGATAAGTGGCAACAGATCAGTTGGGAAGAAGCGTTTGACCGCATCGCTAAACTGATGAAGGAAGATCGCGACGCCAACTATCAGGCGCAGAACGCCGAAGGCGTTACCGTTAACCGCTGGCTCACCACCGGGATGCTGTGCGCTTCCGCATCCAGTAACGAGACGGGTTATTTAACGCAAAAATTCTCCCGCGCGCTGGGTATGCTCGCGGTCGACAACCAGGCGCGTGTCTGACACGGACCAACGGTAGCAAGTCTTGCTCCAACATTTGGTCGCGG
+ACGCGCCTGGTTGTCGACCGCGAGCATACCCAGCGCGCGGGAGAATTTTTGCGTTAAATAACCCGTCTCGTTACTGGATGCGGAAGCGCACAGCATCCCGGTGGTGAGCCAGCGGTTAACGGTAACGCCTTCGGCGTTCTGCGCCTGATAGTTGGCGTCGCGATCTTCCTTCATCAGTTTAGCGATGCGGTCAAACGCTTCTTCCCAACTGATCTGTTGCCACTTATCTGAACCCGGCGCGCGGTATTGCGGGAATTTCAGGCGGCTTTCAGAGTGGATAAAGTCCACCAGACCGGCCCCTTTCGGGCACAGCGCGCCACGGCTTACCGGATGATCCGGGT
+NODE	2825	78	4168	4168	0	0
+GGGCAGCAAATTCTTCTACGCGGCCTTTCAGTTTGTCGTTCTGGTAGGTGAACGCCAGTTCAGCTCCTTCGCGGTGCA
+AAAGGCCGCGTAGAAGAATTTGCTGCCCAGCTGGGTTCCAGCATCGTTTTACCGTGTGATGTCGCTGAAGATGCCAGC
+NODE	2826	20	1045	114	0	0
+CGCCTGAACCGTGTCACCGA
+ACGCCACAGGAAGGTGACTT
+NODE	2827	73	5661	3817	0	0
+TCGCGGGCTGTCGTTCACCATGGAGGCCGGGGAGTGGGTGCAGGTCACCGGCGGCAACGGCGCCGGAAAAACC
+CCATGGTGAACGACAGCCCGCGAAACAGCGTCCTCTCGTCCCGCTCGCAGTACAGATCTCTGGCTTCAAGCAT
+NODE	2828	51	2847	2827	0	0
+ACATCCACGTTATTTTTGCCCAGCACGTTGTCGTATGAAGTATGGATGCGG
+TGATTAAAGGCTTTGCCCGCTTTGTCGATGCCAAAACCATTGAAGTGAACG
+NODE	2829	51	1582	1582	0	0
+ACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCG
+TTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATT
+NODE	2830	95	513	513	0	0
+ACCCCAGAGGAAATCCTCCTTGGAAAGGCCTTTCATTCTGCCCTCACGGGTAGTGTGTTGACAACGGGGATTTCCTCTGGGGTAAGTCGGTCCTA
+GAGGGCAGAATGAAAGGCCTTTCCAAGGAGGATTTCCTCTGGGGTTAGGACCGACTTACCCCAGAGGAAATCCCCGTTGTCAACACACTACCCGT
+NODE	2831	3397	220587	220000	0	0
+TAAATCAAAAGTGCACTGCGCCCATTATTGATCTCTTCAATAACGAAGCGATCTCCTGCAGTATTTCAGAATGTCCAACCATGCCGATGATCGATGACATACTCATGAAGGCATTTGCCAGACTTGATGCGGGTACCAATCCGGTTCTTCATTCAGATCAGGGCTGGCAATACCGTCATAGATGGTACCAGTATCAGTTACGAGAGTTTGGCATCATCCAAAGTATGTCCCGCAAAGGCAACTGCCTTGATAATGCCTGTGCAGAATGTTTTTTCGGGACTTTAAAATCAGAAAGTTTTTACACCAGTAAATTTAAGGATATTGATGAACTTAAGATAGCTATTGAGGATTACATACGATACTACAATACCCGACGAATTAGCCTTAGATTTAACGGACTCAGCCCGGTTGAATACCGCCTAAAGAGCTATCCAGGCAGAAATTAACAAGGTCTGTACAGGGATGCTATCAGGAAACCTGAACGTCGGTAGA [...]
+TACCAGGTCTGGCGCGAACCAGAGTTTAAGCGTGTGTGGATCGATGGCGCATAGTCCCGCGTCAAAGAGCTTGTGGATATCAGCGCGCAGCAGCAGACCGTTTTTAAAGCTCGCGCCACCTTTGCGAGCGTGGGCTTTAAGGTGCGCGGCTTCACAGCGTACCGCAATGGCATTCGTGTAGACGCAACGGCCACCGCAGTTAAGCATCACATCTTCACGGAATTTCCCCTGATCACGACGGCGACGGCCATAGAACGGTACATCTTCTTTGTGTTCGCGTTCTTCAGCCAGCGACCGTTCGGCTTGCGGTTCTTCAGCCTGGGGTTCTTCGACCACCACGGGTTCAGGTTCGACCGCTTTCGGTTCTTCCCAAGTTCCCAAGAACATGGCAACGCGCTGGGGCATTTTGACACGATTCAAAATCCCAAGGTGCGCTTTTTCCCAGGCCAGGAATTCTTCCAAGCGACTCGCTGGGCAACCATGTTTAAGCGC [...]
+NODE	2832	4	231	231	0	0
+TAAG
+TGTC
+NODE	2833	51	107	107	0	0
+GATCGTCTTCCAGCGTCAGTAATACCAGCACGAACGCAAAGAACGCCATAC
+CCGCGCCAGGCGCTGATCGTGACGCCGCTGTGGTTTATCGCGTTGGGTCTG
+NODE	2834	228	4897	4897	0	0
+CCCCGGCGTCTGCGCCGTCGCCTGCTGCCAGGCCCTGACCTGCTGATAGCTGCCGGTCTGTGAGTAACTGATGGCGGCCACGACCAGCGCCATAACCACGCCCGGAAGATACCCCCCCACCCCTGCGCGCGGTCCCGCCGCCGGAATGGCGTCAGCCAGGACGTCCTGTCTGATACGCACCCGCCGGCGCGTGCGGGCGACGATTATCCACCCGCCCGCCACGATGGC
+GCGTATCAGACAGGACGTCCTGGCTGACGCCATTCCGGCGGCGGGACCGCGCGCAGGGGTGGGGGGGTATCTTCCGGGCGTGGTTATGGCGCTGGTCGTGGCCGCCATCAGTTACTCACAGACCGGCAGCTATCAGCAGGTCAGGGCCTGGCAGCAGGCGACGGCGCAGACGCCGGGGCTGCTGGCGCGGGCGCTGGACCCGCAGGCGCAGCCGCTGAATGAGGAGGA
+NODE	2835	12	709	709	0	0
+ACCTTGGCAAGG
+TTGAAAGTGCTT
+NODE	2836	14	51	51	0	0
+TTTCCCTACGGCTC
+CCCCGAAACCCGGT
+NODE	2837	28	1419	1419	0	0
+TTTTATGTTCCCGGCGCCATTTCGCTGC
+AAGGCGATAGCAAAGCTGGTCAGCAGCG
+NODE	2838	40	99	99	0	0
+GGGATGGAAGATGCGCAGCGTTTACCGTTATCAAAGCTGG
+ACCCACCCGCTAACAAACACGGTGCACAGTACCGTCAGCA
+NODE	2839	3	210	210	0	0
+GTC
+GGT
+NODE	2840	22	4758	1026	0	0
+ACCCAACGAACGTATCCTTAAA
+TGGCCTGTGAGGGTTGCTGGAG
+NODE	2841	188	11593	11460	0	0
+GGTATACCTCTTGTAGGCTATACCTCCTGCTTCACGTTATCGCGCGATTAACGCAAATACGCCCCAGCCAAAGTATTCTCGCGTCCAGGTGACGTGACGTTTGGGGGCTGCCGTCAGTTCTGTTCGAACCTCTTGCGCAAACTCATCGTCAGGGTTTTCCTCCAGCCAGCGGCGCATGGTCATCCACT
+GCGCAAGAGGTTCGAACAGAACTGACGGCAGCCCCCAAACGTCACGTCACCTGGACGCGAGAATACTTTGGCTGGGGCGTATTTGCGTTAATCGCGCGATAACGTGAAGCAGGAGGTATAGCCTACAAGAGGTATACCTCCGTTTAAAAGTATGCAACAAATTAACACGGCTCAAGGCGGGAATATAT
+NODE	2842	2	251	152	0	0
+GG
+AC
+NODE	2843	11	1324	783	0	0
+CCGTAGGTGGC
+TACTGAGCACG
+NODE	2844	30	1504	1480	0	0
+TCCGGGATATCAACCACTCGCAGCGAATTA
+AATATGGCTTTGCCTGCCTGAGCGAGCAGG
+NODE	2845	27	31	31	0	0
+GACCTTATAATCCCGTGGCTGAATATG
+GAATTAACCTGCCGTAGCCTGGGAGCA
+NODE	2846	13	199	199	0	0
+GTTTTGCTTTTAC
+AAACTGACCGATA
+NODE	2847	248	11251	11187	0	0
+TCGCGACAGGTCGACATCGCCAGGGTGTAAGAGCAGGCGTTAATCAGCGTGACGGTGGCAATAAAGCAGAGGATGAAGAAGCCCCACATGGTGGCGGTGCTGAGCGGCAAGGCGGCCCAGGTTTCGATAATGGCGCGCGCCACGCCGTGTTGCTCAATGAGTTGCGGGATGTTGAGGATGTTTTTATCCATCAGCAGCAGCGTGTTACTGCCCAGCACTGTCCACAGGATCCAGGTAGACGCGGTCAG
+GCTGCTGATGGATAAAAACATCCTCAACATCCCGCAACTCATTGAGCAACACGGCGTGGCGCGCGCCATTATCGAAACCTGGGCCGCCTTGCCGCTCAGCACCGCCACCATGTGGGGCTTCTTCATCCTCTGCTTTATTGCCACCGTCACGCTGATTAACGCCTGCTCTTACACCCTGGCGATGTCGACCTGTCGCGAAGTTCGCGATGGTGAAGAGCCGCCTCTGTTAGTGCGTATCGGCTGGTCGG
+NODE	2848	62	2478	1031	0	0
+ATACCCTCCTGAACCCCACATATCTACAATAATTGTATTCTTTTCGTTCAATCCCTGGAGCG
+TCAGGAGGGTATAAAAAAACCCGCCGAAGCGGGTTTTTTTACGTTACTACAGATTACTCTGC
+NODE	2849	26	996	983	0	0
+TTCACCACGCCGACCAGCACCAGAAT
+CGAGTGGTGGAGCACCCTGCACCAGG
+NODE	2850	27	1948	1948	0	0
+TTATTGGCGCAGCCAGTTTGGACACGG
+TCGATTCTCTTTTTTGCGAGGCGAATT
+NODE	2851	9	545	540	0	0
+CGGCGGTTA
+GAAGGTTTC
+NODE	2852	11	697	697	0	0
+TTTATTGAGGG
+AGCCGCAAAAA
+NODE	2853	51	58	58	0	0
+GACGCATCCGCCACGGATTCAACAACAATAAAAAGTTTATATTTATCGGTA
+CCCGGCTGGCGCGCGAATTACCCGACATTAAAAGCATTAATTTAGGCGGCA
+NODE	2854	51	2122	1417	0	0
+CAATAAACCGAACGGACAATATGTTATTACGCCAGCCGATGTACCCGGCTT
+GAGATCGGAGGCGATCTTCGCCAGAAATTTCACTGGCGCAACGCCGGCGGA
+NODE	2855	66	3999	3999	0	0
+CTGCTGAAAATCGTCTTCTCATCCGCCAAAACATCTTCGGCGTTGTAAGGTTAAGCCTCACGGTTC
+AGACGATTTTCAGCAGTGATTCAGAGTTGAGTACGCAATAATTTGCGCAGCAGCAAGGCGGCAAGC
+NODE	2856	46	2055	1988	0	0
+ACCCGCCGTCAGTAAAATCATTAGCGATGTTGAGGCCTATTTTGGC
+TTAACCCTAACGATTTTGCGGCAGAACCGATAGAACCACTTCTAAT
+NODE	2857	16	1078	1043	0	0
+ACCGCGCTATCCGCTA
+TTTGCATAACGTCCGG
+NODE	2858	51	185	185	0	0
+GATGGACCGTTCCGACCTGTTTAACGTTAACGCTGGCATCGTGAAAAACCT
+CCCCGGCTTACGCGCCACACCCGCAGAAATCAGTACTACGTCAGCGCCTTC
+NODE	2859	51	2457	2194	0	0
+GACGCTATCATAGACATTCCCTTTCCCCAGATGTTCCAGAAGTTGTTCCGC
+CGCGCAGGCATGGCAGGCCGCTATCGACGCGGCGCAGCCAGAAGATACCGT
+NODE	2860	605	34859	34685	0	0
+CTATACCGTGGCCATCAGCCACCCCTCCACAAGGCTACCTGGTGATGAACGGGCAGTCATTTTCATGTTCCCGGTATCCTCAGCTTGCCCGTGCTTATCCCGGGTGTAAGCTGCCGGATTTGCGCGGTGTTTTTATCCGTGGCTGGGACAACGGACGTGGGCTGGATGGAGATCGGAACAGACATCTCCTGAGTTATCAGGCCGATCAATCCGGTGTCTATCATGAGCGTGGGGGATGGCTGAAAGGGCATCACAGCGGTATGCCTTACTGGGCCCAGGGAAGCACAACGGAAATGCGCCCCAAAAACATTGCCTTTAACTACATCGTCAAAGCAAGCTGATGCATTTAAGGCGTATTAACTTTTAACTTACAGCAACGTATTTTGACCCAGACCATGCTTCCCGAATACCCCGGTTTACCTCTGTACGCTCTGAATCCTGCCGCACCATAGCCTGCTTTGCCGTCACAGACGGCAAAGCCGTTTGAGCCAC [...]
+ATTATTCGGCCTGTTATGACGCAGAAGAAGACTCCAGAAAACCGGTTTATGCGAACTGGGGTAGTGGCTCAAACGGCTTTGCCGTCTGTGACGGCAAAGCAGGCTATGGTGCGGCAGGATTCAGAGCGTACAGAGGTAAACCGGGGTATTCGGGAAGCATGGTCTGGGTCAAAATACGTTGCTGTAAGTTAAAAGTTAATACGCCTTAAATGCATCAGCTTGCTTTGACGATGTAGTTAAAGGCAATGTTTTTGGGGCGCATTTCCGTTGTGCTTCCCTGGGCCCAGTAAGGCATACCGCTGTGATGCCCTTTCAGCCATCCCCCACGCTCATGATAGACACCGGATTGATCGGCCTGATAACTCAGGAGATGTCTGTTCCGATCTCCATCCAGCCCACGTCCGTTGTCCCAGCCACGGATAAAAACACCGCGCAAATCCGGCAGCTTACACCCGGGATAAGCACGGGCAAGCTGAGGATACCGGGAACATG [...]
+NODE	2861	51	2257	248	0	0
+ACCACCCGCACGACTGTCCGGTCTGTGAAGAGGGCGGTAACTGCCATCTTC
+TTAGTCATCAGCCACTCCACCACGCTTTCACGGAACTGTTTCGCTTCTTCA
+NODE	2862	51	120	120	0	0
+GGAACCCTGAACCGCGCTATACCATCTTATCTGGTTGTTTATTATCATTAA
+CCCGCCGCTTCCCTGCCGACGGCGAACCGTTCTTACAGTTTGCCAGAGACT
+NODE	2863	9	9	9	0	0
+GGATTGAGC
+CCCCCGTCC
+NODE	2864	81	4112	4053	0	0
+CTCCGCCGTTGCTTTCGCCGCTTCGGCCTCTGCTTTCTTCTTCGCCTCCGCCGCTGCTTTCGCCGCTTCGGCTTCCGCTTT
+AGAGGCCGAAGCGGCGAAAGCAACGGCGGAGGCGAAGAAGAAAGCGGAAGCCGAAGCGGCGAAAGCAGCGGCGGAGGCGAA
+NODE	2865	1646	91937	89580	0	0
+CTCCGCCACCGTTATTTTCAACGCCAATAGCCACACCTGCGACCAGTGCAGCAACGCCGCCAGCAACCCAGCCCCAGTGATTATCATTTTCAGGTGTAGCAAGGCAGGTCGGTGAGAGTTTTGCGCGTTTTTCTTTAGGCAGGGAGGAGATATTACTGGGACATTCTTTTTCATCATCGTTATTTTCTGCGGCGATGGCCGGAATGTAATAACTTTGTAGCGTTAAAGCGATAGCGATAGAAATAAGTTTTTTCTTTTGCATAGGGTTCATCCTTAATTAATATTTTCCTTGCGTACTAAACATATGCAGCGACCGATACAGGCAATGAAGAAATGGCCAGAAGAAAAATTATGCTTTAGTGTTTATTTTATCACCCGATAACCAGATCAGGTCAAATTGAGTGCTTAACGGTGTTATTTATTGTATGAATGAATAAGAGGTGAATTTGACGAGTAAAAGGGTTTTTAGGCAGAATTATTACTATTTAAATT [...]
+CTCCTCGGGCGGCACTTCCCCGGTGCTGGCGCGTCTGCTGCGCGAGAAGCTGGAATCGCTGCTGCCGCAGCATCTGGGGCAGGTCGCGCGCTATGCCGGACAACTCCGCGCCCGAGTGAAAAAGCAGTTTGCCACGATGGGCGAACGTCGTCGCTTCTGGGAAAAATTTTTCGTCAATGACCGGCTGGCGCAGTCGCTGGCGAATGCCGATGAGAAAGCGGTTAACGCGACAACCGAACGCCTGTTTAGCGAACCGCTGGATCACCGTGGCGAAGTCGTGCTGGTCGGCGCCGGGCCGGGTGATGTCGGACTGCTGACGCTGAAAGGGTTACAACAAATCCAACAGGCGGATATCGTGGTTTACGATCGCCTCGTCTCCGACGACATTATGAACCTGGTACGCCGCGATGCCGATCGGGTCTTTGTGGGGAAACGCGCGGGTTACCACTGCGTCCCACAGGAAGAAATCAACCAGATCCTGCTGCGTGAAGC [...]
+NODE	2866	2950	179912	179401	0	0
+TGGGTCTGCCTTATCTATTGAATAAAGGTAACGGTTAATGCCTTCTGTAATTTCTTGTTTAACGGTCGACGTAGCTTCATTTTGTGCGGCGGTTGGCGTTGCCGCTGATGCCGATGACACCATCAGAGTTAACGTTATCGCGGCGGCCGAAAACAATAGTGACGTTTTTTGCATAATAGTTATACCCATATGGTCTGTTTTTGAGACGCTTTATCTTTCCTGTTACGTTCACCTTTATACTAAAGGAGCATGGCTCACGAACAATAAAAAACATCCTTCTATAAAACTACCCCGAAAAGGGAGTAGTGCAATTAAGAATATCGTATTTGTTTGTAACGACATGACTCAAAATATCAACATTTAGAGTTTCAGTATTGTTGTCCATTGACTTACTTTTATGTTTATTACCGCTGGTAAATAGTTAATCTTATGAATAGTGATACACAAATGACCGTTTGCGCTATGTGATAATTAACCATAGTAAAAATACAC [...]
+TCCCCTGGATGTCTCGCCTCTGGCTATCGAATATCCGCTGCTGTCAGCCTGTTGTCTTAGCGGAAAAACGACTGCGCTACGTCTGCTGGCCCGCTGCATTACGCTCGCCCGAAGTTTGAGCGCCCTTCCTACCCTGCGCTGGAATCGTTTTGATGATGGCGAATGGAAAATAGCGGTAGTGGAAACCGCGCGAGGATGGTTAGTTCATCAGGCCAGACTGACGACGTCAGGCAATATTCTTGATTACCGTATTATCTCGCCTACCACACGTCACGCCCAATCTGACGGCGTCATTGCTCGCGAACTGGCCACTATTCCACTCTCATTGTGGTCGCAACAGTTACAGGTAATTGATCCTTGTGTCGCCGTAAATATTGTTGAATGAAGGAGCTGGCCCATGCATGAATTAGCCCTGGCGCAAAATATTATCGAATTGCTGGAGGAACAGGCAGTAAATCACCAGTTCAGCAAGGTAAAGCAAGTCTGGCTGGA [...]
+NODE	2867	9	772	763	0	0
+CTTCTTCGC
+GAAGAAAGC
+NODE	2868	72	1746	1688	0	0
+TGGCGATGACGATGTGACCCCACCCGACGATAGCGGCGATGACGATGTAACCCCGCCTGACGATAGCGGCGA
+TGGGGTCACATCGTCATCGCCACTATCATCGGGCGGGGTCACATCGTCATCGCCGCTATCATCGGGCGGGAT
+NODE	2869	3	152	104	0	0
+TGA
+GGG
+NODE	2870	22	2308	943	0	0
+GCTCATGGACGAAATCGCCGTG
+CGCTGGTGGCGACGTTGGCAGG
+NODE	2871	48	1048	1048	0	0
+CCGGTCGATCCGCGCAAAGCCGCAGTGGAGGCGGCTATCGCTCGCGCC
+CGGCAGGTTCGCTTCCGGCCTGCTGCTCCTGTTTGCGGGCTTTGGCGC
+NODE	2872	17	500	500	0	0
+AAAGCCCGCAAACAGGA
+GCGCGGATCGACCGGTT
+NODE	2873	115	144	144	0	0
+CAGACCCCGATCTCCCCTGTGTCGCCTCTGAAGCCGATCGCCGATAAACGCCGAGACCACGCTTATAAATGAAGAGAGCGGCGGGAGCCCGAATAAAGCATTGTCTGGCTGCATT
+TAAGCGTGGTCTCGGCGTTTATCGGCGATCGGCTTCAGAGGCGACACAGGGGAGATCGGGGTCTGGCCAGGAAGAGGCTGGAAAATCAATCCCTCCCGCGTATACCCGTCATACT
+NODE	2874	1685	85285	84660	0	0
+TACCGTAACACCGACTTCTTCGGCCTGGTGGATGGTCTGGACTTCGCGTTGCAGTATCAGGGCAAAAACGGCAGCGTGAGCGGTGAAAACACCAACGGTCGCAGCCTGCTGAACCAGAACGGTGACGGTTACGGCGGATCGCTGACTTATGCAATCGGCGAAGGCTTCTCTGTCGGTGGCGCTATCACCACGTCTAAACGTACTGCCGATCAGAACAACACCGCTAACGCTCGCCTGTATGGTAACGGCGATCGCGCCACGGTTTACACCGGTGGCCTGAAATACGATGCGAACAACATCTATCTGGCAGCGCAGTATTCTCAGACCTATAACGCAACCCGTTTTGGTACCTCTAACGGTAGCAACCCGTCCACCTCTTACGGTTTTGCCAACAAAGCGCAGAACTTTGAAGTGGTTGCTCAGTACCAGTTCGACTTTGGTCTGCGTCCGTCTGTGGCTTACCTGCAGTCTAAAGGTAAGGACATCAGCAAC [...]
+GGGGCGCCCCGTTTGCGGATCGATAACGTGCGAGACACGCTTGCCATCCAGCTCATAATAGTTGCGGTAGCTGCCGGAGGTGCTGATGCCATGCCCGTTGATATCCACAATCGCCTGCACCGCGTTTTCCCGGTCGGTCGGCTTCTGAATCGCGACGCGCCACGGCTGCCCCTGCGCATTCATCCCGCGACTGCTTAATGCGCCCCCCACCGAGACCAGATAACGCGCAATGCCCTCCTGCTCCATCAGTCGCGCCAGATGATCCGCCGCATAGCCCTCCCCGACCGTGGAGAGATCAACATAAAGATCCGGCAGATCTTTTTGCAAAAACTGATGTCCAGCCCTGTCGATAACCTGCAAATGTTGCAGGCCTGTTTTCGCTTTTGCCGCATCGATTTGTGCTGGTGTTGGGATATGCAGCGGCTGCCGATCCGGCCCAAACCCCCACAGATTGACCAGCGGGCCCACGGTGATATCCATCGCGCCATCCGT [...]
+NODE	2875	6	261	252	0	0
+TATCCC
+GCTGGC
+NODE	2876	51	78	78	0	0
+GCACTGAGCAAGGCGTGGGAGCGCTGACCGCCGCCACGCCGCTGGAAGAGC
+CCTTCTGTCGAGGAACCAAACCAGTTCCATGGATTTGCGGCAGACCAGTTG
+NODE	2877	51	59	59	0	0
+GGTCGATGGCCCGGCGGGATTTTTCTTTCAGGGCTATCACCCCTTCGCGCG
+CCCCTCCCCCCGCAGCTGCCAGCCGGTATCCGCCTGCATATCCTGCCGGAT
+NODE	2878	51	353	353	0	0
+GTTTATTGAAACGGACATGACGCGTGCGCTGTCTGACGATCAGCGTGCGGG
+CCCCGGAGCCACAACATTGACAGTAATACCACGGGACGCAACTTCACGCGC
+NODE	2879	150	955	955	0	0
+ACCCAGGTGGTATGCTTAATAGGTTTCCTCCGGCACTGAGTCTTGCGACCCAACACCAAGCATACATCGTTTAAGGCGTGGACTACCAGGGTATCTAATCCTGTTTGATCCCCACGCTTTCGTGCCTCAGCGTCAGTTGAGGCACGAAAG
+GATTAGATACCCTGGTAGTCCACGCCTTAAACGATGTATGCTTGGTGTTGGGTCGCAAGACTCAGTGCCGGAGGAAACCTATTAAGCATACCACCTGGGTATCTAATCCTGTTTGATCCCCACGCTTTCGTGCCTCAACTGACGCTGAGG
+NODE	2880	123	401	401	0	0
+CTAAACTTGCACTTGATCATGCTTGTGGTGCATCAAGTCGTGGAACTTGCTTTCCACAATTCAGTCACCCCCGTGTAACAACACCAGACTCGCAAGAGATTAAAGGACAGCCGATGCAATACA
+CGGGGGTGACTGAATTGTGGAAAGCAAGTTCCACGACTTGATGCACCACAAGCATGATCAAGTGCAAGTTTAGACCCATTGGCTGGTGGTATCTTCACCCAGTTATTTACTAATATTCATTCT
+NODE	2881	124	7066	6979	0	0
+TCTCTGGATTACGTCCCGGTGCGGCGTAATGGTGCGCTTAACCAGGACTGAATAACCGGAAGACGCTGTTCCCTTTTTACACCACGCCTGCCTTGTGCAGGCGTTTTTTTTGTCAACCGGAAAT
+AGGGAACAGCGTCTTCCGGTTATTCAGTCCTGGTTAAGCGCACCATTACGCCGCACCGGGACGTAATCCAGAGACTGCAGCAACTGCTCATCTGTCAGATCCAGAAAATCTTTGATTTCCTCCA
+NODE	2882	1553	89408	88389	0	0
+CTGATGAACCAGTCCCGGCTGCAGGATAATGTCGCCGTTATACTGCCGCAGGCAACCAAAGAGCTGTTCGGCTTCGACCCAGTCCGCGCTGACGACTTGTGTGACGGTGGCAAAGTTGTCTTGCGCATTCTGCGCGGCGCGGTAATGAACAGTATGCCCGGAAACGTCATAATGTCCGCCGGTTAATTGTCCGGCATCGGTTTGCAGAGCGCGGACGGCATCTGAAAGTAAAGTGAGATACTCTTGCTCTTCAGGCGCTTTAGTCAGCATAAAAGAGGATGATGCCCACGGCTGTATAAGTTGCTCAAGCGCAAATTGCAGTCGTGGCTGAGTATCACTGAGTAAGGTGTCGTTTTCGTCAGTCGCGTGTGGCTGTGCAAATATCTCCTGATAGCTTTCGCTATCCGGAACCAGATCACGCCATGCAAGTTTCGTAATGGTCAAAGTTGAGGTTTTTTAGTCTGTTGTAAAAGGGGGGATTATAGCCTAACC [...]
+AGCCGGAAGGCCAGCAGGCTCTGGATCAGCTGTACAGCCAGCTGAGCAACCTGGATCCGAAAGACGGTTCCGTTGTCGTTCTGGGCTTCACTGACCGTATCGGTTCTGACGCTTACAACCAGGGTCTGTCCGAGAAACGTGCTCAGTCTGTTGTTGATTACCTGATCTCCAAAGGTATTCCGTCTGACAAAATCTCCGCACGTGGTATGGGCGAATCTAACCCGGTTACCGGCAACACCTGTGACAACGTGAAACCTCGCGCTGCCCTGATCGATTGCCTGGCTCCGGATCGTCGCGTAGAGATCGAAGTTAAAGGCGTTAAAGACGTGGTAACTCAGCCGCAGGCTTAAGTTTCCGTCTGATAAAAAACCCCGCGTCGCGGGGTTTTTTGCTCTGGTCTGGGTGACAACGCCTTTCAGCGTTACTTCTTGCCTAATAACGCCTGTAAATCCTGCTTTAACGTGGTCATTTGCGTGGCATATTTCTCTTTAT [...]
+NODE	2883	40	40	40	0	0
+GGGCGAAGATCCGCGCTATTTTACCCTGCGCCGTCTTGAC
+AAAGGTATGTTGATGGCCATTGAATTTGTCGACAACGAAA
+NODE	2884	83	3572	3572	0	0
+GTCCGCCAGCGCGTCAGCCTGTGTCCGCAATGTGGATTACCCGCCGCGCATCCTTCGCTCCCCTGCGGTCGCTGCCTGCAAAA
+ACATTGCGGACACAGGCTGACGCGCTGGCGGACGGCGCGCGCGCATACGGAACAAATCCCCCAGTGGCTTAACGCCAGCGGCA
+NODE	2885	101	5380	5327	0	0
+ACCATGAGGGAGAGCTGTGGTGCGCCAATGCGTTTTATTTGTTCGATGCGCAAAACGTCGCGCTGTATCTGTTAACGGATGATAAAACCCGCCATGCGCAA
+GCGCATCGAACAAATAAAACGCATTGGCGCACCACAGCTCTCCCTCATGGTGTACGCACCAGGTCACCACGTGTTGTTTCGCCAGCCAACGGCCAATAGCG
+NODE	2886	25	1042	1000	0	0
+AAGAATTAGATGCGCTATTCGATCA
+ACCTTCGCTTTCGCTGTCGGAGGTA
+NODE	2887	62	4119	3852	0	0
+TTTGTACGGTGAATAGATACCGCAGGCGGGGTTTATTAACGGGATGCCCGTCAAGGTGCGGG
+TCACCGTACAAACGAACTGAAAGTCTCTCAACGCGTGAGTATGTAAGTATCCCGCATAATCG
+NODE	2888	35	451	451	0	0
+CTGGACAACGACAAAAATGAACTTCACTACCAGTA
+TGAAGTATGGCCCCGCTGTTGTCGCGGCCTACAAG
+NODE	2889	3	298	289	0	0
+GTC
+CTG
+NODE	2890	51	139	139	0	0
+GCATTGTATTTCTTTTTATTTACTCAAAGATAACGCCGCATAATGAATGGC
+CCCATTGCCGCGCCAATAAAAAAATAGGCGCAGAAAGCCAGTAATGCGTCC
+NODE	2891	1212	63788	63170	0	0
+TTGCCGATAACCGGTCTTTACACTCAGTACGCATCCATTTGCGTCCCGCGCCATGCGCCAGGGAGAAGAGGCTCTCCTCGCTGACGACGGGTTTCACCAGCCAGCTATAATCGCCGCGCGAGCCGGGGATAATCACCAGTCCCTGCCCATCTGGCGTAGCGCCTTTACGATGCAGCCACCCCGCCTCACCCGCGACAGTACAGGGTTCAACGAAGTTATGCGCCACATCCAGCCGCGGTTCGCCCTCAGCCTTGAGCTGTTGCAGTATCCGGCGGGCAATCAGCGCGCGATTACTGCGGGCAAATGCCAGCGCATCGTCATGTTCTGCAAGGTAGCGGCGCGCATCGTCGCTATCTTCCGGCAAACCGTTATGCGAAAACGCCTCCACATGACGACGCAGGATAGCTTGCCCCAGACCGCGTGAACCACTGTGTACCAGCAGTAATAACTGCGCTTTTTGCAACCCTGACAAAGCGAACAAATCAGCATCGA [...]
+TAGGGTTATAAGTCAGGCCATTAATTTTTATCACTATTACGATTGCGCCATCTAAATTTCAGTATTACTATACCCACGTTTTCTCATTCTCAATAACTGCAAAGGAGGTTCATCATGACACTTTATTCTCTGAACGCACTTTGCAGACCTTTCCAGGATTAATTTTCTTTTATTGCCCTGGATTAGTCTGCCATTTCCTGATTTTTTAATTCATATATGGAATGGTATATGGGCAATTATATTCGTCCTTTATCAGATGTGGTATTTTCTATCGCATCAGATAACCTGTGGATCGAAGATTCCGCGATCCAACAATTATATACGACGGCTAAGTTAACCGGTATGAAACGCGTTATCGGGATGCCAGATCTGCATCCGGGGCGCGGCTACCCTATTGGCGCAGCCTTTTTCTCGCGTGGACGCTTTTATCCGGCGCTGGTCGGCAACGATATCGGCTGCGGCATGGCGTTATGGCAAACGGATATTTTAGGG [...]
+NODE	2892	2	92	92	0	0
+GG
+AT
+NODE	2893	1275	71570	70721	0	0
+CAGGTTAGAGGTCAGTACGATGAACGGGTCGGTGGTGACCGCAAAGATCGCCGGAATACTGTCAACGGCGAAGATCACATCGCTGAACTCAACCATAATCAGCACCAGCAGCAGCGGCGTGGCATACAGCAGGCCGTTTTTACGTACGAAAAAGTGCTCGTTCTCGATCGTATCAGTCATGCGCAGATGCCCGCGCAGCCAACGCACCATCGGTTTTTCGCCAATGCCGGATTCGTCTTCCTTCGCCAGCGCCATTTTTACGCCGGTAAACAGCAGGAAGGCGCCGAACACATACAGCAGCCATTCGAACTGAGTGATAAGCCAGGTACCGGCGAAAATCATGATAGTACGCAACACGATCGCGCCAAGAACCCCATACACCAGCACCCGGCGTTGCAGAGCCGGAGGGACGGAGAAATAGCTAAACAGCATCAGCCAGACAAAGACGTTATCTACGGCCAGCGACTTTTCAATCAGATAGCCGGTAAGGAA [...]
+AAGTGTGTTTTGCGCCGCGCGGCGCGCTGATGCAGGATCTGACCCAGCCTCAGCATATTAATACCATGCTGTATGAAGCCGGGGCTTTTGCCCAGCTTATTGAAAACCACGCCGTGGAACATCCGGGGTTGTCGCTAAGTCGCGCCACGGCAAAATGGCTGACAGAAATACGCCGTCAAACCGGGGTCATCTTCCCGGCGGACGATCTAACTCATCCCCTTACTGCGTAAAATTATGTAAATAATATGTTACAGGTCATTGACTCTACGCGTGGCCTGTCATACTTTGTTACGCGCAAAGGGGAGTAACTTCATTGCCGGTCGATCGTCATTACGATGTGTGCAAAACCACATCCGGTCACCGGGCAGCCATAAAGGAATGCGTCAGCGTATTCCTTTATTGTTGTAAGTGAGACCTTGCCGAATGGCAAGGTCTATGCATAAAAGCAGCGGCTAATGCCATTCGGCGTTAGCCGTTTTTTTTTGCATGGGG [...]
+NODE	2894	150	9678	9619	0	0
+CTAATTAATTTCTATTGAGAAAGAATACACTCACATAAATAACAACACTTACCCGACAAAGGCATAACATATTCTTACTGCTTTTGTTTCTGTTTAATCAAATAATTTCCTCTTAAAATCTGTCTGTGTATAATGCTACTTATATAAATG
+TGATTAAACAGAAACAAAAGCAGTAAGAATATGTTATGCCTTTGTCGGGTAAGTGTTGTTATTTATGTGAGTGTATTCTTTCTCAATAGAAATTAATTAGATGTAATTTTAGTATAACATGTGATTTATGCTTGTTGCAGTTGTATTCAT
+NODE	2895	40	2285	2285	0	0
+TCTGCTCTCGCAGACACTGGTCGTGCATATGCTAAGGACG
+ACCAGCCGGACTGAAAGAGCGCCTGCGCCTCTACGTTATT
+NODE	2896	42	2701	2701	0	0
+ATAGCACTTATGATATAAATACCTTACTCTTTAGTTTTTGTC
+GCCTTCTGCCCTGCCGCTAAATATCTCATTGTTGTTAGCCTA
+NODE	2897	9	539	539	0	0
+TTAATTATA
+TCAGTATTG
+NODE	2898	30	1790	802	0	0
+ACCCGCCAGTGATGTGGTTATTGACACACT
+CCCACTGATTCCAAAAAGCAAATTGCCCAA
+NODE	2899	62	2975	2975	0	0
+TTTGAAAGTACTTGTTAAGTACAAGCGCACCCAAGCGGGAATAGCTCAGTTGGTAGAGCACG
+AGTACTTTCAAATTTTGGAGCGGGAAACGAGACTCGAACTCGCGACCCCGACCTTGGCAAGG
+NODE	2900	12	719	719	0	0
+ACCTTGCCAAGG
+TTGTACTTAACA
+NODE	2901	1	65	65	0	0
+T
+C
+NODE	2902	51	58	58	0	0
+GGTTTAATTTTTATATTGCCATCATAGGGTTACTTGCTGCAGGTAGTGGTG
+CCAGTCATTCTCTGTTGAGTATGGATTTCAAAGTATTTCCAGGCATGCTCG
+NODE	2903	51	169	169	0	0
+GAATGGCTTTCGCCAGCCAGCCGCCGGTACAGGACTCTGCTGTCGTTACGG
+CCCGACACCGCCGGAAGCTCCGCCTGGTTTGAACGCGGCTTTGTCACCTAT
+NODE	2904	33	139	139	0	0
+GTAGTGTGTGGATACTGCTTCAGAAAGTTCAGC
+TATTATGACGATAGCAGAGCAACTGGAAGAGAG
+NODE	2905	6	427	427	0	0
+TATTAT
+TTCAGC
+NODE	2906	51	2721	2709	0	0
+ACCTTCGCGATAAATCATGACGCGTTCCGCCGTCTGCGGAACGGTAAAGGG
+TGGCGTTTTTCCGCGAGTTTCCGGTCAGCATCAGGAATATTTACGGTTGAC
+NODE	2907	35	953	766	0	0
+ACCCCGCCGGTCACAAAAATATAGTTCGTTGTCAT
+TAAAGGCATTGCCGCAGCCTCCCTCGCAGCCATTC
+NODE	2908	32	3988	3725	0	0
+GCGCTGTTCTATAAAGTGGCGATTGGCTCCGG
+GCCCATGTCCACCGCCAGGTTCTCCATCTGGC
+NODE	2909	51	128	128	0	0
+GAGTTGGTGAAGGCGCGAATTTTCGCGGCGTTATCCAGCTTACTGCCTTCG
+CCCTGCCGGGCTTCAATATTCCTATGCTGCCGCGTGAGCTGTCTGACGATC
+NODE	2910	494	30070	29945	0	0
+CCGGTTTTTGCGCGCTGTCCGTGTCCAGGCTGGCTGCGCCAATAACGCCTGGTGGGATAGGCTCTAAGATATTTTTACTTTACTCTTGCTCACTCACTACAAGTGCGCTGTTATGGTAACGATAATAAATAATGTTGATGATATTTTCGGCCTGCTCGATCGCTTCAAGCAATAAGGTGTTTTGCTGATATTGCTGCGGATCCTGTAACCTACCGTTGTTCTCTTCTAACTGTTTCCGGGCAGCCCTTAATTGTAAAATTATGCCTTTGGCCTCTTCACGCGAATGAAGCAGCAAATCTTCTAACCGGGTCAGAGTTGTCATTTTCCACTCACTTAAAATCTAATGGATAGTTAATCAAAGTATCATAATGTTTAATCGTTACCACATCGGCACTCAGATGGACAATTTCTCCCCCATTGGGTAACAATGCCCCTACACGTAAACGCTCTTTATTCGTCAGTAATAAGTAATTACCATGGCGACTCTGTACAAA
+TTTACGTGTAGGGGCATTGTTACCCAATGGGGGAGAAATTGTCCATCTGAGTGCCGATGTGGTAACGATTAAACATTATGATACTTTGATTAACTATCCATTAGATTTTAAGTGAGTGGAAAATGACAACTCTGACCCGGTTAGAAGATTTGCTGCTTCATTCGCGTGAAGAGGCCAAAGGCATAATTTTACAATTAAGGGCTGCCCGGAAACAGTTAGAAGAGAACAACGGTAGGTTACAGGATCCGCAGCAATATCAGCAAAACACCTTATTGCTTGAAGCGATCGAGCAGGCCGAAAATATCATCAACATTATTTATTATCGTTACCATAACAGCGCACTTGTAGTGAGTGAGCAAGAGTAAAGTAAAAATATCTTAGAGCCTATCCCACCAGGCGTTATTGGCGCAGCCAGCCTGGACACGGACAGCGCGCAAAAACCGGAGCGTACACGTAGCACGTGAGGTTTGACTCGCTACGCTCGCCCTTCGGGC
+NODE	2911	51	1429	1394	0	0
+CGGGCGGGCGGCGGCGCGCTGCCCGCCAGCCACTGTGGAAATTCGCTAATG
+GGCATAACGGACAGATTATGTCCGCGATGCCGCATCTATAGACTTGATTCC
+NODE	2912	44	80	80	0	0
+ACCGGATGACTGCCTGATCCTGACCCTGGCGTGCGGTAAATACC
+CTGGCGTTGCTGACCAGTGATGATGCGCTGACGGATGACGTACT
+NODE	2913	1654	89150	88830	0	0
+AATGTATGAAGGTGGCGCAACCGAATGCGCTGACTAAACAGACCATTTTTTTCCATAAGCGATGTTAAAAACAGAGCCGTGCGGGTGACAAGTAAAGTTGTTTGTTTTTGATAACCTGATAGCAAAATATTATTAACATTTTACCATTTCAAGTTACAACTGTTTTATTTTACTGATGATTCAACTGCCGTTAAGCGTGTTAAGCCGCGATCTGGTCGGGGATATGCCAGCTCATGTCAATCCGTTCTGCATAATGAATTCAGGTCGGATCACACTTTATAAATTCTTCTCCCCGGAATGGATGAGGTTTTCTACACTCCAGGTAACATTCACTGGAGGCATGACATTATGGCGAACACCATCACGGCAGATGAGATTCGGGAACACTTTTCGCAGGCAATGTCGGCAATGTACCAGCAGGAAGTTCCGCAGTACGGTACGTTACTGGAACTTGTGGCTGACGTGAATCTGGCGGTGCTGGAAAATAATCCC [...]
+TCAAAGGCGTCGCGGCTGGCATTGCCGTGGCTTCTTGCCAGCGTTTCATCTCCCAAATTCGACTGGAAAATGCCGGCTGCGCTGACCGGAAGAAAATCTTCATAGGTAATCGGCTGCGCGATCACCCAACCGCGCTCAATAAGCGGCTGCGGATCGTCGCCAGGATGGATCGCCTGACGATGCGCCTCGCCGGAAGGCGTTAAGCGATAGCGGAACCAGGCAAGCCCCTGCTGGCGAAGCAGAAATTCGCTATCCGGAAAGGCGTTAAATACCTCCCGCAAATGGAGTTGATGCGTGAAGTTATCCTTACCCGTTCCCGCCTTGTGCAACAGTTCGTCATATAATCGACGACCTTTTGGCGTCAGCGCGACGCCACGTTGCTCAATTTCGCCGAAGCGCGCCGTGTGCGTACCCTGCTTTTCATCAACGAAGAGCACCTGCTCTTCCAGGGCTTTGAAACTGGTTTGCCGCAACAGAATAGGCACTTCGCGG [...]
+NODE	2914	51	114	114	0	0
+GTTGTAAATCCGCCTGTATGGCGGCAAACGCGGGCAGGTACATGTCCGTAG
+CCGCCTGCCGCCGCGGTCAGCGCCAGCCTCAGCCTGTTTTTAGCTGGCTTT
+NODE	2915	33	762	711	0	0
+TGACGATAGCGGCGATGACGATGTAACCCCGCC
+ATCGCCGCTATCGTCGGGCGGGGTTACATCGTC
+NODE	2916	18	571	457	0	0
+TGACGATAGCGGCGATGA
+AGGCGGGGTCACATCGTC
+NODE	2917	3	151	144	0	0
+GAA
+CGT
+NODE	2918	273	14781	14717	0	0
+ACGATCTGTGCGGCAATCAGCTACAACCGCTGTTGATCAAAACGCTCCTCAACCGTGCACAAGGCGCGCTGTTGATCAGCGCCGAAGGGATCGATGATGTCGCACAGGCAGAAGAGATGGTCAAACTGGCGACGGCGGTGGCGCATCTTATTGGTCGCTCCAACTACGATGCGATGAGCGGCCAGTATTACGCGCGTTTCGTGGTCAAAAACGTCGACAACTCTGACAGTTATCTGCGCCAGCCCCACCGCGTAATGGAACTGCACAATGACG
+GAGTTGTCGACGTTTTTGACCACGAAACGCGCGTAATACTGGCCGCTCATCGCATCGTAGTTGGAGCGACCAATAAGATGCGCCACCGCCGTCGCCAGTTTGACCATCTCTTCTGCCTGTGCGACATCATCGATCCCTTCGGCGCTGATCAACAGCGCGCCTTGTGCACGGTTGAGGAGCGTTTTGATCAACAGCGGTTGTAGCTGATTGCCGCACAGATCGTCGAGGATCTTGCCGATTTTGAAACGTAAGAAAGATTTGTATTCCAGCGCC
+NODE	2919	5	1422	712	0	0
+CGTAG
+TTTTG
+NODE	2920	21	120	120	0	0
+GCAAACCTCACGTACTACGTG
+AAGCGGCGTTCAAAACGCTAA
+NODE	2921	95	9561	5496	0	0
+ACTGTTGACCCATACCAGCGACTACAAAGCATTCCAGAATAAAACCGTGGTGGATATTCTGGATGAGGTTCTGGCGGAATACCCCTACCCGGTGG
+GTTTTATTCTGGAATGCTTTGTAGTCGCTGGTATGGGTCAACAGTTTTACCCACGGCTCCATACGCAGCTCATAGGTAACCGAACGCCCTTCATG
+NODE	2922	209	13441	13369	0	0
+GCGCCAGCTCGTCAAAGTAACGTTTATCTATCCCTTTTTCACGTAACGTATTGAGATAGCTAAAGATAGCTGCGACGACTTCATCACGATTGGCCAAACCTTTATCAGTCAGCGTTGCCGAAATGGCAAATACGCCGCTGTTACCATTAACAATCGGATCGGAATCCGCGCTAATACCTTCGACCAGTCCTTGTTTTTGCAGCCAGTCA
+ATCCGATTGTTAATGGTAACAGCGGCGTATTTGCCATTTCGGCAACGCTGACTGATAAAGGTTTGGCCAATCGTGATGAAGTCGTCGCAGCTATCTTTAGCTATCTCAATACGTTACGTGAAAAAGGGATAGATAAACGTTACTTTGACGAGCTGGCGCATGTGCTGGATCTCGACTTCCGCTATCCGTCGATTACCCGCGATATGGAC
+NODE	2923	41	2008	2008	0	0
+TTATTAGGTTTGCCTATCGCGACACTGGCGTTAATTGTGAA
+TTCCGCCCCAGCGCCGGAATTAATCGCAAAGGCCACACCTA
+NODE	2924	16	919	919	0	0
+ACCTGCCTGTCACGCA
+CTTTTACAACCACTGA
+NODE	2925	42	2084	2084	0	0
+TCATCCGGTAAGCCGTGGCGCGCTGTGCCCGAAAGGGGCCGG
+GCCTTCAATATGGTAAATCGCTTCTTTCGCGTTTTTTGCCCC
+NODE	2926	71	3206	2442	0	0
+CACCGGCCCGCAGAAGGAAAGTGATCCCCGCACGATAGAGTTTATGCCGGTTACCCAGCAACTCCTTCACC
+CTTTCCTTCTGCGGGCCGGTGATATGGACAGCCTGAAACGTAAACGGGTGGAGCTGACCACGGTTCTGCTG
+NODE	2927	125	1084	1084	0	0
+AGGACACTCACTGCTTCTCGGAATTGAAAAAAGGCGAAGAGGACAGTACTGAACATCAAGCCAGAGTATCATCCCCTCATGCTGCGATCCGAGCTCTACTTCAAAGATAGCGGCTGCTAGCTCAA
+GGGATGATACTCTGGCTTGATGTTCAGTACTGTCCTCTTCGCCTTTTTTCAATTCCGAGAAGCAGTGAGTGTCCTCTCATGCTGCGATCCGAGCTCTACTTCAAAGATAACGGCTGCTAGCTCAA
+NODE	2928	2	101	99	0	0
+TA
+TC
+NODE	2929	13	684	684	0	0
+TGCTTTCTTTACC
+AAAAGCGGGACTC
+NODE	2930	28	553	535	0	0
+CCGGACCATTCAATCGGTAGGTGCGACG
+GTTTCCTTCATTGGGAGTTGATCGCGAG
+NODE	2931	4	148	134	0	0
+GGCG
+GTTG
+NODE	2932	34	1838	1838	0	0
+GCTTTTTCCGCGGTTTCTTCATTTACGGGAATGG
+ATATAGCCACTCACGGCAAGTATACTTATTGCAA
+NODE	2933	848	61000	60828	0	0
+CAAAAGAAAGCGGCTTATCGGTCAGTGTCACTTCTTCATAAAACCCGCTTCGGCGGTTTTTTGCTTATCAGGCCGGTGAAGGGTATAGAGGTTGCAGAAGACGCCAGCGTCACTATCCGGCAATTAATTGACAGCCGTGGTGACATAATATTATTCGTTTTTGTGATGAGAAACACAAAACGCTATGGATTGCGCTCTTTTTAGTTGAAGTGAAAAACAATCGATTTCTTTCACAAAATTACATCCTGAAAAACAGCAAGAAAGCGGTGTAAATTATTTGTTGTAAATGAAAATTAAATGTATGAAATATTTTGGTTAAAATTTTATTAAATGTTTCTTTACAAACAAATAAGGTAAAAAAATGTGACGCGTAACGGTTTTTAAGCGCATTTACCTTCGGTTTATACTTAAATTTGAGAAATTACGCTTTAAATTTAACGCTGGAATTGCCGATAAAATGTCCCGTAATTGATTGAAATATCGTCTTCATGG [...]
+GACTTCCTGAAAGACCACCAAATGCTGTGTTTTAGGGAGAACAAGAGTATTCATATCTACCGCTCTGAAATAACATTGTGAACGGCAGGAAGTGTAGCAAATTAAATCTTAAAGGTTATGTGCGACCACTCACAAATTAACTTACCATAATTTTTACATGGTCTTTATTAAATAAAGAAAACCCATTACTTCAATGAGTTACAAAAACAAAACAGCAACTTAGCCTGATTTCAATCAAAAAATAGGGTCAGGATAACGATATATTATGGCGATAACCAGCCTATTTTATCTCCTATTTTCGACATCCCATGAAGACGATATTTCAATCAATTACGGGACATTTTATCGGCAATTCCAGCGTTAAATTTAAAGCGTAATTTCTCAAATTTAAGTATAAACCGAAGGTAAATGCGCTTAAAAACCGTTACGCGTCACATTTTTTTACCTTATTTGTTTGTAAAGAAACATTTAATAAAATTTTAACCAAAATAT [...]
+NODE	2934	51	170	170	0	0
+GTTGGCGAATAAAAAGCCCTGTCGTTCATTGACGCCGTTTTTTGTCAGGAA
+CCCTATGCCCGCCGTTTCTTTTGAACGCTGGTACAAACGTTATCAGACGAA
+NODE	2935	51	2444	2293	0	0
+ACCAGCCGCCGGGGTATTGAACCCCATTTAGTTGGCGCTACTATCCTGCAC
+TTTCAACTTCGGGTAATTCAGGCATAACGTCTCCGGCTGTGTGGCAGGTCT
+NODE	2936	51	61	61	0	0
+GTTCAATTTTCAGCTTGATCCAGATTTTTAAAGAGCAAAACTTCGCAGTGA
+CCACAGAACAACGAAAGTTGTTCGTGAGTCTCTCAAATTTTCGCAACACGA
+NODE	2937	35	1852	1852	0	0
+TTTTATTGGGCGCAAGCACCATCGTTGGCCGCTGC
+TCTACGGCGAAATGAAAGAGTTTTTCCCGGAAAAC
+NODE	2938	51	1546	1260	0	0
+GCCACGCCCTTACGGTCAGTGCGCGTCAGTGTCCGGGTAATGCCAGCGCCG
+CTTGTCTGCCGACACCCTGCCACAAAACAAGTTTTGCATCAGGGTGTCCGG
+NODE	2939	86	589	589	0	0
+ACCCGTAGGTCGTATGCGGTATTAATCCGGCTTTCGCCGGATTAATGCCGCTCCAAAAGCGCGAGGTCTTGCGATCCCCCGCTTTC
+CGAAAGCCGGATTAATACCGCATACGACCTACGGGTGAAAGCGGGGGATCGCAAGACCTCGCGCTTTTGGAGCGGCATTAATCCGG
+NODE	2940	32	1302	1236	0	0
+ACCAGCCGCTCTGGCCAACTGAGATCTTTCGC
+TTTTGATTTTGTCGAGATGTCGGTGGACGAAA
+NODE	2941	1564	97294	96580	0	0
+TGCTGTTACCGGCAATGGCGGTGGCCGGCAACGAAAATGACGCGCCACAGAACAAACAACTGCAATAAAGCTGGCCGCCGGAACAGGCGGCTGTCCGTACAAAAGGATGAACGACAATGAACATCAGTGAACTGATATCCGTCCTCAGCCAGGTCAGCCGTGAACTGGAAACAGCCGCTGTACAGCACGGAAGCCTCACGGATATTTCCCGTGAGGCGGCCCAATTACAGGAACAGCTTTGTCGTGGAAAACAGGTCACCCCGGCACAACTCCGAGCCCTGAATGCCCGGTTGTGGGGGATAAGAATGAGACTCGTGGTGCAGTATGGCCGGAGGGCCGGCCTCATTCATACCCTGGAGACGCAGAGCAGCATACTGGAAAATGCAGTGAATATTTTAAACAACCGCTGGCGTTACCGGGAATGGGTAAGCTCTTCCACATCCTTCATTCCGCCGACTGTCTTCATTATCCCGTTACTGAGCGTGCTCTGTT [...]
+GGTTGTGTTGTGACAGAGATAAAATGGACAGTATAAATTCTCCTTACGGGCAGCGGTGCCCGAAAAATAAGCCTTCTGTTATTAAATGCGGGTAAATAATCTGCCGCTCTGCGGATAATGTGTTCATTTTCAGCACAGACTTAACAGTGTAAAAATGATTACACCACCAAAGGAAAAGACCATTGGGATATTGTTCTCCTGTTGTGTCGATGTCAGTGTTAATAGTGGTGTTGCGAGGGCGTAAAAAACAATACCTGACGTATAGATGAAATAAGGTGTGAGACCGGACAGATGACATACGCTGGCGCATGTCAGAAGCGTGATGGCAACTAACGATAACATAATCACACTTGTCTTCCATTCGACGAACGGATTAAGGGAAATAATATCACCATCCTGTTTATAATTCGTGTTCAGTTTCAGGAATTTATGGATATCTTTCAGTGTGTTCAGTTTTTGCTGAATCTCTTCCACACGTTCCGGGCAGTTGCT [...]
+NODE	2942	23	1912	1840	0	0
+GCGCTGCGCTTCCATACGAATGC
+GGGAATATCCGCACACTCATGAC
+NODE	2943	20	26	26	0	0
+GAAATTGAGAGATTTCTTCT
+CCCGGCCTGGAGGCAACGTA
+NODE	2944	492	25946	25889	0	0
+TCACTGACGGAAGTCGAACTTATCGGGATGAATCAGGGATGTCCATGTCCCTGGCCGGAGATGACCTACGGTTGTTCAAATTCGTTCCCGATGAATTTGTCGTTCACTTGCCGCGTTACTCGGCCTGCGGCCTCGCCTCTACGGGCCAGCGCAAGCACTGGTCAAGGCACAAGCGCCTTGTCATGCAACTCGAATTATTTAGGGTTAAGAGGATTGCGTAATGATTAATAAAATTTTTGCCCTCCCGGTTATCGAACAGCTTACCCCTGTCCTTTCCCGTCGTCAGCTTGATGACCTGGATCTGATCGTCGTTGACCATCCGCAGGTTAAAGCCTCTTTTGCATTACAGGGCGCGCACCTTCTCTCCTGGAAACCCGTTGGCGAGGAAGAGGTATTGTGGCTCAGTAATAATACGCCTTTCAAAACCGGCGTGGCGCTACGCGGCGGTGTACCGATCTGCTGGCCCTGGTTTGGACCTGCGGCTCAACAGGG
+GCGTAGCGCCACGCCGGTTTTGAAAGGCGTATTATTACTGAGCCACAATACCTCTTCCTCGCCAACGGGTTTCCAGGAGAGAAGGTGCGCGCCCTGTAATGCAAAAGAGGCTTTAACCTGCGGATGGTCAACGACGATCAGATCCAGGTCATCAAGCTGACGACGGGAAAGGACAGGGGTAAGCTGTTCGATAACCGGGAGGGCAAAAATTTTATTAATCATTACGCAATCCTCTTAACCCTAAATAATTCGAGTTGCATGACAAGGCGCTTGTGCCTTGACCAGTGCTTGCGCTGGCCCGTAGAGGCGAGGCCGCAGGCCGAGTAACGCGGCAAGTGAACGACAAATTCATCGGGAACGAATTTGAACAACCGTAGGTCATCTCCGGCCAGGGACATGGACATCCCTGATTCATCCCGATAAGTTCGACTTCCGTCAGTGATTCGGGTGAGAAAGCATAGCCAACACACCTGCAACTTGAAGTATGACGGG
+NODE	2945	48	2070	2070	0	0
+GCCCACAGCAGGAGCGAGCCTTCATGACCGCCCCATACCGCCGCCAGT
+TGCTTCTTTCGGGGTGGACGGCGCTATTCGCCTGGCGCTCCCGGCATG
+NODE	2946	46	108	108	0	0
+GGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGGATAACTACTGG
+CCCGCCACTCGTCAGCAAAGCAGCAAGCTGCTTCCTGTTACCGTTC
+NODE	2947	29	1402	1402	0	0
+GCCGATGGCGGCGTATGAGCTGGTCAGCG
+TTGATGGCAATCGAGTCGACGCCGGTTTC
+NODE	2948	32	1221	1128	0	0
+TAACCGGCATAAACTCTATCGTGCGGGGATCA
+ACCTTCACATCCTGACGTGCCCGGATGGACTC
+NODE	2949	98	3899	3899	0	0
+ATTGACTCGCTGCGCTCGCCCTTCGGGCAGTCTCCTCGCAAGCTCGTCGTCTGTCCAACTGGCTGCGCCAGTTGTCGAACCCCGGTCGGTGGTTCTCA
+GACGAGCTTGCGAGGAGACTGCCCGAAGGGCGAGCGCAGCGAGTCAATCCCCCCTCACCGCCATATTTAAGTTGAGAGCCTGTACAGAAGTACGGGCT
+NODE	2950	37	796	796	0	0
+TGAAGTATGGCCCCGCTGTTGTCGCGGCCTACAAGCC
+GTCTGGAAGAATAATATCAGCGATGCACTGGTTTTTG
+NODE	2951	51	2038	1361	0	0
+TGTAATGATATTCTGTACTGCCGCCAGCCAGCGGGCGGTTTCAGAACGCTC
+ACCTACACTACCGATGGCATCGTCCCCGGACCATACGTTAATAACCCATGG
+NODE	2952	60	1917	1617	0	0
+GGCCAGCGGCAGCACCCACAGCAGCACCGTCAGCGGGGTCAGCGGCGGGTCGTAGGTGAC
+GCCGCTGGCCGCCATCGTGGCGGGCGGGTGGATAATCGTCGCCCGCACGCGCCGGCGGGT
+NODE	2953	51	2675	2675	0	0
+ACCGCGGTAAGGCGGTATCTGAAGTCGCAAAACGCGATCCGGGCTATTTAC
+TATTTACCGAACGGGAAAGTGGTTAACAGCGCAGGGCGGCCCGTGATATTG
+NODE	2954	120	554	503	0	0
+CCAGCGCCCACGGCAGATAGGGACCAAAATGTCTCACGACGTTTTAAACCCAGCTCACGTACCACTTTAAATGGCGAACAGCCATTTAAAGTGGTACGTGAGCTGGGTTTAAAACGTCGT
+TTAAAGTGGTACGTGAGCTGGGTTTAAAACGTCGTGAGACATTTTGGTCCCTATCTGCCGTGGGCGCTGGAATTTTAGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTG
+NODE	2955	84	2621	2517	0	0
+TGATTCCAGCCCCACTTTGTTCGATACGCGGGCTGCCATCGGCACCGCCGACACCCCCGCCGAACCGATAAGCGGGTTGATTTT
+AGCCCGCGTATCGAACAAAGTGGGGCTGGAATCAGACCCGCAGAACTTCCTGCTGATGCACGCGATGGGGCCGAACGTGGCGGG
+NODE	2956	15	150	150	0	0
+AGGGCGGCAGGATGA
+GTTTATGAAGAGGTG
+NODE	2957	15	142	142	0	0
+ATGACTGTCCACGAC
+GCTTACACTGACGGG
+NODE	2958	8	40	40	0	0
+GCTATACC
+CCCCGCCA
+NODE	2959	58	2968	1987	0	0
+TTTTGTTTTATCTGTAGTCTGCCGGTGAGCACTCGTTGCGCAGCAACGGCCCGTAGGG
+AAACAAAAGGCCCTGTCTTCCGACAGGGCCCTTCGTTTTATTTGATGCCTGGCAGTTC
+NODE	2960	231	11136	11057	0	0
+TCGACAACCCCTTCCTGCATACCACCACTTTTGGCGGTAATCCGCTGGCTTGTGCTGCCGCGCTGGCGACCATTAACGTCCTGCTGGAGCAAAATCTCCCGGCCCAGGCGGAACAAAAAGGCGATACGCTCCTGGATGGTTTTCGACAACTTGCGCGTGAGTATCCCAATCTGGTACACGATGCGCGCGGCAAAGGTATGTTGATGGCCATTGAATTTGTCGACAACGAAA
+TCGTGTACCAGATTGGGATACTCACGCGCAAGTTGTCGAAAACCATCCAGGAGCGTATCGCCTTTTTGTTCCGCCTGGGCCGGGAGATTTTGCTCCAGCAGGACGTTAATGGTCGCCAGCGCGGCAGCACAAGCCAGCGGATTACCGCCAAAAGTGGTGGTATGCAGGAAGGGGTTGTCGAACAGAACCGAAAACACCTCTTCAGTCGCGATGGTGGCGCCAATCGGCATC
+NODE	2961	2092	140063	139216	0	0
+ATCGGCTGACTCTGGGGCGCTACCCTGATATGAGTCTCAGAGAGGCCCGTTCTTCGCGTGATAAATGTCGTCAGTGGTTGGCCTCTGGTAAAGACCCAAAGCACCAGTTGGCGCTCACTACTCAGGAAACGCTTAAACCAGTCACGGTGCAGGAAGCTATCGAATACTGGATACGCGAATATGCGGAAGAAAACCGCGCGAACGTTGAGCGGCATAAAGCGGAGCTACGCAAACATATTTACCCTTACATTGGGAAAATGGCGCTCGCTGACTGCGAAACCCGATACTGGCTTGACTGCTTTGACAGAATGAAAAAGAAGACGCCAGTTGCTGCGGGTTATGTATTCCAGATGTGTAAGCAGGCTCTGAAATTCTGCCGCGTTCGCCGTTACGCCGTCAGTACCGCCCTTGAAGATTTGAGTATTCCCGATGTTGGTAAAAAGCAGGCGAAAAAAGATCGGGTATTGAAAGATAAAGAGGTTGGGAGATTGT [...]
+ATTCAGAAGGACACTTTCCTAACTGTTCTTGTGTTGTGGAGGAATATTGATATCTACATCATCTTACTGATACAGAGGAAAAAAATTCATTTCCTACGCCTATTTTTTTGCTCAATCAACCTCTCCCGAATTTCTCTCTCAAACTTTTCCAACGAAAAATTTGCAAGATTTTTTTCGAAAAAAGGCCGAATAGTTTCACAGAGTTTCTTTTCTCCGACTGATAGATCAGGGAAAATCGAACCGGCAATAACACTACTGCTTATCCTGTTTCCTGTAATTTTTTGCCAGCAGAACAGGTCAGCATAGGGGAAGATTCCATAACTTATTATCTTCCTTCTGGCTACTTCCCAAGAATTTATTGATAGTTCATTATTTGGGTCTGGAATATTTAAGGAATTTCGCCATAATGAAAGCAAAGATGATAAATCTTCAATTAAAAATTCATCAGGATAACGTAAGTCCAATTTAACAAAAAAATCATCCCCGAAATTA [...]
+NODE	2962	19	548	548	0	0
+TTTCAGCATCATCTCCCAG
+TGATAGAGCGCAGTATCCG
+NODE	2963	190	7956	7902	0	0
+AGACAATAATACCAGCGATAACGGCGCCGAGGATGCCGGTATCGATAGAGGGGATGCCCAGAATATTTTGTACGTTATTGGCTTTCAGCACCGCCGCATCGGTGGTCGGCAGAATGCCTTTTGCCGTGAGCCAGAAGTTGACTGCAAGGTTCATGACCGCATAACCGACGAACCCGGCAAACGCGGCGAC
+CAACTTCTGGCTCACGGCAAAAGGCATTCTGCCGACCACCGATGCGGCGGTGCTGAAAGCCAATAACGTACAAAATATTCTGGGCATCCCCTCTATCGATACCGGCATCCTCGGCGCCGTTATCGCTGGTATTATTGTCTGGATGCTGCATGAACGGTTTCATACCATTCGTTTGCCGGATGCGCTGGCC
+NODE	2964	51	207	207	0	0
+GAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCACG
+CCCGCGGCTGCTGGCACGGAGTTAGCCGGTGCTTCTTCTGCGGGTAACGTC
+NODE	2965	16	587	484	0	0
+TGATCAACCTGCTGTT
+ACCCGCCAGCGCAAAA
+NODE	2966	3	117	6	0	0
+AGC
+CCT
+NODE	2967	51	87	87	0	0
+TCATCACTCAATATTGATATTATTTACGGCATTCCCGGCCAGACTCACGCA
+AAAAATGCCCCGCCTTTAGCCACTCCAGCGCCTGGTGCGCGCTGGCGGCAT
+NODE	2968	49	3626	3626	0	0
+ACCCGATGCTGATATCCTTGCAAAATCCAGCCAGTCGTCCTCTTTTCGA
+TTGCTCTTGCCATACTATTGCTTATACCGCTATTCAGGTTGCCTATTCC
+NODE	2969	47	1440	1358	0	0
+GTATTTCCCGCCACAATTCCTGTGCCGAAGGTGGTGTTCAGGGTATA
+TATTCTGCTGAATAATCAAATGGATGATTTTTCTGCTAAACCCGGTG
+NODE	2970	106	218	218	0	0
+GTTAGTGGGTTTAGACCGTCGTGAGACAGGTTAGGATTACTGTCGCGACAACCAATTCATCAGTAGGGTAAAACTAACCTGTCTCACGACGGTCTAAACCCAGCTC
+ATTGGTTGTCGCGACAGTAATCCTAACCTGTCTCACGACGGTCTAAACCCACTAACAGGGAACGTGAGCTGGGTTTAGACCGTCGTGAGACAGGTTAGTTTTACCC
+NODE	2971	31	1679	229	0	0
+CATACTGAGCGCCCAGCAGCATGTTCCACGG
+CGTTACCACCGAGTTTGGCTTTGCCGAGCGC
+NODE	2972	2	179	179	0	0
+TC
+CG
+NODE	2973	100	4552	4212	0	0
+ACGGTAAACGGCATATCAGCGGGCTGGTCACGGCGGCGCGGGTAGTCGGTCATGAAGGGCGTTCGGTTACCTATGAGCTGCGTATGGAGCCGTGGGTAAA
+ACCGACTACCCGCGCCGCCGTGACCAGCCCGCTGATATGCCGTTTACCGTCACCATCCAGTTCGATGTTGACGCACAGATCTTTGCCCACCATCGGTTTG
+NODE	2974	112	363	363	0	0
+CGGAACCCAAAGACTTTGATTTCTCCTAAGGTGCGGATGAAGTCGTTAAAAATCAACAATCACCCATCCCTAGTTGGCATAGTTTATGGTTGAGACTACGACGGTATCTGAT
+TGATTGTTGATTTTTAACGACTTCATCCGCACCTTAGGAGAAATCAAAGTCTTTGGGTTCCGGGTTGAGACTACGACGGTATCTGATCGTCTTCGATCCCCCAACTTTCGTT
+NODE	2975	40	134	134	0	0
+GGGGGATCGAAGACGATCAGATACCGTCGTAGTCTCAACC
+CTTGATTAATGAAAGCATTTACCAAGGATGTTTTCATTAA
+NODE	2976	25	180	180	0	0
+ATAAACTATGCCAACTAGGGATGGG
+CGTCTTCGATCCCCCAACTTTCGTT
+NODE	2977	1	40	38	0	0
+T
+A
+NODE	2978	51	69	69	0	0
+TTTGGTTTCCTTCATTGGGAGTTGATCGCGAGCCTTCACCGGACCATTCAA
+ACACAATCCCGAGCCTTCACCGGACCATTCAATCGGTAGGTGCGACGGGCG
+NODE	2979	106	130	130	0	0
+GGATTAACGCCGTAGTCGCCGTCTGGGCTGCGCCAGCGGGGAGCGCGTCCGATTTCACGCAAAATGCGCATTCATTTCGCGCTCAGGCATTGGGACAAACGCTGGG
+GAAATCGGACGCGCTCCCCGCTGGCGCAGCCCAGACGGCGACTACGGCGTTAATCCCCACCAGGAACAGAAAGCCGCTGTGCTCTGCTTTTTGCACGCCTGAAGGC
+NODE	2980	51	2370	2370	0	0
+ACCCGGCGCAACGCTGGACGCACGCCTGCATTTTCCGCTACGCGGCAACGT
+TTTATCCAAATCGATCTCGTGATACCAGATGTTTTCATCGCGAAGGGTATT
+NODE	2981	8	262	262	0	0
+ACCAGCCA
+GCCCGCCC
+NODE	2982	14	1182	1085	0	0
+TTCTGCATCGCTGA
+CTCAGGGTATAATC
+NODE	2983	64	2332	2317	0	0
+TAAGCGGGTGAAGTCGTCCACGACGGGAACGGCGCGCGGTGCGGGCGCGGCGACGGGTTCCGGG
+ACTTCACCCGCTTAAAGCCGGTGATTGCCGCCGCTATCCACCACCATCGCCGCCTTAACCCTTA
+NODE	2984	51	63	63	0	0
+GAGAAGCGAGTAATCACGGCAGACATGCCGCGAATAGCAAAGATGAGCAGG
+CCCCGGAACCCGTCGCCGCGCCCGCACCGCGCGCCGTTCCCGTCGTGGACG
+NODE	2985	117	326	326	0	0
+TAAAAATAAGGGTTGCGCTCGTTGCGGGACTTAACCCAACATCTCACGACACGAGCTGACGACAGCCATGCACCACCTGTGTATACGTTCCAAACGGCACTTTCTTCTTTCAAAGAA
+GGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCTTATTTTTAGTTGCCTTTTGGAACTCTAAAAAGACTGCCGGTTATAAACCGGAGGAAGG
+NODE	2986	15	1418	702	0	0
+TCCACCGGGTAGGGG
+GGCAGGTGCAGTACG
+NODE	2987	20	837	816	0	0
+ACTCATACGGGCGGATCGGC
+TGAAAGGGATCGACAACAAC
+NODE	2988	6	352	352	0	0
+TAAGTC
+ACCGTT
+NODE	2989	126	448	448	0	0
+GTCAATTCCTTTGAGTTTTAGTCTTGCGACCGTAGTCCTCAGGCGGCACACTTATCGTGTTAACTGGGGCTCTGAAGGGGTCGATTCCTCCAAAACCTAGTGTGCACCGTTTAGGGCGCGGACTAC
+TTCAGAGCCCCAGTTAACACGATAAGTGTGCCGCCTGAGGACTACGGTCGCAAGACTAAAACTCAAAGGAATTGACGGGGTCGATTCCTCCAAAACCTAGTGTGCACCGTTTAGGGCGCGGACTAC
+NODE	2990	65	2365	1340	0	0
+GGCGATGACAATGTGATCCCGCCCGATGATAGCGGCGATGACGATGTGACCCCGCCCGATGATAG
+CACATTGTCATCGCCGCCATCGTCGGGCGGGGTAACGTCGCCGCCATTATCGGGCGTAGGGGGGG
+NODE	2991	404	23972	23882	0	0
+AGCCGAGTGAAGTCGATTACAACGTAGGCTATACCTCCATCGCCTCTGGCGATGCGACGTTTACCGCCGTGAACTGGCAGCCGCTGCATGATGATATGTATGCCGCAGCAGGCGGAGACAACAAGTTTTATCGCGAGGGCGTCTTTGTTTCCGGCGCTGCGCAGGGCTATCTGATCGATAAAAAAACCGCCGAGCAGTACAACATCACCAATATCGCTCAGCTAAAAGATCCGAAAATCGCCAAAATCTTCGATACCAATGGCGACGGAAAAGCGGACATGATGGGCTGCTCGCCGGGCTGGGGCTGCGAAGCCGTGATCAATCACCAGAATAAAGCGTTTGATCTGCAAAAAACCGTTGAGGTCAGCCACGGTAACTATGCGGCGATGATGGCTGATACCATT
+TTTTTTGCAGATCAAACGCTTTATTCTGGTGATTGATCACGGCTTCGCAGCCCCAGCCCGGCGAGCAGCCCATCATGTCCGCTTTTCCGTCGCCATTGGTATCGAAGATTTTGGCGATTTTCGGATCTTTTAGCTGAGCGATATTGGTGATGTTGTACTGCTCGGCGGTTTTTTTATCGATCAGATAGCCCTGCGCAGCGCCGGAAACAAAGACGCCCTCGCGATAAAACTTGTTGTCTCCGCCTGCTGCGGCATACATATCATCATGCAGCGGCTGCCAGTTCACGGCGGTAAACGTCGCATCGCCAGAGGCGATGGAGGTATAGCCTACGTTGTAATCGACTTCACTCGGCTTATTTACGGTATAACCCAACTTTTCCAGCGCCCGGCTGACCAGTAACGTC
+NODE	2992	51	88	88	0	0
+TGTGCTGTATTACACCTGGACCCCGTACTGGGTGAGCGACGTAATGAAGCC
+AGGCTTGCCTTCTTTAAAACGGGTAATGGTATCAGCCATCATCGCCGCATA
+NODE	2993	8	286	286	0	0
+TTGCTGGA
+ATCCGGGT
+NODE	2994	39	59	59	0	0
+ATGTCACCCCCTATTGCGAAGAGGGCGATTTTGGCGTGT
+CGGATATCGTTTTGCCGGCTACCACCCAATTTGAGCGTA
+NODE	2995	16	371	371	0	0
+TTCCGGGAAGAAGCGA
+CCGTGGACGACTTCAC
+NODE	2996	29	148	148	0	0
+AGCGGGAAAAGCTCAAACTGAAAATCCGT
+ATCCTTGTTAGTTTCTTTTCCTCCCCTTA
+NODE	2997	51	68	68	0	0
+CACTAGGGGAATCCTTGTTAGTTTCTTTTCCTCCCCTTATTAATATGCTTA
+GACGGATTTTCAGTTTGAGCTTTTCCCGCTTCACTCGCCGTTACTAGGGGA
+NODE	2998	61	140	140	0	0
+GGGTTTTCACACCTGAATTTAAGCATATTAATAAGGGGAGGAAAAGAAACTAACAAGGATT
+TGTGAAAACCCCCTGAATTTAAGCATATTAATAAGGGGAGGAAAAGAAACTAACAAGGATT
+NODE	2999	8	85	85	0	0
+CCCCTAGT
+AATTCAGG
+NODE	3000	51	70	70	0	0
+GATCAAATGACACCAGCGGCCCGACAAACCAGACCAGCAGCGCCAGAACCA
+CCCCTGCGCCCGCTGGCCTCCGTGGGTAGCCGGGTAGTGACCATTGCCCTG
+NODE	3001	863	40975	40684	0	0
+AATCCCCTGGAGCATAGATAACGATGTGACCGGAGTTTCTGAGCGCAGCCAACAAAGAGGCAGCTTAAAGGATGAAGTGTATAAAAACGGCCTCCGAAGAGGCCGCCGCACGTTTAAAAGATTAAAGCGCTTTCAGAATTGCATCCACGCTGGCTTTGGCATCGCCAAACAGCATTTGCGTATTCTCTTTAAAGAACAGCGGGTTCTGCACACCAGCATAACCGGTATTCATTGAACGCTTAAAGACCACGACATTCTGTGCTTTCCACACTTCGAGAACCGGCATACCGGCGATCGGGCTGCGGGGATCGTCTTGCGCCGCCGGGTTCACCGTATCGTTCGCGCCAATCACCAGCACGGTATCGGTATCGGCGAAATCATCATTGATTTCGTCCATTTCCAGCACGATGTCATAAGGCACTTTCGCCTCCGCCAACAGCACGTTCATATGCCCCGGCAGGCGACCCGCCACCGGATGAATGCCGAAACGCA [...]
+GCTTCATGTTGAGCAACGATTTGCTGATTGTGACCGGCGCGCTGGTCGGTTCGTCAGGCGCGATCCTGTCTTACATTATGTGTAAAGCGATGAACCGCTCTTTCATCAGCGTTATTGCTGGTGGGTTCGGTACTGACGGCTCCTCAACAGGCGACGATCAGGAAGCTGGCGAACATCGCGAAATCACAGCGGAAGAGACCGCTGAGATGCTGAAAAACTCCCACTCCGTCATTATTACGCCGGGGTACGGGATGGCGGTGGCGCAGGCGCAGTATCCGGTGGCGGAAATCACCGAAAAACTGCGTGCACGCGGTATCAACGTGCGTTTCGGCATTCATCCGGTGGCGGGTCGCCTGCCGGGGCATATGAACGTGCTGTTGGCGGAGGCGAAAGTGCCTTATGACATCGTGCTGGAAATGGACGAAATCAATGATGATTTCGCCGATACCGATACCGTGCTGGTGATTGGCGCGAACGATACGGTGAACCCGG [...]
+NODE	3002	51	1764	412	0	0
+ACCGGCATGTCCGCCCCGCCGATAGAGGCGACCAGATGCCAACCAAACGCC
+TGGTTGTTTCAATGCTGAACTCCTATTCCGGTTGGGCTGCCGCTGCGGCTG
+NODE	3003	39	1873	1388	0	0
+ACCGCCACTAACACGATAACGTTGCGTGAAAACCATGTT
+TGTAGAGTGTGAAGTATGTGAATCAGGGGGGCTAATCCA
+NODE	3004	51	124	124	0	0
+GATTCGTTGGGCGCGGGGCATGGTGCAAATTTTCCGCCTCGATAACCCTCT
+CCGCTGCCCGATATGCGCCGACAGGCTTTCCGTCGCCAGCCCCGCCGCCTG
+NODE	3005	51	112	112	0	0
+GAACCTGCAAGTGACTGATTTTTTTCTTGTTTTACATTAAGAGATGGCATG
+CCTCACTGCCGCCCGCCAACAGTCATGAAATCGATTTGTTTAGCCTTATAG
+NODE	3006	43	2154	2154	0	0
+TCATAAATCTGTCATAAATCTGACGCATAATGGCGCGGCATTG
+AGGCGGCATTGACAGCATGTTGATGATTTATGACACCGGTGAA
+NODE	3007	26	1427	1317	0	0
+TGGCGGGAAAGTGGTTTTCCATAAAT
+ATGACGCACAGATCGACCGGTGATAA
+NODE	3008	5	366	349	0	0
+TTCAA
+AGTAA
+NODE	3009	10	997	954	0	0
+ATCTGCTCCC
+GGATGGGCCG
+NODE	3010	37	1332	1123	0	0
+TGTTCACGTGGAACCTTTCTCCACTTCAGTCTTCAAA
+GGTTAGTCGATCCTAAGAGATAGGAGAAATCCGTTGC
+NODE	3011	46	264	240	0	0
+TGAGAACTTTGAAGACTGAAGTGGAGAAAGGTTCCACGTGAACAGC
+AAGACTGAAGTGGAGAAAGGTTCCACGTGAACAGCATTTGGACGTG
+NODE	3012	51	2053	1165	0	0
+GAATATTCGCCCAGGCTGTGACCTGCCATTAACGCAGGCATTTTACCGCCC
+CCGCGCTGGTTTGCGCTGGCGTCATCAACTTTGCTGATGCCGTTCGTCTGG
+NODE	3013	51	2151	2109	0	0
+ACCAGGCCCGCCAGGCGCGTATTACCCGCCTGCCCGGCGACCATAATGAGA
+TCTTCATCAAATCGTTTAATCGTGGTGTGGACAAAACTGAGGTGCGCCATC
+NODE	3014	151	6152	5850	0	0
+TCTTGTCGCCGGATTTGACTACCTGGCCGCTGCCGCTGATAGCGTTGGTAAAGTCACCGCCGGTGTTCAGTTCCAGCACGGCGTTGTCGGTGACGTCACCACTGCCCAGCGCCTCAACGTTGGTGGCGACCAGCGTGCCGCCGCTGATGGT
+TGGTGACGTCACCGACAACGCCGTGCTGGAACTGAACACCGGCGGTGACTTTACCAACGCTATCAGCGGCAGCGGCCAGGTAGTCAAATCCGGCGACAAGACGCTCACGCTCTCCGGCGCCAATTCTTACACCGGCGGCACCACCATCAGC
+NODE	3015	34	1795	1660	0	0
+TAAAAGCAAAAACCCGCCAGCTTACACTGACGGG
+ATGACTGTCCACGACGCTATGTCCAAAAGAAAGC
+NODE	3016	17	897	186	0	0
+ACCGGGCGGCAGGATGA
+TTTTATGAAGAGGTGAA
+NODE	3017	33	117	117	0	0
+ATCTGCTAAAATATCGTATTTATCAGCTTGCAT
+TGCTTTAAATCTTAATTTTAATGAAGTTTATAA
+NODE	3018	100	294	294	0	0
+ATAAGGAGTATAGAATTCTACTCTTTCAGCTCCCCAATTTCCTAATTTAAATGCAAGCTGATAAATACGATATTTTAGCAGATGGAGAAGATTCATGTGC
+TTAAATTAGGAAATTGGGGAGCTGAAAGAGTAGAATTCTATACTCCTTATATGCAAGCTGATAAATACGATATTTTAGCAGATGGAGAAGATTCATGTGC
+NODE	3019	51	55	55	0	0
+GGAAGCGCCAGTTGCCGCTTTGATCTACCGTGGCGGAACCGATTTCTACGC
+CCCCCGAACGCGCCGCTGGAGAGCAACGCGCACATCTTTACCGCCGTAGCG
+NODE	3020	51	2517	986	0	0
+ACCTTCCGTTAACGCCGCATGTCAAACGTTACCGGGGCGTGGATTAGGGGA
+TGGTGCTGTCTGTGGGTATTTTTCATCGGGCGTAATATAAACCTGACTCGT
+NODE	3021	51	72	72	0	0
+GTATCCGGAAACTCGCCATAAGCCAGCAGGTTCATGCTCGATAACCCGCCG
+CCCCTAACGATTATTCCGCCAGTAATCTTCTGCTTCCGCGTGGGGCTATCA
+NODE	3022	47	1131	1131	0	0
+GCCTCGATAGCCTTCAGCAGGGCCATCTCCGCCATCCCGGTGGTGGC
+TGTTGACGGCGTGGACACGGCAATTTCCTCCATGAGCGCCACCTACG
+NODE	3023	48	1289	1273	0	0
+CATTGCCGAAAAAACTTACCCTGGCGTATCACCTTCCTGTAGAGCTGC
+GTTTCATCAACGTCCTGCCATTGCGGGATTGTCCAGCCGGGTAGCAGC
+NODE	3024	48	48	48	0	0
+AATGAAAGCGTAATAAACGCCACAATCGGTTAATTTGTTTTATATGCT
+CTTTCATTCGGTTGTTTCGTTAAGTCAGTAAAACGAGAAGCCACGATG
+NODE	3025	101	676	676	0	0
+CCATCGCTCAAAGGATAAAAGGTACGCCGGGGATAACAGGCTGATCGCCGCCCCTTCCATACAGAACCACCGGATCACTATGCTCTACTTTCGTACCTGAT
+GCGGCGATCAGCCTGTTATCCCCGGCGTACCTTTTATCCTTTGAGCGATGGCCCTTCCATACAGAACCACCGGATCACTATGCTCTACTTTCGTACCTGAT
+NODE	3026	51	2479	1742	0	0
+TTACGCTGACGTGACGGGCTGGAATCACGCGGCAGAGTCTGCAGCTTAAGA
+ACCGCTGCCGTCAAACTGGTCGTCCGCACGCTTTCCTGCGGAAGTTCGGGT
+NODE	3027	1	84	84	0	0
+C
+T
+NODE	3028	73	3172	3058	0	0
+GTGCGAGCAATATCAACGTGGTTTTGGTGCGAGGGGGGGGACTTGAACCCCCACGTCCGTAAGGACACTAACA
+AACCACGTTGATATTGCTCGCACTGGGCGAAGGTGGCGGAATTGGTAGACGCGCTAGCTTCAGGTGTTAGTGT
+NODE	3029	1	7	7	0	0
+G
+G
+NODE	3030	962	53671	53185	0	0
+CCGGCTTGGTATCGGAATCCCAGGTTAATATTTTCACGCCTCTTTGCATTGCCCGCTTCAACGCCGGGCACAGGCCATCAGGCGAAACGGCAGAAACGATAATGGCGTCATACCCCTGATTGACAAAGTTATTCACCAGTTGAACCTGGCCTGAGACGCTGGGCTCTGTAGGGCCATCGTAAGTTACGTCAATGCCCAGCGCTTTTCCCGCTTCCTGCGCGCCATTGCCGCCGCTGGTAAAAAAGCCCACGCCAACCAGTTTGGGAATAAAAGCAATCCGCTCTGCCGCCTGCACGGTCATTACCGCAGATGCCAGACCAAACGCAGTGAGTAAGGCGATCATTTTAATGCTGTGTCTTGCCATTTTTTTCTCCATAAATTTCAAAAGGAAATCATGCCTGATGCGCATTGCGACGGCGTGAGTACCATTCAAGGATTTGGTGACGATGCAAACTGACGGAACGACCAACGACAACAACAATGAGAAGCGCA [...]
+TTCATTTCTTGGTATTCCCATGCCGCTTATTTTTTTTCTTGTGTGCTGTCTGTTTTTCTGGCTGCTCATGCATCGCACGCATATGGGACGCAACGTTTTCCTGATTGGCCAGAGCGCCCGTGTCGCGCAGTACAGCGCGATCCCGGTGAATCGCACGTTGTATACCGTGTATGCCATGACCGGATGCGCCTCCGCGATCGCCGCCGTATTACTGGTTTCTTACTTTGGCTCCGCACGTTCGGATCTGGGCGCCTCTTTCCTGATGCCGGCTATTACGGCGGTTGTGCTGGGAGGCGCCAATATTTATGGCGGCTCCGGGTCGATTATGGGGTCCGCGTTGGCGGCGCTGCTGGTGGGATTTTTACAGCAGGGGCTACAGATGGCCGGAGTGCCGAATCAAATTTCCAGCGCATTGTCCGGTGCGCTTCTCATTGTTGTTGTCGTTGGTCGTTCCGTCAGTTTGCATCGTCACCAAATCCTTGAATGGTACTC [...]
+NODE	3031	22	871	742	0	0
+GGTGCTGTATTACACCTGGACC
+TATCAGCCATCATCGCCGCATA
+NODE	3032	51	2312	2310	0	0
+ACGGTGGCGACGGGCGGCTGCTATTTGACCCCCGATATTGCCGTGAAACTG
+TATGCACCGCGGCGATCAGCTCATCCGGACTACAGCGTTTAGAGAGAAAAC
+NODE	3033	170	241	241	0	0
+TCGCCAAGATAGGAAAAGCAGCAGGTGACCCAGAAGAGAACACCGAACCACCAGACCACAAAAGGCGCACCTAAGACCACGCGAAGCAGGACTGGTCGCCCACGCTTTCCTCTTAACAACTTCAAGTACTTTTTAACTCTCTTTTCAAAGTTCTTGAAGTTGTTAAGAGG
+GTTGTTAAGAGGAAAGCGTGGGCGACCAGTCCTGCTTCGCGTGGTCTTAGGTGCGCCTTTTGTGGTCTGGTGGTTCGGTGTTCTCTTCTGGGTCACCTGCTGCTTTTCCTATCTTGGCGAGCCGAACTACCTCACGGTACTTGTACGCTATCGGTCTCCCCGCAGTATTT
+NODE	3034	1	103	103	0	0
+A
+C
+NODE	3035	7	192	192	0	0
+ACCCAGG
+TCAAGCT
+NODE	3036	7	231	231	0	0
+TCCCGGA
+GAGCAGG
+NODE	3037	51	2995	2389	0	0
+GCCGCCGCTATTCGCGCTACCTTTGGCAATATGGGGATGAACGACGAAGAA
+CGGCAGAAAGTGGTTCGCCGCTGTGATCCGGCCCTTCCGGGTTAACGTAGA
+NODE	3038	51	1832	433	0	0
+ACTCCAGACCCGCCTTTACAGCAACGATCAGACCAAGTCGGTTGATGTAAA
+TGATTTATGGACCAGGCCCTTACCCGGCATGAAATCCAGCTTCATAGTCGA
+NODE	3039	166	10109	10052	0	0
+ACTGTTGAATGCTCCACAACTTATCAACGTCCTGGATCCCACCAAAACCATTGATATGGAAGTGACTCTGGGAGGACGGTCACTGACCACCACCAATTCTGTACTGGAAGCTAAAACCCTGTTCCCGGACGGAAAAACTGGCGATGCTTCAGCTCTGCTGAACCTG
+TTTTAGCTTCCAGTACAGAATTGGTGGTGGTCAGTGACCGTCCTCCCAGAGTCACTTCCATATCAATGGTTTTGGTGGGATCCAGGACGTTGATAAGTTGTGGAGCATTCAACAGTTTTACATCAACCGACTTGGTCTGATCGTTGCTGTAAAGGCGGGTCTGGAG
+NODE	3040	51	1269	1269	0	0
+ACGCCTGCCGCCGCGGTCAGCGCCAGCCTCAGCCTGTTTTTAGCTGGCTTT
+TTTGTAAATCCGCCTGTATGGCGGCAAACGCGGGCAGGTACATGTCCGTAG
+NODE	3041	247	507	507	0	0
+CTTCAGTGTATCTTTACCACACATAAATACCATAACTAACCAAATCATGAAGTGAGTGAGCTGTAAGCTCTCGTTCACAAAGTATGCAAGTAGCTGTATTTACATTACTCATTAACCCGATCACCTCGTGTGAACTTGGATAATAGAGGGTAAATATCAGGCGTTTACGCGACTACTTAGCCCCCTCAAACTATTTATGTTATCTGAAGTCAAGCAAGAGCTTACAGCTCACTCACTTCATGATTTG
+TAAATAGTTTGAGGGGGCTAAGTAGTCGCGTAAACGCCTGATATTTACCCTCTATTATCCAAGTTCACACGAGGTGATCGGGTTAATGAGTAATGTAAATACAGCTACTTGCATACTTTGTGAACGAGAGCTTACAGCTCACTCACTTCATGATTTGGTTAGTTATGGTATTTATGTGTGGTAAAGATACACTGAAGCAATCTGCGCCTCCGCCTGGCGAGAGGCTTGTTTGCTTCAGTGTATCTTT
+NODE	3042	9	683	683	0	0
+ATAATACTT
+CCAATACTG
+NODE	3043	2	2	2	0	0
+TC
+CC
+NODE	3044	10	6210	18	0	0
+ATTTTTCGTC
+AGTTTAATTG
+NODE	3045	30	1478	1416	0	0
+ACCCCGGAAGGCGCGCGCGATTACCTGGTA
+TTTCAATATCAAGGAAACCGTGATCGTCCA
+NODE	3046	41	3028	3028	0	0
+TCGGGATCCGCGATCTGGATCCCGATTCAGCCTGCTCTTCG
+GGTTTTCATCTTGATCAAATGTCTTTAAATGTCATATAAAA
+NODE	3047	1	87	87	0	0
+T
+T
+NODE	3048	212	10490	10308	0	0
+AGGCGCCATCGGGCCTGGTTATCCCAATGATACGCTAAAGCCTGAAAGTGAAGCCCGTGTGAAGTATGATGACGAGCATCGTCTCTTATCAGGACATCCTATGAAACAAATCACCTTTACGCCGCGCCATCACCAGCTTACCAACACCAATACCTGGACACCTGACAGCCAGTGGCTGGTCTTTGATGTGCGGCCTTCAGGCGCGTCATTTA
+GGTGTCCAGGTATTGGTGTTGGTAAGCTGGTGATGGCGCGGCGTAAAGGTGATTTGTTTCATAGGATGTCCTGATAAGAGACGATGCTCGTCATCATACTTCACACGGGCTTCACTTTCAGGCTTTAGCGTATCATTGGGATAACCAGGCCCGATGGCGCCTCGCCACCGGGCCGTCAGGGTCTTATTTCTCCTGCGCCAGCCGGATACTGC
+NODE	3049	51	109	109	0	0
+GGGTGCTGTCTGTGGGGATTTTTCATCGGGCGTAATATAAACCTGACTCGT
+CCCTTCCGTTAACGCCGCATGTCAAACGTTACCGGGGCGTGGATTAGGGGA
+NODE	3050	46	46	46	0	0
+CCGCGTCTACCTGGATCCTGTGGACAGTGCTGGGCAGTAACACGCT
+CAGGTTCAGCCGCGCCGCAAGCAGCGTCAGCTTAATCAGAAAGTCC
+NODE	3051	42	1438	1438	0	0
+TGGGCGAGCTGGCTATTGATGTGTTGATTCATCGGATGGCGC
+TTCGGCTGATGGATAGTCGTCAGCGGCGGCGTCATATAGCGC
+NODE	3052	43	52	52	0	0
+TAATTGCTGAAATGTTCTATAGTTAGAGTGATTTTGACTACTA
+CTCAGCGGAACAGATATCTTCCACTACTGGCTCTCTTTGATAT
+NODE	3053	51	2276	2121	0	0
+TAAGAGCGTTATCCAGACAGCAAAACGGCTACCGCCATGGGTAGCCGTTTA
+ACCGCTAAAATACCTGACCCCGCCATCAGACAGGCCTGGTTAACAATATTG
+NODE	3054	8	427	427	0	0
+GCTATACC
+ACCCGCCA
+NODE	3055	18	18	18	0	0
+ACCACTAAACTAGTTTGC
+AGGTGTGACACGCCTCGC
+NODE	3056	39	1932	1846	0	0
+TATGAGACACCAGTTGCTGTGTGAAAGCGTGTTGCGGGT
+ACCCTGCCGGAACGTTTACGGGAACACCTGCCCGGGCAG
+NODE	3057	51	2269	2176	0	0
+GAAAAAAACCATTACCGCCGGCGTAAACAGGCGAGCCAGACGGTGTCCTAA
+CATGCTGCTTTTGGGCGCGCAGCTGACCTCAATATTTTTTAAAGGCATGCT
+NODE	3058	177	566	566	0	0
+GGTTATAATTAATTCCCTGAATACGATCTAATTTCTTAAGAGTAGAAACTCCGGAACCAAGGGTTCCCGTGTTCCCATCGGTTCCGGAGTTTCTACTCTTAAGAAATTAGATCGTATTCAGGGAATCAATACGAGACAGGATGCCTAACTCATTAATGTCTTGTCGATTAATGGTTA
+GATTCCCTGAATACGATCTAATTTCTTAAGAGTAGAAACTCCGGAACCGATGGGAACACGGGAACCCTTGGTTCCGGAGTTTCTACTCTTAAGAAATTAGATCGTATTCAGGGAATTAATTATAACCTAACCATTAATCGACAAGACATTAATGAGTTAGGCATCCTGTCTCGTATT
+NODE	3059	14	1013	1013	0	0
+AACGTTCCTACAGG
+AAATGCATAAAAGC
+NODE	3060	12	981	981	0	0
+TATATTGTCACC
+ATTAATTTACTT
+NODE	3061	39	3824	3824	0	0
+ACCTGTAGGAACGTTGCTCTCTGGTTGCAGTCGATCCGG
+ACCCTACTATCCTCTCAAAACAACATCATTTTGATAACA
+NODE	3062	12	1013	1013	0	0
+ATTACGCAAATT
+TGGTGACAATAT
+NODE	3063	51	97	97	0	0
+TCCGGGCGGCAGGATGAATGACTGTCCACGACGCTATGTCCAAAAGAAAGC
+AAAAAGCAAAACCCCGCCAGCTTACACTGACGGGTTTTATGAAGAGGTGAA
+NODE	3064	47	109	109	0	0
+GAAGGATGGCCCGTACCGAAATTTGGTTACGTTTAATGTACGTCGGC
+TCCCCTGCCACAAGCAGTCTGAACAATCTTTGCGATTGGTCACTGAT
+NODE	3065	20	1371	1335	0	0
+TTGTTGAACCTTCTCAACAT
+ACCTTTGTTTCCCACCAGCA
+NODE	3066	2662	149923	148909	0	0
+AGTATTTCGGTCGGATTTATGTGGATGGCAAACTTTTTAGTTTCGCAATTCTTCCCGATGATTAATGAAAACCCGTATTTACTTTCGCATTTCCACGGCGCATTTCCAATGTGGATATTTGCCATCTGCTGCATCTTCAGTTACTTCTTTATCTGCCGTTACCTGCCGGAAACAAAAGGCATTTCGCTGGAGAAAATGGAGAGCGTAGTGTTAGCAAAACGCAGAAAAAAACTGCAGCCAATTCAAACCGAACGTTATTCTGATTAAGTTTCACCACAATGCCGATGATCGCTAAATACGATCATCGGCTTGTTTTTTTACTCCGTCGCCAGCGCCAGTGAAACCGCTAACGTTTGCGCCAGACACATGGACGCGACCTGAGAACGGAAACCATCGACCTGCGCTTCACGTACCACAAAACAGACTTCACTGAACGCTGCCAGCGGGCTGACCTGGCTATCGGTTATCGCAATATGGTGCGCACCGCGTTTC [...]
+GCGGCGTACCGGGCAACTTTGAGGTTTCCGCGCGCCTGGGCGAGAGCCCGTTCTTTGTTATCGAAGCGGATGAGTACGACTGCGCGTTCTTTGATAAACGTTCTAAATTTGTGCATTACTGCCCGCGGACGCTGATCCTCAACAACCTTGAGTTTGATCATGCCGACATCTTCGACGATCTGAAAGCGATCCAGAAGCAGTTCCACCATCTGGTGCGCATCGTGCCGGGGCAGGGGCGCATCATCTGGCCGGAAAACGACATCAACCTGAAACAGACCATGGCGCTGGGCTGCTGGAGCGAGCAGGAGCTGGTGGGCGAGCAGGGACACTGGCAGGCGAAGAAGCTGACTACGGATGCTTCCGAGTGGGAAGTGTGGCTGGACGGCGAAAAAGTCGGCGATGTGAAATGGGGCCTGGTCGGCGAGCACAATATGCATAATGGGCTGATGGCGATTGCCGCCGCGCGCCACGTGGGCGTCGCGCCCGCAGAAG [...]
+NODE	3067	29	911	911	0	0
+CGGGCGCGCAGCGAACGGGCTGCCCGAAG
+AGTTGTCGAACCCCGGTCGGTGGTTCTCA
+NODE	3068	10	606	606	0	0
+GGCGAGCGCA
+TGGCTGCGCC
+NODE	3069	21	1016	1016	0	0
+GACCTTCGGGTTATGAGCCCG
+CTTAATGAACACCCTTACGGG
+NODE	3070	1	84	84	0	0
+A
+A
+NODE	3071	11	482	482	0	0
+TTACAATGAGA
+TTATGAGCCCG
+NODE	3072	51	78	78	0	0
+GTAAGCATGAGATTAGCGAGAGCATAGAACCACCGCGTAAGCGGCCTCCGC
+CCCCCCCCGGCCTGCCGATCTTTAAGCCGCGCGGTTTCCCAGAACTGGCGC
+NODE	3073	4	11	11	0	0
+GCCT
+ATCA
+NODE	3074	1213	53784	53352	0	0
+TCATTAACGGGCTTTCGGCATCCTGCTGCTGGAGTTCGCGCTGCGGTTTACAGCGGCGCAAAATGGTTTTCACGCGGGCCACGACTTCGCGCGGGCTGTAAGGCTTACAGATATAATCATCGGCGCCGATTTCCAGCCCAAGCAGCCGGTCGATCTCTTCGATTTTGGCCGTGACCATCACAATGGGGATGTCGGAAAAACGGCGAATCTCCCGGCATAGCGTCAGACCATCGGTACCCGGCAGCATCAGATCCAGCAGGATCAGATCCGGTGGCGTTTGACGCACATACGGCAGTACCTTGTCGCCATGATTGATGAGCGTGGGGGCGTAACTCGCCGCGCGTAAGTAGTCAATAAGCAGCTGTCCTAGCTTGGGTTCATCTTCAACAATCAAAATGCGCGGCGTGTTTTCATCAATGGGTAATTCAGTCATACTTCTCTCTGTAAATCGCGATCCAGCGGTAACTCTACTGTAATGCTAACCCCGCCAAA [...]
+CGCAGGACTTTAACCAGCTTGCCAGCACGCTGGAAAAAAACCAGCAGATGCGCCGCGACTTTATGGCGGATATTTCCCACGAACTGCGCACGCCGCTGGCGGTATTGCGCGGCGAACTGGAAGCCATTCAGGATGGCGTTCGCCAGTTCACGCCAGAATCGGTTACCTCGCTACAGGCGGAAGTCGGTACGCTTACCAAACTGGTTGACGACCTGCATCAGCTGTCGTTGTCTGACGAGGGCGCGCTGGCTTACCAAAAAACGACCGTCGATCTTGTTCCCCTGTTGGAAGTCGCTGGCGGCGCGTTCAGAGAGCGCTTTACCAGCCGGGGGCTAACGCTACATTACGCGTTGCCGGATAGTATGACCGTCTTCGGCGACCCGGATCGCCTGATGCAACTGTTTAATAATCTACTGGAAAACAGTCTGCGCTACACCGACAGCGGCGGCGGCCTGCATATTTCCGCCGAACAACGCGACAAATCATTATTCC [...]
+NODE	3075	1	115	115	0	0
+A
+G
+NODE	3076	36	844	844	0	0
+TTCATCTTTCGGCTGATGGATAGTCGTCAGCGGCGG
+AGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAG
+NODE	3077	13	235	235	0	0
+CGTCATATAGCGC
+GGCACTGTTGCAA
+NODE	3078	13	790	21	0	0
+TGGTGACGTTTGC
+TTTGGTTTTAAAG
+NODE	3079	51	2187	2129	0	0
+ACCCGACTCATCACGCTCGACGCTCAGTACCTCGCTACGCAGGCGCATCGT
+TTTCATACTGGCGCTGAACGGCGAGACGGTGACTACGCAAAAGCTGGTGAT
+NODE	3080	44	324	324	0	0
+AGTGCCGATGGCGGCACGCGTATCGAACAAAGTGGGGCTGGAAT
+CCCCCCGCCGAACCGATAAGCGGGTTGATTTTGTTCTTACTGCA
+NODE	3081	51	52	52	0	0
+GTAAGGGGTAAGCTATTGCTGTCGCCAATATAACTGGCGCGCAGGCCGTTC
+CCGGCCCGCTGCCGACGGTAAAATTTATCGTCGAAGACCTTTGCGCCACGG
+NODE	3082	69	2781	2781	0	0
+CAGCAGTTGCTCCGTTAAATCCAGCCAGGTCTGCAGCGTGTGCGCCGGGCTGGTGGTGTAACTCAGGGT
+TTTAACGGAGCAACTGCTGGAAACCGGCGTCGACTCGATTGCCATCAAGGATATGTCCGGCATTCTCAC
+NODE	3083	46	60	60	0	0
+ATTTCGGCAACCTGAACGTGGCGGGATGCCGGTTCGTCAAAGGTAG
+GCCGAAATGGTTATCGAGAAGGCGAAACGTCTGGTTGAACACAAGA
+NODE	3084	51	111	111	0	0
+GTACGCTGACGTGACGGGCTGGAATCACGCGGCAGAGGCTGCAGCTTAAGA
+CCCGCTGCCGTCAAACTGGTCGTCCGCACGCTTTCCTGCGGAAGTTCGGGT
+NODE	3085	83	548	548	0	0
+CAAAACACCATGAGTTGCCCCACAATGCCTCAATCCGTAGAGCTCACTAAGCCATTCAATCGGTAGTAGCGACGGGCGGTGTG
+TTGAGGCATTGTGGGGCAACTCATGGTGTTTTGAGAAGTAGATCAAACTTGATCATTTAGAGGAAGTAAAAGTCGTAACAAGG
+NODE	3086	51	202	202	0	0
+GTTCTTTGTACTGGATGAAGTGCCTGACTGCGAGACGCTATGGATGCTGGC
+CCCCGACGCGTCGCTGACCACTTGCACCTCATCGCCAGGTTTTAGCGCCGC
+NODE	3087	1	56	56	0	0
+A
+A
+NODE	3088	51	71	71	0	0
+GAATGAGGGAAATGATTAGGCGTAACCGTAGCTCATCAAACGCTGGTAACG
+CCTCCCAGGAGGCCGGATAATCCGGCCTCTTTTTTTTGGACGAGGAAAAAT
+NODE	3089	1	71	71	0	0
+G
+G
+NODE	3090	21	451	440	0	0
+TCCGCCTGACGATAGCGGCGA
+CGGGGTTACATCGTCATCGCC
+NODE	3091	51	293	293	0	0
+GTTTTGCAGGCAGCGACCGCAGGGGAGCGAAGGATGCGCGGCGGGTAATCC
+CCCGCCGCTCTGGCAGCGTCTGGTGAGCGTCAGTGACTATACGCCGCCCTT
+NODE	3092	51	71	71	0	0
+TGTCTCGTCGTACGTGTTAGTCAGATGATAGTAGATGGTAAAAGTTATCCT
+AACCGTTATTTCCAAAATAAAATCGTCCCTTTTCCCCCGCAGAGGCTTGCA
+NODE	3093	5	284	284	0	0
+AATCC
+GCCGG
+NODE	3094	46	120	120	0	0
+GGGCGGGCAGGACGCCCGCCATAAACTGCCAGGCATCAGACAAGTG
+CCGGGCCGTTGCTGCGCAACGAGTGCTCACCGACAGACCACAGATA
+NODE	3095	51	132	132	0	0
+GCTGACTCAGGCTTCCCGTAACGCTAACGACGGTATCTCCATTGCGCAGAC
+CCCTTTGATGTTCGCGGTGAAACGGTTAGCAATCGCCTGACCTGCCGCATC
+NODE	3096	1	56	56	0	0
+T
+T
+NODE	3097	1	121	121	0	0
+C
+A
+NODE	3098	37	1290	1290	0	0
+AGCGTTCAGCGCCAGCGTGGCGTTGTCGGTGACGTCG
+CCAACAACATCGGCGGTACGGGCCGCGTGGAAAAATC
+NODE	3099	37	1666	1666	0	0
+CCGGTACCCAGCGCCTCAACGTTGCTGGCGACCAGCG
+AACGCCACGCTGGCGCTGAACGCTGGCGGTGACTTTA
+NODE	3100	51	98	98	0	0
+GGAGTCCCGCTTTTGCCGTGGTTTCAGCTAATTGGTAACGCACTGTACAGG
+CCCCCCGTACTGAGTAATCAACTTTGTCACATGTAATGACCTGTTTAGGGA
+NODE	3101	14	1311	352	0	0
+TCCGCGCCGCCGAT
+GCCGGAGCTGCTGG
+NODE	3102	28	627	627	0	0
+TTTTTGCATGAAGAGGTGAAACTGACCG
+TTTTTGCTTTTACAGGGCGGCAGGATGA
+NODE	3103	9	376	357	0	0
+TCGTGGACG
+AAGAAGCGA
+NODE	3104	3	177	177	0	0
+GTT
+TCG
+NODE	3105	51	2729	2149	0	0
+ACCCGACCATTAAAGTTATCGGCGTACAGGCCGAAAATGTTCACGGTATGG
+TTAATCGATTTAATCGCAATGGCAATACCTGCAATTAAACCGCCGCCGCCA
+NODE	3106	73	3063	2867	0	0
+TGTGGAACGATCCGCACACCAGCACGGTATCTTCTGGCTGCGCCGCGTCGATAGCGGCCTGCCATGCCTGCGC
+GCTGGTGTGCGGATCGTTCCACACCGTCGCACATGTTATGGAAGTGATAGACGCGGGGAGAATCGGTGGCGAG
+NODE	3107	9	9	9	0	0
+GGCTGATGT
+CCCCGCGCC
+NODE	3108	51	61	61	0	0
+GAAGTTCGGCGTGGAAGTGATTGCTGAGACCAACGTGCCGCTGGACCCGAA
+CCGCACCACATCCAGCATAGACTTCAGCGTCAGCTCAATCCCTTCGACCAT
+NODE	3109	6	180	157	0	0
+TGGCGC
+GCGGTC
+NODE	3110	91	874	874	0	0
+GGCGTTCCTCCACATATCTACGCATTTCAATGCTACACGCGGAATTCCATCCCCCTCTACCGTACTCTAGCTATGCAGTCACAGATGCAAT
+CGCGTGTAGCATTGAAATGCGTAGATATGTGGAGGAACGCCGAATTCCATCCCCCTCTACCGTACTCTAGCTATGCAGTCACAGATGCAAT
+NODE	3111	51	3129	1245	0	0
+GCGGCTTACCTGGTACGGTACTGCGCTTGGCATAGCAAACGAAGCGGAGGC
+CAACGCATCAGGCTCACCCCACAGGCTGCTCGCAATATTGGCGGTAGTGGT
+NODE	3112	9	53	53	0	0
+GATCAGAAG
+ACGCTCCCC
+NODE	3113	12	451	451	0	0
+TATCTTCGCCAC
+ATTCGCCAGCAG
+NODE	3114	46	2696	2505	0	0
+TAGCTTTATTGAAGAGGATTTACGCCCCCATTATTCCGATATTCTT
+ACTCCAGCCGTAACGTATTCAGATTACAGATTTGACGTAATGTCGT
+NODE	3115	27	1240	1240	0	0
+AACTGGGGTGAGCAACGGCCCGTCAGG
+GACTCACTCCCTTGCCGCCTTTAAGCA
+NODE	3116	3	109	109	0	0
+CAC
+GAC
+NODE	3117	46	57	57	0	0
+TACCCGCTTTATCGTTACTTATGTCAGCATTCGCACTTCTGATACC
+CCCCGCTCGCCGGAAGACCAAGGGTTCCTGTCCAACGTTAATCGGG
+NODE	3118	13	2752	62	0	0
+TGCGAATGCTGAC
+GCAGGCTTACAGA
+NODE	3119	145	3261	2896	0	0
+ACACTGACAAGGTCAACGAGCTTACAACCTTGGGCGGCAGGGACGTAATCAACGCGGTTTGATGAACCGCTTTTACTAGGAATTCCTCGTTCACGACTGTAGATTAAAACAGTCGATCCCCAGCACGACAAGAGTTAAAAAGATT
+CGTGAACGAGGAATTCCTAGTAAAAGCGGTTCATCAAACCGCGTTGATTACGTCCCTGCCGCCCAAGGTTGTAAGCTCGTTGACCTTGTCAGTGTAGCGAGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGT
+NODE	3120	55	3446	3368	0	0
+CACTTCCGTCGCGTATCTTATCCCCGTTAAGCATAGTGTCTCATATCTCTCCGTA
+AAGTGATGGTGGTGGGGGAAGGATTCGAACCTTCGAAGTCGATGACGGCAGATTT
+NODE	3121	51	60	60	0	0
+CAATCAAAAAACGTTTTGAGGTGCGCCTGCACCTGCACTGTCACGCCACCA
+GCGCTGACCAGCTCATACGCCGCCATCGGCGTGAGAATGCCGGACATATCC
+NODE	3122	51	64	64	0	0
+GTGACCTGGTTAATGCTGTGCATTCAGAAACAAGCAATTCCATTTGTAATG
+CCCCGATATGCCCCGCCAGTAAGTGAAAAATTATGATAAATGCAAATCGTC
+NODE	3123	33	1622	1622	0	0
+CTGCGCTGTTAACCACTTTCCCGTTCGGTAAAT
+ACCATTTCTTCCGCGGTCCAGCCGGTGGTTCGC
+NODE	3124	6	302	298	0	0
+TCTGCC
+ACCGCC
+NODE	3125	45	46	46	0	0
+CACACCGCCCGCCCAATGCGCTCAATACGACGCTGACTCGTCAGG
+TCCTCCGGCTTAGAGTCAATCTGCATACGAATGCTGGATGCCGCT
+NODE	3126	51	60	60	0	0
+ACTTCGCCTTTCAGCTCAACGGTGTCGATACCGAAGTGAACGAACAGCTCA
+TCTTCAAGCGTATTGCTGAAGAAGGTCAGCGCGTGAAAGTTGGCGATCCGG
+NODE	3127	51	73	73	0	0
+GATAATGCGAAAACAGAATTTTACGCTAATGTGCCTAAGCAATTGACGCAG
+CCCAGCCGTCAGCGCAAACGCTGGCGCTATTGCCATCGTCAATACAGTCGT
+NODE	3128	15	76	76	0	0
+GTTTATGAAGAGGTG
+CGGGCGGCAGGATGA
+NODE	3129	11	337	337	0	0
+CGCACGCGACG
+TCCGTAGCCAA
+NODE	3130	3	78	78	0	0
+TTC
+TAA
+NODE	3131	2	58	58	0	0
+AA
+GG
+NODE	3132	51	52	52	0	0
+AGCCGGTGTGACAATCGCCTGGCTGGTCCATTTTTGCGGCAGCAGAAAGGA
+TGAGTCGGTACAGTGGCAGGGGCTGGAGAGAACGTTGACCGCGCTGCGCGT
+NODE	3133	46	53	53	0	0
+CAGCCGGAAGCCGTCAACGACGCGTTGAACGCGCGTGTTGCTGCGC
+CCCCACCGCGGCCTCAGGCGTATCTTCAATCACGCATTCCGGGTGT
+NODE	3134	45	4216	4216	0	0
+ACAATAAACATGTCAAAATGAATAAAAAAAGATCAGAATTACAGT
+TGGCTCTCCCGTCTTGCTTGTTTTGTTTGTTTTTTGAACGGTAAA
+NODE	3135	7	339	339	0	0
+ACCCGAA
+GGATGCG
+NODE	3136	2	10	10	0	0
+CA
+CT
+NODE	3137	361	22550	22144	0	0
+AGGCATCGAAACAGTTCTGTCTGAACTGCGTGCCCGTGGCGAAAAGTACTAAGTACTAAGAGGAAATAAGTCATGGCTAAAGGTATTCGTGAGAAAATCAAGCTGGTTTCTTCTGCTGGTACTGGTCACTTCTATACCACGACGAAGAACAAACGTACTAAACCGGAAAAACTGGAACTGAAAAAATTCGATCCAGTTGTCCGTCAGCACGTGATCTACAAAGAAGCGAAAATCAAATAATTCTCGCTTTGATGTAACAAAAACCTCGCTTCGGCGGGGTTTTTTGTTTTCTGGCCGTCCCCATATTAATGAGACCTGCCACACAGCCGGAGACGTTATGCCTGAATTACCCGAAGTTGAA
+CATTAATATGGGGACGGCCAGAAAACAAAAAACCCCGCCGAAGCGAGGTTTTTGTTACATCAAAGCGAGAATTATTTGATTTTCGCTTCTTTGTAGATCACGTGCTGACGGACAACTGGATCGAATTTTTTCAGTTCCAGTTTTTCCGGTTTAGTACGTTTGTTCTTCGTCGTGGTATAGAAGTGACCAGTACCAGCAGAAGAAACCAGCTTGATTTTCTCACGAATACCTTTAGCCATGACTTATTTCCTCTTAGTACTTAGTACTTTTCGCCACGGGCACGCAGTTCAGACAGAACTGTTTCGATGCCTTTTTTATCGATGATACGCATACCTTTAGCAGATACACGCAGGGTGACAAA
+NODE	3138	24	901	56	0	0
+TGAGCGATCCGGCACTGAAAAAAG
+GCAATGAGCGTGCCCTCCGTATAG
+NODE	3139	51	2389	269	0	0
+TATTTTTTCTGTCGGATTCGCGTCAGGAAATGCAGGCCATCCTCATCGGGC
+ACACCCTGCCGGTACTCATTCTGACCGCCCGCGATACGCTCAACGATCGCA
+NODE	3140	12	559	103	0	0
+CGCTGCGAGTGG
+CCGATAAAGATA
+NODE	3141	12	486	31	0	0
+TTGATATCCCGG
+TAGCTGGCATAG
+NODE	3142	51	214	214	0	0
+GTTCATACTGGCGCTGAACGGCGAGACGGTGACTACGCAAAAGCTGGTGAT
+CCCCGACTCATCACGCTCGACGCTCAGTACCTCGCTACGCAGGCGCATCGT
+NODE	3143	6	71	71	0	0
+GTAGAC
+CTCACA
+NODE	3144	33	476	476	0	0
+GACTCTGACTTTGGAACGGGGTATTGTAAGCGT
+CTAACCTGATATTTGAACTTGATTCAGCATCGC
+NODE	3145	56	752	752	0	0
+GAGAGTGGCCCTGTGCCACGATCCGCTGAGATTCAGCCCACGCTTCCTAGATTTGT
+ACTCTCACGCTTACAATACCCCGTTCCAAAGTCAGAGTCGTCTACAAGGGATTTGT
+NODE	3146	43	43	43	0	0
+GGGATGGTAAAAGGGGCGTCGATTTATAACCCGTGGCGCAACC
+TGCATCAACAGCCCGTTGGTGGCCTGTGACAAGTTGTTACTCA
+NODE	3147	51	2275	2261	0	0
+TCAACTTCGTTCAGTTCCAGTAAGGTCCAGGGAATAAAATAGCGATCGGTA
+ATCGCCGTCGGCTGATTCTGGCTGCGGAAATTTATACCGAAACCCAGCCTG
+NODE	3148	49	1010	1010	0	0
+AAATTAGTTATACGACACACGAACAATTCAAAAAATTGACTGCAGACAG
+GGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAG
+NODE	3149	60	224	224	0	0
+GCAGGGAATAACGGATTTTCAGTTTGAGCTTTTCCCGCTTCACTCGCCGTTACTAGGGGA
+TATTCCCTGCGGATGACGGAGTTGTGGTTTCGAGGCTGGTTGTCAGGAAGGCCCACGTCA
+NODE	3150	47	128	128	0	0
+CTCGCCGTTACTAGGGGAATCCTTGTTAGTTTCTTTTCCTCCCCTTA
+CGTGGGCCTTCCTGACAACCAGCCTCGAAACCACAACTCCGTCATCC
+NODE	3151	1	1	1	0	0
+T
+C
+NODE	3152	4	1760	33	0	0
+TATC
+CTCG
+NODE	3153	23	23	23	0	0
+ACCTAGCTGGTCTGAGAGGATGA
+CCCAACAAGCTAATCCCATCTGG
+NODE	3154	51	191	191	0	0
+GTTATCCAAATCGATCTCGTGATACCAGATGTTTTCATCGCGAAGGGTATT
+CCCCGGCGCAACGCTGGACGCACGCCTGCATTTTCCGCTACGCGGCAACGT
+NODE	3155	9	438	404	0	0
+ACCCCGCCG
+TGCTGCACG
+NODE	3156	311	14851	14652	0	0
+TCGATTGCCGCTCCCGCCAGAATGCCCGGCAGGAAATAAAACGGCGGCCACAGCAAACAGCCAATCAAGTTCGGCCCAATAAATTTCGCTACGGGAAGATCCAGCATCCCTGCCACCATCGGCACCAGCGGCCTCGTCGGACCGACAAAACGTCCGACCAGGATCGTGAACATACTGTGCTGATGCAGCGCGTGTTCGGTTTTATCCAGCAGCGACTTGTTCTTTTTCATAAAAGACCAGCGGTGTAGCGGCTTTTTAAAGCGCCACCCCAGCCAGAACGAAATCCAGTCGCCCATCAGACAGCCGATAAT
+CTTTAAAAAGCCGCTACACCGCTGGTCTTTTATGAAAAAGAACAAGTCGCTGCTGGATAAAACCGAACACGCGCTGCATCAGCACAGTATGTTCACGATCCTGGTCGGACGTTTTGTCGGTCCGACGAGGCCGCTGGTGCCGATGGTGGCAGGGATGCTGGATCTTCCCGTAGCGAAATTTATTGGGCCGAACTTGATTGGCTGTTTGCTGTGGCCGCCGTTTTATTTCCTGCCGGGCATTCTGGCGGGAGCGGCAATCGATATTCCTTCCGATATGCAGAGCGGAGATTTCAAATGGCTGCTGCTGGCGA
+NODE	3157	51	190	190	0	0
+GCTTCATCAAATCGTTTAATCGTGGTGTGGACAAAACTGAGGTGCGCCATC
+CCCAGGCCCGCCAGGCGCGTATTACCCGCCTGCCCGGCGACCATAATGAGA
+NODE	3158	51	2324	397	0	0
+AAAAGTAATCATGGCTCTGTCAGCTTAATTTTTTTGATTCTTCGTGTTGAG
+TCCTGCCGTAAATGCTGATCATGCAGCGGAGAAAAAGAGAACACTTGGTCG
+NODE	3159	40	1390	1318	0	0
+ACCAGCCGTAGGGCGCGATTAGGGCAAGGAAATCAGCCAC
+AATTCCGTGGTGTCATGAAGGATTCTGGATCGAGCGCGAT
+NODE	3160	2	153	153	0	0
+TA
+AA
+NODE	3161	19	566	410	0	0
+GCCTCCGTGCCAATCCGGT
+ATAAAGTGAACTATTCTGC
+NODE	3162	37	1991	1898	0	0
+GTCTGGAAGAATAATATCAGCGATGCACTGGTTTTTG
+GGAGGCCAGTGCCAATCCGGTTTGTGGCTTGGAGGCA
+NODE	3163	155	380	380	0	0
+CGTGAAAATCCCGTTTGTCAGGAACCAAGGCTGGCCGTACTTAAACCGCAGCGCTTTTCTTTTTAACGCAAAACACAGATTGGAATCATGTTAAATGGAGAAGATGTGTGTATTTGCGGAAAAGCGCTGCTATTTTGGCGGCGTCTGGAGCGCTT
+ATCTTCTCCATTTAACATGATTCCAATCTGTGTTTTGCGTTAAAAAGAAAAGCGCTGCGGTTTAAGTACGGCCAGCCTTGGTTCCTGACAAACGGGATTTTCACGGGTCGTGCCAAGCGCTCCAGACGCCGCCAAAATAGCAGCGCTTTTCCGCA
+NODE	3164	669	33775	33502	0	0
+CGGCGGTATCGCGCGTCTGGAAGGGCGGCCGGTGATGATCATTGGTCATCAGAAAGGTCGTGAAACCAAAGAAAAAATTCGTCGTAACTTTGGCATGCCAGCGCCGGAAGGCTACCGCAAAGCGCTGCGCCTGATGGAAATGGCTGAACGCTTCAACATGCCGATTATCACCTTCATCGACACCCCGGGCGCTTACCCTGGCGTGGGCGCGGAAGAGCGTGGTCAGTCTGAAGCCATCGCCCGCAACCTGCGTGAGATGTCTCGTCTGAACGTACCGGTCATCTGCACCGTGATTGGCGAAGGCGGCTCCGGCGGCGCATTGGCGATTGGCGTGGGTGATAAAGTGAATATGCTGCAATACAGCACCTATTCCGTTATCTCCCCGGAAGGTTGCGCCTCTATTTTGTGGAAGAGCGCCGACAAAGCGCCATTGGCTGCTGAAGCAATGGGCATCATCGCGCCGCGTCTGAAAGAGCTGAAGCTAATCGATTC [...]
+ACGGTTTTTTAAATCATCGGTGCTTAACACATCGAGATCGGCTAAATCTTCCAGCAGCTGCGCTTTTAGCGACGCCGCCATCGCTTCCGGATTACGGTGCGCGCCGCCCAGCGGCTCCGGAATGATGGAATCGATTAGCTTCAGCTCTTTCAGACGCGGCGCGATGATGCCCATTGCTTCAGCAGCCAATGGCGCTTTGTCGGCGCTCTTCCACAAAATAGAGGCGCAACCTTCCGGGGAGATAACGGAATAGGTGCTGTATTGCAGCATATTCACTTTATCACCCACGCCAATCGCCAATGCGCCGCCGGAGCCGCCTTCGCCAATCACGGTGCAGATGACCGGTACGTTCAGACGAGACATCTCACGCAGGTTGCGGGCGATGGCTTCAGACTGACCACGCTCTTCCGCGCCCACGCCAGGGTAAGCGCCCGGGGTGTCGATGAAGGTGATAATCGGCATGTTGAAGCGTTCAGCCATTTCCATCAGGCG [...]
+NODE	3165	51	2570	403	0	0
+TCTCCCAGGAGGCCGGATAATCCGGCCTCTTTTTTTTGGACGAGGAAAAAT
+AAATGAGGTAAATGATTAGGCGTAACCGTAGCTCATCAAACGCTGGTAACG
+NODE	3166	40	1718	1626	0	0
+ATTTTTTTTGCTAAAGATACTCAACATATTTTGCTGGCTC
+ACCGCTCCCCAGCCGATAATAATGGAACTAATCCATTTTC
+NODE	3167	12	747	739	0	0
+TGCTTGGTCTGT
+AATCTACCCTGA
+NODE	3168	1	61	61	0	0
+A
+A
+NODE	3169	51	70	70	0	0
+GCCAACGAGGCAAAAGCGGCGGTGGTGATGTTCTTTGATTACCAGTGTTCG
+CCCCAACGGAAGGACTGCTGCTACTGAGCAACTCAGCACGATACTGTAATG
+NODE	3170	37	87	87	0	0
+GAGAGCACTGTTTCGGCTAGGGGGCCATCCCGGCTTA
+GTTCACGAGGCGCTACCTAAATAGCTTTCGGGGAGAA
+NODE	3171	51	154	154	0	0
+GGGCCATAATCTGCTATTGATCGGCCCGCCGGGGACGGGGAAAACCATGCT
+CCCTGCCGCTGTAATCTCCAGGCCGCGTTTACCCTGCTCCTGACCGATCAC
+NODE	3172	121	194	194	0	0
+ACCGATACTCAGCCATCAAAGCAAATGTGAGGCTTTGATGAGTAAGAGGGCGTGAGCATAGTGCAGAAGCCTATGACGTGAGTCTGGGTGGAACTATGTTTAGTGCAGATCTTGGTGGTAG
+GGCTTCTGCACTATGCTCACGCCCTCTTACTCATCAAAGCCTCACATTTGCTTTGATGGCTGAGTATCGGTGGAACTATGTTTAGTGCAGATCTTGGTGGTCTTCAAAGTTCTCATTTGAA
+NODE	3173	19	956	956	0	0
+AGCATTAATTTAGGCGGCA
+TACGCATCCGCCACGGATT
+NODE	3174	140	255	255	0	0
+TCGAGCCGTCCTCGGTTGTCAATGGCGTCAGGTCGAGCAAGAGCAACGATGCGATCAGCAGCACCACCGTAGGCATCATGGAAGCCAGCATCACGGTTAGCCATAGCTTCCAGTGCCACCCCCGCGACGCGCTCCGGGCG
+TGCTGGCTTCCATGATGCCTACGGTGGTGCTGCTGATCGCATCGTTGCTCTTGCTCGACCTGACGCCATTGACAACCGAGGACGGCTCGATCTGGCTGCGCTTGGTGGCCCGATGAAGAACGACAGGACTTTGCAGGCCA
+NODE	3175	1	31	31	0	0
+G
+C
+NODE	3176	67	832	634	0	0
+GTGATGTGGTGATTCATAATAAGCTTGCGGATCGCATGCCTTGTGCGGCGATGGATCATTCAAGTTT
+ATGAATCACCACATCACCCCTTCGGGGTGATGTGGTGATTCATAATAAGCTTGCGGATCGCATGCCT
+NODE	3177	8	157	115	0	0
+CTGCCCTA
+AGCTTATT
+NODE	3178	18	417	417	0	0
+TCCAAAGCTGATAGGGCA
+GGTAACGGGAAATTAGGG
+NODE	3179	15	302	302	0	0
+GAAACTTGAATGATC
+ACCATGGCTTTAACG
+NODE	3180	28	540	281	0	0
+CATCGCCGCACAAGGCATGCGATCCGCA
+TCAGCTTTGGATGGTAGGGTATTGGCCT
+NODE	3181	51	109	109	0	0
+GATTTTTTCTGTCGGATTCGCGTCAGGAAATGCAGGCCATCCTCATCGGGC
+CCCCCCTGCCGGTACTCATTCTGACCGCCCGCGATACGCTCAACGATCGCA
+NODE	3182	438	21123	21118	0	0
+GATGAGAACGTGGTCTGGCACTCTCATCCCGTTACTGTCGCCGCTCGTGAACAGCTCCACGGCCACCGTGGCGTGGTGCTGTGGTTTACCGGACTCTCCGGTTCGGGAAAATCAACGGTGGCCGGCGCGCTGGAAGAGGCGTTACATCAGCGTGGCGTCAGTACCTACCTGTTGGATGGCGATAATGTGCGCCACGGTTTGTGCCGTGATTTAGGCTTTAGCGATGCCGATCGCCAGGAAAATATTCGGCGGGTAGGCGAAGTGGCCAGTCTGATGGCGGACGCTGGCCTGATTGTTTTGACGGCATTTATTTCTCCGCACCGCGCCGAGCGGCAACTGGTAAAAGAGCGCGTCGGCCACGATCGTTTTATCGAGATTTATGTCAATACGCCGCTGGCTATCTGTGAACAGCGCGATCCTAAAGGATTGTATAAAAAA
+TATTGACATAAATCTCGATAAAACGATCGTGGCCGACGCGCTCTTTTACCAGTTGCCGCTCGGCGCGGTGCGGAGAAATAAATGCCGTCAAAACAATCAGGCCAGCGTCCGCCATCAGACTGGCCACTTCGCCTACCCGCCGAATATTTTCCTGGCGATCGGCATCGCTAAAGCCTAAATCACGGCACAAACCGTGGCGCACATTATCGCCATCCAACAGGTAGGTACTGACGCCACGCTGATGTAACGCCTCTTCCAGCGCGCCGGCCACCGTTGATTTTCCCGAACCGGAGAGTCCGGTAAACCACAGCACCACGCCACGGTGGCCGTGGAGCTGTTCACGAGCGGCGACAGTAACGGGATGAGAGTGCCAGACCACGTTCTCATCATGCAGCGCCATGTTTATCTCCCAGCAAATCGCGGGCGTCCCAGTGCGGA
+NODE	3183	14	450	450	0	0
+GGCGGCACGCTGGT
+GGAGAGCGTGAGCG
+NODE	3184	51	1581	1403	0	0
+ACCAACACCCGCCGACAATAATGACAGGGATAGTGTAGGCCATTACGCCAA
+TTTGCGTGGCGTCATCAGTCTACGGATGATTACATCGACTATTTTGCTGTG
+NODE	3185	51	65	65	0	0
+TGCGTAAACCAGCGCATTTATGAGCTGCTGGATAAGACAGATATTGATGAT
+AGCTTTGATCCAAAAACTGGTTAAACGCATCGGCAGTGGTTGCAAAACCAT
+NODE	3186	54	720	720	0	0
+TGTACACACCGCCCGTCGCTACTACCGATTGAATGGCTTAGTGAGCTCTACGGA
+TACAAAGGGCAGGGACGTAATCAATGCAAGTTGATGACTTGCGTTTACTAGGAA
+NODE	3187	1	10	10	0	0
+T
+T
+NODE	3188	8	86	86	0	0
+CTATTAAA
+GGGGGGAG
+NODE	3189	14	627	609	0	0
+ACCCTGCCGACCCG
+TTTCCACTACCGAC
+NODE	3190	8	339	339	0	0
+CATCCAGG
+ACCGCCAG
+NODE	3191	31	1415	485	0	0
+AAAGCTGGCATCACGACACCTTTACCTACTA
+TCCGCCGCCATATTCATAGACGCGGCGCAGT
+NODE	3192	4	209	209	0	0
+CTAC
+GGCT
+NODE	3193	56	301	173	0	0
+AATTATTGATCTTCAACGAGGAATTCCTAGTAAACGCAAGTCATCAACTTGCATTG
+ATAATTACAATGATCTTCAACGAGGAATTCCTAGTAAACGCAAGTCATCAACTTGC
+NODE	3194	17	185	181	0	0
+ATTACGTCCCTGCCCTT
+TTCCTCGTTGAAGATCA
+NODE	3195	19	1136	1136	0	0
+TACCATCGATTCTTGAAAA
+GCTTCAGGTGTTAGTGTCC
+NODE	3196	23	999	935	0	0
+ACCTGAGCCAGCCAGCGCTTTCT
+TTCCCTGTTGCGCAACGGCGACA
+NODE	3197	108	430	430	0	0
+CAGACTCCTACGGGAGGCAGCAGTGGGGAATTTTGGACAATGGGCCTTTACCCCACCAACTACCTAATCTGACATCGGAACGTGCCCAATCGTGGGGGATAACGCAGC
+TGGTGGGGTAAAGGCCCATTGTCCAAAATTCCCCACTGCTGCCTCCCGTAGGAGTCTGGGACGTGTCTCAGTCCCAGTGTGGCTGGTCGTCCTCTCAGACCAGCTACA
+NODE	3198	43	45	45	0	0
+TGTAAGAGCGGGAACAGCAACGGCAGATTTTAAATTAGTGATT
+ACACGTCACCCAAAATGTAACGCCGCCGCCAGAAGCCTGTACC
+NODE	3199	16	578	578	0	0
+TGATGATGATGAGCGA
+ACCCGCCGTCACCGAA
+NODE	3200	111	4543	4501	0	0
+GCGCTACCAGTGGCTGGGGATGGCGCTGTCGGCGAGTGAGAAGCGCTACGCGGACGGCAGCCCGGCGCTGCGTGAGCAGTGGCATTACCGGGGCGGTTTTGAGCTGCTGGC
+GCTGCCGTCCGCGTAGCGCTTCTCACTCGCCGACAGCGCCATCCCCAGCCACTGGTAGCGCACCTCGCTGACGGTGTGGTGATTTTGTTTCCACGCCGCACGGATAATATT
+NODE	3201	60	443	415	0	0
+TTGCAATTATTAATCTTGAACGAGGAATTCCTAGTAAACGCAGATCATCAATCTGCATTG
+ATAATTGCAATAATCTTGAACGAGGAATTCCTAGTAAACGCAGATCATCAATCTGCATTG
+NODE	3202	142	369	369	0	0
+TTGTTACCGAATTCAGAATCGGCTCATCGAACGACGGGCTTCAGCCCAAAAGGTAACTGAAATGACGAGTGAACAGATGCTGGCGGAAATCAAGGAAGCCAACCTCACTTATCTCATGCTCGCGCAGAACCTGATCCGCCAG
+TGATTTCCGCCAGCATCTGTTCACTCGTCATTTCAGTTACCTTTTGGGCTGAAGCCCGTCGTTCGATGAGCCGATTCTGAATTCGGTAACAAGAACTTTAATAGGTAAAGAGATGTTAACGATGTAGCTTTGCCCGACAGCG
+NODE	3203	107	496	496	0	0
+CGCATGTTGTCGTCCAACGATCGGAGCTAGAGCTTCATCCGCAGCAGGGGAATTCGAGACGGAGTTGGAGTTGCTGTTTGAAATGTGTTTCAAACAGCAACTCCAAC
+TCGAATTCCCCTGCTGCGGATGAAGCTCTAGCTCCGATCGTTGGACGACAACATGCGATGCCTACTGACAACAACAACAACAACAACACGATTAATCTTTTAGAAGG
+NODE	3204	139	228	228	0	0
+AACTGCAACAACTTTAATATACGCTTTTGGAGCTGGAATTACCGCGGCTGCTGGCACCAGACTTGCCCTCCAATAGATCCTCGTTAAGGGATTTAAATTGTACTCATTCCAATTGCCGGACATTTATATGTCTGGCAAT
+CCTTAACGAGGATCTATTGGAGGGCAAGTCTGGTGCCAGCAGCCGCGGTAATTCCAGCTCCAAAAGCGTATATTAAAGTTGTTGCAGTTAAAAAGCTCGTAGTTGGATTTCTGGTAGTACGCCCCTGACCCGCCCCTCT
+NODE	3205	51	103	103	0	0
+GCTGCTCTCGCAGACACTGGTCGTGCATATGCTAAGGACGCAGAAAATACC
+CCCCTCAATAAACCAGCCGGACTGAAAGAGCGCCTGCGCCTCTACGTTATT
+NODE	3206	30	108	108	0	0
+ACCACTGATTCCAAAAAGCAAATTGCCCAA
+CCCCGCCAGTGATGTGGTTATTGACACACT
+NODE	3207	51	54	54	0	0
+GTAACGATTGCGTGAAAATTAGCCATTGCAATGCCAGCGCAAAACAGTATC
+CCCTGCCTGGCTTACTGACGAAGATGGGCGTAAAATATCGCCGTTTTTCTA
+NODE	3208	46	109	109	0	0
+TTAACCCTAACGATTTTGCGGCAGAACCGATAGAACCACTTCTAAT
+CCCCGCCGTCAGTAAAATCATTAGCGATGTTGAGGCCTATTTTGGC
+NODE	3209	37	37	37	0	0
+TCGCGACGGGTGTTGTGGTGCTGGTGGTGACGTTTGC
+AACAAATAGAGCAGTCAGTTTACGCATATTTCCATCC
+NODE	3210	51	71	71	0	0
+GTATGAGCCCGACGAGCTACCAGGCTGCTCCACCCCGCGTCCGTGGATGCG
+CCCCGAAGGTCGTCGGTTCAAATCCGGCCCCCGCAACCAATTACAATGAGA
+NODE	3211	5	473	310	0	0
+TATTC
+CACCT
+NODE	3212	13	528	481	0	0
+TAATGGCTTTCGC
+CTTTGTCACCTAT
+NODE	3213	40	186	186	0	0
+GAGTGTGGGGTCTCCCCATGCGAGAGTAGGGAACTGCCAG
+TACGGCGTTTCACTTCTGAGTTCGGCATGGGGTCAGGTGG
+NODE	3214	51	136	136	0	0
+TATACTGAGCGCCCAGCAGCATGTTCCACGGGGATTGTAGATGCTGTTTGA
+AAAATACCCCGCCATTTCAACGTTACCACCGAGTTTGGCTTTGCCGAGCGC
+NODE	3215	44	1141	1141	0	0
+ACCCCCGCCGAACCGATAAGCGGGTTGATTTTGTTCTTACTGCA
+AGTGCCGATGGCGGCACGCGTATCGAACAAAGTGGGGCTGGAAT
+NODE	3216	48	1000	1000	0	0
+ATGAATTGGGCGAGCTGGCTATTGATGTGTTGATTCATCGGATGGCGC
+GGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAA
+NODE	3217	51	105	105	0	0
+GGGCATTGTGACTGATGATTCTGGATTCACTCTTGCCGTCTTCCAGCAGCA
+CCCTCACTGACGACGCAGCAAATCGACGCCAGCCGCGAGCGCCTGCAGGCG
+NODE	3218	32	1125	66	0	0
+TTGATTGCTCTTACCTTTCACCGCGGCTTTAA
+ACCACCGGTCGCAGCTATGCTATTGATCCCAT
+NODE	3219	51	54	54	0	0
+AATCCAGCCACGCCTGCGGCAGTTCCAGCACCAGCGCTGGCTCATCAATTT
+TCCTTTACCGTTCAGGCGACCCGCACCGGTATCCCCGTTGTTTGGGTCAAG
+NODE	3220	5	368	368	0	0
+GCGCC
+CGCCA
+NODE	3221	117	945	945	0	0
+TCGAACCCTAATTCCCCGTTACCCGTGAGAGCCATGGTAGTCCAATACACTACCATCGAAAGCATGATAGGGCAGAAACTTGAATGATTGATCGCAGTAAGACTGCGATTTGCGAAG
+TCATGCTTTCGATGGTAGTGTATTGGACTACCATGGCTCTCACGGGTAACGGGGAATTAGGGTTCGATTCCGGAGAAGGAGCCTGAGAAACGGCTACTACATCTAAGGAAGGCAGCA
+NODE	3222	51	1915	1617	0	0
+CTCTTTTACCTCCTTGCCGCTGGCTTTCACCACCACCAGCGTATTCGGATA
+GTGGCTGGAATGTTCTGCCGGACAATTTAATCAGATTGATATTCACAGCAA
+NODE	3223	46	46	46	0	0
+TTACTGGTCAGCCGGGCGCTGGAAAAGTTGGGTTATACCGTAAATA
+ATGAACCAGGGCCGCTTCTTTACTGAGTGATGGCATTAATCGTGTT
+NODE	3224	1	55	55	0	0
+T
+T
+NODE	3225	51	3075	3017	0	0
+GGCTTTTGCTTTTTAATTTTCCCTTGCTTCATCAGCTTGGCCTTTTCCGCC
+CGCTGCCGGAGATTAGCGAGGAAGAGAAGCCGTTTGAGCTGCCGGCGGGGT
+NODE	3226	18	35	35	0	0
+GTTAATCACAATATTCGG
+CACCGGTTATCTGGCCAA
+NODE	3227	3	3	3	0	0
+GTG
+CCT
+NODE	3228	99	316	316	0	0
+AATGAGTAATCATAGGAACCCTCTCGGGGGCTCCCAAGATCATAACATGGTAACGTCACTTTCACATGGAGTAAAATTCGTGTGAGGCGATGCTGAATC
+CATGTTATGATCTTGGGAGCCCCCGAGAGGGTTCCTATGATTACTCATTGTAACGTCACTTTCACATGGAGTAAAATTCGTGTGAGGCGATGCTGAATC
+NODE	3229	7	63	63	0	0
+AAGTTCA
+ACGTTAC
+NODE	3230	5	124	124	0	0
+AATAT
+AAGTG
+NODE	3231	15	427	427	0	0
+CAGGTTAGACAAATC
+TTTTACTCCATGTGA
+NODE	3232	51	3038	802	0	0
+ACCGGAAAAATCACGGGCCTGATAAGGCAACGCCGCCATCGGACATGTTAT
+TTCTTAACCTTTGGCGTTCATGCTCCGCAACGACGCGCCAGATGAGGCGGA
+NODE	3233	14	367	367	0	0
+ACCCGCCAGCCAGA
+CCGGCTTTACGGGT
+NODE	3234	51	96	96	0	0
+GTAGCCGGTGCTTCTTCTGCGGGTAACGTCAATTGCTGTGGTTATTAACCA
+CCTCCGTGCCAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAA
+NODE	3235	45	1824	1824	0	0
+TGACTTTACCAACAACATCGGCGGTACGGGCCGCGTGGAAAAATC
+GGTGTTCAGCTCCAGCGTGGCGTTATCGGTGACGTCGCCGGTACC
+NODE	3236	47	662	662	0	0
+GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
+GCCACACGGTTATTCGCCGTGGCCTGCAAGAAATGCTGTCCTGGCGC
+NODE	3237	1	56	56	0	0
+G
+C
+NODE	3238	29	138	138	0	0
+GGTTCCCCGCTTTATCTTCGACTGACACA
+CGGTGACGGTGGACACGCAAATCGCCATT
+NODE	3239	125	367	367	0	0
+GCGTGCGGCCCAACATCTAAGGGCATCACAGACCTGTTATTGCCCCTATCTTCCTGCGTCTAATAGACGCACGTCCCTCTAAGAAGTTACAACCCAGTGAAAATTCACTCAACAACTATTTAGCA
+GACGTGCGTCTATTAGACGCAGGAAGATAGGGGCAATAACAGGTCTGTGATGCCCTTAGATGTTGGGCCGCACGCCCCTCTAAGAAGTTACAACCCAGTGAAAATTCACTCAACAACTATTTAGC
+NODE	3240	3	38	38	0	0
+CTA
+GCC
+NODE	3241	36	458	458	0	0
+ACCTGATATTTGAACTTGATTCAGCATCGCCTCACA
+AAGCGTGGGCTGAATCTCAGCGGATCGTGGCACAGG
+NODE	3242	51	125	125	0	0
+GGCTGGTCGGCATCATCGGTATCGTTCTGCTGGCGCTGGGTGGGTTGAAGC
+CCCGCCCAGCCGATACGCACTAACAGAGGCGGCTCTTCACCATCGCGAACT
+NODE	3243	41	41	41	0	0
+TATGGAAACCGCCGCGCTGATGGTGGTGGGGGCGTTACGTG
+CGATACAGCTCGGTGTGGCCTTTTTGACGGCCAAAGCCTTT
+NODE	3244	43	58	58	0	0
+ACACGCTAAAGAGATTTTTGTATCGGCATCACTGATGCCAGAA
+TGCTCCGTCAAGGAATTTATTCTATTTGATGTTGAAATATTTT
+NODE	3245	68	86	86	0	0
+GCTACAGATGCTGTCGGGAGCAGGTAATCAACTGACCCGCCTGCCGGCGCTGCCGTCAGGCCTACAAC
+CCCGACAGCATCTGTAGCCCTGCCGGCAACGGCGGCAGGCTGGTCAGTTGGTTATCTTCGACAGTAAG
+NODE	3246	30	827	700	0	0
+TACTGGCAACCGGCAGCGCGCAGCAACTGC
+ACCAGCCAGTCAAAACGCTCCGCCTCTTCC
+NODE	3247	73	3149	2942	0	0
+GGGCAAAAACCCATAGCGCGACGCTGGAACAGGCGTTTATCGCCCTGTTGCCAGAAGCGCAGCGCCAGGCGCA
+CGTCGCGCTATGGGTTTTTGCCCGCAGTTGCTGCGCGCTGCCGGTTGCCAGTACCTCGCCCGCATTCATCGCC
+NODE	3248	38	75	75	0	0
+GGTTAACCTCAATGATATTATTACTCACTCCCTGAATC
+TTCAGGAGAGCGTGCTTCTGGCTGGGGATGTGCTGGAG
+NODE	3249	51	86	86	0	0
+AGCTTCTGTTGTGGCATGGTCAGGAGGATGACGTGGTGCCTGCTATCGAAA
+TGCCTGTCGGCCAGTCGCTCTAACTGGTGTGTGACTTCCCATTCACGTAGC
+NODE	3250	46	221	221	0	0
+GTACACGTAACGCTGCTCGACCCTCAGTTGGAACGACAGTTGGTGT
+CCCAGCCGTACGCCGCGCTCGCCGCGACGCTCGTCCCAGGTTTTAA
+NODE	3251	156	8086	7990	0	0
+ACCCGGCTCCCATTTGCGGGTGGTGTGCGTATCGCCCACCGACAGATAGCCCTGATCCCACAGCGGATGGTATTTCAGGCCGTGCTTTTGCAGGTACTGGTAAACGGTACGGTTATCCCAGTCGATAATCGGTAGCACTTTAAACACGCCGCGCTG
+CGTTTACCAGTACCTGCAAAAGCACGGCCTGAAATACCATCCGCTGTGGGATCAGGGCTATCTGTCGGTGGGCGATACGCACACCACCCGCAAATGGGAGCCGGGTATGGCGGAAGAAGAGACGCGGTTCTTCGGGCTGAAGCGCGAGTGCGGGCT
+NODE	3252	4	36	36	0	0
+TAGG
+CGAA
+NODE	3253	48	74	74	0	0
+TGGTCAGCAGCAACCAACACTGGCGACTGGTCAGCAGCAACCAACACT
+TGCCAGTGTTGGTTGCTGCTGACCAGTCGCCAGTGTTGGTTGCTGCTG
+NODE	3254	44	54	54	0	0
+ACTTTCGCCCGGCGCCAGCTCAACGCCTTTGCAATCGACCACGC
+TCAATGTTGACCTGGTTGAGCATGATACGCATGGCGTTGACCGC
+NODE	3255	41	44	44	0	0
+TCGACGTAACGGAAAAATGCACGACGCGTAAAGGCCGTAAG
+CCAGAAGGTGCGCGGCGATTACGGCGGTTATCAGGATGACT
+NODE	3256	21	202	202	0	0
+TAATGTCTGGGAAACTGCCTG
+AGCAAGCTGCTTCCTGTTACC
+NODE	3257	5	49	49	0	0
+ATGGA
+GAAGC
+NODE	3258	1	58	58	0	0
+T
+C
+NODE	3259	1	5	5	0	0
+C
+C
+NODE	3260	42	42	42	0	0
+GGTTTTCATCTTGATCAAATGTCTTTAAATGTCATATAAAAA
+TCGGGATCCGCGATCTGGATCCCGATTCAGCCTGCTCTTCGT
+NODE	3261	14	1751	108	0	0
+TAATGCACAGGAGG
+AGAGAAAACGCATT
+NODE	3262	41	164	164	0	0
+GTCTGTAAGCCTGTGAAGGTGGCCTGTGAGGGTTGCTGGAG
+ACCCAACGAACGTATCCTTAAACCGACTCGACTTTGTATAC
+NODE	3263	1	61	61	0	0
+T
+A
+NODE	3264	51	1544	326	0	0
+ACCAGCCCCCCTGCCTCTTTTGAAATCGCCATCCGGGTGAAGCGATTACGC
+TGGCGGTCGGTTTTGGCCCCGTCCTCGCAGGGATCTTTTGTAACATGACCG
+NODE	3265	51	304	304	0	0
+GTTATTGAGGGTCTGCTCTCGCAGACACTGGTCGTGCATATGCTAAGGACG
+CCCAGCCGGACTGAAAGAGCGCCTGCGCCTCTACGTTATTAGCCGCAAAAA
+NODE	3266	41	41	41	0	0
+CGCCGATAGAAGAGTAGACGAAACGTCCAAAGAAGAAGAGA
+GCTTGAGTGCGGCATTAAATGGCAGTTTTAAAGCTAACCGT
+NODE	3267	609	29414	29027	0	0
+CACGATGTCAGCGAATAGATAGCGCCGACAATGTCGGCGCTTCTGTTCCCCGGGAAGGCTAATCGTTTATTGCGCGTCCGCAAGCTGCAGTGAGTCCTGATTATGTAACGCATTCTGGCGCTGGCGTTCCAGTTCCAGCGCGCCGCGATGGGAGAGGTAACAGAATAGAATGCAGCACACGATGCCGCCCATCAGCAGATAAAATCCGCCGTACCAGCCCAGTTTATCCACCATGACGCCAAACAGGCTGGTGCCCAACGAGGCGCCGAAAATATAGCTCATGAACCCACGTAAACCGACGGCGGAACCTACGGCAAAGCTGGGGACTATCTCCATTGTCTGTACGGACGCGAGGAATTGCGGGACGTAAATCAGACAACCTACAATGGCGGCGAAAATCGTTACCATCAGCAAAGATTCACTTTTCCAGTATCCGATCAGACAGACAAAAATCAGCGCCATGCAAATCATGGCTAACGGCATTCTGCGGCC [...]
+CTTTTTCGAGTGGGCGGCGATTCCCTCTACGCTACTGGCAGGCTGGCTGTCAGATAAACTGTTTAAGGGCCGCAGAATGCCGTTAGCCATGATTTGCATGGCGCTGATTTTTGTCTGTCTGATCGGATACTGGAAAAGTGAATCTTTGCTGATGGTAACGATTTTCGCCGCCATTGTAGGTTGTCTGATTTACGTCCCGCAATTCCTCGCGTCCGTACAGACAATGGAGATAGTCCCCAGCTTTGCCGTAGGTTCCGCCGTCGGTTTACGTGGGTTCATGAGCTATATTTTCGGCGCCTCGTTGGGCACCAGCCTGTTTGGCGTCATGGTGGATAAACTGGGCTGGTACGGCGGATTTTATCTGCTGATGGGCGGCATCGTGTGCTGCATTCTATTCTGTTACCTCTCCCATCGCGGCGCGCTGGAACTGGAACGCCAGCGCCAGAATGCGTTACATAATCAGGACTCACTGCAGCTTGCGGACGCGCAATA [...]
+NODE	3268	51	128	128	0	0
+GGATTTGATCCGGAGCGTCCAGATAATCATGCGCGACAGGTACATACGCGG
+CCCCGCCAGCGTGCTCTGGAACTGCTGAAGCCGCTGCTGGAAGATGAAAAA
+NODE	3269	51	65	65	0	0
+TGAATAAACCATTGTCTGAATATGTATGAATTTGACATTATGGGACGGGTT
+ACTGTGACGTCGCCAGGAAATGGCCGTTATCCATTCTGACAAAATTATAAG
+NODE	3270	42	113	113	0	0
+GATTGGTGGATTTCCCACAGCGTTCACTGACTTTGCCAATAT
+CCCCGTGGCGCCAGCCATACCAGATAACAATAATGCGCTACC
+NODE	3271	51	78	78	0	0
+GGGTTATAGAAGTAAGAGGTGCTATTCATGTGACGCGCCGGACGCTGCCAG
+CCTCCAGCCAGTGGCGCTACGAGACGGTGACCGCCGAGGAGTTACTGTCGC
+NODE	3272	34	1986	1715	0	0
+ACTGGCTGATAAGCCGCTTTCTTTTGGGTATAGT
+ACCCGTCAGTGTAAGCTGGCGGGTTTTTGCTTTT
+NODE	3273	109	193	193	0	0
+TTGAGCGATGCCCTTCCATACAGAACCACCGGATCACTATGCTATACTTTCGTACATGATCGACTTGTCTGTCTCACAGTCAAGTCGATCATGTACGAAAGTATAGCAT
+TCATGTACGAAAGTATAGCATAGTGATCCGGTGGTTCTGTATGGAAGGGCATCGCTCAAAGGATAAAAGGTACGCCGGGGATAACAGGCTGATCACGCCTGAGAGTTCA
+NODE	3274	51	1354	1032	0	0
+GGTTTTACCGCTGAAGCCGATCAGCTGGAGCTGCTCTCCCGCAGTAAAACC
+CGCGAAGCATTTCTCGTTCATCGCACTTCACGAAAAAATCATGGCCTGCAT
+NODE	3275	51	60	60	0	0
+GGGCCGTAGGTGGCGCTCATGGAGGAAATTGCCGTGTCCACGCCGTCAACG
+CCCCGGCCACCGAGGCGCTGGTGGCGACGTTGGCAGGTACTGAGCACGACA
+NODE	3276	51	52	52	0	0
+GTTGGACACGGACAGCGCGCAAAAACCGGAGCGTACACGTAGTACGTGAGG
+CCTGGCTGCGCCAATAACGCCTGGTGGGATAGGCTCTAAGACAATAATACC
+NODE	3277	51	154	154	0	0
+GAAACAGTTCGGAACCGGCGATGATGACCAGCGTTAAGGCGATACCGAAGG
+CCCGGCCACACCATGTTCCTGACGCTGGGCGTCAAAGCAGGCACCATCAGC
+NODE	3278	20	29	29	0	0
+GGATGCAGAGTAAACAGATA
+CCCAGCCGGTGACTTTCCAT
+NODE	3279	51	59	59	0	0
+AGGACCAACAATCTCGGCTACAGGGCCAGCCACAGCGCCAATAGCAGCGCC
+TGCGATTGGGAAGATTGCAGGAAAAATTAAAAATAGTGCCGGGGATATTTA
+NODE	3280	51	99	99	0	0
+TCTGGAAAACATCGACATCGTGCCGCTGTATTTGGCTGCTGAACGCCCGGT
+ACAGATGTATTGCCAGATATCCTGCTCAGTCCAGTTGGAGAGCGGGAAGAC
+NODE	3281	14	328	328	0	0
+TGCTCACCCCAGTT
+TAATCCGTAGCCAA
+NODE	3282	51	97	97	0	0
+GGGTGAAAGCGCTGACCCATAGCCCGTGGGGAACGTACACTGTCGCGTTCA
+CCGATCATCGCCAGGACGGCCAGAATGATCACCATGATCATAAAGCAGGCT
+NODE	3283	96	390	390	0	0
+TTTGATTCCGGAGAGGGAGCCTGAGAGACGGCTCCACATCCAAGGAAGGCCAATACCCTACCATCCAAAGCTGATAGGGCAGAAACTTGAATGATC
+TCCTTGGATGTGGAGCCGTCTCTCAGGCTCCCTCTCCGGAATCAAACCCTAATTTCCCGTTACCCGTTAAAGCCATGGTAGGCCAATACCCTACCA
+NODE	3284	1	61	61	0	0
+C
+T
+NODE	3285	1	38	38	0	0
+A
+T
+NODE	3286	19	647	647	0	0
+ACCCGGCCCATCCATGGGC
+AATGAAGGGTATAAACAGC
+NODE	3287	9	109	109	0	0
+AAAAAAAAA
+TTTTTTTTT
+NODE	3288	1	16	16	0	0
+A
+T
+NODE	3289	2	41	41	0	0
+AA
+TT
+NODE	3290	1	26	26	0	0
+A
+T
+NODE	3291	1	32	32	0	0
+A
+T
+NODE	3292	1	40	40	0	0
+A
+T
+NODE	3293	24	147	147	0	0
+CGGTCAGCAGCAACCAACACTGGC
+AGTCGCCAGTGTTGGTTGCTGCTG
+NODE	3294	18	23	23	0	0
+AATGATCTTAATGCGCCC
+AAAAAACAAGCCAGTACA
+NODE	3295	5	5	5	0	0
+CCCCC
+CCCCC
+NODE	3296	51	123	123	0	0
+GATCATTAGCGCGACAGCGAAAAAACTCGGCATGTCGATGGACAATGTCGT
+CCGCAGGTTAGCCTGATGCGGCACCAGCCAATCGAGTTCTGAGCGATCCAG
+NODE	3297	22	59	59	0	0
+GTTATGACGATCAAGGGCGACT
+CCCTGCCAATAAGGTGGTAAGC
+NODE	3298	112	604	543	0	0
+GTTACTGAAAATCAAAATCAAGTGAGCTTTTCCCCTTTTGGTCAACAAGAGATTTCTGTTCTCTTTGAGCTCACCGTAGGACACCTGCGGTGAGCTCAAAGAGAACAGAAAT
+AGAACAGAAATCTCTTGTTGACCAAAAGGGGAAAAGCTCACTTGATTTTGATTTTCAGTAACAATACAAACCGCGAAAGCGTGGCCTATCGATCCTTTACCTTTACAAGTTT
+NODE	3299	51	117	117	0	0
+GTTTTACCACGCGCGTGACCCCAACCAGCGCCGATGAGCTGGGAAAACTGG
+CCCCCCGCCGCCAGCCTGTGCGTACCCTCGACCAACCGTTTGACCGGGGCG
+NODE	3300	90	198	198	0	0
+TCGTGAAAGGCCGAACCGGTCACCTCCGCTGGGGCTAGACCCGAAGCGGAGGTGACCTACTCATTGCCAGGACGAATCGATGGTAACACA
+GTCTAGCCCCAGCGGAGGTGACCGGTTCGGCCTTTCACGATGTGTTACCATCGATTCGTCCTGGCAATGAGTAGGTCACCTCCGCTTCGG
+NODE	3301	51	127	127	0	0
+GTTATCCACACTATCACGGCAAACGAGAGTCTGCGGACTGGCCAGTGGGTG
+CCTCCTTGTCCAGCTTCAGCCCTTCCTGGTGCCACTCGACCAGCGGCGAGT
+NODE	3302	28	1278	1278	0	0
+TCATCCGCTGTCTGCCGCCGTAGATCCG
+TATTCATATCGTCTTTTTCATACCAGGT
+NODE	3303	12	12	12	0	0
+TCGCCCCAAGCA
+CCCATGCCGCCG
+NODE	3304	30	398	398	0	0
+TCAAACAGGATAAACCGAAATAATTTATTT
+CATCGTAAGTATTTCGATAGATTTGATTTT
+NODE	3305	90	635	635	0	0
+TGTTTTGGTTTTCATTACAAAGGTATTGCAAACCAAAAGGAAATAAATTATTTCGGTTTATCCTGTTTGATAAATTACTAATAAATACAT
+CCTTTTGGTTTGCAATACCTTTGTAATGAAAACCAAAACAAAATAAATTATTTCGGTTTATCCTGTTTGATAAATTACTAATAAATACAT
+NODE	3306	51	1129	1047	0	0
+ACCTTTGTCACGATCCCCGCCACAGCCAAAGACGCACCACAATTTTCCGGC
+TAAGCGCCCACTCATGGGGGCCATTGCCGAAGAATTCGCGGATATCGTCGT
+NODE	3307	3	89	89	0	0
+AAC
+GCT
+NODE	3308	41	60	60	0	0
+GCGCATGATCATCGCCAGTATCAGGCCGGTAATGCGCGCGC
+GCGTCAATCTCGTGGCTGGTCACCTTGACTAAGCCGCTCTT
+NODE	3309	49	58	58	0	0
+AGATAACGTTTGCCGTCGAAGGTTTTCAGCGTGTAACTGGTATAGAACT
+TGGAGCGCGACTATGGTTGTAAGGTTATCTCCATCATTACGCTGAAAGA
+NODE	3310	45	51	51	0	0
+GGTTGCTGGCAGGCTACTTGTCTGACTTTATGTTCAAAAGTAACC
+CATGCGAGATCCCCTCCATCAGACAGCCGTCGCCCATAAAGACAT
+NODE	3311	111	633	633	0	0
+GAAACAATCCAAACCTTGGCGAAGCAGAATTCGCCAAGGTTTGGATTGTTCACCCACCAATAGGGAACGTGAGCTGGGTTTAGACCGTCGTGAGACAGGTTAGTTTTACCC
+ATTGGTGGGTGAACAATCCAAACCTTGGCGAATTCTGCTTCGCCAAGGTTTGGATTGTTTCTCATCAGTAGGGTAAAACTAACCTGTCTCACGACGGTCTAAACCCAGCTC
+NODE	3312	140	204	204	0	0
+TGAAATCCTCTGATAAAAAACTTGAAAATAGTCGCAACCTCGGGAAACAAGTTGCGTACAAGGAGTAATGGTTGATTTCAGGGGGAGGGTTTTTGGAAAGTGTTGCCTCCCCCGTTTCTTTGACATGATGAACACTTTTC
+ACCCTCCCCCTGAAATCAACCATTACTCCTTGTACGCAACTTGTTTCCCGAGGTTGCGACTATTTTCAAGTTTTTTATCAGAGGATTTCAACGGCTACGGCTATCAGCATCAATGATAGCCGTAGCCGTTGAAATCCTCT
+NODE	3313	51	95	95	0	0
+GATTATCAAGAATCTCAATCCCGACGCCGGCTGCGGTAGTGCTATTGTCCG
+CCCTCTTCACCGTTGAAACCGGACGGCGCGACCTTCTCGGCGAAGCAGTCG
+NODE	3314	51	2584	1358	0	0
+ACCTCTTCACCGTTGAAACCGGACGGCGCGACCTTCTCGGCGAAGCAGTCG
+TATTATCAAGAATCTCAATCCCGACGCCGGTTGCGGTAGTGCTATTGTCCG
+NODE	3315	1	55	55	0	0
+C
+A
+NODE	3316	51	64	64	0	0
+GCCACCTTCCTCCAGTTTATCACTGGCAGTCTCCTTTGAGTTCCCGGCCTA
+CGATGACGTCAAGTCATCATGGCCCTTACGACCAGGGCTACACACGTGCTA
+NODE	3317	21	28	28	0	0
+GGCCGACCGTAATCCGCAGGC
+TCCTTACGTGCGGAGCCAGTA
+NODE	3318	5	1561	56	0	0
+ATGGA
+AAAGC
+NODE	3319	2	71	71	0	0
+AC
+CC
+NODE	3320	24	522	522	0	0
+GGCGTTTTGTTGATGCGAAAAAAG
+CCAAAACGCTGGGTAAAGCGTGCA
+NODE	3321	141	476	413	0	0
+CATAGTAGGCCACTATCCTACCATCGAAAGTTGATAGGGCAGAAATTTGAATGATGCGTCGCCGGCACGAGGGCCGTGCGATCCGTCGAGTTATCATGAATCATCGCAGCAACGGGCAGAGCCCGCGTCGACCTTTTATCT
+ACTCGACGGATCGCACGGCCCTCGTGCCGGCGACGCATCATTCAAATTTCTGCCCTATCAACTTTCGATGGTAGGATAGTGGCCTACTATGGTGGTGACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTG
+NODE	3322	19	589	589	0	0
+TCTGTTCGCCACCCGCCTG
+TAATGGCAATGGTCATGGA
+NODE	3323	40	40	40	0	0
+GTGCATAAAGATTGGCATCTGTAATTCGGCGGCAATTTGT
+TACGATCAACCGGATGGGTGAAGAAGTCGAAATGATCACC
+NODE	3324	47	77	77	0	0
+ATGCGCTGGAAGGTAAACACCCGGCGGTTCCTGTTGATGTGGTGCAT
+TAAAGCCAGCAACAGCAGCGTTAGTTTACCCATCCTGCCCCCTGAAA
+NODE	3325	58	136	136	0	0
+GTGGAGCCTGCGACCATACTCCCCCCGGAACCCAAAGACTTGTGATTTCTCATAAGGT
+GGCTCCACTCCTGGTGGTGCCCTTCCGTCAATTTCTTTAAGTTTCAGCCTTGCGACCA
+NODE	3326	6	89	89	0	0
+TATGGT
+ACGGAG
+NODE	3327	4	64	64	0	0
+CGCA
+GCTG
+NODE	3328	51	77	77	0	0
+AGCAACACGCTGGCGTATCTGGCCTACTCCGACAAAGTAGTCGACGGGGCG
+TTTTCTCATCATAGAAACGCACGACCTGCAATGACTTAAATATCAATGAGG
+NODE	3329	51	97	97	0	0
+GTCTGTCATTCGCTTCGATGGTAATGCATGCGTTATTTTAAACAATAACAG
+CCCGTCCGGGCGACGAACACCCTTCTTGGTGCGCACCACTACCGCCTTCAG
+NODE	3330	33	110	110	0	0
+TAGTGAACACGTAATTCATTACGAAGTTTAATT
+TTTTTCGTCCGAGGACGTTAAGAATCCGTATCT
+NODE	3331	18	43	43	0	0
+ATTGAGACTTGGTATTCA
+GATTGAGCATCAAACTTT
+NODE	3332	51	120	120	0	0
+ATTAAATGTCCGGATGAGCATGTTGTCGCATATAAGGATTTTCGCAAAGAC
+TTTTATAAATCCCTGCCGTTTTCATCTCTTCATAATCCGGCATATCGGGAT
+NODE	3333	1	3	3	0	0
+G
+C
+NODE	3334	45	154	154	0	0
+CAGGGACGTAATCAATGCAAGTTGATGACTTGCGTTTACTAGGAA
+GTTACGACTTTTACTTCCTCTAAATGATCAAGTTTGATCTACTTC
+NODE	3335	109	441	441	0	0
+TTTGAAATAGCGTGTTGACCAAAGGCTATCGGTACTAAAACACTAGTCAAGGTGAAAATCGTCGCTTGCCAGCATGGATTCTGACTTAGAGGCGTTCAGTCATAATCCT
+ATTTTCACCTTGACTAGTGTTTTAGTACCGATAGCCTTTGGTCAACACGCTATTTCAAATGTCTAACCGAATGTTGGTCGAGTTAAATCCTCTGTAGACGACTTAACTA
+NODE	3336	141	353	353	0	0
+TCACTGCTTAGACAGACATTTCCATTCGTCTGCTTTTCCTAGCCTCCTGCGTCCCTCCATTGCTCAAACGAAAACAACGAGTACAGGAATATCAACCTGTTGTCCGAGGCCGACAGGCGTAGGCGATGGACAACAGGTTGA
+TATTCCTGTACTCGTTGTTTTCGTTTGAGCAATGGAGGGACGCAGGAGGCTAGGAAAAGCAGACGAATGGAAATGTCTGTCTAAGCAGTGAGTTTTGTGATGAGTCAAATGCTTGTCACTTTAAGAATGAGCTGTGATGGG
+NODE	3337	38	38	38	0	0
+TTAACAGTAACGCGGGCACAATCGGATGAAAGCCCAGG
+AATGGTGGGCGGCGTACTGGCCGATCGCTACGAACGCA
+NODE	3338	51	73	73	0	0
+CAAGCCCATCCCAATGCAATGAGTATCGCCTGCGGCTTTTGCGCCAGGGAG
+GAAAAGGCGACGGCTCGTTGATAAAAGAATATACCGTCGTTGCCTTGCAGG
+NODE	3339	51	92	92	0	0
+GCGTGTGGTTTAACGTCGCAGGCGCGGGGATTCTGACGCTGGCCTATTTTG
+CCCCGCCGACCCCGCCAGCCCTCATGGTAATGCCCCCACAGCAGAACGATA
+NODE	3340	156	8209	7998	0	0
+GCCCGTAGCGCCACCAGCATATTAACCGCCCGTCCAGGCGTTGACGGGACAAGGATAGTGAATATCGTCGTCATATTATTATGAGCGCTTTCTTCCAGAAGCCGCGTCATAAACGCGCCATCCAGCGGCTGCGCGGCGCGAATCGGCAGGTCAAGG
+CGCGGCTTCTGGAAGAAAGCGCTCATAATAATATGACGACGATATTCACTATCCTTGTCCCGTCAACGCCTGGACGGGCGGTTAATATGCTGGTGGCGCTACGGGCGGGTCACATTGTCGCGCGTTACGCGAAGCTGCATCTCTATGATGCGTTTT
+NODE	3341	51	62	62	0	0
+ACTTTAGCGATCTGCTGGAAAAACTGGCCATTGCGCCGGAAAATGTTGCCT
+TCGATCAGCTTATTCGACTGTCCCTGATAAAGATGGACAATCCCCAGCGTG
+NODE	3342	144	358	358	0	0
+TTAATGAGGGTGGTTGGCACACAGTAACCCTAAATAGAACTCTTCAATAGAGGTCACCTTAACATGACCTGGTTTTATGATCAAAGGTACCATATACTATGAAGATATTTTTAAAATGTTACATTGATTGATTAAACAGTTTAA
+TATGGTACCTTTGATCATAAAACCAGGTCATGTTAAGGTGACCTCTATTGAAGAGTTCTATTTAGGGTTACTGTGTGCCAACCACCCTCATTAAAATAGTCACAGATGTAAGTAGAGGAAACCAGATAAAAGGAAAGATCTCTA
+NODE	3343	42	58	58	0	0
+ATCGGGATCCGCGATCTGGATCCCGATTCAGCCTGCTCTTCG
+TGGTTTTCATCTTGATCAAATGTCTTTAAATGTCATATAAAA
+NODE	3344	51	149	149	0	0
+GATGTAATGTCCAAGCAACAGATCGGCGTCGTCGGTATGGCAGTGATGGGG
+CCTCCTGTCAGGTGTGGAACCCCTGCCACAAACGGTCATGGCAGGTTAAAG
+NODE	3345	126	476	476	0	0
+AGCTGGGAAAGCACCTCATGTTTGAGGTGTTCGGTGCCTTCCCGACGGCCCTTGAAAATCGGAGGGAGAGATTTATTCGCACGCCTGGCCGTACTCATAACCGCATCAGGTCTCCAAGGTGAACAG
+ATAAATCTCTCCCTCCGATTTTCAAGGGCCGTCGGGAAGGCACCGAACACCTCAAACATGAGGTGCTTTCCCAGCTCGTCTAACCCTATCTCGGCTTAACGCCATTCCAGGGTTAGACTAGAGGCT
+NODE	3346	51	1863	1704	0	0
+TGGAGAGGATCAGCGAAAACGCATGGAGAGATCGAGCGCGCGTACGTGCTT
+ACCCGATGGCGCTGCGCCGTCGGGTCTATAAATCACCTGTCCGTAGATCCG
+NODE	3347	51	115	115	0	0
+GTGCCGTACAAAGGCAACGCACGAGTTATTAGTGGCTATAAGGGCGTTTCA
+CCGCCCTCATCCTGTTGAGGATATTGCTATGAGCATCACTTTACTTGACGG
+NODE	3348	4	95	95	0	0
+ACCC
+GCCA
+NODE	3349	125	212	212	0	0
+CTAGCGAAACCACACCCAAGGGAACGGGCTTGGAATAATCAGCGGGGAAAGAAGACCCTGTTGAGCTTGACTCTAGTCGGCTTGCACCTCCCACTTATTCTACACCTCCCGGGTCAATTCACAAA
+TAGAGTCAAGCTCAACAGGGTCTTCTTTCCCCGCTGATTATTCCAAGCCCGTTCCCTTGGGTGTGGTTTCGCTAGATAGTAGATAGGGACAGTGGGAATCTCGAAAATCCATTCATGCTCGTCAT
+NODE	3350	1	50	50	0	0
+A
+T
+NODE	3351	1	27	11	0	0
+A
+T
+NODE	3352	1	32	16	0	0
+A
+T
+NODE	3353	261	1645	1645	0	0
+CCCCACCATCTGCAAACTTCCTCGGAAAAGCCGGCGAGCACGCGGTCATGGCAGAGCTTCTATACCGAGGAAGTCTTCAACTCAGCAAAGAAGACTTTCAGAAGAAACTGTCTGGCGCGCTGGCTGCAAACCTCAAGACTAGCTTACCGAGCTTTGCAAAAGTCCCAAGCAAGACGGGCGGATTGAAGAAAGGCGTGTATCGGCTCAAGGTTCGCCAAACAGCTTCGCCCACGAAGCTCCAGCAACCTAAGGAGACGATAA
+ACCTTGAGCCGATACACGCCTTTCTTCAATCCGCCCGTCTTGCTTGGGACTTTTGCAAAGCTCGGTAAGCTAGTCTTGAGGTTTGCAGCCAGCGCGCCAGACAGTTTCTTCTGAAAGTCTTCTTTGCTGAGTTGAAGACTTCCTCGGTATAGAAGCTCTGCCATGACCGCGTGCTCGCCGGCTTTTCCGAGGAAGTTTGCAGATGGTGGGGTTATCGTCTCCTTAGGTTGCTGGAGCTTCGTGGGCGAAGCTGTTTGGCGA
+NODE	3354	172	951	951	0	0
+TCGCAACTCTCTTGAGGTTTTTGAACGAAATTCTGCCTGTCTCATCTTCGTCAAACAACCTGAATGCTTTGAGCATTTCCTCTCTTGGGTCTTTCTCAGCCATCTTGGTGGTCATTAGTTCGAGGAATTGGGTGAGAACATGAGTGATGAGGAGATCCAAGAGATGATCGAC
+CGAACTAATGACCACCAAGATGGCTGAGAAAGACCCAAGAGAGGAAATGCTCAAAGCATTCAGGTTGTTTGACGAAGATGAGACAGGCAGAATTTCGTTCAAAAACCTCAAGAGAGTTGCGAAGGAATTGGGTGAGAACATGAGTGATGAGGAGATCCAAGAGATGATCGAC
+NODE	3355	110	398	398	0	0
+GAGGCTGACAGAGATGGAGATGGTGAAATCAACGAGGATGAATTCGTTAGAATTATGTAGAAGAGGTTGGTCTTCTTCATAATTCTAACGAATTCATCCTCGTTGATTTC
+CTACATAATTCTAACGAATTCATCCTCGTTGATTTCACCATCTCCATCTCTGTCAGCCTCGTCGATCATCTCTTGGATCTCCTCATCACTCATGTTCTCACCCAATTCCT
+NODE	3356	41	2036	205	0	0
+CCACATTTCCAGTGCTGGTAAGCGCATAAGTATTTGCGCTA
+ACCTGCCGTTAGCTTTTATGCTTAGCCTGATGCTCTTTTTC
+NODE	3357	46	46	46	0	0
+GCGCACCCGGATGTCTTTAACCTGCTGCTGCAGGTGATGGATAACG
+CGATCTCATCCAGCAACAGCACCGCATGAGGATGCTTAATCACCGC
+NODE	3358	46	46	46	0	0
+CCGGTAACCACATTGCTATCGTTATTTTTCACATCCGCACGATACC
+AATGATGCCTGGGCCACCGGCAATCCGGTATTTAAAGGCTCCTCGC
+NODE	3359	44	44	44	0	0
+AGCGCCCTTGTCCGGCTAACAATTCTGCATGAGTGCCTCGCTCA
+GGGATGTTTGCGCTCAGACTTCTCTATGAAGGCGTGACGCACCG
+NODE	3360	107	284	284	0	0
+GCTAGTATCGTACCGGTAAACCGGTATTTTCGTACCCAGCACACACATGATACCGTAGGGACCAGCAGATAGGAGCAAGGACCAATGAATTTGGGGACAGGACATGT
+TACGGTATCATGTGTGTGCTGGGTACGAAAATACCGGTTTACCGGTACGATACTAGCGGGACCAGCAGATAGGAGCAAGGACCAATGAATTTGGGGACAGGACATGT
+NODE	3361	36	36	36	0	0
+CTGCTGAAGGCTGGAAGGCCAACCGGATGCAGACAA
+GCTTAAAGAGGTCATTACTCATCATCCACAAAAAGA
+NODE	3362	47	1727	1695	0	0
+TGCCGGTCTTTTCACAATCCTTTTTGCCGCCGCTACTACCGCCTTTT
+AGGCGATAGAGAGTTCGCCCTGACGGAACTCGCGCAGACTTTCCGCC
+NODE	3363	51	107	107	0	0
+AGTAGGGGAACCTGCGGTTGGATCACCTCCTTACCTTAAAGAACTGTTCTT
+TGTTACCTTGTTACGACTTCACCCCAGTCATGAATCACAAAGTGGTAAGCG
+NODE	3364	44	64	64	0	0
+ACGTTACAGGTTGAACTGGTTGGGCGCAGCGAGTGGATGAATCA
+CCGGATACGCCGCCGTTTGAGACCGATGGGCGACTGGTGGCGAA
+NODE	3365	51	65	65	0	0
+GGGCGAAACGTCGTTAATACGAGGATGAAAGAATGAAATGGTTTAACACGT
+CTCATTTCATCGACGATCTCGCCCAGACGTTGCAACTTAGGCGCGGAAACA
+NODE	3366	42	71	71	0	0
+CGGGACGCTAATATGCTGCCCCAGGACCAGGCTAAACGCGGT
+GCCGCCGCTCAACATGAACCTGGCGCGCTATCTGGTGATTCA
+NODE	3367	76	439	439	0	0
+ATAGGAACCCTCTCGGGGGCTCCCAAGATCATAACATGGTAACGGCACTTTCACATGGAGTAAAATTCGTGTGAGG
+TTGGGAGCCCCCGAGAGGGTTCCTATGATCATAACATGGTAACGGCACTTTCACATGGAGTAAAATTCGTGTGAGG
+NODE	3368	16	358	358	0	0
+CGATGCTGAATCAAGT
+TTACCATGTTATGATC
+NODE	3369	3	49	49	0	0
+TCA
+CCG
+NODE	3370	4	50	50	0	0
+CGAA
+CCTT
+NODE	3371	41	57	57	0	0
+GGAAAAAGACAAAGTGAGCAATCAACAGACTGACGATATGA
+TTTTCGCGTCAGATTGTTTTGCCCTGGCTTCGGTAAGAGAG
+NODE	3372	39	225	225	0	0
+GGTAGCGGTGAAATGCGTAGAGATCTGGAGGAATACCGG
+CCCCCCCTCTACAAGACTCAAGCCTGCCAGTTTCGAATG
+NODE	3373	72	219	219	0	0
+GCAGAGCCCACTGGGTTTTGCAATTGGAATGAGAAGCTACCATCTGTAGGATTATGACTGAACGCCTCTAAG
+TGCAAAACCCAGTGGGCTCTGCATTGGAATGAGAAGCTACCATCTGTAGGATTATGACTGAACGCCTCTAAG
+NODE	3374	126	530	530	0	0
+CCCGGGCTAGGCTCCTTACGGAGCTATTCTTCCGCTTATAGTCACACGCTTCGTCGTTGTCACTTTCTAGCATGGATTCTGACTTAGAGGCGTTCAGTCATAATCCTACAGATGGTAGCTTCTCAT
+TCCATGCTAGAAAGTGACAACGACGAAGCGTGTGACTATAAGCGGAAGAATAGCTCCGTAAGGAGCCTAGCCCGGGTTCTGACTTAGAGGCGTTCAGTCATAATCCTACAGATGGTAGCTTCTCAT
+NODE	3375	51	129	129	0	0
+ATAGCGATTTACTCAGATTCAAAATCTTTGGTATGCCGCTACCGCTTTATG
+TCCCCCTTTTTCTCCGTCGCCGAAGCCTGGGTCATGTTGGTCATAAACATT
+NODE	3376	102	178	178	0	0
+TTAAACCATTAGCGTAAGCTGGGCGGTGGAGGAAACCTTAAAAGTTCCTTGCCGAATAGCGAAAGCGAATGGGGTTTCGCAGGTGAAAGACAAAATGGTATC
+GCAAGGAACTTTTAAGGTTTCCTCCACCGCCCAGCTTACGCTAATGGTTTAATTCGCAGGTGAAAGACAAAATGGTATCCTGGCACAATAATAAGGCTGAAT
+NODE	3377	38	1860	1821	0	0
+GCCGCCGCTGACGACTATCCATCAGCCGAAAGATGAAT
+GCCAGCTCAATATCATCATAGCCAATGACTGCCATATC
+NODE	3378	35	35	35	0	0
+GGTGATGTTCTTCGCCTTTAGCTGTCTGTTTACGC
+GGCGAGCGGTCAATAATGGAGGGCATGATAAAGCT
+NODE	3379	120	264	264	0	0
+CCCGTCTTACATCTCCGACCTATCAACCTGGTCGTCTTCCAGGGGACTTCAGGACTTTCGTCCAACGAAACCTCATCTTGGGATGAGCTTAGCGCTTATATGCTTTCAGCGCTAAGCTCA
+TTTCGTTGGACGAAAGTCCTGAAGTCCCCTGGAAGACGACCAGGTTGATAGGTCGGAGATGTAAGACGGGTAACCGTTTCAGTTGACCGATACTAATGGACGAAAACTTGACCACTGAAA
+NODE	3380	42	43	43	0	0
+CATCGTTATCCCATCAATGGCCGCGAGATCTGCGTCTTTTTT
+CTGCATAAAATCGGCGTAGTGTCTGCCGATGGCGCCACCACG
+NODE	3381	44	68	68	0	0
+TTGAGCTGCAATCAGAGCGAGTGGTGGCAGTGCCGAAAAAATGG
+AGTTGTTTGCGCGATGTGTACAGTTCGCGTCGAAACGCCAACGC
+NODE	3382	44	54	54	0	0
+CGTCCACATTAACGGGAGATGTCATAATACGGTCACTCCTTTCA
+GGTGCTGCGCGGGTTAAGCGTAGCGGCGCGCCGGATTGCCTGGC
+NODE	3383	46	67	67	0	0
+GCCGGCGGAGGATCTAAAGGCAAATTATGGAGCCAAATACTTGCCG
+CCAGAGAGTCGGCCTGTACGCCGGAAAACGCGGCAATTTGCTGTAA
+NODE	3384	51	78	78	0	0
+GAAGTTTCAGAATCGTTTAGTCGGCACGATTGTGTTAGTCGCGCTGGGGGG
+CCTCGCCACCGATTCTCCCCGCGTCTATCACTTCCATAACATGTGCGACGG
+NODE	3385	30	55	55	0	0
+TACTGGCAACCGGCAGCGCGCAGCAACTGC
+CCCAGCCAGTCAAAACGCTCCGCCTCTTCC
+NODE	3386	51	54	54	0	0
+GGTAATGATATTCTGTACTGCCGCCAGCCAGCGGGCGGGTTCAGAACGCTC
+CCCTACACTACCGATGGCATCGTCCCCGGACCATACGTTAATAACCCATGG
+NODE	3387	46	46	46	0	0
+ATACGTTTTACCGAGCATGATGTCTTTTCCGGTGTGTCCGTGACAT
+CGCTGTTATTAGGTTTGCCTATCGCGACACTGGCGTTAATTGTGAA
+NODE	3388	10	10	10	0	0
+GGGGAAACGA
+TTTTCCCTCT
+NODE	3389	159	253	253	0	0
+CACCTGGCGAAGACAGCATCATCGGCTGGCTATTGCAGACCAAGGAGCTGATCATGATCATTTTTGCCAATATTCTGCTCGACAAGCAGATACTGACAAAAATGATCATGATAGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTC
+ATGATCATTTTTGTCAGTATCTGCTTGTCGAGCAGAATATTGGCAAAAATGATCATGATCAGCTCCTTGGTCTGCAATAGCCAGCCGATGATGCTGTCTTCGCCAGGTGCCCAGTTGAGTATCCGGCCGGCTATTGCAGACCAAGGAGCTGATCATGAT
+NODE	3390	135	429	429	0	0
+TCCATGAATAGCTTGAGCAAAAATGGAGCAGTCTAAAAAGTAAAATGGTCTCCGACTAACACGATTCCGATGCCGTGCTGGTTGTAGTCGGAGACCATTTTACTTTTTAGACTGCTCCATTTTTGCTCAAAATAT
+ACAACCAGCACGGCATCGGAATCGTGTTAGTCGGAGACCATTTTACTTTTTAGACTGCTCCATTTTTGCTCAAGCTATTCATGGAATATTTTGAGCAAAAATGGAGCAGTCTAAAAAGTAAAATGGTCTCCGACT
+NODE	3391	215	544	544	0	0
+ATGTTTTTATTAAACAGTGAGATTCCCCTTGTCCGCTTCAGTTCTGAATTGATTGTTAATCGTACAGTCTCTCACATCCTCGGTTCCAAGAGCTCGATGACAGTGGCGCGAACCTCCATCATTTCACAACAAAGAGACGTTAGATAGAGCTCCTGGAACCGATGATGTGAGAGACTGTACGATTAACAATCAATTCAGAACTGAAGCCTCGTATG
+TCATCGGTTCCAGGAGCTCTATCTAACGTCTCTTTGTTGTGAAATGATGGAGGTTCGCGCCACTGTCATCGAGCTCTTGGAACCGAGGATGTGAGAGACTGTACGATTAACAATCAATTCAGAACTGAAGCGGACAAGGGGAATCTCACTGTTTAATAAAAACATAGCATTGTGATGGCGTGTAAACGTTTTGACACAATGTGATTTCTGCCCCT
+NODE	3392	51	76	76	0	0
+AGCCGCTAGCGGCGTTCAAAACGCTAACGCGTTTTGGCGAGCACTGCCCAG
+TGCCCGAAGGGCGAGCGTAGCGAGTCAAACCTCACGTGCTACGTGTACGCT
+NODE	3393	51	74	74	0	0
+GCGGCACCGCAATCAGCGGCAGACGCGGGCGTAATGTGCTGCGATCGGTCA
+CCCACCGCCGGAACCGGTTCTGAAACCACCAACGTGACGGTGATTATCGAC
+NODE	3394	105	194	194	0	0
+AACCCGGTCGCAAGGCTCTGGGTTTCGTTGAGGGGAAGGTAGAGAAAGTCGATGCGGACACGGCTTACCGTCATCACCCGGTAGCGTCCGTCGATCAGCTCGCCC
+GCATCGACTTTCTCTACCTTCCCCTCAACGAAACCCAGAGCCTTGCGACCGGGTTTCGCTATGCGGGCGGGCTGGATGAGCGGGGTGAAATGACCGCCTTTCTCG
+NODE	3395	2	20	20	0	0
+GG
+CC
+NODE	3396	33	345	345	0	0
+CGATATTGCATTTCCGTTTCAGTATTTCTACCT
+GTGGGCAGGTTTTGAATCCTACCCTGTCGGAAG
+NODE	3397	51	63	63	0	0
+CTAGCACTTATGATATAAATACCTTACTCTTTAGTTTTTGTCTTAATTATA
+GCAGTATTGGCCTTCTGCCCTGCCGCTAAATATCTCATTGTTGTTAGCCTA
+NODE	3398	51	81	81	0	0
+GCAATACTGATAGCACTTATGATATAAATACCTTACTCTTTAGTTTTTGTC
+CCCTTCTGCCCTGCCGCTAAATATCTCATTGTTGTTAGCCTAATAATACTT
+NODE	3399	2	6	6	0	0
+GC
+TT
+NODE	3400	1	5	5	0	0
+G
+A
+NODE	3401	51	83	83	0	0
+GTGGTAGAGCAGTTGACTTTTAATCAATTGGTCGCAGGTTCGAATCCTGCA
+CCTGAGCTAACGACCCGAGTGGTGGGTGATGACGGGATCGAACCGCCGACC
+NODE	3402	51	144	144	0	0
+GAAGCGCCCACTCATGGGGGCCATTGCCGAAGAATTCGCGGATATCGTCGT
+CCCTTTGTCACGATCCCCGCCACAGCCAAAGACGCACCACAATTTTCCGGC
+NODE	3403	120	415	415	0	0
+TTCAGTCATAATCCTACGGATATTTTTAATGCGGTTGCTGAGTAGCCAATGCCGCGAAGCTATCATCCGTAGGATTATGACTGAACGCCTCTAAGTCAGAATCCATGCTGGCAAGCGACG
+ACGGATGATAGCTTCGCGGCATTGGCTACTCAGCAACCGCATTAAAAATATCCGTAGGATTATGACTGAACGTCGCTTGCCAGCATGGATTCTGACTTAGAGGCGTTCAGTCATAATCCT
+NODE	3404	51	58	58	0	0
+CGACAAAAGCACTGTTCAAATATGTGCGCGAAGGGAAATATACTTTCTGTA
+GGCGGCGGCAGAATATTGTCGATGTATTCATCGGTATTCTGGCGAATTTTC
+NODE	3405	2	2	2	0	0
+TG
+CC
+NODE	3406	46	2129	219	0	0
+TTACACGTAACGCTGCTCGACCCTCAGTTGGAACGACAGTTGGTGT
+ACCAGCCGTACGCCGCGCTCGCCGCGACGCTCGTCCCAGGTTTTAA
+NODE	3407	12	866	847	0	0
+GAAGACAGGGCC
+CCTACTCTCGCA
+NODE	3408	51	187	187	0	0
+GACTTAAACAGACGGAAGTGCCTGGGTTTGATTCTGGCTGTTATCAGAGCG
+CCCCGTCGCTCTCCGGTATCCATATCCAGTTCAAACAAGGTATCTGGCGTC
+NODE	3409	36	37	37	0	0
+TGGTACAGTATGACCGCCAGTTGTGGAAAAGCGTGT
+GCGAAGCAACTCAAGCTCCAGCTCACAAATCGGTTC
+NODE	3410	162	6706	6621	0	0
+AAAGCGTCATAAAGAGCAGCAGGAAGCCGGCGATGGCCCAGCGCAGCGGCGAGCGCATCGCCGGGTCGATGCTCTGCTGCATCCGCGTCGAGCCCTGGTGCAGGGTGTTCCACCACTCAACGGAATAGTGGATAACCGGCAGGTTCACCACGCCGACCAGCA
+TGGAACACCCTGCACCAGGGCTCGACGCGGATGCAGCAGAGCATCGACCCGGCGATGCGCTCGCCGCTGCGCTGGGCCATCGCCGGCTTCCTGCTGCTCTTTATGACGCTTTCGCTGATGCGGATGCGCAACCTGATTTTACTGATGGAAAAACGCCGCCCG
+NODE	3411	7	301	265	0	0
+CCAGAAT
+TGAGTGG
+NODE	3412	17	47	47	0	0
+GTATTTTGTGCTGCCGC
+TCCAGCCGATAGTTAAA
+NODE	3413	36	36	36	0	0
+ATTTAGAGTGATCCACCACCAGCATCACGTGGCGCG
+GTGACGTGGATTGAGCACTGGCTGGATCTGCGCGGC
+NODE	3414	42	42	42	0	0
+TTTCAGCGTCGCCACGCGGCTGCGCAGGCTGGCGGTAAAATC
+GTATTAGTTACGCTTGACAGAGTGTAAAACAAAACATTTAAA
+NODE	3415	41	41	41	0	0
+CATAGCCGGGAAATCGCCCTGCAAACCAGGTTGTCTTCTTC
+CACAGCGGGCGCGACAGAAGCGCTGTATGCGGCGATTACCG
+NODE	3416	108	122	122	0	0
+TTCCAAACCTAAATATGACACAAAGACCGATAGCGGAGAAGTACTTCGAAGGAAAGTTGAAAAGAATCACGAAAGTGAAGTTAAAAAGTACCTGAACACGTAAAAGGA
+AACTTTCCTTCGAAGTACTTCTCCGCTATCGGTCTTTGTGTCATATTTAGGTTTGGAAGAAAAGAATCACGAAAGTGAAGTTAAAAAGTACCTGAACACGTAAAAGGA
+NODE	3417	51	56	56	0	0
+CGCTGCGATGGTTTAACGCAACGGCGAAAACAGTCCCCTTCATACATAAAC
+GAGCTTGATGCCTGGCGAGAGGCTTTCTCTCAGCCTCCCTATAATGCGCCG
+NODE	3418	43	43	43	0	0
+GAAAACAGTGTTGAAGTTCATCGTCTCAGGAAGTCCGTCGGTC
+GTGGATACTTAAACTTCACGCTTTTAGCAAAGAATTCACCTCT
+NODE	3419	72	186	186	0	0
+CTGGAACTGAAGACGGTTCCAAGGGTTTGACTGTTCGTCAATGAAGGCGGTACATGATCTGAGTTCAGAACG
+TTGGAACCGTCTTCAGTTCCAGGGGTTTGACTGTTCGTCAATGAAGGCGGTACATGATCTGAGTTCAGAACG
+NODE	3420	51	139	139	0	0
+GGTTAAACCATTTCATTCTTTCATCCTCGTATTAACGACGTTTCGCCATCA
+CCGTTGAGCCACAACCGCTGGCTGGAGCAGGAAACCGACCGCATCTTTAAT
+NODE	3421	34	630	567	0	0
+TGAAACTTAAAGAAATTGACGGAAGGGCACCACC
+CCCCCCGGAACCCAAAGACTTGTGATTTCTCATA
+NODE	3422	13	30	30	0	0
+GGGAAAGCTACCC
+AACCTCATCCAGA
+NODE	3423	51	88	88	0	0
+GGGGGCTGGAGAAATGTAAGTGGACGGTCAACGCGCTGATTAACCACCATT
+CCCGCGGCCTCAGGCGTATCTTCAATCACGCATTCCGGGTGTTCGTTGGTG
+NODE	3424	47	51	51	0	0
+ATGTGTGAAAGGCGTTGCCATCAGTATCTCAAAACTGACTTACGAGT
+TGATGGCAACGCCTTTCACACATTACCGCGCAAGTGGCGTCCCCTAG
+NODE	3425	51	76	76	0	0
+GTATATATTGCCATCATTACGCTTACCGGCGTGTCATTAGCTTACCTTTTC
+CCAACGTTGTGACAACAGTGCCAAAGCGGGAAAGACAGGTAATGGCCCCAT
+NODE	3426	51	56	56	0	0
+AGCCTGATGCGTCAGCCACAGTCGCGTATCAAACTCCAGTTGATGGTACTG
+TCTGTCGGCACAATAAATTCTGAAAATGCCCCTTCCCCCGTATCTTTTTAA
+NODE	3427	27	765	682	0	0
+GCTCAATGCGGAATTACGCGCCGGCGT
+TCCACCTGCCGCGCCCGCGCCGGGAGC
+NODE	3428	51	73	73	0	0
+GAATGGCAATGGTCATGGATCCCTCCGGGAAATTAAACGTGGTGGCGGTGA
+CCCGACGTCGTCCTGCGTGACGCCCACCAGTCTCTGTTCGCCACCCGCCTG
+NODE	3429	50	58	58	0	0
+ATTGATTGCGCTGGCCGTGGCGGTTACTACCCGTTGCGATGGTTGTCTGG
+CTGCTTTTGCACATAACCCTGCTGTACCTGACGATAATTGCGCGTTACCG
+NODE	3430	5	5	5	0	0
+AAAAC
+CCCCT
+NODE	3431	51	77	77	0	0
+CGACCATCCAGGTTGGTGCTAACGACGGTGAAACTATCGATATCGATCTGA
+GGGGTGTTGTCCTGCGCCAGAACTTTCACGCCGTTGAACTGAGTCTGGCCG
+NODE	3432	51	141	141	0	0
+GTCAGGTCCGGTGAAAGCGCAGGCGGAAGCGGAGGGGCTGGACAAGATCTT
+CCCCGGCACCACCAGCGCCTGCACGCCCGGCGCAACTTTGCGCCCTTTGGC
+NODE	3433	14	113	113	0	0
+TGGTAAATGCTTTC
+ATCGAAGATGATTA
+NODE	3434	12	74	74	0	0
+GAAAGTTAGGGG
+GCAGTAGTTCGT
+NODE	3435	46	46	46	0	0
+CCGGGAACAATCACCATCTTGAGCCCCAGTTCACGCGCGCGCTGAA
+TAACGCGTAAACAGGCTGGCGACGCGTGGGAAGCTGCCGCGCGTCG
+NODE	3436	16	820	48	0	0
+AGCCGCTTAAAGAAGG
+CCAGCGCGTCATTGAC
+NODE	3437	51	84	84	0	0
+GATTGCTCTTGCCATACTATTGCTTATACCGCTATTCAGGTTGCCTATTCC
+CCCCGATGCTGATATCCTTGCAAAATCCAGCCAGTCGTCCTCTTTTCGAAA
+NODE	3438	5	5	5	0	0
+TCAGA
+CCCCT
+NODE	3439	185	408	408	0	0
+AAGAATTCATGAAGAGGACGTTCTCTGTCAGAACTCTTGTCGCTGATGTCCCTCTTATCACTGAATCTGCAAGCATTAAAATGTGCAGGCCCCAGAAGGACATTGACTAAATCATCTATGTCCTCAAGAATTGGTGTGCGGGCGTCAATATTAAGCTTATGGACATCAGCGACAAGAATTCATGA
+ACCAATTCTTGAGGACATAGATGATTTAGTCAATGTCCTTCTGGGGCCTGCACATTTTAATGCTTGCAGATTCAGTGATAAGAGGGACATCAGCGACAAGAGTTCTGACAGAGAACGTCCTCTTCATGAATTCTTGGCGCTGCTTCTCAATGAGTGCTGCTGCTTTTTCAGCAGCACTCATTGAG
+NODE	3440	32	39	39	0	0
+GTGATTGCTCTTACCTTTCACCGCGGCTTTAA
+CCCACCGGTCGCAGCTATGCTATTGATCCCAT
+NODE	3441	105	153	153	0	0
+CTTGAACTAGGAATTCCTAGTAAGCGCTAGTCATCAACTAGTGCTGATTACGTCCCTGCAAAATGTACACACCGCTCAGGACATCTAAGGGCATCACAGACCTGT
+GGACGTAATCAGCACTAGTTGATGACTAGCGCTTACTAGGAATTCCTAGTTCAAGATCCACAATTACAAAGATCTATCCCAATCACGGCACTCACTAAAAAGATT
+NODE	3442	45	45	45	0	0
+GTACGGGCGTCTCCATGCCAAACAAACAGCTCGCGTGTGAGTATG
+GTTGTTTTAGCTGCTGCAGTTTGGCGAGCGTAATGCGCTCGTCCA
+NODE	3443	41	81	81	0	0
+CCAGAGTCTGGGCGGTCTGATTGAAGCCTATGAAGCCGTCG
+CCATTTTTTGTGATTATGCCGGATTCTCCACGCTGGACTCC
+NODE	3444	51	91	91	0	0
+GGCTGATTTCCGCAAAAGACTGGAAGCGACGAATGCGGCTGTCAAGGAAAC
+CCCGAGCCGGGGCCGCATTTCGGTCTTGGCCTTGAGGCTTACGCCACCTGG
+NODE	3445	51	52	52	0	0
+GGGGAGTCTCGGCGGCATGAGCCAGATTCGCAGCACCCATCGCCAGGGTAG
+CCCGCCGCGCCAGCGGATGCGAAGCCAATGATGCAGCATAAAGGTAAATTT
+NODE	3446	18	18	18	0	0
+CATTGAGCATCAAACTTT
+ATTGAGACTTGGTATTCA
+NODE	3447	60	281	281	0	0
+GAATGGATCAATGAGATTCCCACTGTCCCTATCTACTATCTAGCGAAACCACAGCCAAGG
+TGATCCATTCATGAGATTCCCACTGTCCCTATCTACTATCTAGCGAAACCACAGCCAAGG
+NODE	3448	7	46	46	0	0
+GTACGGG
+ATCTCAT
+NODE	3449	77	240	240	0	0
+CTTGGAAGAATCAGCGGGGAAAGAAGACCCGTACCCTTGGCTGTGGTTTCGCTAGATAGTAGATAGGGACAGTGGGA
+TCTTCTTTCCCCGCTGATTCTTCCAAGCCCGTACCCTTGGCTGTGGTTTCGCTAGATAGTAGATAGGGACAGTGGGA
+NODE	3450	18	58	58	0	0
+GCTGATTTTGGGCGTCGC
+ACCGCCCAGCACCGCCGC
+NODE	3451	51	57	57	0	0
+AGCTGATGGTGGTGCCGCCGGTGTAAGAATTGGCGCCGGAGAGCGTGAGCG
+TGCGGCACGCTGGTCGCCAGCAACGTTGAGGCGCTGGGCAGCGGCGACGTC
+NODE	3452	49	50	50	0	0
+AAACCCCGGCCCCACCTGTATGCCGATGGTATAAACAAAAAGGATCAGG
+CCGCTATTCGCCAGTAGCTTTATCGTGCAGCACGCCTCGGTGATGATGT
+NODE	3453	10	1426	124	0	0
+TATACTTTTT
+TCTGCATCAG
+NODE	3454	3	66	58	0	0
+TGC
+AAG
+NODE	3455	11	124	124	0	0
+ATTTGGACGTG
+GTTCTCATTTG
+NODE	3456	9	162	162	0	0
+ACGTTCCCT
+TACTGATGA
+NODE	3457	43	56	56	0	0
+TTTCGAAGTTCCGCAGCTGGTCACCGATGCGCTGGCGCACTAC
+CCGGGGCATTCGCATCGTTCCCGACCAGGAGATTAGCGGTCTG
+NODE	3458	27	51	51	0	0
+GAAATTAGAGAGCTTCGTAACCGAGTT
+ACCCGCCATCAAACGCTGGTAGTAACG
+NODE	3459	51	60	60	0	0
+GTAGACCAAACCATGAAACCAACATAAACATTATTGCCCGGCGTACGGGGA
+CCTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTA
+NODE	3460	10	1431	38	0	0
+CCGGCGCGCA
+GTCGGTGCAG
+NODE	3461	45	73	73	0	0
+ATCTGCTTGCCCGGCATCTGTCGCCTGATATCCAGCACTGGTTTG
+GATTGGCGGAACTGGCCCAACGGATGGGAAGAACCGCGTTTCTTA
+NODE	3462	51	100	100	0	0
+GTCATTAGTACCGGTTAGCTCAACGCATCGCTGCGCTTACACACCCGGCCT
+CCCGTGAGGCTTAACCTTACAACGCCGAAGATGTTTTGGCGGATGAGAGAA
+NODE	3463	51	77	77	0	0
+CGGCAGACTTTGGTACAGGCCGGGTCTTCGCAGTGGTTGCACGAAATGGAG
+GGAGCGGCGCGATGCACAAGCGCGATGACGGTTTTGTGGTGGTGAACGAAG
+NODE	3464	40	5896	111	0	0
+TCGATAAGAACAAGAAATGATGAGAATATAGAAAAATTAT
+TCCGCATGCCACTTTTCATAAGTTTCTTTCTTCATAGCCC
+NODE	3465	40	118	118	0	0
+CATTCCGTGGTGTCATGAAGGATTCTGGATCGAGCGCGAT
+ACCAGCCGTAGGGCGCGATTAGGGCAAGGAAATCAGCCAC
+NODE	3466	7	7	7	0	0
+GGTCAGA
+CCCTGCC
+NODE	3467	51	77	77	0	0
+ACAAAGTTAATGGCTTTCGCACTTCGGCGCTGTTCCCCGGTCACGCTATCC
+TCCTGATTTACGGGATGAGCGCCTTCGGTCTTTCTCGCCAGCTTAATATTC
+NODE	3468	51	155	155	0	0
+GAGTATCAAGCGCCTGGAGTGCGTGGAATATCCTGAACTGGGTATGGAGGC
+CCCCTGCGCCAGAACGGCTGCCGGGCCGCCGATACTGCCCAGGTAGAAGCC
+NODE	3469	13	1749	87	0	0
+GGGACCGTTCGTT
+ATTTTTGTAATAG
+NODE	3470	51	74	74	0	0
+GGGTCCGCCAGGATAGGGGCCAGCGCTGATTGCAAATTATCCGCAAGCTGG
+CCCATTTTCCCGCCATGCTGACCGCAGAGCAGGTCTCGACGCTTAAAAATA
+NODE	3471	43	43	43	0	0
+GCTGGACCTGGGCGTGTACGGCGCGCCGGAAACCTTCCTCATC
+GCAGGCAGCAGATCGTGGAAATACCGGCAATTTGTAACGATTG
+NODE	3472	18	30	30	0	0
+GGCCTGCGGAATGTGCTT
+GCTGGAGTACCTCAAGTA
+NODE	3473	5	5	5	0	0
+GCCGG
+CATCC
+NODE	3474	101	405	405	0	0
+GATGATGTTGACCTGTCTGAAAAAGGCGTAAGCGAAGCAAAAGCAGCGGGGAAACTGCTAAAAGAAGAAGGTTTCAGCTTTGATTTTGCCTACACTTCCGT
+CCCCGCTGCTTTTGCTTCGCTTACGCCTTTTTCAGACAGGTCAACATCATCCCAGCCGGTGAAACGGTTCTCTTTGTTCCATTGACTTTCACCGTGACGTA
+NODE	3475	51	272	272	0	0
+GGAAGGCAATCAGGCCGAAGTAGTTCAGCGTCAGCGCCCCCAGCACGGTGG
+CCCCTGCCGCAGGCGGCGGCCATCGGCATTATCGGCGGCGCGGACGGCCCG
+NODE	3476	135	306	306	0	0
+ACTCCCTCCCCAACTAAAGGATTGGAGCGACAAGGGTTCCCCTAGGAACAAGGTACAAGATACCTACACTGACAGAGGTACGTTGCCAAACGAGATAGTGAAGTCTGGGTATTGTCCCGAGTCCATACCAGCCAG
+CAACGTACCTCTGTCAGTGTAGGTATCTTGTACCTTGTTCCTAGGGGAACCCTTGTCGCTCCAATCCTTTAGTTGGGGAGGGAGTCCAAACGAGATAGTGAAGTCTGGGTATTGTCCCGAGTCCATACCAGCCAG
+NODE	3477	42	48	48	0	0
+CCGTTGATGATTTCGTTAAAGCCGTCGTTAATATCCGCCAGG
+GTTCAAAGGTGTCGCCGCGATCTTCCGCCCGCTGCTGTTGCC
+NODE	3478	2	63	63	0	0
+TC
+AC
+NODE	3479	12	12	12	0	0
+GATTGACCGGCG
+ACCGCCACGCTG
+NODE	3480	41	64	64	0	0
+TTCGATGACGCCGAAACTTAACCCGCTCCCGCCGTGTACGG
+TACGTTGCTCATCGCCCTCGTCCCCGGCTACCAAACGATCG
+NODE	3481	51	53	53	0	0
+GGGTAAAGAAAGCACCTGTACAGTGCGTTACCAATTAGCTGAAACCACGGC
+CCTGCCCCACACCACGCGAAGTTCGCCTTGCTGTTCTACGCCGCGCACGTA
+NODE	3482	51	72	72	0	0
+GCACGCTAAACAGATATTTCTGCGGATCGGTGACGCGGTATTGCACGTTCA
+CCCAGCCCGGACGATAGCCTGCGTCAGGCCACCGACAGCGCGCTGCGTGGC
+NODE	3483	51	115	115	0	0
+GAAATTCTATGCGTTGCCGCAGTCTCCGCAGTTGTTCAAACAGCTCCTGAT
+CCCTTTGTGTACGCGGGACGGTACCAGGTAATCGCGCGCGCCTTCCGGGGT
+NODE	3484	75	121	121	0	0
+CAATGCAGATTGATGATCTGCGTTTATTATGTCCCTGCCCTTTGTACACACCGCCCGTCGCACTTACCGATTGAA
+AAACGCAGATCATCAATCTGCATTGATTATGTCCCTGCCCTTTGTACACACCGCCCGTCGCACTTACCGATTGAA
+NODE	3485	39	99	99	0	0
+TGGTCCGGTGAAGGCTCGCGATCAACTCCCAATGAAGGA
+AGTGCGACGGGCGGTGTGTACAAAGGGCAGGGACATAAT
+NODE	3486	5	9	9	0	0
+GATTC
+TACCT
+NODE	3487	8	11	11	0	0
+GAAAAAAA
+ATTTTTTT
+NODE	3488	28	34	34	0	0
+TCATCCGCTGTCTGCCGCCGTAGATCCG
+GATTCATATCGTCTTTTTCATACCAGGT
+NODE	3489	28	1428	36	0	0
+ATTAAGGACTCCTTTATGCTTACTGTAA
+ACTGGCGATCGCCCCACCGGCTCGCTGC
+NODE	3490	45	76	76	0	0
+AGCCAGCGCTAATGCCTCTTTAATGGCGTGCACGTCCGGCGCGCA
+CTCCGTCCAGAGCCAGATGGAGAACCTGGCGGTGGACATGGGCTA
+NODE	3491	6	2201	24	0	0
+GGATGA
+ACCAAC
+NODE	3492	47	100	100	0	0
+CCGTATTATGGGGGTCACTTATCCCTGTTGGCATTGCATTTCTGTGT
+CCCAGCCATAAAGATTCAGCAACGCACCGGATGAAAACGACCCGACA
+NODE	3493	144	1080	1080	0	0
+TTGCAAACGTGCGCACCATTGTAGCACGTTTGCAACCCTGGGCGTAAGGGCCATGAGGGCTTGACGTCATCCCCACCTTCCTCCGGTTTGACACCGGCAGTCTCGCTAGAGTACTAGATTGCTCTGAGCAACTAAAGATAGGGG
+GTGTCAAACCGGAGGAAGGTGGGGATGACGTCAAGCCCTCATGGCCCTTACGCCCAGGGTTGCAAACGTGCTACAATGGTGCGCACGTTTGCAACCCCTATCTTTAGTTGCTCAGAGCAATCTAGTACTCTAGCGAGACTGCCG
+NODE	3494	5	48	48	0	0
+GAGGG
+AAAAA
+NODE	3495	46	141	141	0	0
+GAATATAACCAAATTATTACCATCTGAATTATTAGGGCAGTTATTA
+CCCAGCCGTTAGATACTCTCATCATTAAAGACAACACTATCACGGT
+NODE	3496	9	14	14	0	0
+ATTGTTTAC
+CCTGATGCC
+NODE	3497	19	62	62	0	0
+TTACTATCCTTCTCACTGG
+CCCCCGCCAGGAACTGGAA
+NODE	3498	26	53	53	0	0
+GAATAAATAATGATGAAGCGCAAAAT
+ACCTGCCACTGCCGTCAATAAATTCC
+NODE	3499	42	42	42	0	0
+AGTCGCTCGTAGGCGCTGGTATAGCAGGCACCGCACACGTTA
+CATCGCGAATTTTGGCCTGGCAACGAGGACAATAAGCGCTTT
+NODE	3500	51	98	98	0	0
+GTTGTGGTTGGTTTCCTTCATTGGGAGTTGATCGCGAGCCTTCACCGGACC
+CCCCGAGCCTTCACCGGACCATTCAATCGGTAGGTGCGACGGGCGGTGTGT
+NODE	3501	51	101	101	0	0
+AGACTGGTATGCGAATCCAGTTCCCCAATCCTGGCGCTTTGCCTTCGCGAC
+TCCCGTGGATTATTAATGATAACTTCGTAAATAACCTTTCAGACAATGAGG
+NODE	3502	51	53	53	0	0
+GGCTGACATCCACGTTATCCAGTACTTCGTCCACCAGATAATCAGAAAGGT
+CCCCGACATTTTTTACTTAAAAGCGCGATCTTACCCTCAATGAATGACGCA
+NODE	3503	28	123	123	0	0
+GTTTTGCTTTTACAGGGCGGCAGGATGA
+TTTTTGCATGAAGAGGTGAAACTGACCG
+NODE	3504	66	91	91	0	0
+GAGCGTTACAGGATAACGCCTGGCAACAGGCGACCTGGCATTGGTTACGGGAGGAGGGCGCCCGGG
+TTATCCTGTAACGCTCCCTCACCGGCCAGCGCCGCCAGCGCGTTAACCGACCACGGCATTTGTTGG
+NODE	3505	51	194	194	0	0
+GAAAGGAATCATGGCTCTGTCAGCTTAATTTTTTTGATTCTTCGTGTTGAG
+CCCTGCCGTAAATGCTGATCATGCAGCGGAGAAAAAGAGAACACTTGGTCG
+NODE	3506	51	59	59	0	0
+AATATAAGCATATAAGCATATAAGCATATAAGCATATAAGCATATAAGCAT
+TCTTATATGCTTATATGCTTATATGCTTATATGCTTATATGCTTATATGCT
+NODE	3507	51	100	100	0	0
+GAAGCAAAATTCATCCGTAAGTGTGAATCTTGTCTGGGGGGGGTTGCTGCG
+CCCGCCTGCCTGTGGATCATCTTCCAGTTCAGGAACAGCCTCGAAGTATAC
+NODE	3508	14	14	14	0	0
+TTATGTACTATATA
+CCCCGCCAGTCTCA
+NODE	3509	51	172	172	0	0
+AAAAGCCGATGACGCCGATGTTGCGTACATCGCCCTGCGCGGAGTGGGCCG
+TCCGCCTTTGCATTGCAGGGTAAAGCAACGAATACGCTACCGCCTTGTTCC
+NODE	3510	14	17	17	0	0
+TGTCAACCGGAAAT
+GGGAACAGAGTCTT
+NODE	3511	108	383	383	0	0
+CCAACCCGTGTGAAGCCCTACCCATAAGGGCCATGAGGACTTGACGTCATCCCCACCTTCCTCCGGTGACAAACCGGAGGAAGGTGGGGATGACGTCAAGTCCTCATG
+AGGTGGGGATGACGTCAAGTCCTCATGGCCCTTATGGGTAGGGCTTCACACGGGTTGGCGGCCCTCTGTATGAACCATTGTATGACGTGTGAAGCCCTACCCATAAGG
+NODE	3512	51	59	59	0	0
+ATCTTTTACCTCCTTGCCGCTGGCTTTCACCACCACCAGCGTATTCGGATA
+TTGGCTGGAATGTTCTGCCGGACAATTTAATCAGATTGATATTCACAGCAA
+NODE	3513	87	392	392	0	0
+CTGCTTCACCAACGCCAAACGCCCAAGTTCCAATCGTAAAATCAAATCTATCGAAATACTTACGATGATGTATTTATTAGTAATTTA
+ACGATTGGAACTTGGGCGTTTGGCGTTGGTGAAGCAGAAAATCAAATCTATCGAAATACTTACGATGATGTATTTATTAGTAATTTA
+NODE	3514	51	77	77	0	0
+GGACCTGGGCGTAGGGAACGCAACCGCTGCGCCATTAGTTTGCGGGGGTTT
+CCCCAGCCATAATGGATTAGGTTGCTTATGAAGCGCGTGTATTAAAGGATC
+NODE	3515	47	2165	144	0	0
+TGAATATTTACAAGCCTCGCAATCCGAATGGGATATATTTATTGAGG
+ACCCCCTCCACTACCTGACGGTCATAGGCTTTATTCGCGTTAAATAA
+NODE	3516	18	1654	72	0	0
+TTTAATCACAATATTCGG
+TACCGGTTATCTGGCCAA
+NODE	3517	47	61	61	0	0
+GCAACCTGAGCTGCAAACGGAGTGGATTTGCGAGAACCACGGAAACC
+TTCGCTTGCGCTGACCCCATCAATTAACCTTCCGGCACCGGGCAGGC
+NODE	3518	46	68	68	0	0
+TAATATAACCAAATTATTACCATCTGAATTATTAGGGCAGTTATTA
+CCCAGCCGTTAGATACTCTCATCATTAAAGACAACACTATCACGGT
+NODE	3519	143	323	323	0	0
+GACATCGAGGTGCCAAACGATGCCGTCGATATGGACTCTTGGGCATCATCAGCCTGTTATCCCCAGCGTACCTTTTATCCGTTGAGCGATGGCCCTCCCACTTGGGACCACCGGATCACTATGACCGACTTTCGTCTCTGCTC
+GCCATCGCTCAACGGATAAAAGGTACGCTGGGGATAACAGGCTGATGATGCCCAAGAGTCCATATCGACGGCATCGTTTGGCACCTCGATGTCGGCTCATCTCATCCTGGGGCTGGAGCAGGTCCCAAGGGTATGGCTCTCCC
+NODE	3520	51	92	92	0	0
+GCACGGCAATTTCCTCCATGAGCGCCACCTACGGCCACCCGGCCACCGAAG
+CCCACGCCGTCAACGCCCGCCTCGATAGCCTTCAGCAGGGCCATCTCCGCC
+NODE	3521	8	54	54	0	0
+ACCGAATT
+GGGGGTCG
+NODE	3522	16	59	59	0	0
+CTTTTACAACCACTGA
+CCCTGCCTGTCACGCA
+NODE	3523	100	823	734	0	0
+CTATCTACCGTGAGAGTAAAAAACTGCGAGGAGTAAAGTATAGTACGAGAGGACCAAACTGTCTTACGACGTTCTGAACTCAGATCATGTACCGCCTTCA
+TCTCGTACTATACTTTACTCCTCGCAGTTTTTTACTCTCACGGTAGATAGGGACCAAACTGTCTTACGACGTTCTGAACTCAGATCATGTACCGCCTTCA
+NODE	3524	45	45	45	0	0
+ATACGATCAAATTCTGGCAGGCGGAAAATTCGGCGTTAACCAGGA
+ACCGTTATAGCGTTCCAGACGCGGCGAACCATATTCCCAGCGGGA
+NODE	3525	51	109	109	0	0
+GGATGGTTTACACCCACGACTCCATCGGTCTGGGCGAAGATGGCCCGACGC
+CCCTGACGTTGTTTCATCAACGCTGCCATACGCACTGCGTTACGGGCATAT
+NODE	3526	6	22	22	0	0
+TCAGAA
+TCCAAT
+NODE	3527	51	87	87	0	0
+CCCTTCCTCTTTTGCGTCATACGGTACCTGGGCGCGGACGGCGGATAAACT
+GTCTTCGCGCACGCCCTGATAGCGCTCGTTCATCACCCATGTGCCATCTTT
+NODE	3528	3	13	13	0	0
+GAT
+CGA
+NODE	3529	16	6032	60	0	0
+TGGTATTTCAAGGTCG
+AATCCGGGTTGCGGAC
+NODE	3530	5	1846	7	0	0
+ATCTG
+ACTTT
+NODE	3531	40	40	40	0	0
+TCACGAAGACTTTCCTTATCAGGAAATTCTTTTGACTCGT
+TGGGTTTCAGCGTGGAACATGCGGATGGTCGGGTAACGCC
+NODE	3532	13	1803	47	0	0
+CCGGGCTGGATAT
+TTCGGTGGCCGGG
+NODE	3533	51	105	105	0	0
+AGTTGCTTCTTTCGGGGTGGACGGCGCTATTCGCCTGGCGCTCCCGGCATG
+TCCCACAGCAGGAGCGAGCCTTCATGACCGCCCCATACCGCCGCCAGTTTC
+NODE	3534	51	63	63	0	0
+GATCCTGATGACTGAAGGTTGCCGCGGCGAAGGCGGGATTCTGGTCAATAA
+CCCGGAACCTGGCAGGCCGGTCGGGTGATACTGAACGAATTCCATATCACG
+NODE	3535	51	97	97	0	0
+GTTTGGTGTTGAAATGCCAATAACCGAGGAAATTTATCAAGTATTGTATTG
+CCGGTGCGCCAATTCACGAACTTCTTTCGTATTGCGATAGCCTTCGACCCC
+NODE	3536	51	155	155	0	0
+GGAGGTGCAGCAGGCTGTAAATCAGCATTGAGCCGTGGCCATTGGACAGCA
+CCCGGCTATGACCTGCCGATGTCCGAACTGCAGAATTTCCGTCAGCTACAT
+NODE	3537	1	139	2	0	0
+C
+T
+NODE	3538	51	61	61	0	0
+TCGCTGCATCTGGGGATCACCGAAGCGGGCGGCGCGCGTAGCGGGGCGGTC
+ACTGATCGATCTGTTGAGCCAACAAACGATAAGACTCAACGGCAAGGAATA
+NODE	3539	51	76	76	0	0
+GGATTAAAGGCTTTGCCCGCTTTGTCGATGCCAAAACCATTGAAGTGAACG
+CCATCCACGTTATTTTTGCCCAGCACGTTGTCGTATGAAGTATGGATGCGG
+NODE	3540	51	70	70	0	0
+GCGCCAGTGTTGGTTGCTGCTGACCGGTCGCCAGTGTTGGTTGCTGCTGAC
+CCTGGTCAGCAGCAACCAACACTGGCGACTGGTCAGCAGCAACCAACACTG
+NODE	3541	40	40	40	0	0
+GTCAGCTACACCTACCGTATCGCCTTTGAAGGCGGCGGCG
+ATAAGACTGTCGATGACTTTATTAATGACGTTATTGAGCC
+NODE	3542	51	63	63	0	0
+GACATGCGCTTTTGTGTACGGGGCTGTCACCCTGTATCGCGCGCCTTTCCA
+CCTGTGAGCTCGATGAGTAGGGCGGGACACGTGGTATCCTGTCTGAATATG
+NODE	3543	51	53	53	0	0
+TACCTTCGGGTTATGAGCCCGACGAGCTACCAGGCTGCTCCACCCCGCGTC
+AGTCGGTTCAAATCCGGCCCCCGCAACCAACTTAATGAACACCCTTACGGG
+NODE	3544	51	99	99	0	0
+GAAGAGCGTTATCCAGACAGCAAAACGGCTACCGCCATGGGTAGCCGTTTA
+CCCGCTAAAATACCTGACCCCGCCATCAGACAGGCCTGGTTAACAATATTG
+NODE	3545	28	51	51	0	0
+GGCCGCCAGCCTTACGCATAACCAGAAT
+CACTTTCACAGATCTGATTATTGCAATG
+NODE	3546	5	5	5	0	0
+ACCGG
+CATCC
+NODE	3547	51	70	70	0	0
+GATCGAAACTCTGCGCAACTACATCGACTGGACGCCGTTCTTTATGACCTG
+CCTGGCTTCCACCTCCTGCACGCCCAGACGGTGGGCTACCGGCGGGGTGTA
+NODE	3548	51	52	52	0	0
+TACACACTCAGGGTATAATCGCCCGCCCCCCATGATGTCGGCGGCGTAAAG
+AAGTCGAAGATAAAGCGGGGAACACCAGCCATTCTGCATCGCTGACGGTGA
+NODE	3549	158	274	274	0	0
+ACGCGGGCGGTGTGTACAAAGGGCAGGGACGTATTCAGCACAGGCTGATGACCTGTGCTTACAAGGAATTCCTCGTTCAAGATCTATAATTGCAAAGATCTATCCCCAGCACGACACGTCCTAACAAGATTTCCCGAACCCCATCGGGCCAGGTAAAT
+TGGGGATAGATCTTTGCAATTATAGATCTTGAACGAGGAATTCCTTGTAAGCACAGGTCATCAGCCTGTGCTGAATACGTCCCTGCCCTTTGTACACACCGCCCGCGTGATGCCCCTAGATGTCCTGGGCCGCACGCGCGCTGAACGTGTCAGTGTAG
+NODE	3550	18	31	31	0	0
+GCAAGCCAGCAACACGTC
+CCCCGCCTGTTCATTATA
+NODE	3551	51	65	65	0	0
+GGGATGCCCTGGCAGTCAGAGGCGATGAAGGGCGTGCTAATCTGCGATAAG
+CCCGTGTACGCTTAGTCGCTTAACCTCACAACCCGAAGATGTTTCTTTCGA
+NODE	3552	4	67	67	0	0
+AGGT
+AGGC
+NODE	3553	41	171	171	0	0
+TTCGTTTTGTCTCCGTCAGCACCTTATGAGAAATCACAAGT
+ATCCCTTGTCGGCATAGTTTATGGTTAAGACTACGATGGTA
+NODE	3554	13	106	106	0	0
+CTTTGGGTTCCGG
+CGAAACTCCGCCA
+NODE	3555	6	23	23	0	0
+ACAAAA
+GGGGAG
+NODE	3556	119	267	267	0	0
+ACAGCTTCGGCGGATAACTTAAGCCCCGCTACATTATCGGCGCGGAATCACTTGACCAGTGAGCTATTACGCACTCTTTCAAGGTTGGCTTGGAAGCAGCCATCCTTGAAAGAGTGCGT
+TAATAGCTCACTGGTCAAGTGATTCCGCGCCGATAATGTAGCGGGGCTTAAGTTATCCGCCGAAGCTGTGGCAACCTGTGTGGTTGGGTAGGGGAGCGTCGTGTCAGTGGTGAAGCCTG
+NODE	3557	45	45	45	0	0
+ATACCCTGCTGTTCCGCCCGCAGGAAAGCGCCGTCGTTGAATTTG
+TTTGTGCTGTGGAAAGATCACACCGCCGTGGAAGAGGCCGACGAA
+NODE	3558	51	57	57	0	0
+TGTGGTGGGGGAAGGATGACTCAGCGCTGCGCGCTTCGCCCTTCGGGTCGT
+AATCACTCCCGTCGCGTATCTTATCCCCGTTAAGCATAGTGTCTCATATCT
+NODE	3559	163	281	281	0	0
+AATAAAAATTAGCTGGGCATGGTGGCAGGTGCCTGTAATCCCAGTGACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCAAGAGGTGGAGGTTGCAGTGAGCTGAGATCACGCCATTACACTCCAGCCTGGGCAAAAAGAGCGAAACTCCGCCTCAAAAA
+TGATCTCAGCTCACTGCAACCTCCACCTCTTGGGTTCAAGCGATTCTCCTGCCTCAGCCTCCCAAGTCACTGGGATTACAGGCACCTGCCACCATGCCCAGCTAATTTTTATTTTTAGTAGAGACGGGGTTTCGCCATGTTCACCAGGTGCCTGTAATCCCAG
+NODE	3560	51	79	79	0	0
+ATCAGCAAAATCCATCTGGTAAAGTTCCATCAGATAAGTCAGCACGATATT
+TCTTTCTGAAGCAGTATCCACACACTATCCCAGCCACAAGGGGGTTATTAT
+NODE	3561	5	1776	10	0	0
+CTAAT
+ACATT
+NODE	3562	4	4	4	0	0
+CGAT
+CCCC
+NODE	3563	51	69	69	0	0
+GGGCGATCCGCAGGGAGAGCCGGAACTGCGCCAGCAAATTGCTCATTATCT
+CTGCAGCATTAGCGTATGCGCCCGCTCGCGCTGGATCTGGCGGGCAAAATT
+NODE	3564	109	120	120	0	0
+GCCACGGCTGGCTTCCTGCAGCTGATAGACCTTCATCCAGTACAGACGGCCCCGGCTGTAGAAGCAGAGGATGGTGTCATGGGTGTTGGCCACCAGCAGGCGGTCGATA
+ACAGCCGGGGCCGTCTGTACTGGATGAAGGTCTATCAGCTGCAGGAAGCCAGCCGTGGCTCGCGCGGTCGTCCGATCGTCAACCTGCTGCCGCTGGAAGCCAAAGAACG
+NODE	3565	47	312	207	0	0
+TGGTGGTGCCCTTCCGTCAATTTCTTTAAGTTTCAGCCTTGCGACCA
+ACCCAAAGACTTGTGATTTCTCATAAGGTGCTGACGGAGCTATTAAA
+NODE	3566	51	166	166	0	0
+GATGGGATAGCCTGGCATGAGAAAACGCTGGGACAGCTTTTTTGCGATGAT
+CCCTGCCGACCAGATCGATAAAGTCCCACTGGGTATAGCGGGCTAATGCTG
+NODE	3567	47	52	52	0	0
+CGCTTCTCGCTCTCAACCCAGAAACGGTGAGAGTGCAGGTTAGGCAG
+GTCACCCTGCGTGTATCTGCTAAAGGTATGCGTATCATCGATAAAAA
+NODE	3568	51	57	57	0	0
+AGGTTAGCTCAACGCATCGCTGCGCTTACACACCCGGCCTATCAACGTCGT
+TGTACTAATGAACCGTGAGGCTTAACCTTACAACGCCGAAGATGTTTTGGC
+NODE	3569	32	32	32	0	0
+CCGGGCGTTAAGTTGCAGGGTATAGACCCGAA
+CCGGCTCCCCTATTCGGTTAACCTTGCTACAG
+NODE	3570	51	206	206	0	0
+GTATTTTCAATCAGCTTCAGCAGGTCTTCTCGGTCGTTTGGATAGACGATA
+CCTCCCGCCTTTGCGGCGTCATTTTCGACTGGGATAAATATAACCTTGAGC
+NODE	3571	1	2	2	0	0
+C
+A
+NODE	3572	1	5	5	0	0
+A
+A
+NODE	3573	1	26	26	0	0
+A
+T
+NODE	3574	46	52	52	0	0
+CGCCGGACAGCAGGAAGTACATCGCGCGCAGTCCTAAGATGGCAAA
+CTACGGTACCGACAGTTTCATTTTTCTCGTTAAGGACATCTGCGCC
+NODE	3575	6	88	88	0	0
+AAAAAA
+TTTTTT
+NODE	3576	1	48	14	0	0
+A
+T
+NODE	3577	1	17	17	0	0
+A
+T
+NODE	3578	4	4	4	0	0
+TAAA
+GTTT
+NODE	3579	1	15	15	0	0
+A
+T
+NODE	3580	1	16	16	0	0
+A
+T
+NODE	3581	34	80	80	0	0
+GAAATCTCGTTAGAGGTCAGTCCTTCCGGCTCAA
+CCCAGCCTGCCGTTTGACGTGCAGATGCAGATTG
+NODE	3582	27	45	45	0	0
+CCGCGCCGATACCCCTAACCAGGGAGT
+GCCATTTTTCGCGCCTTCCATGCCGCT
+NODE	3583	51	79	79	0	0
+TGTGGTTTTGCCCTTATGTTTGTGATGGGGGCCATTTTTGGTGAAATCGGC
+AGACTAAGTCAGTCGGTATAGCATTATAAAAATGAGAAAGTAATAAAGTAA
+NODE	3584	51	92	92	0	0
+TTAAAGATAATCATGTTAGCCTTGAAAATGGGATTATTGCTGTTAACCGCA
+AGACTTACATGGATAGCGATACCATCAGGTAAATACAAAGTACCGAGTTTA
+NODE	3585	43	43	43	0	0
+TCGTTCATACCCACTCCACCCACGCCACGGCATGGGCGCAGGC
+GTATGACGGCACAACCAGAATGTACGGTTCGTCTACCTGAATT
+NODE	3586	10	10	10	0	0
+GTTTTGGGTT
+CCCAGCCTGG
+NODE	3587	45	45	45	0	0
+CGCTACACCTTCCCTGCCCGCGCGGGCCAGTATTCCAACTTTATT
+TGAGCCGGGCATTGTATAAAATGCATGTCTTTGCTCACACCTTTT
+NODE	3588	9	16	16	0	0
+CGGCGATGA
+GGGCGGGAT
+NODE	3589	3	3	3	0	0
+CGA
+ATC
+NODE	3590	39	63	63	0	0
+GATGAGACACCAGTTGCTGTGTGAAAGCGTGTTGCGGGT
+ACCCTGCCGGAACGTTTACGGGAACACCTGCCCGGGCAG
+NODE	3591	51	62	62	0	0
+AATATTGGTCAGAAGGCTGGAGCAGCCTTACAAACCCTGCCTGCCGGTGAA
+TCAGGTTCAGCAGAGCTGAAGCATCGCCAGTTTTTCCGTCCGGGAACAGGG
+NODE	3592	51	58	58	0	0
+TATGCGCCGCGCGCCGCCTATGAAGTCAGTAACCTGGAACTGGCGATCATT
+AGATAACCTGAATAAAACAGACCGCATCGATAGTGACGTTGGCGTTATCTT
+NODE	3593	51	79	79	0	0
+GTTTGTACAGAGTCGCCATGGGAATTACTTATTACTGACGAATAAAGAGCG
+CCCAGCCACTGGCGCAGGCAGATACTTGCTTTCATCATGAGAAGGCGCAAT
+NODE	3594	40	40	40	0	0
+TGCTGGTATTTATGGCGATGTTTATTGATGTCCATCTGCT
+ATGGCGTTCGACCAGCTCACGCCCGTCGCCCGGCTTTGGG
+NODE	3595	51	89	89	0	0
+GATATTACGCTTTCCTCTTTCAGAGTCAACCCTGAATTTCAGGATTTTTCT
+CCGCCACCTCGCGACGGTGAGCTGAAAGCCGCGTCGCACCTGCTCTTTAAC
+NODE	3596	6	1534	13	0	0
+TACGCT
+CGCTGC
+NODE	3597	27	27	27	0	0
+CAAATATGTCGCTCCCTACGTCAACCG
+TCCCTGCGACGCGCTGTAGACGGCGGT
+NODE	3598	51	73	73	0	0
+GCCGGCAGCAGCAGCGCCACCAGCAGTAACAGCACCACCGGAAAGAGGATT
+CCGCCGCGCCGCTGCTGGGGATGTTCTGCTTTGGCAATCTGATGCGTGAAA
+NODE	3599	1	3	3	0	0
+G
+C
+NODE	3600	9	30	30	0	0
+CGGGGTCGC
+TTGGGTGCG
+NODE	3601	43	43	43	0	0
+GCCTCATTAACCTATGGATTCAGTTAATGATAGTGTGACGAAT
+TCAAAAATCTCGATACATGAAGGAATGACGGAGATAAAACGGT
+NODE	3602	40	40	40	0	0
+ATTATCTATGCTCCTGGGGACTCACTCCCTTGCCGCCTTT
+GGGTGAGCGAGCGTAGCCAACACATAAGCAACTTGAAGTA
+NODE	3603	51	134	134	0	0
+GAACAATTTTTTATACGGCAGACAAACCAGCTGGCAACCATACCCAGGAGG
+CCCCCTTCTACTTTGTTGCGCTCCTGTTAATCATTAGCGTGGTCTGTTCCT
+NODE	3604	51	94	94	0	0
+GGCTTAAACCGGCACGCCTGACGCCGCTTTCCGTTCTGCTGTTAATGGAAG
+CCCACGCAGTTACCCGCCGCCAGCGCTGGCGCCATTTTCCAGCTTGCCATC
+NODE	3605	51	56	56	0	0
+TCACCAATGTGGTGCTTAATGTTCACATTAAAGCACTATTTTGGTGCAACA
+AAATAGAACGCAAGCCACCCTTTTAACGCTCCGTGAAAGCGATCACAAAGA
+NODE	3606	5	624	13	0	0
+TGCTG
+TCTGC
+NODE	3607	51	79	79	0	0
+GTTTACACGCCAGTTTAGGGACGTTGTTGACCATCATGCCGCAAGAGCCGC
+CCCTTCCTGCGCGATTACACCAACGGTATGAAGGTGGAAGCTCTGGCGAAC
+NODE	3608	27	73	73	0	0
+AATTAAGACTCGGTTTCCCTCCGGCTC
+CCCCGAAACCCGGTGATCTAGCCATGG
+NODE	3609	51	62	62	0	0
+AGGGCAAGACTATTGAGCGTGTCAATGTGCATACCGGCGACGTGGAGGGGA
+TTAAATGACGCGCCTGAAGGCCGCACATCAAAGACCAGCCACTGGCTGTCA
+NODE	3610	39	39	39	0	0
+CAGCATATTTAGCGCCATCATCGCGCAGACCTCCTGACG
+ATCTGTGAACAGCGCGATCCTAAAGGATTGTATAAAAAA
+NODE	3611	31	804	793	0	0
+ACCGACGTCGTCCTGCGTGACGCCCACCAGT
+CCCTCCGGGAAATTAAACGTGGTGGCGGTGA
+NODE	3612	6	18	18	0	0
+GACCGG
+AAGGGT
+NODE	3613	1	90	2	0	0
+T
+C
+NODE	3614	51	80	80	0	0
+GGCGCAGGCATGGCAGGCCGCTATCGACGCGGCGCAGCCAGAAGATACCGT
+CACGCTATCATAGACATTCCCTTTCCCCAGATGTTCCAGAAGTTGTTCCGC
+NODE	3615	3	3	3	0	0
+ATG
+CCT
+NODE	3616	38	38	38	0	0
+TCTTCTTTTGTAAACCAGCGGACGCTGTCGTCCCGGTA
+ATCGACAACGTATAGTCGGTCATCTTACCGCTCAGTTT
+NODE	3617	41	52	52	0	0
+CGATATCAGGTAAGAGGATAATAGCATTTTTTGTTCTTTTA
+GATTACACAAAAAATTAAGGAAAACTGAGGAACGCCATGAA
+NODE	3618	51	99	99	0	0
+AGCGGATTTGCAAACGCAGATCGACAGGCTTGCCCCGTTGCTGGAGACGCT
+TAACTCGGTCTGACGCTGTTGCCATATTTTCGCTTCGTCGGCGCGCTCATT
+NODE	3619	51	71	71	0	0
+GGATTTATGGACCAGGCCCTTACCCGGCATGAAATCCAGCTTCATAGTCGA
+CCTCCAGCCCCGCCTTTACAGCAACGATCAGACCAAGTCGGTTGATGTAAA
+NODE	3620	48	56	56	0	0
+GCAGCAGCAACCAACACTGGCGACTGGTCAGCAGCAACCAACACTGGC
+GGTTGCCAGTGTTGGTTGCTGCTGACCGGTTGCCAGTGTTGGTTGCTG
+NODE	3621	51	79	79	0	0
+GAACGCACCGCTATATCTTTACGGTTCACGCGCTGGACGTCGAGCGTCTTG
+CCCCCTTTAGGCGGCGCCGCGCCGCCGTAGCCCGCTTTACCGAAATCGGTA
+NODE	3622	51	128	128	0	0
+GATATCTTTAAGCAAAAAAAAGAGCGACCTGAGTCGCTCTTACCAATGACT
+CCCCGTCATACTTCAAGTTGCAGGTGTGTTGGCTATGCTTTCTCACCCGAA
+NODE	3623	51	75	75	0	0
+AGGAAAGACCCCGTGAACCTTTACTATAGCTTGACACTGAACATTGAGCCT
+TTCTTGCCGCGGGTACACTGCATCTTCACAGCGAGTTCAATTTCACTGAGT
+NODE	3624	58	82	82	0	0
+CGCCCGGTAACCCTAAGCACGGGATCGCGATCGAAACCATCGTTTAGCATGGAGCGGG
+ACCGGGCGGGCGCCTGCCGATCTGGCGTCTGAAAGCCATTAACCTTGCAGAATGGTCC
+NODE	3625	34	119	119	0	0
+GACTGATGGCGAAGCTGATGAACCTGTGCAGTAA
+AATCCCGAACGCAATCACACCCAGCAGCAGAATG
+NODE	3626	45	54	54	0	0
+CGAACAAAAACGCAAAGCGGCGTTGGCGGCAGAGCGTAAGCGTGA
+ATCCCGTGTTTCATAGTCGCCTTTCAGCTCAGCGCTCAGTTTCGC
+NODE	3627	51	147	147	0	0
+GATCGTAATTTGTAATCGTCAGGGGCAGGGGATGTGGGCCCGGCGATTTGG
+CCCTACATTTGGGCGGTAGCCATCGTCATCAATCACCGGACTACCTCAACA
+NODE	3628	12	12	12	0	0
+GATCAAAAACCG
+CGAAGAAATCAT
+NODE	3629	43	43	43	0	0
+TGTCCGCAGTCGGGACATCAGTCTTGGCGACGATCCGGGGATT
+GCGCATACGGAACAAATCCCCCAGTGGCTTAACGCCAGCGGCA
+NODE	3630	41	99	99	0	0
+GTCATACCAGTATTGATTTTAATGCAGTTTGTTTTTTATTG
+CCCTGCCAGTGCTTCAGATGGTATTGTTATAGACCGTATAA
+NODE	3631	3	3	3	0	0
+GTA
+CCT
+NODE	3632	111	170	170	0	0
+GTTTAAAACGTCTGCCGGAAGGCAGCACTTTACCATGGCATCGGGGGGTGAACCGCCACGGCGCAATATACCTTCCCGGGCCCCCTCTACAGCGGCAACGGCAGGCATTAC
+CCGTGGCGGTTCACCCCCCGATGCCATGGTAAAGTGCTGCCTTCCGGCAGACGTTTTAAACCTCCGCCGACCTGACGCGCCGCCCGAGGCGAACCGGCAAGCCGGGCGATA
+NODE	3633	1	1	1	0	0
+G
+C
+NODE	3634	39	46	46	0	0
+TGAGAAGGGAAGTAAAACCTAACCATAAGAGAACTTCCT
+TCGTTTTTGGAAATTATGTTGTACGTCGTGTGGCAACTG
+NODE	3635	40	1267	45	0	0
+GAAGTTGCCGTAGCGCGCCACCATGTAATCGATGATTTCC
+ACCCGCCGCTGACCCCGCTGACGGTGCTGCTGTGGGTGCT
+NODE	3636	51	71	71	0	0
+GGATGTACAGCTTGAAGATCTGCTGAAAGATTACGATGCGGTATTCCTTGG
+CCGACCCACTTCGGTATTAAGTTTGAACTCAATACCCATGCCGGTGAAGAT
+NODE	3637	51	53	53	0	0
+GTTGTTCATTGATGCCCAACACCACCGCCCCTTTATTAGGGCGCACTTTTA
+CCGATCCGTGAACACTATGAAATTCGCGCGCTGTTAGAAAGTGAGGCGGTG
+NODE	3638	47	77	77	0	0
+TATTCCCGCCTTGAGCCGTGTTAATTTGTTGCATACTTTTAAACGGA
+TGTCTTAGAGCCTATCCCACCAGGCGTTATTGGCGCAGCCAGTTTGG
+NODE	3639	51	53	53	0	0
+TGGGGAATCTCGGTTGATTTCTTTTCCTCGGGGGACTTAGATGTTTCAGTT
+AAGTAGCGGCGAGCGAACGGGGAGGAGCCCAGAGCCTGAATCAGCATGTGT
+NODE	3640	51	77	77	0	0
+CACAGAATCGTCAGCGTTCCGCTCTGGTCGCGCCGACACTGGCGGCGGGGG
+GGGGAAGCTGCAAGCCAGTGCTGCGGCGCGCCATGAGGACTTCCTGCAACA
+NODE	3641	35	126	126	0	0
+TGCTCTACCAACTGAGCTATTCCCGCTTGGGTGCG
+CGGGGTCGCGAGTTCGAGTCTCGTTTCCCGCTCCA
+NODE	3642	46	46	46	0	0
+TGCGGTAAAAAATTTGGCGATCAGGAAAATGATCCCGCCGTAAGTC
+ACGGTATCTCCCAGCGTCTGATTCCGGGCGCAGTACTGGCGATTGA
+NODE	3643	38	38	38	0	0
+ACCATCAACATGGCGCCTCCCCATTCGCCTCCAACCAT
+GCGCGCTTAAGCAAGCTAATTAACTGCGGAAACGGTAG
+NODE	3644	61	90	90	0	0
+GACATTTTTTTTGAAAAACCGCTCAGCATGAATGAAGATGAGCAGGCCTCAATGGCGGGGC
+AAAAAAATGTCCTCCCCCGCCTGCGCTGCCGCCGTGACGATCTCTTCGTGCATATCCGTTG
+NODE	3645	51	93	93	0	0
+GGACATCGCCGCCATCGTCCGGCGGAGTGACATCGCCGCCATCGTCCGGCG
+CCTCCGCCGGACGACGGTGGCGATGTCTCTCCGCCGGACGATGGCGGCGAT
+NODE	3646	27	46	46	0	0
+ACGCCGCCAGTTGTACGCGCTACTGTA
+GGTGCCGAGTGCGGCAAGGATCTCCTG
+NODE	3647	51	60	60	0	0
+GATCGCCAAGCGGTAAGGCACCGGTTTTTGATACCGGCATTCCCTGGTTCG
+CCCCCATCCGTACAACGCTTATCGGTGAATGGTGCGGGAGGCGAGACTTGA
+NODE	3648	37	60	60	0	0
+GGGCGCCGCCCCAGCATTCGAGGGAGCCGTAGCCCAC
+CATCCGTTTCCTCGGCGAGGACCCGTGGCTGCGCCTG
+NODE	3649	51	58	58	0	0
+AGCCATATCCGACAATAAAATGGGGATAAGCAAAACGCTTATCCCCTGCAG
+TTACTTTCTCCATAACCTTCGCCACGCGCGCCTGGTCAACAAAGTTGGCGA
+NODE	3650	47	50	50	0	0
+CCGGGCCGCCAAGACCTGCGCCGCGCAGCAATCCGTGGCCCAGGATG
+TCGAAGTGAACTGCGCCACCCTGCGCGGCGACACGGCGATGTCGGCG
+NODE	3651	27	81	81	0	0
+GACTGAGCACGACACCGGGCTGGATAT
+CTCGGTGGCCGGGTGGCCGTAGGTGGC
+NODE	3652	33	72	72	0	0
+CCTGGCGACTGGTCAGCAGCAACCAACACTGGC
+AGTCGCCAGTGTTGGTTGCTGCTGACCGGTTGC
+NODE	3653	1	5	5	0	0
+C
+G
+NODE	3654	42	62	62	0	0
+GCAACACCTTCCTCCCCGCTGAAAGTACTTTACAACCCGAAG
+CCCGCAGCAATTGACGTTACCCGCAGAAGAAGCACCGGCTAA
+NODE	3655	51	76	76	0	0
+AAAGTTATTCACTTTCCGAATCAGGCGTGATGACTTTGACGGAACCATTCC
+TCTCAAAAAAGACGGCAATTTTATTGAACATGGTGGGATCGGACTGGTTTC
+NODE	3656	155	238	238	0	0
+TTGTAGCACGTGTGTAGCCCAGGGTGTAAGGGGCATGCTGACTTGACGTCATCCCCGCCTTCCTCCGGTTTATAACCGGCAGTCTTTCTAGAGTTCCATAAAGCAACTAAAAATGAGGGTTGCGCTCATTGCGGGACTTAACCCAACATCTCACG
+TGCTTTATGGAACTCTAGAAAGACTGCCGGTTATAAACCGGAGGAAGGCGGGGATGACGTCAAGTCAGCATGCCCCTTACACCCTGGGCTACACACGTGCTACAATGGACGAGCTGACGACAGCCATGCACCACCTGTGTATACGTTCCAAAAGG
+NODE	3657	104	192	192	0	0
+GGGCGGAAGATTACGCTAATCGCCTGCGTAAAAATCTAAAAAAGCTGGAGAAAGGGGCGCGCCAGGAAGGGATTGAATGCTATCGCTTGTATGATGCCGACCTG
+CTTTCTCCAGCTTTTTTAGATTTTTACGCAGGCGATTAGCGTAATCTTCCGCCCCCGTCGCCGGCTTACTGTCCGCCGTGGTTTCCGCAATATGATAGTTTTTC
+NODE	3658	30	90	90	0	0
+CCCTCGATTCCTTTTATTATCTTCGGCGTT
+CCCCGCCGGAAGCGATTAACCCAACGGAGC
+NODE	3659	45	202	202	0	0
+ATTTCCCGTTACCCGTTAAAGCCATGGTAGGCCAATACCCTACCA
+CAGAAACTTGAATGATCCATCGCCGCACAAGGCATGCGATCCGCA
+NODE	3660	16	33	33	0	0
+TCTTTGTCACAACCCG
+CCCTGCCTGTCACGCA
+NODE	3661	40	40	40	0	0
+TGACCGATATAGCCACTCACGGCAAGTATACTTATTGCAA
+ATTTGCGGCGGCTACCAGATGCTGGGCGACACCATTGTGG
+NODE	3662	51	65	65	0	0
+GAACGGGGCTAAACCATGCACCGAAGCTGCGGCAGCGAACGTATCACTTAA
+CCATCTTCCGCGCAGGCCGACTCGACCAGTGAGCTATTACGCTTTCTTTAA
+NODE	3663	44	53	53	0	0
+TCAGTGAATACCATTCCCTGCGACTGTAAAAAAGCTCGATAATC
+CCGCGAGCCGGAAGATCAGTTTGGCCTGATGCTATTAGCCTGTA
+NODE	3664	51	82	82	0	0
+AACCGAAGCTGCGGCAGCGACGCTGATGCGTTGTTGGGTAGGGGAGCGTTC
+TCATGGTTTAGCCCCGTTACATCTTCCGCGCAGGCCGACTCGACCAGTGAG
+NODE	3665	40	41	41	0	0
+CATTGCCGGTGTTGCTACCGTGATAATGCATCGAATCAGT
+ATTAAAGAAAGCCAGATGGCGTTTTAGCGCTTCGGCAAGA
+NODE	3666	13	14	14	0	0
+CCCACCTAACAGG
+CCAATATCGCGGG
+NODE	3667	40	2128	55	0	0
+TTTTAAGCAGCTCGTGGTAAAGTAACGGATTAGACTTTCA
+ACCCCGCGACAATATATCGCCTGCTAAGCTTTTCCGCGCC
+NODE	3668	8	8	8	0	0
+GTTATACC
+ACGTTTTA
+NODE	3669	12	12	12	0	0
+TGTTGACTTTCA
+CCCTTCCTTGCC
+NODE	3670	11	14	14	0	0
+GGCTGGGGGGA
+ACGTCAGCATC
+NODE	3671	51	102	102	0	0
+ATATCGCGCTGATTTTAAAGTAATGGTAAGAATTTACACACAAAGTTATCC
+TCCTTCTCGTCTTAATAATTACCCATTATTTTCAATGAGTTGTTAACATCA
+NODE	3672	77	91	91	0	0
+GGCTTGGTCTGTACTTCCGGAGCCGGGGCCGGTGCCGGAGCGACTACCGGAGCAGCTTCTTGCTGGCCGAAACGGTA
+CCCGGCTCCGGAAGTACAGACCAAGCCCTTCACTCTGAAGTCTGACGTACTGTTCAACTTCAACAAATCTACCCTGA
+NODE	3673	39	39	39	0	0
+ACACTAAATCGTTATACAGTTGGCCTAACAACTCCTCGG
+AAAGCAGATGTAGCCATACCGGCCAGACTACCGAGTGAA
+NODE	3674	19	19	19	0	0
+GATGGGATAGATTTAAGGA
+CCTCATCAAACGGACTAGC
+NODE	3675	39	39	39	0	0
+GGTAGAGTGTGAAGTATGTGAATCAGGGGGGCTAATCCA
+CCCGCCACTAACACGATAACGTTGCGTGAAAACCATGTT
+NODE	3676	46	46	46	0	0
+GCACCAGGCGCGGGGAAACGGTTTTGGCTATGGCATGGTTTATCCT
+CGCGTAGCGATATAAATATTTCCACAGCACCGGCGTCAGGATATAT
+NODE	3677	41	45	45	0	0
+ACAAATAAAGTTATTCCACAAAGAAGCATCTTCCGATTTGA
+CCGTATTTAACCTATTATCTTTTACCGAAAGCATGTTTCCT
+NODE	3678	24	858	66	0	0
+ATTAATCACCTCACGCCCCGTAGC
+AATGGGCGCCGCGCTTTTAGGGTT
+NODE	3679	51	54	54	0	0
+GGACAGAACAGGATGTTTTTTATAAAGTGATTATAAATCAATAGATTATTC
+CCCGCCGGGCGACACGCTAAAACCTCGCCAGCGGCGGGGGGATGACAATCG
+NODE	3680	51	53	53	0	0
+GCTTCGCCATCCTTAACTACCGGCGCTTCCGCCAGCATGGCGCGGATGCGG
+CGCCGGTCCCGGCGGGGCGCGGCGAACTGACGGCGGCCATTCGTGAGTTTT
+NODE	3681	51	75	75	0	0
+GTCAAGCTGACAATGGTTGAAACGATAATCAGGGGGATACCGGCCTTAGCG
+CCCTGCTGCCAATCCTTTTCCCTTTTCATCCGTAATTAACGGAAGCTGTTC
+NODE	3682	25	40	40	0	0
+AATGTAGTGGGGCAAAGAAAAAATT
+CCCAGCCATACAGAGAAAAACAGTA
+NODE	3683	7	12	12	0	0
+GAATCAT
+ACCCGCC
+NODE	3684	42	50	50	0	0
+GGCGGCATTGACAGCATGTTGATGATTTATGACACCGGTGAA
+CATAAATCTGTCATAAATCTGACGCATAATGGCGCGGCATTG
+NODE	3685	127	243	243	0	0
+CTTTAACTGGGGGATAGCCCGGAGAAATCCGGATTAATACCCCATAATACACGATGTGGCATCACATTATGTTAAAAGCTCCGGCGGTTAGAGATGAGTATGCGTCTGATTAGCTAGTAGGTGAGGT
+TTTTAACATAATGTGATGCCACATCGTGTATTATGGGGTATTAATCCGGATTTCTCCGGGCTATCCCCCAGTTAAAGGCTCCGGCGGTTAGAGATGAGTATGCGTCTGATTAGCTAGTAGGTGAGGT
+NODE	3686	122	516	432	0	0
+ATAGTTCATTCAAATTTCTGCCCTATCAGCTTTCGACGGTAGTGTAGTGGACTACCGTGGCGTTAACGGGTGACGGAGAATTAGGGTTCGATTCCGGAGAGGGAGCCTGAGAAACGGCTACC
+CACCCGTTAACGCCACGGTAGTCCACTACACTACCGTCGAAAGCTGATAGGGCAGAAATTTGAATGAACTATCGCCGGCACAAGGCCATGCGATTCGAACAGTTACTATGACTCACCAATGA
+NODE	3687	51	54	54	0	0
+GTAAATCCAGCGCTTTACCACACCAGGAGGCCTGAAAGCGGCTTTCATCAA
+CCCCCCGCTGAATTCCGCCTGCTAAAAACCTTATCGCTTGAACCGGGTAAA
+NODE	3688	142	391	391	0	0
+AAGCCACAACCGATATACGTCCACAAACCTCAGAGCAAGGTCCGCCGCAAGCCCTTGCGAGCTCACAGTAGTCCCCACCTAGAGATAAGCTTCAATACACCGGCTCAACCCACCCAACCCTTAGAGCCAATCCTTTTCCCGA
+AAGCTTATCTCTAGGTGGGGACTACTGTGAGCTCGCAAGGGCTTGCGGCGGACCTTGCTCTGAGGTTTGTGGACGTATATCGGTTGTGGCTTCTTCGGAGGTCCTCTCCCACAATGAACAACCGACTTAGAACTGGAGCGGA
+NODE	3689	51	69	69	0	0
+GAAAACAATGTGGAAGCGCTGATGAAAAGCAACACGCCGCTCAACGTGCTG
+CCAACAGCGGCCCGACCACGATACTGGCGCCGTCTTGCTGAACCTGAGCAA
+NODE	3690	51	72	72	0	0
+GGCTTGCCGGAGGCGCAGTATTTGAACAGGTTCGGGCTGGCGCGGTCGATA
+CCATTCCGCAGGCCATTCTGGTTATGCGTAAGGCTGGCGGCAATCCGCTGG
+NODE	3691	102	111	111	0	0
+GTATGGGTGAGACGCTTGAGCGCCATCCATACTTCGCCCTCAGGGTAGAAACGATAGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTC
+GTTTCTACCCTGAGGGCGAAGTATGGATGGCGCTCAAGCGTCTCACCCATACAGATCGGAAGAGCACACGTCTGAACTCCAGTCACATCACGATCTCGCATG
+NODE	3692	36	36	36	0	0
+GCTCTGGCCCTCGGTGGCAATCACCTTCCAGATGTT
+CGTGCTGCTGATTCTGGAAGCCATGAAGATGGAAAC
+NODE	3693	40	68	68	0	0
+TGGTGCCGTGGGTGATATTTTTAATAGCGTCGATAACCTG
+GTCGGCAAACTGCTCCCGGCCCCAGAAACCATCGGTCTGG
+NODE	3694	51	133	133	0	0
+GCGCACTGCGTGCTGCTCTATAAATCACCGTTGTCGAAAACGGCGCAGAAG
+CCGCGACCGCGCCACGGCCAACGCGTCCTCTGAGCTGGTGCAGCTGCGCCA
+NODE	3695	116	214	214	0	0
+AGGTACCCCTCCGCGGCCAGCTTCTTAGAGGGACTACGGCCTTTTAGGCCGCGGAAGTTTGAGGCAATAACAGGTCTGTGATGCCCAGAACATCTAAGGGCATCACAGACCTGTTA
+TGCCTCAAACTTCCGCGGCCTAAAAGGCCGTAGTCCCTCTAAGAAGCTGGCCGCGGAGGGGTACCTCCGCATAGCTAGTTAGCAGGCTGAGGTCTCGTTCGTTAACGGAATTAACC
+NODE	3696	39	128	128	0	0
+TCTTATCCACCTGCGCCACGTAGGTCTGGTACTCTTCCG
+CCCTACCGTTACCTGAACTTCGACCAGCTCTCTCAGTAC
+NODE	3697	44	44	44	0	0
+ATCAATGCCAGTGCTTCATCATCTTCCAGCCGTAGATCTGAATC
+CTTCTTTTAAGTGAGGCGTTATGCAGGATAACTCAGCCATTAAC
+NODE	3698	21	29	29	0	0
+ACCAGACCGCCAGCTAAGGTC
+CCCCGCCGTGTGTCTCCCGTG
+NODE	3699	23	1296	78	0	0
+GTTACCGTGGCTGACCTCAACGG
+ACCCGTTTTAAAGAAGGCAAGCC
+NODE	3700	43	43	43	0	0
+CCAAAACATCGCGCGTCCGTTCTTGTAAGGTAACGATATGATT
+ACAAATTCCCGTAACTTCTCTCTATTTCTTCGTCCAGAAACAA
+NODE	3701	51	106	106	0	0
+GTTGCATGTGGACGGTACGCTGCATCTGCTGCTGGGCGGCGACGGTAAGTC
+CCCGTTTAGCGCCGCTTCGGTACTGCCGACATTGGTCGCTTTCGAGTCGTT
+NODE	3702	51	87	87	0	0
+GGCGTCACGCCTTCATAGAGAAGTCTGAGCGCAAACATCCCGATAATGGCG
+CCCGCTAGTTTGCCCGGTAGCCTTTGCTACCGGACGATAAGCGTTATCAAA
+NODE	3703	45	83	83	0	0
+GCAACCGCAACAACCTCAGCAGCCGCAGGGCGGCAACCAGTTCAG
+CCCCCCCTGCTGCTGACCGCCTGCCGGTGCGCCGCCGCCCTGGCG
+NODE	3704	20	36	36	0	0
+TCAAGAACGAAAGTTAGGGG
+ATTAATCAAGAACGAAAGTT
+NODE	3705	173	310	310	0	0
+TCCTAAGAGATAGGGAAACTCCGTTTTAAAAGTGCTATTGATACGCACTCTCTATCGAAAGGGAATCGGGTTAATATTCCCGAACTTGGTCGTGGATGTTATGCGGCAACGCAAGCGAAGTCGAAGACGTCGGCAGGGGGTCCAGGAAGAGTTATCTTTTCTTTTTAACTAGC
+CGACTTCGCTTGCGTTGCCGCATAACATCCACGACCAAGTTCGGGAATATTAACCCGATTCCCTTTCGATAGAGAGTGCGTATCAATAGCACTTTTAAAACGGAGTTTCCCTATCTCTTAGGATCGACCCCATGTCCAATTGCTGTTCACATGGAACCTTTCTCCACTTCAGT
+NODE	3706	3	3	3	0	0
+TTA
+CCC
+NODE	3707	14	37	37	0	0
+TATAATACCAGAAT
+CCCCTCGGTTTATT
+NODE	3708	21	149	149	0	0
+ACGGTTATAACGGTTCATATC
+TTCGTCACACTATCATTAACT
+NODE	3709	23	128	128	0	0
+CGCCAGTGTTGGTTGCTGCTGAC
+ACTGGTCAGCAGCAACCAACACT
+NODE	3710	18	54	54	0	0
+GGATATGCCCCTGCTTTA
+CCCCGCCCCGGCAACTGC
+NODE	3711	43	47	47	0	0
+GCTGCAAACCTTGCTCGGCACCAATAATGTAGCGGTATCGATT
+TGTTGCCATAATTATGGATGGCAATGGTCGCTGGGCGAAAAAG
+NODE	3712	11	80	80	0	0
+AAAAAAAAAAA
+TTTTTTTTTTT
+NODE	3713	45	45	45	0	0
+TTCCTGGGCGATGAGTTTGGCTTTTCCGGCAAACTCCGTCTGTAG
+GAATCGTACGCACCGCATTCATCACATAACCCAGTTCATCTTCCG
+NODE	3714	18	68	68	0	0
+GGTTGGTTGCTGCTGACC
+AACCGGTCAGCAGCAACC
+NODE	3715	51	59	59	0	0
+ACATCAAGAATGCGGAGTCGCGCAATTTTGGCTTTTATGCATTTAATTTGC
+TGTGAGGATTGTAATCATTGAATTTGTGAATTAAGGTCGCCGCCGCGGAGC
+NODE	3716	51	78	78	0	0
+CACATGAACGAGCGGAAAAAGAGGCGGCTTTGCAGGCGGCGGGCGCCCAAC
+GGGCTCCGCCACTCAAGATGCGGCCCGCATGACGGACAGGCAACGGGCTGG
+NODE	3717	51	75	75	0	0
+GTCTTTCTCACCCCAATACGCGCGCCGCCGTTCTTAAAGCGCTGGAGTATG
+CGGGTACCGGTGACGGCTAATGCGCGTGAAGAAGCGATGTAATCTTCGCGG
+NODE	3718	51	64	64	0	0
+CTCCCCCTAATAATTAAAAAGGGGTGTGAGTATGAGTAAATTTAAATTTAA
+GTGTAGGCCCATAAAATTACATAGAGAAGCGACGCGCTGATAATTAAGAAT
+NODE	3719	42	47	47	0	0
+AGAGCATCAGAACGACCGCCAGAGGCGTTAACCCTCTGTTTT
+AGCGCCAGTGAAGCCAGTGTGGTTTTTATCATCGCTATCTTC
+NODE	3720	7	23	23	0	0
+GGGAGAC
+CCCCGCG
+NODE	3721	32	49	49	0	0
+TTTTGATTTTGTCGAGATGTCGGTGGACGAAA
+CCCAGCCGCTCTGGCCAACTGAGATCTTTCGC
+NODE	3722	9	20	20	0	0
+GAATGTTGG
+GGTTCCCGA
+NODE	3723	42	42	42	0	0
+CTTGATGGCTTCATTACCATTACCGGCGGGAAGCTAATGACT
+CACACGCGGGAAGATTTACCGCCGCTGGTAGCGCTTACGGCT
+NODE	3724	151	315	315	0	0
+GCTTGGGCTTCTGCAGGTGAGAGAATACTCTTAACCTTCTGCCATGATTTTTCAAAGATATTTGGCATATCTTGTTATATTTGTTCAGGAGTCCATGGAGGCGTAATTCCTTTAGCCTTGGCATCTGCTACCTGTGCTTCAAAGTACGATA
+CCTCCATGGACTCCTGAACAAATATAACAAGATATGCCAAATATCTTTGAAAAATCATGGCAGAAGGTTAAGAGTATTCTCTCACCTGCAGAAGCCCAAGCCGTAATTCCTTTAGCCTTGGCATCTGCTACCTGTGCTTCAAAGTACGATA
+NODE	3725	51	88	88	0	0
+GGAAGATATAGCCCTGCTGCGTATGCTCATCGAAGATGACGGCCCGCCTGC
+CCACCCGTTTCCCCCGGCGCACGCCGCCTGCGTCTGTCCGCTATCAAAGAC
+NODE	3726	127	264	264	0	0
+CTGCAAGGCAAATCCCTATAACCAAAGTCCTCATCCAAAAATTATGAGGACTTTGGTTGTAGGGATTTGCCTTGCAACGCTGTCGGGCAAAGCTACATCGTTAACATCTCTTTACCTATTAAAGTTC
+TTGCAAGGCAAATCCCTACAACCAAAGTCCTCATAATTTTTGGATGAGGACTTTGGTTATAGGGATTTGCCTTGCAGCGCTGTCGGGCAAAGCTACATCGTTAACATCTCTTTACCTATTAAAGTTC
+NODE	3727	51	102	102	0	0
+GAATGTGGTTGGCTTTCCTTGCAGAAAAGAGGAACAAATGGCCGGAGACGC
+CCCGTTTGAAAAAACGGACTGCGGCATGTACTCCCTGCCGTATGCGACGTC
+NODE	3728	51	117	117	0	0
+GGGTGATATAGATCCCTCATTTACGTTATTCACAACCAGTCAATGTCTTAA
+CCCTTCTGGCTGCTCATCCACCACGTTGATAGCGCTTCGCTGCCTGGCAAT
+NODE	3729	47	115	115	0	0
+GATTCTGCTGAATAATCAAATGGATGATTTTTCTGCTAAACCCGGTG
+GTATTTCCCGCCACAATTCCTGTGCCGAAGGTGGTGTTCAGGGTATA
+NODE	3730	1	2	2	0	0
+A
+T
+NODE	3731	20	69	69	0	0
+GGAAAGGGATCGACAACAAC
+ACTCATACGGGCGGATCGGC
+NODE	3732	130	354	354	0	0
+GACAAGCATCAAAGTCCCGCCGGATGACGGAACGGTCGCGCGGCGGGACTTTGATGCGCGTCGAGGCGCGTGCGTCTACAACCGCTGCCTCTTGCGTTGCTCCCTCTCCCTCCGGGAGAGGGCTGGGGTG
+TGTAGACGCACGCGCCTCGACGCGCATCAAAGTCCCGCCGCGCGACCGTTCCGTCATCCGGCGGGACTTTGATGCTTGTCGAAGGCTGCTGGCCCTCACCCCAGCCCTCTCCCGGAGGGAGAGGGAGCAA
+NODE	3733	106	136	136	0	0
+CATTGCTAAATTGGAGCACAACCTTCGACACAGACGAAAATCGCTATTTTCGTCCTGCATGACGATGGTAACACTAAAAAAAGGGAGATTGCATCACTCTGTAGCA
+AGGACGAAAATAGCGATTTTCGTCTGTGTCGAAGGTTGTGCTCCAATTTAGCAATGGTTGGCTAGATGGATACACAACTTACTGTCAATAAATTCATTTTCTCTTT
+NODE	3734	45	45	45	0	0
+ATCCAGCCACTACACATTGCAGCTCAGTAGTTCTTCAAATTACGA
+TGGAATACAAATCTTTCTTACGTTTCAAAATCGGCAAGATCCTCG
+NODE	3735	14	25	25	0	0
+CCCCTGCCGACCCG
+GTTCCACTACCGAC
+NODE	3736	51	69	69	0	0
+GAAAAGCGGCACGTCGTATTAATCCACAGATGAAAGTGGGCTGCATGCTGG
+CCCGCCAGCGCGCTGGCGACAAACTGATGATGTAAGACCTGATACATGGTT
+NODE	3737	45	45	45	0	0
+CGTTAACCCAGGGTTTAGCCCCAGACCGATATTTTGCTGCACATT
+TGCCCATCTGACGTGCGATAGCGTCCCGTTTTTCCCGCTGGCTGG
+NODE	3738	116	365	365	0	0
+TGGCGACCTGCTGGACTGCGCTTCTTCCACCAAGCGAATGAGCCTAGCAACAGCAGAATCGTCCACCGAAGACGTAGTGCGAACTACGAGTGGCGAAGTTACACTGGGAGTGTAAC
+GTGGACGATTCTGCTGTTGCTAGGCTCATTCGCTTGGTGGAAGAAGCGCAGTCCAGCAGGTCGCCAACAGAAATGCTCATTGACTCCTTTGCCAGAAGTTACACTCCCAGTGTAAC
+NODE	3739	120	556	556	0	0
+GAGCGCAGTTTTGGAGTGGTTGTGCGGATCTTGTTTTCTCGAAGAAGTTGAGCTGTTCGAGTTTGCGCTTCCTTCTAAAAGATTAATCGTGTTGTTGTTGTTGTTGTTGTCAGTAGGCAT
+AAGCGCAAACTCGAACAGCTCAACTTCTTCGAGAAAACAAGATCCGCACAACCACTCCAAAACTGCGCTCCCTTCTAAAAGATTAATCGTGTTGTTGTTGTTGTTGTTGTCAGTAGGCAT
+NODE	3740	46	46	46	0	0
+AAAAACGTCGGGGAATATCCAGATAAATTACGATTTTTTTTGCGGC
+CGATGTTAGAAGAGCCATCCAGAGGGTCCATCAGCACCACATATTT
+NODE	3741	128	173	173	0	0
+TTCTTGAAAGCATGCTTGGAGGCATATTGATCGACCCCGAGGGGCTTCTCATACTATCGTGTTTCAGCTCAAAAGGCGGATTTGCCTACCTCTCTCACAGCCTACGCACTTTAACGGGCGCATCGTCA
+CGCCTTTTGAGCTGAAACACGATAGTATGAGAAGCCCCTCGGGGTCGATCAATATGCCTCCAAGCATGCTTTCAAGAAAATCTTCTAGGGTTCTGGACTGAAGCTTAGAAGATTTTCTTGAAAGCATG
+NODE	3742	51	113	113	0	0
+GGACTACTTCGACAAGAGTGAAGGCGAGATGCTGACGTGCATTCGTATGGA
+CCCCGGCCACTCATAATGCTCGTAGGTGGCATGACCGGTTTCACGCGGGTT
+NODE	3743	51	73	73	0	0
+GGCGGCGCTGAAGATTTGTCTGGTGATGGGGATGATCGAAATCTTTGGTTG
+CCGCCAGCCGCCGAAGTGGTTAGCGAACACGCCGATAGTGGCGTTAGAGAA
+NODE	3744	51	66	66	0	0
+GCCATTTTTGCGGCAGCAGAAAGGACAGAAGCAACCCCACGCACGCAAAGG
+CCCAGCCAGGCGATTGTCACACCGGCGGAGTCGGTACAGTGGCAGGGGCTG
+NODE	3745	34	34	34	0	0
+GAAGCGGGAGACACGGGCTTCGTCAGTATAACCA
+ATTATCAGTTATTCCAGCCTGGCGGCGGTGTTGC
+NODE	3746	45	62	62	0	0
+GATCAGCCATCATCGCCGCATAGTTACCGTGGCTGACCTCAACGG
+CCCCGTTTTAAAGAAGGCAAGCCGGTGCTGTATTACACCTGGACC
+NODE	3747	44	66	66	0	0
+TGAACAAAACACAACCGATAGCGATGAAAACGCGCCGAAAGATC
+ATCCAGCCCAACTTCATGGCAAACTTTCGCCGCTACCAGCTCGC
+NODE	3748	17	469	30	0	0
+CGTCGATGGCCCGGCGG
+TGCATATCCTGCCGGAT
+NODE	3749	41	57	57	0	0
+GGGATCAGGGTAACAACCATTTTGATGTTGTCGCCCGGCAT
+GATGGACGACGGTCTGCGTTTCGCAATCCGTGAAGGCGGCC
+NODE	3750	51	91	91	0	0
+GTTCGCCTTCGCTTGGACGGCCTTCACGACGGAAGAAGCTGCCCGGGATAC
+CCCCTGATTGCGCGTCTGATTGACCGCCCGGTTCGTCCGCTGTTCCCGGAA
+NODE	3751	51	82	82	0	0
+TAAGGTTTCCTGAAGCAGCCAGCGGGCAAAGAGTATGCGTTTGCCGGTCCT
+AGCTGGCGGCGACTTCATCCTGCAATGCGGCATCCAGACGACCGGCGGTTA
+NODE	3752	2	764	5	0	0
+TG
+CA
+NODE	3753	6	6	6	0	0
+AAGGGT
+CAGCGG
+NODE	3754	51	63	63	0	0
+TAATGAGTATACAACGTTAACCATATAATGCCGGCGGTACACCATAGTCCC
+ATTTGATAACCCACGTTCAACCTGTTGTTGTTTTGTGGATATCAGCACTTT
+NODE	3755	26	57	57	0	0
+GTCACCACGCCGACCAGCACCAGAAT
+CGAGTGGTGGAGCACCCTGCACCAGG
+NODE	3756	51	70	70	0	0
+AGTGCCTGTTTAACAGATTATGGTTAAAGGATGCCACATACAGGAGGAAAA
+TGACATTATGGTTCAGATCCCAGAAAACCCACTTATTCTCGTAGATGGCTC
+NODE	3757	51	96	96	0	0
+GACAGACCAAGCACTTCACTCTGAAGTCTGACGTACTGTTCAACTTCAACA
+CCTTCCGGAGCCGGTGCCGGTGCCGGAGCGACTACCGGAGCAGCTTCTTGC
+NODE	3758	51	123	123	0	0
+GGCTTACCATGCAGGAAATGCGTGAGCGCATGAAGCATGGAAAATTTGGGG
+CCCTCATCATCCCCGCCGCAGCCGCTCACCTCCCGACTTTCCCCTGCGCGT
+NODE	3759	51	87	87	0	0
+AGCGTGGGCATAAAATCGGCGCGTTCACATTTCGCTCATTGCCTGCCGCCA
+TGTTAAAAAGATACGGGGGAAGGGGCATTTTCAGAATTTATTGTGCCGACA
+NODE	3760	43	43	43	0	0
+GCTAAAAAATTAATGGGAACCGGTTTGATTATTCACTGTCTGC
+CGCGCCGCGCTGGAAGCCGCCCTGCCCATGTTGCGCACTCAGT
+NODE	3761	51	61	61	0	0
+TCGCGCTGGGTTGCGCTGGCGTCATCAACTTTGCTGATGCCGTTCGTCTGG
+AAATATTCGCCCAGGCTGTGCCCTGCCATTAACGCAGGCATTTTACCGCCC
+NODE	3762	32	32	32	0	0
+GATCTGAGTTCCAGTATATTGAAACAGAAACT
+CCCCTGACGCTGAAGCCATATCCGTTTCATTA
+NODE	3763	4	62	47	0	0
+AGGA
+TACT
+NODE	3764	45	45	45	0	0
+TATGGTACCGCCGTTAGCGCTGGGTCTGGCAACGATGGTGGCGCG
+AGTGTATTACGCCCTTGCGGTGCCACAATCGGCCCAACAGTTTTA
+NODE	3765	51	65	65	0	0
+GTGCTGATAACTTCGCCAGTATGAATCCGGTTGCGAAATGGATACTCATCG
+CCCCCCCCCAGCCCCGGTCCCAGGTTATTAAGCGTAGCCACTACCGAGGCG
+NODE	3766	51	58	58	0	0
+GTAATCGATTTAATCGCAATGGCAATACCTGCAATTAAACCGCCGCCGCCA
+CCCCGACCATTAAAGTTATCGGCGTACAGGCCGAAAATGTTCACGGTATGG
+NODE	3767	42	42	42	0	0
+TCGCTTTCATCCCATTCGCCATCCATCCGGCTTTGCGGCGCC
+AGGCCGTACGTAAAGTCACTTCCAGAACGCGAACGCCCCCGG
+NODE	3768	51	62	62	0	0
+GCCAGATCGCACTGGAGGAAGCGGGGCGCTATGCGGCAGAAGATGCGGATG
+CTAAAGGTGAGCTGGTTTTTACCTTTACCGGCAATGTCTTCAAAGGTGATA
+NODE	3769	151	255	255	0	0
+TTGATAAAGAAAGCTCAAGTCTGAAACTTACCCTCGTACTTCTTCCTTCATTAGCTCTTAAATTATTTGTTCTTCTTAGCAACAGACCATGATGATGACGTGGTCTGTTGCTAAGAAGAACAAATAATTTAAGAGCTAATGAAGGAAGATG
+ACGTCATCATCATGGTCTGTTGCTAAGAAGAACAAATAATTTAAGAGCTAATGAAGGAAGAAGTACGAGGGTAAGTTTCAGACTTGAGCTTTCTTTATCAAAGGAAAGAATAGCTGAGTTTAAAGACATGATCCGCCAGAAAGAAGAGGAC
+NODE	3770	43	43	43	0	0
+AGCTGGCGGGCGATCGCGCCTATGCTGATGACAAAGCCATCGT
+GTAAGTGGTATTGCCGAGGAAATCCATATTGATCGGCAAGCCA
+NODE	3771	6	6	6	0	0
+GATCCC
+TCTGGC
+NODE	3772	110	153	153	0	0
+TGTAGTACATCTTGCGAGCAAGTGCTTTGCCCTCGATGTCAGACCAGGTCTTCACGTAGCGCTCGTAGTCTAGCTTTTCAGCTTGCAGCTTAGCAATAGGGACGCTATTG
+GCTACGTGAAGACCTGGTCTGACATCGAGGGCAAAGCACTTGCTCGCAAGATGTACTACACCACTAACGCGCCCGTAGTCTAGCTTTTCAGCTTGCAGCTTAGCAATAGC
+NODE	3773	109	130	130	0	0
+GCGACGCCGGGTATGCCTCAGCTGTGGATTTTGGCATTTTTTGTCGCTGGCGTGCGGTTAATGCGCGCGGCGGGCTGCGTGGTGAATGATTATGCCGACCGTAAATTTG
+AACCGCACGCCAGCGACAAAAAATGCCAAAATCCACAGCTGAGGCATACCCGGCGTCGCCCCCCATAGCGCCCAAAGCGTCGGCCAGAGCAGCAGCAACGCGCCAATAG
+NODE	3774	51	67	67	0	0
+AAGGGAAGTTACTATGTCATGCTCGTTTTCCGTGACGCGCGCGTTTGCCGT
+TATAATGATAGTAATTATCGTTATCTATCTTATTTGGTTATGTTAGCATGT
+NODE	3775	36	36	36	0	0
+CAGATAATAGTTTTTCATTACACTTCTCCCCCGGTT
+GCCACTGAGGGGAATCCGGGCTCTTGCCCGGGCCTT
+NODE	3776	2	2	2	0	0
+TA
+CC
+NODE	3777	51	56	56	0	0
+CATTTTATTCCCGGCCACAGGCGTCGCGACAACTTCATGGTACAGATCCAC
+GCAGCAATATGGCGCTCTATAAATCGCGCAAACTAAGCGTACAAACGCCGC
+NODE	3778	51	78	78	0	0
+GGGAGGACGAAAACCGGGCCGGAATGGATACGGGAAAAAGACGGAAATTAT
+CCCAGGCCTCACTTCCCGTTGCCAGCGCCTCTTTCATTATAACCCTGTGTT
+NODE	3779	48	48	48	0	0
+GGCGCTGCAATTTCCTTCGTTGCAGGTGACGGCTATCGAGCGTAATCC
+AACGAAGGAAATTGCAGCGCCGCTTCAATTGAGACGCTTCCCGTTCCC
+NODE	3780	11	12	12	0	0
+GACCGGCGACG
+TTGATAAGGGT
+NODE	3781	4	4	4	0	0
+GGGT
+TCCA
+NODE	3782	5	5	5	0	0
+GTGGA
+AAAGC
+NODE	3783	25	42	42	0	0
+GGGGGATAACTACTGGAAACGGTGG
+ACTCCCCCGTCCGCCACTCGTCAGC
+NODE	3784	2	2	2	0	0
+TA
+TT
+NODE	3785	31	70	70	0	0
+GAAGCTGGCATCACGACACCTTTACCTACTA
+TCCGCCGCCATATTCATAGACGCGGCGCAGT
+NODE	3786	143	203	203	0	0
+ACCACCCTTGCCGCCATTAATCGTTTTTTCCATTTCACGCGAAATGGTGCGTTTTTCAGCTTCATGACTCGGTGCAGTTGTACTTGCTGTTGTTTGTGCGTTGAGAGAAAAAGCGATTGCCAAGGCGGCAAGGGTGGTATGAA
+ACAACAGCAAGTACAACTGCACCGAGTCATGAAGCTGAAAAACGCACCATTTCGCGTGAAATGGAAAAAACGATTAATGGCGGCAAGGGTGGTATGAAACCTTTTTTTGCATAGCGGTTTTATTTCTAAAACTTTAAAAATAA
+NODE	3787	41	60	60	0	0
+GGCGATGCTGAATCAAGTTCAAATATCAGGTTAGACAAATC
+GTAAAATTCGTGTGAGGCGATGCTGAATCAAGTTCAAATAT
+NODE	3788	4	12	12	0	0
+TAGG
+TGGA
+NODE	3789	51	88	88	0	0
+AGCAGATGTGTCACAAATAACATATCGCACTATACGCGACTACAATACCAT
+TGCAAGGATAATTTCCCCGATCAAAGGAATGGAACGTCCAACAAACGGCGC
+NODE	3790	6	600	43	0	0
+GGTACG
+CGCCAG
+NODE	3791	47	99	99	0	0
+GTTCGATAGCAGGCACCACGTCATCCTCCTGACCATGCCACAACAGA
+TCCGGCTCCAGCAGGCACTCGCCGCGGCGAAGCTGGATAAGCATGTG
+NODE	3792	51	69	69	0	0
+GGGTGACAATATACCCTACTATCCTCTCAAAACAACATCATTTTGATAACA
+CCCTGTAGGAACGTTGCTCTCTGGTTGCAGTCGATCCGGATTACGCAAATT
+NODE	3793	7	7	7	0	0
+TTTTCAA
+CCCAGCC
+NODE	3794	37	37	37	0	0
+GGCATTCGTAGCTGGATTTTGCGTAACTTGCCGCAGG
+GCCGAACGCCATGCCGGTCCGGTGGTACTCATAGCGC
+NODE	3795	150	275	275	0	0
+TCGCAAGACCTCGCCTATTGGAGCGGCCGATATCAGATTAGGTAGTTGGTGGGGTAAAAGCCTACCAAGCCGACGATCTGTAGCTGGTCTGAGAGGACGACCAGCCACACTGGGATCCCCCGCATGAGACCTGAGGGTGAAAGCGGGGGA
+TCGTCCTCTCAGACCAGCTACAGATCGTCGGCTTGGTAGGCTTTTACCCCACCAACTACCTAATCTGATATCGGCCGCTCCAATAGGCGAGGTCTTGCGATCCCCCGCTTTCACCCTCAGGTCTCATGCGGGGGATCCCAGTGTGGCTGG
+NODE	3796	46	56	56	0	0
+CTGATATAACGAAAATTCATCCCGTACTGCACATCCCAGCGCCTGT
+TGGAAGAACGCACTCGTAAACTGCAACAGTATCGTGAAATGTTAAT
+NODE	3797	51	79	79	0	0
+AGATGGTTTGCGGAACATAGCTCAGGCCAATCACTGCCGGGCTGTAACCCA
+TCTTTTCTGATTGGCGGATATGGTTGCCGCGCGGCGCTACAAAAATGGCAG
+NODE	3798	1	1	1	0	0
+G
+C
+NODE	3799	4	8	8	0	0
+GCTG
+TCTG
+NODE	3800	13	13	13	0	0
+ATTATTGCGGTTC
+CGCAGCCGGTGGC
+NODE	3801	66	111	111	0	0
+ACTTGCATGTGTAAGGCATACGAGGCTTCAGTTCTGAATTGATTGTTAATCGTACAGTCTCTCACA
+CCTTACACATGCAAGTCATACGAGGCTTCAGTTCTGAATTGATTGTTAATCGTACAGTCTCTCACA
+NODE	3802	113	122	122	0	0
+ATCGGATTTCCAAAAACAGCATAGGGTTCCATCATATTACCCCTGTCGAAACAGTTCGCCCGGCAGAGCATCGCGAATTTCTGAAGGATTTAAACGCCCACCCGTTGCGCCTT
+CCGGGCGAACTGTTTCGACAGGGGTAATATGATGGAACCCTATGCTGTTTTTGGAAATCCGATTGCGAACAGCAAATCGCCATTTATGCATCAGCAATTTGCTCAGCAGCTAG
+NODE	3803	43	69	69	0	0
+TCGACGTCAGCGATTTTTTGGCCACGGGGAACTTCGGCTGGTC
+TCTGACCAACGCAACCACAGAACACCAACATATTAATCAGCCC
+NODE	3804	1	216	2	0	0
+G
+T
+NODE	3805	51	66	66	0	0
+GCAGGGTGATAGAGTGGTGATCCCAGAGGTATTGATAGGTGGAATCAACGT
+CCTCGCTGGCCTGCCAGCAGACAATCGCAACAGCGCTTCGCAAACTGTAAC
+NODE	3806	26	67	67	0	0
+CCCGGTCAGCAGCAACCAACACTGGC
+AGTCGCCAGTGTTGGTTGCTGCTGAC
+NODE	3807	51	61	61	0	0
+GATCAACGCGCCTGTCGCTGAACGGCACAATTATTGTGGGCCGCGACATCG
+CCCGGATACTGCGACAGTTGTTGCAGTATCTCGCTCATGGGACGGTTAAGA
+NODE	3808	51	154	154	0	0
+TTACACACCGCCCGTCGCACCTACCGATTGAATGGTCCGGTGAAGGCTCGC
+AAAAGGGCAGGGACGTAATCAATGCAGATTGATGATCTGCGTTTACTAGGA
+NODE	3809	51	62	62	0	0
+ACTGCCAGGTTCCAGTTAATCGCCGCAATGAATCCCAGCCCGACCGGACAT
+TGTACGTTATTTTCGCTCTGGTACGGGATAAATGAATTTGACCGGATTCTA
+NODE	3810	25	25	25	0	0
+TTCCGGATTCCGTTCCGGTACTTTT
+GGTGACATCTGCTCTCAAAGGTGTG
+NODE	3811	29	1510	63	0	0
+GCCGGTGACCTGCACCCACTCCCCGGCCT
+ACCCTGCTGCGCCTGCTGACCGGGCTGGC
+NODE	3812	34	82	82	0	0
+GATTTTTCTTTCAGGGCTATCACCCCTTCGCGCG
+GCCCTCACCCCGCAGCTGCCAGCCGGTATCCGCC
+NODE	3813	51	65	65	0	0
+TTAGGGGGAGCGAATAACGCCGATTTGTTCAAACTGAAAGCTGCTCATTTC
+AAAAGAAAAATTCGCCGTTCCGCGCCAGCCTGGTCTGGTCAAAAGCGCCTG
+NODE	3814	14	16	16	0	0
+GCGCTGCTATCTTT
+CCCTCCAGCGGCAC
+NODE	3815	22	36	36	0	0
+GATCAGAAGTGCGAATGCTGAC
+GCAGGCTTACAGAACGCTCCCC
+NODE	3816	6	6	6	0	0
+CTCCAG
+TCAGGT
+NODE	3817	14	25	25	0	0
+CCCTTGGCAAGGTC
+TTCTTATCTACAGT
+NODE	3818	48	72	72	0	0
+AAGGCAATCAAAACGTTGAAGCGCGAAAAATAGGTATTTATCAGGGGC
+CCCAATAGTGCTTTTTCCGGCACCCATAGGCCCAACCAGAAAGATATT
+NODE	3819	46	156	156	0	0
+TGAGTAATGTCTGGGAAACTGCCTGATGGAGGGGGATAACTACTGG
+CCCGCCACTCGTCAGCAAAGCAGCAAGCTGCTTCCTGTTACCGTTC
+NODE	3820	48	85	85	0	0
+GGAACCCAAAGACTTGTGATTTCTCATAAGGTGCTGACGGAGACAAAA
+TGGTGCCCTTCCGTCAATTTCTTTAAGTTTCAGCCTTGCGACCATACT
+NODE	3821	23	1265	38	0	0
+TCGTCTGCGCCGTTAATGGCTGT
+TGCCGCCTCTCCTCTGCGGGGGG
+NODE	3822	24	29	29	0	0
+GCTTTGCCTGCCTGAGCGAGCAGG
+CCCGGGATATCAACCACTCGCAGC
+NODE	3823	51	58	58	0	0
+GTCAACAGGGGATCTGCTTAGCATGGAACAACCGCCCAGCATGAGTGCCAA
+CCCCGTTCAAAGCACCGCAACCCCGCCAAAAGCGGAGCCGGAGAAACCTAA
+NODE	3824	42	43	43	0	0
+TGGGAAGGGTGTTCATTAAGGACTCCTTTATGCTTACTGTAA
+CGTAATGTGCGTTTGCAAGGGGTGGACTCGGTGATGACCCCA
+NODE	3825	5	10	10	0	0
+CCAAC
+AATTG
+NODE	3826	20	54	54	0	0
+GCGTCGCACGCGACGTTCAA
+GGTAATCCGTAGCCAACACA
+NODE	3827	42	42	42	0	0
+GCGGCCATCCCTCGCCCGGAGGCGATGGCCTCTACGCAGCCA
+TGGCGCTGCGTCAATATGGGGTGAAAACGCAGAAATGGTTAA
+NODE	3828	24	27	27	0	0
+CTCAGGGTATAATCGCCCGCCCCC
+CCACCAGCCATTCTGCATCGCTGA
+NODE	3829	27	79	79	0	0
+GTGCTCTACCAACTGAGCTATTCCCGC
+GAGTTCGAGTCTCGTTTCCCGCTCCAA
+NODE	3830	47	47	47	0	0
+CGACCTTTCAAATGGGCTACCGCATCGCCAATGGTACGGTGAGTTTT
+GAATGCAGATTCTGGCAACCCATCTTTCTGATAAGGCCGTAGACTTT
+NODE	3831	102	290	290	0	0
+ATTCTTTGACTTGCAACCGCAATACGCAGCTAAACTGAAGGTTTATCGAGCACTCGCGCAGATAAATATTACCGGCTGCAAGTCAAAGGTTAAGGCTTACGC
+TGCTCGATAAACCTTCAGTTTAGCTGCGTATTGCGGTTGCAAGTCAAAGAATGCGTAAGCCTTAACCTTTGACTTGCAGCCGGTAATATTTATCTGCGCGAG
+NODE	3832	12	12	12	0	0
+GCCAAAAGGCGT
+CCCCGTCGCACG
+NODE	3833	51	55	55	0	0
+AGGGTCGCTGCTAAAGCGATGAGGAGTAAGCCGCCTTTAGACGTAATTGGC
+TGATGATCAAAACCGTAACTGATGTTCTTAGGTTAACGTTGATGCTGATAA
+NODE	3834	38	38	38	0	0
+CGAAAGACGCAGGGGGACCTCTGGAGAGCTCTGTGATG
+TGATGCAAAATGGCGATCTTAGCCAGAACCGCTTGCTC
+NODE	3835	51	79	79	0	0
+TCCTGGCGCTATTCGGTATCCTCTTCAAGTTGACGATTGCGCACCGATTTA
+ATCCAGATCACAATCATTAGTCCGCGCGCCAGCGGCGAATCCAGACCTACC
+NODE	3836	17	52	52	0	0
+GTGGCTAATCCTGGTCG
+CCCGCCCCAGTCAAACT
+NODE	3837	51	74	74	0	0
+ACGCAAGGGGCTGATTCTATCAGAAAACGATGCTAATGATGGCGCTGAGTG
+TCCTTTTCGCGCACCGTTTATGGCTAACTTTTGAATAATTTATTATGACGA
+NODE	3838	9	9	9	0	0
+TGCTGCACG
+CCCCCGCCG
+NODE	3839	51	52	52	0	0
+AGTCCAGCTTTTTGGTGAACGGTTTTTAGCATAACAGCTTCGCGAAATAGT
+TCCATACGCGCCCTGTTCGGTCCTGGCTCAAGCTATTATGGCAGCGTATCG
+NODE	3840	35	81	81	0	0
+AGCCAGCGCTAATGCCTCTTTAATGGCGTGCACGT
+GGCCAGATGGAGAACCTGGCGGTGGACATGGGCTA
+NODE	3841	7	88	88	0	0
+CGACTTG
+GGAAGGG
+NODE	3842	63	278	278	0	0
+ACTGTGAGACAGACAAGTCGATCAGGTACGAAAGTAGAGCATAGTGATCCGGTGGTTCTGTAT
+TCTGTCTCACAGTCAAGTCGATCAGGTACGAAAGTAGAGCATAGTGATCCGGTGGTTCTGTAT
+NODE	3843	40	40	40	0	0
+AGCCGGTAACAGCAATTTTCTGTGCGCCAGTGTTGTAACG
+CCCGGAATGTATCGGTAATCAGTTCCGGCCGCGTGTTTTG
+NODE	3844	51	62	62	0	0
+TAGATCGGAGGCGATCTTCGCCAGAAATTTCACTGGCGCAACGCCGGCGGA
+AAATAAACCGAACGGACAATATGTTATTCCGCCAGCCGATGTACCCGGCTT
+NODE	3845	51	70	70	0	0
+AGGCAGATAGCAGCCATAAAAAAACCCGCTTTACGCGGGGTTTTCTACAAA
+TTTTTGCTCGTCAACCGCTGGCGCTGACCTCACTCGTTCACGCTCTTCCTG
+NODE	3846	19	419	32	0	0
+TGCTGGTCGGCATCATCGG
+CTCTTCACCATCGCGAACT
+NODE	3847	51	87	87	0	0
+GTGAAGGTTGGGTAACACTAACTGGAGGACCGAACCGACTAATGTTGAAAA
+CCCTGCCCATGGCTAGATCACCGGGTTTCGGGTCTATACCCTGCAACTTAA
+NODE	3848	4	4	4	0	0
+TATG
+CCCC
+NODE	3849	139	261	261	0	0
+TAAGGTAGCCAAATGCCTCGTCATCTAATTAGTGACGCGCATGAATGGATGAACGAGATTCCCACTGTCCCTACCTACTATCCAGCGAAACCACAGCCAAGGGAACGGGCTTGGCGGAATCAGCGGGAATCTCGTTCAT
+TTCGCTGGATAGTAGGTAGGGACAGTGGGAATCTCGTTCATCCATTCATGCGCGTCACTAATTAGATGACGAGGCATTTGGCTACCTTAAGAGAGTCATAGTTACTCCCGCCGTTTACCCGCGCTTCATTGAATTTCTT
+NODE	3850	28	119	119	0	0
+GGGGTAGTTTGACTGGGGCGGTCTCCTC
+GTAACGGGTCCACGTTAGAACATCAAAC
+NODE	3851	234	544	544	0	0
+ATTCCCTTCTCCTTTCCAGATAAAGACTTTATTGGAAAAGATATTACAAAGTTTTGAGTATGAAAAAGCTGTAGGAAATCCAAGATATTTACATCTTGCTGTTTTAGCACAGGAAGCATCTTTAAAAGGAATACTACATCATAAGTACCTTTGTAGACATCACTCTCTTTATTCAAAAACCTATACTTTATCGTCGTCTTTAACTTCCCAATAATGCTACTCAAAAAAGCTATC
+ATAGGTTTTTGAATAAAGAGAGTGATGTCTACAAAGGTACTTATGATGTAGTATTCCTTTTAAAGATGCTTCCTGTGCTAAAACAGCAAGATGTAAATATCTTGGATTTCCTACAGCTTTTTCATACTCAAAACTTTGTAATATCTTTTCCAATAAAGTCTTTATCTGGAAAGGAGAAGGGAATGGAAGAGAATTACCAGCTATGGTTTGAATCTTTTACAAAAGGTTGGATAA
+NODE	3852	3	3	3	0	0
+AGA
+AGC
+NODE	3853	5	5	5	0	0
+TGGCG
+CCCCA
+NODE	3854	45	45	45	0	0
+AACGAGCAGCTACAACATGCCAGCCCGTTGCTTAGCAAATAACCC
+AGAGGGCGAAACAATGAAAAAATGGCTAGTCGTGATAATGGCGTT
+NODE	3855	51	123	123	0	0
+GAATTTATGTGACTGGAAGGAACAGGAAAGAAAAGCCGCAATCTCCTCCAG
+CCCCTTTTCTGCCATGTCGATAAGCGTCTCTTTTATATTTTTTAGGTCGAC
+NODE	3856	40	53	53	0	0
+AAGATATGGCCAAGCGTTTTTACATTCTGCTCTATCTGTT
+ACCATCCAGAACAGTATCATCAGTAATGGCCAGCGTTGCA
+NODE	3857	45	1440	81	0	0
+TCAACCGCAACAACCTCAGCAGCCGCAGGGCGGCAACCAGTTCAG
+ACCCCCCTGCTGCTGACCGCCTGCCGGTGCGCCGCCGCCCTGGCG
+NODE	3858	173	408	408	0	0
+TTCCAGGCTCTTGCCGTATTTGCCCTGCAATTTAATCAGCATCTCAGGCATGGACAGCATTTTGCCGGTGGCATCCGTAAAGGACAGACCCAGTTTTTTTGCCCCTTCAACTGCCCCCGTCATAAAGCCTTCGTAAGCGCTGCTGGCTTCCGTTCCCAGCGTGCGGTTAAGCT
+ATGACGGGGGCAGTTGAAGGGGCAAAAAAACTGGGTCTGTCCTTTACGGATGCCACCGGCAAAATGCTGTCCATGCCTGAGATGCTGATTAAATTGCAGGGCAAATACGGCAAGAGCCTGGAAGGGAATCTGAAAGCCCAGGCGGAACTGGATGCGGCATTCGGTGACAGTTC
+NODE	3859	41	41	41	0	0
+CGGTGTCAATGCTAGTGGAACAGGCGCGCCTGTCGCCGCCT
+TATGGCCGGGATGAAAGCGTTCACCGCGGCGGTGCTGGGCG
+NODE	3860	51	63	63	0	0
+CCCGCGCCGCCGATAATGCCGATGGCCGCCGCCTGCGGCAGGGTGAAGCTG
+GCGGCCCGACGGCGATTTATCTGTCGGGCAAACTGGCGCCGGAGCTGCTGG
+NODE	3861	2	2	2	0	0
+GA
+CC
+NODE	3862	102	163	163	0	0
+TTAGCATCATTTAGGGCGTGGACTACCAGGGTATCTAATCCTGTTCGCTACCCACGCTTTCGAGCCTCAGCGTCAGTGCTGAAATAGTAAGCTGCCTTCGCA
+GGTAGCGAACAGGATTAGATACCCTGGTAGTCCACGCCCTAAATGATGCTAACTCGTTATTTGGCCTTCGGGTTGAGTGACTAAGGGAAACCGATAAGTTAG
+NODE	3863	43	65	65	0	0
+GGTATCGAGTAGCGAAACCAGCCGCGCCTGGACGCCGGATGCG
+CAGCAGGAGCGAGCCTTCATGACCGCCCCATACCGCCGCCAGT
+NODE	3864	65	132	132	0	0
+ACGTACAAATACGTCTTATAAACTTCATTAAAATTAAGATTTAAAGCAGCACATGAATCTTCTCC
+GACGTATTTGTACGTTTATAAACTTCATTAAAATTAAGATTTAAAGCAGCACATGAATCTTCTCC
+NODE	3865	24	1327	67	0	0
+GCGCTATCAGGGCGTGCGCGAAGA
+TTCCAGAAACAGTGACGTTTCAAT
+NODE	3866	15	16	16	0	0
+TGGCGATTGTTGCGC
+TCCGCTGCACCCGGA
+NODE	3867	39	62	62	0	0
+TCACTGACTATCCACAGCGAATTCCGGCCATCAGAAGCT
+GGTAAATTGGCACGTTTTTCCAACCTGGGTGGAGGTATA
+NODE	3868	17	57	57	0	0
+ACCATTTTTCGCGCCTT
+CCCCCTAACCAGGGAGT
+NODE	3869	51	58	58	0	0
+ACATCCGTTTGCTGAACGTGGCAGGGTTGCTGCGCCATTCCGTTCAGGAAG
+TCCCGCGGCGATATTTGCAACGCCTGTGGCAGGGCATCCACGTCACTTAAT
+NODE	3870	44	53	53	0	0
+CTTTCAGAGTTTTACGCGCAATCGGGATAAAACGCGGGTAAATA
+ATAACACCGATAGCAACGATGACTAATGGCATGATTTACCTGGC
+NODE	3871	103	141	141	0	0
+CTTTAATCGGCGAACAGCCGAACCCTTGGGACCTTCTCCAGCCCCAGGATGTGATGAGCCGACATCGAGGTGCCAAACCAATCCGTCGATATGGACTCTTAGG
+CACATCCTGGGGCTGGAGAAGGTCCCAAGGGTTCGGCTGTTCGCCGATTAAAGTGGTACGTGAGCTGGGTTCAGAACGTCGTGAGACAGTTCGGTCCCTATCT
+NODE	3872	51	109	109	0	0
+GGATAGAGCGCAGTATCCGGCTGGCGCAGGAGAAATAAGACCCTGACGGCC
+CCCGCCCGCCGGGCGTCACCCGCCGGCAGCAGTTTCAGCATCATCTCCCAG
+NODE	3873	120	466	466	0	0
+ATGCCGTGAGCATTGTTTGTGTCACATGAGTGACTAATGTTTAACCGCTTTAGTTTCATTCATCGTTGGTGCCTAATGTTTTGCGGCTGTCAATGAAATCGGCAAGTCTACAGGAGTTTT
+ACCAACGATGAATGAAACTAAAGCGGTTAAACATTAGTCACTCATGTGACACAAACAATGCTCACGGCATGCCGTACGAAGTACTGCATGCCGTGAGCATTGTTTGTGTCACATGAGTGA
+NODE	3874	51	52	52	0	0
+GACGCACAACAGGGGGAGGACGAATGCGAAAAGTAAAGAGTGGGTAAATCC
+CCTCGCGGGACGACGATGGTTTCGAGCGGGGCAGGTGCGCTGCTGGCTGTT
+NODE	3875	103	128	128	0	0
+TCATCATCATGGAACCGCCCAAATTCGTCGAAAATAAAAGCCAGTTAATGAGAGCCTGCCGGGGCTATAAAGACATTAACATGTTAGCGATTCAACTGCTCAA
+TCTCATTAACTGGCTTTTATTTTCGACGAATTTGGGCGGTTCCATGATGATGACGTCGAATTTTTCGCCGTGTTCTCGGTAAGCGCGCAGCACCTTAAACCCG
+NODE	3876	40	40	40	0	0
+ATGAACAACTGTGGGTCGGCGATCATCCTGGTCTGAACGC
+TGCGACCGTTTTGGCATCGGTGTGGAGGAGAAGAAATATT
+NODE	3877	5	5	5	0	0
+GTAAT
+CCTCA
+NODE	3878	34	40	40	0	0
+GCTGGAAGAGCAGGCCAGCCGTCTGACCCAGGCG
+ATTCCTGAACCAGCGAGGCGTTCTGTTGCGTTAC
+NODE	3879	8	8	8	0	0
+TTCGGTGC
+CCCAGCGG
+NODE	3880	51	54	54	0	0
+AACCGGAACACTGATCTTTGCTGTCGTCACTTTATATAAAAAGAAAGCAAC
+TACCACTAAACATGCTGAAATCACAAAACTGATCTCCTTCGACCCCGTTAC
+NODE	3881	37	37	37	0	0
+CAAACGGCGCGGGAGTTCGCACTACGGCGTTGTTAAC
+ATGCGTCAGATGGCGCAGTTGATTTTGTAGCGGAAGG
+NODE	3882	35	88	88	0	0
+GAAAGGCATTGCCGCAGCCTCCCTCGCAGCCATTC
+CCCCCGCCGGTCACAAAAATATAGTTCGTTGTCAT
+NODE	3883	47	47	47	0	0
+CCGCCCATTGCGGAGTAACCGACCAGGGTGATTAGTGTAATGGTTGC
+AATGGGCGGCGCCGTCGGCGCAGGCGGCCTCGGTCAAATCGGCTATC
+NODE	3884	27	29	29	0	0
+AAACGTCAATTGCTGCGGTTATTAACC
+CTCCGTGCCAGCAGCCGCGGTAATACG
+NODE	3885	24	30	30	0	0
+ACAACACCTTCCTCCCCGCTGAAA
+TCCCGCAGAAGAAGCACCGGCTAA
+NODE	3886	51	96	96	0	0
+AACATTTTTATGCGACTTTTTGGTTACGCTCGGGTCTCAACCAGTCAGCAG
+TCCTTAAATCGAATATCGGACAACTCATGTCTATTATTACAAATTTACGAT
+NODE	3887	13	26	26	0	0
+CTTGTACTTAACA
+CCCTTGCCAAGGT
+NODE	3888	20	989	24	0	0
+CGCTTTGGTCAGCATCGGGG
+CCGTCCCGCGTACACAAAGG
+NODE	3889	30	30	30	0	0
+GTTCAATATCAAGGAAACCGTGATCGTCCA
+CCCCCGGAAGGCGCGCGCGATTACCTGGTA
+NODE	3890	51	70	70	0	0
+ACGTTAACGCAAGAATGGGGTCAAGCCAGAACATTGCCGCGGCGATAGCGA
+TCATTAAGCGCCGTACCTGTAGTGATACTGGCGACGTGGATTTCCCGCCGT
+NODE	3891	51	91	91	0	0
+CCGCCTGGTGGGATAGGCTCTAAGTCGATTCTCTTTTTTGCGAGGCGAATT
+GTATTGGCGCAGCCAGTTTGGACACGGACAGCGCGCAAAAACCGGAGCGTA
+NODE	3892	35	35	35	0	0
+GCCATGCGAGCGTTGCGCCGACGCTATACCCTACG
+AAACTTTTAATAGAGACTTCATAGCATTTCCTTTT
+NODE	3893	42	42	42	0	0
+AGTAAAACACTTTTCAAAAGAACAGATGAGCGTCGCGTTTCT
+CGACAGGCTGTTTGTATTAATGACTTGTGCCATGATCTTTTC
+NODE	3894	37	38	38	0	0
+AAAGAGGGTTGGACAAAATTTTTTATCAGGTTGTCCT
+CAGGCCGCCGCACATGAGCACCGTCGGAAACGGACCA
+NODE	3895	9	10	10	0	0
+GACTACGTG
+TAGCGGCGT
+NODE	3896	1	6	6	0	0
+G
+C
+NODE	3897	47	80	80	0	0
+AATTTTACGATCCGCCTCGCATCGTGAGGACTATCCTTCAATCGGAT
+TTAAAGATCCATCACACTTTTTATGAAAATTCTGTAACCGCTTCCAC
+NODE	3898	25	25	25	0	0
+GAGAATTAGATGCGCTATTCGATCA
+CCCTTCGCTTTCGCTGTCGGAGGTA
+NODE	3899	44	44	44	0	0
+CCATCATGCTGATCAATTTTTCGCAAATCGCCAGCCCCAGACCG
+TTAATCAGCACATAGGCCAGCGTAATGGCGGTGAAGGATTCCCA
+NODE	3900	45	73	73	0	0
+GCGATGTCATCTCGCGCTAATATCCCCTCAGGCAACACCAGAAGC
+ACCTGCCGATTCGCGCCGCGCAGCCGCTGGATGGCGCGTTTATGA
+NODE	3901	42	1493	47	0	0
+TATTGGTGGATTTCCCACAGCGTTCACTGACTTTGCCAATAT
+ACCCGTGGCGCCAGCCATACCAGATAACAATAATGCGCTACC
+NODE	3902	46	66	66	0	0
+GTCGGTTACTCCGCAATGGGCGGCGCCGTCGGCGCAGGCGGCCTCG
+CTGATAATGTACCGTAAACTCATTATGCGTTATCCCCCTGGCAATC
+NODE	3903	51	53	53	0	0
+ATGATCTGATCAATTATTTTTGAAGCACTAAGTACGGAGAAGATATGAAAC
+TTATACAACTATTCAGTAATTCGACGATAGACCGAAGGTGTGCTTGCTGGC
+NODE	3904	51	53	53	0	0
+CGATGTAACGGGGCTAAACCATGCACCGAAGCTGCGGCAGCGAACGTATCA
+GTCCGCGCAGGCCGACTCGACCAGTGAGCTATTACGCTTTCTTTAAATGAT
+NODE	3905	17	23	23	0	0
+CGCCGGTTGCCGTCATC
+CCCGCCGGGCCATCGAC
+NODE	3906	43	43	43	0	0
+TCACCGCGCTGCCGGGGGCAGTCGATTTACTCAATCACCTGAA
+TCATACAGCCGCTGCATAAGGATATGAATTGCGCCCTCGTCGT
+NODE	3907	47	57	57	0	0
+ATCAGAAGAGAATTATAGCGCCGAATTATTTCGTTATATATTTATTT
+CAACGCATCCCGAACCGCACCACCGACCAGATAAATCTTCACGCCAC
+NODE	3908	51	66	66	0	0
+ACCTGCCACAATCATGGCGAGTAACTGAAAAAAAGCCCATCCGATAACGAA
+TATATTTTTGTTAGGCGTATTATTATTTCACCCCATAATATTTGTACAGAC
+NODE	3909	142	354	354	0	0
+TGTTACGACTTCACCTTCCTCTAAATGATAAGGTTTGGACAAGTTCTCACGGTCAGGCCCCAATGAAGGAGCCAAACCACAATCCCGAGTCCTCACCGGACCATTCAATCGGTAGGTGCGACGGGCGGTGTGTACAAAGGGC
+GGACTCGGGATTGTGGTTTGGCTCCTTCATTGGGGCCTGACCGTGAGAACTTGTCCAAACCTTATCATTTAGAGGAAGGTGAAGTCGTAACAAGGCAGGGACGTAATCATTGCAGTTTGATGAACTGCGATTACTAGGAATT
+NODE	3910	15	35	35	0	0
+TATCCCACGGCTGAA
+CCCCTGCTCCCCGCC
+NODE	3911	42	42	42	0	0
+TAAAGGCGTGCTGGATCAGACGCGTCGCCATAGCTTTATCTC
+TGGAACGTTATCTGCAACTTTGCGCCGAGCAGAATATGCAGG
+NODE	3912	44	44	44	0	0
+AAGAAAAAGGGAAAGCGTTAAAATTCGGAAAACATAAAGACGCT
+ACGCTTTCCCTTTTTCTTATTTTATATGCATGGTAAATCATATT
+NODE	3913	44	61	61	0	0
+CATATCGCTGGGCCAACGTTAAGGAACCCTTTGTGAGTCAGGCC
+CGTCATGCTGGCGGTGGCGGGCTGCATTATTCAGCGTCTGACCG
+NODE	3914	8	8	8	0	0
+CCGCCCGC
+TTAGTCAC
+NODE	3915	23	910	75	0	0
+GTCTGCCGCTGATTGCGGTGCCG
+TGGCGCTCAGCGTCTGGTCAGGG
+NODE	3916	1	1	1	0	0
+G
+T
+NODE	3917	120	165	165	0	0
+GGCACTACCTAAATAGTTTTCGGAGAGAACCAGCTATTTCCAAGTTTGTTTAGCCTTTCACCCCTACCCACAGCTCATCCCCTAATTTTTCAACATTAGTGGATGAGCTGTGGGTAGGGG
+TGGGTAGGGGTGAAAGGCTAAACAAACTTGGAAATAGCTGGTTCTCTCCGAAAACTATTTAGGTAGTGCCTCAAGTATCACCATCGGGGGTAGAGCACTACCTAAATAGCTGGTTCTCTC
+NODE	3918	43	45	45	0	0
+TGTCTTGTTTTCTAAACGTCTCCGGACTCACCAAGATGCCCCG
+TACCCGGTTGACCTGAGAAGGTTTACCGGGTTTTTTGACATCC
+NODE	3919	27	35	35	0	0
+GTCCCCGCTTTATCTTCGACTGACACA
+CGGTGACGGTGGACACGCAAATCGCCA
+NODE	3920	66	68	68	0	0
+CCTGCTGATTCAGGAAGGCGGACATCAATCTCGCCGACCAAATTTCGCCGTGTCCGACGATCTCAG
+TTCCTGAATCAGCAGGGGCTGGATGACCGCCCTCGGTATAGCCATGGGCATAAGCACACTAACGTT
+NODE	3921	51	91	91	0	0
+TACATTATTGTCATCACATCCTGTTGCGCCCAGGGTCATTAGCGCAATGAT
+AAAAACCGAGGCGACGCCGGCCGCCAGCAGTCAGCCTGCGACGCCAGCGCC
+NODE	3922	51	58	58	0	0
+ACGCGCTTACCAGACCTACAAGGGCATAGGTCTGATAAACGCAGCGCCAGC
+TCGCTACCTGTCATAAAGCCGCGCCTGAACGTAAGACAACGTAAAGATCCT
+NODE	3923	40	110	110	0	0
+AAAGTTGCCGTAGCGCGCCACCATGTAATCGATGATTTCC
+CCCCGCCGCTGACCCCGCTGACGGTGCTGCTGTGGGTGCT
+NODE	3924	51	62	62	0	0
+AGGCAGAAAGTGGTTCGCCGCTGTGATCCGGCCCTTCCGGGGTAACGTAGA
+TCCGCCGCTATTCGCGCTACCTTTGGCAATATGGGGATGAACGACGAAGAA
+NODE	3925	51	65	65	0	0
+CGGATGAGTTGTATCGTCGCCCGGAAGAATGGACGACGAAAGCGATGCTCA
+GCCTTATCCTGGCAGTCCACGTAGCTGCGGTAGTCCGCCAGCACCTGATAG
+NODE	3926	12	109	109	0	0
+TTAATATGCTTA
+AACGGCGAGTGA
+NODE	3927	35	35	35	0	0
+ACGCAGGCGGTTACAGGTGGCGCAGAAATCTTTTT
+GATTACAGGAAGCCGGTTTTACCATGCAAAAACGC
+NODE	3928	38	38	38	0	0
+GCTAACTCTTCAATCAGGAACTGGAAGTCGAAATCGCC
+TAATGTTGCCCAGCCGCGACCGGATATCGAAAAGCCAC
+NODE	3929	111	204	204	0	0
+CGAGAGGAACCGTTGATTCAGATAATTGGTTTTTGCGGCTGTCTGACCAGGCAGTGCCGCGACGCTACCATCTGCCGGATTATGGCTGAACGCCTCTAAGTCAGAATCCGT
+CGCGGCACTGCCTGGTCAGACAGCCGCAAAAACCAATTATCTGAATCAACGGTTCCTCTCGTACTAAATTGAATTACCGTTGCGGCGACCTTCATCCGGCAGATGGTAGCG
+NODE	3930	32	32	32	0	0
+AACCTTTGATGTGACCGTTCTGGAATACGCTA
+CCCAGCGAACGGCTATTTTGCTGCGTATGCAG
+NODE	3931	203	255	255	0	0
+ATTGAGCTCACTTGATTTTGCTTCTCAGTACCAGGCCATGCTTTCACAGTTTGGCTTGGTACTGAGAAGCAAAATCAAGTGAGCTTTTACCCTTTTGTTCAACATGAGGTTGCCCGCCTCATTGAGCTCACCTGATTTTGCTTCTCAGTACCAAGGCCATGCTTTCACAGTTTGTCTTGGTACTGAGAAGCAAAATCAAGTGA
+TGGTACTGAGAAGCAAAATCAGGTGAGCTCAATGAGGCGGGCAACCTCATGTTGAACAAAAGGGTAAAAGCTCACTTGATTTTGCTTCTCAGTACCAAGCCAAACTGTGAAAGCATGGCCTGGTACTGAGAAGCAAAATCAAGTGAGCTCAATGAGGCGGGAAACCTCATGTTGAACAAAAGGGTAAAAGCTCACTTGATTTT
+NODE	3932	46	47	47	0	0
+CCACTTCATCGACGATGCCAATGACGCACAGATCGACCGGTGATAA
+ATCGTCGATGAAGTGGTGGCTGGCGGGAAAGTGGTTTTCCATAAAT
+NODE	3933	40	40	40	0	0
+CGGGCTGGTCACGCTAAACAGATATTTCTGCGGATCGGTG
+CAGCAGGCTGCCGAATCCCTGACAGCAGAGGGTGATAAGC
+NODE	3934	51	85	85	0	0
+GTTCGCTCATTTCCGTCATTTCTACCATCGGTATCGCGCTGGGCGTGGCGG
+CCCATCCCGCCGCGCCGCCGTCCACGGCTGAAACGCAAGCCAATTAACAAT
+NODE	3935	39	131	131	0	0
+GCTTTGTTATAAATCAGGGAGAGGGCTTCAACGGCGATG
+CCCCGCCGAAAACCTGGGAAGAGATCCCGGCGCTGGATA
+NODE	3936	48	61	61	0	0
+AATGAAACCTGCCTGCGCCACGATGATTACCTGTCTAAAAAATTCACG
+TTAACCCGGCACTGGCGGGATACGCCGCAAGGGACGGAGGTCTCTTTC
+NODE	3937	28	1307	94	0	0
+TAATAAATAATGATGAAGCGCAAAATCC
+ACACCTGCCACTGCCGTCAATAAATTCC
+NODE	3938	51	60	60	0	0
+GGTCATATAGCGCGCCAGCTCAATATCATCATAGCCAATGACTGCCATATC
+CCCGCCGCTGACGACTATCCATCAGCCGAAAGATGAATGGCACTGTTGCAA
+NODE	3939	105	137	137	0	0
+CTGGCGAAGCGAGGTCAAATCCCGCCATTGATCGTGCAGGTAAAGGTTAAAGGCCTCGACGACCAGCCCGACATTACTGCGATCGACCGCATCTACGATCTCCAT
+GGCCTTTAACCTTTACCTGCACGATCAATGGCGGGATTTGACCTCGCTTCGCCAGATCCCTGTGGAAAAGATCTTCGTTTACCATATTGATGACCCCGATAATCT
+NODE	3940	45	48	48	0	0
+CACCAGCTCAGGTACTTATGCACCATCGTTTTGGGAAGCACTTTT
+CTGGTGGAGTCACACCTGTGGTCAAGCGACGCGTAGAGCGCCAGA
+NODE	3941	40	41	41	0	0
+GTGCGGAGGAATTATGCTGCCAGGATGCTGCAAAAATGGA
+GATCACCGTCGGGAACTGGAACAGGCCTTCCTGATTCAGT
+NODE	3942	41	43	43	0	0
+ATGCGCATATGATGGTCACACTTAGGACAGACCTCAAGATT
+GTTAAAGCAGCCGTAGATGCCGGCAGCGCAGCGGCAAGCGT
+NODE	3943	102	339	339	0	0
+ATCTTTAGGCAAATTCGGATATTCAATCCTGAGGTGTGATGACGAGTTTGCTTGCAAACGAAGTGATTGATGCCCCGAATTTGCCTAAAGATTCTCCTACAT
+AGCAAACTCGTCATCACACCTCAGGATTGAATATCCGAATTTGCCTAAAGATTCTCCTACATGCTTAAACCAGCTATTCCAACAGCTGGTTTAAGCATGTAG
+NODE	3944	51	168	168	0	0
+GATTTTCAGCGCGCGGCGGAGATTTTGCACCGGCAGTTAGCGCTGCGCGAG
+CCCCTAACGCGATGGCAGGATCGTAAGGTAGTAGGCCGTTGTTCTCTTTAT
+NODE	3945	45	45	45	0	0
+ACTTCCCGCTCATTAGGGTGTAGCGAGCCATCGGCAAACGCCGCC
+TGCTCCCTTTTATCCTGCTGATACTGGTCTTTGTCCTCCGCGCCT
+NODE	3946	1	3	3	0	0
+T
+C
+NODE	3947	27	61	61	0	0
+CAAGAATCCGTATCTTCGAGTGCCCAC
+CCCAAGTCTCAAGAGTGAACACGTAAT
+NODE	3948	1	1	1	0	0
+G
+G
+NODE	3949	51	87	87	0	0
+GTCAGCAAAATCCATCTGGTAAAGTTCCATCAGATAAGTCAGCACGATATT
+CCTTTCTGAAGCAGTATCCACACACTATCCCAGCCACAAGGGGGTTATTAT
+NODE	3950	38	38	38	0	0
+CAGCGAAGCCTCTACCCAGTCTCCCTTACTGAACCCAT
+CTTTTGCCGTTGGAAGTCACAGTAATCTCAGAAGTGAA
+NODE	3951	51	81	81	0	0
+GGAAGCGCTCTGAGCATGAACCATGGTTTTTCTCTTTGCTAAAGTAAGGCA
+CCCTCGCCATCCCATTTTTACGGCGCTTTTCGGTATGGTGGTATTGACGCT
+NODE	3952	41	41	41	0	0
+GTAAGCGTACCACTGCGCTTTATTTTGAACCGGCATTTTTC
+CTTCCCGGTATGCTCGCACAGCCGCCAGATGCTCAGCCATA
+NODE	3953	32	104	104	0	0
+GAACCGGCATAAACTCTATCGTGCGGGGATCA
+ACCTTCACATCCTGACGTGCCCGGATGGACTC
+NODE	3954	46	60	60	0	0
+GCTGGATCTCGACTTCCGCTATCCGTCGATTACCCGCGATATGGAC
+TCGCCAGCTCGAGGAAGCATTGAACAACATGCTGATCCACAAAGGT
+NODE	3955	5	5	5	0	0
+TATTG
+CCCGC
+NODE	3956	279	467	467	0	0
+TTGGGCCCGAGTGCGAAGGAAATTCCCAAATTTCCGGTTTCGTCGGGCCCAGAAGACTTTGCCGAATTCAACGAAGCGGCGGCCATACGGATCGCTAACACACTCTCCGCTAAAATTTCGAAGCACCGATCAAGCTATGCGAAGCTGCCGCACGCGAAGGATCAGCCGTTTGTGATTGCAATCGCAGCGTTTGATAGCCCATTTGCCCACTTTGCGGCGAGCAGCCCGATCATGGCCGCTTTATATGGAATGCGATACGACGAGGAAGCGGCGAAGGCG
+TCGGGCTGCTCGCCGCAAAGTGGGCAAATGGGCTATCAAACGCTGCGATTGCAATCACAAACGGCTGATCCTTCGCGTGCGGCAGCTTCGCATAGCTTGATCGGTGCTTCGAAATTTTAGCGGAGAGTGTGTTAGCGATCCGTATGGCCGCCGCTTCGTTGAATTCGGCAAAGTCTTCTGGGCCCGACGAAACCGGAAATTTGGGAATTTCCTTCGCACTCGGGCCCAACGCCTTCGCCGCTTCCTCGTCGTATCGCATTCCATATAAAGCGGCCATGA
+NODE	3957	9	9	9	0	0
+TCCATGCCG
+CCCCCGCCG
+NODE	3958	51	78	78	0	0
+GCGTTAGCTCAGTTGGTAGAGCAGTTGACTTTTAATCAATTGGTCGCAGGT
+CCCCGAGTGGTGGGTGATGACGGGATCGAACCGCCGACCCCCTCCTTGTAA
+NODE	3959	35	62	62	0	0
+CGGAGCTGAAGTCAGTCGAAGATACCAGCTGGCTG
+CCCTACGTGTCAGCGTGCCTTCTCCCGAAGTTACG
+NODE	3960	4	4	4	0	0
+GGTC
+TAAG
+NODE	3961	51	69	69	0	0
+TCTTTGCCAGCCAAACAGCGCCTGGCCGAAACCCACCGCAATATGCAAGGC
+AGAACAGCTCTTATTTGGGGAGCTGGGTACTCTAGGTTTACTATGGTTTAT
+NODE	3962	126	198	198	0	0
+GACTGGAGTGCAGTGGTGTGATCTCGGCTCACTGCAACCTCCACCTCCCAGGTTCAAGCAATTCTTCTGTCTCAGCCTCCCGAGTAGCTGGGACTACAGGCGCACGCCACTACGCCCGCTAATTTT
+GCTGAGACAGAAGAATTGCTTGAACCTGGGAGGTGGAGGTTGCAGTGAGCCGAGATCACACCACTGCACTCCAGTCTGGGCTCGAACTCCTGACCTCTGGTGATCCACCCACCTCGGCCTCCCAAA
+NODE	3963	11	11	11	0	0
+GAATTCTGTAT
+CCTCCTATACC
+NODE	3964	95	266	266	0	0
+GGTCTCAGTTCCAGTGTGAATGATCATCCTCTCAGACCAGTTACAGATCACAGACTTGGTAAGCCATTACCTTACCAAGTCTGTGATCTGTAACT
+TGTAACTGGTCTGAGAGGATGATCATTCACACTGGAACTGAGACCAGTTACAGATCACAGACTTGGTAAGGTAATGGCTTACCAAGTCTGTGATC
+NODE	3965	36	36	36	0	0
+AGAGCCAACGTCACCGCTGTATGGTGATAGGCGAAG
+CAGAACAACGCCGCTAGCGGAATACCGCACCAGGAT
+NODE	3966	33	74	74	0	0
+GCTTGAACCCCCACGTCCGTAAGGACACTAACA
+TTATCTTATCCTTCCTTTGTCTCTTCATTTTCA
+NODE	3967	12	21	21	0	0
+GTTTTCAATCCC
+TTATTCAGAAAA
+NODE	3968	39	39	39	0	0
+GGTCTGGCCGTGTCCGCCAGGCGAGCCGTGCATCACCGA
+TTTCAGCAGACGCGTGGTGTTAATCGCCCCGCGCTGCGG
+NODE	3969	47	69	69	0	0
+ACCTGCTCAAAGAGACCCCTTGCGAAGTCATTCTCCTCGGTGGAATC
+ATATAACTGCTCACGGTGATGATCGTGACATCTTTTTGTTCCGCCAG
+NODE	3970	51	82	82	0	0
+ACGTAGGTGGCGCTCATGGAGGAAATTGCCGTGTCCACGCCGTCAACACCC
+TCCACCCGGCCACCGAAGCGCTGGTGGCGACGTTGGCAGGTACTGAGCACG
+NODE	3971	51	68	68	0	0
+ACGTTACCGCCGGATTATTAAGGTGTGTTAATTGCGTTTGTTCTTCCGCCA
+TTTCCCGCCGCCACGCTTAGCGATTTGGTGGCGCAGCAGGCGCAAAAAACG
+NODE	3972	128	208	208	0	0
+CTAGGAGCAGCTACTCACTAGCTGTATCCTTCTTAGAGGGACTATGTGGATTAAACGCATGGAAGTTTGAGGCAATAACAGGTCCGTGATGCCCTTAGAAGTCCCGCACGCGTGCTACACTGATGAAC
+TTATTGCCTCAAACTTCCATGCGTTTAATCCACATAGTCCCTCTAAGAAGGATACAGCTAGTGAGTAGCTGCTCCTAGTTTAGCAGGTTAAGGTCTCGTTTGTTAAGGGAATTAACAGGTCCGTGATG
+NODE	3973	7	11	11	0	0
+GGTGTAC
+CGATCAA
+NODE	3974	37	37	37	0	0
+AATGCCGATATCGTCAATAAAGTAGTCAACCTGGCCT
+GCTTCCGCTTCGATATCGCCGCAGGCATTCTGTACGA
+NODE	3975	116	242	242	0	0
+TCTAACGCTGAACGTAAGTTCGGCGGACCTTTGCGGAAGACACAGTCAGGTGGGGAGTTTGGCTAGGGCTAGAACCGGTTAGACCGGGCCCTTCCTAACGGAATAAGTAAAATGAC
+CTAGCCAAACTCCCCACCTGACTGTGTCTTCCGCAAAGGTCCGCCGAACTTACGTTCAGCGTTAGAGGCTAGAACCGGTTAGACCGGGCCCTTCCTAACGGAATAAGTAAAATGAC
+NODE	3976	43	43	43	0	0
+TTATTATTGCCCATCTGACTGCGGCCAAACTCATCGCCCGCTA
+AGTTTACGGTAAAAGCAAAGTCCATACTTTAACTATTAATGGG
+NODE	3977	51	63	63	0	0
+GACTTCCGGTAGTGACGACATCATCCACAATAACCATATGGAGACCCTGTA
+CCCGTCGCGGAAATCGCGCAACTGCTTTTGCGCAACGGCGCAGCGACTGTC
+NODE	3978	43	63	63	0	0
+CCGGTTACCTGACTCGTCGTCTGGTTGACGTCGCGCAGGATCT
+CCTTATCCGCCAGACCAGTGAGATAAACCTGGCTATCAGTATC
+NODE	3979	29	60	60	0	0
+GTTCAGCAATGTGCGTCACCGATTCCGCC
+CCCTGCCGCTGCTCGATCATTTCAGCGCG
+NODE	3980	50	73	73	0	0
+AGTGGATGACCATGCGCCGCTGGCTGGAGGAAAACCCTGACGATGAGTTT
+GACGATGGTTGTGAAGGGCGGCTCGGCGTTTGCGGCGTTCTTTATCGCTC
+NODE	3981	41	57	57	0	0
+GCCCATTCAGCAATATTCGTAGGACTGAATGTGTAATTGAC
+AGATATTCCCGCAGCCACTCAGCTGTTTACCCCGAACTGGA
+NODE	3982	51	130	115	0	0
+GACGCAAAGCAACATGAATATGAATGAGGTGTTAGCGAACCGCGCCAGTGA
+CCCGGACCCGGTCTGCCAAATCGCCAGCGGAAACTCATCAGCATGTTTTCC
+NODE	3983	51	53	53	0	0
+GAATCACCCGGCTACCCATCCCGGTACGGCAGAGCTGTCGCGGGGTAAATT
+CGCCGCGATCGCCAGCTCATTTATGAGGAAGCGCCGCAGGCGTATAAATCC
+NODE	3984	72	236	236	0	0
+ATCGGTCAGTGTACGGAACTTACGGTTTTCGATGGTACTAACAATTCTCTGGATGGATCCATTCCAAGTGAA
+TAAGTTCCGTACACTGACCGATTTCACTTGGAATGGATCCATCCAGAGAATTGTTAGTACCATCGAAAACCG
+NODE	3985	45	72	72	0	0
+GGGCCTGTGAGGGTTGCTGGAGGTATCAGAAGTGCGAATGCTGAC
+ACAGGCTTACAGAACGCTCCCCTACCCAACGAACGTATCCTTAAA
+NODE	3986	3	6	6	0	0
+TCC
+TTC
+NODE	3987	23	140	140	0	0
+GTCGAATCCCCTAGGGGACGCCA
+GTCCTGGGCCTCTAGACGAAGGG
+NODE	3988	28	52	52	0	0
+CTTATTAAGAGCCCTGAGCATTAGCTCA
+CCCCGCGACCCCCTGCGTGACAGGCAGG
+NODE	3989	38	41	41	0	0
+GATTACAAGTTTTTCTACTTTCCCTTTGCGTATCTGGA
+TGGTGTACGCGCTGTTCGTCTTCAGGTTGATGATGAAG
+NODE	3990	51	56	56	0	0
+GTCTTAACCTTTTGCGTTCATGCTCCGCAACGACGCGCCAGATGAGGCGGA
+CCCGGAAAAATCACGGGCCTGATAAGGCAACGCCGCCATCGGACATGTTAT
+NODE	3991	39	39	39	0	0
+GCACCACGCCGTTGAGGAGTAGCCATGCATTACCAACCG
+GGGAAGCTGTCCGGTGGGATGAAACAAAAGCTGGGGTTG
+NODE	3992	51	62	62	0	0
+AAGCGATCTGACCTTCGCCATCGGTTTAATGAACTGCTTTAACCGTCTGGC
+TATTTCACGCGCGCTGAAATGATCGAGCAGCGGCAGGTAAACATTATCTTC
+NODE	3993	31	91	91	0	0
+GCTTATTTCTCCTGCGCCAGCCGGATACTGC
+TGGCGCCACCGGGCCTGGCTTGTTACTGCAT
+NODE	3994	51	73	73	0	0
+GGCAACGTGACTACAGCCATGTTCCACAGTGGAAACAACGGCTCTCACTCG
+CCCCCGACGCTCCCCACCTCACCGCCGGTCGCATTATTCGGCAGAAAGCGA
+NODE	3995	45	63	63	0	0
+AATCGGCCCATACGTACAGGGCGTTGACCTGGGTAGCATGGTAAT
+CGTTACTGCATTTTCAATGTCGCAATCGGCTTTGACGTAATACCG
+NODE	3996	12	24	24	0	0
+TCCTTCATCGCC
+CCCGTTATAACC
+NODE	3997	51	53	53	0	0
+GCGGGAACTCAAAGGAGACTGCCAGTGATAAACTGGAGGAAGGTGGGGATG
+CCCTAATCGCTGGCAACAAAGGATAAGGGTTGCGCTCGTTGCGGGACTTAA
+NODE	3998	20	37	37	0	0
+GTGTTGAACCTTCTCAACAT
+CCCTTTGTTTCCCACCAGCA
+NODE	3999	42	67	67	0	0
+TATTGAAGTTGATCGACAGCGCCATAGCTGGCGCGACGGCGA
+CGGGAATATAGATGTCGAATCCGCGCGTCATCCATTCATGGC
+NODE	4000	39	42	42	0	0
+GTCATCGCCAAAGCGAAAGCAAATCGTCGACAGAGATTC
+GCCAGTTTTCACTCAGTTTCCAACCATCGCTGATGTTAT
+NODE	4001	41	62	62	0	0
+GAGATTTTAAAGAAAAAGGTTGTCCACGCTAAACAATTTCA
+CCCTTTTTCTCACGCCGCCGCTAACGCAACACACCGTAAAC
+NODE	4002	25	30	30	0	0
+GTGCCAGTGTTGGTTGCTGCTGACC
+AACCGGTCAGCAGCAACCAACACTG
+NODE	4003	39	39	39	0	0
+TGTCTGTTATGGCTTCCAGTGCGGTATTACGGTGTTTAT
+CTGGAGCAGGCGCGTGAGATCCTGCGCGATATCGAATCT
+NODE	4004	2	8	8	0	0
+CC
+AC
+NODE	4005	45	45	45	0	0
+TGCTTTGGCCGCATCCTGGCGACCGATATCGTATCTCCCCTTGAT
+GACCTTCAGCCAGAAGTTCACGTAACGCCTGAAGTAGTGACTCGG
+NODE	4006	16	16	16	0	0
+GTTTACTCATCTCACG
+CCCCGCTACACAGGCA
+NODE	4007	16	16	16	0	0
+TTTGCATAACGTCCGG
+CCCGCGCTATCCGCTA
+NODE	4008	44	44	44	0	0
+AATTAACACGGCTCTTGGTCGTTATGCCGATAATGAGCATATGC
+CGATTTTATCCAGCGTAGCTAACGTATCAATAAGGTCCTGCTGG
+NODE	4009	45	59	59	0	0
+TTTAGGGTCGGCATCAAAAGCAATATCAGCACCAACAGAAACAAC
+GCCTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTC
+NODE	4010	51	58	58	0	0
+CGTCTCCCGCTTCTGGCGCGATGTTCGCTGCGAACGTATCGGTGGCGGCAC
+GCGGGCTTCGTCAGTATAACCAAGCCCACCCATAATCTGAATCGCATCGTC
+NODE	4011	30	108	108	0	0
+GCTGATAAGCCGCTTTCTTTTGGGTATAGT
+CCCCGTCAGTGTAAGCTGGCGGGTTTTTGC
+NODE	4012	51	52	52	0	0
+ACGGTGACGATGGCGCTCTGCGGCCCTTTGGTGTGGGGTTTGCTCACCGTC
+TCCCGGCGGGCCAGGAAATCTGGACGGATCAGTACGGGCGGGTAAAGGTAC
+NODE	4013	121	147	147	0	0
+GTCGGGAAAATATTGACGAACATCTGACGCATAGCGCCTGCGCCCGCCACGCGGGAGGCAGTCACATAATAGCGGTTCACCTCTACCAGAACCGCCGCGCGGGATAAGCGGACATAGTGCG
+TATTATGTGACTGCCTCCCGCGTGGCGGGCGCAGGCGCTATGCGTCAGATGTTCGTCAATATTTTCCCGACCTGCCTTGCGCCGCTGATTGTTCAGGCATCGCTCGGTTTCTCTAACGCCA
+NODE	4014	51	151	151	0	0
+GTTTATGTTCCCGGCGCCATTTCGCTGCTGATGGGGATAGTGGCGCTATTT
+CCCCCATTTTCCAGCTACCGCTAAAGGCGATAGCAAAGCTGGTCAGCAGCG
+NODE	4015	5	10	10	0	0
+GAAAA
+ATTTT
+NODE	4016	44	44	44	0	0
+ATCTGGCGCAGCAGCAGGCGGCTTCTATTGTCGCGTCCTGGTTT
+CAGCGAGAAGGCGCAGATGGACAGCAGCAGCGTCCACGCCTTGA
+NODE	4017	51	54	54	0	0
+AAGCGTCATCAGCTGTACCGCATCCTGCCAGGTATCCGCCTGCCCCTCGCC
+TCACTCGGCCAAAGGGCTGGAGTTTCCGCAGGTGTTTATCGTCGGCATGGA
+NODE	4018	43	43	43	0	0
+ATGCGCTGGAGCGCCTGCGGTGCATTCGTCGCTGGGTTGAGAG
+TCGCTATGACAAAAGACGGCGGTAGGCGGCAACGGTTGCTCAA
+NODE	4019	51	56	56	0	0
+AATCAGCCTCCTGCTAAGCCTGACCGCACGGAACCTACAGCTATTCAGGTG
+TCGGTTCCTGGCGACATGAAACTCCCTGGTTAGGGGTATCGGCGCGACCTG
+NODE	4020	51	69	69	0	0
+TATGCTGCTTTTGGGCGCGCAGCTGACCTCAATATTTTTTAAAGGCATGCT
+AAAAAAAACCATTACCGCCGGCGTAAACAGGCGAGCCAGACGGTGTCCTAA
+NODE	4021	6	271	10	0	0
+AGTAAT
+TGTCGG
+NODE	4022	16	37	37	0	0
+TGATCAACCTGCTGTT
+CCCCGCCAGCGCAAAA
+NODE	4023	3	6	6	0	0
+GAC
+CCC
+NODE	4024	24	57	57	0	0
+CCCGCCCGACGATAGCGGCGATGA
+GGGCGGGGTTACATCGTCATCGCC
+NODE	4025	71	391	391	0	0
+GCAAGGCTGACGCGCAGTTGGCGTTCCAGAAGTCGATCATCGACAAGCTCACGCACGAGAACGCGAACTGC
+CCAACTGCGCGTCAGCCTTGCGCAGTTCGCGTTCTCGTGCGTGAGCTTGTCGATGATCGACTTCTGGAACG
+NODE	4026	48	66	66	0	0
+GTTAACGATCAGAAAGACGGGATGCTGCGCCAACTGGAGCAACTGTCG
+CCCAGCCGGAACCAAACTGCACTTTTCCGGCAATTCCCGGCCCCTGGA
+NODE	4027	45	45	45	0	0
+ATCGATTGGTTACATGAGCGCTCATCAGCCTTCGCAAGCCGCTAA
+CAGGGTTGGTGATTTTCATAACAGCTCACTATGCTCATCCAAAAA
+NODE	4028	28	28	28	0	0
+GCGTTCAAACTGATGAGGTCAAACCTCC
+CCCCCTGTTACCGCCGTGAAAGGGCGGT
+NODE	4029	18	47	47	0	0
+GGTTGGTTGCTGCTGACC
+GACTGGTCAGCAGCAACC
+NODE	4030	38	38	38	0	0
+TTTGATGATCTCCACCTTTCATACGCTAGGGCTGGATA
+AGCATCAAACGTTTCATTTCAGCCACCGCCTCTTTCAG
+NODE	4031	41	41	41	0	0
+TCGCCTGAACGATACGTTTAAGTGTCCTTTGTTTGATCATC
+CCGACATCGTTTTGCCACTCGCCTTTGCTGATGGTTTGCGC
+NODE	4032	42	42	42	0	0
+TTCGCCAGGAAAGCCTCGCGGTATTGCTGGGCGTCATCATCG
+GACCAATTTTCTGAAAGCCTCTTCCATTGTTGGCGCGCTCTC
+NODE	4033	16	40	40	0	0
+AGGTATTTCAAGGTCG
+TACCCGGGTTGCGGAC
+NODE	4034	5	5	5	0	0
+TCAGA
+CCCCG
+NODE	4035	43	55	55	0	0
+AGTTCTTCCGCTTCTTCTGCTGGCAGTACAACGTTGCTACCCG
+CCCCTGGCGATACCGTTGAGACCCATGCCGCCGCGCTACGCTA
+NODE	4036	105	239	239	0	0
+CATCGATATGGCTGAATCGCTGGCCAAACATGGTCAGCAACAGCCGGTGCAAGTCCGCTTGAGGCGACCACGCAAGTCTTCCTTACCAGATCATTGTCAAGGAAG
+GACTTGCACCGGCTGTTGCTGACCATGTTTGGCCAGCGATTCAGCCATATCGATGATTTGCTCTTGCGTAGGCGGCTTGAGGCGACCACGCAAGTCTTCCTTGAC
+NODE	4037	37	37	37	0	0
+CGTGATGTCTCAGCGCCAGACTTTCGCACAAAAAGCG
+CAATATCGCGGAAGGCCTGCCCGTGTTCATTGCCTTC
+NODE	4038	13	13	13	0	0
+TAAAAAGCTCCGG
+CCAATATACCGCC
+NODE	4039	46	46	46	0	0
+TTGCCTGGGTATTGATTAACGAAAATCTCGTTGACCAGCCTTTTCT
+GTCTGTTTAAGTACCCGTCGCTCTCCGGTATCCATATCCAGTTCAA
+NODE	4040	51	59	59	0	0
+CACAGCCGCTGGGGTGGTATCACGATCCGCTGACGGTGGTGATGGCGGGTG
+GCCACTAACTGTGTATAGTGACCTTTCGGGCTGGCCTCAATGACCTGTACT
+NODE	4041	45	48	48	0	0
+CCTCCGGCCCCGACTTCCGTCTGGAAATGGAGGGTTTACAATACA
+GTGCGCGCCTGGCGGCGGCTGGCATCCAGGTTTCGCTCTTTATCG
+NODE	4042	36	37	37	0	0
+TCTAGGTGATATCTGGCTGCAAATGCCACTCCTTTG
+TAACTACCTACATCTTTTTGTGATTTGACATATCAA
+NODE	4043	19	19	19	0	0
+GTTTGTCACCTATAGTAAT
+GGTCGGTAATGGCTTTCGC
+NODE	4044	43	43	43	0	0
+GCTCTCGCCACTCTGTCGTCCGGCTCTCAGTAGGCCAAACCAC
+TCTATGCGCTGATGGGGTACGTGTGGCTGCGCGGAGAGCGCGA
+NODE	4045	27	27	27	0	0
+GGTTACGCGAGAATGCCGGACTGGGCA
+ACCATTCCCGCCGCATTTTTCATCGCA
+NODE	4046	1	1	1	0	0
+T
+G
+NODE	4047	37	41	41	0	0
+TTCTGAATGGCTGGCGCGGATTAGCCGTGAACGGACG
+CCTGCATGACCACCAGTTACTCACATATCCCCAGCCA
+NODE	4048	3	3	3	0	0
+TGT
+CCC
+NODE	4049	101	143	143	0	0
+TCGCATCGAACAAATAAAACGCATTGGCGCACCACAGCTCTCCCTCATGGGGTACGCACCAGGTCACCACGTGTTGTTTCGCCAGCCAACGGCCAATAGCG
+CCCATGAGGGAGAGCTGTGGTGCGCCAATGCGTTTTATTTGTTCGATGCGAAAAACGTCGCGCTGTATCTGTTAACGGATGATAAACCCCGCCATGCGCAA
+NODE	4050	42	42	42	0	0
+AAAATAGCGCCAGCATCCCGGCAAACCAGAGGCCGATCCAAA
+CGTCTCTTCTTTCGCAAAGCTCTCCAGTTTGAGCATTACGCG
+NODE	4051	39	39	39	0	0
+GCCGAATTTTTGCCAGCCCGACGGAGCCGTTAATAAACG
+TCCTACGGATTTTAACGCCATCCATTTGGACATCAGCAA
+NODE	4052	37	37	37	0	0
+GATCAGGATATTTCGCCACCTCGCCGAACAACTGATT
+GGTGAACCTGCCGGTTATCCACTATTCCGTTGAGTGG
+NODE	4053	44	44	44	0	0
+GTAACGAGGTACGCCGGGCAAAGGCGGCAGAGATGGCGGAATCA
+ACATTTGCCGCCGCTGCCGCCTGCATATCTTCCAGCTTGTCTCC
+NODE	4054	6	6	6	0	0
+AGGTGC
+CCCACC
+NODE	4055	51	55	55	0	0
+AGCGAACCACCGGCTGGACCGCGGAAGAAATGGTCAATATCACGGGCCGCC
+TTAATATCAATCAGCAAGGCGGCGGTGATATAGCAATCATAAAGCGCCCGG
+NODE	4056	48	57	57	0	0
+AATACATACACAAAATCATTCAAGATGCATCGCGGCGGCAAGGGAAGA
+GATTTTGACAATGATGGTTAACGGAACGGAGAGCAACATGCCCACCGG
+NODE	4057	51	53	53	0	0
+GCACACTATCATTAACTGAATCCATAGGTTAATGAGGCGAACCGGGGAAAC
+CCGAATCACACTGGGTTTCCCCATTCGGGTATCGCCGGTTATAACGGTTCA
+NODE	4058	147	395	395	0	0
+ACAGGTGACTGGGAAGAATATTCTAAGGCGCTCGAGTGAATCACGGCTAAGGAACTCGGCAAATTAACCCTGTAACTTCGGGATAAAGGGAGCCTCCTCGCAAGAGAGGCCGCAGAGAATTGGTCCAGGCTTAATTTGCCTAGTTCC
+GGAGGCTCCCTTTATCCCGAAGTTACAGGGTTAATTTGCCGAGTTCCTTAGCCGTGATTCACTCGAGCGCCTTAGAATATTCTTCCCAGTCACCTGTGTCGGTTTACGGTACGGGTTACTATTAAGTATAGATTTACAACTTTTCTT
+NODE	4059	112	164	164	0	0
+GACGGACGGATCAAAGCGCCGGTCGGTTGATCCCTCAGTGAGAGCGAATCTCCCCTAACTATCAGCTTGCTGTGGATAAAGCTCTCACTGAGCTGATCGCTGAGGAAACTGT
+ATAGTTAGGGGAGATTCGCTCTCACTGAGGGATCAACCGACCGGCGCTTTGATCCGTCCGTCACAGTTTCCTCAGCGATCAGCTCAGTGAGAGCTTTATCCACAGCAAGCTG
+NODE	4060	51	59	59	0	0
+CCTCTCAAATTTTCGCAACACGACGATGAATCGCGAGAAACATCTTCGGGT
+GCTCACGAACAACTTTCGTTGTTCTGTGTTTCAATTTTCAGCTTGATCCAG
+NODE	4061	12	13	13	0	0
+GCTTAACCCAAC
+GTCCGGCCGGGA
+NODE	4062	1	2	2	0	0
+G
+A
+NODE	4063	51	74	74	0	0
+AGGTGACGTTTGCCAACGTCTTTACCATCATCCAGCCGGTGATTGAAGCTG
+TCCAGCACCACAACCCCCGTCGCGACCAGGGTAGAGGCTTTGGTTTTAAAG
+NODE	4064	102	117	117	0	0
+AGTTCCCTTGCGGGCCAGTTCGGCACGGATTTGACCGGTATGTATCGCCAGGCTGAAGGGGCATGTTGGCTTTGACGATCAGGCAAAAAACAACGGCGAATA
+CCTGGCGATACATACCGGTCAAATCCGTGCCGAACTGGCCCGCAAGGGAACTCCTGTCAGGCCTTATGACCAGATGATTGCTGGCCATGCCCGTAGCCGCGG
+NODE	4065	46	56	56	0	0
+GCGCCGCCGCCATTCGGGCGCGCTGGAAGTTTTCTTTATTGATAAC
+CTGGAAACCTTAACCTGGCAGTATCGTATTCAGGGTTGGAACGTGG
+NODE	4066	51	96	96	0	0
+GCAACTTCGTTCAGTTCCAGTAAGGTCCAGGGAATAAAATAGCGATCGGTA
+CTCGCCGTCGGCTGATTCTGGCTGCGGAAATTTATACCGAAACCCAGCCTG
+NODE	4067	44	44	44	0	0
+TTGGCATAGGCTTTTGCCGGATCGAGCAGCGTAGTGGTTTGCTG
+GGTCAAAATCGACAGTGACGGCGCAGGCTACCACATTCTGTGGG
+NODE	4068	47	53	53	0	0
+AGAAAATAAAAAGGTATTAGTTTCAGTTTCATTACAGACTCCTGTTC
+TATTTTCTGCCGCCTCCGGGGCTACGGAGATAAACGCCTGCAAAGAC
+NODE	4069	102	277	277	0	0
+GGTGCTGACGGGGACATATAATAATCGCCCGCCAATCCCTAGTCGGCATAGTTTATGAGAAATCAATTTTTTGGGTTCCGGAGGGCTGAGTCTCAGCGGATC
+ACTATGCCGACTAGGGATTGGCGGGCGATTATTATATGTCCCCGTCAGCACCTTATGAGAAATCAATTTTTTGGGTTCCGGAGGGCTGAGTCTCAGCGGATC
+NODE	4070	51	62	62	0	0
+TCTTCAGGTGTTAGTGTCCTTACGGACGTGGGGGTTCAAGTCCCCCCCCTC
+ATAGCGCGTCTACCAATTCCGCCACCTTCGCATACCATCGATTCTTGAAAA
+NODE	4071	51	103	103	0	0
+AGCAAGCGGGCGGTACGCTGGTGTGCAATAAAACCCAAAACCCGCCGCTGT
+TGATCTTTACTGGAGCCAACGAAGACCGGGATATCGCTACGCACGGCCGGG
+NODE	4072	51	76	76	0	0
+GTTAATGGTTCCCTCGTTGAATCAGTTCTATTTTGCTATATAGCGCATCCA
+CCAAACCCCCGCCGTTTATACGCCGGGGATTTGTTATTTGTTTTAACTTTT
+NODE	4073	13	13	13	0	0
+CCCTTGCCAAGGT
+TCTGTGCTTAACA
+NODE	4074	3	3	3	0	0
+GCG
+GTT
+NODE	4075	51	76	76	0	0
+AACAAAAGTGCTGGTGCGTACGGGCAAACCGGTCACGGCAGAAGCAGAAAA
+TCCGACATTTGCCGCCGCTGCCGCCTGCATATCTTCCAGCTTGTCTCCCAC
+NODE	4076	51	90	90	0	0
+GGAGTTAGCGCTTACAGGCGCATTACGCGGCGTTCCTGGCGCAATATCAAG
+CCCCACCAGCTCATATGCCTCAAGATTCGACGCTGTAAGCTGCTCAGACGC
+NODE	4077	46	63	63	0	0
+TTCGTCATTTAAGTTGAAATCCATCTTTCAGCCTCTTGATCAATTG
+CGCAGGGACGTCCGGTATTCGCTCTGACCGCCGATCCGCAAAGCCC
+NODE	4078	43	79	79	0	0
+AGTGCGGGCTTCCAGTAACTGGTTCAGGGCGTCCACCTTGCGG
+GAACGGCGGAATCACTGGAACTGGGGCGTCTGGCGAACGCGCA
+NODE	4079	137	230	230	0	0
+ATGTTCTGGGCTACACGCGCACTGCTGAAGTTTTTCAACGACAGCAATCCGCGTTTCGCTTCGGCGATGCGTAGGAAACCTCTTCGGTTGGTTTCTTCTGCAGGATTCCTTGCTCCCTCGCAAGGTGAGATTTTGGG
+CCGAAGAGGTTTCCTACGCATCGCCGAAGCGAAACGCGGATTGCTGTCGTTGAAAAACTTCAGCAGTGCGCGTGTAGCCCAGAACATTGAGGAGCATCACAGACCTGCTGTTGCCCAAAATCTCACCTTGCGAGGGA
+NODE	4080	45	76	76	0	0
+AAGCGACGACACGGCGCAGATATTTTCCATCACGTTTCATATGCC
+CCACCGCCGCTGCAAATCACCACATGGCCCTCTTTTAGCAATAAC
+NODE	4081	3	3	3	0	0
+AAT
+CCC
+NODE	4082	34	34	34	0	0
+TGCGCTGTCCGTGTCCAAACTGGCTGCGCCAATA
+TACGTAGTACGTGAAGTTTGACTCGCTACGCTCG
+NODE	4083	40	49	49	0	0
+CTACAGACTTTGTAAGAGATCTCTCACACCCGTTAGGGCA
+AGAATATACAGCGCGTCGGCCTGACGGGCTTCTACGGCTA
+NODE	4084	39	39	39	0	0
+CCACGGGGAAATATCATGTTAACCAGTATACCGGCGATG
+GTCAGGGCTTCTTTAGCGATACGTAGCATGGGCAATATC
+NODE	4085	51	63	63	0	0
+GCGATATTCGCGCGCAGCGCGTACAGGACCAGGGCGGTGGTCAGCCCCAGG
+CCCTGTTCTATACCCCCGGCGAAATTCTCTACGGCAAGCGCGAGACGCAGC
+NODE	4086	11	11	11	0	0
+CAGTGTTAACA
+CCCCTGATACC
+NODE	4087	51	79	79	0	0
+GTGTTTGTTCTGATCGCGTAAGATAATGCCCTGATCCCATAAGGATTTAAA
+CCCTTCTTTAAGCGGCTGCCTGCGGATTACGGTCGGCACCCGCCAGGAAAA
+NODE	4088	116	153	153	0	0
+TTCAGCCATAATCTAGCAGACGTAGCTTCACGGCACTGGCTTCTCAACCAACCGTATTTACCAACTGTATGAGATAACTGTTCCTCTCGTACAGTTGGTAAATACGGTTGGTTGAG
+AGTTGGTAAATACGGTTGGTTGAGAAGCCAGTGCCGTGAAGCTACGTCTGCTAGATTATGGCTGAAAGCATCTAAGTCAGAACTTGGGCGAACCCTATGAGTTTTCGTTTATTATT
+NODE	4089	51	53	53	0	0
+CCCAGCGCAGCTGGATATCTGTACCGCAGGAAGAAAAAGTATTTTTATGAA
+GCACTGCTGTGTTTCAATCACATACAGCGGATCGAGTTCGCTGAAGGCGAT
+NODE	4090	10	10	10	0	0
+GCGGGGTCGC
+AAATTTGTTG
+NODE	4091	139	244	244	0	0
+ACCAGGGCTGCACACGTACTACAATGTCTGGTACAATGAGAACCGAGACCGCGAGGTGGAGGAAATCTATAAAACCAGGCTCAGTTCAGATTGGAGGCTGCAACTCGCCTCCATGAAGCTGGAATCGCTAGTAACGGCG
+CTGAACTGAGCCTGGTTTTATAGATTTCCTCCACCTCGCGGTCTCGGTTCTCATTGTACCAGACATTGTAGTACGTGTGCAGCCCTGGTCGTAAGGGCCATACGGACTTGACGTCATCCCCACCTGCCTCCAATCTGAA
+NODE	4092	27	44	44	0	0
+GTCTCCCCGAAAGCTATTTAGGTAGCG
+GCCTTTCACCCCCAGCCACAGGTCATC
+NODE	4093	14	54	54	0	0
+GAATCCGTAGCCAA
+CGCACGCGACGTTC
+NODE	4094	51	63	63	0	0
+CAAATAGCCCTAATGGGATAGGCTCTTGGAAATGCAGAGAAAAAACGCCGC
+GACTTGCCATTTTGGACCTGGGCAGTGCTCGCCAAAACGCGTTAGCGTTTT
+NODE	4095	25	26	26	0	0
+ATGCTGTGAGCTCGATGAGTAGGGC
+CCCCTGTATCGCGCGCCTTTCCAGA
+NODE	4096	25	41	41	0	0
+GCGTTTTTACCACTGGCTTCATTGA
+TATTGGTGATGCTGTTATTATTCAT
+NODE	4097	47	52	52	0	0
+GAAAATAATCGTCTGCTGTTTTTTGCCGTCTGGAAAAATAGACACCG
+CTGCTGGTCTGGTTTGTCGGGCCGCTGGTGTCATTTGATACCCTGCG
+NODE	4098	51	57	57	0	0
+AGCCCTTTCACGGCGGTAACAGGGGTTCGAATCCCCTAGGGGACGCCAGCG
+TGTGTCCTGGGCCTCTAGACGAAGGGGACACGAAAATTGCTTATCACGCGC
+NODE	4099	51	92	92	0	0
+TGATCAAAAGAGTGCCAGGTAAAGACCCGTAAACGTGCTTTTTCTCACATT
+AGGCAACAGCATTTACCTCTATCGGGGTATGCATCTCTTACACATCCTGAA
+NODE	4100	44	44	44	0	0
+ACCGTCACTTTCGCGCCGATGGAGTCACCCTCTTTTTTCAGCGC
+AAAGCGCGTCAGCAAATTGAAAAATGCCAACCGGTTCTTTGTCG
+NODE	4101	51	57	57	0	0
+CCGTACTACGTGTACGCTGCGGTTTTTGCGCGCTGTCCGTGTCCAAACTGG
+GGAGGTTTGACTCGCTACGCTCGCCCTTCGGGCCGCCGCAAGCGGCGTTCA
+NODE	4102	12	24	24	0	0
+GAGATGCATAAT
+GGGTGCTTCCGC
+NODE	4103	43	70	70	0	0
+TGTCCATTTATCATTTTGACCTACAACGTCCTGCACATTAACC
+CCGATCCCGGTAAAAGCCCTAACTGTACCTCCGGCAGTCCAAG
+NODE	4104	47	47	47	0	0
+ATTCTGGTTATTAAACGCCACTGCCGTACCCGCAGGTGCAACCGGCG
+TTGAGAACTTTATTCAAACCGATGCCTCTATTAACCGCGGCAACTCC
+NODE	4105	11	11	11	0	0
+GCATCAAATTA
+CCCATCGGCGC
+NODE	4106	51	58	58	0	0
+TAGTGCAGGAATCAGGAAAAATAGCCCGACCGGGAATATTCACCCGGATGG
+AATCATGAAATCAGTTCTGCTTACCAGCCGGCAGCGATCGATAACCGTTCC
+NODE	4107	3	3	3	0	0
+ACA
+TCT
+NODE	4108	51	62	62	0	0
+ACCACGCCCTTACGGTCAGTGCGCGTCAGTGTCCGGGTAATGCCAGCGCCG
+TTTGTCTGCCGACACCCTGCCACAAAACAAGTTTTGCATCAGGGTGTCCGG
+NODE	4109	47	55	55	0	0
+CGTGGGCGCGGGGTGCGTCAGCCAGAACTGGCGCATCCCGGCGATGT
+AGGCTGCTGGAATGACGTGGGAACCTTAGAAATTCAATGCCATAATA
+NODE	4110	39	1251	42	0	0
+TCTTTGTTATAAATCAGGGAGAGGGCTTCAACGGCGATG
+ACCCGCCGAAAACCTGGGAAGAGATCCCGGCGCTGGATA
+NODE	4111	1	1	1	0	0
+G
+C
+NODE	4112	51	68	68	0	0
+GTCAGCGCGTCGGAAATAATAGCGTCTTCCGCGCCCAGCAACGTCTCAAAC
+CCCACGCGTCTATCATTGACGGCGTGCGTTTGTGTAAAGCGAAGCGCTATC
+NODE	4113	51	72	72	0	0
+AACTTCGTCACGCAACTGGAAATGGGAAATGAGTTCTTCGGTGCTAAAGGC
+TCCGTGGTGGAACGTCGTCGGCGATCGTAAATACCAGAAACAGAAGCTGGC
+NODE	4114	51	52	52	0	0
+ATATCACACTAAAATAATTCTATATTTCATAAATTATGATGATGAAGTTAA
+TGTTTGAGTGGCAACCATTCACCAGGCTGAGAATATGAAAACATTTTTCCT
+NODE	4115	4	6	6	0	0
+ATTG
+TTGT
+NODE	4116	17	21	21	0	0
+CCCCAGGCCGCTAATCC
+TATCAGCATGGCGGATG
+NODE	4117	51	92	92	0	0
+GTATAGCCACTCACGGCAAGTATACTTATTGCAAGAAATGTCCATAAATAG
+CCGGTCAGGTGATGGGGGCTTTTTCCGCGGTTTCTTCATTTACGGGAATGG
+NODE	4118	51	57	57	0	0
+CTGCCCCCTGGCGTCATCACCTCGGCGATCCCCAACTGGCGCATATCGCCG
+GTCGCGTGCGTCCCGGTATTCTCGCTGTCGATGCGCTGAATTTAATGCAGT
+NODE	4119	43	43	43	0	0
+ACTGTAATGCTCCAGCTTACTGGTCATTTCCGGGATGTATTCT
+GCTACAGGTTTGGCCCAGAAGGGAAAGAAAACTGTCGTCATTG
+NODE	4120	40	40	40	0	0
+CCAGGCGGCGTTGTCTGAAACAGGCAGAAATGAAAGGGCT
+CTGTGAAGCCTGGGGCGGTAGCGTGCTTTTTTCTGCTTAT
+NODE	4121	40	40	40	0	0
+CAGCGCCAGTAGAATCAGGCCAAGCCCGATACCGACGCGA
+CGCAGCGCCTGAAGATACGCATCCAATTGCTGACTCTGTT
+NODE	4122	51	66	66	0	0
+ATAAAGGCCAGCGATGCCGCAGTATTGTTATTTTTTATCAACTGCCATTCA
+TCGGTACGTTGCTGGGCTATGTCATCCCCTTATCCAGCGCGGCGATAAACT
+NODE	4123	51	60	60	0	0
+AGCAGTTGTTTCTACCTCTAAAGGTGTTATGACTGATCGTGCAGCGCGCCA
+TATACCCAGACCGGCCATAACTTTCGGCAGCTCATCTTTACGTTTGTAGAT
+NODE	4124	45	52	52	0	0
+ACCGTGAGCCGTATTGATGTGCTGGACAGCGACATCCCAACCGCC
+TGTCGCCGTTGATCCAGATAACCAGTTTACCTTCTTCAATTTTGG
+NODE	4125	51	62	62	0	0
+TTGCCCTATCAGCTTTGGATGGTAGGGTATTGGCCTACCATGGCTTTAACG
+AAAACTTGAATGATCCATCGCCGCACAAGGCATGCGATCCGCAAGCTTATT
+NODE	4126	51	52	52	0	0
+GGGCGTTTTTCCGCGAGTTTCCGGTCAGCATCAGGAATATTTACGGTTGAC
+CCCTTCGCGATAAATCATGACGCGTTCCGCCGTCTGCGGAACGGTAAAGGG
+NODE	4127	82	102	102	0	0
+TATTTAGCCGGTGTACAGTTTGAGGAGTAATTCCCTGCGGCTTTTTTACGTCCAAAATTTTGGACGTAAAAAAGCCGCAGGG
+AATTACTCCTCAAACTGTACACCGGCTAAATATCCAACCGTGCAGTCTTAACATTCATCCAGACGAATGCTAAGACTGCACG
+NODE	4128	11	1257	11	0	0
+TAGTGTTAACA
+ACCCTGATACC
+NODE	4129	51	70	70	0	0
+GGTTGATGGCGCTACCGGACGGCCAGACGCTGTGCGCCACGATACCGACTT
+CCTTCACACTGTTCCGCGCCGCGCTCGATATGGCTGATCGTTCCCGACAAC
+NODE	4130	51	92	92	0	0
+CTCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACAAAGACTGACGC
+GCTCTACGCATTTCACCGCTACACCTGGAATTCTACCCCCCTCTACAAGAC
+NODE	4131	120	150	150	0	0
+TGCATGGCTGTCGTCTGTCCAGAGTTCCCGCCATTACGCGCTGGCAACAGGACACAGGGGTTGCGCATCGAAGCAGACCTCGACACTGATTCGTTCGAGGCAAGGGTCGACGACCTTCCA
+CGATGCGCAACCCCTGTGTCCTGTTGCCAGCGCGTAATGGCGGGAACTCTGGACAGACGACAGCCATGCAGCACCTGTGTAAAGCCCAACAGCAATGTTGGGCTTTACACAGGTGCTGCA
+NODE	4132	38	38	38	0	0
+ATAAATACGCGCTTCCGGCTTACGCATTCCCAAATCCT
+GAAAGAAGGCTTGGTTGTTTCCATTTTTACACCCCTGA
+NODE	4133	44	44	44	0	0
+AAGCGGACGAGACGACGCCTTTGTGTGGCCTTCCATTGTGCGTG
+TCCGTTACCGAGAATTGCAGCACCACGCAAGCGTTACGCGTCAG
+NODE	4134	51	58	58	0	0
+AAATAATCCGCTAACGATGTCATCGCCATCCTGCAGCCATACATTGAGTAA
+TCTTTTTCTTGCACCGGCATGTGGGTTAATTATTCGCTTTATGGTGGGATA
+NODE	4135	9	19	19	0	0
+CGACGATAG
+CACATCGTC
+NODE	4136	51	76	76	0	0
+AGCGTAAACGTTGCGATGCCAGTGGAACTCATCGCCACCCTCCGCTGCCGC
+TCCATTGAAATATTCGGTGGCGGAGATTTTCGACAGTATCGATCTCACCCA
+NODE	4137	37	37	37	0	0
+TCCGGGCGGCTAAGCTAATGAAGCGCATAAATTTAAT
+TGGTTGATGGTCCAGGTCTGCAGCTCGCCGTAATCGT
+NODE	4138	53	58	58	0	0
+GGGTATCGCAATAGTAATAGCGATAGCAGCGCGCCAACGACGTTTGGCGGGAA
+CCCCTCGTAGCCGCCATAAACCGACCATGACAGGTCGCTGTTTTCACCGCTAC
+NODE	4139	35	46	46	0	0
+TTGCCTGACGCGATTTAGAGGCATTGGCGCTAAAA
+GAACGTAGGGGTAATTATTGAGCGTGGCAATAATC
+NODE	4140	41	58	58	0	0
+ACGATGCCGACAGCCAGTTCATCCGCAGTAATTTACAGGAT
+ATTTTACAGGCGTTAAAAAGTTATCGGGTATCGTTATGAGT
+NODE	4141	43	77	77	0	0
+CGTTAAATCGGTCGTGCGGCAAAGTTTACTCGGCGATGCGCCG
+CGCCCAGCAGCAGATGCAGCGTACCGTCCACATGCAAACCGTT
+NODE	4142	6	6	6	0	0
+AGAGCC
+CACAGG
+NODE	4143	51	89	89	0	0
+TTGCTGCGCGATCAGACGATAGCTCAACGCGCCTTCCGGACTGTACACGAC
+AGTTGAATATTTTTCCGATCAGGCGGTCTCATGGTTTACGCAACCGGTATT
+NODE	4144	51	111	111	0	0
+GCATATAGTACAGACCCAATACCACGTCCTGAGACGGAACGATGATAGGTT
+CCCCGTGACTGTGTTAACGCCAAAGGCGAAGGCATGGTGCTGACTGGCCCG
+NODE	4145	7	7	7	0	0
+TCAAGCT
+CCCCAGG
+NODE	4146	42	42	42	0	0
+GGGAGCGGGCGGCGCAATGACTAAGGTATTCGCGTCCGTCGG
+GTCGACCAGCATCGACTTTAAATCGCCGAAATCGCCAATACC
+NODE	4147	43	54	54	0	0
+GTTCGCGGAGGCATTATCATCAATAGAAGGAATACCCTTAATA
+TGATTGTCGAGGTCGAAAATGCGCGTCTGGTACTGGGCGTGAC
+NODE	4148	51	68	68	0	0
+ATATGGTTTTTATTTCCTTAATTAACCAGAGTTAATAAAAATAATTAAATT
+TAGCTTATAAAAGCAAGGGGGAAAGTGTGATGTCTATTCCAGACGAGTAAT
+NODE	4149	48	55	55	0	0
+GCGGAGTTTCGTTTTGTCTCCGTCAGCACCTTATGAGAAATCACAAGT
+GCACCTTATGAGAAATCACAAGTCTTTGGGTTCCGGGGGGAGTATGGT
+NODE	4150	51	78	78	0	0
+AGTAAAACGTCCCATCGCCGTCGTTGTCACTATTGCTGCCGTCACCGTACC
+TCCACGGTGAACGACTGTATTGACGATGGCAATAGCGCCAGCGTTTGCGCT
+NODE	4151	51	60	60	0	0
+AGAGTCAAACCTCACGTACTACGTGTACGCTCCGGTTTTTGCGCGCTGTCC
+TCTACGCTCGCCCTTCGGGCCGCCGCTAGCGGCGTTCAAAACGCTAACGCG
+NODE	4152	46	46	46	0	0
+ATTACAGCCATCTCAATACGGGACGCCCGTATGATCCTGAAAAGCC
+GAAGCGTTTCAGAAATTTATTTCCGTACCGGAAAACCGTCAGTACG
+NODE	4153	43	46	46	0	0
+GATAGAGAGTTCGCCCTGACGGAACTCGCGCAGACTTTCCGCC
+GGTCTTTTCACAATCCTTTTTGCCGCCGCTACTACCGCCTTTT
+NODE	4154	51	80	80	0	0
+CTCTTGACATCCACGGAAGTTTTCAGAGATGAGAATGTGCCTTCGGGAACC
+GCAGGTAAGGTTCTTCGCGTTGCATCGAATTAAACCACATGCTCCACCGCT
+NODE	4155	51	73	73	0	0
+ATGATCGCCAAACATATGCCCATAGGCGTCATTAATTTTCTTGAAGTTATC
+TCTCTTACAGGCCGTTTCGCTGGCGCTGTTGAGTTGTCTGGAGGAAGATCA
+NODE	4156	42	63	63	0	0
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AATTGGGTACCAGGTTCATAAGAACCCATATTAAGGCAGCAT
+NODE	4157	45	51	51	0	0
+AAAACTAGTTTCCGGTGAAACATAAAAGAGCTGCTTGCCTAACGT
+CCACGCGGTCAATCATCGCGGAAGAGACCAGCGTTTTACCGACAG
+NODE	4158	51	110	110	0	0
+GCGCGCCGATACCCCTAACCAGGGAGTTTCATGTCGCCAGGAACCGCATCA
+CCCTGGCATCTGTGACTCTATGAAGCCATTTTTCGCGCCTTCCATGCCGCT
+NODE	4159	51	116	116	0	0
+GTTGCGTGGCGTCATCAGTCTACGGATGATTACATCGACTATTTTGCTGTG
+CCCAACACCCGCCGACAATAATGACAGGGATAGTGTAGGCCATTACGCCAA
+NODE	4160	39	39	39	0	0
+GGTAACGTCCGGACTTGGTGGACGTTTCCCGGAAGGGTA
+TGGGTCTGCTCGTTCATCTGTTCACGCCCTGCGGAAAGA
+NODE	4161	51	52	52	0	0
+GTAGTCATCAGCCACTCCACCACGCTTTCACGGAACTGTTTCGCTTCTTCA
+CCCCCCCGCACGACTGTCCGGTCTGTGAAGAGGGCGGTAACTGCCATCTTC
+NODE	4162	44	44	44	0	0
+CCGCCAGGGTTTTATTGGGCGCAAGCACCATCGTTGGCCGCTGC
+CTTCGGCGACTTAGGATAGTTTTTTACTACCGAGGCGAAATAAT
+NODE	4163	51	55	55	0	0
+CAGTCGTTAATAAGTACGGCGTGCCGCCTGAGCTGATTATCGACTTTCTGG
+GCATCCGGGCCGAGGATGGTGTTAGTCATGGTGTTGATCAGCGTAATATTC
+NODE	4164	43	126	126	0	0
+CCTTGTAGACGACTCTGACTTTGGAACGGGGTATTGTAAGCGT
+ACTTGATTCAGCATCGCCTCACACGAATTTTACTCCATGTGAA
+NODE	4165	1	1	1	0	0
+G
+T
+NODE	4166	51	67	67	0	0
+GGATTGCCGCGAAGCTTAACTGCGCGCCGGACGTGCACGCCATTAAAGAGG
+CCCGCCAGCTGCCCGGCGTCGTGATGCGCCAGCAGGCTTTCCAGCGCGGTC
+NODE	4167	40	40	40	0	0
+TACCGGATATCAGCTTCATCGCCAGCTATCCGGCCAGCCG
+GTTGTATGTCGCACAGCCATCGCTGATGGTACAGAAGGGC
+NODE	4168	46	46	46	0	0
+TCGTCCAGGCCGTTGTGGCGCACGCGGGTCAAGGAACTGTTTTTCC
+GAGCAGGAACTTTATGCCGCGCTTGACGCCGCATGGGTAAGCGAGT
+NODE	4169	2	2	2	0	0
+GA
+GT
+NODE	4170	1	3	3	0	0
+C
+T
+NODE	4171	39	48	48	0	0
+CATACGCTGGCGGTAAGCAATGGAAAGGGCTGATGACTC
+TGGCGCGATGACCGTAACCGATACCAGGTTGTGTTCAAT
+NODE	4172	41	55	55	0	0
+CAGCTGGCGCACCGTATCCGCGACTATCTGCCGGAGCAGGG
+TCATCCTGTAAATGCTTGCGCAATAACTGATCCACTTGCAG
+NODE	4173	5	15	15	0	0
+GTCAA
+AGTAA
+NODE	4174	46	97	97	0	0
+ATCTGCTCCCGGCAGATTTGTCGCTCACCTCAGTCACATAATTATC
+CCGTCGCGTGCGACGGCCCGTCAGGGCGAGGCCCATGGATGGGCCG
+NODE	4175	45	82	82	0	0
+ACATCCCACTTACAGACCTCATCCGTTATAACGCAAAGTTTCAAC
+TCTGTAAGTGGGATGTTGAGGGATAATTGGTATAACCAATGTAAA
+NODE	4176	50	60	60	0	0
+GCTGGGCAGCGAACGATTTGCCCGTGAGGTGCTTGGTCGTGCGCAGGCGA
+CCATAGAGCTTATTGTCGTGCTCGGTCAGCGTGAACGGGTCGCGCGTCCA
+NODE	4177	43	43	43	0	0
+CTGGTATGAACAAGGTATTCCTCACGGAGGCGTTATTGGGCTT
+GTAGTGGCTGGCCGGATACACAGGTAACTTAATTTCTGGCGGG
+NODE	4178	51	54	54	0	0
+GATCGTTCTGCTGGCGCTGGGTGGGTTGAAGCCGATTCAGACCGCGATTAT
+CCCGATGATGCCGACCAGCACCGACCAGCCGATACGCACTAACAGAGGCGG
+NODE	4179	43	61	61	0	0
+GCGCAGATCGTCCACCAGTTCGGCCGCGTCCATAAAGCCGAGG
+CGCCAGGGCAAAAACGTTCGGCAGAACGTGTAGAATTTCTTGG
+NODE	4180	5	5	5	0	0
+GAAAA
+GTTTT
+NODE	4181	20	36	36	0	0
+GAATGAGGGATTGCATCGTG
+CCCCCGCCTGCGGTATCTAT
+NODE	4182	45	80	80	0	0
+CAAGGGATTTGTCTAACCTGATATTTGAACTTGATTCAGCATCGC
+AAATCTAGGAAGCGTGGGCTGAATCTCAGCGGATCGTGGCACAGG
+NODE	4183	51	72	72	0	0
+GTACCCGCGCCAGGATGTACCACCAGATCGCGTGGGTTGTTGATAACCAGA
+CCCCGGACGGTACGGTACTGAACGCGTTGCTACATTATTATCCGCCGATTG
+NODE	4184	14	43	43	0	0
+GAATCCGTAGCCAA
+TGCTCACCCCAGTT
+NODE	4185	46	46	46	0	0
+GGCTGCGTCGATCTCAGCGTTATCCCCGGCGCCAGCCAGCGGTTTG
+CACTCTCCAGGGGTGGAAAAAGGTCGGTTTTGACGCCGTTATCTTT
+NODE	4186	46	62	62	0	0
+CCGCCGGGAATAGAACAACGCTCATTGAATGGGGCCATTCTCTCCC
+CCGGCATCATTGTAACCGAGCGCTCCACAGGCCATAGCGCTGATAA
+NODE	4187	51	113	113	0	0
+CAAGCCCGCAAACAGGAGCAGCAGGCCGGAAGCGAACCTGCCGAAGCGGTC
+GGGCGCGAGCGATAGCCGCCTCCACTGCGGCTTTGCGCGGATCGACCGGTT
+NODE	4188	37	37	37	0	0
+TTGCGACTTTCGTATTTAGCTACGAGTAATTAACGCA
+GTAACGCGCGCGACCATCTCCATTTCAAGATCGGTGC
+NODE	4189	43	43	43	0	0
+TGAATATGAACTGCTGGGGCTGTCACATCTGCTTGCCGGTATG
+TTCGGCAACGGCTCGCCGGTTTCATAGTGGCCGGAGATAAACG
+NODE	4190	23	39	39	0	0
+GCACACTATCATTAACTGAATCC
+GTATCGCCGGTTATAACGGTTCA
+NODE	4191	31	77	77	0	0
+GCATCAGAATTTGTAACCTGCAAGGGCGTGA
+ACCCGTCACGCTTTTGATGCCTTTTGGCAGA
+NODE	4192	23	23	23	0	0
+GTCCCTGTTGCGCAACGGCGACA
+CCCTGAGCCAGCCAGCGCTTTCT
+NODE	4193	43	46	46	0	0
+ACGGCGCGGTGCGTATCTGGCGTAAAGATACGAACGATGAAGT
+CATAGTAATGGCAACGGTTTTAGTCTCCACAATACATCTCCTC
+NODE	4194	6	7	7	0	0
+GCTGCC
+ACCGCC
+NODE	4195	51	157	157	0	0
+GGGAGAGGATCAGCGAAAACGCATGGAGAGATCGAGCGCGCGTACGTGCTT
+CCCCGATGGCGCTGCGCCGTCGGGTCTATAAATCACCTGTCCGTAGATCCG
+NODE	4196	44	64	64	0	0
+TTGACTATCGGCATGTCTGGTTCCCCCTGGACAATCAGTTTTAC
+GCGTCGCGGATGCATGAATTCAGCGATATGGCGGAAGTTGAATC
+NODE	4197	9	9	9	0	0
+TACTAATTT
+TCCCGCCAG
+NODE	4198	37	37	37	0	0
+AAGTGAAATCCGACCTGATGGGCGAGCAGACCATCCT
+TAAAACGGCAAGAAATAGTGTTAAGGCGCTGCGTTTC
+NODE	4199	51	53	53	0	0
+TAACGCATCAGGCTCACCCAACAGGCTGCTCGCAATATTGGCGGTAGTGGT
+ACGGCTTACCTGGTACGGTACTGCGCTTGGCATAGCAAACGAAGCGGAGGC
+NODE	4200	146	245	245	0	0
+AGGTTACAGCTAAGGGTTCAAATCCCTTCAGTTGCTTAATAATGGTTTCAAGCTAGCACAAAAGTCTTGGATAGATGGCTGAGCGGTTTAAGGCGACAGTTTTGAAAACTGTTGTATTTAATAGATACCGTGGGTTTGAACCAGTA
+TCGCCTTAAACCGCTCAGCCATCTATCCAAGACTTTTGTGCTAGCTTGAAACCATTATTAAGCAACTGAAGGGATTTGAACCCTTAGCTGTAACCTTGCCAAGGTTAAAGCTAAGGGTTCAAATCCCTTCAGTTGCTTAATAATGG
+NODE	4201	40	41	41	0	0
+CAAAACCGGGAAGTCATCTGGCGGAAGGCGACAATCAGGA
+TGTCTGAGCCACGGCGCTATGATGCGGCAACAGGTTGTCC
+NODE	4202	4	4	4	0	0
+TCAT
+GACC
+NODE	4203	38	62	62	0	0
+TTTGTACTACCTGACCAAAAACCAGTTGCTCAATGGCA
+GCGATCATATGGGACGCTATGGGCTGGCGGTGGTACGC
+NODE	4204	39	39	39	0	0
+GTGTTTGAAGTAATCGCCGAAGCTGAAGTTGCCCAGCAT
+TCCACTACCACGCCGTTCTGATCAACTTCGGCAATCACA
+NODE	4205	41	47	47	0	0
+ACACATTTCCAGTGCTGGTAAGCGCATAAGTATTTGCGCTA
+CCCTGCCGTTAGCTTTTATGCTTAGCCTGATGCTCTTTTTC
+NODE	4206	2	6	6	0	0
+GA
+AC
+NODE	4207	39	39	39	0	0
+CCCTTCAGATTCAAACTGATAAGGGCCTTCATTAATTTT
+TAACGCTCTGCTTCACCCCTTAATTCAGCAGGAAACCCA
+NODE	4208	1	1	1	0	0
+T
+C
+NODE	4209	7	13	13	0	0
+CAAAAAA
+CTTTTTT
+NODE	4210	14	23	23	0	0
+GGATTGTAGATGCT
+CCCCGCCATTTCAA
+NODE	4211	8	15	15	0	0
+GCCCGCCC
+CCCAGCCA
+NODE	4212	43	43	43	0	0
+ATGTACTGCCGCCAGCGAGTTGCCTACTGCTATCCCTAAATCG
+GGCAGATCGATCCGACGCAAATCCAGGTCGCTGATTTGGCGAA
+NODE	4213	44	81	81	0	0
+ATACCGTTCGGGAGCCGGATAAAGACGATCTGGTTTTTGAAGCC
+TCAACCAAATCATGCGCACATCCGTCACCAAACAGGATGCCCAT
+NODE	4214	51	63	63	0	0
+ACAACCACAATCCCGAGCCTTCACCGGACCATTCAATCGGTAGGTGCGACG
+TTTTCCTTCATTGGGAGTTGATCGCGAGCCTTCACCGGACCATTCAATCGG
+NODE	4215	46	82	82	0	0
+GCCCATAGCGATCGCCCATCGCGCCCAGTAATAACCCGCCGAACCA
+ATACTGGCGCTGGTCATTGTCGGGATTGTGATCGGCGTTGCGCTGA
+NODE	4216	37	37	37	0	0
+TAACGGAACACCAGGTCGATAAAGCCCTTTAACATGC
+ACGCGAGTTAAAAAACGCCTTCAGCTCATTTTACAGG
+NODE	4217	40	48	48	0	0
+GCGATAAGAACAAGAAATGATGAGAATATAGAAAAATTAT
+CCCGCATGCCACTTTTCATAAGTTTCTTTCTTCATAGCCC
+NODE	4218	42	42	42	0	0
+ATTACGTTCGCTGGTCTAAGTTCCCCTAAGAGCATAGAAGTC
+TAAAGGTGTTGGCCTGTTTCAGGATATGACACCAGAAGAGCA
+NODE	4219	51	66	66	0	0
+CGCATATAAGCATATAAGCATATAAGCATATAAGCATATAAGCATATAAGC
+GTATATGCTTATATGCTTATATGCTTATATGCTTATATGCTTATATGCTTA
+NODE	4220	7	39	39	0	0
+AGTGCCG
+ACAAATC
+NODE	4221	4	8	8	0	0
+GAAA
+GTTT
+NODE	4222	51	55	55	0	0
+CCATCCGGTAAGCCGTGGCGCGCTGTGCCCGAAAGGGGCCGGTTTGCTGGA
+GTCCGGGTCGCCTTCAATATGGTAAATCGCTTCTTTCGCGTTTTTTGCCCC
+NODE	4223	44	44	44	0	0
+CAAAGCCGATCGCGAAGAAGCGCGTGCTGCGGTTCGCGGCGGTA
+CCTCAATTTGATCGAGTAGCGTCCCCTGCTGCCAGGTAAAATCC
+NODE	4224	27	1230	57	0	0
+GGTCTGTTCGTTAACCGGTTCCCACTT
+CCAGAGTTGCCACTGATTTTGCCACCA
+NODE	4225	8	11	11	0	0
+CAAAAAAA
+CTTTTTTT
+NODE	4226	41	41	41	0	0
+TATTACTTTGCGCATTCGCATGTTCTGCTAATGATAATGTT
+AATATTCTCTTCATATACACTCCACCACCATTTCAATGTCA
+NODE	4227	36	46	46	0	0
+ATTGGGTAAAATCTACTTTGGCCCGCTCGCAGCGCT
+CAGTATATTCTCTACCGGTACGTCAAGCTCTTTTGC
+NODE	4228	45	78	78	0	0
+CTGCCCTGTGCGGATTGTGAAGGTATTGAAACGTCACTGTTTCTG
+TGCGCCATGCGCCTGATGCTGGTTTAAAATCGGCCTGCGCGGACT
+NODE	4229	26	62	62	0	0
+TTCGACCGACACCGATATGCAGCGCA
+CCCCCACAGCCCGCCAGCTCCAGCCC
+NODE	4230	14	682	28	0	0
+TGATTGTAGATGCT
+ACCCGCCATTTCAA
+NODE	4231	43	69	69	0	0
+TAGGAAGCGTGGGCTGAATCTCAGCGGATCGTGGCACAGGGCC
+ACTTGATTCAGCATCGCCTCACACGAATTTTACTCCATGTGAA
+NODE	4232	105	416	416	0	0
+GATTTCTCGATCAGATACCGTCGTAGTCTCAACCATAAACTATGCCAACTAGGGATCGGTGAATGTTGTTTATCGACTTCATCGGCACCTTATGAGAAATCAAAG
+TCCCTAGTTGGCATAGTTTATGGTTGAGACTACGACGGTATCTGATCGAGAAATCAAAGTCTTTGGGTTCCGGGGGCTCGCTAGCGTTCATCCTGAGCCAGGATG
+NODE	4233	40	40	40	0	0
+GCGGCCATCCCTCGCCCGGAGGCGATGGCCTCTACGCAGC
+TACTATTCCACAAGCGAGGATCGCTTCGTCAAACGGCTGA
+NODE	4234	51	77	77	0	0
+GATATCCGATCAGCATGTATCACAAACGTTGGTTTGAGGCGGCGCTTCGGC
+CCCCGCGTCTCCAAAGCCGATGGCTCGCAGTCTCTCGACCTGCAGCACGAC
+NODE	4235	38	39	39	0	0
+TTACATGAGTTAATGTGCTCAACGGTTTGACGTACAGA
+GCCGAGGTATTAAACCCCTGCTCGCTTAATGCCTGCAA
+NODE	4236	1	2	2	0	0
+C
+A
+NODE	4237	41	44	44	0	0
+GCTTAATACCGGCATCAGCACATCGCGCATCCAGCGCAAAC
+TTTGTTTGCCTGAAGGCGGCAAATGTGACCTCTATGCGCAC
+NODE	4238	42	42	42	0	0
+GCACATCAGCCACCAGCCGGGCGAGCTTTTATCGCCGGTTAA
+GTGCTGCTGGATTGTGCCACAGTTAAAAGGGTATCAACCTGC
+NODE	4239	35	43	43	0	0
+ATACAGAGACGCGAACACGCCACCCGCCAGCATAA
+CAGCAGCATCATGGCGATAATTTTGATGGAAGAGA
+NODE	4240	51	54	54	0	0
+GGCCGCCTCTCCTCTGCGGGGGGGTTATGTTCGCCTGAACCGTGTCACCGA
+CCGCCACAGGAAGGTGACTTCCCGTTCATCGTCTGCGCCGTTAATGGCTGT
+NODE	4241	39	63	63	0	0
+GTATTTTCCAGCGAGTCAACATCGTCATAGATCTCTTTC
+GCTGGCTATTTTTGCGAGCAGTGCCGACTGCGGCTGGGG
+NODE	4242	77	81	81	0	0
+AGGGTACAAAAACAACTCATTACAGTAATGAATACAACTGCAACAAGCATAAATCACATGTTATACTAAAATTACAT
+TACTGTAATGAGTTGTTTTTGTACCCTAATAATTTCCTCTTAAAATCTGTCTGTGTATAATGCTACTTATATAAATG
+NODE	4243	10	32	32	0	0
+CTTGCAGTTC
+GAACTGCAAG
+NODE	4244	6	7	7	0	0
+GAAAAA
+CTTTTT
+NODE	4245	45	45	45	0	0
+TGGTTCTGTGTTATCGCGACGAATACAAACTGGCGCTGGGCGAAC
+CACGTCAATCGCCGCCCTCGACGTAACGGAAAAATGCACGACGCG
+NODE	4246	51	77	77	0	0
+TATGTTTTTCTTCCTGTACCTGTCTGTGTTGTGCGGGCTCTACGGCCTTTG
+AGTAGATCAGGTAAAAGTCGCAGCCGACGAACAGGCTCCGGCTGAACAGTC
+NODE	4247	44	44	44	0	0
+GCCAGAAGGGTTCGTAAGGAAATAATCAGCACGCCGCCGTTCGC
+TATAAATCCTTCCCGGGCATCTTCGCGCGACAAAATGCGCAAGG
+NODE	4248	43	44	44	0	0
+CGTTTGCCGGGTTCGTCGGTTATGCGGTCATGAACCTTGCAGT
+ACGGTGATCAGCCAAAGCAATATTAAGGACATCCTTAATATAT
+NODE	4249	2	4	4	0	0
+CG
+CC
+NODE	4250	43	43	43	0	0
+GCCCACAACGTCTGTCATTTATTGAAGTGATGTTGCCAAAAGC
+CCGTCCGGGCCACTTCCGCGGCGTCTCGACTATCGTCAGCAAG
+NODE	4251	51	52	52	0	0
+GGGGTGTTTCAATGCTGAACTCCTATTCCGGTTGGGCTGCCGCTGCGGCTG
+CCCGGCATGCCCGCCCCGCCGATAGAGGCGACCAGATGCCAACCAAACGCC
+NODE	4252	46	46	46	0	0
+ATTGCCGATCGTGGCGAACTGACGTTGAATAAAGATGAGTTTAGTT
+CCAATTCGTTGTGGCGGTGTTGTAGTCATATCTTCTCCGGGGTTAC
+NODE	4253	51	57	57	0	0
+GGCTGACTGGCCCGAAAGAAGCTGAGCGTATCTATCGCGCAGGTCTGGCCT
+CCCATGCCTTCGCCTTTGGCGTTAACACAGTCACGGGTCATATAGTACAGA
+NODE	4254	44	50	50	0	0
+TTTTATAGCCTAATAACACAATACTTCAAATGATTTTTATAAAA
+AAACAAAGAATATATTCTTGTTGTGGTGTGGTATTTATTGCTAC
+NODE	4255	26	49	49	0	0
+TATTTTTTTTTTTTTTTTTTTTTTTT
+TTTTTTTTTTTTTTTTTTTATTTTTT
+NODE	4256	46	46	46	0	0
+GCAGCAGCTGATCCACCACGCGCACAAATTCGGTGATGCAGAGATC
+CTGGAAGGGCTTAGCTGTCGGATGATGGAAACGTCGTTCTTTATGT
+NODE	4257	40	40	40	0	0
+CGGATGAAATTATGATCTATGTGGCAGGACGCCAGATTCT
+AGGAAAGTCCCCGTTTCGATACGATCCGGCAGCACACGAT
+NODE	4258	1	2	2	0	0
+C
+G
+NODE	4259	5	12	12	0	0
+TAAAA
+TTTTT
+NODE	4260	5	9	9	0	0
+GTGGA
+GAAGC
+NODE	4261	15	15	15	0	0
+CGGGCGGCAGGATGA
+GTTTATGAAGAGGTG
+NODE	4262	51	63	63	0	0
+AAAATCCTAATGTTTATGGTAAACAATTTCCCTGCCAGAGAGTGGTCGTTT
+TTTTACACTACCCTCAAGTGGAGCAATTGCTGTCTACATAGGTATGTGCAT
+NODE	4263	40	40	40	0	0
+GATTCGCGATCGATGACGGTGACATCATGCCCCGCCTGAC
+GATACCAACGTCACTAAAGTGGTAGAAGATCGCGCCAATG
+NODE	4264	51	74	74	0	0
+GATGGTTTCCGGCTTTTTAACTTCACCGAAAGACCATGAACGGATCATGTC
+CAACTACCGTACGTTCAAACCTGAGCGTGACGGCCTTTTCTGCGCCCGTAT
+NODE	4265	35	124	124	0	0
+ATGTGGGCAGGTTTTGAATCCTACCCTGTCGGAAG
+AGGCCAGTGCCAATCCGGTTTGTGGCTTGGAGGCA
+NODE	4266	51	63	63	0	0
+GAGTACTGAGCTGGCGCTGGAATATTCATCAGGAATCCACCATGCACGCCG
+CCAATTTCATTTTTGTGTTTGTCATCCATTGACTCGCCGTCAATGCCGTCA
+NODE	4267	45	82	82	0	0
+GTAAAAGAAAGGCATAAAAAGCAGCGCAATAAGCAGGAGAACGGG
+GGGGAATAAAAAAAGTCTGTGCAAATCGTGTTATTATTAACGTTT
+NODE	4268	21	21	21	0	0
+TGGTTATTAACCACAACACCT
+GCCGGCTAACTCCGTGCCAGC
+NODE	4269	42	42	42	0	0
+CCCCGACCAGGATGATGTTCATCGCTGGCGTACGCCATTTCG
+TGAGTCATATTTTTCGCGTGATTGCCGCGATGGCCGCCGAAA
+NODE	4270	26	36	36	0	0
+GAATAAATAATGATGAAGCGCAAAAT
+CCCTGCCACTGCCGTCAATAAATTCC
+NODE	4271	51	60	60	0	0
+GATTTATATTCCATTCTCACCTCTGGGCGCGATGGTTGGACTGGAGCCGCT
+CCCTATCGCCATAATCAAGCCGGTCGTCAATAATACCGGCAACGTCGCCCG
+NODE	4272	16	31	31	0	0
+GTCCGGGAAGAAGCGA
+CCGTGGACGACTTCAC
+NODE	4273	3	3	3	0	0
+GAA
+ATT
+NODE	4274	4	4	4	0	0
+TGAT
+CCCC
+NODE	4275	20	3860	20	0	0
+TTTTTATACACTTCCGGCCC
+ACCCGACTGAGTTCAAACAT
+NODE	4276	51	59	59	0	0
+TCCACGTTTTCCAGCGCCGTAAAATCCGGCAGGAGATGATGAAACTGATAG
+AGATGCCATTATTGATTGGCAAAAAGAAACCGGCGGAGATTGACGCTCGGG
+NODE	4277	41	82	82	0	0
+TCTCCCCTTCCGGCGTCAGAAAAACGCCGCGCCAGGGGATC
+GCCTGCACCAATGGAGCGATCAACCTCAATTCGGCCTCGAT
+NODE	4278	46	46	46	0	0
+ACACCAGTAGCGAACCTTTCGAAATTGAAAGCCTGACGCTACAAAC
+TCCCGGCAAGCGTAGGGTGCCATTCATGATGCGGAAACAGCATTTC
+NODE	4279	44	46	46	0	0
+AGGCGGGCAATATTGGCTACAAAATCGCTCAGCGTCTGGGAGGC
+CCAGCTCCTCTTTTTTAATGCCGCAGCCATTGTCGCGAATACGA
+NODE	4280	44	44	44	0	0
+GGGGATTCATAATCATCAGCACATCGAGACCGCGAATCAAAATA
+GGCGGCGGACTCTCGATACCTTATCGTGAGGGAGAAGAGCCCGT
+NODE	4281	19	24	24	0	0
+AATGAAGGGTATAAACAGC
+CCCCGGCCCATCCATGGGC
+NODE	4282	51	53	53	0	0
+GAGCGCTGCCGGGCGCTTTCAGTAAAGGAACCCACACTATGTATATCGGGA
+CCGCTTACCGGTCTAATCACGACTACAGGCCGGGCTAACGCGGAGTCGCCC
+NODE	4283	8	8	8	0	0
+TTTATGTT
+ACCGTTCA
+NODE	4284	17	17	17	0	0
+CGATGAATCGCGAGAAA
+TCTTTCGTTGTTCTGTG
+NODE	4285	45	45	45	0	0
+AGTAATCCAATGCCGATCATTATGGTCACGGCGAAGGGTGAAGAA
+AATCCGGAAAGTGTGGCGCGCACGTTATCTGCTCGCTACTACAAA
+NODE	4286	41	53	53	0	0
+TTTTTCACAATGCCGCTCCACGGTTCGCCCTGTTTTAGGGT
+TAACCAGCCAACCAGCACCAGGGTCAGCAACACCAGCAGCC
+NODE	4287	50	92	92	0	0
+CTCCGCCAATCCCTTGTCGGCATAGTTTATGGTTAAGACTACGATGGTAT
+GCCTTGCGACCATACTCCCCCCGGAACCCAAAGACTTGTGATTTCTCATA
+NODE	4288	107	204	204	0	0
+TGTTCTATCTTCACCGGTTGGCTATGTGAGTAAGCATTTTACCTTGAGAAAAACAGAGTGTTCTATTATTCCATGCTAATGCATTCCGGACAAACCTGCCTGGAACA
+TCTGTTTTTCTCAAGGTAAAATGCTTACTCACATAGCCAACCGGTGAAGATAGAACATATGTTTGCAAGCAGATGACTGTCGGTATCTCTGTCTAAAGACGAGAGAC
+NODE	4289	42	42	42	0	0
+TTTCCGCCCCAGCGCCGGAATTAATCGCAAAGGCCACACCTA
+ATTATTGGCGTAGCGTCAAGCCTGGTTTTAATCGCTGCGATG
+NODE	4290	45	50	50	0	0
+ATAAACACCTGCGGAAACTCCAGCCCTTTGGCCGAGTGCAGCGTC
+TCTGGAAGAGGGGCTGGAGGACGGGCTGGCGCATCAGACGTTATT
+NODE	4291	6	6	6	0	0
+CAAAAA
+GTTTTT
+NODE	4292	51	74	74	0	0
+GCGTACTCGCCGAAAGCGTTCGGCAGGCCGGCGTTCGGGTGCGCGGGGACG
+CCCTCGACGCCGACACCATGGCGAAACAGATTCGCGAATGGGCGGAAGCGG
+NODE	4293	48	51	51	0	0
+AGGGCTGGAGTTGACGTTAAATATTAAAAACGACGTCCCGGATAATGT
+TATCATGCGACGAGTGGGCCAGCAGCGTAACCACTTCATCCAGCGTGT
+NODE	4294	51	71	71	0	0
+AGCCAGCATGGCGTACATTATGGTCAGGGCTGGTTATACAGTAAACCCCTA
+TTAGCCACTGTTCTTGCCTGGTCGTTTCGATGCCTTCTGCGACCATCTTGA
+NODE	4295	43	43	43	0	0
+CTCAGCTAAAAATTGACGCCGAGTTTCCCCGCTTCACACAGCG
+TGGCTCCATTACGTCATTAATACACTCTCTCAGGGGCAGAGTG
+NODE	4296	2	4	4	0	0
+GA
+AA
+NODE	4297	51	107	107	0	0
+GTTTGGTAAACCGTTTGCACAATAGGTTACGTCCCTCAATGTAAAGCGACA
+CCCAAATGCGCCGTAATGAGATAACACCTGCGCCGCCGATTTCCCGCCCTG
+NODE	4298	1	1	1	0	0
+G
+A
+NODE	4299	1	2	2	0	0
+C
+A
+NODE	4300	39	39	39	0	0
+AGCCAACATCTTGTTGCTCCAGCCTTTTTCTTTTATTGT
+CACTGGATAAAAATTGAAAATCAGAAAATCGACAGCTAT
+NODE	4301	44	44	44	0	0
+AACTGGGCGTAAAGTGGACGCTGGCTGACGCGACGCAAGCGGGC
+ACCGCCGCAGATTGTTTTACTTTTTCTGTCATGGTTTTCCCTGC
+NODE	4302	51	61	61	0	0
+GCCACTTATCAGCAAATCATGGCGGGCGGCATTTTGTGTGGCATTGGCTTT
+CCCCCTGCGGCAGATGCGCCAGCTTGAAACGCAGCGCCAGCCAGCAAAACA
+NODE	4303	37	45	45	0	0
+TTTTGCCGTGCGTTCCTCCGCCACGGCGGAAGATATG
+GAAAGTCACTTGTCAAATTTCTATGTGATGGAAATTA
+NODE	4304	42	42	42	0	0
+GAACATGTGGATCAGGAAGCCGACGCCGGTGACCACAGAGAG
+CTGGGCATTCTGGTGCTGCCGCTCAGTGTCCCGGTGCTGATT
+NODE	4305	7	7	7	0	0
+TCGAACC
+GCGTGAA
+NODE	4306	46	55	55	0	0
+GAGCTTTATTGAAGAGGATTTACGCCCCCATTATTCCGATATTCTT
+CCTCCAGCCGTAACGTATTCAGATTACAGATTTGACGTAATGTCGT
+NODE	4307	3	6	6	0	0
+GAA
+GTT
+NODE	4308	14	14	14	0	0
+CCGGCTTTACGGGT
+CCCCGCCAGCCAGA
+NODE	4309	43	43	43	0	0
+TATAATGAATTGGCATTGCTATATTTTTGCGTCAGCGTCTGTA
+AGGAAGGCTAATACCAGTTCGCTCAACCATTGCCTGTGCAGCC
+NODE	4310	31	45	45	0	0
+ATGCAATCAGCAGCGCTTTTGTTTTATCGTG
+GGCAGTGGCCGGCAACGAAAATGACGCGTCA
+NODE	4311	47	68	68	0	0
+CTTCCTGCAGTTTCTTGTTTTTGTCATTCACCACGCGAAACGTGATT
+CTTCTTGCCGAACTGATGTTTATGCTGTACGGAATTAGCGAGCTGCC
+NODE	4312	51	82	82	0	0
+GTACCTGCTGACCCTGGATATCCCGAGCTATCTGCCGGTCATGACCTACTG
+CCCTTCCTGCTCTTTGGCTTCCGCCTGGGCTTTAGCGGCGGCGAGCGCGCT
+NODE	4313	23	33	33	0	0
+AAAAAAAAAAAAAAAAAATAAAA
+ATTTTTTTTTTTTTTTTTTTTTT
+NODE	4314	51	60	60	0	0
+CGAACACGTAATTCATTACGAAGTTTAATTGATTGAGCATCAAACTTTTAA
+GCTCTTGAGACTTGGTATTCATTTTTCGTCTTGCGACGTTAAGAATCCGTA
+NODE	4315	4	7	7	0	0
+CAAA
+CTTT
+NODE	4316	35	37	37	0	0
+GAGTGGCTGATCCGTAAGGATGGCTGTATGCACTG
+GTAGGTGAACGCCAGTTCAGCTCCTTCGCGGTGCA
+NODE	4317	62	66	66	0	0
+TTACCCTCCTGCACCCCACATATCTACAATAATTGTATTCTTTTCGTTCAATCCCTGGAGCG
+GCAGGAGGGTAAAAAAAACCCCGCCGAAGCGGGTTTTTTTACGTTACTACAGATTACTCTGC
+NODE	4318	4	24	24	0	0
+CACA
+CCGT
+NODE	4319	150	204	204	0	0
+CCGTAAAACGGTCCAAAAGGTTCACCGTATCACCCGGTATCGGTAGGAGCGACGGGCGGTGTGTACAAAGGGCAGGGACATAATCAATGCAAGATGATGACTTGCACTGATTATGTCCCTGCCCTTGTTACGACTTCTCCTTCCTCTAGG
+TCATCATCTTGCATTGATTATGTCCCTGCCCTTTGTACACACCGCCCGTCGCTCCTACCGATACCGGGTGATACGGTGAACCTTTTGGACCGTTTTACGGGAAGATAAGTAAACCTTATCACCTAGAGGAAGGAGAAGTCGTAACAAGGG
+NODE	4320	46	46	46	0	0
+CCTGCCCACTTTGCCATGAATAATCTCTGCGACAATCAGGTGCCGA
+GCACATTCATCCCTTCGCGCATAATGACGCCCGCCCCCAGAAAGCC
+NODE	4321	11	11	11	0	0
+GGATGAGCTTC
+CCGCCGCCGCT
+NODE	4322	38	44	44	0	0
+TCGGGAAAGGTCGCGCATTTTGCGAAAAACTGGCGCAG
+CGCGTACATGGCCCGTGGCAGCCAGCGCAGGGGCATCG
+NODE	4323	51	62	62	0	0
+AATCAGCGCGCATCGTTTATCCGCGCTGACCGACGCCAATGAAATTATCGT
+TATGACCGTACGCCCTTCGCCCCACTGGCGCAAATTATGCAAAATCTGATG
+NODE	4324	37	37	37	0	0
+ACATTTTTCGCAGCTGCTTTTTTTTAACGTCATGCTA
+TAACGTCATGCTAATAACGTTGCTTAGAAGGGATAAT
+NODE	4325	39	40	40	0	0
+AGGGGCGCCAGTTATGGGAGATCTGGCCGGCGACCATCT
+CCGCTGGTGGCATTAATTACCGGCCACTGCGTCAGATCC
+NODE	4326	72	106	106	0	0
+CACTATACATCCACTTTCTGGGTTGGGAATATTAACCCAATTCCCTTTCGATAGAAGGGGCGCCGAAACGCC
+CCCAGAAAGTGGATGTATAGTGGCAACGGATTTCTCCTATCTCTTAGGATAGACTAACCCACGTCCAAATGC
+NODE	4327	51	54	54	0	0
+GTTTGAAGAACTACTGAGCTGCAATGTGTAGTGGCTGGATGGCGCGCTCTT
+CTACGACAACCTGAACGGTTGGGCGAAGAAAGAGAACCTGAAAAATTATGT
+NODE	4328	43	47	47	0	0
+CATTTTAATGACGCTGTAGATATTCTTATTCCGGATTATGCGC
+CGAATCTAACAACGCATCCGCCAGGCCAGTGATCAGGTTAGTG
+NODE	4329	51	73	73	0	0
+ACCAGACGCCCCAGTTCCAGTGATTCCGCCGTTCCCAGTTGTTGGCCAATG
+TGAACGCGCATCCTCCTGAGTTGCTGCGTTACGATCCCCAGGGACAGCGTC
+NODE	4330	45	45	45	0	0
+GCCGGCGGCAGCTACTACGATATCTTTCCGCTACGTGGCCTGGTC
+GACGATTAATAAAATAGCGAACAGAAAGGCGGGGATCGCATAACC
+NODE	4331	42	46	46	0	0
+CCAAGTTGCACGGCGAACAAAAACTACCAAACAGAATCGCTT
+GACTAAACGTGGCGAGCGGCGCCTGACTTACCTGTTTAATCG
+NODE	4332	36	36	36	0	0
+GCTGACCCATGAGCAGCTGCGCCAGCGTCTGATTAA
+ACGCCTGATTCGGAAAGTGAATAACTTACTCAAAAA
+NODE	4333	2	2	2	0	0
+GG
+TT
+NODE	4334	51	55	55	0	0
+CCGGTGGCGACGGGCGGCTGCTATTTGACCCCCGATATTGCCGTGAAACTG
+GATGCACCGCGGCGATCAGCTCATCCGGACTACAGCGTTTAGAGAGAAAAC
+NODE	4335	18	29	29	0	0
+GTCATCGCCGCTATCATC
+TGACGACACGCCCCCAGA
+NODE	4336	63	100	100	0	0
+CTGACAATGGAATACGAACTACTGCGAAAGCATTTACCAAGGATGTTTTCATTAATCAAGAAC
+ATTCCATTGTCAGAGGTGAAATTCTTGGATTTTTGGAAGACGAACTACTGCGAAAGCATTTAC
+NODE	4337	51	63	63	0	0
+CCCCCTTCCGGTCCCATAGCGTTTGCCATATAACGCACGTTGGCTTCCAGA
+GTCGCGTCAACGCCATCTCTGCGGGTCCAATCCGCACGCTGGCGGCGTCCG
+NODE	4338	105	140	140	0	0
+TTCCGCGCGCTATTGCTTATTATGCGACATTGCCTACAGAAGTCGCAGCGCGCGCCCTGGCGCAAGATATTGCTGCATTACCGTATGGCATAACGCTGGTCAGTA
+GCGCGCGCTGCGACTTCTGTAGGCAATGTCGCATAATAAGCAATAGCGCGCGGAAGCGTCAGATCATCACCTTGTTCCGGTAATCCCCGGCACACACGGGAATCG
+NODE	4339	35	43	43	0	0
+ACAGCGCCGCAAGACAGCTTGATCCACCCGCTGTT
+TTGATACTGCGGCTGCGGTGCTACCGGCTGCTGAA
+NODE	4340	51	82	82	0	0
+TATTTGTCCGCCATCGGCGACAGTAACTCCTCGGCGGTCACCGTCTCGTAG
+ACCGCTATAGCGGTCATCTGATTGACTTCAATGTGCGCGCCGAGCGTATGG
+NODE	4341	47	47	47	0	0
+CCGGTCAGGGCGCTTTACGTTTAGAACCGCTTTCTAAAGAGTATATT
+GGCGTAAACAAGAATGTATTCCCCCTGGATGGAAACGTTATCAGAAT
+NODE	4342	43	43	43	0	0
+TCTTACCCTGCCACTGCGCTTTATCGACATGCTGTACGGTTTG
+GTCTGATAAACGACCTTAACCCGCAGGCGGTCGAGCGTGCTAT
+NODE	4343	51	95	95	0	0
+GTCCGTTGGCGGTGGATAAAAAATACCCTCTACAGATCGTCATCCTTGACG
+CCCGCGCAACAACCATGCTCTCACAATGTGCCCGTTTTATCCGCCGCCTCT
+NODE	4344	3	3	3	0	0
+GGT
+GAA
+NODE	4345	46	57	57	0	0
+GATTACGCTAACGAAGCCGCGCTGACCACCGCCTTACAGGGCGTTG
+GAGCGTCTCCATCCAGTCGCGCTGTGGAACGAAGTTTTGCGGGGCG
+NODE	4346	45	46	46	0	0
+TTAGTGGAGACTTTTTTCAACGACCTGTTCCAGTTTTTTCAAAGT
+GGTTCCAGCATCGTTTTACCGTGTGATGTCGCTGAAGATGCCAGC
+NODE	4347	46	46	46	0	0
+TTAGACCTGCTGAGACGGCGCGATATTATCAGATCCTGAGACACCA
+AATTGGGAAACCAAATTTGTTACTAATTGTTCACCATTAAGATGAA
+NODE	4348	51	84	84	0	0
+GATCCGGAAATCTGCTGACGACTCTGTGTCCGCACAAGAAAAACAGACTTT
+CCCTGCATCAGCAAACTGCTGTACCAGGCGATCCACGGAAACCTGTCTCTC
+NODE	4349	46	46	46	0	0
+CTCCGATATTCCCGCCTTTTTTATTAAAAATTGTGCGGATATTAGC
+TGGGGCTATCTGGGCTATATTCTGAAAACTGGCGCTAACTGGAAAG
+NODE	4350	4	7	7	0	0
+CAAA
+ATTT
+NODE	4351	44	44	44	0	0
+ACTGCGCCGCCATCACCGCATCAATGTCTTTATACGCCATTGGG
+CAGGCGGGCGATCTGCTGGTCACCGACGGCGCGATGGGTATCAT
+NODE	4352	51	54	54	0	0
+GTGATTGCGGCAATACGCCGGCCATTTCGGCGATAAAATTATACCGTGATG
+CCCTCTTTGGAAGGGTCGTAACCCCCTGCATCATTCGTGTTCGTGACCAGC
+NODE	4353	33	69	69	0	0
+GTGATATCCCGGAACCTTATAATCCCGTGGCTG
+CCCTGCCGTAGCCTGGGAGCATAGCTGGCATAG
+NODE	4354	46	46	46	0	0
+CCGATTGGCGCCACCATCGCGACTGAAGAGGTGTTTTCGGTTCTGT
+CCGATACTCATAATGACCCAACCGGTGTCGGTACTATCAAATTTGA
+NODE	4355	39	77	77	0	0
+AACTGGGTCAACACCGTCTGCACGTTGTTTGGCGCGTGT
+ACACCATCACCCTGTTACAGATGGAAATTGAAGAGCTGA
+NODE	4356	37	37	37	0	0
+GCGCCGCTGTTGCTGTCGGTCAGGTGTACGGCCAGGG
+ATCGATAGGGATGATGTGATCAACAATCTTTGCAGGA
+NODE	4357	40	40	40	0	0
+CGCAGAACCGTGTCGCCGGACAAGTTCAGCAGCCAGTCGG
+TGGTCGTCGTATTGATTGGTCTGCTGTCAAAAACGAAAAA
+NODE	4358	19	19	19	0	0
+CCAGTTCGGTCCCTATCTG
+CCTTTAAATGGCGAACAGC
+NODE	4359	47	52	52	0	0
+AATATTACCTTCCTGCTGGCCGTTGGCGGCGGTTCCGTACTGGACGG
+ATTGAGCACATCGCTGCGGCCATCATCAGTGTAAAAGTCGAAAGGTT
+NODE	4360	27	40	40	0	0
+AGGTCACTGTCGATACCCAAATCGGCA
+GTCCCCGCTTTATCTTCGACTGACACA
+NODE	4361	51	54	54	0	0
+GTAATGGTAACTATCGTTCACGCGAAGATGCGAAAAGTCTGTTGCCGCTCG
+CCAAAGACCATAAACTCCAGGATACCAGGCTCATCGTTTGGAATTTCAACA
+NODE	4362	1	1	1	0	0
+A
+A
+NODE	4363	41	64	64	0	0
+ATTGTCGCCAGTTGGTCATGGTATTCGCATCAACGGCTGGC
+ATGGCTGCATTCCGCCGGGTTTGAAATCGCTATAGATGATT
+NODE	4364	47	47	47	0	0
+AACGTTTTTTGCCACCGCGTTGGGTTTAATGATGGAAAAAGTCCGTT
+AGCCATCAGTATTCTTCTCGTTCATAAAATCCAGCGCTTCTGGCACC
+NODE	4365	51	52	52	0	0
+GGTTACCCTCACGAGTACGTTCACCTACGCCCGCAAACACAGAGTAACCGG
+CACTTCTACCACGAAATGACCGACTCCAACGTTATCGATAAAGTATCCCTG
+NODE	4366	43	66	66	0	0
+TTCAAACCTGGGCTGGGTGGTCTGGAGCGATGTAATTCCCCGT
+CGGCAAAGCGCTAAAAGCAGCGAGCGTAGCGCGGGAAGAGCTG
+NODE	4367	51	55	55	0	0
+AGGTAATACTGTGCCGGATGGCGGGTGCGCCTTATCCGGCCTACAAGATTT
+TCTCGTTAACCCAAATCCGCATTTCTCCCTCGCCACGGTTGGCCCAGCTAA
+NODE	4368	40	40	40	0	0
+GTTTAAGCAGCTCGTGGTAAAGTAACGGATTAGACTTTCA
+CCCCCGCGACAATATATCGCCTGCTAAGCTTTTCCGCGCC
+NODE	4369	3	3	3	0	0
+GTC
+CCC
+NODE	4370	74	106	106	0	0
+GAATTATTGAGCGTGGCAATAATATGAAATAAAAATAAATAATTTTATATTTTTTAAACCAAACGGTTATATAT
+TATTATTGCCACGCTCAATAATTCCCCCTACGTTCGCCGCGCGCGCGACGGCGCCAGGCTTGCTCAGTTTGATG
+NODE	4371	51	60	60	0	0
+TGCTTTTATGCATTTAATTTGCGTAATCCGGATCGACTGCAACCAGAGAGC
+AAAAATTGCGCGACTCCGCATTCTTGATGAGTGAGGATTGTAATCATTGAA
+NODE	4372	43	43	43	0	0
+CCCGGACGTCCATGATTATGCTATACAGCTCACAGCGGATGGG
+GCAATCACCGTAGCAATGTCTCTGAGCGCCTGCTCAAACTGGT
+NODE	4373	37	37	37	0	0
+GTCACTCAGCAGGGATAACTTTGCCCTGTTGAATCGC
+CGTTAGCGCGTCTGGCGGCGCTGTCGCTGGCGATTGT
+NODE	4374	119	437	370	0	0
+ACGTTGCATTATCGACTTTGTCCGCACCTTATGAGAAATCAAAGTCTTTGGGTTCTGGGGGGAGTATGGTCGCCCATCCCTAGTTGGCATAGTTTATGGTTGAGACTACGACGGTATCT
+CCATACTCCCCCCAGAACCCAAAGACTTTGATTTCTCATAAGGTGCGGACAAAGTCGATAATGCAACGTTCGCCCATCCCTAGTTGGCATAGTTTATGGTTGAGACTACGACGGTATCT
+NODE	4375	41	41	41	0	0
+ATCGAACATCTGGGCAGCTATGCCTGCCGTAATATTTATCA
+CGGCGCTATCAGGTTATGCTCCTCGGCGATAGGAATAAAAA
+NODE	4376	25	25	25	0	0
+CGCTGATGCGTTGTTGGGTAGGGGA
+GTTAGCCCCGTTACATCTTCCGCGC
+NODE	4377	20	28	28	0	0
+GTTTTATACACTTCCGGCCC
+CCCCGACTGAGTTCAAACAT
+NODE	4378	14	16	16	0	0
+CTCCAAGTAGACAT
+ATTAAGTAGACCGC
+NODE	4379	51	56	56	0	0
+CACGGCGTGCATACGGTACTGGCCGGGTTTGTTGAAGTCGGCGAAACCTTA
+GGCGGTGGCGAACGTGCCGGGCAAGGAGGATCGAATCCTCACGGCGAATGG
+NODE	4380	51	53	53	0	0
+GGGCGGGCGGTTTTGGCCCCGTCCTCGCAGGGATCTTTTGTAACATGACCG
+CCCAGCCCCCCTGCCTCTTTTGAAATCGCCATCCGGGTGAAGCGATTACGC
+NODE	4381	45	45	45	0	0
+AGTGAGGCGGTGGCTAAAGCTTCTCGTCCTGGCACCGATATCTCG
+CCACGCAGCCCTTTACTTGACACCCTCTGTAAACGGCCAGTTAAA
+NODE	4382	51	91	91	0	0
+GGTCCATCGCCGCAGAAAGCATAGGAATATTCAGACGAATAGTTTTCGTCA
+CCCGTGACGGAAGCGCGCCTGGCAATTGCCCTGGCCCAGGAAGGCGGCATT
+NODE	4383	41	41	41	0	0
+TCACATCCTTCGACATTCAACATTACTGGGCCCACACTGCT
+TCGGCGTGATCATCATCCCGGCCATTCTGCTGCTGATCGGC
+NODE	4384	49	63	63	0	0
+AGTGACTAACAGAGATTGGTTATCCGGGCTGTATGTTACTTTACCATGC
+AGCCCGGATAACCAATCTCTGTTAGTCACTCTGCCCCAAGTCTGGATAG
+NODE	4385	40	40	40	0	0
+AGGGGATCGCTGATCATTGAAAAGCTGTCGGAATGCCAGA
+TGAATCTTCGCGATCTCCAGCAGGCCGGTTTTCAGCGGGC
+NODE	4386	35	35	35	0	0
+GATCGCTGAACCAGCCTGCAAGCAAAGTGATTAAA
+TACTCAATGGTGTGGCTGTTAAAACCATCCGCCAA
+NODE	4387	51	72	72	0	0
+ATCAAAAACATTCTGCCGGCACTGTACCGCGAAGCGCCTGAGTTTTATGAA
+TGCGCAGGTTCAGGTCAAAGGCGCGTTTAAATTCAGTGAGCGCGCGCAGCA
+NODE	4388	51	59	59	0	0
+ACGAGGAACTTGGCGAGGAGTTAAATGATGGGAGTCAGGTTTTTTTACAAT
+TCTCTAAAGTTACCATCCCATTGAGTTTGAGTAATCGCAAAAGTATTTGCG
+NODE	4389	46	46	46	0	0
+AACAGACGGCGGCTTACCGAGTCCTGCAACCCATACAGCCCATACC
+CTGTGCGGACCCGTATCTTACCGCCACGCTGATACAGCAGGCGAAA
+NODE	4390	11	20	20	0	0
+CCGTCGGTTCA
+ACCCCGCGCCT
+NODE	4391	124	253	253	0	0
+GCGAGCCGCTTCTACCGAGAACATGCTGAACAGCGAGTTCAGGAAGCTCGAAGAGTCTGTAGACAAGGCATTGAGCTTAAACAGGCAGAAAATCAGAGACGCTATCAGCGAACATACAACATCC
+TCAATGCCTTGTCTACAGACTCTTCGAGCTTCCTGAACTCGCTGTTCAGCATGTTCTCGGTAGAAGCGGCTCGCTCTTTCAGTTTCTTCTCGAAGTCTGTTCCCATTTGTAAAAGATTGCTCAT
+NODE	4392	42	57	57	0	0
+AGCAACGTGTTGGTTGACGTCAGCTACGAATAAAAGGATTTA
+TCCCCACCGGCACCATGACGCCCGGAATACTATTTTTCGCCG
+NODE	4393	51	54	54	0	0
+TGCTGCCGGAGATTAGCGAGGAAGAGAAGCCGTTTGAGCTGCCGGCGGGGT
+AGCTTTTGCTTTTTAATTTTCCCTTGCTTCATCAGCTTGGCCTTTTCCGCC
+NODE	4394	51	63	63	0	0
+CGCATAACGGACAGATTATGTCCGCGATGCCGCATCTATAGACTTGATTCC
+GGGGCGGGCGGCGGCGCGCTGCCCGCCAGCCACTGTGGAAATTCGCTAATG
+NODE	4395	9	9	9	0	0
+AGCAAAGAT
+CCCCGTCGC
+NODE	4396	44	44	44	0	0
+TCGCCTGCCACGACCGCAAAACCGCGCCCCTGCTCTCCCGCGCG
+CCTGTATGGTGAAATCGAGTTCTGGTTTGCGATGATCAAAGTCA
+NODE	4397	51	71	71	0	0
+ATTTTGTTAAAGCGCTGAAGCTGGAAAAACCGCTGGGGATGGGTTACAGCG
+TCCGCCATATCTTCCGTCATCAGATCATAGCTAAACGTTCCTTGCGGGTTA
+NODE	4398	37	37	37	0	0
+GATTCGCGCGGTTTACCGTATCTTCAAACATGATGTA
+GCATTCTTTGCGCGATATGTTATGCCTGGCTTACCGG
+NODE	4399	40	40	40	0	0
+AATGTCGACAGCCTATTAATTAAATAGTCATTTTCTATAC
+TCAGAAAGCGGCGATATGCAGTTTCATCTGGCCATTGCCG
+NODE	4400	41	41	41	0	0
+TAACTGCCGGTGCAAAATCTCCGCCGCGCGCTGAAAATACC
+TCCGCGCTGTTTGTCGAACAGCAGGCAAAACCTTTAACAGA
+NODE	4401	24	26	26	0	0
+GAAACGTGGGCGATACGCTATGGT
+CCCACCAGTCCCGCCCCTTTCACC
+NODE	4402	40	40	40	0	0
+CCCTTGAAGTCAGGCGCGTGATAAGTTCGTAAGCACTTAC
+CCGGACCCTATCACCCATTTGCAAACCGTCGCGCCGCACC
+NODE	4403	44	69	69	0	0
+GCTTCCCGCCTGGTCGCTTTTCGTTGTCCTGATAATCGCCATTG
+TGGATGCCGCATTGCAGGATGAAGTCGCCGCCAGCGAAGGTTTC
+NODE	4404	1	2	2	0	0
+G
+T
+NODE	4405	51	75	75	0	0
+ATTTGATCGGCCATTGTCGTGATCTCTTCCTGCTGTGCCTTATGGTTCTGC
+TCACGGCTGAACTGAACGCAGATAAAGACAGCGGCCAAAGCGTACCGCTGG
+NODE	4406	67	80	80	0	0
+AATCGGCGCTACGGCGGTTCACTTCTGAGTTCGGCATGGGGTCAGGTGGGACCACCGCGCTAGTGCC
+CCGCCGTAGCGCCGATTGTAGTGTGGGGTCTCCCCATGCGAGAGTAGGGAACTGCCAGACATCAAAT
+NODE	4407	4	4	4	0	0
+GGTT
+CCCT
+NODE	4408	12	12	12	0	0
+GGATAACCGTAC
+AATCGCTAGCAC
+NODE	4409	117	178	178	0	0
+AGAATGACATACTGAAGTCGCTGAACAAGTATGCGACAGATAAAATGCGTGTTGGCCGGGAAGGTTACGAGCGACTTCAGTATGTCATTCTCACTGAGCCCGAACACGGAACGGCCT
+TAACCTTCCCGGCCAACACGCATTTTATCTGTCGCATACTTGTTCAGCGACTTCAGTATGTCATTCTCACTGAGCCCGAACACGGAACGGCCTGAGGCCACATCGTTATGATACTGA
+NODE	4410	52	56	56	0	0
+TGTCGCGTTTTTCATTCATTTTTTGCTGTGCCTTCCATTGCGAAAGATGTAA
+CAATGGCACAAGGGCAGAACAGAAACCGGTGCAGGCGCAAATGCAAGTAACG
+NODE	4411	4	4	4	0	0
+GAAC
+GAAA
+NODE	4412	51	60	60	0	0
+ACTATGACGGTCTGTTGTATAACACTGACTACATCAAGAAAACTCTGGATG
+TTTGAGTTAGTAATAACAGCGTGGACCGGCCAGGTTGCGTTAGGCGTCTCT
+NODE	4413	51	63	63	0	0
+TGCACGGAGTTAGCCGGTGCTTCTTCTGCGGGTAACGTCAATTGCTGTGGT
+AAGCAGCCGCGGTAATACGGAGGGTGCAAGCGTTAATCGGAATTACTGGGC
+NODE	4414	43	69	69	0	0
+CGGTTCAGGCTAAAGCCGGGCGTATTTTAGCTGTCGACACGAA
+TTCGTCGCAGTATTCCGCCACCACCTTTTTCAGGCGCTCGCGT
+NODE	4415	14	14	14	0	0
+CCCTTGGCAAGGTC
+ATTTGAAAGTGCTT
+NODE	4416	46	56	56	0	0
+CGAGAACAATTCCTGTAATAGCGAGCCATCTTCCTGATAGCTGATC
+TTGCTTGGCACTGGCCTGGGCGGCGAGAGGTTATCGCCCGTTGAAT
+NODE	4417	44	88	88	0	0
+CGCTGGAAGGCAGGTAAATCAGGCCGCTGGTAACGTTACGTTCA
+CCTGAAAACCCCAATGATCCGTCGCCAGCGTGGCGGCAAACTGG
+NODE	4418	29	29	29	0	0
+TGCCATTCACATTTAGAGATCATCCGGCA
+TACTCACGCGTTGAGAGACTTTCAGTTCG
+NODE	4419	51	64	64	0	0
+GTGTCTGATGAAAAGTGAATAGCAAGGCGTCTTGCGATTGAGACTTCAGTG
+CTCTGTGTGAGCACTGCAAAGTACGCTTCTTTCAGGTAAGGAGGTGATCCA
+NODE	4420	8	9	9	0	0
+GGAAGTGG
+CCCGGCTG
+NODE	4421	45	57	57	0	0
+AATATATTGTTGCATTATTGGTGTTTTGTGTTGTACTTAGTAGTA
+GGTCATTCTCTCAGAATTGCTGTGGGTGTGGTTGCCGGGAAGTAT
+NODE	4422	42	42	42	0	0
+GTTCATAATGATTGCATCAGGATTTTGCCACCCGCTCCCGGT
+CCCCGCCAATTAAATTGGCCCACTTGCACAGCGCTTGATAAT
+NODE	4423	43	43	43	0	0
+CCGGCGTCACGCTGCACTTACATATTCCCGAAAGCATTACGCT
+AAAGCCCGGTTTGTACCCGCACGCTTCCAGTATCCAGGTCGCC
+NODE	4424	38	38	38	0	0
+CTCATCACCGAGAAAATCCGCCACGCCTGCGGGGCTCA
+CAGTACCAGATTAAGATCGTCGCGGCTGAGGTCGTTTA
+NODE	4425	51	70	70	0	0
+TAATCCGTGGCGGATGCGTACCGGCTGGCGCGCGAATTACCCGACATTAAA
+AAACAACAATAAAAAGTTTATATTTATCGGTAACGCCGCTTTTTATCGCTT
+NODE	4426	18	35	35	0	0
+GATAAGAATGATTAGAAT
+CCCCCGCCCGACGATGGC
+NODE	4427	39	39	39	0	0
+CCACGTGAAAAAGATGTCCTGATGTTGACAGAATATGTC
+ATATTCCCGTCCAGCCAACACCTTCTTTTGCCAGCCCGG
+NODE	4428	51	52	52	0	0
+TGCTCATTGCCTGCCGCCACGTCAAGGATGACGATCTGTAGAGGGTATTTT
+AAAATGTGAACGCGCCGATTTTATGCCCACGCCGTTAAAAAGATACGGGGG
+NODE	4429	35	55	55	0	0
+GTTTTTTTTGCTAAAGATACTCAACATATTTTGCT
+TCCCCAGCCGATAATAATGGAACTAATCCATTTTC
+NODE	4430	51	116	116	0	0
+GATTTACCGAACGGGAAAGTGGTTAACAGCGCAGGGCGGCCCGTGATATTG
+CCCGCGGTAAGGCGGTATCTGAAGTCGCAAAACGCGATCCGGGCTATTTAC
+NODE	4431	51	77	77	0	0
+AGGCTACTACAACTGCGATTTTACGCAGTGAAGAGTTTGGCTGAGCAGTTT
+TCAGCGGTTAGCGGCATGTCTGTCTATGCACAGGCGGCGGTTCAACCGAAA
+NODE	4432	40	40	40	0	0
+GCTGTATAACGCTAAAAGCTACGTATCGGTGCGCAAAGGT
+ATTAATGCCATGTTGCAGGACTATGAACTGCAGCGCCGAC
+NODE	4433	42	55	55	0	0
+GCTCTGTGATGAATGACCAAATTTATCAGCGGATAGAAGACA
+CCGATTCCCCAGATAAACAGCGCCAGTAACAGCAAAATGACG
+NODE	4434	91	102	102	0	0
+AATCCGGCTTTCGCCGGATCTGATATCGGCCGCTCCAATAGCGCGGGGTCTTGCGATCCCCCGCTTTCACCCGTAGGTCTCATGCGGTATT
+CTATTGGAGCGGCCGATATCAGATCCGGCGAAAGCCGGATTAATACCGCATGAGACCTACGGGTGAAAGCGGGGGATCGCAAGACCCCGCG
+NODE	4435	43	43	43	0	0
+GCTGTTGCAGCTTTTCCACCAGCCAAATGACTACCGGGGTTTT
+CTGTTCTGATGTCTAAAACCTTCGATAACGGCGTAATCTGTGC
+NODE	4436	35	35	35	0	0
+GTTTTTTTTGCTAAAGATACTCAACATATTTTGCT
+CCCCCAGCCGATAATAATGGAACTAATCCATTTTC
+NODE	4437	5	10	10	0	0
+GGCTC
+ACCGC
+NODE	4438	51	98	98	0	0
+GGAACAAGGTGTCGCCGTTAATCTGGCGGCTAGTCGCCGCTTTGTTACCTG
+CAAGTGGGAACCGGTTAACGAACAGACCATTTTGCGGTTGTGACCTTGCCC
+NODE	4439	44	49	49	0	0
+CGGATGCAGACCGCCTTTCTGGCGAATGGTGCCGATTTTGTCGC
+GGCGCTGGAAATGGTGCGCTCAGGCGAGATTCGGGACGGTAAGA
+NODE	4440	11	11	11	0	0
+TTTTGGACGTG
+GTTCTCATTTG
+NODE	4441	3	3	3	0	0
+AGC
+AAG
+NODE	4442	11	11	11	0	0
+ACATCAAATAA
+CCCATCGGCGC
+NODE	4443	49	59	59	0	0
+GGTGCTTATTTCTGAAATATTCCCTAACCGGATGAGGTCGCAGGGAATG
+GCGTAGAAAATCATAAAGAACAGCATACCAAATAGCGCGAAATAACCGG
+NODE	4444	51	69	69	0	0
+TACGCCTGTGAATGTCCTTTCGATGTTTTCAGTTATTACCCTCCTGCAGAA
+AAAATCCAGAACCGCAAGCCTCTACTTTTCCCTCGTGATGGAAGGTCTTGC
+NODE	4445	51	58	58	0	0
+GCAGCGCCATACCCGCTTCCGGGATATTGGAGAGCAGGCCGCCGAAGCCAA
+CCCGCGCTGGAGAGCCTGCTGGCGCATCACGACGCCGGGCAGCTGGCGGTG
+NODE	4446	45	45	45	0	0
+AATAAACAAATCTCCCCTGAACATCAGGCTATTCTGTCGAAACGT
+TTGGCGGCATTGTCGGCTGGTGCGATGCCGAAGGAAACGGCGAGT
+NODE	4447	42	64	64	0	0
+AGTCCTTGCACGCTCACGATGCAGGGGACGGGGATTGCCGAA
+CCTACCATAATGATCGTATGCAGCCAGGCCATTTTTTCGATG
+NODE	4448	42	74	74	0	0
+GGCGTGGGCGAAAACCACTGGGGCGGCCTGGCCGAACGCGCA
+CAGCACATCAAGCGCATACTCCCCGACCCCTATAAAACTCCA
+NODE	4449	43	65	65	0	0
+ATTGATAGCCCCGACCGCGCCGCTTTGATCGAGATTGATCGCG
+CCCCTCCTATGGCATTAACCGATACCGCTATCCGCAAGATCAA
+NODE	4450	35	35	35	0	0
+ACTCCGATTATTGAAGCGTCATCAGGCTCAACGGC
+TTCGCCGGGAATAAAGCCCGGTTTACCTACGGCGA
+NODE	4451	51	62	62	0	0
+GATTTTTATGAATGCAGAAGGCGATCTTTTTGCTTGTCATATCAGCAAAAT
+CCTTTTTCTTCCTGCGGTACAGATATCCAGCTGCGCTGGCCACTGCTGTGT
+NODE	4452	45	45	45	0	0
+CGGGGCTGGCGACGGAAAGCCTGTCGGCGCATATCGGGCAGCGTA
+ACCGGCTCCGGAATCGTATATTTCTTCAGTAAGGAGACAGACTGG
+NODE	4453	45	53	53	0	0
+AAATACGATTAATACGGCGGTTCAACAGCGTACCACGGTAGGGCT
+GTTGGCCGCCAGCAGATCATCACGCAGCGCTTCCGCCACACGAAG
+NODE	4454	43	43	43	0	0
+TCATAAATTTGCCAGGTAACATACCGCCAGGTATCCACGCGTT
+ACCGTAAACAAAAACAGCGTGCCGAACGATCCTAAGAGCCCAT
+NODE	4455	38	38	38	0	0
+CATTGTTTTTCAACAGCGGCCCGACCACGATACTGGCG
+CCTTTAAGCCGGAAGACTGGGGGATGAAGCGCGGGACT
+NODE	4456	24	24	24	0	0
+GCAACACCTTCCTCCCCGCTGAAA
+TCCCGCAGAAGAAGCACCGGCTAA
+NODE	4457	51	56	56	0	0
+CTAGCAGCGACCCGGATGATCAAAACCGTAACTGATGTTCTTAGGTTAACG
+GAGCGATGAGGAGTAAGCCGCCTTTAGACGTAATTGGCAAATTAATCCATT
+NODE	4458	51	60	60	0	0
+AGCGAAGCATTTCTCGTTCATCGCACTTCACGAAAAAATCATGGCCTGCAT
+TGTTTTACCGCTGAAGCCGATCAGCTGGAGCTGCTCTCCCGCAGTAAAACC
+NODE	4459	15	15	15	0	0
+GCACAACCGCAAAAT
+CCCCTGCCATGTTTT
+NODE	4460	12	12	12	0	0
+GATAGCGTTCCC
+CCCGTCCTGCCG
+NODE	4461	47	63	63	0	0
+GTATATCGGCACTAAAGGCTTTACCCAGCGCTCTGGCATCTTGCGCA
+TTACAATCTCTATTCCAGTAATACGGTGCGCACCATCCAGTCGGCAA
+NODE	4462	51	76	76	0	0
+ACAAGCTCTTTTTCAAGCTGCCGAATATTAAAACTCACTACCGCTTTTGTT
+TCGTAACGTTACTGCTACGTTCCACCCGACGATTGACGCTCACAGACGCTG
+NODE	4463	51	57	57	0	0
+ACGTGCTCTACCAACTGAGCTATTCCCGCAAATTTGTTGCTGTCGTAATTC
+TCCTTGCCAAGGTCGGGGTCGCGAGTTCGAGTCTCGTTTCCCGCTCCAAAT
+NODE	4464	40	40	40	0	0
+GTAGCCTGTATTCCAGTTGTACTGGCCTTTGGCGCTTAAT
+TGAAAGGCTGGTAAGTTTTAGGCTGATTCCACAATCTGTA
+NODE	4465	28	28	28	0	0
+GTGCGCTCGTTGCGGGACTTAACCCAAC
+GTTAGGCCGGGAACTCAAAGGAGACTGC
+NODE	4466	40	40	40	0	0
+GATACAACTCATCCACCTTATCCTGGCAGTCCACGTAGCT
+TGAACAGTATGGGATTTACCGGCGTGTTGATCGATCTCGA
+NODE	4467	36	69	69	0	0
+GCGGTAGCTGACGTACTGCAGCTCGGAATTACCGCT
+TTTTGACCGACTGGATGCGGACATCGCCCATGCGCT
+NODE	4468	41	41	41	0	0
+CCAGTGACTGAAGTATTTCTTCGCGACGATTCCTTTTCGCA
+CTGCTTCAATCATTGAATCACCCGTGGCTTTGACAAAATAT
+NODE	4469	8	8	8	0	0
+ACTATACC
+CCCCGCCA
+NODE	4470	39	61	61	0	0
+CGAAGAGAGCTGTTCGCGCTGCGTGCGGGTATGGCGTTT
+CTGGACAGCTATCGACAGTTGTTGGATACGTTATTTGCC
+NODE	4471	42	42	42	0	0
+TATTGATGAAAGCAAATGCGGGAAGCTAAGCGAAGCGTTCGT
+GTCGTCATCGACCGTGATCGTAATACCGTCTTTATCCACCGA
+NODE	4472	42	42	42	0	0
+TGCAGTTCCATTACGCGGTGGGGCTGGCGCAGATAACTGTCA
+CACAGATCGACCGGTGATAATTCGCTGCGATGCGCCTGGCGT
+NODE	4473	7	7	7	0	0
+TTTTGAT
+CCCCTCG
+NODE	4474	41	41	41	0	0
+GTAATCGAAATGAATAACTTCTACACCCTCACCGTTTATGA
+AGCGCTCATGGAGTTACGAAACACCGCGTTTCATCTGTTAC
+NODE	4475	45	60	60	0	0
+ACCATATCGTCGTGCTGCCGTTGTACCCGCAATACTCTTGCTCAA
+ATATGGTCGACGTCGCTTGCTAACAGTTCATCGACAGCGCTTTCC
+NODE	4476	43	43	43	0	0
+ACGCTGGTGACCTCCTTTATCGCACTGCTGATCGCTGTTCCGG
+GCGCACCAGCCCATACCACAAGCAGGGTAAAAACAGTAACCAC
+NODE	4477	47	75	75	0	0
+CCTCCAGCGTTACGCGCTGCAAATACTGCTTTTCCGGCAGCGCATAA
+CCGCGACGCAAATCGTCATCGTCCATCGCTGGCAGGTCGTCATGGAT
+NODE	4478	44	44	44	0	0
+ATCCGGCGTCGGCTATGCGACGGCCATCGGCGCGATGATCATTC
+GTGTTTGATGACGCTAATGTACGCGATCGCGCGCTCACCGACTG
+NODE	4479	2	2	2	0	0
+TA
+GT
+NODE	4480	5	5	5	0	0
+TAAGC
+CCGCA
+NODE	4481	1	1	1	0	0
+A
+T
+NODE	4482	40	60	60	0	0
+TAGCGTCGTACAGCGCACGCTGTACTTCCGCAATGCTTGG
+AAGCGTAATTTCCCCGGAATTATAATTAAACATCGTTTCT
+NODE	4483	4	4	4	0	0
+TTAT
+GCGA
+NODE	4484	41	55	55	0	0
+GCAAAAACAAGGACTGGTCGAAGGTATTAGCGCGGATTCCG
+TGGTGAGCGTCTTGATGAGTATGTGGACTCCAGCTTGTTTT
+NODE	4485	40	40	40	0	0
+ACGCGCGCCTTATTTATAGAGGTCGGCGCTGATGGTGATG
+TACCAGGCAATAAATCCGACGATTCCTACCACGCCGAGGA
+NODE	4486	41	51	51	0	0
+GGTATACATATCTTCACGGGAAGAAATATCCCCTTCGGCAG
+TGCCGTCGGCATAATTTTTACCAGCCCACGGTAGCTGTTCT
+NODE	4487	1	1	1	0	0
+G
+C
+NODE	4488	44	68	68	0	0
+ATGAAGTAACGGGTTCGGACGCCAATGTGTATCCGCCGATGAGT
+CCGATGCACGCGCCAGATCGCCACGTTGCTCGATAATCGCGTCC
+NODE	4489	4	4	4	0	0
+CCCT
+CCCC
+NODE	4490	51	96	96	0	0
+GTTTATCGAGCAATGGCGTGACCCTGAGTGTGGCGGCGTTCAGCCGGGGGT
+CCCCGGCAGGGTAGCTATAACACGCTACAGTTTGAAATTCGCGGACAAATT
+NODE	4491	36	36	36	0	0
+GGCGCCCATTCCACCTGCCGCGCCCGCGCCGGGAGC
+ACATCTGTCATGCTGTTCCTTCCTGCTACAGTTTAT
+NODE	4492	43	69	69	0	0
+TCGCTAAACGTCGGCAACGAAGGCGCGATAAAGCCAGCCATCG
+CCGGCGTATTGGGCGGATGCCAGCAAAGCCGATCGCGAGCTGA
+NODE	4493	51	65	65	0	0
+AATATTGTCACCACCTGTAGGAACGTTGCTCTCTGGTTGCAGTCGATCCGG
+TCCCTACTATCCTCTCAAAACAACATCATTTTGATAACAATTAATTTACTT
+NODE	4494	4	8	8	0	0
+TGGC
+CCCC
+NODE	4495	7	375	7	0	0
+TGTCAGA
+TCCTGCC
+NODE	4496	40	40	40	0	0
+ACGCCATGTTGTCGCGCAGGTAGTCAAAACCGTATTCGTT
+GATCATTGCGATTGCCATTGGTTCCGGCGCCATTGGCTGC
+NODE	4497	41	54	54	0	0
+ATACAAACTAACGCCTCTTTTTCGTTAATGTCATTGCTGGA
+AAGGCGCAATTGAAGATAGCGTCCACCGCTGGCAAATCCAG
+NODE	4498	40	40	40	0	0
+GCCTGGCTGGAGAGCTACGAAATCCGCCTCAACCCGGTGT
+AGTTGAACGGTATACAGCGTTGGCGTAACGTCAATAATCT
+NODE	4499	39	39	39	0	0
+GGCCAGTGCAGCATCGGCGTTTCTACGAAGATCAACTGC
+AGGACTCAGGTATTCAGGGGCATATGACTGATAAGCAAT
+NODE	4500	29	31	31	0	0
+ACCGGTGACCTGCACCCACTCCCCGGCCT
+CCCCTGCTGCGCCTGCTGACCGGGCTGGC
+NODE	4501	35	35	35	0	0
+AAGTATGGCCCCGCTGTTGTCGCGGCCTACAAGCC
+TTGTGGCTTGGAGGCAATAAAGTGAACTATTCTGC
+NODE	4502	40	46	46	0	0
+TTCTCCGCCTTCATTCCCCAGGCCAGCCGCGCCCGATTCA
+GTGATGTTGAAAAGCGCTCTTTGGCAGCGGGACGTAAATC
+NODE	4503	51	85	85	0	0
+GCTCTACCGAACTGGGCGGTGAGCGTATCGATATCGTGCTGTGGGATGATA
+CCCGCCTGAACGCGCGCGCCGCGCATCCCCACGCAAGCGCCGACCGGATCG
+NODE	4504	17	32	32	0	0
+GTATAACGGTTCATATC
+CTCGTCACACTATCATT
+NODE	4505	45	45	45	0	0
+ATCCAGCACTCGCCCGTGTTGATCGTAGTTCAGACGGCGCAGCAA
+GATTGTCGCCGAAGAGGCGAAGGGAAAAATCACGCTGATCGCCCA
+NODE	4506	14	14	14	0	0
+CCCGGGCTGGATAT
+CTCGGTGGCCGGGT
+NODE	4507	25	29	29	0	0
+AAATATCGCCGCATACTTCCGCGAG
+GGTCGTGCTCAGTACCTGCCAACGT
+NODE	4508	10	10	10	0	0
+GGATGAACGA
+CCCTTCACAA
+NODE	4509	46	46	46	0	0
+TTACGCGAACACCTCATCCCGCAATTATCTGCATTAACGGATACGC
+GCTGGTGTCACGGCAACCTGATGAACTTTCGTCTGTTCCTGGTGAA
+NODE	4510	43	60	60	0	0
+ATCGATCATGACCTGCGGCATCAGTCCCGCTTTGATGAGGCCT
+CTGCCAACTGGGAAATCAGGCGGGCAGGCTGGGCGCCGTCTGG
+NODE	4511	44	50	50	0	0
+CCAAGCACTTCACTCTGAAGTCTGACGTACTGTTCAACTTCAAC
+TCTCCGGACTGGCGCTGGTGGCGGTCGCGTGCCATACGTTAACC
+NODE	4512	1	1	1	0	0
+T
+A
+NODE	4513	47	62	62	0	0
+AGCACCACGGCACCCAGCATAATAACGCGTTTGGTGCCCAGAATTTT
+GTATCTCATTAATGGTCGGGATTGCCGCCGCGCTGGTGGCGGTCATT
+NODE	4514	4	4	4	0	0
+TAGA
+CCTG
+NODE	4515	44	44	44	0	0
+TTCACGTACTTTCTCTACGTCGCTGCCCGCGCCAGAGGTGCCGG
+TATTCCTGAACTTTCTCGATGCGCTCATGGTCATCAACCGGGAC
+NODE	4516	20	20	20	0	0
+TTCCCGGACGATCCGGCGTG
+CCCGGCTTCGTTGGCACGCG
+NODE	4517	43	62	62	0	0
+ACTTTCAGGTCGCTGCCTGCTGGCACTTTGCTGATCACGCCAA
+CCGGGCGCTGCTGGGGCAAAACGAGACGGTGGTGAACGGTCTT
+NODE	4518	37	37	37	0	0
+GATACATTTCAGCTATGTTATTGAATAAAAAGGCGCT
+CTGTCAGATTAGCTGTTTTCATGCTTTGAGGTGGTTT
+NODE	4519	46	67	67	0	0
+TACGCGCATGATTTTGCATACCCATGCCTTACTGGGCGAAGTGCTG
+AGGCGGCGCGCGGCGCATCGATAACCTGAATAAAACAGACCGCATC
+NODE	4520	43	53	53	0	0
+ATTTTCGTCGTCCTGCGCTTTGGCGAACTGATTTATCGCGACA
+CAGCCCGCTTTTAACGCCTCATCGCCCAGGACCGTAGCGACCA
+NODE	4521	43	50	50	0	0
+ACGGGCGTTGCGGGTTTTGGCGCTTTCGCCGGTGATAATGATA
+GTACAGCTTACTCAGGACGGAATGGTTTACTACGAACGGGCAA
+NODE	4522	46	46	46	0	0
+AGAACCGTGGTCAGCTCCACCCGTTTACGTTTCAGGCTGTCCATAT
+ACCACGGTTCTGCTGGGTGCAGGCCTGCAGCCGGTGCGACCGGAGT
+NODE	4523	41	41	41	0	0
+TACGCCCGATAGCGCCTTCTTCGTCAACCTCATCAACGATC
+CTGGAAAGCGTACCCGATGTCTGGCGCTGGCTGGAGCAAAT
+NODE	4524	48	63	63	0	0
+AGAGGCGTAAACAAGGTGATTCTCGTTGGTAATCTGGGCCAGGACCCG
+CTCTGCTGGCCATAATTGAGTCTCCTGAATACGTTTCATAAATAGTGT
+NODE	4525	20	22	22	0	0
+GGTTGGAAGGGCAGAAAGTG
+CCCCGCCGTCGGAGAAGTCA
+NODE	4526	44	44	44	0	0
+GCTGTTCAGCGAAAAAGCGCGCCCACTCGTCATTCACCAGGATG
+GTTCGGCGGAACGCTTCGCCCAGCTCTACACTCAGGTTTCCGGC
+NODE	4527	44	54	54	0	0
+CGAAGAGGAGCTGGAGCCTGAGTTTCTGGAGCTGCTGGATGAGA
+GCGCGCAGTTGCTCAATAACATCGTTGGTCGGGTTGACGTAAAC
+NODE	4528	45	45	45	0	0
+CCCCAGCGCAAACGACGCTGACTCATCACATCGTAAATCAGCGTG
+GCGTAAAACTGAATATGGACGGGTTAACGCATATTGAAAGTTATA
+NODE	4529	51	56	56	0	0
+GAGAGAGCGCCGCTGCCGGTTCGCTGGGCGATTCATCAATAACGACCGTTT
+CATGAAAATTATGTCACGATTCTGGACGACGTTACGCTGGAAAGCTGGATT
+NODE	4530	38	38	38	0	0
+TGCGCTTCTGGCAACAGGGCGATAAACGCCTGTTCCAG
+GGACATCTGTAGCGGCAAAAGTCTGGCCGCCGGATTTC
+NODE	4531	40	40	40	0	0
+AGCGTGTGCCACTTCCTGGCCATCTATTTGTATGTGGGAC
+GCCGCGCCAGCCGCCGCGCCAATCAGCGCGCCTTTACCGC
+NODE	4532	45	45	45	0	0
+CAATATTTTGCTGAATGTAATATTACGGAAATCTGCGTTTGAAAA
+AGCTTCATGAAGCGAGACGGCGATATTATCAAGGGGTTCAACTTT
+NODE	4533	5	5	5	0	0
+GTCAA
+GGTAA
+NODE	4534	41	41	41	0	0
+TTGGCCCAGACCTCTTCGCTGCCCGCGATCTCTTCCGGCTT
+CGGTGGTTTCATCCCATGCTTATTTATGGATGACGGCGGGA
+NODE	4535	21	21	21	0	0
+GCATCCGCTAATTTTTCAACA
+CCCGGGAGATAGCTGGTTCTC
+NODE	4536	44	51	51	0	0
+TCTGCCCGTCGAGTCGGTAAGTAAACACCCAGCTAATGCCACCA
+TCGGCTGGTTAATATCAATCGGCGCGCCCTCATGCGGGGCTTTC
+NODE	4537	47	47	47	0	0
+TTTCATCAACGTCCTGCCATTGCGGGATTGTCCAGCCGGGTAGCAGC
+ATTGCCGAAAAAACTTACCCTGGCGTATCACCTTCCTGTAGAGCTGC
+NODE	4538	40	74	74	0	0
+CAACCAGTTCAACCTGTAACGTCTGCTGGCAATATTGCCG
+TTTTTGGAAAGCGGCGCGCTTATAGAGAAGAAAGTTGTAG
+NODE	4539	46	46	46	0	0
+ATCCTCACCGAATAACACCTGTCTGACCTGGGCGGCATTGACGACC
+CGAACGTTTCATTTTTCGCTTCAACAGTAACGGTTTTTGCGGATAC
+NODE	4540	38	38	38	0	0
+GCTCAGCACGGGTCAACAAACCGTCATAAATAAACTGT
+GGGGAAAACAGCAAGATGTCGTGGACCCAGTCGGAAAC
+NODE	4541	39	39	39	0	0
+GATCGCCCTGTTTGAAAACAGCATGGCGCGACTGCGTTT
+CAACAATACCAGGCCAGCAATAAAATCGTTCCACCAGGC
+NODE	4542	37	37	37	0	0
+AGCAGGAACATCGTGTCCTGGGTAACATCCTGGGTTT
+GCAAGCAACGACAATGAGTCGTTAGCAGGCGCTGAAC
+NODE	4543	41	41	41	0	0
+CTGCGCCAGTTCATCCAGCAGCAGGCAAGGCATCAGGCTGG
+TTGCAACGTCAGGGGGAAGAAGATTTTCTTGCTTTTAGCCG
+NODE	4544	51	65	65	0	0
+AGCCATTTTTGGTGAAATCGGCAAACGTTTACCGATCTTCAATAAATATAT
+TCCCATCACAAACATAAGGGCAAAACCACCGACTAAGTCAGTCGGTATAGC
+NODE	4545	51	59	59	0	0
+ATGTGAGGTTAAGCGACTAAGCGTACACGGTGGATGCCCTGGCAGTCAGAG
+TCCCGAAGATGTTTCTTACGATTCATCGTCGTGTTGCGAAAATTTGAGAGA
+NODE	4546	39	62	62	0	0
+GCGCGCGTCATCTGTGAAGAGGGTCACGCCGGGAATGTC
+ACAGATGGGGCGTCTGTTTGAAAAAATGCTCATGCTGTC
+NODE	4547	40	58	58	0	0
+CGGCATCACGTAGCTGACGCGCTTTGAACAGGGAAACATC
+TGATTTACTGAAACCGATCAGGCCCGCTTTCGCCGCAGCG
+NODE	4548	41	45	45	0	0
+TATCGTGGTCGGGCCGCTGTTGAAAAACAATGTGGAAGCGC
+GTGCGTATGCTGTTTCATACCGTGTTTGTGGTCAGCGCGTT
+NODE	4549	18	831	18	0	0
+TCAAGCCAGCAACACGTC
+ACCCGCCTGTTCATTATA
+NODE	4550	42	42	42	0	0
+GCGTCATCCTGCCAGGCGTCTGCAATCGTGGGAAATTATATT
+CTGATTGTGCTGTGCGGCGTCACGGGATTGTTTGCGCGTTTG
+NODE	4551	46	58	58	0	0
+GCTGCTGCTTTTTCGAATTCAGCTTTGAAGTTGTCAACGGAACCGA
+ACTTCGGCGGCTGGCGTGCGGCGCTGAAGATTTGTCTGGTGATGGG
+NODE	4552	51	69	69	0	0
+TTAAAGTCACCGCCAGCGTTCAGCGCCAGCGTGGCGTTGTCGGTGACGTCG
+ACAACAACATCGGCGGTACGGGCCGCGTGGAAAAATCCGGCGACCAGACGC
+NODE	4553	48	50	50	0	0
+CTGCTGGTGTGCACCTGCTGGGTTCAAGCAATTCTCCTGCCTCAGCCT
+CCGGCTAATTTTTTAATTTTTACTAGAGATGGGGTTTTGCCATGTTGG
+NODE	4554	45	52	52	0	0
+GGAAACGGCGGTGGTGGAACTTGCTGATATTATTGGCTCTGGGCT
+TCGATGCCGTTTACGTTCAGCTTCGCGTTTTCTGCTTTCACCAGC
+NODE	4555	41	65	65	0	0
+CCCGATCTCCCCTGTGTCGCCTCTGAAGCCGATCGCCAATA
+TCATTACGCCATTCGTGCAGGTCGGAACTTACCCGACAAGG
+NODE	4556	39	61	61	0	0
+CGCAGCTATTTTCCAAAAGTACCTGGCGGTACGGAACTG
+TTTCCCGATCGTTCATCGCGTCGCCAAACGCCATGCAAT
+NODE	4557	3	3	3	0	0
+CCC
+AAC
+NODE	4558	43	43	43	0	0
+TCCCCTGCAACATAACTGCCTGCGTCATGACGCCTCCCTGAAT
+ATCGGTATCGTTCTGCTGGCGCTGGGTGGGTTGAAGCCGATTC
+NODE	4559	44	44	44	0	0
+CTTTACAGAACTCAATATAGCGTCCGGCGGCATCGACGATGCGG
+GCTAAAACAAGACGATGCAACCCGTTCTATCGTATTTGTACGTA
+NODE	4560	51	58	58	0	0
+TGGTTATTTTGATGGTGTTATTCAACATTCCGGGCTGTGAAAACGCCTATC
+AATTTCAAGTCTTCCAGGTCAACCTCTGCGGTATCCAGCGCCAGCACACGC
+NODE	4561	45	45	45	0	0
+GCAGGTTGGCGGGCAAATCGCCCTGTTCAAGCCGGGAAAGCGGCG
+TGTGATTGAAATCGCGGTTAAAGGCATGCTGCCAAAAGGCCCGCT
+NODE	4562	16	16	16	0	0
+TGATGATGATGAGCGA
+CCCCGCCGTCACCGAA
+NODE	4563	39	39	39	0	0
+ATTCGACGTCGCGACGTAAAAGCGTTCAGTTTTAACGCG
+GTCACTATCTCTTACCTGTAATTCAGTTAACAGAGTCAC
+NODE	4564	51	57	57	0	0
+TAGGCGAACCCACGCTTAAGTAAGCAATTGATGGAGTAATTTTTACCCCTT
+ATATCAGGCGCATCAATTTGAGCTCTGCTGGCGTGGGTTTTTCGCGTTTCG
+NODE	4565	45	45	45	0	0
+CTACAAGCCTGAGATGTAAAAAATGATGCATTTTTTTCAAACTCA
+TGCAGAAAAATTTTCTCGATCAAGATTTGAACAAGAATTTAAGAA
+NODE	4566	43	65	65	0	0
+AGACGCTTTTCAGCGTCTCTTTTCTGGAATATTGGTACCGAGG
+TCGTCTGTTGAAACTGCTCTCAGAGAGGAGGTTGAAGCACGCT
+NODE	4567	47	47	47	0	0
+TGTGTTGTTGGGTAGGGGAGCGTTCTGTAAGCCTGCGAAGGTGTCCC
+CGTCGCTGCCGCAGCTTCGGTGCATGGTTTAGCCCCGTTACATCTTC
+NODE	4568	44	59	59	0	0
+GCACGCCAGGCTATCCGCCACCTGATACAACAGCCAGTATGGAT
+TCGCCGCAGCCTGAAATGTCGATGTCCGCTTTCAGTTATTTAAA
+NODE	4569	39	55	55	0	0
+ATTGTGGGCGCCAAGAGAAAAAGATGTCATTAACCTTGT
+ATCGGCGTCTGTTCGTCGTCTGGCCCCTTTTCTTTTTTC
+NODE	4570	43	70	70	0	0
+ATATTTTGCTGCCTGCGGTCGTACGCTTTGTGGATTTTGCCAA
+ATGCTGCTCTTTAGTGAGGTTCAATTCTCGTATACTCATGCAG
+NODE	4571	45	60	60	0	0
+TGACGGGATCGCTGGCAAATGCCATGCCGGAAATCAACGTCGCAG
+GGGGGCGACTAACCCGGAGCTGACCCAGCGCGGCTATCAGTACAT
+NODE	4572	102	140	140	0	0
+CTTTCCCTGCTAAACAAGTGTCGGTTTATAAGCTTGTTCACAACTGGAAAACATGTGGTTGTTAGTGAAAACTGCACAGGATAAATTGGCTTTGTCTTGATG
+GTTTTCCAGTTGTGAACAAGCTTATAAACCGACACTTGTTTAGCAGGGAAAGAGATAAACTGGAAAACATGTGGTTGTTAGTGAAAACTGCACAGGATAAAT
+NODE	4573	38	38	38	0	0
+ATATCCTTGCAAAATCCAGCCAGTCGTCCTCTTTTCGA
+AGGCACAGAGCGAATGCGGCAGTCGATAGTCAGTTCAT
+NODE	4574	4	4	4	0	0
+CCTT
+TGGA
+NODE	4575	43	44	44	0	0
+AGCGTTAAGGCCGCCGACAGTTTTTTCTATCGGATTGGTCAGC
+GCATCCGGCAAACGAATGGTATGAAACCGTTCATGCAGCATCC
+NODE	4576	43	43	43	0	0
+AGCCTGATTCTGGCCTTTTTCTACCTGGTGGTGATCGGTACGT
+TTTTTCAGCGAACCGTTACCGCCATTATTTAGCTATTTCCCCG
+NODE	4577	7	7	7	0	0
+GTCCGGC
+TCCCAAC
+NODE	4578	14	14	14	0	0
+TATAATTGTGAGAG
+CCCTGCCGCTGCTG
+NODE	4579	42	65	65	0	0
+CACCAAAGGCGGCACGATCCTGTAACCCATTAAAACTGGCGC
+CGGCGTCATTAATACCTGTTCATCGGTGATACGTACGTTATT
+NODE	4580	42	42	42	0	0
+CGCCTCTGCGCTCGCCAGCGCCCTGCTGGGTCTGAAATGCCG
+TGCGCCGCCGGTTAGCACGTCGCAGATGCTGGGGCCTTTACC
+NODE	4581	47	76	76	0	0
+GGCACCTCGATGTCGGCTCATCACATCCTGGGGCTGAAGTAGGTCCC
+ACCGCCGTCGATATGAACTCTTGGGCGGTATCAGCCTGTTATCCCCG
+NODE	4582	15	15	15	0	0
+GATCCTGTCTGAATA
+TATGCGCTTTTGTGT
+NODE	4583	38	38	38	0	0
+GCCCTGTAGCCGAGATTGTTGGTCCAGCGATTGGGAAG
+GGCACGTTTACTGCGCCATAGCAATCCGGCCACAACCA
+NODE	4584	6	6	6	0	0
+TAAAAA
+CTTTTT
+NODE	4585	41	41	41	0	0
+AGCGTAGCGCGCAAAATCATATGTTTGACGGCATAAGTTTA
+ACGGAACCGGTATCGGTATTGGCCTGTTTTTGTTGCTGATT
+NODE	4586	43	86	86	0	0
+CCGTAGTTCAGTTCTGCGTATCGCAGAGAGGACGAACGCATGA
+AATTTTTGCTACATCTCTTTGTGTATAGCCTGATGAGATAAGC
+NODE	4587	40	40	40	0	0
+GGCGACGGCATTGAACGCCTCAAGGCTGACATCGCGCAGG
+CCCGCGCCGCGCTCGCTACACTGGCAAACATTACTGACGG
+NODE	4588	39	39	39	0	0
+AAATGCTTGGCGCAAGACGTCTGCTGGCGCGCCTGATGC
+AGCCATTTGAAATCTCCGCTCTGCATATCGGAAGGAATA
+NODE	4589	26	26	26	0	0
+ATATTTTTACCATTGCTTCTGGTGTT
+AAATATTAAGATTATCCTTGCTGTTA
+NODE	4590	11	11	11	0	0
+GAGACAGGCGA
+TCCTCTTCCGG
+NODE	4591	45	45	45	0	0
+ATCACCGATTATCGCGACGTGGAAAGCCATAACATGTTTGCCGCG
+CGGCGATGGTGTTGCTGAAATATCCGTCGCTTGAGCTGGTAGAGT
+NODE	4592	1	1	1	0	0
+G
+C
+NODE	4593	44	45	45	0	0
+TCCGCTATGACCGTACGTATTTTGACAAAATCGTGGCTTCCCTG
+CGCGCAGACCACCCATAGCCGGTTTTTACGTCGCAGGTTCACGC
+NODE	4594	41	41	41	0	0
+TCAATGAAGGCCATGCTTACGCATGATATCTATGATGCGAC
+GGTCAGCAACGCCGCAACTTCCGCCGCCCGTTTTTCCGACA
+NODE	4595	44	56	56	0	0
+CCGGGAAATGTTGAGCCGCTGTTCAGAGAAATGTCGATGAGTGT
+CATATCGCAGGGCATTTATCCTTATGATTAGGTATAAATGATGA
+NODE	4596	44	44	44	0	0
+AAGCTGCCGCTTATCCGCTGCTCCTGACGCCAGAGACGACAACC
+TGTCTGCCCAGGTACAAAATGATTTACTGTTAAGGGCGACCGGG
+NODE	4597	51	61	61	0	0
+TACAATCTGTGTGAGCACTGCAAAGTACGCTTCTTTAAGGTAAGGAGGTGA
+ATGATGAAAAACGAGCAGTAAAACCTCTACAGGCTTGTAGCTCAGGTGGTT
+NODE	4598	17	17	17	0	0
+TAAAAAAAAAAAAAAAA
+ATTTTTTTTTTTTTTTT
+NODE	4599	38	45	45	0	0
+TATGTGGAGTCTCAGGTTTATCAGGGCGTGGTAGAAAA
+CAGCAGCGCGCCGCCGAGGCGATAGCGCACTTTGATGC
+NODE	4600	6	2362	6	0	0
+ATTAGG
+CCCAAC
+NODE	4601	41	41	41	0	0
+ACGTTCGCGGTCATCACTCGTATATGGTATCGCTGCCAGCA
+CTATGGCGACAGATACGATTATGGCACCCCTGGGTCATTAT
+NODE	4602	46	80	80	0	0
+GTATGCCGCCGCCGATGATTCCGTTTTTACTGTCATGGATGATCCC
+CCACGCCAGCGCCACCATCTGTGCGGTAGTTTTGACTTTACCGATC
+NODE	4603	116	141	141	0	0
+TCTGGGTTTGCTCTTCTTATCCAAATAAAGAACCAATCTTATCACATAGCCTTCCGGCACCCCCCTTTGGACACGGGTTATTCGGTCCTAAGGGGGGTGCCGGAAGGCTATGGGAT
+AGGGGGGTGCCGGAAGGCTATGTGATAAGATTGGTTCTTTATTTGGATAAGAAGAGCAAACCCAGAAAATTGTGGCTGGTTAGGGAATGTTAATCCCTATTCCCTTTCGGAGGTTT
+NODE	4604	43	53	53	0	0
+CCCTTAATCCTGTTGCATTTTCTCCTCTGCGGCGGCTGCGTCG
+TGGTTGGCTGGCGTTACTGGAGCAGCCATCAGACGGAGTCCGC
+NODE	4605	44	52	52	0	0
+CAATAAACATGTCAAAATGAATAAAAAAAGATCAGAATTACAGT
+GGCTCTCCCGTCTTGCTTGTTTTGTTTGTTTTTTGAACGGTAAA
+NODE	4606	13	13	13	0	0
+GGGACCGTTCGTT
+TTTTTTGTAATAG
+NODE	4607	51	74	74	0	0
+ACCACGTTACAGGGACAACTGCTGTTAAGCGGAAACCCGCCGCTCAATCTG
+TTGGCGAGACGTTTGCCAGATGCTGCTCTGGTACATGCCAGCTCTCTCCCG
+NODE	4608	46	46	46	0	0
+CGCGCAGCATATAGACTAAGGCATCGCCAGGAAATCCGGTAAAACG
+GCGGTGCAGGCGGCAATTGTGCCAGTGTGCCTGTTAGAAAATATGG
+NODE	4609	2	2	2	0	0
+TC
+CC
+NODE	4610	62	67	67	0	0
+CGGCGATCTCCTCAGACTTTGTAAGAGATCTCTCACACCCGTTAGGGCAAACGATTACAGAA
+AGGAGATCGCCGGGATATCAGCGGATACTGAGTTCCGTTTTCTTATGTAAGTCTATATAAAA
+NODE	4611	28	28	28	0	0
+TACCTTCACCGACCTGATTGTCGCCGTG
+GGCCGCCAGCCTTACGCATAACCAGAAT
+NODE	4612	43	47	47	0	0
+GCCATGTTTATCTCCCAGCAAATCGCGGGCGTCCCAGTGCGGA
+TAGCCACCCTGTTAACGTTCACGGGTCTGGCATTATGGTCGCC
+NODE	4613	39	43	43	0	0
+CCTTTTTATAATCATACAGTGAATGTCGACTGGTAATTA
+GGCGGCAAACCGTGACGGGTCCCAGAACATACATCCTGC
+NODE	4614	17	17	17	0	0
+ACCTAGCTGGTCTGAGA
+TAGCTAATCCCATCTGG
+NODE	4615	45	45	45	0	0
+ACTGGTAATCAAAGAACATCACCACCGCCGCTTTTGCCTCGTTGG
+AGATGCAGCAAAATGAGCCAGAAGATCACTTTGGTTCTTTATTAC
+NODE	4616	43	45	45	0	0
+TTCTTTTACGATTTCATCCCACCCGATGTTATAAAAAAAGCAG
+GCTAAGCGGCAATAAATAATTTCACAGTGAAACTATCACCAAT
+NODE	4617	49	77	77	0	0
+GTTCGTTACAGGGGAATATCCATCCAATACGCGGTGCGGATACTTTTAT
+CCATAATCGTAGCTGTCATCTGGATAATCGGCATGGGCAATCACGTACT
+NODE	4618	7	7	7	0	0
+GCTGAGA
+TAGCTAA
+ARC	1	2948	34
+ARC	1	3953	4
+ARC	-1	-4108	1
+ARC	-1	-2938	56
+ARC	2	937	50
+ARC	3	507	35
+ARC	-3	-3920	1
+ARC	-3	-1175	46
+ARC	4	-3624	2
+ARC	4	-2633	38
+ARC	-4	-4306	1
+ARC	-4	-3114	63
+ARC	5	-3856	2
+ARC	5	617	57
+ARC	-5	938	52
+ARC	6	-825	81
+ARC	6	3856	1
+ARC	-6	-3414	1
+ARC	-6	400	36
+ARC	7	1015	99
+ARC	7	3778	1
+ARC	-7	-4126	1
+ARC	-7	2906	52
+ARC	8	3078	56
+ARC	8	4063	1
+ARC	-8	-1221	42
+ARC	-8	3534	1
+ARC	9	-3655	1
+ARC	9	1845	79
+ARC	-9	3032	35
+ARC	-9	4334	1
+ARC	10	-555	57
+ARC	-10	161	44
+ARC	-10	4031	1
+ARC	11	-175	71
+ARC	11	3364	1
+ARC	-11	-4453	1
+ARC	-11	968	53
+ARC	12	-3866	2
+ARC	12	-13	30
+ARC	-12	-3488	1
+ARC	-12	-3302	49
+ARC	-13	-1390	39
+ARC	14	-1352	52
+ARC	-14	2720	55
+ARC	-14	3055	1
+ARC	15	595	60
+ARC	-15	339	47
+ARC	16	-1174	72
+ARC	16	4470	1
+ARC	-16	-4562	1
+ARC	-16	-3199	34
+ARC	17	-4368	1
+ARC	17	-3667	56
+ARC	-17	-4032	1
+ARC	-17	355	84
+ARC	18	-4381	1
+ARC	18	2523	73
+ARC	-18	1238	42
+ARC	-18	3994	3
+ARC	19	229	44
+ARC	-19	3134	88
+ARC	-19	4605	2
+ARC	20	-2485	46
+ARC	-20	-3636	1
+ARC	-20	-2716	61
+ARC	21	-1100	52
+ARC	21	3626	1
+ARC	-21	428	48
+ARC	22	498	50
+ARC	-22	-4351	1
+ARC	-22	927	51
+ARC	23	-3169	1
+ARC	23	2423	51
+ARC	-23	-876	64
+ARC	24	-820	62
+ARC	-24	1997	62
+ARC	25	-801	49
+ARC	25	3266	1
+ARC	-25	-343	27
+ARC	26	266	53
+ARC	-26	-3285	37
+ARC	-26	3151	1
+ARC	27	-2851	56
+ARC	27	3751	1
+ARC	-27	-3384	1
+ARC	-27	2417	62
+ARC	28	2292	80
+ARC	28	4148	1
+ARC	-28	280	62
+ARC	29	30	72
+ARC	-29	1594	54
+ARC	30	31	472
+ARC	30	3213	10
+ARC	-30	2030	422
+ARC	31	1837	484
+ARC	32	-2223	43
+ARC	-32	286	24
+ARC	33	2167	48
+ARC	33	4473	1
+ARC	-33	-1077	52
+ARC	34	35	47
+ARC	-34	2944	60
+ARC	35	-1208	35
+ARC	35	3995	1
+ARC	-35	-3622	2
+ARC	36	898	44
+ARC	36	3557	1
+ARC	-36	-3936	1
+ARC	-36	-2727	53
+ARC	37	-2002	81
+ARC	37	4565	1
+ARC	-37	-2303	38
+ARC	-37	3344	6
+ARC	38	997	56
+ARC	-38	-2316	46
+ARC	39	-2433	57
+ARC	-39	1480	50
+ARC	-39	3758	5
+ARC	40	-3504	1
+ARC	40	2351	49
+ARC	-40	-4568	1
+ARC	-40	657	44
+ARC	41	3056	49
+ARC	41	3590	1
+ARC	-41	-3928	1
+ARC	-41	-471	79
+ARC	42	-3677	3
+ARC	42	-826	59
+ARC	-42	-3952	1
+ARC	-42	1725	63
+ARC	43	3315	54
+ARC	43	4362	1
+ARC	-43	-2980	50
+ARC	-43	3154	8
+ARC	44	1313	38
+ARC	-44	-4578	1
+ARC	-44	-576	40
+ARC	45	-3534	1
+ARC	45	1221	39
+ARC	-45	-3607	1
+ARC	-45	-2476	39
+ARC	46	-736	59
+ARC	-46	-344	30
+ARC	47	-173	36
+ARC	47	3019	2
+ARC	-47	2272	64
+ARC	48	-2698	58
+ARC	48	3064	8
+ARC	-48	-4317	1
+ARC	-48	-2848	50
+ARC	49	-4527	1
+ARC	49	1517	65
+ARC	-49	1967	79
+ARC	-49	4610	1
+ARC	50	-4432	1
+ARC	50	348	35
+ARC	-50	-1102	44
+ARC	-50	4038	1
+ARC	51	-1284	50
+ARC	51	3899	1
+ARC	-51	-3626	1
+ARC	-51	-696	69
+ARC	52	3192	27
+ARC	-52	2687	38
+ARC	53	-3716	1
+ARC	53	1797	42
+ARC	-53	-345	54
+ARC	54	-1012	52
+ARC	54	4543	1
+ARC	-54	-4330	1
+ARC	-54	1818	53
+ARC	55	-3814	1
+ARC	55	1241	50
+ARC	-55	-151	41
+ARC	-55	4345	2
+ARC	56	-3771	1
+ARC	56	-2875	50
+ARC	-56	-4132	1
+ARC	-56	-112	57
+ARC	-57	1989	54
+ARC	-57	3458	1
+ARC	58	-233	41
+ARC	-58	-2607	1
+ARC	-58	2608	28
+ARC	59	-2922	53
+ARC	-59	-3361	1
+ARC	-59	1514	53
+ARC	60	-3479	1
+ARC	60	1491	52
+ARC	-60	-4185	1
+ARC	-60	-2508	57
+ARC	61	932	56
+ARC	-61	-1790	66
+ARC	-61	3719	1
+ARC	62	189	30
+ARC	-62	-426	61
+ARC	-62	2912	2
+ARC	63	-3696	2
+ARC	63	-65	48
+ARC	-63	379	79
+ARC	64	-1316	44
+ARC	64	65	44
+ARC	64	3696	2
+ARC	-64	-466	26
+ARC	-64	1760	46
+ARC	66	-3889	1
+ARC	66	3045	53
+ARC	-66	-1343	41
+ARC	67	-716	51
+ARC	67	4448	3
+ARC	-67	-2307	45
+ARC	-67	4365	1
+ARC	68	1813	26
+ARC	-68	1357	43
+ARC	69	-4357	1
+ARC	69	420	46
+ARC	-69	-4462	1
+ARC	-69	-1861	38
+ARC	70	3346	45
+ARC	70	4195	4
+ARC	-70	-615	55
+ARC	71	-236	66
+ARC	-71	-1041	57
+ARC	-71	3697	1
+ARC	72	-1727	1
+ARC	72	2093	70
+ARC	-72	1923	27
+ARC	73	-74	185
+ARC	-73	-1877	145
+ARC	-73	1907	7
+ARC	74	-3730	1
+ARC	-74	1522	169
+ARC	75	-2323	48
+ARC	75	4324	1
+ARC	-75	-828	64
+ARC	76	809	38
+ARC	-76	1932	51
+ARC	-76	2302	6
+ARC	77	1276	59
+ARC	-77	-3743	1
+ARC	-77	2784	32
+ARC	78	-1823	1
+ARC	78	1028	43
+ARC	-78	-4000	1
+ARC	-78	679	71
+ARC	79	-1257	231
+ARC	-79	-2105	1
+ARC	-79	807	228
+ARC	80	-4541	1
+ARC	80	563	50
+ARC	-80	-1797	46
+ARC	-80	3716	2
+ARC	81	-1703	38
+ARC	81	2715	5
+ARC	-81	-3776	1
+ARC	-81	-2928	47
+ARC	82	-860	54
+ARC	82	3243	1
+ARC	-82	-1516	50
+ARC	83	-2250	63
+ARC	-83	727	71
+ARC	-83	4248	1
+ARC	84	-3592	1
+ARC	84	-2125	50
+ARC	-84	-1955	50
+ARC	-84	2609	1
+ARC	85	-3277	2
+ARC	85	2330	64
+ARC	-85	-4423	1
+ARC	-85	950	57
+ARC	86	-1471	76
+ARC	86	403	5
+ARC	-86	-1561	62
+ARC	-86	4564	1
+ARC	87	-3665	1
+ARC	87	-1960	51
+ARC	-87	1253	57
+ARC	88	-3225	43
+ARC	88	4393	1
+ARC	-88	1591	66
+ARC	-88	4228	1
+ARC	89	-643	44
+ARC	-89	-848	67
+ARC	90	-1479	49
+ARC	-90	-559	64
+ARC	-90	4204	1
+ARC	91	-2725	81
+ARC	91	2890	2
+ARC	-91	-509	55
+ARC	-91	3482	3
+ARC	92	-3979	1
+ARC	92	1372	40
+ARC	-92	-2491	30
+ARC	93	2419	40
+ARC	-93	-4570	1
+ARC	-93	928	49
+ARC	94	95	275
+ARC	-94	-2554	249
+ARC	95	105	385
+ARC	-95	-1586	120
+ARC	96	-1162	52
+ARC	-96	2018	62
+ARC	-96	4026	2
+ARC	97	-98	57
+ARC	-97	-1384	47
+ARC	-97	4274	1
+ARC	98	4452	1
+ARC	-98	-4516	1
+ARC	-98	1323	46
+ARC	99	-3974	1
+ARC	99	252	61
+ARC	-99	-4325	2
+ARC	-99	848	36
+ARC	100	-4240	1
+ARC	100	-2826	44
+ARC	-100	917	65
+ARC	101	-3957	1
+ARC	101	1331	22
+ARC	-101	1606	55
+ARC	-101	4104	1
+ARC	102	-1899	1
+ARC	102	-732	53
+ARC	-102	1583	42
+ARC	-102	3908	1
+ARC	103	331	48
+ARC	103	4496	1
+ARC	-103	979	37
+ARC	104	2938	25
+ARC	104	4108	2
+ARC	-104	-4593	1
+ARC	-104	-181	57
+ARC	105	1006	353
+ARC	105	4378	1
+ARC	-105	4154	1
+ARC	106	-3859	1
+ARC	106	-677	46
+ARC	-106	-405	53
+ARC	107	-2810	46
+ARC	107	2466	1
+ARC	-107	-4433	2
+ARC	-107	-1285	73
+ARC	108	-1526	50
+ARC	-108	-4398	1
+ARC	-108	-200	65
+ARC	109	3147	53
+ARC	109	4066	1
+ARC	-109	2159	67
+ARC	110	2291	49
+ARC	110	4223	1
+ARC	-110	-3267	37
+ARC	111	2893	66
+ARC	-111	-317	54
+ARC	-112	-3839	1
+ARC	-112	-2171	59
+ARC	113	-1778	60
+ARC	113	2943	2
+ARC	-113	-311	42
+ARC	114	-4610	1
+ARC	114	-1064	74
+ARC	-114	407	47
+ARC	115	-841	44
+ARC	-115	-2430	39
+ARC	-115	4034	1
+ARC	116	-4311	1
+ARC	116	639	46
+ARC	-116	-3762	1
+ARC	-116	-1739	61
+ARC	117	-1202	50
+ARC	-117	2458	73
+ARC	-117	3415	1
+ARC	118	1191	22
+ARC	118	3913	1
+ARC	-118	-4605	1
+ARC	-118	-3134	85
+ARC	119	-3181	3
+ARC	119	-3139	44
+ARC	-119	-4363	1
+ARC	-119	-295	66
+ARC	120	-4364	1
+ARC	120	142	69
+ARC	-120	-4607	1
+ARC	-120	-504	32
+ARC	121	-1371	75
+ARC	121	4370	2
+ARC	-121	-364	38
+ARC	122	-2913	46
+ARC	-122	2015	58
+ARC	-122	3954	1
+ARC	123	-3925	1
+ARC	123	1296	57
+ARC	-123	2078	30
+ARC	124	1920	45
+ARC	124	4432	1
+ARC	-124	1516	57
+ARC	125	-2244	79
+ARC	125	3681	1
+ARC	-125	1485	61
+ARC	126	-4501	1
+ARC	126	-2950	17
+ARC	126	-2626	49
+ARC	-126	2421	74
+ARC	127	2178	35
+ARC	-127	545	52
+ARC	128	-3713	1
+ARC	128	-1687	44
+ARC	-128	1208	40
+ARC	-128	4342	1
+ARC	129	-2250	43
+ARC	-129	1559	63
+ARC	-129	4408	1
+ARC	130	-2329	46
+ARC	130	3727	4
+ARC	-130	-3531	1
+ARC	-130	1549	65
+ARC	131	-3055	1
+ARC	131	-2720	55
+ARC	-131	1951	74
+ARC	-131	3185	1
+ARC	132	-4188	1
+ARC	132	-2237	50
+ARC	-132	-676	53
+ARC	133	-995	46
+ARC	-133	-3899	1
+ARC	-133	-2560	42
+ARC	134	-4463	1
+ARC	134	-2345	73
+ARC	-134	-728	50
+ARC	-134	4121	1
+ARC	135	-4037	1
+ARC	135	-692	48
+ARC	-135	3164	47
+ARC	136	-3650	2
+ARC	136	829	54
+ARC	-136	-4492	2
+ARC	-136	638	43
+ARC	137	1987	58
+ARC	137	4323	1
+ARC	-137	-1701	38
+ARC	-137	3680	1
+ARC	138	-3003	49
+ARC	138	3675	1
+ARC	-138	-4427	1
+ARC	-138	-644	73
+ARC	139	-4067	1
+ARC	139	-355	62
+ARC	-139	-2261	44
+ARC	-139	4124	2
+ARC	140	-2239	54
+ARC	-140	-1813	46
+ARC	141	-213	49
+ARC	-141	-3021	1
+ARC	-141	2668	47
+ARC	142	-4405	1
+ARC	142	-1451	50
+ARC	143	-2762	52
+ARC	143	3430	1
+ARC	-143	2184	40
+ARC	144	-930	42
+ARC	-144	-1407	1
+ARC	-144	2619	68
+ARC	145	-146	35
+ARC	-145	-2431	80
+ARC	146	3921	1
+ARC	-146	863	59
+ARC	-146	3693	1
+ARC	147	-1572	51
+ARC	147	4279	2
+ARC	-147	1848	44
+ARC	-147	3817	3
+ARC	148	-4592	1
+ARC	148	-2977	33
+ARC	-148	1026	17
+ARC	-148	4280	1
+ARC	149	-2712	62
+ARC	-149	1656	54
+ARC	150	-1331	21
+ARC	150	3957	1
+ARC	-150	2595	26
+ARC	-151	-3133	1
+ARC	-151	-2527	44
+ARC	152	-1323	50
+ARC	152	4516	1
+ARC	-152	1883	56
+ARC	153	-2598	44
+ARC	153	3597	1
+ARC	-153	1888	48
+ARC	154	1532	31
+ARC	-154	-524	54
+ARC	155	-3501	1
+ARC	155	-1556	67
+ARC	-155	2412	53
+ARC	156	157	190
+ARC	156	289	55
+ARC	-156	-2444	43
+ARC	-156	291	105
+ARC	-156	795	58
+ARC	157	-290	69
+ARC	157	158	131
+ARC	158	159	99
+ARC	158	3958	4
+ARC	159	160	105
+ARC	159	3401	2
+ARC	160	-1414	102
+ARC	161	-2084	1
+ARC	161	-1954	40
+ARC	162	-530	32
+ARC	162	3024	1
+ARC	-162	-4510	1
+ARC	-162	-336	59
+ARC	163	-2251	58
+ARC	-163	-1461	63
+ARC	164	-4514	1
+ARC	164	-1066	401
+ARC	-164	-1177	447
+ARC	-164	3363	2
+ARC	165	-1144	55
+ARC	-165	261	58
+ARC	166	2486	52
+ARC	166	3442	1
+ARC	-166	-3083	2
+ARC	-166	-1978	52
+ARC	167	3043	1
+ARC	167	3478	32
+ARC	-167	-4064	1
+ARC	-167	2286	61
+ARC	168	169	223
+ARC	-168	-2449	122
+ARC	-168	-2243	96
+ARC	169	-170	361
+ARC	-169	-2028	149
+ARC	170	2455	7
+ARC	-170	-3877	1
+ARC	-170	-1459	347
+ARC	171	-4004	4
+ARC	171	-3937	60
+ARC	-171	-265	50
+ARC	172	-3019	1
+ARC	172	173	56
+ARC	-172	-4254	1
+ARC	-172	357	71
+ARC	174	895	63
+ARC	174	4137	1
+ARC	-174	-1833	76
+ARC	-174	3663	1
+ARC	-175	-4016	1
+ARC	-175	-973	50
+ARC	176	2174	73
+ARC	-176	-1299	61
+ARC	-176	3843	1
+ARC	177	-914	46
+ARC	-177	-2327	60
+ARC	178	-4072	1
+ARC	178	1959	55
+ARC	-178	-3409	1
+ARC	-178	1564	52
+ARC	179	2848	45
+ARC	179	4317	1
+ARC	-179	316	64
+ARC	180	1629	54
+ARC	-180	-2427	37
+ARC	-181	-3510	1
+ARC	-181	-2881	48
+ARC	182	494	48
+ARC	-182	1439	72
+ARC	183	1654	54
+ARC	-183	-1582	64
+ARC	-183	4341	1
+ARC	184	-1435	49
+ARC	184	3894	1
+ARC	-184	2014	77
+ARC	185	-3844	1
+ARC	185	2854	59
+ARC	-185	-1781	61
+ARC	186	-2777	1
+ARC	186	-187	75
+ARC	-186	-4361	1
+ARC	-186	2436	71
+ARC	-187	-974	72
+ARC	188	2385	32
+ARC	188	2514	1
+ARC	-188	382	24
+ARC	189	-3310	1
+ARC	189	-2340	32
+ARC	-189	-3764	1
+ARC	190	-794	45
+ARC	190	3976	1
+ARC	-190	1892	26
+ARC	-190	3248	1
+ARC	191	1409	40
+ARC	-191	-3965	1
+ARC	-191	-1332	48
+ARC	192	611	30
+ARC	-192	-4475	1
+ARC	-192	-2348	57
+ARC	193	-3725	1
+ARC	193	-1991	34
+ARC	-193	543	59
+ARC	194	2642	44
+ARC	194	4040	1
+ARC	-194	-4124	1
+ARC	-194	2613	37
+ARC	195	196	20
+ARC	195	3052	1
+ARC	-195	2573	46
+ARC	-195	3492	3
+ARC	196	1398	63
+ARC	196	3244	3
+ARC	197	-2316	47
+ARC	-197	-4145	1
+ARC	-197	3035	26
+ARC	198	-1325	52
+ARC	-198	791	74
+ARC	199	-2563	63
+ARC	-199	-3630	1
+ARC	-199	2189	70
+ARC	-200	2991	82
+ARC	201	202	57
+ARC	201	3533	2
+ARC	-201	2112	60
+ARC	202	-2945	50
+ARC	202	3863	1
+ARC	203	-1409	86
+ARC	203	3870	2
+ARC	-203	-1119	61
+ARC	-203	3977	2
+ARC	204	849	51
+ARC	-204	-2278	33
+ARC	205	-207	71
+ARC	205	3095	3
+ARC	-205	-1126	67
+ARC	-205	-816	51
+ARC	206	-3095	1
+ARC	206	207	111
+ARC	-206	-2470	102
+ARC	-206	2072	3
+ARC	208	1498	56
+ARC	208	3445	1
+ARC	-208	-3052	1
+ARC	-208	582	49
+ARC	209	-3678	42
+ARC	209	2241	4
+ARC	-209	-4065	1
+ARC	-209	2080	35
+ARC	210	-2023	51
+ARC	210	2610	2
+ARC	-210	-3515	36
+ARC	-210	-2270	1
+ARC	211	-2814	1
+ARC	211	212	54
+ARC	-211	1436	66
+ARC	212	1032	52
+ARC	213	-3693	2
+ARC	-213	-3020	53
+ARC	-213	3049	5
+ARC	214	-1438	49
+ARC	214	4407	1
+ARC	-214	-4285	1
+ARC	-214	1277	57
+ARC	215	-4175	1
+ARC	215	-2726	73
+ARC	-215	-4505	1
+ARC	-215	-422	44
+ARC	216	-3432	1
+ARC	216	-2113	45
+ARC	-216	-3737	1
+ARC	-216	2758	49
+ARC	217	2361	45
+ARC	217	4459	1
+ARC	-217	-2049	50
+ARC	218	-2903	4
+ARC	218	2487	23
+ARC	-218	345	37
+ARC	-218	4241	1
+ARC	219	-2555	37
+ARC	219	4379	1
+ARC	-219	-2186	1
+ARC	-219	-1512	85
+ARC	220	861	47
+ARC	-220	314	54
+ARC	221	-566	57
+ARC	-221	2016	49
+ARC	222	-2440	66
+ARC	-222	-2271	1
+ARC	-222	1668	43
+ARC	223	253	62
+ARC	-223	-2031	39
+ARC	224	313	44
+ARC	224	4402	1
+ARC	-224	-3195	65
+ARC	-224	4070	1
+ARC	225	747	87
+ARC	-225	1555	54
+ARC	226	-433	67
+ARC	-226	2010	66
+ARC	227	2559	66
+ARC	227	3467	2
+ARC	-227	-3605	1
+ARC	-227	-947	66
+ARC	228	-4237	1
+ARC	228	436	48
+ARC	-228	-4020	1
+ARC	-228	3057	40
+ARC	229	-999	27
+ARC	-229	-4447	2
+ARC	230	-3440	1
+ARC	230	-3218	42
+ARC	-230	-3922	1
+ARC	-230	2500	51
+ARC	231	-3747	1
+ARC	231	-824	57
+ARC	-231	-2136	38
+ARC	232	2045	47
+ARC	232	3347	2
+ARC	-232	1007	57
+ARC	233	-4263	1
+ARC	-233	353	41
+ARC	234	-4138	1
+ARC	234	512	61
+ARC	-234	-4191	1
+ARC	-234	-2460	53
+ARC	235	-2354	1
+ARC	235	-711	199
+ARC	-235	1262	185
+ARC	236	3974	1
+ARC	-236	-1227	62
+ARC	-236	4424	1
+ARC	237	-3942	1
+ARC	237	-2541	66
+ARC	-237	786	24
+ARC	238	-1532	38
+ARC	-238	-2867	35
+ARC	239	2652	56
+ARC	-239	-4569	1
+ARC	-239	-247	51
+ARC	240	-4449	1
+ARC	240	1121	29
+ARC	-240	-865	55
+ARC	241	-467	57
+ARC	-241	-2500	61
+ARC	-241	3922	1
+ARC	242	-1679	87
+ARC	-242	-1680	44
+ARC	-242	2404	45
+ARC	243	-4322	1
+ARC	243	442	50
+ARC	-243	-3429	1
+ARC	-243	-1356	64
+ARC	244	-2330	50
+ARC	244	3277	6
+ARC	-244	-2865	53
+ARC	-244	3378	1
+ARC	245	-403	1
+ARC	245	1471	77
+ARC	-245	499	48
+ARC	246	-4104	1
+ARC	246	-713	46
+ARC	-246	-3423	1
+ARC	-246	2068	54
+ARC	-247	-3496	2
+ARC	-247	970	56
+ARC	248	971	46
+ARC	-248	533	56
+ARC	-248	4528	1
+ARC	249	-3084	1
+ARC	249	-3026	46
+ARC	-249	-3329	2
+ARC	-249	2074	48
+ARC	250	-2111	45
+ARC	-250	-3891	1
+ARC	-250	2850	71
+ARC	251	2982	51
+ARC	-251	2462	55
+ARC	252	517	60
+ARC	253	-2482	26
+ARC	253	3339	10
+ARC	-253	4579	1
+ARC	254	-3443	3
+ARC	254	-654	40
+ARC	-254	653	25
+ARC	-254	3236	23
+ARC	255	1052	45
+ARC	-255	697	53
+ARC	256	-3458	1
+ARC	256	-1989	41
+ARC	-256	-567	47
+ARC	257	1738	74
+ARC	-257	-1730	59
+ARC	-257	3616	1
+ARC	258	-2967	1
+ARC	258	-2480	40
+ARC	-258	983	71
+ARC	259	-2161	62
+ARC	259	3594	1
+ARC	-259	-3470	1
+ARC	-259	-1345	53
+ARC	260	-3697	1
+ARC	260	-402	68
+ARC	-260	-967	57
+ARC	-260	4484	1
+ARC	261	-3954	1
+ARC	261	2922	60
+ARC	-261	-4216	1
+ARC	262	263	51
+ARC	-262	1356	69
+ARC	263	-1477	50
+ARC	263	2548	39
+ARC	-263	1862	57
+ARC	264	-3644	1
+ARC	264	-2060	62
+ARC	-264	-457	29
+ARC	265	3381	2
+ARC	-265	2551	37
+ARC	-265	4136	2
+ARC	266	-4048	1
+ARC	266	-2770	37
+ARC	-266	-4454	1
+ARC	267	2952	9
+ARC	-267	1918	16
+ARC	268	269	56
+ARC	-268	-2236	1
+ARC	-268	1137	53
+ARC	269	270	47
+ARC	269	1403	55
+ARC	-269	1034	51
+ARC	270	2238	54
+ARC	271	-3754	1
+ARC	271	272	72
+ARC	-271	-2439	61
+ARC	272	-273	60
+ARC	273	3754	1
+ARC	-273	-2350	54
+ARC	-273	3425	1
+ARC	274	-4308	1
+ARC	274	3233	27
+ARC	-274	-2918	48
+ARC	-275	-987	69
+ARC	-275	988	5
+ARC	276	1302	47
+ARC	-276	1706	54
+ARC	277	278	51
+ARC	-277	-3168	59
+ARC	278	-279	52
+ARC	-278	3757	2
+ARC	279	-3672	2
+ARC	-279	481	34
+ARC	280	-4178	1
+ARC	280	281	48
+ARC	-280	-4077	1
+ARC	281	282	45
+ARC	281	4558	1
+ARC	282	-3242	1
+ARC	282	283	36
+ARC	283	-3846	26
+ARC	284	1756	38
+ARC	-284	-2878	2
+ARC	-284	2233	48
+ARC	285	-538	63
+ARC	-285	-4421	1
+ARC	-285	677	69
+ARC	286	-3749	1
+ARC	286	-1469	114
+ARC	-286	-950	31
+ARC	287	-3207	1
+ARC	287	-1069	57
+ARC	-287	-3247	40
+ARC	288	707	53
+ARC	-288	-4103	1
+ARC	-288	1185	35
+ARC	289	-291	48
+ARC	-290	-291	57
+ARC	292	-2645	1
+ARC	292	2461	61
+ARC	-292	-948	41
+ARC	-292	4290	1
+ARC	293	-4476	1
+ARC	293	-327	62
+ARC	-293	1122	72
+ARC	-293	4311	2
+ARC	294	-2374	1
+ARC	294	-1229	58
+ARC	-294	-4394	1
+ARC	-294	2911	36
+ARC	-295	-2140	36
+ARC	-295	3710	3
+ARC	296	774	424
+ARC	-296	-745	422
+ARC	297	298	398
+ARC	-297	-774	418
+ARC	298	299	373
+ARC	298	3654	2
+ARC	-298	-4413	1
+ARC	299	300	374
+ARC	300	301	369
+ARC	-300	-3234	1
+ARC	301	-1702	351
+ARC	-301	-4268	1
+ARC	302	303	368
+ARC	302	3153	1
+ARC	302	4614	1
+ARC	-302	-3561	354
+ARC	-302	2813	3
+ARC	303	304	374
+ARC	303	4618	1
+ARC	304	3491	371
+ARC	305	-1651	62
+ARC	-305	1229	66
+ARC	-305	2374	1
+ARC	306	506	60
+ARC	306	4167	1
+ARC	-306	2434	67
+ARC	307	2797	46
+ARC	307	3279	1
+ARC	-307	3158	43
+ARC	-307	3505	11
+ARC	308	-4450	1
+ARC	308	1979	58
+ARC	-308	-1671	50
+ARC	309	-4496	1
+ARC	309	615	44
+ARC	-309	-1997	53
+ARC	310	1895	86
+ARC	-310	-622	80
+ARC	311	4250	1
+ARC	-311	-557	82
+ARC	-311	3574	1
+ARC	312	-3728	1
+ARC	312	2543	47
+ARC	-312	-3777	1
+ARC	-312	518	39
+ARC	313	-3870	1
+ARC	313	1207	51
+ARC	314	-921	45
+ARC	-314	3380	1
+ARC	315	-4606	1
+ARC	315	-3469	164
+ARC	-315	4275	192
+ARC	-315	4377	1
+ARC	316	-4123	1
+ARC	316	-2585	54
+ARC	-316	-3517	1
+ARC	317	4354	1
+ARC	-317	-3378	1
+ARC	-317	906	65
+ARC	318	-908	64
+ARC	-318	-937	36
+ARC	319	-3006	56
+ARC	319	3684	2
+ARC	320	1682	43
+ARC	-320	-1000	43
+ARC	321	-2805	348
+ARC	-321	589	380
+ARC	322	323	355
+ARC	322	2836	5
+ARC	-322	2805	362
+ARC	323	2367	347
+ARC	323	4489	1
+ARC	324	2727	34
+ARC	324	3936	1
+ARC	-324	699	50
+ARC	325	-2176	37
+ARC	325	4401	2
+ARC	-325	-3157	1
+ARC	-325	3013	47
+ARC	326	1202	39
+ARC	-326	-3435	1
+ARC	-326	-809	47
+ARC	-327	716	46
+ARC	328	-4524	1
+ARC	328	-366	48
+ARC	-328	3703	3
+ARC	-328	3857	29
+ARC	329	-4300	1
+ARC	329	-1340	67
+ARC	-329	-2718	62
+ARC	-329	1406	1
+ARC	330	-4579	1
+ARC	330	1078	31
+ARC	-330	427	65
+ARC	331	1844	80
+ARC	331	3655	1
+ARC	332	632	52
+ARC	332	4559	1
+ARC	-332	690	44
+ARC	333	-1156	1
+ARC	333	-334	59
+ARC	-333	371	39
+ARC	-333	3132	1
+ARC	-334	1014	59
+ARC	335	-2095	66
+ARC	335	4443	1
+ARC	-335	-4575	1
+ARC	-335	2600	58
+ARC	-336	-2894	70
+ARC	-336	4242	1
+ARC	337	489	49
+ARC	337	4215	1
+ARC	-337	-1427	56
+ARC	338	378	1
+ARC	338	1867	54
+ARC	-338	-3882	3
+ARC	-338	2907	25
+ARC	339	-4486	1
+ARC	339	-992	66
+ARC	-339	3541	1
+ARC	340	437	60
+ARC	340	4083	1
+ARC	-340	1675	80
+ARC	-340	4421	1
+ARC	341	-3594	1
+ARC	341	-342	51
+ARC	-341	-4139	2
+ARC	-341	-944	59
+ARC	-342	-861	44
+ARC	343	3981	1
+ARC	-343	-2295	1
+ARC	-343	1973	27
+ARC	344	-4027	1
+ARC	-344	-3824	2
+ARC	-344	-3489	60
+ARC	345	-4499	1
+ARC	346	-1402	56
+ARC	-346	457	50
+ARC	347	-3215	23
+ARC	347	-2595	58
+ARC	347	3080	10
+ARC	-347	-2637	76
+ARC	-347	2393	39
+ARC	348	2839	22
+ARC	349	945	48
+ARC	-349	-1279	70
+ARC	-349	3414	1
+ARC	350	1374	57
+ARC	-350	-1926	38
+ARC	-350	3604	1
+ARC	351	2988	59
+ARC	351	4141	2
+ARC	-351	-793	51
+ARC	352	1821	40
+ARC	352	3803	1
+ARC	-352	-2732	56
+ARC	-352	-1484	1
+ARC	353	-2283	40
+ARC	353	4375	1
+ARC	-353	4119	1
+ARC	354	-616	30
+ARC	354	4447	1
+ARC	-354	-408	55
+ARC	356	-1786	70
+ARC	356	4112	1
+ARC	-356	1558	48
+ARC	-356	3535	1
+ARC	357	-883	71
+ARC	358	-1975	76
+ARC	358	4617	1
+ARC	-358	1017	63
+ARC	-358	4422	1
+ARC	359	2025	30
+ARC	-359	-2644	37
+ARC	360	1037	61
+ARC	-360	-2935	37
+ARC	-360	2221	5
+ARC	361	-2443	49
+ARC	361	2909	3
+ARC	-361	-2369	46
+ARC	-361	2368	2
+ARC	362	-3037	53
+ARC	362	3924	3
+ARC	-362	-3597	1
+ARC	-362	2598	53
+ARC	363	-1092	48
+ARC	-363	-3007	53
+ARC	-363	3932	2
+ARC	364	-3803	1
+ARC	-364	447	49
+ARC	365	-1264	68
+ARC	365	4198	1
+ARC	-365	2324	40
+ARC	-365	4454	1
+ARC	-366	667	82
+ARC	367	-832	48
+ARC	-367	805	52
+ARC	368	2353	45
+ARC	368	3497	3
+ARC	-368	-863	38
+ARC	369	-3383	1
+ARC	369	-2577	62
+ARC	-369	-4554	1
+ARC	-369	-1919	42
+ARC	370	504	38
+ARC	370	4607	1
+ARC	-370	-4410	1
+ARC	-370	-384	68
+ARC	371	372	33
+ARC	371	3744	2
+ARC	372	-1638	43
+ARC	373	-3005	1
+ARC	373	374	71
+ARC	-373	-1312	66
+ARC	-373	3971	2
+ARC	374	1637	64
+ARC	375	-3417	1
+ARC	375	-1283	74
+ARC	-375	-4417	1
+ARC	-375	-916	53
+ARC	376	-377	53
+ARC	-376	-4084	1
+ARC	-376	642	44
+ARC	377	-4542	1
+ARC	-377	-3344	1
+ARC	-377	2303	47
+ARC	379	-4195	1
+ARC	379	-3346	41
+ARC	-379	-4571	1
+ARC	380	609	48
+ARC	-380	1289	34
+ARC	381	-2281	75
+ARC	381	4293	1
+ARC	-381	-1031	67
+ARC	-381	4005	1
+ARC	382	-2714	39
+ARC	382	3393	1
+ARC	-382	-4521	1
+ARC	383	1830	58
+ARC	383	4047	1
+ARC	-383	543	68
+ARC	-384	-4007	1
+ARC	-384	2857	65
+ARC	385	888	62
+ARC	-385	-1675	48
+ARC	386	-4140	1
+ARC	386	-1212	68
+ARC	-386	411	49
+ARC	-386	3723	1
+ARC	387	-2229	52
+ARC	-387	2026	79
+ARC	-387	3999	3
+ARC	388	-505	289
+ARC	388	3372	13
+ARC	-388	-2964	3
+ARC	-388	743	368
+ARC	389	-500	64
+ARC	-389	-1176	82
+ARC	-389	3361	1
+ARC	390	-3567	1
+ARC	390	-391	66
+ARC	-390	-4468	1
+ARC	-390	-1723	54
+ARC	-391	3137	54
+ARC	392	-2503	52
+ARC	-392	-1178	30
+ARC	393	433	91
+ARC	393	4518	1
+ARC	-393	-4536	2
+ARC	-393	2961	39
+ARC	394	-2575	51
+ARC	-394	-3723	1
+ARC	-394	-811	28
+ARC	395	1789	50
+ARC	-395	1337	45
+ARC	396	1321	68
+ARC	-396	1305	57
+ARC	397	-3649	1
+ARC	397	2620	32
+ARC	-397	655	51
+ARC	398	2211	58
+ARC	-398	-3107	1
+ARC	-398	2722	54
+ARC	399	-3805	1
+ARC	399	1751	60
+ARC	-399	-2051	58
+ARC	-399	3627	4
+ARC	400	482	69
+ARC	401	-3146	1
+ARC	401	1777	36
+ARC	-401	-4431	1
+ARC	-401	-1020	60
+ARC	-402	-1154	50
+ARC	404	-3122	1
+ARC	404	2062	47
+ARC	-404	-3906	1
+ARC	-404	939	35
+ARC	405	-3125	1
+ARC	-405	624	34
+ARC	-405	3707	3
+ARC	406	-3940	1
+ARC	406	-2188	54
+ARC	-406	-620	62
+ARC	-406	3717	1
+ARC	407	1086	48
+ARC	407	4212	1
+ARC	-407	-4424	1
+ARC	408	-4464	1
+ARC	-408	454	44
+ARC	-408	4003	1
+ARC	409	2144	74
+ARC	-409	1458	67
+ARC	410	-2144	67
+ARC	-410	1620	64
+ARC	-410	4382	1
+ARC	411	2716	47
+ARC	411	3636	3
+ARC	412	1029	44
+ARC	412	4435	1
+ARC	-412	2075	49
+ARC	-412	4483	1
+ARC	413	449	46
+ARC	413	4162	1
+ARC	-413	2867	42
+ARC	414	-1348	70
+ARC	414	3146	1
+ARC	-414	-2429	50
+ARC	415	1726	9
+ARC	415	3138	48
+ARC	-415	1348	44
+ARC	416	1484	1
+ARC	416	2732	58
+ARC	-416	865	58
+ARC	-416	3775	1
+ARC	417	-1241	50
+ARC	417	3814	2
+ARC	-417	-4049	1
+ARC	-417	2885	57
+ARC	418	-3337	1
+ARC	418	539	60
+ARC	-418	-627	44
+ARC	-418	3824	1
+ARC	419	-4478	1
+ARC	419	-949	51
+ARC	-419	-2620	33
+ARC	-419	3649	1
+ARC	420	-4617	1
+ARC	420	1975	61
+ARC	421	1512	79
+ARC	421	2186	1
+ARC	-421	-3978	1
+ARC	-421	2096	49
+ARC	-422	565	60
+ARC	423	-3159	31
+ARC	423	3465	4
+ARC	-423	828	59
+ARC	424	-3450	1
+ARC	424	2700	48
+ARC	-424	-2969	33
+ARC	-424	3729	2
+ARC	425	-4333	1
+ARC	425	-2792	40
+ARC	-425	-2495	46
+ARC	-425	-844	1
+ARC	-426	-477	65
+ARC	427	-2160	45
+ARC	427	3866	1
+ARC	-427	3601	1
+ARC	428	-2038	64
+ARC	-428	4468	1
+ARC	429	-512	58
+ARC	429	4138	1
+ARC	-429	1928	28
+ARC	-429	4062	2
+ARC	430	-2257	58
+ARC	-430	3222	32
+ARC	-430	3512	1
+ARC	431	1103	58
+ARC	431	4612	1
+ARC	-431	-3818	1
+ARC	-431	-1159	61
+ARC	432	-3154	1
+ARC	432	2980	40
+ARC	-432	-4133	1
+ARC	-432	-1078	59
+ARC	433	3297	3
+ARC	434	-1039	38
+ARC	-434	-3589	1
+ARC	-434	-2702	42
+ARC	435	-4236	2
+ARC	435	-1812	77
+ARC	-435	-2418	51
+ARC	-435	4482	1
+ARC	436	-4080	1
+ARC	436	2822	35
+ARC	437	-2822	44
+ARC	438	2827	44
+ARC	-438	-1411	41
+ARC	-438	1716	1
+ARC	439	-943	179
+ARC	439	1506	250
+ARC	-439	955	412
+ARC	-439	3959	1
+ARC	440	-768	91
+ARC	-440	1200	55
+ARC	441	-2137	42
+ARC	-441	1100	45
+ARC	442	-4480	1
+ARC	442	2240	48
+ARC	443	963	46
+ARC	-443	-1265	57
+ARC	444	-1755	61
+ARC	-444	1945	57
+ARC	445	446	35
+ARC	445	4466	1
+ARC	-445	2473	57
+ARC	-445	3646	2
+ARC	446	1005	48
+ARC	447	-4001	1
+ARC	447	448	52
+ARC	-447	-4286	1
+ARC	448	-1628	52
+ARC	449	-3034	48
+ARC	450	451	338
+ARC	-450	505	319
+ARC	451	-1339	415
+ARC	-451	-3372	3
+ARC	452	-578	46
+ARC	-452	1894	35
+ARC	-452	4485	1
+ARC	453	-4026	1
+ARC	453	-2018	62
+ARC	-453	-3822	1
+ARC	-453	2844	45
+ARC	454	-2823	45
+ARC	454	4017	1
+ARC	455	-4550	1
+ARC	455	-456	58
+ARC	-455	-3721	1
+ARC	-455	2940	35
+ARC	-456	2474	59
+ARC	-456	4367	1
+ARC	457	4517	1
+ARC	-457	-4591	1
+ARC	458	-2479	42
+ARC	458	3245	2
+ARC	-458	-2563	53
+ARC	459	-3702	2
+ARC	459	2663	54
+ARC	-459	-1273	45
+ARC	460	-1759	59
+ARC	460	4397	2
+ARC	-460	2790	64
+ARC	-460	4295	1
+ARC	461	-1946	51
+ARC	-461	2919	36
+ARC	462	-3282	3
+ARC	462	-463	44
+ARC	-462	-2597	38
+ARC	-462	4460	1
+ARC	-463	-2356	25
+ARC	464	1215	127
+ARC	464	3582	2
+ARC	464	4158	3
+ARC	-464	-4601	1
+ARC	-464	1901	175
+ARC	465	1311	64
+ARC	465	3209	1
+ARC	-465	-4167	1
+ARC	-465	1687	54
+ARC	-466	-493	60
+ARC	-466	4193	2
+ARC	467	-4534	1
+ARC	-467	-552	53
+ARC	468	-4186	1
+ARC	468	534	49
+ARC	-468	1743	45
+ARC	469	2616	32
+ARC	-469	-4546	1
+ARC	-469	2257	53
+ARC	470	-3941	1
+ARC	470	-2253	73
+ARC	-470	1819	29
+ARC	-470	3966	2
+ARC	-471	-712	69
+ARC	-471	3880	1
+ARC	472	-556	50
+ARC	-472	1648	46
+ARC	-472	3357	1
+ARC	473	1699	48
+ARC	-473	-3254	1
+ARC	-473	-2497	72
+ARC	474	2384	66
+ARC	-474	3191	56
+ARC	-474	3785	4
+ARC	475	578	29
+ARC	-475	-805	52
+ARC	476	-3827	1
+ARC	476	2485	46
+ARC	-476	540	40
+ARC	477	4363	1
+ARC	-477	-1818	47
+ARC	-477	4330	1
+ARC	478	-480	61
+ARC	-478	934	88
+ARC	479	480	57
+ARC	-479	-1857	56
+ARC	-479	3238	13
+ARC	480	1763	69
+ARC	-480	1921	64
+ARC	481	1290	5
+ARC	481	1968	40
+ARC	-481	3989	4
+ARC	482	-2638	43
+ARC	482	3328	3
+ARC	-482	-3617	2
+ARC	483	-4532	1
+ARC	483	1467	39
+ARC	-483	1120	69
+ARC	-483	4132	1
+ARC	484	-839	38
+ARC	-484	-3988	1
+ARC	-484	594	59
+ARC	485	825	44
+ARC	-485	1359	55
+ARC	-485	3092	1
+ARC	486	2107	1
+ARC	-486	-1262	4
+ARC	487	-2758	37
+ARC	-487	3156	46
+ARC	488	-489	56
+ARC	-488	2971	59
+ARC	-488	3214	6
+ARC	489	4235	2
+ARC	490	724	38
+ARC	490	3296	3
+ARC	-490	822	36
+ARC	491	-4234	1
+ARC	491	2007	34
+ARC	-491	-1943	1
+ARC	-491	2829	31
+ARC	492	-2007	45
+ARC	492	4234	1
+ARC	-492	-3089	47
+ARC	-493	-4549	58
+ARC	-493	-3550	2
+ARC	494	-2328	56
+ARC	-494	4591	1
+ARC	495	-4387	1
+ARC	495	496	62
+ARC	-495	860	38
+ARC	496	1364	52
+ARC	497	-4402	1
+ARC	497	-1930	44
+ARC	-497	2779	41
+ARC	498	-2078	56
+ARC	-498	3650	1
+ARC	499	2262	38
+ARC	-499	4531	1
+ARC	500	3429	1
+ARC	-500	-563	62
+ARC	-500	4386	1
+ARC	501	-773	39
+ARC	501	4416	1
+ARC	-501	2137	39
+ARC	-501	4285	1
+ARC	502	2272	63
+ARC	-502	-1964	2
+ARC	-502	1452	64
+ARC	-503	-2909	1
+ARC	-503	2443	63
+ARC	-505	4130	2
+ARC	506	1059	53
+ARC	507	-3897	1
+ARC	507	-1831	55
+ARC	-507	4526	1
+ARC	508	1635	30
+ARC	-508	-1693	38
+ARC	-509	1571	47
+ARC	510	914	48
+ARC	510	4548	1
+ARC	-510	-680	33
+ARC	511	2035	65
+ARC	511	3845	1
+ARC	-511	-2218	22
+ARC	-511	3770	1
+ARC	513	514	47
+ARC	-513	1284	41
+ARC	514	-3217	1
+ARC	514	658	51
+ARC	-514	-3930	1
+ARC	515	-3426	1
+ARC	515	-1524	71
+ARC	-515	-2139	20
+ARC	516	1511	48
+ARC	-516	881	53
+ARC	517	-3584	2
+ARC	517	903	73
+ARC	-517	3933	1
+ARC	518	-520	42
+ARC	519	520	33
+ARC	-519	3123	37
+ARC	520	3777	1
+ARC	-520	4055	1
+ARC	521	-3951	1
+ARC	521	1392	86
+ARC	-521	792	55
+ARC	522	-3347	3
+ARC	522	-2045	21
+ARC	-522	-4609	1
+ARC	-522	-1466	61
+ARC	523	996	45
+ARC	-523	-3104	57
+ARC	-523	4074	1
+ARC	524	3457	1
+ARC	-524	1956	51
+ARC	525	-1248	61
+ARC	-525	2759	69
+ARC	526	-3165	35
+ARC	526	3088	1
+ARC	-526	740	52
+ARC	527	528	294
+ARC	-527	-1729	374
+ARC	-527	3295	1
+ARC	528	2264	350
+ARC	528	4095	2
+ARC	-528	3639	1
+ARC	529	-3024	1
+ARC	529	530	70
+ARC	-529	-925	53
+ARC	531	2875	50
+ARC	531	3771	1
+ARC	-531	-2618	91
+ARC	-531	3365	1
+ARC	532	-2325	105
+ARC	-532	2665	104
+ARC	533	-2249	49
+ARC	534	-4094	1
+ARC	534	-2536	53
+ARC	535	-3535	2
+ARC	535	-1558	59
+ARC	-535	-3013	39
+ARC	-535	3157	7
+ARC	536	1248	63
+ARC	-536	-3727	1
+ARC	-536	2329	46
+ARC	537	-4165	1
+ARC	537	-3224	53
+ARC	-537	-1321	53
+ARC	538	-4097	1
+ARC	-538	918	44
+ARC	-538	2231	18
+ARC	539	905	83
+ARC	539	3700	1
+ARC	540	-1173	55
+ARC	540	4505	1
+ARC	-540	-4215	1
+ARC	541	-3939	1
+ARC	541	-1804	44
+ARC	-541	-2088	51
+ARC	-541	3955	1
+ARC	542	-2778	43
+ARC	542	-544	60
+ARC	-542	850	47
+ARC	-542	2549	43
+ARC	543	544	51
+ARC	543	2778	44
+ARC	545	-2861	49
+ARC	545	4161	1
+ARC	-545	-4304	1
+ARC	546	-3412	3
+ARC	546	2370	31
+ARC	-546	998	40
+ARC	-546	3587	1
+ARC	547	-4099	1
+ARC	547	548	81
+ARC	-547	-1330	1
+ARC	-547	922	58
+ARC	548	663	54
+ARC	549	-1104	46
+ARC	-549	2683	44
+ARC	-549	3793	1
+ARC	550	1574	41
+ARC	-550	-3323	1
+ARC	-550	1479	59
+ARC	551	-1016	50
+ARC	-551	-661	36
+ARC	552	-4502	1
+ARC	-552	1065	43
+ARC	553	-4498	1
+ARC	553	1966	37
+ARC	-553	992	37
+ARC	554	-4346	1
+ARC	554	1453	50
+ARC	-554	-4206	3
+ARC	-554	2501	30
+ARC	555	4381	1
+ARC	-555	-2082	56
+ARC	-555	4589	1
+ARC	556	-2912	1
+ARC	-556	-1134	61
+ARC	-556	4573	1
+ARC	-557	-2151	62
+ARC	-557	3481	1
+ARC	558	-1329	63
+ARC	-558	2450	50
+ARC	-558	4372	1
+ARC	-559	-3700	1
+ARC	-559	-662	67
+ARC	560	2645	1
+ARC	560	2937	48
+ARC	-560	-954	68
+ARC	561	-4217	1
+ARC	561	-3464	137
+ARC	-561	2468	3
+ARC	-561	3261	134
+ARC	562	-3837	1
+ARC	562	-1578	91
+ARC	-562	-2653	59
+ARC	-562	3671	1
+ARC	564	-2174	34
+ARC	564	4414	1
+ARC	-564	-4160	1
+ARC	-564	-1515	52
+ARC	565	567	31
+ARC	565	4477	1
+ARC	-565	3827	1
+ARC	566	4325	1
+ARC	-566	-4386	1
+ARC	-566	-1888	56
+ARC	567	-4439	1
+ARC	568	-4390	1
+ARC	568	569	130
+ARC	-568	-1172	57
+ARC	-568	3070	84
+ARC	569	570	50
+ARC	569	2972	82
+ARC	570	571	53
+ARC	571	2058	72
+ARC	571	4566	2
+ARC	-571	4390	2
+ARC	572	-3512	1
+ARC	572	-3222	63
+ARC	-572	-4252	1
+ARC	-572	-1738	46
+ARC	573	-2294	46
+ARC	-573	-598	50
+ARC	-573	4571	1
+ARC	574	-2821	58
+ARC	574	4444	2
+ARC	-574	2347	68
+ARC	-574	4570	1
+ARC	575	-4585	1
+ARC	575	-755	69
+ARC	-575	1919	54
+ARC	-576	951	40
+ARC	577	-4034	1
+ARC	577	2430	43
+ARC	-577	1803	44
+ARC	578	3471	1
+ARC	-578	4534	1
+ARC	579	-2885	52
+ARC	579	4049	1
+ARC	-579	-2660	1
+ARC	-579	1610	58
+ARC	580	-907	69
+ARC	-580	-2906	44
+ARC	-580	4126	1
+ARC	581	-4118	1
+ARC	581	1553	46
+ARC	-581	-1313	62
+ARC	582	-1785	53
+ARC	582	4277	2
+ARC	583	1264	21
+ARC	583	4502	1
+ARC	-583	-2857	68
+ARC	-583	4007	1
+ARC	584	-4092	1
+ARC	584	585	310
+ARC	-584	1655	298
+ARC	-584	3170	3
+ARC	585	-1753	1
+ARC	585	586	332
+ARC	586	587	339
+ARC	586	4535	1
+ARC	587	588	337
+ARC	588	1003	367
+ARC	-588	4092	2
+ARC	589	-1003	343
+ARC	589	1753	15
+ARC	-589	-3847	1
+ARC	590	-4460	1
+ARC	590	2597	38
+ARC	-590	-2898	60
+ARC	-590	3206	7
+ARC	591	592	47
+ARC	591	3320	21
+ARC	-591	-4053	1
+ARC	-591	-2612	49
+ARC	592	1204	50
+ARC	593	-3660	1
+ARC	593	2532	37
+ARC	-593	2483	49
+ARC	594	945	40
+ARC	595	2422	45
+ARC	-595	3452	2
+ARC	596	-597	25
+ARC	-596	1098	25
+ARC	597	-3586	1
+ARC	-597	-2355	38
+ARC	-597	3869	1
+ARC	-598	1069	73
+ARC	-598	3207	1
+ARC	599	600	72
+ARC	-599	1376	63
+ARC	600	2343	47
+ARC	-600	3581	1
+ARC	601	602	385
+ARC	601	3904	1
+ARC	-601	-3388	1
+ARC	-601	688	372
+ARC	602	603	390
+ARC	602	3662	1
+ARC	603	-2378	3
+ARC	603	604	433
+ARC	604	605	442
+ARC	604	3664	3
+ARC	605	606	201
+ARC	605	1107	252
+ARC	606	-1949	136
+ARC	606	607	65
+ARC	607	-2457	61
+ARC	607	4567	1
+ARC	608	-1244	310
+ARC	608	3117	5
+ARC	-608	-1846	337
+ARC	-608	3633	1
+ARC	-608	3877	1
+ARC	609	1004	54
+ARC	-609	-3587	1
+ARC	610	-1449	65
+ARC	-610	-4117	1
+ARC	-610	-2297	45
+ARC	611	-2609	1
+ARC	611	1955	61
+ARC	-611	-4389	1
+ARC	612	-4341	1
+ARC	612	1582	56
+ARC	-612	-3740	1
+ARC	-612	682	62
+ARC	613	1049	40
+ARC	613	3435	1
+ARC	-613	-1610	52
+ARC	-613	2660	7
+ARC	614	769	64
+ARC	614	3834	1
+ARC	-614	1013	29
+ARC	-614	4301	1
+ARC	615	4207	1
+ARC	-616	-4528	1
+ARC	-616	668	59
+ARC	617	-4194	1
+ARC	617	-3124	51
+ARC	618	-1151	60
+ARC	618	3371	1
+ARC	-618	-625	70
+ARC	619	-665	91
+ARC	619	4111	1
+ARC	-619	3464	175
+ARC	-619	4217	1
+ARC	-620	-1205	49
+ARC	621	-843	72
+ARC	-621	-2071	37
+ARC	-621	3254	2
+ARC	622	-4054	1
+ARC	-622	-1499	90
+ARC	-622	4016	1
+ARC	623	2882	44
+ARC	-623	-963	48
+ARC	-623	3854	1
+ARC	624	-2477	34
+ARC	625	-4207	1
+ARC	-625	-4203	1
+ARC	-625	2661	51
+ARC	626	-4384	1
+ARC	626	-2724	48
+ARC	-626	-3465	3
+ARC	-626	3159	28
+ARC	-627	-4448	2
+ARC	-627	1515	45
+ARC	628	-4321	1
+ARC	628	1657	56
+ARC	-628	-2828	55
+ARC	-628	3539	1
+ARC	629	-1297	50
+ARC	629	3925	1
+ARC	-629	1960	61
+ARC	-629	4322	1
+ARC	630	-4052	1
+ARC	630	-1649	59
+ARC	-630	2383	62
+ARC	631	-2547	48
+ARC	-631	2602	31
+ARC	632	-2832	56
+ARC	632	3960	1
+ARC	633	-4201	1
+ARC	633	-981	54
+ARC	-633	862	50
+ARC	-633	3689	1
+ARC	634	-727	34
+ARC	-634	2021	57
+ARC	-634	3280	2
+ARC	635	1226	56
+ARC	635	4417	1
+ARC	-635	-3533	1
+ARC	-635	2945	37
+ARC	636	-1044	48
+ARC	636	4569	1
+ARC	-636	-1770	58
+ARC	-636	2863	1
+ARC	637	-3778	1
+ARC	637	-1015	56
+ARC	-637	-3971	1
+ARC	-637	1312	41
+ARC	638	-2423	50
+ARC	638	3169	1
+ARC	639	-1130	48
+ARC	640	-3436	52
+ARC	-640	-1566	65
+ARC	641	-642	68
+ARC	-641	3436	60
+ARC	642	3317	4
+ARC	643	-4256	1
+ARC	-643	-4141	1
+ARC	-643	729	55
+ARC	-644	2034	74
+ARC	645	-4179	2
+ARC	645	-1058	59
+ARC	-645	-3525	3
+ARC	-645	2248	41
+ARC	646	-1310	36
+ARC	-646	1020	40
+ARC	-646	4431	1
+ARC	647	-2009	51
+ARC	647	4541	1
+ARC	-647	2577	69
+ARC	-647	3383	1
+ARC	648	2965	38
+ARC	648	4022	4
+ARC	-648	-2883	1
+ARC	-648	-1292	51
+ARC	649	-2207	36
+ARC	-649	-2908	42
+ARC	650	-1956	47
+ARC	-650	2111	40
+ARC	651	1731	41
+ARC	-651	-770	34
+ARC	652	1326	47
+ARC	652	3835	1
+ARC	-652	-2306	43
+ARC	-652	4580	1
+ARC	653	-1051	50
+ARC	-654	-3427	31
+ARC	-654	-2241	1
+ARC	655	-4517	1
+ARC	655	-1802	46
+ARC	-655	-4366	1
+ARC	656	2402	57
+ARC	656	3969	2
+ARC	-656	-2400	1
+ARC	-656	2545	76
+ARC	657	-658	32
+ARC	657	3217	4
+ARC	659	-747	47
+ARC	-659	-3214	1
+ARC	-659	-2446	51
+ARC	660	-1864	70
+ARC	-660	1449	32
+ARC	661	-3642	1
+ARC	-661	-1709	51
+ARC	-661	3420	4
+ARC	-662	1010	39
+ARC	-662	3765	2
+ARC	663	-1716	1
+ARC	663	1411	67
+ARC	-663	4099	1
+ARC	664	-2320	56
+ARC	664	3728	1
+ARC	-664	-1325	57
+ARC	-665	-807	91
+ARC	666	-1226	23
+ARC	-666	-896	54
+ARC	667	-2646	57
+ARC	667	-1240	1
+ARC	-667	4524	1
+ARC	668	-3219	1
+ARC	668	-1574	40
+ARC	669	-3992	1
+ARC	669	-1373	59
+ARC	-669	1526	56
+ARC	-669	3585	1
+ARC	670	2547	37
+ARC	670	4103	1
+ARC	-670	-4176	1
+ARC	-670	-2661	42
+ARC	671	672	399
+ARC	671	4581	1
+ARC	-671	-3631	1
+ARC	-671	1746	331
+ARC	672	-837	397
+ARC	673	1379	397
+ARC	673	2322	2
+ARC	-673	-3568	1
+ARC	-673	-1667	440
+ARC	674	-2260	53
+ARC	674	3494	7
+ARC	-674	-4602	1
+ARC	-674	1772	47
+ARC	675	-1076	43
+ARC	675	3444	3
+ARC	-675	-4155	1
+ARC	-675	867	36
+ARC	676	-4392	1
+ARC	-676	2508	51
+ARC	-676	4185	1
+ARC	678	-1046	57
+ARC	678	4213	2
+ARC	-678	-4334	1
+ARC	-678	-3032	48
+ARC	679	-2666	52
+ARC	679	4140	1
+ARC	680	4196	2
+ARC	-680	-822	52
+ARC	-680	3050	1
+ARC	681	-1050	59
+ARC	681	3881	1
+ARC	-681	-4257	1
+ARC	-681	-1560	45
+ARC	682	-1350	54
+ARC	682	3702	2
+ARC	683	-2462	57
+ARC	-683	2034	68
+ARC	684	-2389	1
+ARC	684	796	180
+ARC	-684	-3294	1
+ARC	-684	1465	133
+ARC	685	-3637	1
+ARC	685	-2230	50
+ARC	-685	-1898	51
+ARC	-685	4269	1
+ARC	686	1533	226
+ARC	-686	-2107	226
+ARC	687	-4282	2
+ARC	687	1346	56
+ARC	-687	-3843	1
+ARC	-687	2205	64
+ARC	688	703	373
+ARC	689	-2381	2
+ARC	689	1646	51
+ARC	-689	1345	52
+ARC	-689	3470	2
+ARC	690	-2169	41
+ARC	-690	3366	1
+ARC	691	-4227	1
+ARC	691	1418	52
+ARC	-691	2274	36
+ARC	-691	3745	1
+ARC	-692	-869	59
+ARC	-692	4113	1
+ARC	693	-2262	42
+ARC	-693	-4013	1
+ARC	-693	1935	49
+ARC	694	2129	71
+ARC	694	3618	1
+ARC	-694	-2686	39
+ARC	-694	2336	5
+ARC	695	-3618	1
+ARC	695	-2129	62
+ARC	-695	-915	56
+ARC	-696	1140	55
+ARC	697	-2685	47
+ARC	-697	-4198	1
+ARC	698	1497	397
+ARC	-698	-2371	314
+ARC	699	2575	60
+ARC	-699	-3945	1
+ARC	700	701	42
+ARC	700	3920	1
+ARC	-700	-1460	44
+ARC	701	-1534	52
+ARC	701	4488	2
+ARC	702	-704	323
+ARC	702	3698	2
+ARC	-702	-3170	1
+ARC	-702	-1655	328
+ARC	703	-3698	1
+ARC	703	704	323
+ARC	-703	3388	1
+ARC	705	1349	50
+ARC	-705	-2576	29
+ARC	-705	3779	1
+ARC	706	-2437	42
+ARC	706	4476	1
+ARC	-706	-3779	1
+ARC	-706	2576	38
+ARC	707	-3483	1
+ARC	707	2635	42
+ARC	-707	3767	1
+ARC	708	709	184
+ARC	708	4597	1
+ARC	-708	-2936	1
+ARC	-708	-1784	225
+ARC	709	-2213	124
+ARC	709	1293	65
+ARC	710	-2587	45
+ARC	710	4297	3
+ARC	-710	-3260	1
+ARC	-710	3087	53
+ARC	-711	-902	200
+ARC	-712	1768	62
+ARC	-713	-1988	47
+ARC	-713	4084	1
+ARC	714	-3111	54
+ARC	714	4199	1
+ARC	-714	-1747	48
+ARC	-714	4356	1
+ARC	715	1322	54
+ARC	715	3781	1
+ARC	-715	-4116	1
+ARC	-715	1617	42
+ARC	-716	3941	2
+ARC	717	-1665	56
+ARC	717	4439	1
+ARC	-717	864	43
+ARC	718	-4042	2
+ARC	718	-737	61
+ARC	-718	-1291	45
+ARC	719	-4129	1
+ARC	719	1622	38
+ARC	-719	-1887	40
+ARC	720	-1841	81
+ARC	720	4560	1
+ARC	-720	-3064	1
+ARC	-720	2698	43
+ARC	721	-1337	47
+ARC	721	4604	1
+ARC	-721	-2069	58
+ARC	-721	3423	4
+ARC	722	-2074	80
+ARC	722	3329	2
+ARC	-722	1950	59
+ARC	723	-4223	1
+ARC	723	1030	65
+ARC	-723	-3750	1
+ARC	-723	-1214	55
+ARC	724	-2155	38
+ARC	725	-4344	1
+ARC	725	2917	51
+ARC	-725	1587	52
+ARC	726	-2917	50
+ARC	726	4344	1
+ARC	-726	750	80
+ARC	727	-3673	1
+ARC	-728	-4063	1
+ARC	-728	2164	56
+ARC	729	-3616	1
+ARC	729	2161	35
+ARC	730	-1436	64
+ARC	730	3950	1
+ARC	-730	-924	43
+ARC	731	732	73
+ARC	-731	2771	41
+ARC	-731	2801	3
+ARC	732	733	155
+ARC	-732	1811	132
+ARC	733	-736	310
+ARC	-733	-1899	132
+ARC	-733	3267	43
+ARC	734	-2076	312
+ARC	-734	935	257
+ARC	-734	2077	57
+ARC	735	736	311
+ARC	-735	2076	311
+ARC	-736	-2390	43
+ARC	-737	-1467	57
+ARC	-737	4532	1
+ARC	738	-3865	61
+ARC	-738	1603	43
+ARC	739	-740	53
+ARC	-739	3865	53
+ARC	740	4508	1
+ARC	-740	-4228	2
+ARC	741	-1931	48
+ARC	741	4547	2
+ARC	-741	-3761	1
+ARC	-741	3012	30
+ARC	742	-3654	1
+ARC	742	1702	357
+ARC	-742	-3491	372
+ARC	-742	-3153	1
+ARC	743	744	398
+ARC	743	4413	2
+ARC	744	745	409
+ARC	744	3234	3
+ARC	745	3884	1
+ARC	746	1623	35
+ARC	746	4168	1
+ARC	-746	-3359	1
+ARC	-746	-931	55
+ARC	747	4188	1
+ARC	-747	-3634	1
+ARC	748	749	186
+ARC	-748	-2098	136
+ARC	-748	2165	52
+ARC	749	750	358
+ARC	-749	1722	154
+ARC	750	751	361
+ARC	750	1879	60
+ARC	751	752	362
+ARC	-751	3891	3
+ARC	752	-1088	158
+ARC	752	1192	261
+ARC	-752	-2101	63
+ARC	753	754	99
+ARC	-753	-1382	120
+ARC	-753	4094	1
+ARC	754	3596	248
+ARC	-754	-2041	152
+ARC	-755	-764	49
+ARC	-755	4471	1
+ARC	756	1899	66
+ARC	-756	2892	45
+ARC	758	-2144	65
+ARC	-758	833	62
+ARC	759	2133	419
+ARC	759	4419	1
+ARC	-759	1177	435
+ARC	760	761	254
+ARC	760	2213	139
+ARC	-760	-2133	402
+ARC	761	762	70
+ARC	761	2134	186
+ARC	762	1075	65
+ARC	762	4098	1
+ARC	763	1780	194
+ARC	-763	1719	207
+ARC	-764	1153	48
+ARC	765	-4292	1
+ARC	765	-1145	52
+ARC	-765	3065	57
+ARC	-765	3998	2
+ARC	766	1984	59
+ARC	766	2881	51
+ARC	-766	-1843	83
+ARC	-766	2127	76
+ARC	767	-1984	39
+ARC	-767	2265	69
+ARC	768	4042	1
+ARC	-768	1945	48
+ARC	769	-3308	1
+ARC	769	-2628	49
+ARC	770	-2081	1
+ARC	-770	844	2
+ARC	-770	2495	42
+ARC	771	1080	40
+ARC	-771	-923	39
+ARC	772	-3536	2
+ARC	772	2447	63
+ARC	-772	-4397	1
+ARC	-772	1759	35
+ARC	-773	-1004	32
+ARC	-773	4147	2
+ARC	774	2534	3
+ARC	774	4268	1
+ARC	-774	2964	5
+ARC	775	-1199	30
+ARC	775	776	24
+ARC	-775	-1198	33
+ARC	-775	1917	42
+ARC	776	-2962	27
+ARC	776	3872	3
+ARC	777	2422	45
+ARC	-777	1419	49
+ARC	-777	3961	1
+ARC	778	3550	1
+ARC	778	4549	45
+ARC	-778	-3430	1
+ARC	-778	2762	49
+ARC	779	-1966	41
+ARC	-779	-2276	78
+ARC	-779	3718	1
+ARC	780	-781	69
+ARC	-780	-4494	2
+ARC	-780	1705	83
+ARC	781	-3471	1
+ARC	-781	-3923	3
+ARC	-781	-3635	33
+ARC	782	-4407	1
+ARC	782	1438	49
+ARC	-782	2440	51
+ARC	783	1319	59
+ARC	-783	-804	70
+ARC	-783	4056	1
+ARC	784	843	56
+ARC	-784	857	50
+ARC	785	1391	60
+ARC	-785	-1390	53
+ARC	786	-2602	44
+ARC	786	3323	1
+ARC	-786	3927	1
+ARC	787	-2692	1
+ARC	787	788	63
+ARC	-787	-4262	1
+ARC	-787	-2056	62
+ARC	788	-2562	67
+ARC	789	-3509	1
+ARC	789	2728	69
+ARC	-789	-3718	1
+ARC	-789	2276	65
+ARC	790	821	28
+ARC	-790	-3950	1
+ARC	-790	2564	56
+ARC	791	-806	69
+ARC	-791	4359	1
+ARC	792	-4393	1
+ARC	792	3225	78
+ARC	-792	-4470	2
+ARC	793	3701	4
+ARC	-793	-3402	2
+ARC	-793	3306	19
+ARC	-794	1739	53
+ARC	-794	3762	1
+ARC	795	1864	62
+ARC	796	-1907	2
+ARC	796	797	190
+ARC	797	798	170
+ARC	798	1877	164
+ARC	-798	2704	10
+ARC	799	-4081	1
+ARC	799	1670	37
+ARC	-799	-4458	1
+ARC	-799	3274	51
+ARC	800	2894	75
+ARC	-800	1485	44
+ARC	-801	-2438	70
+ARC	802	-1867	69
+ARC	-802	-2987	39
+ARC	-802	3731	7
+ARC	803	-2299	48
+ARC	-803	-1115	79
+ARC	-803	4266	1
+ARC	-804	3001	71
+ARC	805	-3524	1
+ARC	-805	-4523	1
+ARC	806	-4331	1
+ARC	-806	-3245	1
+ARC	-806	2479	18
+ARC	807	-4111	1
+ARC	808	2121	54
+ARC	-808	-2662	42
+ARC	-808	4490	3
+ARC	-809	-4320	1
+ARC	810	1178	56
+ARC	810	3711	1
+ARC	-810	-4113	1
+ARC	-810	869	64
+ARC	-811	3166	46
+ARC	-811	4429	2
+ARC	-811	4436	1
+ARC	812	-2722	54
+ARC	812	3107	1
+ARC	-812	-1464	2
+ARC	-812	1448	45
+ARC	813	814	23
+ARC	-813	3010	15
+ARC	814	3454	22
+ARC	814	4441	1
+ARC	-814	-4326	2
+ARC	815	816	42
+ARC	-815	-942	49
+ARC	-816	2811	29
+ARC	817	-818	32
+ARC	817	1035	29
+ARC	-817	1556	49
+ARC	-817	3501	5
+ARC	-818	-942	38
+ARC	819	4086	1
+ARC	819	4128	100
+ARC	-819	-4009	1
+ARC	-819	-929	86
+ARC	820	2838	5
+ARC	-820	-3701	1
+ARC	-820	-2988	57
+ARC	821	-1369	60
+ARC	-821	4320	1
+ARC	-822	-3480	1
+ARC	823	-3675	1
+ARC	823	3003	47
+ARC	-823	-2362	1
+ARC	-823	-1105	78
+ARC	-824	833	59
+ARC	-825	4000	4
+ARC	-826	-1143	49
+ARC	-826	3677	1
+ARC	827	-951	49
+ARC	-827	-4566	1
+ARC	-827	-2058	57
+ARC	828	4051	1
+ARC	-828	3499	1
+ARC	829	2764	64
+ARC	829	4197	1
+ARC	830	-3913	1
+ARC	830	-831	64
+ARC	-830	-3266	1
+ARC	-830	-1531	71
+ARC	-831	-4205	1
+ARC	-831	-3356	55
+ARC	832	-4005	1
+ARC	-832	944	42
+ARC	833	-834	92
+ARC	833	1457	8
+ARC	-834	-1458	89
+ARC	835	-4076	1
+ARC	835	-836	53
+ARC	-835	-2024	32
+ARC	-835	3171	15
+ARC	-836	-842	60
+ARC	837	-4581	1
+ARC	-837	1666	349
+ARC	-837	4358	1
+ARC	838	839	56
+ARC	-838	-4018	1
+ARC	-838	-2121	53
+ARC	839	-2533	76
+ARC	839	3521	7
+ARC	-839	-945	89
+ARC	-839	3988	3
+ARC	840	1790	39
+ARC	840	3632	3
+ARC	-840	-4294	1
+ARC	-840	-2158	52
+ARC	841	3413	1
+ARC	-841	-4017	1
+ARC	-841	2723	48
+ARC	842	4076	5
+ARC	-842	-1847	60
+ARC	-842	2765	5
+ARC	843	4355	2
+ARC	-843	4511	2
+ARC	845	-846	42
+ARC	-845	1084	50
+ARC	846	2225	43
+ARC	-846	1377	83
+ARC	847	-1935	52
+ARC	847	4013	1
+ARC	-847	-1627	35
+ARC	848	-4152	1
+ARC	849	1507	44
+ARC	849	3000	2
+ARC	-849	4227	2
+ARC	850	-2090	42
+ARC	851	852	112
+ARC	-851	-2665	120
+ARC	852	2003	108
+ARC	852	3670	1
+ARC	-852	-3742	1
+ARC	853	-2422	45
+ARC	-853	-3758	2
+ARC	-853	-1480	37
+ARC	854	-856	358
+ARC	854	3517	1
+ARC	-854	-3959	1
+ARC	-854	-955	364
+ARC	855	856	364
+ARC	-855	-3720	1
+ARC	-855	1183	345
+ARC	-856	4555	2
+ARC	857	1831	64
+ARC	857	3897	2
+ARC	-857	4018	1
+ARC	858	-1550	62
+ARC	-858	2113	32
+ARC	-858	3432	6
+ARC	859	-4128	105
+ARC	859	-4086	1
+ARC	-859	-2217	119
+ARC	-859	3459	1
+ARC	-860	3968	1
+ARC	861	-4277	2
+ARC	-861	3892	1
+ARC	862	2614	43
+ARC	863	4067	1
+ARC	864	1608	30
+ARC	864	3928	1
+ARC	-864	3310	4
+ARC	865	-4613	1
+ARC	866	-867	66
+ARC	866	4155	1
+ARC	-866	-2934	3
+ARC	-866	2399	46
+ARC	868	-2808	1
+ARC	868	1206	47
+ARC	-868	-4403	1
+ARC	-868	-884	29
+ARC	870	-4561	1
+ARC	870	-1754	47
+ARC	-870	-3233	23
+ARC	-870	4308	1
+ARC	871	-3072	1
+ARC	871	872	43
+ARC	-871	-3047	86
+ARC	-871	3260	1
+ARC	872	873	57
+ARC	873	1692	51
+ARC	873	3706	1
+ARC	-873	3072	3
+ARC	874	2158	76
+ARC	874	4294	2
+ARC	-874	-1038	53
+ARC	875	1058	45
+ARC	875	4100	1
+ARC	-875	-3736	1
+ARC	-875	2717	44
+ARC	876	4109	2
+ARC	-876	-3854	1
+ARC	-876	-1315	82
+ARC	877	878	379
+ARC	877	2623	36
+ARC	-877	-4314	1
+ARC	-877	1258	570
+ARC	878	879	355
+ARC	878	2194	27
+ARC	879	880	327
+ARC	879	2793	12
+ARC	880	-2813	1
+ARC	880	-1953	322
+ARC	881	-882	63
+ARC	-881	-4359	1
+ARC	882	4366	1
+ARC	-882	-3629	1
+ARC	-882	2110	46
+ARC	883	4254	1
+ARC	-883	-4477	1
+ARC	-883	1441	54
+ARC	-884	2866	62
+ARC	885	3139	53
+ARC	885	3181	5
+ARC	-885	896	44
+ARC	886	2253	44
+ARC	886	4032	1
+ARC	-886	-4342	1
+ARC	-886	-1057	38
+ARC	887	-888	49
+ARC	887	4450	1
+ARC	-887	-3313	1
+ARC	-887	3314	64
+ARC	-888	-3874	1
+ARC	889	890	83
+ARC	889	3903	1
+ARC	-889	-3881	1
+ARC	-889	-1207	77
+ARC	890	-891	78
+ARC	891	-3903	1
+ARC	-891	-3092	1
+ARC	-891	-1359	63
+ARC	892	-4279	1
+ARC	892	-1608	36
+ARC	-892	2222	67
+ARC	-892	4472	1
+ARC	893	-2040	43
+ARC	-893	-2039	41
+ARC	894	2539	39
+ARC	-894	2289	38
+ARC	895	-3775	1
+ARC	895	-1808	40
+ARC	896	2132	1
+ARC	-896	-4471	1
+ARC	897	1861	58
+ARC	897	4462	1
+ARC	-897	3224	54
+ARC	-897	4165	1
+ARC	898	2471	42
+ARC	898	3853	1
+ARC	899	-4509	1
+ARC	899	-1810	54
+ARC	-899	-2025	49
+ARC	900	-2062	42
+ARC	900	3122	4
+ARC	-900	2314	74
+ARC	901	-2472	37
+ARC	901	3694	7
+ARC	-901	1180	62
+ARC	-901	3830	1
+ARC	902	2354	2
+ARC	-902	-4487	1
+ARC	-902	-1902	192
+ARC	903	2182	63
+ARC	904	1864	78
+ARC	-904	-1864	46
+ARC	905	1747	82
+ARC	906	-3105	56
+ARC	906	3766	1
+ARC	907	-4418	1
+ARC	-907	1458	57
+ARC	908	-3991	1
+ARC	-908	1575	53
+ARC	909	-1074	56
+ARC	-909	-4028	1
+ARC	-909	1717	50
+ARC	910	-1127	65
+ARC	910	911	324
+ARC	-910	-965	425
+ARC	911	912	367
+ARC	912	-4060	1
+ARC	912	-2415	421
+ARC	-912	3551	1
+ARC	913	-4284	1
+ARC	913	1070	460
+ARC	-913	2415	436
+ARC	-913	4545	1
+ARC	914	4509	1
+ARC	915	4599	2
+ARC	-915	-4375	1
+ARC	-915	1733	37
+ARC	-916	-1722	42
+ARC	917	-2862	1
+ARC	917	2135	61
+ARC	-917	-4373	1
+ARC	918	2571	51
+ARC	919	-2566	59
+ARC	-919	-1405	40
+ARC	-919	3507	6
+ARC	920	2884	41
+ARC	920	3629	1
+ARC	-920	1527	45
+ARC	-920	3848	1
+ARC	921	-4519	1
+ARC	-921	-1791	42
+ARC	-921	3477	1
+ARC	922	-2874	34
+ARC	923	-4590	1
+ARC	-923	-3621	1
+ARC	-923	2220	26
+ARC	924	925	77
+ARC	-924	-2667	69
+ARC	-924	926	40
+ARC	925	-2524	50
+ARC	926	2524	55
+ARC	926	4305	1
+ARC	927	-2785	58
+ARC	927	3502	1
+ARC	928	1755	34
+ARC	928	4478	1
+ARC	-929	-1306	85
+ARC	930	-4467	1
+ARC	-930	-1500	63
+ARC	-930	-1272	1
+ARC	-931	-2327	52
+ARC	932	-4323	1
+ARC	932	-1987	70
+ARC	-932	-3477	1
+ARC	933	-934	54
+ARC	-933	-3366	1
+ARC	-933	-980	48
+ARC	934	-978	45
+ARC	-934	-1763	52
+ARC	935	-3602	1
+ARC	935	1900	257
+ARC	936	-4174	1
+ARC	936	2245	193
+ARC	-936	-1900	202
+ARC	937	938	130
+ARC	-937	-2245	168
+ARC	938	-3009	89
+ARC	938	1397	38
+ARC	939	-3438	1
+ARC	939	-940	48
+ARC	-940	-1087	47
+ARC	941	-2454	1
+ARC	941	990	44
+ARC	-941	1885	50
+ARC	-941	3514	3
+ARC	-942	-2811	24
+ARC	-942	-1035	48
+ARC	-943	-2455	1
+ARC	-943	2028	155
+ARC	-944	-4332	1
+ARC	946	947	78
+ARC	946	3605	2
+ARC	-946	-4451	1
+ARC	-946	985	72
+ARC	-948	-962	56
+ARC	-949	1460	54
+ARC	-949	4186	1
+ARC	951	-4559	1
+ARC	-951	4578	1
+ARC	952	-3666	1
+ARC	952	-2574	44
+ARC	-952	-2566	57
+ARC	953	-1959	70
+ARC	953	4072	1
+ARC	-953	-1418	65
+ARC	954	-4543	1
+ARC	-954	-3669	1
+ARC	-954	2401	46
+ARC	956	1224	481
+ARC	-956	-1223	511
+ARC	957	2296	441
+ARC	-957	-3947	1
+ARC	-957	-1224	468
+ARC	958	959	182
+ARC	-958	-2017	295
+ARC	959	-2296	388
+ARC	-959	2191	196
+ARC	960	-4161	1
+ARC	960	2861	48
+ARC	-960	-2314	58
+ARC	-960	4455	1
+ARC	961	2627	69
+ARC	-961	-3248	2
+ARC	-961	2328	57
+ARC	962	4160	1
+ARC	-962	-3767	1
+ARC	-962	-1647	41
+ARC	-963	-3657	3
+ARC	964	-3023	21
+ARC	964	4537	1
+ARC	-964	966	45
+ARC	-964	4542	1
+ARC	965	-4545	1
+ARC	-965	-1601	399
+ARC	966	2726	82
+ARC	966	4175	1
+ARC	-967	-3049	1
+ARC	-967	3020	37
+ARC	968	1308	62
+ARC	968	4521	1
+ARC	969	-3502	1
+ARC	969	2785	45
+ARC	-969	-3557	1
+ARC	-969	-1166	38
+ARC	970	-1017	55
+ARC	971	972	50
+ARC	-971	4245	1
+ARC	972	-2914	1
+ARC	972	3040	37
+ARC	-972	-3255	1
+ARC	-973	-4525	1
+ARC	-973	-3405	1
+ARC	-973	2817	39
+ARC	974	2777	1
+ARC	-974	-2255	45
+ARC	-974	4302	1
+ARC	975	-1782	47
+ARC	-975	-2187	53
+ARC	-975	3673	1
+ARC	976	-1605	61
+ARC	-976	-3251	47
+ARC	977	-1365	54
+ARC	977	4412	1
+ARC	-977	-3404	1
+ARC	-977	1969	50
+ARC	-978	-2462	51
+ARC	979	-3609	1
+ARC	979	-1936	65
+ARC	-979	-3452	1
+ARC	-980	-1965	58
+ARC	-981	-2132	1
+ARC	-981	2197	66
+ARC	982	2628	53
+ARC	982	3308	2
+ARC	-982	1947	45
+ARC	983	984	75
+ARC	983	4089	1
+ARC	-983	-4497	2
+ARC	984	-986	78
+ARC	984	4451	2
+ARC	985	-4089	1
+ARC	985	986	71
+ARC	-987	1335	37
+ARC	988	1335	2
+ARC	989	3189	36
+ARC	989	3735	2
+ARC	-989	-3751	1
+ARC	-989	-1707	71
+ARC	990	2418	43
+ARC	991	1040	54
+ARC	-991	-3280	1
+ARC	-991	2688	56
+ARC	-992	3617	1
+ARC	993	-2961	68
+ARC	-993	-4199	1
+ARC	-993	3111	56
+ARC	994	2925	54
+ARC	994	4222	2
+ARC	-994	-4066	1
+ARC	-994	-3147	34
+ARC	995	-3564	1
+ARC	-995	-4555	1
+ARC	-995	-1624	63
+ARC	996	-4396	1
+ARC	996	2799	30
+ARC	-996	4523	1
+ARC	997	2171	55
+ARC	997	3839	1
+ARC	-997	-4316	1
+ARC	998	-4136	1
+ARC	998	-2551	37
+ARC	999	-4051	1
+ARC	-999	2503	74
+ARC	1000	1189	323
+ARC	-1000	-3752	354
+ARC	-1000	3542	1
+ARC	1001	1609	216
+ARC	1001	3730	2
+ARC	-1001	-1218	240
+ARC	1002	-1569	49
+ARC	1002	4343	3
+ARC	-1002	1903	52
+ARC	-1003	-4535	1
+ARC	-1004	3760	1
+ARC	1005	-3590	1
+ARC	1005	-3056	48
+ARC	-1005	-3418	1
+ARC	1006	1339	376
+ARC	1007	1234	58
+ARC	1007	1489	56
+ARC	-1007	1271	69
+ARC	1008	-1489	49
+ARC	-1008	2575	55
+ARC	1009	-1465	100
+ARC	1009	3294	2
+ARC	-1009	-3682	1
+ARC	-1009	2305	173
+ARC	1010	1990	59
+ARC	1011	-1587	49
+ARC	-1011	-1715	52
+ARC	-1012	-4226	1
+ARC	-1012	1958	42
+ARC	1013	-1725	49
+ARC	1013	4530	1
+ARC	1014	-3774	1
+ARC	1014	-2092	49
+ARC	-1014	1156	5
+ARC	1016	4035	1
+ARC	-1016	2480	37
+ARC	-1016	2967	4
+ARC	1017	-4481	1
+ARC	1018	-3306	29
+ARC	1018	3402	2
+ARC	-1018	-4586	2
+ARC	-1018	2712	68
+ARC	1019	1678	42
+ARC	1019	4596	1
+ARC	-1019	2448	43
+ARC	-1019	3249	3
+ARC	1021	-1824	1
+ARC	1021	1022	36
+ARC	-1021	-4312	1
+ARC	-1021	-1658	61
+ARC	1022	1023	35
+ARC	1022	4189	1
+ARC	1023	-1661	39
+ARC	1024	-2336	1
+ARC	1024	2686	52
+ARC	-1024	-2671	47
+ARC	-1024	-2036	2
+ARC	1025	-3264	32
+ARC	1025	4380	1
+ARC	-1025	-1302	51
+ARC	1026	-4153	2
+ARC	1026	3362	45
+ARC	1027	1925	52
+ARC	-1027	2265	47
+ARC	1028	-2102	51
+ARC	1029	-1575	22
+ARC	1030	-3371	3
+ARC	1030	1570	55
+ARC	-1031	-1980	56
+ARC	1032	-3126	1
+ARC	1032	2375	64
+ARC	-1032	2814	8
+ARC	1033	-1800	30
+ARC	1033	3299	6
+ARC	-1033	-1618	37
+ARC	-1033	4497	1
+ARC	1034	-2236	31
+ARC	1036	1201	46
+ARC	1036	4594	1
+ARC	-1036	-2299	65
+ARC	1037	3160	75
+ARC	1037	3437	2
+ARC	-1037	4120	1
+ARC	1038	2773	1
+ARC	-1038	1649	55
+ARC	1039	4335	2
+ARC	-1039	1437	35
+ARC	1040	-4612	1
+ARC	1040	3182	51
+ARC	-1040	-3911	1
+ARC	-1041	-1973	21
+ARC	-1041	2295	20
+ARC	1042	-3674	1
+ARC	1042	-1043	76
+ARC	-1042	-1053	64
+ARC	-1042	4156	1
+ARC	-1043	-1187	81
+ARC	-1044	-3142	2
+ARC	-1044	3079	40
+ARC	1045	-2538	37
+ARC	-1045	-1422	32
+ARC	-1046	2786	76
+ARC	-1046	4309	1
+ARC	1047	-1048	44
+ARC	-1047	1872	61
+ARC	-1047	3918	1
+ARC	1048	4449	1
+ARC	-1048	2239	43
+ARC	1049	-4041	1
+ARC	1049	-2411	59
+ARC	-1050	-4303	1
+ARC	-1050	1952	61
+ARC	1051	-4168	1
+ARC	-1051	2363	37
+ARC	1052	-2765	1
+ARC	1052	1847	76
+ARC	-1052	4328	1
+ARC	-1053	-1761	49
+ARC	1054	-1055	79
+ARC	-1054	1924	69
+ARC	1055	-3810	1
+ARC	-1055	-2542	40
+ARC	1056	-3216	18
+ARC	1056	-3051	32
+ARC	-1056	-2037	53
+ARC	-1057	-4146	1
+ARC	-1057	2232	39
+ARC	1059	-4171	1
+ARC	1059	-1878	63
+ARC	-1059	4303	2
+ARC	1060	1061	84
+ARC	-1060	-3235	49
+ARC	-1060	3098	33
+ARC	1061	2537	82
+ARC	-1061	4552	1
+ARC	1062	-1794	27
+ARC	-1062	-1452	44
+ARC	1063	-4040	1
+ARC	1063	-2642	39
+ARC	-1063	-2375	48
+ARC	-1063	3126	1
+ARC	-1064	-4083	1
+ARC	-1064	-1967	92
+ARC	1065	-1375	49
+ARC	1065	3907	1
+ARC	-1065	3409	1
+ARC	-1066	1914	398
+ARC	1067	-2696	46
+ARC	1067	4006	1
+ARC	-1067	2311	80
+ARC	-1067	3593	5
+ARC	1068	-3735	2
+ARC	1068	-3189	36
+ARC	-1068	1123	56
+ARC	1070	1071	481
+ARC	1070	2936	1
+ARC	1071	1072	472
+ARC	-1071	4284	1
+ARC	1072	1073	427
+ARC	-1072	4060	2
+ARC	1073	1074	273
+ARC	1073	1784	221
+ARC	-1073	1127	81
+ARC	1074	1718	223
+ARC	1075	2695	52
+ARC	1075	4411	1
+ARC	-1076	-2368	1
+ARC	-1076	2772	41
+ARC	1077	4486	1
+ARC	-1077	2317	47
+ARC	-1077	4540	1
+ARC	1079	-1410	51
+ARC	-1079	-3845	1
+ARC	-1079	-2035	67
+ARC	1080	-4047	1
+ARC	1080	1317	45
+ARC	-1080	4590	1
+ARC	1081	-3040	28
+ARC	1081	2914	5
+ARC	-1081	-3797	2
+ARC	-1081	2488	46
+ARC	1082	-3022	31
+ARC	1082	-1281	38
+ARC	1082	1083	42
+ARC	-1082	-3121	1
+ARC	-1082	-2067	97
+ARC	1083	2366	3
+ARC	-1083	-1825	5
+ARC	1084	-4506	1
+ARC	1084	-3651	2
+ARC	1084	-3532	140
+ARC	-1084	-2227	89
+ARC	-1084	4507	1
+ARC	1085	-2542	15
+ARC	-1085	2542	26
+ARC	1086	-3210	1
+ARC	1086	3135	48
+ARC	1087	3438	1
+ARC	-1087	-1123	50
+ARC	-1087	4515	1
+ARC	-1088	1509	161
+ARC	1089	-3316	1
+ARC	1089	1090	363
+ARC	-1089	-2321	387
+ARC	-1089	4465	1
+ARC	1090	1981	372
+ARC	1091	1092	38
+ARC	-1091	3915	40
+ARC	1092	-3968	1
+ARC	-1092	3914	1
+ARC	1093	1094	35
+ARC	-1093	-2284	59
+ARC	1094	-3813	1
+ARC	1094	-2054	46
+ARC	-1094	3823	1
+ARC	1095	-4490	1
+ARC	1095	2662	48
+ARC	-1095	-2235	33
+ARC	1096	1991	42
+ARC	1096	3725	1
+ARC	-1096	2410	37
+ARC	1097	-1606	41
+ARC	1097	4561	1
+ARC	-1097	1173	58
+ARC	1098	-3591	1
+ARC	1098	1099	47
+ARC	-1098	3586	1
+ARC	1099	-3039	59
+ARC	-1100	3676	1
+ARC	1101	-2248	44
+ARC	1101	3525	4
+ARC	-1101	-2447	59
+ARC	-1101	3536	5
+ARC	-1102	2558	43
+ARC	1103	1184	46
+ARC	1104	-4050	1
+ARC	-1104	-3615	1
+ARC	-1104	1282	76
+ARC	-1105	-2488	48
+ARC	-1105	3797	1
+ARC	1106	-2655	57
+ARC	-1106	2470	49
+ARC	1107	1108	222
+ARC	1108	1109	211
+ARC	-1108	-3904	1
+ARC	1109	-2572	197
+ARC	-1109	-3662	1
+ARC	1110	-1112	49
+ARC	-1110	2572	49
+ARC	1111	1112	214
+ARC	-1111	-2840	216
+ARC	-1111	3985	1
+ARC	1112	-1694	140
+ARC	-1112	3262	10
+ARC	1113	-2052	1
+ARC	1113	2053	66
+ARC	-1113	-2301	80
+ARC	-1113	3566	3
+ARC	1114	1115	60
+ARC	1114	2094	49
+ARC	-1114	1933	55
+ARC	-1114	2517	49
+ARC	1116	1265	43
+ARC	-1116	3498	3
+ARC	-1116	3937	48
+ARC	-1116	4270	1
+ARC	1117	1118	51
+ARC	-1117	2173	48
+ARC	1118	-3977	1
+ARC	1118	1119	56
+ARC	-1118	2138	3
+ARC	1120	2877	2
+ARC	1120	3748	33
+ARC	1121	-2608	45
+ARC	1121	2607	5
+ARC	1122	-1401	84
+ARC	-1123	-4515	1
+ARC	1124	1704	350
+ARC	-1124	-2264	355
+ARC	1125	-1704	381
+ARC	-1125	3752	383
+ARC	-1126	-1289	48
+ARC	1128	-1905	1
+ARC	1128	-1129	60
+ARC	-1128	-1681	65
+ARC	-1128	3756	1
+ARC	-1129	1757	57
+ARC	1130	-4414	1
+ARC	-1130	-3196	45
+ARC	-1130	4192	1
+ARC	1131	-2452	27
+ARC	1131	3468	5
+ARC	-1131	-3807	1
+ARC	-1131	1501	47
+ARC	1132	-3468	2
+ARC	1132	2452	52
+ARC	-1132	-1941	35
+ARC	-1132	3982	5
+ARC	1133	-1968	50
+ARC	1133	-1290	1
+ARC	-1133	-4328	1
+ARC	-1133	-1200	48
+ARC	-1134	2157	72
+ARC	1135	1136	65
+ARC	-1135	2256	45
+ARC	1136	-1328	54
+ARC	1136	4499	1
+ARC	-1136	-4276	1
+ARC	1137	-4218	1
+ARC	1137	-1906	49
+ARC	1138	-1334	40
+ARC	1138	3382	2
+ARC	-1138	2348	33
+ARC	-1138	4475	1
+ARC	1139	-1140	57
+ARC	-1139	-1743	54
+ARC	1140	1211	58
+ARC	-1140	-1211	38
+ARC	1141	-1275	37
+ARC	1141	3531	1
+ARC	-1141	1525	66
+ARC	-1141	4410	1
+ARC	1142	-4329	1
+ARC	1142	2802	57
+ARC	-1142	-3127	1
+ARC	-1142	-2581	43
+ARC	-1143	-4565	1
+ARC	-1143	2002	76
+ARC	1144	-4416	1
+ARC	-1144	3069	47
+ARC	-1144	3543	1
+ARC	-1145	-1996	44
+ARC	1146	-1392	51
+ARC	1146	3951	1
+ARC	-1146	2491	24
+ARC	1147	-3537	81
+ARC	-1147	-1814	91
+ARC	-1147	3800	1
+ARC	1148	-1613	127
+ARC	-1148	3537	126
+ARC	1149	1150	93
+ARC	-1149	1961	91
+ARC	1150	1724	39
+ARC	1150	2656	30
+ARC	-1150	-3692	1
+ARC	-1151	-3505	1
+ARC	-1151	-3158	50
+ARC	1152	-2556	49
+ARC	1152	3563	1
+ARC	-1152	-3924	1
+ARC	-1152	3037	56
+ARC	1153	1493	47
+ARC	1153	3963	1
+ARC	-1153	-4551	1
+ARC	1154	-3760	1
+ARC	-1154	1513	54
+ARC	1155	1899	66
+ARC	-1155	-2575	62
+ARC	1157	1247	57
+ARC	-1157	2478	62
+ARC	1158	2478	129
+ARC	-1158	1247	105
+ARC	-1159	-3328	1
+ARC	-1159	2638	62
+ARC	1160	1410	56
+ARC	-1160	-2558	49
+ARC	1161	1162	51
+ARC	-1161	-2422	46
+ARC	1162	-3967	1
+ARC	1162	1163	51
+ARC	-1162	2428	52
+ARC	1163	1164	57
+ARC	1164	1581	38
+ARC	-1164	3967	2
+ARC	1165	-2156	46
+ARC	1165	3474	19
+ARC	-1165	1887	48
+ARC	-1166	1332	55
+ARC	-1166	4146	1
+ARC	1167	1168	61
+ARC	-1167	-2278	39
+ARC	1168	-3200	38
+ARC	1168	-2453	54
+ARC	-1168	-1948	41
+ARC	1169	1744	28
+ARC	-1169	2318	48
+ARC	1170	1190	57
+ARC	-1170	-2351	47
+ARC	-1170	3504	3
+ARC	1171	1172	47
+ARC	-1171	1268	48
+ARC	-1172	4503	1
+ARC	-1173	-4338	1
+ARC	-1174	-3362	33
+ARC	-1174	4153	2
+ARC	-1175	2019	72
+ARC	-1175	3603	5
+ARC	-1176	-2652	82
+ARC	-1177	-1294	73
+ARC	1178	4050	1
+ARC	1179	1659	60
+ARC	1179	4608	1
+ARC	-1179	1225	58
+ARC	1180	-1381	58
+ARC	1181	1182	37
+ARC	1181	4166	1
+ARC	-1181	1380	56
+ARC	1182	-1962	45
+ARC	1183	-1497	346
+ARC	1184	-4197	1
+ARC	1184	-2764	61
+ARC	-1184	-4147	2
+ARC	1185	1186	51
+ARC	1185	3408	8
+ARC	1186	-1626	48
+ARC	1186	4039	1
+ARC	1187	3674	1
+ARC	-1187	-3544	1
+ARC	-1187	-3053	52
+ARC	1188	-3681	1
+ARC	1188	2244	65
+ARC	-1188	-3994	1
+ARC	-1188	-1238	41
+ARC	1189	1682	318
+ARC	1190	-3562	1
+ARC	1190	-2373	57
+ARC	-1190	3358	1
+ARC	1191	-4588	1
+ARC	1191	1310	45
+ARC	1192	-4151	1
+ARC	1192	1193	245
+ARC	-1192	-3276	1
+ARC	1193	-3596	223
+ARC	1194	-3392	1
+ARC	1194	1195	223
+ARC	-1194	-1882	189
+ARC	-1194	2360	52
+ARC	1195	1883	226
+ARC	1196	1197	235
+ARC	1196	2920	10
+ARC	-1196	-2919	263
+ARC	1197	-2263	191
+ARC	1197	-1880	53
+ARC	-1198	-1918	31
+ARC	-1199	-2605	26
+ARC	-1200	-3875	1
+ARC	1201	-3000	1
+ARC	1201	-1508	46
+ARC	1202	-4120	1
+ARC	-1202	-2514	1
+ARC	1203	-2232	49
+ARC	-1203	-2451	66
+ARC	1204	1923	49
+ARC	-1204	-3320	17
+ARC	1205	-3717	1
+ARC	-1205	-2280	28
+ARC	-1205	2731	5
+ARC	1206	-4380	1
+ARC	1206	3264	32
+ARC	1209	1210	42
+ARC	-1209	-1714	40
+ARC	1210	1743	54
+ARC	-1210	3628	1
+ARC	-1212	2751	51
+ARC	-1212	4143	1
+ARC	1213	-4112	1
+ARC	1213	1786	46
+ARC	-1213	-3437	1
+ARC	-1213	2968	68
+ARC	-1214	2527	63
+ARC	1215	-1523	131
+ARC	1216	1217	1543
+ARC	-1216	-1220	1532
+ARC	-1216	3506	3
+ARC	1217	1218	1771
+ARC	-1217	-1557	202
+ARC	1218	-3506	1
+ARC	1218	1219	1497
+ARC	-1218	4219	1
+ARC	1219	-4219	1
+ARC	1219	1220	1533
+ARC	1222	1223	636
+ARC	-1222	-3044	636
+ARC	1223	2115	79
+ARC	1223	3947	3
+ARC	-1223	3784	1
+ARC	-1224	3330	3
+ARC	1225	-4006	1
+ARC	1225	2696	45
+ARC	-1225	-4372	1
+ARC	1226	-3999	1
+ARC	-1227	-1518	67
+ARC	1228	1634	62
+ARC	1228	4310	2
+ARC	-1228	-3876	1
+ARC	-1228	-2421	53
+ARC	1230	2476	47
+ARC	1230	3607	1
+ARC	-1230	-3961	1
+ARC	-1230	-1419	70
+ARC	1231	-1705	80
+ARC	1231	4494	2
+ARC	-1231	-3838	1
+ARC	-1231	3155	57
+ARC	1232	-4544	1
+ARC	1232	-2201	46
+ARC	-1232	-2984	1
+ARC	-1232	3036	32
+ARC	1233	2721	5
+ARC	1233	3140	51
+ARC	-1233	-4520	1
+ARC	-1233	-1288	50
+ARC	1234	-3610	1
+ARC	1234	1466	68
+ARC	1235	1873	62
+ARC	-1235	-2040	52
+ARC	1236	1237	67
+ARC	-1236	-1305	65
+ARC	1237	-3182	49
+ARC	1237	3610	1
+ARC	-1237	4347	1
+ARC	1239	1240	6
+ARC	1239	2646	53
+ARC	-1239	1930	33
+ARC	1242	-3869	1
+ARC	1242	2355	60
+ARC	-1242	-1587	61
+ARC	1243	-3117	1
+ARC	1243	1244	277
+ARC	-1243	-3852	1
+ARC	-1243	1695	274
+ARC	1245	2092	60
+ARC	1245	3774	2
+ARC	-1245	-1779	48
+ARC	1246	2825	65
+ARC	1246	4346	1
+ARC	-1246	-4337	1
+ARC	-1246	-1336	34
+ARC	1247	1248	177
+ARC	1248	-2478	184
+ARC	1249	1578	76
+ARC	1249	3837	1
+ARC	-1249	3192	23
+ARC	1250	2497	56
+ARC	-1250	1805	43
+ARC	1251	-2837	56
+ARC	1251	1252	1
+ARC	-1251	2340	55
+ARC	1252	2687	1
+ARC	1253	-3729	1
+ARC	1253	2969	31
+ARC	-1253	3876	1
+ARC	1254	-1403	64
+ARC	1254	1255	55
+ARC	-1254	2038	108
+ARC	1255	2239	54
+ARC	1256	1734	63
+ARC	1256	4037	1
+ARC	-1256	-2166	34
+ARC	1257	-3981	2
+ARC	-1257	-3868	3
+ARC	-1257	2583	177
+ARC	1258	-3446	1
+ARC	1258	1259	580
+ARC	1258	3331	1
+ARC	1259	1260	86
+ARC	1259	2114	476
+ARC	1260	3044	90
+ARC	1261	-3595	1
+ARC	1261	1985	144
+ARC	-1261	-2627	169
+ARC	-1261	-2247	86
+ARC	1262	2106	146
+ARC	-1262	-4594	1
+ARC	1263	2416	45
+ARC	-1263	-1502	52
+ARC	1265	3657	2
+ARC	-1265	-4474	1
+ARC	1266	-2907	30
+ARC	1266	3882	1
+ARC	-1266	1980	50
+ARC	1267	2004	62
+ARC	-1267	-1570	50
+ARC	1268	-2004	66
+ARC	1268	4491	1
+ARC	-1268	-4503	1
+ARC	1269	1805	72
+ARC	-1269	-2825	51
+ARC	-1269	4316	2
+ARC	1270	2229	32
+ARC	-1270	3489	32
+ARC	1271	-2711	59
+ARC	1271	4461	1
+ARC	-1272	1468	1
+ARC	1273	2808	1
+ARC	-1273	-1733	41
+ARC	1274	1275	50
+ARC	-1274	3935	1
+ARC	-1274	4110	36
+ARC	-1275	-3541	1
+ARC	1276	1445	55
+ARC	-1276	-3585	1
+ARC	1277	3114	68
+ARC	1277	4306	1
+ARC	1278	-1656	77
+ARC	-1278	1550	72
+ARC	-1279	-3809	1
+ARC	-1279	-1584	51
+ARC	1280	1281	69
+ARC	-1280	-3275	1
+ARC	-1280	-2812	58
+ARC	1281	-1825	50
+ARC	-1281	3520	2
+ARC	1282	3030	74
+ARC	-1283	1389	46
+ARC	-1284	3930	1
+ARC	-1285	-3834	1
+ARC	-1285	-2112	53
+ARC	1286	1287	354
+ARC	-1286	-2143	402
+ARC	1287	-2432	306
+ARC	1287	3227	1
+ARC	1287	3836	4
+ARC	-1287	-3850	3
+ARC	-1287	-2807	4
+ARC	-1287	-1929	10
+ARC	-1288	2769	64
+ARC	1289	3893	1
+ARC	-1289	4554	1
+ARC	1291	-4269	1
+ARC	-1291	1292	56
+ARC	-1291	4538	2
+ARC	1293	-3363	1
+ARC	1293	1294	75
+ARC	1295	-1860	59
+ARC	1295	2846	21
+ARC	-1295	1472	65
+ARC	1296	1297	54
+ARC	-1297	-4466	1
+ARC	1298	-2317	50
+ARC	-1298	-4399	1
+ARC	-1298	2251	53
+ARC	-1299	3060	71
+ARC	-1299	4493	1
+ARC	1300	1301	39
+ARC	1300	4278	1
+ARC	-1300	-1944	51
+ARC	-1300	3687	1
+ARC	1301	1355	49
+ARC	1302	-4039	1
+ARC	-1302	4027	1
+ARC	1303	-4177	1
+ARC	1303	-1630	57
+ARC	-1303	1791	36
+ARC	1304	-2504	45
+ARC	-1304	3116	34
+ARC	1305	-4347	1
+ARC	-1305	3324	1
+ARC	1306	4009	1
+ARC	-1306	-3459	1
+ARC	-1306	2217	123
+ARC	1307	-2994	1
+ARC	1307	1754	49
+ARC	-1307	-4281	1
+ARC	-1307	3286	36
+ARC	1308	-3706	1
+ARC	1308	-1692	51
+ARC	1309	-2921	106
+ARC	-1309	1737	103
+ARC	-1309	3422	5
+ARC	1310	4373	1
+ARC	1311	-3445	1
+ARC	1311	-1498	50
+ARC	1313	4237	1
+ARC	-1313	4257	1
+ARC	1314	-2582	38
+ARC	1314	3410	41
+ARC	-1314	-2382	59
+ARC	-1314	4249	2
+ARC	-1315	-1832	74
+ARC	-1315	3269	1
+ARC	-1316	2709	50
+ARC	-1316	3081	1
+ARC	1317	-1450	51
+ARC	1318	2327	1
+ARC	-1318	-2512	5
+ARC	1319	-1320	36
+ARC	-1319	4433	1
+ARC	1320	-4102	2
+ARC	-1320	1580	32
+ARC	1321	-4539	1
+ARC	-1321	4474	1
+ARC	1322	1963	53
+ARC	1324	1325	109
+ARC	-1324	2563	113
+ARC	-1325	-4106	1
+ARC	1326	-2103	43
+ARC	1327	1328	53
+ARC	1327	3794	1
+ARC	-1327	1690	26
+ARC	1329	1330	1
+ARC	1333	-3908	1
+ARC	1333	-1583	61
+ARC	-1333	-3397	1
+ARC	-1333	-2897	60
+ARC	-1334	-2383	71
+ARC	1335	1336	46
+ARC	1335	4337	1
+ARC	-1337	-3538	1
+ARC	1338	2144	71
+ARC	-1338	1341	60
+ARC	1339	-4130	1
+ARC	-1339	-4378	1
+ARC	-1340	-3396	14
+ARC	-1340	-1650	58
+ARC	1341	-3668	1
+ARC	1341	1530	45
+ARC	-1341	3867	1
+ARC	1342	1706	49
+ARC	-1342	-3898	1
+ARC	-1342	-2886	52
+ARC	1343	4364	1
+ARC	-1343	-3878	2
+ARC	-1343	2525	52
+ARC	1344	-1963	46
+ARC	-1344	-1947	39
+ARC	-1344	4201	2
+ARC	1346	1347	64
+ARC	1347	2270	3
+ARC	1347	3515	53
+ARC	-1347	4282	1
+ARC	-1348	-4035	1
+ARC	1349	2442	39
+ARC	-1349	-3457	1
+ARC	-1350	-2663	57
+ARC	-1350	3359	1
+ARC	1351	-1706	51
+ARC	-1351	1679	50
+ARC	1352	-3733	1
+ARC	-1352	-3518	1
+ARC	-1352	-3495	1
+ARC	-1352	2260	49
+ARC	1353	1354	57
+ARC	-1353	2047	55
+ARC	1354	-1355	47
+ARC	-1354	-4400	1
+ARC	1355	3944	3
+ARC	-1355	-4278	1
+ARC	-1356	4615	1
+ARC	1357	2437	38
+ARC	-1357	-4558	1
+ARC	1358	-3042	78
+ARC	1358	3398	5
+ARC	-1358	-2740	55
+ARC	-1358	3855	2
+ARC	1360	2159	36
+ARC	-1360	-2267	48
+ARC	-1360	4340	1
+ARC	1361	-2833	2
+ARC	1361	2567	46
+ARC	-1361	1573	49
+ARC	-1361	4246	1
+ARC	1362	-2621	66
+ARC	1362	4271	1
+ARC	-1362	-3205	2
+ARC	-1362	2565	59
+ARC	1363	-4271	1
+ARC	1363	2621	53
+ARC	-1363	2101	45
+ARC	1364	-4412	1
+ARC	1364	1365	59
+ARC	-1364	4387	1
+ARC	1366	-4082	1
+ARC	1366	-2670	68
+ARC	-1366	2841	57
+ARC	1367	-2586	43
+ARC	1367	4229	1
+ARC	-1367	1779	42
+ARC	-1367	4446	1
+ARC	1368	-4473	1
+ARC	1368	-2167	47
+ARC	-1368	-4608	1
+ARC	-1368	-1659	53
+ARC	1369	-4576	1
+ARC	-1369	3466	1
+ARC	-1369	4495	37
+ARC	1370	1371	73
+ARC	1370	4139	1
+ARC	-1370	1375	54
+ARC	1372	-2212	39
+ARC	-1373	2212	43
+ARC	1374	-4401	1
+ARC	1374	2176	34
+ARC	-1374	4510	1
+ARC	-1375	-4370	1
+ARC	1376	-2202	64
+ARC	1376	2215	1
+ARC	-1376	-3581	1
+ARC	1377	-2091	86
+ARC	1377	1378	37
+ARC	-1377	2331	51
+ARC	1378	-2163	43
+ARC	1379	-4358	1
+ARC	1379	-3530	324
+ARC	1380	-1961	111
+ARC	-1380	1590	46
+ARC	1381	-3830	1
+ARC	-1381	-1448	62
+ARC	-1381	1464	4
+ARC	-1382	-1511	116
+ARC	1383	-4274	1
+ARC	1383	1384	47
+ARC	-1383	-3694	1
+ARC	-1383	2472	50
+ARC	1385	-3905	1
+ARC	1385	1677	37
+ARC	-1385	-3303	1
+ARC	-1385	-1983	49
+ARC	1386	-2017	82
+ARC	-1386	-2191	84
+ARC	1387	1388	70
+ARC	-1387	2017	72
+ARC	1388	1554	63
+ARC	-1388	-4142	1
+ARC	1389	-2773	1
+ARC	1389	1663	54
+ARC	-1389	3417	1
+ARC	-1390	-2599	86
+ARC	1391	2599	57
+ARC	-1391	3558	1
+ARC	1393	3199	37
+ARC	1393	4562	1
+ARC	-1393	-2892	43
+ARC	1394	3149	2
+ARC	1395	-4068	1
+ARC	1395	1396	55
+ARC	-1395	-2185	80
+ARC	-1395	4595	1
+ARC	1396	-1397	73
+ARC	1397	4068	1
+ARC	1398	-1688	74
+ARC	1399	-4012	1
+ARC	1399	-2550	44
+ARC	-1399	-2090	45
+ARC	1400	-3910	1
+ARC	1400	2729	68
+ARC	-1400	2203	31
+ARC	-1400	3004	3
+ARC	1401	1653	21
+ARC	-1401	1555	108
+ARC	1402	3906	1
+ARC	-1402	1518	57
+ARC	-1402	3747	1
+ARC	1404	-3004	1
+ARC	1404	-2204	40
+ARC	-1404	-1889	42
+ARC	-1404	4525	2
+ARC	-1405	-2304	37
+ARC	1406	1645	1
+ARC	-1407	2657	1
+ARC	1408	-3381	1
+ARC	1408	-2182	43
+ARC	-1408	1576	95
+ARC	-1408	4388	1
+ARC	-1409	4239	2
+ARC	1410	3461	2
+ARC	-1410	4352	1
+ARC	1412	-3401	2
+ARC	1412	1413	233
+ARC	-1412	-2531	51
+ARC	-1412	1495	48
+ARC	-1412	2444	51
+ARC	-1412	2667	79
+ARC	1413	-3958	1
+ARC	1413	1414	254
+ARC	1414	2531	56
+ARC	1414	3034	101
+ARC	1415	1416	47
+ARC	-1415	-2959	51
+ARC	1416	1417	66
+ARC	-1416	-2820	21
+ARC	1417	-2516	24
+ARC	1417	2168	14
+ARC	-1417	-3094	1
+ARC	1418	-3989	1
+ARC	1420	-3220	43
+ARC	-1420	-2705	40
+ARC	1421	1422	33
+ARC	-1421	-3816	1
+ARC	-1421	-1621	36
+ARC	1422	1423	36
+ARC	-1422	3235	32
+ARC	1423	1424	42
+ARC	1424	-3780	1
+ARC	1424	-1834	43
+ARC	1424	1425	85
+ARC	-1424	1835	85
+ARC	1425	-3612	3
+ARC	1425	-1897	39
+ARC	1425	1426	52
+ARC	1426	-2179	49
+ARC	1427	2994	1
+ARC	-1427	2827	52
+ARC	1428	1429	167
+ARC	1428	3652	2
+ARC	-1428	1537	162
+ARC	1429	1430	169
+ARC	1430	1431	171
+ARC	-1430	3709	4
+ARC	1431	1432	114
+ARC	1431	1540	71
+ARC	-1431	2146	5
+ARC	1432	1433	131
+ARC	1432	3293	7
+ARC	-1432	-2150	26
+ARC	1433	2147	134
+ARC	-1433	-4023	2
+ARC	1434	-2831	74
+ARC	-1434	-4235	1
+ARC	-1434	1443	79
+ARC	-1435	2460	43
+ARC	-1435	4191	4
+ARC	-1436	4527	2
+ARC	1437	1503	56
+ARC	1437	4327	1
+ARC	-1437	4351	1
+ARC	1439	-4379	1
+ARC	1439	2555	59
+ARC	-1439	3713	1
+ARC	1440	-4137	1
+ARC	1440	2644	69
+ARC	-1440	-3002	37
+ARC	-1440	4251	1
+ARC	1441	1442	41
+ARC	1441	3108	1
+ARC	1442	2481	50
+ARC	1443	-4564	1
+ARC	1443	1561	69
+ARC	1444	-1942	80
+ARC	1444	4267	1
+ARC	-1444	-2057	2
+ARC	-1444	-1494	66
+ARC	1445	-4246	1
+ARC	1445	-1573	60
+ARC	-1445	-3324	2
+ARC	1446	-1447	19
+ARC	1446	4339	1
+ARC	-1446	-4159	1
+ARC	-1446	3184	29
+ARC	-1447	2130	14
+ARC	1449	4289	1
+ARC	-1449	-4250	1
+ARC	1450	1964	1
+ARC	-1450	-1622	35
+ARC	-1450	4129	1
+ARC	-1451	-1789	37
+ARC	1452	3634	1
+ARC	1453	-2026	63
+ARC	1454	1455	39
+ARC	-1454	2966	38
+ARC	1455	-1462	58
+ARC	-1455	3791	4
+ARC	1456	-3658	3
+ARC	1456	1732	38
+ARC	-1456	-2940	37
+ARC	-1456	3721	2
+ARC	1457	-1458	1
+ARC	-1459	-3633	1
+ARC	-1459	1846	336
+ARC	1460	4550	1
+ARC	1461	-3442	1
+ARC	-1461	2629	35
+ARC	-1461	4010	1
+ARC	1462	3642	1
+ARC	-1462	2085	44
+ARC	-1462	3743	3
+ARC	1463	2585	54
+ARC	1463	4123	1
+ARC	-1463	3026	47
+ARC	-1463	3084	4
+ARC	1468	1469	95
+ARC	1468	3749	3
+ARC	-1468	-1950	98
+ARC	1470	-1756	37
+ARC	-1470	2928	51
+ARC	-1470	3776	1
+ARC	1472	-3063	1
+ARC	1472	3015	44
+ARC	-1472	-2319	1
+ARC	1473	1474	26
+ARC	1473	3054	53
+ARC	-1473	2196	62
+ARC	-1473	3102	21
+ARC	1474	1475	29
+ARC	1475	1476	31
+ARC	-1475	-4469	1
+ARC	1476	-4011	4
+ARC	1476	-3272	44
+ARC	-1476	2319	2
+ARC	-1477	-3332	2
+ARC	-1477	2766	44
+ARC	1478	1630	51
+ARC	1478	4177	1
+ARC	-1478	-3425	2
+ARC	-1478	2350	60
+ARC	1479	4568	2
+ARC	1481	-4144	1
+ARC	1481	2357	44
+ARC	-1481	1565	43
+ARC	-1481	4264	1
+ARC	1482	1794	43
+ARC	-1482	2046	59
+ARC	1483	-3879	1
+ARC	1483	2659	29
+ARC	-1483	1983	45
+ARC	-1483	3303	1
+ARC	1485	1486	55
+ARC	1485	1787	36
+ARC	1486	-1487	34
+ARC	1487	-2087	32
+ARC	1487	4395	1
+ARC	-1487	-4272	2
+ARC	-1487	-2995	25
+ARC	-1487	3103	41
+ARC	1488	-2668	44
+ARC	1488	3021	1
+ARC	-1488	-1669	52
+ARC	1489	4609	1
+ARC	1490	-2649	3
+ARC	1490	-2639	63
+ARC	-1490	-1972	37
+ARC	-1490	3679	1
+ARC	1491	1492	55
+ARC	1492	-2285	1
+ARC	1492	-1519	43
+ARC	-1492	3479	1
+ARC	1493	1884	47
+ARC	-1494	1563	59
+ARC	1495	-4305	1
+ARC	1495	1496	52
+ARC	1496	-3034	51
+ARC	1497	3720	4
+ARC	-1497	3623	1
+ARC	-1499	-3155	57
+ARC	-1499	3838	1
+ARC	-1500	1950	63
+ARC	1501	-1734	24
+ARC	1502	3223	1
+ARC	-1502	2837	39
+ARC	-1502	4014	5
+ARC	1503	1504	45
+ARC	1503	2271	27
+ARC	1504	-3734	1
+ARC	1504	1505	39
+ARC	1505	-1668	39
+ARC	1506	2243	96
+ARC	1506	2449	123
+ARC	1507	1508	43
+ARC	1507	4097	1
+ARC	1509	-2172	84
+ARC	1509	1510	140
+ARC	-1509	2670	69
+ARC	1510	-1511	115
+ARC	-1511	2535	171
+ARC	1513	-3035	28
+ARC	1513	4145	1
+ARC	-1513	-3976	1
+ARC	1514	-3627	1
+ARC	1514	2051	42
+ARC	1516	4030	1
+ARC	-1516	4041	1
+ARC	1517	-4293	1
+ARC	1517	2281	48
+ARC	1518	-3995	1
+ARC	-1519	-2184	23
+ARC	1520	-4158	1
+ARC	1520	1521	142
+ARC	1520	3073	2
+ARC	-1520	-1609	183
+ARC	1521	1522	148
+ARC	1522	1523	313
+ARC	-1522	-3073	2
+ARC	1523	-3582	1
+ARC	1523	-2583	168
+ARC	1523	3868	3
+ARC	-1523	4019	1
+ARC	-1524	-3175	30
+ARC	1525	2557	49
+ARC	1525	4071	2
+ARC	1526	-3309	1
+ARC	1527	1528	46
+ARC	1528	2633	53
+ARC	1528	3624	3
+ARC	-1528	-3848	1
+ARC	1529	-2856	43
+ARC	1529	3208	6
+ARC	-1529	-3832	1
+ARC	-1529	-2441	85
+ARC	1530	1531	38
+ARC	-1531	3668	1
+ARC	1532	4613	1
+ARC	-1532	3911	1
+ARC	1533	-2305	177
+ARC	1533	3682	1
+ARC	-1533	-3861	1
+ARC	-1534	-3855	3
+ARC	-1534	2740	59
+ARC	1535	-2624	74
+ARC	-1535	1552	49
+ARC	1536	1537	43
+ARC	-1536	-1783	73
+ARC	-1536	4586	2
+ARC	1537	1538	202
+ARC	1538	-1545	136
+ARC	1538	1539	65
+ARC	-1538	2647	3
+ARC	1539	-1547	65
+ARC	1539	4002	1
+ARC	1540	1541	193
+ARC	1540	3806	4
+ARC	-1540	-2150	131
+ARC	1541	1542	187
+ARC	1541	3253	3
+ARC	1542	1543	188
+ARC	-1542	4557	1
+ARC	1543	1544	191
+ARC	-1543	3714	3
+ARC	1544	-2526	1
+ARC	1544	1545	188
+ARC	-1544	2526	3
+ARC	1545	1546	57
+ARC	1546	1547	56
+ARC	1546	3620	2
+ARC	1548	-1995	189
+ARC	1548	3895	2
+ARC	-1548	2263	196
+ARC	1549	-2992	1
+ARC	1549	-2505	42
+ARC	1550	-4212	1
+ARC	-1550	-3912	1
+ARC	1552	-1553	39
+ARC	1552	4118	1
+ARC	-1552	3341	1
+ARC	1554	1644	29
+ARC	1554	4183	1
+ARC	-1554	3125	2
+ARC	1555	-2013	46
+ARC	1555	3075	112
+ARC	-1557	-4377	1
+ARC	-1557	-4275	183
+ARC	1559	2250	62
+ARC	-1560	-4010	1
+ARC	-1560	2630	41
+ARC	1562	2496	58
+ARC	1562	2902	1
+ARC	-1562	1906	63
+ARC	-1562	4216	1
+ARC	1563	-3570	2
+ARC	1563	1970	70
+ARC	-1563	2057	2
+ARC	1564	-4071	1
+ARC	1564	-2557	37
+ARC	1565	-2657	58
+ARC	1566	-4087	1
+ARC	-1566	-4022	1
+ARC	-1566	-2965	33
+ARC	1567	1568	48
+ARC	-1567	-3759	1
+ARC	-1567	2043	50
+ARC	1568	-4343	1
+ARC	1568	1569	46
+ARC	-1568	-4428	1
+ARC	1570	-4348	1
+ARC	1571	1572	37
+ARC	-1571	-3933	1
+ARC	-1572	-3482	1
+ARC	-1574	-4526	1
+ARC	1575	4513	2
+ARC	-1575	-4580	1
+ARC	1576	-1577	71
+ARC	1577	-4388	1
+ARC	-1577	-2061	73
+ARC	-1577	4114	1
+ARC	1579	-3516	71
+ARC	1579	-3226	1
+ARC	-1579	1680	43
+ARC	-1579	1957	41
+ARC	1580	3226	3
+ARC	1580	3516	106
+ARC	-1580	1735	49
+ARC	1581	-4189	1
+ARC	1581	1808	50
+ARC	-1581	-3867	1
+ARC	-1584	2352	50
+ARC	1585	-4154	1
+ARC	1585	1586	104
+ARC	-1585	-2719	108
+ARC	-1585	3722	3
+ARC	-1587	2387	60
+ARC	1588	3460	134
+ARC	-1588	-2669	133
+ARC	1589	-4166	1
+ARC	1589	1962	122
+ARC	-1589	-3490	2
+ARC	-1589	-3460	135
+ARC	1590	-4445	1
+ARC	1590	-2258	41
+ARC	1591	-1593	85
+ARC	1591	4425	2
+ARC	1592	1593	75
+ARC	-1592	3173	52
+ARC	-1593	-2853	2
+ARC	1594	1595	185
+ARC	1594	3462	1
+ARC	-1594	2029	151
+ARC	1595	1596	175
+ARC	1596	1597	224
+ARC	-1596	-2855	56
+ARC	1597	1598	282
+ARC	1597	3568	1
+ARC	-1597	-2796	65
+ARC	1598	1809	289
+ARC	1599	3152	445
+ARC	-1599	1868	451
+ARC	1600	1601	383
+ARC	-1600	-2338	384
+ARC	1601	-3551	2
+ARC	-1601	-3996	2
+ARC	1602	3356	42
+ARC	1602	4205	1
+ARC	-1602	-2080	48
+ARC	-1602	4065	1
+ARC	1603	2054	66
+ARC	1603	3813	3
+ARC	-1603	-3527	2
+ARC	1604	-3269	1
+ARC	1604	1832	57
+ARC	-1604	-2436	80
+ARC	-1604	4361	1
+ARC	1605	4385	1
+ARC	-1605	-3731	1
+ARC	-1605	2987	38
+ARC	1607	-3522	4
+ARC	1607	2924	56
+ARC	-1607	-4105	1
+ARC	-1607	2483	63
+ARC	1609	-4019	1
+ARC	1611	1612	49
+ARC	-1611	-1662	39
+ARC	1612	1613	97
+ARC	-1612	-1724	55
+ARC	1613	-4420	1
+ARC	-1613	-2656	45
+ARC	1614	-3800	1
+ARC	1614	1615	52
+ARC	-1614	2162	42
+ARC	1615	-3537	53
+ARC	1616	-1977	57
+ARC	-1616	-1976	57
+ARC	1617	1618	43
+ARC	-1618	4116	2
+ARC	1619	2284	50
+ARC	-1619	1815	40
+ARC	-1619	3883	1
+ARC	1620	1988	44
+ARC	-1621	-2494	46
+ARC	1623	1639	58
+ARC	1623	3945	1
+ARC	-1624	-4437	1
+ARC	-1624	-3166	35
+ARC	1625	-3408	4
+ARC	1625	1626	49
+ARC	-1625	-2953	53
+ARC	-1625	4430	1
+ARC	1627	4536	1
+ARC	-1627	-2729	62
+ARC	-1627	3910	2
+ARC	1628	4001	2
+ARC	-1628	2960	52
+ARC	1629	2963	56
+ARC	-1629	4252	1
+ARC	1631	1632	54
+ARC	-1631	-2364	50
+ARC	1632	-2506	52
+ARC	1632	4256	1
+ARC	-1632	-1653	23
+ARC	1633	-3066	29
+ARC	1633	4423	1
+ARC	-1633	-4488	1
+ARC	-1633	1801	45
+ARC	1634	2433	54
+ARC	1635	1636	35
+ARC	1635	4238	1
+ARC	-1635	-3338	1
+ARC	1636	-1735	58
+ARC	1636	4102	2
+ARC	1637	-3744	1
+ARC	1637	1638	54
+ARC	-1637	3005	3
+ARC	1638	-3132	1
+ARC	1639	-3184	34
+ARC	1639	4159	4
+ARC	1640	1641	1
+ARC	1640	4336	2
+ARC	-1640	3434	6
+ARC	1641	-1643	1
+ARC	1642	-1992	2
+ARC	1642	1643	8
+ARC	-1642	-4287	3
+ARC	-1642	3187	10
+ARC	1643	3433	8
+ARC	1644	2031	37
+ARC	1645	-2313	72
+ARC	-1645	2718	66
+ARC	1646	-2165	42
+ARC	-1647	-2220	30
+ARC	-1647	3621	1
+ARC	1648	2424	42
+ARC	-1649	3524	1
+ARC	-1650	2042	47
+ARC	1651	4616	2
+ARC	-1651	-2465	77
+ARC	1652	-3671	2
+ARC	1652	2653	69
+ARC	-1652	-3756	1
+ARC	-1652	1681	71
+ARC	1654	-4062	2
+ARC	1654	-1928	28
+ARC	-1654	3902	1
+ARC	1656	3912	1
+ARC	-1656	4498	1
+ARC	1657	-2420	55
+ARC	-1658	2420	43
+ARC	1660	2147	42
+ARC	-1660	-4444	1
+ARC	-1660	2821	46
+ARC	1661	1824	16
+ARC	-1661	-2053	83
+ARC	-1661	2052	3
+ARC	1662	3692	1
+ARC	-1662	1961	45
+ARC	1663	-4355	1
+ARC	1663	-1982	41
+ARC	1664	-1940	112
+ARC	-1664	1809	146
+ARC	-1665	-4101	1
+ARC	-1665	2183	54
+ARC	1666	-2322	1
+ARC	1666	3530	324
+ARC	-1667	-3462	3
+ARC	-1667	-1809	443
+ARC	1668	-4327	1
+ARC	1669	4300	1
+ARC	-1669	-3386	1
+ARC	-1669	-2951	61
+ARC	1670	1771	34
+ARC	1671	4556	2
+ARC	-1671	-4537	1
+ARC	-1671	3023	39
+ARC	1672	1673	339
+ARC	-1672	-3318	308
+ARC	-1672	-3257	10
+ARC	-1672	-2195	1
+ARC	1673	1674	342
+ARC	-1673	-3819	1
+ARC	-1673	-2946	1
+ARC	1674	3561	345
+ARC	-1674	-2793	3
+ARC	1675	3874	1
+ARC	1676	2995	22
+ARC	1676	4272	2
+ARC	-1676	-3428	1
+ARC	-1676	3611	29
+ARC	1677	-3748	21
+ARC	1678	-2803	60
+ARC	1678	4329	1
+ARC	1679	-3463	1
+ARC	-1679	-1862	42
+ARC	1682	1683	336
+ARC	1682	3569	1
+ARC	1683	1684	345
+ARC	1683	2804	3
+ARC	1684	-3608	2
+ARC	1684	-2836	2
+ARC	1684	1685	340
+ARC	1685	-4489	1
+ARC	1685	-2367	343
+ARC	1686	-1969	66
+ARC	1686	3404	1
+ARC	-1686	-1970	58
+ARC	-1686	3570	6
+ARC	1688	-3244	1
+ARC	-1688	-2766	60
+ARC	-1688	3332	3
+ARC	1689	-1744	46
+ARC	1689	3255	1
+ARC	-1689	2792	43
+ARC	-1689	4333	1
+ARC	1690	-2715	1
+ARC	1690	1703	29
+ARC	-1690	4576	1
+ARC	1691	-3789	1
+ARC	1691	2507	59
+ARC	-1691	-4482	1
+ARC	-1691	1736	62
+ARC	1693	3338	1
+ARC	-1693	3053	33
+ARC	-1693	3544	1
+ARC	-1694	2572	153
+ARC	1695	1696	273
+ARC	1696	-1711	113
+ARC	1696	1697	165
+ARC	-1696	3852	1
+ARC	1697	-3985	1
+ARC	1697	-3815	1
+ARC	1697	-3118	212
+ARC	1698	-3804	217
+ARC	-1698	3118	216
+ARC	1699	-1700	46
+ARC	1699	3120	64
+ARC	-1699	1700	41
+ARC	-1701	-1979	45
+ARC	1702	-4456	1
+ARC	1702	-3885	1
+ARC	1702	-2534	3
+ARC	1704	4582	1
+ARC	-1704	-4095	1
+ARC	1706	-2548	37
+ARC	-1707	2851	62
+ARC	-1707	4403	2
+ARC	1708	3811	36
+ARC	1708	4500	2
+ARC	-1708	-2606	27
+ARC	-1708	-2269	28
+ARC	-1709	-3365	3
+ARC	-1709	2617	45
+ARC	1710	1711	30
+ARC	-1710	-3664	1
+ARC	-1710	2456	46
+ARC	-1711	2643	84
+ARC	1712	1713	51
+ARC	-1712	1742	42
+ARC	1713	1714	91
+ARC	-1713	-2008	41
+ARC	1714	-3628	1
+ARC	1714	2008	36
+ARC	-1714	-3647	2
+ARC	1715	3978	1
+ARC	-1715	2574	52
+ARC	-1715	3666	2
+ARC	1717	-4098	1
+ARC	1717	-2690	37
+ARC	1718	-3424	2
+ARC	1718	-1720	211
+ARC	1719	1720	203
+ARC	1719	3424	1
+ARC	-1719	-2339	2
+ARC	1721	1996	26
+ARC	-1721	-2027	41
+ARC	1722	2011	110
+ARC	-1723	-2211	70
+ARC	1726	1727	1
+ARC	-1727	-4045	1
+ARC	1728	-3295	1
+ARC	1728	1729	370
+ARC	-1728	-4057	1
+ARC	-1728	-2380	2
+ARC	-1728	-1871	448
+ARC	1729	-3639	1
+ARC	-1730	-3990	1
+ARC	-1730	3232	59
+ARC	1731	-4461	1
+ARC	1731	2711	56
+ARC	-1731	2081	1
+ARC	1732	-2279	63
+ARC	1733	4400	1
+ARC	1734	3807	1
+ARC	1736	-3278	1
+ARC	1736	-2713	68
+ARC	1737	3790	94
+ARC	-1738	3764	1
+ARC	1740	-1741	29
+ARC	-1740	2502	29
+ARC	1741	-3683	2
+ARC	-1741	-2384	48
+ARC	1742	-1743	41
+ARC	-1742	3647	1
+ARC	-1744	-4172	1
+ARC	1745	1766	55
+ARC	1745	1893	1
+ARC	-1745	-3057	42
+ARC	-1745	4020	1
+ARC	1746	-1866	331
+ARC	-1747	-4518	1
+ARC	1748	1749	39
+ARC	1748	3808	3
+ARC	-1748	-3201	18
+ARC	-1748	3201	11
+ARC	1749	-1750	4
+ARC	1749	2407	91
+ARC	-1750	2394	1
+ARC	1751	1752	69
+ARC	1752	2977	33
+ARC	1752	4592	1
+ARC	-1752	3805	1
+ARC	1755	-3461	1
+ARC	1756	-4383	1
+ARC	-1756	4601	1
+ARC	1757	1758	59
+ARC	1757	4163	1
+ARC	-1757	1905	2
+ARC	1758	-2145	46
+ARC	1760	2594	51
+ARC	1760	4349	1
+ARC	1761	4398	1
+ARC	-1761	-4435	1
+ARC	-1761	-2499	24
+ARC	1762	1834	32
+ARC	1762	3780	1
+ARC	-1762	-2538	48
+ARC	1764	-3268	1
+ARC	1764	1765	32
+ARC	-1764	2405	53
+ARC	-1764	4529	1
+ARC	1765	2694	40
+ARC	1766	1767	41
+ARC	1767	-1768	60
+ARC	-1767	-1893	1
+ARC	1768	2979	1
+ARC	-1768	-3880	1
+ARC	1769	-2863	1
+ARC	1769	1770	57
+ARC	-1769	-2601	50
+ARC	1771	-4239	1
+ARC	1771	-1772	31
+ARC	-1771	4081	1
+ARC	1773	1774	44
+ARC	-1773	-3679	1
+ARC	-1773	1972	45
+ARC	1774	-4070	1
+ARC	1774	1775	122
+ARC	-1774	-1820	77
+ARC	1775	1776	4
+ARC	1775	2102	55
+ARC	1775	2117	102
+ARC	1776	3028	3
+ARC	1777	-2943	1
+ARC	1777	1778	60
+ARC	1779	3337	1
+ARC	1780	2066	255
+ARC	-1780	2690	34
+ARC	1781	4587	1
+ARC	-1781	-2632	62
+ARC	1782	4286	1
+ARC	-1782	2918	54
+ARC	-1783	-3364	2
+ARC	-1783	2463	54
+ARC	-1785	-3274	22
+ARC	-1785	4458	1
+ARC	1787	1915	31
+ARC	1788	-3284	30
+ARC	-1788	-2889	44
+ARC	1789	4405	1
+ARC	-1789	3538	1
+ARC	-1791	-4196	1
+ARC	1792	-3135	48
+ARC	1792	1793	50
+ARC	-1792	-3543	1
+ARC	-1792	-2972	87
+ARC	1793	-3071	46
+ARC	1793	3210	1
+ARC	1794	-4556	1
+ARC	-1794	4602	1
+ARC	1795	1796	2
+ARC	1795	3351	24
+ARC	1795	4225	1
+ARC	-1795	-4225	1
+ARC	-1795	-2747	72
+ARC	1796	2746	1
+ARC	1798	1799	30
+ARC	1798	3648	3
+ARC	-1798	2006	48
+ARC	1799	2889	45
+ARC	-1800	-3074	25
+ARC	1801	1863	70
+ARC	1801	3740	1
+ARC	-1802	-2651	35
+ARC	-1802	-2584	4
+ARC	1803	2639	56
+ARC	1803	2649	2
+ARC	-1803	-4604	1
+ARC	-1804	-2731	1
+ARC	-1804	2280	59
+ARC	1805	-2077	46
+ARC	1805	1806	77
+ARC	1806	1807	78
+ARC	1806	3602	1
+ARC	1807	-1900	61
+ARC	-1810	-3982	1
+ARC	-1810	1941	35
+ARC	1811	-3315	52
+ARC	1811	1812	80
+ARC	1813	3965	1
+ARC	-1813	3661	1
+ARC	-1814	2162	78
+ARC	1815	-3902	1
+ARC	1815	1816	52
+ARC	1816	-1817	47
+ARC	1817	-3883	1
+ARC	-1817	-3116	36
+ARC	-1817	4075	1
+ARC	1819	1820	32
+ARC	-1820	-3966	1
+ARC	-1820	-3028	44
+ARC	1821	-3271	1
+ARC	1821	1822	23
+ARC	1822	1823	1
+ARC	1822	1909	21
+ARC	-1825	-2006	39
+ARC	1826	-2847	49
+ARC	-1826	-3382	1
+ARC	-1826	-2680	66
+ARC	1827	1828	79
+ARC	-1827	-1934	63
+ARC	1828	1890	113
+ARC	1828	3690	4
+ARC	-1828	-2520	54
+ARC	1829	-3546	1
+ARC	1829	-1891	59
+ARC	-1829	-4266	1
+ARC	-1829	-1933	60
+ARC	1830	-4181	1
+ARC	1830	-2100	49
+ARC	-1833	-1971	74
+ARC	1835	-3099	44
+ARC	1835	1836	42
+ARC	1836	2537	43
+ARC	1837	-2388	403
+ARC	1837	1838	71
+ARC	-1837	-2509	6
+ARC	1838	1839	67
+ARC	1839	-2010	64
+ARC	-1839	4406	1
+ARC	1840	-4560	1
+ARC	1840	1841	79
+ARC	-1840	2050	48
+ARC	1842	-2904	1
+ARC	1842	1843	72
+ARC	1842	2905	70
+ARC	-1842	-2265	122
+ARC	1844	-1845	69
+ARC	1844	4332	1
+ARC	1848	1849	50
+ARC	1848	3399	3
+ARC	1849	1850	52
+ARC	1850	1851	167
+ARC	-1850	-3097	116
+ARC	1851	-2046	139
+ARC	1851	-1854	137
+ARC	-1851	3104	54
+ARC	1852	1853	71
+ARC	1852	3916	1
+ARC	-1852	-2654	72
+ARC	1853	1854	68
+ARC	-1854	-2901	65
+ARC	1855	1856	51
+ARC	-1855	-2982	47
+ARC	1856	1857	51
+ARC	-1856	3548	1
+ARC	-1857	3919	3
+ARC	1858	-2902	1
+ARC	1858	-2496	55
+ARC	-1858	-3918	1
+ARC	-1858	-2099	64
+ARC	1859	1860	57
+ARC	1859	4011	3
+ARC	-1859	-3128	2
+ARC	-1859	-2196	58
+ARC	1863	-3232	61
+ARC	1863	3990	1
+ARC	1865	1866	301
+ARC	-1865	-3227	1
+ARC	-1865	2432	295
+ARC	1866	3631	1
+ARC	-1866	-3836	1
+ARC	1867	4453	1
+ARC	1868	1869	466
+ARC	-1868	2337	3
+ARC	1869	1870	468
+ARC	-1869	4504	1
+ARC	1870	-3601	1
+ARC	1870	1871	470
+ARC	-1870	3708	6
+ARC	1872	1873	54
+ARC	1873	2038	111
+ARC	1874	3101	104
+ARC	1874	3860	2
+ARC	-1874	-2795	90
+ARC	-1874	2392	32
+ARC	1875	-2208	38
+ARC	1875	1876	51
+ARC	-1875	-2908	68
+ARC	1876	-2783	46
+ARC	-1877	2389	4
+ARC	-1878	-2347	54
+ARC	1879	1880	42
+ARC	-1880	4082	1
+ARC	1881	1882	185
+ARC	1881	2172	59
+ARC	-1881	-2363	104
+ARC	-1881	-2034	147
+ARC	1883	2919	261
+ARC	1884	-3497	3
+ARC	1884	-2353	37
+ARC	-1884	-3963	1
+ARC	1885	-1886	52
+ARC	1886	-3514	1
+ARC	-1886	-2240	48
+ARC	-1886	4480	1
+ARC	1887	4492	1
+ARC	-1887	-4587	1
+ARC	-1888	4176	1
+ARC	-1889	-2817	37
+ARC	-1889	3405	1
+ARC	1890	-3093	56
+ARC	1890	1891	65
+ARC	1892	-3492	1
+ARC	1892	-2573	44
+ARC	1894	-4280	1
+ARC	1894	-2157	43
+ARC	1895	-2697	63
+ARC	1895	4085	1
+ARC	-1895	4054	1
+ARC	1896	-3753	1
+ARC	1896	1897	34
+ARC	1896	3612	3
+ARC	-1896	2540	35
+ARC	-1898	-2858	3
+ARC	-1898	-2782	35
+ARC	1901	1902	192
+ARC	1901	4487	1
+ARC	1903	-2893	39
+ARC	-1903	3443	2
+ARC	1904	-2386	24
+ARC	-1904	-2130	16
+ARC	1908	-3419	5
+ARC	1908	3419	5
+ARC	-1908	-3523	11
+ARC	-1908	3523	3
+ARC	1909	2266	27
+ARC	1910	1911	51
+ARC	-1910	-2286	50
+ARC	-1910	4064	1
+ARC	1911	2491	70
+ARC	-1911	-3286	35
+ARC	-1911	4281	1
+ARC	1912	1913	40
+ARC	1912	2816	5
+ARC	-1912	2795	42
+ARC	1913	2636	31
+ARC	1913	3625	9
+ARC	1914	-1981	423
+ARC	1914	3316	1
+ARC	-1914	4514	1
+ARC	1915	-2426	43
+ARC	1915	1916	40
+ARC	-1915	2983	62
+ARC	1916	-2889	55
+ARC	1917	-1918	35
+ARC	-1918	2834	20
+ARC	-1919	4203	1
+ARC	1920	-3960	1
+ARC	1920	2832	58
+ARC	1921	-4360	3
+ARC	1921	2693	57
+ARC	1922	-3548	1
+ARC	1922	-2787	51
+ARC	-1922	2462	53
+ARC	1923	-2542	65
+ARC	1924	1925	116
+ARC	-1924	2313	41
+ARC	1925	2542	95
+ARC	-1926	-2475	48
+ARC	-1929	-2143	11
+ARC	-1930	4520	1
+ARC	-1931	-2233	38
+ARC	-1931	2878	8
+ARC	1932	2691	43
+ARC	1934	3545	1
+ARC	-1934	2282	50
+ARC	-1934	2298	1
+ARC	-1936	-3048	39
+ARC	1937	1938	217
+ARC	1937	2509	2
+ARC	-1937	-2359	175
+ARC	-1937	2796	75
+ARC	1938	-1940	224
+ARC	1939	-2122	70
+ARC	1939	1940	324
+ARC	-1939	-4406	1
+ARC	-1939	-2030	428
+ARC	-1942	-2324	61
+ARC	-1943	2048	11
+ARC	-1944	3074	51
+ARC	1945	1946	46
+ARC	1945	2082	66
+ARC	1946	-4589	1
+ARC	-1947	4172	2
+ARC	-1948	2410	46
+ARC	-1949	-2643	111
+ARC	1951	-1952	52
+ARC	1952	-3185	1
+ARC	-1953	3318	302
+ARC	-1953	3782	1
+ARC	-1954	-2678	46
+ARC	1956	4263	1
+ARC	-1956	4157	1
+ARC	1957	-2404	42
+ARC	1957	3463	1
+ARC	1958	2730	54
+ARC	1961	-2154	51
+ARC	1962	2152	79
+ARC	1963	-4563	1
+ARC	-1963	-3781	1
+ARC	1965	-3794	1
+ARC	-1965	2809	60
+ARC	1966	4383	1
+ARC	1971	-3663	1
+ARC	-1971	-3785	1
+ARC	-1971	-3191	55
+ARC	1974	-4349	1
+ARC	1974	2438	64
+ARC	-1974	-2632	56
+ARC	1976	4122	1
+ARC	-1976	-4150	1
+ARC	-1976	2568	53
+ARC	1977	-4122	1
+ARC	-1977	-2890	2
+ARC	-1977	2725	68
+ARC	-1978	2666	59
+ARC	1979	-3680	1
+ARC	1980	-4241	1
+ARC	-1980	4563	1
+ARC	-1981	-3997	2
+ARC	-1982	2477	42
+ARC	1984	3510	2
+ARC	1985	1986	100
+ARC	1985	2219	58
+ARC	1986	-2191	140
+ARC	-1988	-4382	1
+ARC	1990	-2037	64
+ARC	-1990	-3765	1
+ARC	-1992	3704	2
+ARC	1993	-3187	9
+ARC	-1993	-3188	10
+ARC	-1993	3565	3
+ARC	1994	1995	35
+ARC	-1994	2910	34
+ARC	-1995	2041	152
+ARC	1996	4292	1
+ARC	-1996	3547	1
+ARC	1997	-4031	1
+ARC	-1997	-2838	2
+ARC	1998	-3986	2
+ARC	1998	1999	63
+ARC	-1998	2067	49
+ARC	1999	-2001	39
+ARC	2000	2001	45
+ARC	-2000	-2006	52
+ARC	2001	-3082	42
+ARC	-2001	-2228	43
+ARC	2003	-2942	76
+ARC	-2004	4348	2
+ARC	2005	2006	42
+ARC	-2005	-3322	33
+ARC	-2005	3428	1
+ARC	-2009	3270	9
+ARC	-2009	3901	27
+ARC	2010	-4442	1
+ARC	-2010	-3297	2
+ARC	2011	-2769	55
+ARC	2011	2193	54
+ARC	2012	2013	43
+ARC	-2012	-2048	32
+ARC	-2013	3886	1
+ARC	2014	-2498	33
+ARC	2014	3983	1
+ARC	-2014	-2022	1
+ARC	2015	2584	1
+ARC	2015	2651	39
+ARC	2016	2017	273
+ARC	-2016	2037	126
+ARC	-2017	4142	1
+ARC	2019	2020	53
+ARC	2020	-4438	1
+ARC	2020	2214	58
+ARC	-2020	-3603	1
+ARC	2021	-2688	61
+ARC	2021	2022	2
+ARC	-2023	2279	34
+ARC	-2024	-2352	27
+ARC	2025	4357	1
+ARC	-2025	4247	1
+ARC	2026	-3892	1
+ARC	2027	-3547	1
+ARC	-2027	-4121	1
+ARC	-2027	-2274	59
+ARC	2029	2359	154
+ARC	2031	4546	2
+ARC	-2031	-4183	1
+ARC	2032	-2854	32
+ARC	2032	3844	1
+ARC	-2032	3250	9
+ARC	-2032	3406	44
+ARC	2033	2435	61
+ARC	2033	3276	1
+ARC	-2033	-3857	27
+ARC	-2033	-3703	1
+ARC	-2036	-2254	2
+ARC	2038	2039	140
+ARC	2039	2040	97
+ARC	2042	3161	24
+ARC	2042	4501	1
+ARC	-2042	-2888	9
+ARC	2043	2044	42
+ARC	2044	3175	29
+ARC	-2044	4428	1
+ARC	-2046	2344	80
+ARC	2047	-4114	1
+ARC	2047	2061	86
+ARC	-2047	-3944	3
+ARC	2048	-3886	2
+ARC	-2048	-2829	25
+ARC	2049	-4109	1
+ARC	-2049	-3563	1
+ARC	-2049	2556	73
+ARC	2050	-3802	1
+ARC	2050	2247	51
+ARC	-2050	-2704	1
+ARC	2055	2056	77
+ARC	2055	4262	1
+ARC	-2055	-2641	71
+ARC	-2055	4457	1
+ARC	2059	-2841	44
+ARC	-2059	-2501	30
+ARC	-2059	4206	3
+ARC	-2060	2188	46
+ARC	2063	2064	38
+ARC	-2063	-2391	36
+ARC	2064	2065	59
+ARC	-2064	-2794	23
+ARC	2065	-3101	55
+ARC	-2065	3475	11
+ARC	2066	-4411	1
+ARC	2066	-2695	55
+ARC	2066	2192	205
+ARC	-2066	3987	8
+ARC	-2067	-2403	48
+ARC	2068	2069	58
+ARC	-2069	3133	1
+ARC	2070	2071	33
+ARC	-2070	-2684	43
+ARC	-2071	3086	12
+ARC	2072	-2544	2
+ARC	2073	2546	78
+ARC	2073	4593	1
+ARC	-2073	-4249	2
+ARC	-2073	2382	59
+ARC	2075	2076	54
+ARC	2076	3115	44
+ARC	-2076	-4483	1
+ARC	2078	-3413	1
+ARC	-2078	4044	1
+ARC	2079	-3079	46
+ARC	2079	3142	7
+ARC	-2079	-3566	3
+ARC	-2079	2301	53
+ARC	2083	-2370	31
+ARC	2083	3412	2
+ARC	-2083	-4596	1
+ARC	-2083	2499	22
+ARC	-2084	-3934	1
+ARC	-2084	-2678	6
+ARC	2085	-2784	36
+ARC	2086	-4148	1
+ARC	2086	-2292	62
+ARC	-2086	-2293	61
+ARC	-2086	3375	1
+ARC	-2087	-3036	28
+ARC	-2088	-2600	51
+ARC	2089	2090	52
+ARC	-2089	2942	43
+ARC	-2090	-2703	45
+ARC	-2091	-2312	59
+ARC	-2091	-2175	69
+ARC	2093	-3138	34
+ARC	2094	2235	49
+ARC	-2095	3066	57
+ARC	2096	-4253	1
+ARC	2096	2252	83
+ARC	2097	2098	66
+ARC	-2097	-2435	61
+ARC	-2097	3638	1
+ARC	-2098	-2850	71
+ARC	-2099	-2507	45
+ARC	-2099	3789	1
+ARC	-2100	-2887	50
+ARC	-2101	-3894	1
+ARC	2102	4396	1
+ARC	2103	-3835	1
+ARC	-2103	-2800	59
+ARC	2104	2259	29
+ARC	2104	4392	1
+ARC	-2104	2224	47
+ARC	2106	2107	163
+ARC	2107	3861	1
+ARC	2108	-4135	1
+ARC	2108	2109	75
+ARC	-2108	2664	70
+ARC	2109	-2916	33
+ARC	2109	-2869	57
+ARC	2110	2459	2
+ARC	2110	2528	65
+ARC	2111	-4238	1
+ARC	-2111	3480	1
+ARC	-2112	4539	1
+ARC	2114	3044	503
+ARC	2115	2116	84
+ARC	2116	2296	68
+ARC	-2116	4314	1
+ARC	2117	2118	52
+ARC	2117	3195	49
+ARC	2118	2119	47
+ARC	2119	-2650	48
+ARC	2119	4107	1
+ARC	-2119	-4107	1
+ARC	2120	-3173	38
+ARC	2120	2853	3
+ARC	-2120	-4289	1
+ARC	-2120	2923	44
+ARC	-2121	-4295	1
+ARC	-2122	2484	42
+ARC	2123	2124	46
+ARC	2123	3592	1
+ARC	-2123	-3646	1
+ARC	-2123	-2473	57
+ARC	2124	2125	44
+ARC	2124	4519	1
+ARC	2127	2128	71
+ARC	2127	2904	9
+ARC	2128	-2905	66
+ARC	2128	3560	1
+ARC	2128	3949	1
+ARC	2130	2131	15
+ARC	-2130	-2131	11
+ARC	2133	-4597	1
+ARC	2134	-2192	170
+ARC	2135	2187	40
+ARC	2136	-3415	1
+ARC	-2136	-3314	42
+ARC	-2136	3313	1
+ARC	2137	-3676	1
+ARC	2138	2173	1
+ARC	2139	4233	1
+ARC	-2139	-2960	58
+ARC	-2139	2883	1
+ARC	-2140	-2502	36
+ARC	2141	2142	407
+ARC	2141	3850	5
+ARC	-2141	2372	3
+ARC	-2141	3529	388
+ARC	-2141	4033	3
+ARC	2142	2143	408
+ARC	2142	2807	6
+ARC	2145	-4163	1
+ARC	-2145	-4529	1
+ARC	-2145	-2405	52
+ARC	2146	-3806	1
+ARC	2147	2148	174
+ARC	2148	2149	169
+ARC	-2148	4029	5
+ARC	2149	2150	166
+ARC	-2149	-3253	1
+ARC	-2150	3540	3
+ARC	-2151	-2929	45
+ARC	2152	2153	94
+ARC	2152	4445	1
+ARC	2153	2154	51
+ARC	2153	2258	46
+ARC	2155	-3296	2
+ARC	-2155	-3012	28
+ARC	-2155	3761	1
+ARC	-2156	-2259	53
+ARC	-2157	4427	1
+ARC	2159	2160	58
+ARC	2159	3302	47
+ARC	2159	3488	1
+ARC	2162	2163	81
+ARC	2162	2312	44
+ARC	2163	2175	45
+ARC	2164	-3209	1
+ARC	2164	-3078	57
+ARC	2165	2381	1
+ARC	2166	-4044	1
+ARC	-2166	-2963	38
+ARC	2168	2169	33
+ARC	2169	2170	37
+ARC	-2169	2515	32
+ARC	2170	-3192	26
+ARC	2173	-3640	1
+ARC	2173	2310	45
+ARC	-2174	-4119	1
+ARC	2177	2178	31
+ARC	-2177	-2676	45
+ARC	2178	2179	86
+ARC	2179	-2707	42
+ARC	2179	-2181	112
+ARC	-2179	-2445	76
+ARC	-2179	2708	45
+ARC	2180	2181	38
+ARC	-2180	2705	51
+ARC	-2181	2672	76
+ARC	-2182	3584	1
+ARC	2183	-3596	35
+ARC	2184	2285	5
+ARC	-2184	4583	1
+ARC	-2185	2680	71
+ARC	-2187	2862	7
+ARC	-2188	3644	5
+ARC	2189	2190	71
+ARC	2190	2724	43
+ARC	2190	4384	1
+ARC	-2190	3630	3
+ARC	2192	-4419	2
+ARC	2193	-3539	2
+ARC	2193	2828	56
+ARC	2194	2195	8
+ARC	2194	3256	12
+ARC	2197	-3102	21
+ARC	2197	3503	9
+ARC	2198	2842	128
+ARC	-2198	3532	135
+ARC	2199	2200	72
+ARC	2199	4544	1
+ARC	-2199	-2622	52
+ARC	2200	2201	68
+ARC	-2201	-3583	2
+ARC	-2202	2506	61
+ARC	2203	2204	36
+ARC	-2204	-4452	1
+ARC	2205	-2801	1
+ARC	2205	-2771	40
+ARC	2206	2207	27
+ARC	-2206	-3475	2
+ARC	-2206	2794	35
+ARC	2207	2208	23
+ARC	-2207	3113	37
+ARC	2209	2210	37
+ARC	2209	3890	1
+ARC	-2209	-3821	54
+ARC	-2209	4240	1
+ARC	2210	2414	34
+ARC	2211	3952	1
+ARC	-2211	3309	1
+ARC	2212	3979	2
+ARC	-2212	3992	1
+ARC	2214	-4224	41
+ARC	2215	2506	1
+ARC	2216	-4297	1
+ARC	2216	2587	72
+ARC	-2216	2363	55
+ARC	-2218	-4302	1
+ARC	-2218	2255	60
+ARC	2219	2596	64
+ARC	2221	-3137	1
+ARC	2222	-3932	1
+ARC	2222	3007	61
+ARC	2223	3407	84
+ARC	-2223	2388	220
+ARC	2224	2839	24
+ARC	-2224	-3907	2
+ARC	2225	-4507	1
+ARC	2225	2226	52
+ARC	2226	2227	55
+ARC	-2227	-2331	50
+ARC	-2228	2889	52
+ARC	2229	4399	1
+ARC	-2229	4369	1
+ARC	-2230	-2523	62
+ARC	2231	-2961	1
+ARC	2232	4077	1
+ARC	2234	-2691	30
+ARC	-2234	-3340	66
+ARC	2235	-4003	1
+ARC	-2235	-4078	2
+ARC	-2236	2713	70
+ARC	-2236	3278	2
+ARC	-2237	-3198	1
+ARC	-2237	2376	59
+ARC	2238	-2239	41
+ARC	-2238	-4547	1
+ARC	2242	-2429	69
+ARC	-2242	2429	48
+ARC	2246	-2844	41
+ARC	-2246	-3141	36
+ARC	2249	-4513	1
+ARC	-2249	-4187	1
+ARC	-2249	3109	40
+ARC	-2250	3251	41
+ARC	2251	-4245	1
+ARC	2252	-2358	63
+ARC	2252	4144	3
+ARC	2254	2671	47
+ARC	-2254	-3684	3
+ARC	-2254	3006	53
+ARC	2256	2678	33
+ARC	2256	3934	2
+ARC	-2256	4276	1
+ARC	2257	-4345	1
+ARC	2259	-3474	1
+ARC	-2261	-4110	37
+ARC	-2261	-3935	3
+ARC	2262	2634	35
+ARC	-2262	-2634	53
+ARC	-2263	4101	1
+ARC	2264	-3542	1
+ARC	2265	-3949	1
+ARC	2265	-3560	1
+ARC	2266	-4340	1
+ARC	2266	2267	37
+ARC	-2266	3271	4
+ARC	2268	2269	38
+ARC	2268	4304	1
+ARC	-2268	2677	31
+ARC	2272	-3431	2
+ARC	2272	2273	118
+ARC	2273	2655	110
+ARC	2277	2278	46
+ARC	-2277	2921	42
+ARC	-2278	2973	53
+ARC	2279	3658	1
+ARC	-2279	-2610	1
+ARC	2282	2299	54
+ARC	-2283	-2911	23
+ARC	-2283	4394	1
+ARC	2284	-3823	1
+ARC	-2284	4464	1
+ARC	2287	-3645	1
+ARC	2287	2288	39
+ARC	-2287	-2289	37
+ARC	2288	2289	32
+ARC	2289	2290	30
+ARC	2290	-2318	28
+ARC	2291	-2464	69
+ARC	2291	4133	1
+ARC	-2293	2622	71
+ARC	2294	3859	1
+ARC	-2294	-2700	54
+ARC	-2294	3450	4
+ARC	2296	-2596	81
+ARC	-2297	-3661	1
+ARC	-2297	2932	52
+ARC	2298	2299	58
+ARC	-2298	2519	55
+ARC	2300	-2486	50
+ARC	-2300	-3243	1
+ARC	-2300	2685	37
+ARC	2302	2691	1
+ARC	2304	-3507	1
+ARC	-2304	-3619	2
+ARC	-2304	3038	46
+ARC	-2306	-2717	44
+ARC	-2306	3736	3
+ARC	-2307	-2343	50
+ARC	2308	2309	35
+ARC	-2308	-2884	51
+ARC	2309	-2310	30
+ARC	2309	3640	4
+ARC	-2309	3091	11
+ARC	2311	-2910	43
+ARC	2313	3810	1
+ARC	-2314	3219	1
+ARC	2315	2316	43
+ARC	-2315	-4222	1
+ARC	-2315	-2993	29
+ARC	-2316	-2824	47
+ARC	2317	-4213	1
+ARC	2318	3645	2
+ARC	-2318	4331	1
+ARC	-2320	-2543	53
+ARC	-2320	2362	1
+ARC	-2321	2552	381
+ARC	-2321	4061	1
+ARC	-2323	-4324	1
+ARC	-2323	2465	63
+ARC	2324	-4267	2
+ARC	2325	3301	6
+ARC	-2325	-2658	1
+ARC	-2325	2986	87
+ARC	2326	2327	80
+ARC	-2326	2510	70
+ARC	2328	-4193	1
+ARC	2332	-3715	1
+ARC	2332	2333	55
+ARC	-2332	3059	58
+ARC	2333	2334	70
+ARC	2334	-2335	68
+ARC	-2334	4371	1
+ARC	2335	3715	1
+ARC	-2335	2782	41
+ARC	-2335	2858	7
+ARC	2337	2338	2
+ARC	2338	3996	2
+ARC	-2338	-4504	2
+ARC	-2338	-3708	5
+ARC	-2338	-3152	391
+ARC	-2339	-3987	3
+ARC	-2340	-4014	1
+ARC	2341	2342	65
+ARC	-2341	-2694	53
+ARC	2342	-3467	1
+ARC	2342	-2559	39
+ARC	-2342	-3768	1
+ARC	2343	-4365	1
+ARC	-2343	-4599	1
+ARC	2344	2345	78
+ARC	-2345	4090	1
+ARC	2346	2612	37
+ARC	-2346	2926	57
+ARC	2347	-3387	1
+ARC	2352	-3171	1
+ARC	-2352	3809	1
+ARC	2356	3282	1
+ARC	-2356	-4229	1
+ARC	-2356	2586	42
+ARC	2357	2358	50
+ARC	2357	4253	1
+ARC	-2359	2855	62
+ARC	2360	-3863	1
+ARC	2360	-2416	40
+ARC	2361	4224	43
+ARC	2364	-3148	21
+ARC	-2364	-3938	1
+ARC	-2364	3377	49
+ARC	2365	2441	81
+ARC	2365	3832	1
+ARC	-2365	-3766	1
+ARC	-2365	3105	46
+ARC	2366	-2870	117
+ARC	-2366	2812	60
+ARC	-2366	3348	25
+ARC	2367	-3569	1
+ARC	-2369	-3444	1
+ARC	-2369	-2772	41
+ARC	2371	-3623	1
+ARC	-2371	-4033	2
+ARC	-2371	-3529	368
+ARC	-2371	-2372	1
+ARC	-2373	3340	56
+ARC	2376	-2631	68
+ARC	2376	3100	2
+ARC	2377	2378	3
+ARC	-2377	-2572	4
+ARC	-2378	4376	1
+ARC	2379	2380	2
+ARC	-2379	3152	1
+ARC	-2380	-4190	2
+ARC	2383	4008	1
+ARC	-2383	-3719	1
+ARC	2384	3980	1
+ARC	-2384	4152	1
+ARC	2385	2710	39
+ARC	2385	2876	2
+ARC	2386	-4339	1
+ARC	-2386	2886	52
+ARC	-2386	3898	1
+ARC	2387	2566	62
+ARC	-2388	-2484	161
+ARC	-2390	2681	36
+ARC	-2390	4134	1
+ARC	2391	-3860	2
+ARC	-2391	2783	40
+ARC	2392	2590	55
+ARC	2393	2593	41
+ARC	2394	2395	11
+ARC	-2394	2930	8
+ARC	2395	2396	14
+ARC	-2395	-3500	1
+ARC	2396	2397	17
+ARC	-2396	-2978	1
+ARC	2397	-3485	1
+ARC	2397	2398	19
+ARC	-2397	4214	1
+ARC	2398	2774	27
+ARC	2398	3973	1
+ARC	2399	-2818	42
+ARC	2399	2400	1
+ARC	2401	2439	51
+ARC	2402	-2450	53
+ARC	-2403	-2947	45
+ARC	2406	-2409	49
+ARC	-2406	-2931	37
+ARC	-2406	2978	2
+ARC	2407	-3909	4
+ARC	2407	2408	91
+ARC	2408	-3973	2
+ARC	2408	-2775	29
+ARC	2408	2409	55
+ARC	2409	3500	3
+ARC	2410	2453	40
+ARC	2410	3200	38
+ARC	-2411	-3689	1
+ARC	-2411	-2615	53
+ARC	2412	2413	45
+ARC	2412	2648	1
+ARC	-2412	-4008	1
+ARC	2413	-2414	45
+ARC	2414	-2648	1
+ARC	-2414	-3890	1
+ARC	-2416	-3711	1
+ARC	2417	3106	33
+ARC	-2418	2454	1
+ARC	2419	3008	71
+ARC	2419	4173	3
+ARC	-2419	2831	52
+ARC	2420	4321	1
+ARC	-2420	4312	1
+ARC	-2421	4096	1
+ARC	-2423	-4615	1
+ARC	2424	-3068	34
+ARC	-2424	-3357	1
+ARC	2425	3068	35
+ARC	-2425	2511	36
+ARC	-2426	3284	33
+ARC	2427	-2872	30
+ARC	-2427	-3109	38
+ARC	-2427	2871	28
+ARC	2428	2429	76
+ARC	2431	-3921	1
+ARC	-2431	-3027	46
+ARC	2433	-2941	73
+ARC	-2433	-4310	2
+ARC	-2433	2941	62
+ARC	2434	-3279	1
+ARC	2434	-2798	65
+ARC	-2434	4218	1
+ARC	-2437	3643	1
+ARC	2438	3940	2
+ARC	2439	-3927	1
+ARC	-2439	3669	1
+ARC	2440	3818	1
+ARC	-2440	-4301	1
+ARC	2442	-2659	30
+ARC	2442	3879	1
+ARC	-2442	3942	1
+ARC	-2445	3220	75
+ARC	-2446	-4230	50
+ARC	-2446	-4210	1
+ARC	2448	-2966	33
+ARC	2450	-3969	1
+ARC	2451	3665	2
+ARC	-2451	-2923	57
+ARC	-2451	3387	1
+ARC	2456	-4376	1
+ARC	2456	2457	50
+ARC	2458	-3206	2
+ARC	2458	2898	55
+ARC	2459	2529	1
+ARC	2461	-4162	1
+ARC	2461	-2937	64
+ARC	2463	2464	51
+ARC	-2464	-4538	1
+ARC	2465	-4616	1
+ARC	2466	-2809	1
+ARC	2467	-3261	120
+ARC	-2467	3453	119
+ARC	2468	3453	1
+ARC	2469	2783	30
+ARC	-2469	-3101	29
+ARC	-2470	3190	42
+ARC	2471	-3156	42
+ARC	2474	2475	59
+ARC	2475	-3604	1
+ARC	-2475	-4367	1
+ARC	2477	-3707	1
+ARC	-2477	-4540	1
+ARC	2481	-3339	1
+ARC	2481	2482	46
+ARC	-2481	-3108	1
+ARC	2483	2484	116
+ARC	2485	-4233	1
+ARC	2486	-4030	1
+ARC	2487	-3212	37
+ARC	2487	4043	1
+ARC	2489	2490	1
+ARC	-2489	-4362	1
+ARC	-2489	4236	2
+ARC	2490	-3281	23
+ARC	2490	4184	4
+ARC	-2490	-3115	46
+ARC	2491	-4318	6
+ARC	2491	2492	59
+ARC	2491	3826	4
+ARC	2492	2493	3
+ARC	2492	3258	57
+ARC	2493	3009	1
+ARC	2494	3816	1
+ARC	-2494	2676	41
+ARC	-2497	3796	1
+ARC	-2498	2891	55
+ARC	2502	-3710	3
+ARC	-2502	3683	1
+ARC	2503	-3643	1
+ARC	-2503	3418	1
+ARC	2504	-4075	2
+ARC	-2504	2627	90
+ARC	-2505	-3031	38
+ARC	-2505	3746	1
+ARC	2510	-2512	116
+ARC	-2510	2513	37
+ARC	2511	2512	124
+ARC	2511	2949	37
+ARC	-2511	-2571	122
+ARC	2513	-3068	24
+ARC	2515	2516	38
+ARC	-2516	2679	41
+ARC	2517	-3690	1
+ARC	2517	2518	50
+ARC	2518	-3473	1
+ARC	2518	3093	54
+ARC	2519	-4611	1
+ARC	2519	2520	44
+ARC	2521	-4553	1
+ARC	2521	-2522	9
+ARC	-2521	2522	5
+ARC	-2522	4553	1
+ARC	2523	3637	1
+ARC	2525	-2799	40
+ARC	-2527	3750	2
+ARC	2528	2529	45
+ARC	2529	3218	32
+ARC	2529	3440	1
+ARC	2532	2533	33
+ARC	-2533	-2924	56
+ARC	2535	2536	55
+ARC	2535	2632	118
+ARC	2537	-2540	42
+ARC	2537	2538	81
+ARC	-2538	-2699	2
+ARC	2539	2540	42
+ARC	-2539	-4356	1
+ARC	2540	-2699	35
+ARC	-2541	-2859	50
+ARC	-2541	3614	1
+ARC	2544	-3190	41
+ARC	-2544	-2655	51
+ARC	2545	2818	36
+ARC	2545	2934	10
+ARC	2546	-4085	1
+ARC	2546	2697	47
+ARC	2547	-4100	1
+ARC	2549	2550	38
+ARC	2549	4012	1
+ARC	2552	-4577	1
+ARC	2552	2553	380
+ARC	2553	-4600	387
+ARC	2554	-3722	2
+ARC	2554	2719	121
+ARC	-2554	-4465	1
+ARC	-2554	-4061	1
+ARC	-2554	4577	1
+ARC	-2554	4600	393
+ARC	2558	-4352	1
+ARC	-2558	-4038	1
+ARC	-2560	-3151	1
+ARC	-2560	3285	38
+ARC	2561	2562	1
+ARC	-2561	-2728	1
+ARC	2562	2692	2
+ARC	-2562	2788	67
+ARC	-2563	4106	1
+ARC	2564	2852	66
+ARC	2564	3265	13
+ARC	2565	-3265	4
+ARC	2565	-2895	54
+ARC	-2566	-2781	57
+ARC	2567	-2616	48
+ARC	2568	2569	1
+ARC	2568	2578	53
+ARC	2569	2581	1
+ARC	2570	2571	79
+ARC	-2570	-2949	44
+ARC	-2570	3067	35
+ARC	2578	2579	57
+ARC	2579	2580	51
+ARC	2579	3127	2
+ARC	-2579	4150	1
+ARC	2580	2581	52
+ARC	-2582	2849	36
+ARC	-2582	3755	2
+ARC	2588	-3598	1
+ARC	2588	2589	42
+ARC	-2588	2795	42
+ARC	2589	2590	53
+ARC	2590	-2806	94
+ARC	2591	-2816	1
+ARC	2591	2592	46
+ARC	-2591	2637	47
+ARC	2592	2593	50
+ARC	2593	-3613	89
+ARC	2593	-3029	7
+ARC	2594	-3081	1
+ARC	2594	-2709	72
+ARC	-2595	-2955	19
+ARC	-2596	3595	3
+ARC	2599	-3558	1
+ARC	-2599	-3120	56
+ARC	2600	-3955	1
+ARC	2601	3991	1
+ARC	-2601	3246	23
+ARC	-2601	3385	1
+ARC	-2602	4467	2
+ARC	2603	2604	7
+ARC	-2603	-2730	4
+ARC	2604	-3872	2
+ARC	2604	2605	40
+ARC	-2604	-3993	2
+ARC	-2604	3048	33
+ARC	2605	2962	28
+ARC	-2606	2677	36
+ARC	2611	2990	36
+ARC	-2611	2865	36
+ARC	-2612	4522	1
+ARC	2613	-2876	2
+ARC	2613	-2710	58
+ARC	2614	-4455	1
+ARC	2614	2615	44
+ARC	-2614	-4548	1
+ARC	2616	2833	2
+ARC	-2616	3198	1
+ARC	2617	2618	47
+ARC	-2618	-3420	1
+ARC	2619	2657	57
+ARC	2622	3583	1
+ARC	-2622	-3375	3
+ARC	2623	2946	24
+ARC	2623	3819	5
+ARC	2624	-3341	1
+ARC	-2624	-4143	2
+ARC	-2624	-2751	52
+ARC	2625	2626	30
+ARC	-2625	2860	30
+ARC	-2626	2888	16
+ARC	2629	-3745	1
+ARC	2629	-2630	37
+ARC	-2631	2929	47
+ARC	2635	3888	36
+ARC	2636	2637	38
+ARC	-2637	-3625	1
+ARC	2640	2641	70
+ARC	-2640	-2791	81
+ARC	-2641	-3833	1
+ARC	2643	-4567	1
+ARC	2644	-4485	1
+ARC	2647	-3653	1
+ARC	-2650	3028	47
+ARC	2652	-4309	1
+ARC	-2652	-4446	1
+ARC	2654	4073	1
+ARC	-2654	2835	52
+ARC	-2654	4415	1
+ARC	-2655	3431	1
+ARC	2657	-4264	1
+ARC	-2658	-2921	1
+ARC	2664	2701	41
+ARC	2664	3307	28
+ARC	-2664	-4024	2
+ARC	2665	3742	4
+ARC	-2665	-3301	1
+ARC	-2666	3083	1
+ARC	2669	3490	1
+ARC	2669	3840	1
+ARC	-2669	3606	125
+ARC	-2669	3798	1
+ARC	-2669	3948	1
+ARC	2672	-3014	39
+ARC	2672	2673	39
+ARC	2673	2674	42
+ARC	2674	2675	43
+ARC	-2674	3753	1
+ARC	2675	2676	45
+ARC	-2675	3451	1
+ARC	2676	2699	43
+ARC	2677	-3755	1
+ARC	2677	-3411	33
+ARC	2677	-2849	40
+ARC	2679	-3192	27
+ARC	-2680	-4595	1
+ARC	2681	2682	51
+ARC	2682	-2932	55
+ARC	2682	4117	1
+ARC	-2682	-4134	1
+ARC	2683	2684	39
+ARC	2684	-3086	2
+ARC	-2684	-3793	1
+ARC	2685	4389	1
+ARC	2687	-3998	1
+ARC	2687	-3065	57
+ARC	2689	2689	4
+ARC	2691	-3900	1
+ARC	2693	-2982	35
+ARC	2694	3768	1
+ARC	-2694	3268	5
+ARC	2701	2702	26
+ARC	2701	2915	20
+ARC	-2703	2942	33
+ARC	2705	2706	46
+ARC	-2705	2707	34
+ARC	2706	-2708	42
+ARC	2708	-3825	2
+ARC	2712	-3499	1
+ARC	-2714	-3915	35
+ARC	2721	3822	1
+ARC	2723	-4290	2
+ARC	2723	2823	44
+ARC	2728	-2789	55
+ARC	2730	3993	2
+ARC	-2730	4226	1
+ARC	2733	2734	197
+ARC	2733	2735	4
+ARC	2733	2756	3
+ARC	-2733	-2748	82
+ARC	2734	2734	6512
+ARC	2734	2735	240
+ARC	2734	2756	168
+ARC	-2734	-2763	59
+ARC	-2734	-2755	121
+ARC	2735	2749	233
+ARC	-2735	-2763	3
+ARC	-2735	-2755	3
+ARC	2736	2737	161
+ARC	-2736	-4307	2
+ARC	-2736	-4273	1
+ARC	-2736	-2750	192
+ARC	2737	2738	148
+ARC	-2737	-4221	1
+ARC	-2737	-3572	4
+ARC	-2737	-3136	5
+ARC	2738	2739	131
+ARC	-2738	-4180	1
+ARC	-2738	-4015	3
+ARC	2739	2746	96
+ARC	-2739	-4350	2
+ARC	-2739	-4315	3
+ARC	-2739	-4244	2
+ARC	2741	-2839	46
+ARC	-2741	-3080	6
+ARC	-2741	3215	27
+ARC	2742	2743	94
+ARC	-2742	-4479	1
+ARC	-2742	-2757	138
+ARC	2743	2744	64
+ARC	-2743	-3578	1
+ARC	-2743	-2776	3
+ARC	2744	3575	19
+ARC	-2744	-4584	1
+ARC	2745	2749	2
+ARC	-2745	-2748	1
+ARC	2746	2747	86
+ARC	-2746	-4291	1
+ARC	-2746	-3487	2
+ARC	-2747	-4209	2
+ARC	2748	3896	1
+ARC	2748	4208	1
+ARC	-2748	-3350	46
+ARC	2749	2750	205
+ARC	-2749	-4258	2
+ARC	-2749	-3896	3
+ARC	-2749	-2768	1
+ARC	-2750	-4296	2
+ARC	-2750	-4169	1
+ARC	2752	3576	33
+ARC	2752	4291	1
+ARC	2752	4315	1
+ARC	-2752	-3352	28
+ARC	2753	2754	24
+ARC	2753	3571	2
+ARC	2753	4296	1
+ARC	-2753	-4156	10
+ARC	2754	2755	48
+ARC	2754	4512	1
+ARC	2755	2756	1
+ARC	-2755	-2767	56
+ARC	2756	2757	163
+ARC	-2757	-4512	1
+ARC	-2757	-4208	1
+ARC	2758	3737	1
+ARC	2759	-4043	1
+ARC	2759	-4021	46
+ARC	-2759	-4204	1
+ARC	2760	3193	6
+ARC	-2760	3259	5
+ARC	-2760	3946	3
+ARC	2761	-3186	9
+ARC	-2761	-3259	5
+ARC	-2761	3333	3
+ARC	-2763	-3573	24
+ARC	2767	2768	1
+ARC	-2767	-3292	37
+ARC	-2769	4179	1
+ARC	-2770	2874	36
+ARC	2774	-3808	1
+ARC	2774	2775	29
+ARC	-2776	-4156	1
+ARC	2779	3667	53
+ARC	2779	4368	1
+ARC	-2779	-3358	1
+ARC	2780	2780	2
+ARC	-2781	2887	78
+ARC	2783	-3113	34
+ARC	2784	4551	1
+ARC	2786	-4495	61
+ARC	2786	-3466	1
+ARC	-2787	-3828	1
+ARC	-2787	3319	36
+ARC	2788	2789	60
+ARC	2788	3509	5
+ARC	2790	2791	76
+ARC	2790	3833	1
+ARC	2791	-4457	1
+ARC	2797	-4583	1
+ARC	2797	2798	45
+ARC	2799	3878	2
+ARC	2800	-4531	1
+ARC	-2800	-3478	30
+ARC	-2800	-3043	1
+ARC	2802	2803	55
+ARC	-2803	4078	1
+ARC	2804	2805	2
+ARC	2805	3847	4
+ARC	-2805	3608	1
+ARC	2806	3598	1
+ARC	-2806	3029	7
+ARC	-2806	3613	88
+ARC	2809	2810	56
+ARC	-2809	4585	1
+ARC	2815	2826	57
+ARC	-2815	3821	57
+ARC	2819	-3110	4
+ARC	2819	3110	2
+ARC	-2819	3110	11
+ARC	-2820	-3407	7
+ARC	2822	4080	1
+ARC	-2824	3027	45
+ARC	-2826	-4283	1
+ARC	2827	-4500	1
+ARC	2827	-3811	58
+ARC	2830	2830	5
+ARC	2831	-3380	2
+ARC	2834	2952	15
+ARC	2835	3096	56
+ARC	2835	4404	2
+ARC	2835	4463	2
+ARC	2839	2955	35
+ARC	-2840	3804	211
+ARC	2841	-3980	1
+ARC	-2841	-3638	2
+ARC	2842	2843	126
+ARC	2842	3970	2
+ARC	-2842	4506	1
+ARC	2843	2870	117
+ARC	2844	-4353	1
+ARC	2845	3822	1
+ARC	-2845	-3141	1
+ARC	2846	2956	11
+ARC	2846	4261	1
+ARC	2847	-3050	1
+ARC	-2847	3242	11
+ARC	-2847	3846	28
+ARC	2852	2895	59
+ARC	2852	3205	2
+ARC	-2856	-2933	38
+ARC	-2859	-3106	37
+ARC	2860	-3162	60
+ARC	2860	2950	22
+ARC	-2860	3395	10
+ARC	2864	2867	38
+ARC	-2864	-2867	45
+ARC	-2865	-4426	1
+ARC	2866	2951	29
+ARC	2866	3386	2
+ARC	-2866	-4157	1
+ARC	2868	2869	26
+ARC	-2868	-2990	28
+ARC	-2869	-3090	25
+ARC	2870	-3520	1
+ARC	-2870	3651	4
+ARC	2871	2872	25
+ARC	2871	4187	3
+ARC	2874	4171	1
+ARC	-2874	4048	1
+ARC	2877	3905	1
+ARC	2882	3167	59
+ARC	2882	3672	1
+ARC	-2882	-4247	1
+ARC	2884	-3091	2
+ARC	2887	4181	2
+ARC	-2887	4418	1
+ARC	-2889	-3648	1
+ARC	2891	-3406	42
+ARC	2891	-3250	1
+ARC	-2891	-3983	1
+ARC	2892	4202	1
+ARC	-2892	-4202	1
+ARC	2893	-4385	1
+ARC	-2893	-3574	2
+ARC	-2894	-4242	1
+ARC	2896	2897	59
+ARC	-2896	3042	75
+ARC	-2897	-3398	1
+ARC	2899	-3887	2
+ARC	2899	2900	58
+ARC	-2899	3263	58
+ARC	-2899	4298	1
+ARC	2900	2901	63
+ARC	2900	3599	3
+ARC	-2903	4021	1
+ARC	-2908	-3799	2
+ARC	-2908	-3606	110
+ARC	2910	-3593	1
+ARC	-2910	3392	2
+ARC	2913	-3796	1
+ARC	-2913	-4192	1
+ARC	-2913	3196	45
+ARC	2915	2916	26
+ARC	2915	4135	3
+ARC	2918	-4472	1
+ARC	-2918	3734	1
+ARC	2919	4151	2
+ARC	2920	3596	2
+ARC	-2921	-2973	31
+ARC	2922	-4484	1
+ARC	2925	-3027	37
+ARC	2926	-3953	1
+ARC	2926	-2948	33
+ARC	-2926	-4522	1
+ARC	2929	-3481	1
+ARC	-2929	-3100	3
+ARC	2930	2931	35
+ARC	-2931	-4214	1
+ARC	2933	-3208	1
+ARC	-2933	-3054	48
+ARC	-2933	-2958	5
+ARC	-2935	-3137	46
+ARC	2939	2939	7
+ARC	2942	-3670	1
+ARC	2944	3124	49
+ARC	2944	4194	2
+ARC	-2944	3622	3
+ARC	2947	3121	1
+ARC	-2947	3082	43
+ARC	2952	3635	29
+ARC	2952	3923	2
+ARC	-2953	-3123	52
+ARC	2954	-2954	6
+ARC	2956	2957	8
+ARC	2957	2958	5
+ARC	2957	4469	1
+ARC	-2957	-3503	3
+ARC	2959	3094	6
+ARC	-2959	-3407	53
+ARC	-2960	-4354	1
+ARC	2963	-4248	1
+ARC	-2963	4575	1
+ARC	2966	-3249	1
+ARC	-2966	-3791	1
+ARC	2968	-3160	71
+ARC	2970	3456	9
+ARC	-2970	-3456	8
+ARC	2971	4210	1
+ARC	2971	4230	48
+ARC	2974	-2976	3
+ARC	-2974	-2975	1
+ARC	2975	2976	9
+ARC	-2975	3704	1
+ARC	2976	-3528	4
+ARC	2981	2982	30
+ARC	-2981	-3319	33
+ARC	2982	-3238	2
+ARC	-2982	4211	3
+ARC	2983	-3103	37
+ARC	2983	2984	2
+ARC	2986	3211	95
+ARC	2986	3486	2
+ARC	2990	3588	1
+ARC	-2990	4426	2
+ARC	2991	-3746	1
+ARC	2991	-3699	56
+ARC	-2991	-3223	1
+ARC	-2992	3699	1
+ARC	-2993	3027	37
+ARC	2996	-3149	3
+ARC	2996	2997	1
+ARC	-2996	3926	8
+ARC	2997	-2999	1
+ARC	2998	2999	5
+ARC	-2998	2999	6
+ARC	2999	-3926	8
+ARC	3001	-4251	1
+ARC	3001	3002	35
+ARC	-3001	-4056	2
+ARC	3008	3009	72
+ARC	-3009	-3826	1
+ARC	-3009	-3131	29
+ARC	3010	-4440	1
+ARC	3010	-3455	14
+ARC	3010	3011	10
+ARC	-3010	-4441	1
+ARC	-3010	-3454	21
+ARC	-3010	4326	2
+ARC	3011	3455	8
+ARC	3011	4440	1
+ARC	-3014	-3451	1
+ARC	-3014	3183	35
+ARC	3015	-4261	1
+ARC	3015	-3016	58
+ARC	3015	3128	5
+ARC	-3016	3272	50
+ARC	3017	-3018	2
+ARC	3017	3018	3
+ARC	-3017	-3864	2
+ARC	-3017	3864	1
+ARC	-3022	-3970	1
+ARC	-3022	-3348	22
+ARC	3025	3841	5
+ARC	-3025	3841	6
+ARC	3030	-3901	39
+ARC	3030	-3270	1
+ARC	-3030	3615	1
+ARC	-3031	3699	38
+ARC	3036	-4395	1
+ARC	3038	3039	38
+ARC	3039	3591	1
+ARC	-3039	3619	2
+ARC	-3042	3397	1
+ARC	3044	-3784	1
+ARC	3045	-3888	53
+ARC	3046	3047	83
+ARC	-3046	-3087	55
+ARC	-3047	-3343	3
+ARC	3048	3609	1
+ARC	-3051	-3377	25
+ARC	3058	3058	3
+ARC	3059	-3062	71
+ARC	3059	3792	2
+ARC	-3059	-4371	1
+ARC	3060	-3792	1
+ARC	3060	3061	92
+ARC	3061	3062	88
+ARC	-3062	-4493	1
+ARC	-3063	3272	6
+ARC	-3066	-4443	1
+ARC	3067	3068	27
+ARC	3069	-3070	45
+ARC	3070	3071	37
+ARC	3074	-3299	1
+ARC	-3074	-3687	1
+ARC	3075	3076	23
+ARC	3075	3089	69
+ARC	3075	3148	20
+ARC	3076	3077	20
+ARC	3076	3938	1
+ARC	3077	-3377	21
+ARC	-3082	3986	2
+ARC	3085	-3186	6
+ARC	-3085	-4046	1
+ARC	-3085	-3946	3
+ARC	3087	3343	1
+ARC	3088	-3164	2
+ARC	3089	3216	22
+ARC	-3090	-3307	25
+ARC	3096	3097	56
+ARC	-3097	-3263	61
+ARC	3098	3099	36
+ARC	-3099	-4552	1
+ARC	3106	-3614	1
+ARC	-3106	3384	3
+ARC	3112	3118	4
+ARC	-3112	-3804	6
+ARC	-3116	4053	1
+ARC	3123	-4430	1
+ARC	-3123	-4055	1
+ARC	3129	3130	25
+ARC	3129	4533	1
+ARC	-3129	-3258	33
+ARC	3130	3131	25
+ARC	-3131	4093	4
+ARC	-3136	-3350	4
+ARC	-3137	3567	2
+ARC	3138	4045	1
+ARC	3140	3141	45
+ARC	3140	4353	3
+ARC	3143	-4182	1
+ARC	3143	3144	11
+ARC	-3143	-4574	1
+ARC	-3143	3370	11
+ARC	3144	3145	12
+ARC	3145	-4231	2
+ARC	3145	3240	12
+ARC	-3145	-4164	2
+ARC	-3149	3150	2
+ARC	3150	3926	2
+ARC	-3152	4057	1
+ARC	-3152	4190	1
+ARC	3156	-3853	1
+ARC	-3156	4588	1
+ARC	3160	-4573	1
+ARC	3161	3162	34
+ARC	3161	4265	4
+ARC	3164	3165	64
+ARC	-3164	-3770	1
+ARC	3167	-3757	1
+ARC	3167	3168	60
+ARC	3168	-4511	1
+ARC	-3173	-4425	1
+ARC	3175	3426	1
+ARC	-3175	3759	1
+ARC	3176	3177	25
+ARC	3176	4125	1
+ARC	-3176	3176	6
+ARC	3177	-3180	20
+ARC	3177	3659	4
+ARC	3178	-4125	2
+ARC	3178	3179	25
+ARC	-3178	-3659	7
+ARC	-3178	3283	11
+ARC	3179	3180	20
+ARC	-3180	-3283	1
+ARC	3183	-3220	28
+ARC	-3186	-3194	12
+ARC	3187	3553	1
+ARC	-3188	3326	10
+ARC	3193	3194	7
+ARC	-3193	4115	1
+ARC	3194	-3334	2
+ARC	-3194	-4115	2
+ARC	-3202	-3726	4
+ARC	-3202	3726	1
+ARC	-3203	-3739	3
+ARC	-3203	3739	3
+ARC	3211	-3790	97
+ARC	-3212	4021	39
+ARC	3213	4105	1
+ARC	3213	4442	1
+ARC	-3220	3825	1
+ARC	3228	3229	5
+ARC	-3228	3229	4
+ARC	3229	3230	8
+ARC	3230	3231	25
+ARC	-3230	-3369	15
+ARC	3231	-3370	12
+ARC	3231	3252	9
+ARC	-3231	3787	1
+ARC	3236	3237	5
+ARC	3237	3237	47
+ARC	3240	3241	10
+ARC	3240	4182	2
+ARC	3241	-3788	4
+ARC	3241	-3252	9
+ARC	3246	3247	30
+ARC	3247	-4530	1
+ARC	-3247	-3385	3
+ARC	3251	-4408	1
+ARC	3256	3257	9
+ARC	3256	4260	1
+ARC	3258	3281	23
+ARC	3261	3508	1
+ARC	3262	3804	1
+ARC	3267	-3893	1
+ARC	-3275	3532	3
+ARC	3284	3322	28
+ARC	-3284	-3611	27
+ARC	3287	3288	15
+ARC	3287	3487	1
+ARC	-3287	-3712	5
+ARC	3288	3289	15
+ARC	3288	4255	1
+ARC	3289	3290	21
+ARC	3289	4015	1
+ARC	3290	3291	24
+ARC	3290	4350	1
+ARC	3291	3292	29
+ARC	3291	4273	1
+ARC	3292	4170	3
+ARC	3293	-3653	3
+ARC	3300	3300	2
+ARC	3304	-3305	10
+ARC	3304	3305	5
+ARC	-3304	-3513	4
+ARC	-3304	3513	6
+ARC	3307	4024	4
+ARC	3311	-3456	12
+ARC	-3311	3456	6
+ARC	3317	3436	1
+ARC	3319	-4211	1
+ARC	3325	-3327	1
+ARC	-3325	-3763	7
+ARC	3326	3327	14
+ARC	-3326	3555	4
+ARC	3327	-3552	16
+ARC	-3327	4149	2
+ARC	3330	-3331	3
+ARC	3330	3446	1
+ARC	3333	3334	3
+ARC	-3334	4046	1
+ARC	3335	-3403	1
+ARC	3340	3900	1
+ARC	-3340	3562	1
+ARC	-3350	-3576	33
+ARC	3351	3352	24
+ARC	3351	4209	1
+ARC	3352	4244	1
+ARC	3352	4584	1
+ARC	3353	3353	5
+ARC	3354	3355	5
+ARC	-3354	3355	3
+ARC	3367	3368	17
+ARC	-3367	3368	5
+ARC	3368	-4220	6
+ARC	3368	3369	17
+ARC	3373	3526	1
+ARC	-3373	3526	2
+ARC	3374	-3526	1
+ARC	-3374	-3526	3
+ARC	3390	3390	2
+ARC	3391	-3801	1
+ARC	3391	3801	3
+ARC	3393	-3915	1
+ARC	3395	-4265	2
+ARC	3395	3396	7
+ARC	3399	3400	3
+ARC	3400	3641	3
+ARC	-3400	-4299	2
+ARC	3403	3403	5
+ARC	3410	3411	43
+ARC	3410	4052	1
+ARC	3421	3763	17
+ARC	3421	3820	2
+ARC	-3421	3552	16
+ARC	3422	3790	3
+ARC	-3427	3678	32
+ARC	3433	-3704	4
+ARC	3433	-3434	4
+ARC	-3434	-4336	1
+ARC	3436	4087	1
+ARC	3447	3448	8
+ARC	-3447	3448	2
+ARC	3448	-3449	1
+ARC	3448	3449	5
+ARC	3453	3469	165
+ARC	3453	4606	1
+ARC	-3453	-3508	1
+ARC	-3460	-3840	3
+ARC	3472	3473	1
+ARC	3472	3546	1
+ARC	-3472	-3545	2
+ARC	-3472	4611	1
+ARC	-3483	3888	5
+ARC	3484	3485	2
+ARC	-3484	3485	3
+ARC	3486	-3790	1
+ARC	-3489	-4369	1
+ARC	-3491	-4618	1
+ARC	-3491	-4614	1
+ARC	3493	3493	8
+ARC	3494	3495	10
+ARC	3494	3518	2
+ARC	-3496	-4422	1
+ARC	-3496	4481	1
+ARC	3498	4004	2
+ARC	3521	3522	3
+ARC	3521	3660	4
+ARC	-3527	-3865	1
+ARC	-3528	-4374	3
+ARC	-3528	4374	2
+ARC	-3537	4420	2
+ARC	3540	3653	1
+ARC	-3552	4287	1
+ARC	3553	3554	8
+ARC	3554	-3820	2
+ARC	3554	-3555	4
+ARC	-3554	-4149	1
+ARC	-3561	-3783	1
+ARC	3565	-3763	7
+ARC	3571	3572	2
+ARC	-3572	-4170	3
+ARC	3573	4258	1
+ARC	-3573	-3580	14
+ARC	3575	3712	8
+ARC	3575	4259	3
+ARC	-3575	-4598	1
+ARC	3576	3577	12
+ARC	3576	4180	1
+ARC	3577	3578	1
+ARC	3577	3579	14
+ARC	3577	4221	2
+ARC	3579	3580	13
+ARC	3579	4307	1
+ARC	3580	4169	1
+ARC	3580	4479	1
+ARC	3588	-4335	1
+ARC	3588	3589	1
+ARC	-3596	-3895	1
+ARC	3599	3600	3
+ARC	3600	-3829	3
+ARC	-3600	-3916	1
+ARC	3620	-4557	1
+ARC	3620	4023	1
+ARC	3641	-4073	1
+ARC	3641	3887	2
+ARC	-3641	-4074	1
+ARC	3652	-4029	1
+ARC	3652	-3714	2
+ARC	-3653	-3709	4
+ARC	-3678	-4491	1
+ARC	3712	4598	1
+ARC	3748	3812	2
+ARC	-3752	-4582	1
+ARC	3782	3783	1
+ARC	-3783	-4260	2
+ARC	3787	3788	2
+ARC	3787	4574	1
+ARC	3795	3795	2
+ARC	3798	3799	1
+ARC	-3799	-3948	1
+ARC	3804	3815	3
+ARC	3806	-4002	1
+ARC	3812	3905	1
+ARC	3817	3829	2
+ARC	-3821	4283	1
+ARC	-3828	-3919	1
+ARC	-3828	4360	1
+ARC	3829	-4090	1
+ARC	-3829	-4415	1
+ARC	3831	3831	4
+ARC	3841	-3842	7
+ARC	3841	3842	6
+ARC	3846	4178	1
+ARC	-3865	-4508	1
+ARC	3884	3885	1
+ARC	3884	4456	1
+ARC	3888	3889	1
+ARC	3914	3915	1
+ARC	3956	3956	1
+ARC	3964	3964	2
+ARC	3984	3984	3
+ARC	3987	4028	1
+ARC	-3997	-4600	1
+ARC	-4004	-4270	2
+ARC	4025	4025	5
+ARC	4059	4059	1
+ARC	4093	4318	4
+ARC	4096	-4096	2
+ARC	4127	-4127	2
+ARC	-4164	4220	4
+ARC	4173	4174	3
+ARC	-4174	-4533	1
+ARC	4184	4318	2
+ARC	-4220	4231	2
+ARC	4224	4438	1
+ARC	-4224	-4459	1
+ARC	4243	4243	3
+ARC	4255	-4255	2
+ARC	4259	4313	1
+ARC	4298	4299	1
+ARC	-4299	-4404	1
+ARC	4313	4313	1
+ARC	4429	4437	1
+ARC	4434	4434	1
+ARC	4436	4437	1
diff --git a/tests/test.LastGraph b/tests/test.LastGraph
new file mode 100755
index 0000000..1ba8b62
--- /dev/null
+++ b/tests/test.LastGraph
@@ -0,0 +1,68 @@
+17	400000	61	1
+NODE	1	2000	477994	477994	0	0
+CGGACGCGGTTTAGGCATAAGCAGGCAATAACCGTACTGATGCGAAGCAGCGTGAGATCCCCATTAGCGGAGGTATTACATCCCCAATATGAGCAGTTAATGTCTGTAAGAACGATAACAATGTGAGTCATCAGGTCGCTCATTTACGGGGTAGCTGGATCATCGATCTTCCGTCCGTCTAGACACCACTCGCCGGGATTGCTGCTTCTCTGGGGAGCACCACCAGGAAAGGATCATCTCCACACGACTATACCAGCATGATGCCAGTGTCACTCCTCTACCGCATCCCCATTGGGGCTTCGCAATGAATCGACACAGAGCTCTGGATAAGCAGAACTTCATTCTCAAGCACAGCGACGCTCCCTCTAGACTACTTCTCCTCTTTTGCGTAACATCTTAGAATTGTAACCTCCCTGAGACTAATATACCACACTTGAGGCATACTAGACTTAGATGAGGGCACTTCTCCTTAGTTCAGCACACAGCCCCAGG [...]
+AAACCGTGGGGCTGCGCATTCCTAGTAGTTTTAACAGTAATAGTCGCGCCGTATTAAGCGCGGAATGTTGGAGGTACTGTGCTTCTATATCGATATGAAAGCTGCGTTCCCGAGGCATCGCGTGTGCCGTGCCTGGCAATGTTCTGTATGTTGCGAAGGCCCCGGCCGTCCGCAACCTGCGCTGCTCCCTTATTGTCAAGGATATCAGTTGCCCGCCCACTATTATTCAATCAGAACCTAATTATTGTTGAAAGGCGATAGCTGAGCCATTATCAGGCGAGCCGCAGCCAACCGTCAGAATTTACTCTAGCGGGAGCATTTCGGTCCCATGCCAGTCAAACTTTCTCAACGAGCCACTAGAAGCGGACGTATTGACAGGGGCTCAACCGGACCACTCCGTTGACCGTTGTTACTAACTGGACTCTATATCGGTTCGGCCGCGTTGAACTCGTCCCACATCCGGCCACAGCTTTAATACGACAGTGCTAGAAG [...]
+NODE	2	2000	1261192	1261192	0	0
+CGTGACAAAAGGATGTCTGCTTCAATGGACACTCGTAGTTAGTATACTAGGCTGGCAATACCCACTTGTATCTTCCTGTGTGGTTAGTCTGATGCATCTTTTAGCTCAACCCGAAGTTGCCTACATGCCCGGCTAGAGGCTCTTTAAGATGCGCGTATCGGGGAAAACACCATGTGTCTTTATACAAGTTACGATACAGCGACCCGAATACCGCGGAGCACATAGACATGGTCACCCGGCCGCGAGCGGGGTCGATAGTCAATTGCCCGTATTGCATTGGCCCCTGCATACTTGGCAGAGCGGCCTCACTATACTCGGTGGCGATTATTGGCGTGACGGGTAACCAAAGGATTTTATTGACGTACGGCTCCAGTCCTAGTACTTGACGTGTACATGAGTCGATCACTACACCTAGAAAGCGCTGGCTGCCCCTGGGGAGAAATTGAAGTCATATGAACCTGTCTAGCTCCGACGCGGACATTTGGCCAAAAA [...]
+CTACTGCCGGCACCCGATTCGTTGCGCTTGTGCGCCGCTCATTACATCAAACTCATATGCGTTAACGAGAGGTTAGACATGTTACCGAAATAATTACAAAATGAGAAAGTTATGGCCATTCGGAGGACATAACACCTCGCTTACCACACTCAAAACACGAATTGATCCTCACTGAATGCAAAGCCTTAGTGAAAGAGAACCGGCGTCCTGGACGCTCCATAGAATCCCCTCTTATTTTAGGCGTCCTAGGTGCCTACGCTCCCAGCCTGCATTTGGCATGTCGGCGGTTGTAGATGCACTTTACGCATCGGCGCACTGAGGCTCTGAACCGTCAGGCGAACGGGGTATCGACCCAGCTGCACGATCTATTCCCAAGACCCATACAGCTCATCCACGGTTACGGATCCGTCGGTGGAGTAGAGACCTTATGCTCTACATGTGATTCCCGACAAACATCTTCTTGAAGGCCGTTCCAACTGGCTCAATTCGCAC [...]
+NODE	3	2000	1271882	1271882	0	0
+TCACATTTGCAAGTCGTCTGTCATCCACCATTCAAGACGTTAGGCGCTGCTGTTGCCACTATAGATGACCCTCAGTCTATGATCCTATTATTGGGGACATTGGTAAGCGAGTGGGGTCCTGCACGGGGATGTTGAGTCCCGGATATCGGGTCTGGTGCTTCCATATGTTTTTGGCCCCACCGACCAGTCCCGGCATGCTTAAAGTATAACGTTCAGTCAGGAATCCATCTCGGGCCCCCCATATCGCCGAAAGTCCTCACTACGCAACCTTCTAGTAACACAGAACTAAATGCACAAACGAAGGTTTGTTGTCGATCTGTAAGACCGGCGACTAGGCTTTTGATCACACTAGGATGATAATGTCCTAATAACGTAGTACGTGCCCAGATCTGTCTTCAACTTATAATTAATGACTTGGTTATGATCAAGGAAAGTGCGACTCCCATTGGTGTCACCAACTCGCTGTGCGTCTCATTGTACCATCTTACAGAG [...]
+GCTCGAGTGGGACATTATCCGTGCATCAGACTACTGGGTGCACGTCCGATTCCGGGCTGATCAAGCGAAGCAAATAGTCCGAATCTAGCCTTATATGTGCGTGATAACCATACGAGCTCAACTGATAGATTATTACGGAACGTCCAGGTATTTTGCCAGGACCCCTACGTACCATGTATGTCCTCGTACTTAAACTAGGAAGGTCGAACTTCTACGATCACGACCCCCGATTACATCGTGAATGTGCCTGAAACCGACCAGAGTGGTCACCCAGGCGTGTTACGAGTAGACGGAACTCAACGCGCATCGATATTGCGGGAAGTATCCAACTGGTAATGCGATAATGCACCAGGGAGTATAGCCTTAGCGGACACGAAAACGGCCTAAATGAGTTTTTGTTCCGAGCACGCGAACACCCGTACTTCCGCGTCGCGTGAAGGTCAGACCTTTGTCTCAGGCCAACGCATTTGGTGGGTCTGATGTATGCTACGG [...]
+NODE	4	1940	3092003	3092003	0	0
+CTCACGCCCTCTCTAACGGCTGTTAATTAGCTACTCAGGTACTTGGCTCAACCCGGGGTCTTCGTCTGGATTTCGTACGTGTCCCAAGGGGTGGTCGACTTTCGCAGAAGTGTCTTAGTAACTAACGTGAGTAACCAGAGGCGTTGAATTCCGCGAGCTTAGCTTGGTAACGGAGTTCATAACTAGGGACTCCACTGAAAGCTGGTTAATCATACGCATAGTGAGCCGCCCGTCTCCTTGATGTCCACGTCACTCACAGTATACAACGGGCACGCCCCGTATCTGAACGTTGTCCACTCAGCACGGGTCCCTGGTGAAAGGCCGGTATGAGTAATAAACCTTCGCAACATTGACACTGGTCAGATTCCGAGCGACCCATGTCGATAGTGGCAGGAAACGACCGAAATTTGGGTTAGACTCCAATACCTTCAGGACGATCCCGGCAAATACGGATATGGCTAGTTACGGAAGGTGATGTGATCCAGTAAAAGC [...]
+TCTTACCAGAAACCCGAACCTAACCTAGATCTTACTGACGACATAAATATTAGCACACTCCCTCCCTAGGTTTAATGATGTATGGACAAAGGGGACCCTACAAGAGCAGAGCTACGTTATCGAGATCTATCAACTTCAACAAAACTGCTTAAGGCCGACTCCAGTACAAAAACACCCTGGGTAGTGTTGAGGAGATCAGCCGGGAATCCTATCCCAGCGGTACGTGATGCACGGAAGTCGGTATTCGACATAGTGATAATGAGCCGATGAAAATCTCCCCTTGCCGGGGGTTTTCATAAGTCTGGTCTGGAGCCACATATCATAGCGGGAGGTTGCTCGGACCCATAATTAGGGGTGAACGGGCTTGGTTACCCCCGTTAGAAGGCAGTGCTCGCTAGACGACGTTCGATGATGTACCGCGGGTTAGAAGTAGGGCCTTTTTCGATGACCGTGACAGTGAGGGCATTGAAAGATAGACCGCAGTCCGCGTTG [...]
+NODE	5	1941	1032693	1032693	0	0
+CGACAAGGCGAGCACGAAGGGAAAAGATTCGGAAGAGTGATCTTCGCGAATAAGTAGCTAATAAACTTCCCATTTTTCTGTAGTTAGAGTTTCTAGAAACCTTTTGCCTCGGTAACACACCAAAAAAGTACGTTGTGTCTAGTGCATGCGATGCCATTATATCCGCGGTTACCTAACCGCGACTCGAGACGCTGGGGACGTTTTAAGAATTATAGCTGGCTGGTGTTCTTTGGTGCTCATTTGAACCGGAACGTCGGCATAAGAAGGGTACCAAGGAACCGTGTCATAATCAGACGCACCAATTCCAGATAGATAACGCATATTGGCAACGGAGGGAAGCCCTTTTACAGACCCACTCTTGGACGCTCCCTGAGGGTAGGCCTATCTCGGAGCGGTACCTTCCCGCGCCACGTGCGGGGCCTCATCCTGAGTACTCAAGGACGGGACGGGGCTAGGGAAAGGATCTCGGTAGGCTGAGCTGGTCGGTTTTGT [...]
+GATAGTTTCGCGTGGGTATGGCCGGTCTATTCATACGCGAATCTCAGGTTTGTAGAGGGGCCAGCTCGGCACTGTCTCAAGATTCCGGTAAGGCCCCGGTACCCAAAATCGCACTTAGGCCACAAAGGGAACGAGAGTTGCACCTCAACAGAGACTCTTTACAGACATAGCAAGTCGAGGGTATGTCGGTTGGAGAACTTACTCTTCCCTATTTCAAGACGCGGTTACTATCCCACGGGATACGTCTAGTACATTACATCTAGATTGTATATATCCACGTAATATCGGCAGCGCCTTATCTATTCGTCATCATCTCGCTCAACCTAGAGAGTCCATAGGCCAGTCGTGATGCCAGAGAGGTACCAATCGATTCAAAGTTTCGATGCAGCTAGAGGAGAAGAAGTCGGTTGTGTTAATGATGCGCTTGCCAGAAAACTTATCAGGCCGCATCTCTCTATAATTGAATAGCATGTTGTTGCTAATGTCTTTCAG [...]
+NODE	6	59	17031	17031	0	0
+GAACACACGAAATGCGGTCAACCACACAAGGGAGTCGACAATAAAGATGATGTAAGACG
+AGGCCTCGATGAGTATCCACGGGTTAATTCAAAGCCTAGCAGACTAAGTCGTTGTGAAA
+NODE	7	1940	1032490	1032490	0	0
+CATTCTAGGATCACTTATCATGGACGAGAGCTCACCACGAGCGAAGGCTGTCTTGTAACCACCCGTAAGGATGTCTGCCCGCAGTCGAAACTTAGTTGCATCAGGCACGCTGCACCTTGGCTCAACTCATGATGGCTCATATGATTTATTCTACAGTAATCGGAGGCTACGAGAACAATCAAGGGAGCCTAGCCGGGATTGCCTAGTTCTCAAATGGAGGAAAAGATCCGGCACGCTGCTGCTCGAATGAATCTTTGATGCATTACATATACACAACGCTACCACGCAGTACGGCTCTCAATCGATTCTTAAGGTCGATCGAGCGTGTGCCGGGTGCTATTTTCCACGCGTCGCTTACCAAGGCAGCAGTACCTAACAATCGCATCGCATGCCGCTCGCAGTAGACCACGACAATCGAAACAGATGCTGGTTACCTCGTATCCTACAAGGATTTGGCCAATGGCCCACTTAGGAGTTGGTGTCGACTCTAGG [...]
+TTGCTGGAAATGGAACACACGACTTGGAAACAAAGATCGATGAACTGCTCCACGGCGAACCGTATTCTATCGGCGCTTGGACTGACCTAGCTTTGTCTACCCGCCATGCAGGGTAGTGTTCTGGGGACAGGACTGCCCTCCCAGTTATCGGGGATGGGCAACGAAAAAGGTCTTATTGACGTCATCGAGTACGTTGTGGAGGCGCTGAATCTCAGCGTCCGACAATAGTAAGAAACGGGAAGGGCAGGAAGCTAGCAAGTGGAAGAGGGGGAGCGTCTCGTTCCCAGCAAGCAGCTCGAGCCCTGAAGAGATGGAGCAAAGCCCTGTTTCTTTAACAGTTATTCTAAGCGATTGATATGTTGATATAATCGATGGCAATGTGCACCTCTTAAAGCAACTTCTACCCGACGTACCTAGCCTTACGGTACACCCAGATCACCCCGGTGAACTTGCGGCTTTCCTGGTCGCAAATATCCAGGCGGGCTGGTTTCG [...]
+NODE	8	2000	574685	574685	0	0
+GACTATGGGCACCGATTGACTAAACAGCTCGAATAAACAGGATGCCACGGTGTGACTAGGTAGCCCCAGGCATGAGTGTTTACCTCGGGCACAGACCTGATTGCGCGCCTGATTGAAGCATCCCGGCGGATCATGGAACAGTGTACCGCATACGCATGCAGGGAGTGGGCTCATCCTCACCGCGATATAGACACAGGGCGGGGTTCCCGGATATGCTGAGGCCTTGACTTGGAACAGCGCGCTGCGCGAACTAAAGTTAGGCAATAGATCGATCTGATGCGCCATGTGTCGTTGGTTAGCGTACCCCTAAGGTCTTCTGTTATTTTCATCCCTGTCTGTCTTGCACGCCAGAGCGCTCGCGTTGTATCTTCGACGTTTGGATAGAGTCAACTACATATGATTGTCCCCTATTGGAAGTGCTGGTGAATTATCTGTCCGCGATCCGTGACATACATCCAGCGCAACGGTATGGCTGTGGCAGCCAAGGCTGAC [...]
+TTCTCTGGTATCCTCGATAGCGATAGATCTATACCGCGATGAAGGTAGCTCATAATCAATACACGCCATCACGGCAATTTAACAGTGTCGTGTCTCACTTACAAAATGGGGCATAGATAGCACCGCCCCTGACAGGCCGGCGTTGCACGCACGAAGACCACGTTCGTTTATATTTTGTGGGGGTGGGGACTCCGATTCGTCTGTCGGGCTATGCGCTGGCGTCTATGGCTGTGGAGATTTGAATGGTGGCGACCGTAACACGCGTAGAAACCCCACCCCCCCACAACGTCGCCAGGTCCTGCCATGCCTCTACGTCGAGTGAAATAGCTATGTAATTACCCCTGTGATATTTGGGTCGATCGAGTCAAACGGTAGTACGGTGCTGTGCACTGCTGACCTCACTTTACCAAATAGGGACAGCACCCGTTATGCATTTTCAATAAGGTCAGTTAAGTTTCTAGTGCAGTAGGCAGGGGACTCGGAGTAAGATAT [...]
+NODE	9	2000	1931403	1931403	0	0
+GAAGGATGCCTACAACGCAAAAATTCCTGAAGCTGAAGTCTCAGAATCAAGTGCGCTTCGACTCCGATTCTTGGCGGTTTCGGACGTTTTGTACATTCGGCTTAGGTGGTAAAACCGTACCGTCGCTCGTGTGAGGGCATGCCGCTACACGGAAACCACGCAGGGTACTGGAAGATTAGCCGAACTCCAGCTATCAATGAATCCATCGCTCCGTCTCCCTATTCGTGCTAGTTTTTCTCCCCGTATTTAATTCCACTCTATTTACTTCCCCATCCCCCCACGTGGGCTCATTCTCATATAATGAGCACTCGAGCTAGGTGATGCGATAAACCTCGCTGTGGCCGCCCAGAGCCATCGCACTCAGCCTATGAAGGTAGCTCTTCAGCGCGCCAGTACCCGGATGGGAAAGATATGAAGAAAGCTTCATATGCGGTACTCTCTGTTAACTGTAATATCGAGTGGCAAGGCACTTCAGTCCTAGAGATCATTAGT [...]
+CTTCCGATCATTCGGCTTCTCTGCGGGCAGCTTTCTATACCACTCATTAAACACGCACTCCGGGGGTCGTAGGAAAACCGCTTGGTGACACTTGGGCGGGTGCCCGTCCCGTCCATCCTCAGGAGGCCCGTTCAGCACAACCTCTGACGGAAATATCGACTAAGTCCTCAGAACAATGAACCTTGGACACGCAGAGCGTGTGAATTGACAGGAGGGTCATTCACGGTGGCTCGAGAGCAGTCGTGAATTGACAGTTATTTCCATGCTAACTGATCACCTTGTCAAAGACACAGGGAATCTGAGAGAATTTCCAACGGTAGTACTGTATCCTCGATATTTCTTTACACCCTCTCACTGTGTAATGGTCGAATCCGAACGGAGCGGCGCGGCGTGAGACTTGAGGGCACATGATCTGCCCTGCCCGGTACGCGATGGCCAATCTAGGTACTGGGGACCTATCACCTACGTCGTGTAAAATCTTGTCGTAGCCAA [...]
+NODE	10	2000	496973	496973	0	0
+CAGGTTACATTCCGACCAACTCTTCGGCGCGGGACGGGAGTATGTCTCATGTCTCGAGTAGGGCCCAATGTAGTTACCGTGTAGTAATCTAGCTGAATAATCCGAGCTCGTAAACACTACAGTATCAGACCCTAGCGCCTATGATCTATACCTAGGGCTTGAAATCTTGCGGGCTTGTATCGGTACGTATGTTATCATGAAAGCTCAAGATTTGAAGTAGTGATTATTATTCCTACCTCTGCTTGTAAGACCATGTATCAGAGTGCACAATGAGGTTAGACGGAGACACACAAGATGTAGACACACGGTGGCGTCGACTTTTCCGACGGTCGTCGGCCGAACAATTTCGTAAAGGGAAGTTCCCATCGGGTAGACCGCCCTGATAGAAGACGTTTTTCCTGTTACGTTCCTGCACAGTCAACCTTTCTACCTTTTCTAAACGCGCCATGCACAGGAAGATAGATGCTATCAGTTTAGATGCTGTGAGCATCA [...]
+GTCGTGTTTGTTTCCGAAGACAAGCAACGTTACTTCAGCATGACCTTCTGAACGCCCTAGCATGACGGGTCCATTGATAGGCCATAGAATGGAGTTATAATTTGGTATGAGCATACTACTTCTGGGACTTAGTAAGGCCATGCACATAAGATCTAACCATTGGAGGACATCCCGCAGGAGAATTTATGCGTAAAATGTGCACAAATATAACTGCGGTCGCGGCAGGGGCGAGACGCTCCGGAAACTCATCTCTGGAGCAACGCACCGTCCTAACCATACACGCAATATTATCGGGTAGCGGAACCGTAGGAGCACTGAAATACACCAACGTTGGTTGTTTCCTACATCATTCGGGTCGCATCCAATCGGTCCCCCCACGTCGCAATAGCTAGAGAAGAACCGTACATACGGCATGTAGTCTCAATACTTCACGAAGGGAATCATACAATAAATTACCGAAATGTATGGGAGGAAACTACTTTGATCCACTCC [...]
+NODE	11	2000	1468379	1468379	0	0
+ACGTATTATCATATTGCCGCTAACCCCCCGGAACTCGGGAAATCATGAGGATTGGGATCCGGCCCTAATTGCCATTACGCCGGCAGGCTTTGCGAAGGCGCCCAGGCCTCGATCAGAATGCCTCCCGGCCGATGATCACGCACCACCCGTAAACTGGGTCTAAGCCCAAGTCCACGTACCCATTGCAGGTTCTCGGATGAGATAGGACGGTGGACATGTACTGTCCCCCAGAGGTCCAGCGTCCTTGCCCGGCTGGGCTTCAAATCAACCTTAGGCACATGCGCGTTCCGGGGTGTCTAGCACGCTTGCGGTAAGGTTCAACCACTTAATAATGGGACGAGTGTGGACTGGAGTTTCGTTCACAGCTAATTGGAGCGAATACACCATCCCAGATTATGCGGCTTTGGGCTGTGAAATTTGTAGTTTGTAGATTTGCGAGCGTATGTGTTCAACCCGACCCCGTACTTAAATGAGACCCACCAACTTTAGTTT [...]
+TCGATCAGTAGAATGCACCCCAGCGCGGCCTTTGGTGTTCCCCTCAAATGCAGGCCCGATAGAAGCGGGTCGGATGAGCTAGCACCATTACACCATCCGTTTCTCGATTGTGGTGCACCCCTGAATTCCACTGCGAGATGTGACTTAGTTATAACCCTACTAGCTTTTACAACTGGCGTTCTCAGGTGGACCATACAGCTGGCTATGCCCTTTGTGCTCTGCCGCTTAAGTATACATCTCAATTATTGCGGTTCTTTACGGAAATTCGTAGACCCTCTCATAACGCTCTCCAGCCCGGTCCGCGGAGCAAATTACGTCGTTAGACGTTAACGACGGCTATGAACCAGCACAAGAATAGTGGTATCCGGTCCCTGGGCGTTCGGGTACCCGGGTGAGATCGGCCTCCGGCCCGGTTCTCATAAAAGGGGTATGTAATCCCCGTTATATCGGCATGCGTTACTGAAAAGGACGACGGCATAAGTTCATCACAGG [...]
+NODE	12	2000	489155	489155	0	0
+CCAACTTGGGTTCTCGGGAGACGAGTCTTGTGGGACGAGGATAGAGGAATCGATCTGCATCTTCTATACGACCAATGAGTGATGCATGACAAGAGTATTTGTCTCCCGACCGTGGTGTGGAAGACGGGTATGTGTTTTCTAGGTCACGAGTTAGTCTTGTGCCCAACGTGACCAAAGATTAGAGCCCGTGACGTGGGCTGAATAAGCGGGCTGTACTGTCTGCGACGGTCCCGGAAGACCGTCCCGCAGTTGTTTCTAGACACTATTTCAATGTGTATAGAGCCGTCCCAACCTACAACGTTAGGGCGCGCATGACCAAACAGTCTACGCCGCTCCCCTGTTCCGGTCCTAGTGCTAAGATCTAGTCAGCGCGATATCTCGACAGTATTCTAGTTGCCGGCGGTTAACTTCTCTTCATTTCGTACAGATCTCACAGTCTCCAGTATACTGGATTAATACGGCATAGATTCGCGTCAGTAATTTTGTCTATAA [...]
+TAGCGGATTCTGGGCTGGCAAGCTCAAGAGGTTCGCGCCGCACTCGAGGTTGTGCATCTTCGCACCAGTGTGCACAACCATAGTATAGTTGCACTACCCGCGATCTGTTTACCATTTGCGCCGGAATCTTCTTTTGTTCTCTTATGGCTATAAGGTCTCACCAGTTCGATGTGCAGGAGGCAGTATTCCGTCTTAGGCTTACCTACTCTCAACCGTCCCATGAGAGTGCTCTGGCGTACTAGCCACCGGATAACAGACAGATGTCACCAATGGAGTAGCGGTCAAAATCTCTACCACACAAACACTCCGGCTATTGGGAGTGCCAATGTGTGCGTAGCCGTGGAAGCATGGAGGACGTAAGGGTCTCGTGAACCAGCATCCGTGGCTCTCTGGTGTCATTAAACCGGCGTCACTCATGAAAGTGGGTCCTTGGCTCAAAAGTATCCGACCGAGGCAGATGGGGTACAGGATACGCAGACCATCCGTGCTGGT [...]
+NODE	13	2000	1270363	1270363	0	0
+ATAGAGGAGCGAGCCGTTGAGGCCACTCGAGGACATACCGTAGCTCGTAGTGCGTCAGCATCTTAAACACTGCAAACGTGGCGACGCAGCAAAGAATCCTCGTGCAATTTTGACGATGCGGAAAGGCCGTTTCCAATACAATGAGCGACTCTTCGAACCTCCAGTCGGTGATGCCTACTCGTAGTGAGACACTGGCATTCCGCAGGACGGGATGTCTCGTGAATATAGTCGGTAGGCTTCTGAACACCGAGAGCTTGCCCTATTAGTTGCGGAAAAAACTTGCCCAACTATTGAGCTGCTGCCAGGACGCCAAGTACCCGTAGATTTTGAGAGAACGCAAGTGAACCACTCTGAACAGGCACTCTAGGATTCCGCTAAACGGGATACCCGCAGTCCGAGAATCGTAGGTGGATAGACTACAGTCACGGGCAACGGAGGCTTAGGACGCTACTACAGGTGTACCTATAGTCTAAGCTGGCTAACCTAAGACTT [...]
+GTGTCTCCCGAGGATTAGTGTGGCGGAGTGCCCAACGTTAGAGCGAGAAGGCATGCTTCCCAAAACGGGAGACAGAAAGCGGGGTGACCGGAGGTCTTCCTTGGTGCTGCGAGTAAATGTATCATTGCTATCTGCTCTTATTCACTGTCTGCTTTCTTAACCGCACTTCACGTATGGAAGGAACTACCTGTTGTATCGCGATTACGTCCGGCTGAATAGTAGGCCATTTATAACGAGCGTCACGATCTCGAACATAACGGTCGTTTCAGGATGCGTAGAACCAGTGCTTGGCAAGTCGAATGGTTGACTCGAGTACTGACATCTCGAGTAGGAAGTTCCATCCTCCCGTACGTGAACTTCGCCTCGGTATAGGATTGTATCGCTGTCTGCGGTAGAGATAAACCGTATCGAAAGGGCATAGAAACCATCGGTCACAGAGGGGAGACGCAAAACGTTCGCAGGTGTACATACCGTCGCAATACTTCCTGAAGG [...]
+NODE	14	60	20218	20218	0	0
+GTCACACGTCCATTCATCAGTATCCCGACTATCTTGGTCTCAGTATTAAGGATAACGGCG
+GTACTTCACGCGACTGACCCCGGCCAAGCGTAGCCGTGTGGATTCCGAGAGTCTGCCTTA
+NODE	15	1999	592322	592322	0	0
+ATCAGAGAGTATATTTCATGTTGAAGGAATCAGTAAATCCAACTATTAGTATGCTAAAATAGTTAGGTCACCCCCCCCGTATATGGGTACGATCTGGCCAACACGGCCACTCGTAAGACGTCCCGTCCGGTAGTGAGGGTCACGCAGTGCGAAAATTTCACAAGGAGCGGGATGTGTGTGGTACAGTTGCGCTATTTTTTCCTTAGGCCACCTCTACTGTTGGACGCCCATCATTACAATCTGATCGACGGGACTGCGCCGGAACTCTTTGCGTCCTCAATCAGCCAGCCGGTGGAAGAGAAGATCACGGTGTTCGAGCGCGGACGAACGGCCTTTATACTTCGAGTGTAATGTGTACCACTTGAAGCTCTGCCATCGACATAGTCACGGAATTTGTAGACGGCGCGGCTGGGTTGGTGGTTTAGCCTGCACTTTACCCGCCGATCTGGTCGCCCACAGATGATGCCTAAAAAGTACATCTACTCGAGCCAC [...]
+GTTAGAGGCGTTTTAAATTACAGCAGCGCCTGGGTGTTAGAGGGATATTTTGTCCTAGCAGTTCCGGTTATATGCCCGCTTTTCGTAGCATGGATGTATCCCCCCCTTACGATCTATTTCGTAATCCCTTTTATCACGGGCACGGTCCACATCATCCAACCATTAAATTATAGTACTATGTTCAAACTTTCTGGGCGCGCCCCGACGTTGCGTCATCTGCATAACGCGAAAAGCCGCACCGCTCACGGGGTGCATAAGATCGGTCACGGAACGTTCTGTGATTAGTTCTACATGCACCCCTCTGTGAGCCACCCCGCTTTACAATTGTTTGAGGCGCTCATCGGATAGTGACGCTGGTCAAGCGCCGAGTTGTTACTATCGTTTCAGAACGAAAGTCAACTCGTCCGACAAGATTCCTTGTCCGACCGATTATGCATAATGTCCATTTGGAGGTTACGCAAATGATTCCTATTGGAACGTGAGCAACCGTCC [...]
+NODE	16	2000	481550	481550	0	0
+TGGTCCGTGCTCCTCGCGCTCCTTGAACACCTGGATCCCTCAGCTGCAATACTAAAGTGTAAAATCTAAGAGCTTTAGAGCGTGCTCGTTCAGTCCCTGCAGCACATAGCGTGGCCAAGTACTCCGGTTATTGGCATTTCACCTGTACCGGCGTGAAGCGCCCTATGGTGTGCGGGCGAAGCTGTATCGAAGGATCACTATAATATTCGGTCCTTAATTCTTTTCCGTTGGAGTCATCACGTAAAGCTTCTCCTGTGAATTCAGTAGCCAAGCGTTTCACGGGGGTATCGTTCGCCTCCCTGATATGCGAGAATTGATACCCTGCCAAAGAGCACTACTTGCTATTATGGTAGCTTCAGACGTGTAATCGGAATACCACTAGATATTGTACCGTTTCGCACTAAGCCCAGTGAGGTGTCGCTTGAAAGCCAGGTTGGCCCTGCATGGCACTTTGATGCGGCGAATGCCCAACGTAGGCCCAGAGTCCTGACC [...]
+AGCTGGACACTATCGCTGCCAGTGAATATTAGGTGAAGAGGCAGTCTGCCTAAGTCCTGAATCAGCAGTTCTGCCATCTATTTGTGCGGATATAATAGGTTACGATGGCATCAACGATAGCCCAGCCCTGAGACCTCGATGCCCTGTAAGACGGTCCGGTCATAAGGCTGGGTGGTTGAAATCGTTGGAACATTGCAATCTAGGCCTGAAAACAATCTCGTTATTACACCGCCTGGGGCAGTGAGCTAAGGGTCCGAGCTTCTCTACTCTTGCCAGATGCGTCAAGCGCGCTCATTTGTGAGCCCTCCTCACGTCGTCATTACTGTTGTTTTTGTTAATCCTATAATTCATAATAGTCTCGGGGCTGTCAAACACTGGCAATTTGTTCTGATTCTACCCTCCCGTCATTGACGTTATTGTGAGAACAAGGCGCCGGGCAGTTATTTTTGTCCCCATAATAACGGGTATCGCTCCCCATCCAAATCCCGGTGG [...]
+NODE	17	2000	487292	487292	0	0
+CGTGGAGCCCAGAGCTTACGAGTTCAATCTCAGTGCGAAAGCGGTCACTATCCCTCTCCTTGACAAAGATTTCTCCTTTCAGCCTTTTGTCTGTATGATGTGTAAGGTAACTAACCGACTTAAGGACACCGGATAGAGTAATTACCGGACGAAATGTAGGCGTCTCACGACCTTACAGTTTGTCTTAGCCCGGTCCGTAGAACAAGGCTTCAGTCCCCAAAGTTTACCGTCCCCTAGCCATCATCGTTATTGTAGTGCAGCGTGGCTGGATGTCCATTACACCGACAGCGTACTCAGTTACTCGGCCACAAACCCCTAGTACAACCCGCATCTACGACAAGCGAGAATGCGTATCTCACTTTTACTTAGAACCCATTCTGAGTACTGATGACATTGCGCGGCTGGGAATTTTCAAAGCATAAAGAGCCAATGACTTGAAACGGGCTGTGATCCGCGGCAACACAAACAACGTCACAGCCAGCGTTAGACTAC [...]
+CCGTCAATTGCGGGGAATGACCAAATACCGGAATAACGGTCGAATATGACCCTTGGCTACTCTTAGCTGCGAAAAACCGGCGAATCGATAGTGACTTATTTCAGTACGGAGCCAATAGCGTACAGTCACGACACTCGTAAAGACGTAGAATGCCTGGAATGCCACTGTGGGTCGGAATTAGTAGCAGGTCGTGCCTCCCTCACGTATGACAGAATAGTAACCTGCGATAGAAACTAGTTCGATCAGAAAACGCCACTCTTTGTTTCGCTATCCCCCGTAGGATTTCACATACATCTTTCTGAACATTGTGAAACTCATATGGTAATTCTCAACTGGTGCCAGGGGTCGAACTGCGGCTAGCCCATAGGCTAACCTGCACAACCAACGATGGTCTCAGCATATCTCCGTGTTCACAGAGCTCAGTCAGCCCATGTCCAGCCTACGCACGAGACGACTGTTTAGCGCTAATCACAGCTACAGATATACTGCTAA [...]
+ARC	1	-2	312
+ARC	2	-17	298
+ARC	-2	-4	589
+ARC	3	6	285
+ARC	3	16	300
+ARC	-3	4	611
+ARC	4	-11	913
+ARC	-4	9	934
+ARC	-5	-15	360
+ARC	-5	-6	269
+ARC	-7	-8	346
+ARC	-7	14	342
+ARC	9	10	318
+ARC	9	13	616
+ARC	-12	-13	320
+ARC	13	-14	307
diff --git a/tests/test.Trinity.csv b/tests/test.Trinity.csv
new file mode 100644
index 0000000..6188739
--- /dev/null
+++ b/tests/test.Trinity.csv
@@ -0,0 +1,8 @@
+Node name,DATA
+NODE_19|c0_3912+_length_1565_cov_0,3912PLUS
+NODE_19|c0_3912-_length_1565_cov_0,3912MINUS
+NODE_19|c0_3914_length_13_cov_0,3914PLUS
+NODE_19|c0_3915+,3915PLUS
+19|c0_3923+_length_400_cov_0,3923PLUS
+19|c0_3924+,3924PLUS
+19|c0_3940,3940PLUS
\ No newline at end of file
diff --git a/tests/test.Trinity.fasta b/tests/test.Trinity.fasta
new file mode 100755
index 0000000..ea13951
--- /dev/null
+++ b/tests/test.Trinity.fasta
@@ -0,0 +1,2650 @@
+>TR1|c0_g1_i1 len=280 path=[274:0-228 275:229-279] [-1, 274, 275, -2]
+GTGAGCTGTCAAATAAAGAAAGTAGAGAGGAAAACATGAGTTACTAACTCCCAGCCCTCT
+GATTTCAAGATGTATGGGATCAGCAAGTATGGCCTGTCTCCTTACCTCTGCCTCTACAGT
+GGCCCTGCCAGGTCCTGAGTCAGTTCCTCGACCACAAACTCCCTGCTCTCTCAGGCCCCT
+CCCTGCCAGGTGGCTGCCCAGGTCAGCCTCCTAATGCTGTCTCACCTCTGTCTGGTATAC
+AAACACAAGAAGAGATTTCTACATTTCCAGTAAGCATACC
+>TR1|c0_g2_i1 len=245 path=[276:0-228 277:229-244] [-1, 276, 277, -2]
+GTGAGCTGTCAAATAAAGAAAGTAGAGAGGAAAACATGAGTTACTAACTCCCAGCCCTCT
+GATTTCAAGATGTATGGGATCAGCAAGTATGGCCTGTCTCCTTACCTCTGCCTCTACAGT
+GGCCCTGCCAGGTCCTGAGTCAGTTCCTCGACCACAAACTCCCTGCTCTCTCAGGCCCCT
+CCCTGCCAGGTGGCTGCCCAGGTCAGCCTCCTAATGCTGTCTCACCTCTTTCTGGTATAC
+AAACA
+>TR1|c1_g1_i1 len=436 path=[478:0-98 497:99-146 496:147-356 481:357-380 482:381-435] [-1, 478, 497, 496, 481, 482, -2]
+GAAATCCTCAGCACCTTCCAGAGAGTGCAGGAAGTCCAAAGGATGATGGAATTTAGGGAA
+TCCTCACAAATGAGAAATGGCGGAGCGTGTATATCTGAATGGCACTTTCTAATCCTGAGA
+TACTGTGAATCTTTCATTCATGATATTTTGTTCCCCAGTTTTATTTATGTGATGTTCTGA
+CTGGCTCCAGACCCTTGGGCTGTTTGGGTATGAACTGTGAGAATGTGAGAATGCTTGTAG
+TGGAAGGGAACCAAGATGGCTTTTAGAAATAGGAAAACTCCACACAGAGCCTTGTGAGAC
+GGGGAGAGACAACCCTAGAAGAAAGCGTCTGCCTTGCTTGCTAAGAACCACTTTCCCTAG
+AAGAGGCCTGATCATTTCTGTCAGAGCATGATGGTGAATATCCTAATTTTGGCATAGTGA
+GCTGTCAAATAAAGAG
+>TR2|c0_g1_i1 len=5534 path=[6031:0-50 6032:51-74 6053:75-75 6052:76-413 6044:414-495 6047:496-804 6051:805-1342 @6049@!:1343-2109 6054:2110-2112 6055:2113-2113 6056:2114-2137 6057:2138-2149 5943:2150-2156 5944:2157-2158 @6042@!:2159-3903 5981:3904-3919 6045:3920-4266 6041:4267-4648 6036:4649-4997 5976:4998-4998 5977:4999-5035 5978:5036-5036 6040:5037-5402 5973:5403-5426 6035:5427-5493 5964:5494-5498 5965:5499-5503 5966:5504-5508 5967:5509-5513 5968:5514-5518 5969:5519-5523 5970:5524-552 [...]
+CTCCGCGGCGCGGCGGCCAGTGCGGACTGCGGTTCCCGCCCGGCGCGCGGGCGCTGTGAC
+TGCTCCTCCGGGGCGGACTGGTGACTCTGCAGCGCTCTGGAGCCTCTCGTGCGGGGACTC
+CGTGGTGTCGCATTCCCTCAGAGAGGGAGACACGCACCCGGAGCTCCGAGCACAGCTCTC
+AAGGGCTGGCGGCCACGACGGCGTTTGCTCGGGTTCCCGGTGCAGTCCGAGTCTCTGCGG
+CCGCCCGGTGCGCCCGGGAGAGCGCACCTCCCCCGGCACGGCAGAACCGAGGCGACGAGG
+ATCAGGAGGGTCCTGCGCCCGCTACCACTGCCCACCGCGGGCCAGCCCGGCTGCGAGCAG
+CGGAGTTGCAGCGCTTTTTAGAGCTCTGGAGCCCCAGAAGACCTCTGCGAACCAAACACA
+CTGGGTTCTTCTCTGATTTCCACAGTGGAGCACAACTTCAAAGCTGGGAGTTGGCCAAGA
+AGGAAGAGAGAACCCCAGCATACTGACACGTGAACGAAACCCTCTTCTGGACAACCGTTT
+CTCCAAGGAGGATGAAGCCTTCTAGACCCATGTGATCTCCTATGAAGAACTGACCCCACC
+TGCTGGTCACCCCAGCTCCCACCATGGGCCCTGCAGGAAGCGTACTGAGCAGTGGGCAGA
+TGCAGATGCAGATGGTCCTGTGGGGAAGTCTGGCTGCCGTGGCCATGTTCTTCCTCATCA
+CCTTCCTCGTCCTCCTGTGTTCCACTTGCGACAGAGAGAAGAAGCCACGGCAGCATAGCG
+GGGACCATGAGAACCTGATGAATGTGCCTTCCGACAAGGACATGTTCAGCCATTCGGCAA
+CCAGCCTGACAACAGATGCACTGGCTAGCAGCGAACAGAACGGGGTGCTCACCAATGGCG
+ACATTCTTTCAGAAGACAGCACGCTGACCTGCATGCAGCACTATGAGGAAGTCCAGACCT
+CGGCTTCCGATCTCCTGGACTCCCAGGACAGCACAGGAAAGGCCAAGTGCCACCAGAGCC
+GGGAGCTGCCCAGGATCCCGCCTGAGAACGCCGTGGACGAGATTCTCACAGCCAGGGCTG
+CAGACACGGAACTGGGGCCCGGAGTGGAGGGGCCCTACGAGGTGCTCAAGGACAGCTCCT
+CCCAGGAGAACATGGTGGAGGACTGTCTGTATGAAACAGTGAAGGAGATCAAGGAAGTGG
+CAGACAAAGGCCAGGGTGGCAAGTCCAAGTCCACTTCTGCCTTGAAGGAGCTTCAGGGGG
+CTCCCATGGAGGGCAAGGCCGACTTTGCTGAATATGCCTCTGTGGACAGAAACAAAAAGT
+GCCGCCACAGCGCGAACGCAGAGAGCATTCTGGGAACTTGCAGTGACCTGGACGAGGAAA
+GCCCACCTCCTGTCCCGGTTAAGCTTCTGGATGAGAATGCCAACCTTCCCCAGGAGGGAG
+GAGGACAGGCAGAGGAGCAAGCTGCAGAAGGGACCGGTGGACACAGCAAGAGATTTAGTT
+CCTTGTCATACAAGTCTCGGGAAGAAGACCCGACTCTTACAGAAGAGGAGATCTCAGCAA
+TGTATTCCTCAGTGAATAAGCCTGGCCAGTCGGCACACAAACCTGGACCATGTATGAAAG
+GGCCAGAATCTGCCTGCCACTCCATGAAGGGCCTCCCTCAGAGGTCGTCATCTTCCTGCA
+ATGACCTCTATGCCACTGTGAAAGACTTTGAGAAAACTCCCAACAGCATCAGCACACTGC
+CCCCGGCAAGGAGACCCAGTGAGGAGCCAGAGCCTGACTATGAAGCCATACAGACTCTAA
+ACAGAGAGGATGAGAAGGTCCCTCTGGAGACCAATGGCCACCATGTCCCCAAGGAGAGTG
+ACTACGAGAGCATTGGGGACTTGCAGCAATGCAGAGATGTCACCAGGCTCTAGCAACTAA
+AAGAGGCTGTGATCAGCAGCTCTGCTGTGGAAAGGAGGTGGCTGCAGTTTCTCGCTGCTT
+TGGTTGACTGAAATCTTCAAGTGCAGTCTCCCAGTTGTCTCCCAGTTTCCAAAACAGTAA
+GGTACGGACCTGCCTGCCAGGGCAGCCACCCTCCAGTGCTCCCAAGAAACCCCTGGGACC
+CCTCACCTCCACATTCCACAGAGGAAGGCCAGCTGTGGGTGCTGGCGGGGAAGCCCCACC
+CACCAATGCCAAAATCCCACTGCCTGCTGAAGAAGAGCCAGGTTTCCATCCTTGCTCTCT
+TTCCCTCTGCTCCTCATGCTAAAACACTGGCACTTCACCCCTGGAGACCTCCCATGTGTG
+CTTCATCCCAAGGATGGTCTCCCACTGGCCTGCACTGGCCTTCAGTAAATGTTAGCATGG
+AGAGAAACTGGTTGCCGTTAACCCACCCTCTTCCCAGACCTGCCTCTTAGTCCCTGGGAA
+GGAACCTGGATGTGCAGGCTGTGAGGTATGGGGTGGGCCGTCCCTGGAGTCTCTGGGGTT
+CTTGCTCCTCGTTGGACACTGCATCTGCAGTCTTCAGAGGTTCATGAGGTCAGTTGAGAT
+GTTTTTTAATGTTCTATGTTGAAAACCTTCCCAACAGTGTTTGGATTTTCATAACTACTG
+TGGTACTTCTGTAGCTGTTCACACCCAGTGCTCTTCCTTCCAAACAGAGCCTTAATGTTT
+CTGTGAGGATGGCAGCCATGGTGTCTATCCCCAAAGGGCTGCGGACATAAATGTGTTCCC
+GGTGGTCTTTGCTGCCCACATGTGACTTTCCTATAATCTGATGGTAATCTGAGTAAAATG
+TAAACATTTATTTTATTATATAAATTTATAAGATGTTTTATGTTTAATGCCTAATTTCTA
+GAAAGTGCCAGAAAATATATATTAACTATTTGGATTTTATGTACAACGATTTATACTCTC
+ATTTTACAAACGATACCATAAAGCACATAAGCTAGATAATTATAAGCAGTTTTTATTCTT
+TTCTCTAATGAGTAATATAGCATTGAAGACTTGTTAAGGCTCAACTCCTCAGACAGTACT
+GGGAGTTCTAGATCCAAAACACTGAGGCACTGGTGGCAAAATGCAATGGACATAAATGTG
+TCACTGCTGAGACACTCGGTGTTATAAATAGAACAAAATCTGACTTGGGAATCCTGAAAG
+TACCAGACTTTCACTGATGTCTAGTGACCCCTCTAAAGACAGCAGTGGCGGTGCCCCCGT
+TCAGTCTCTGCCGACGCAAATTGCCCGGTTGTTCATCGCTTCACAGGAATCAGTAGCTGA
+AGCAGCTCACATTGAAAGTTCAGTCATCGCTCTAGATCTTCCCAGGCCAGCATTGGAAAC
+TCTGTTCACTTTTCATTTTAAGAGGAGCCTCGCTGAAGTGCAGGACACAGATAAAGAGAC
+AGCCTTTTCTTTCCTACTGCCATGTGGCATCTTATTCTAATGACTTAAGAATCATGCTAT
+TTTCCTTCCCTGTGATAAAGAGTGTGCGTGGGAAGGTGACATGACCAGCTCTGTGGCCTG
+TCTTTCCATCCTTGTACTCACCGACTGGTTGTGGATCATGCCTGTGGAGCTGCAAACTCT
+CTTGGATGTTGTTGGCATTAGCCTAATCCTCCATGAAGATGGTGGGCACATGGATAAGCA
+TCGCCTCTGCTGGCCCCGCCACAGCGGTGGGATACCCCAGGGAACTGGGAGCAGTAATGG
+GCAAGGCTGTTTGCAACCACTGATTTTCGCTGCTGTGTATTAATGAGTTTGGCCCAACCA
+TCTCTCAGGCCACGAGGGTCCCCTCATCACATGCCACTCCCCGTGCCACAGGGCGCTCCT
+GGACATGTGCTTGCCACCATGCAATTCCTTACAGGCATCGTATAGCTCAGGAGTTTGATT
+ATGTTTTATAAAAAGTCTTAGCAGGAAAGCTGGTATGATCTCTAAAGTATAAAACTCTTT
+TTTTCTATGAATGCACGCTTTATTATTCATGTACCGTCCAGAGACATCAAACCCATCAGC
+CCCCTGCCCCAAGAAGGAAGTTGAAAAACATTAACAGTAAAGAGCCTTTGCCCAAGAGTC
+AGAGATCCTATGACCTGCCTTCTCTGCTTTGGTGCCCAGAAGAGAGTGTGAGACTCTTCA
+AGGCTCCCAGAGCTTCGGGGAATCCAGGGTCATTTTGAGAGGACTCTGGGGTTCTGCCCG
+GTAGTCCCTCTTGATGCACAGTGGCAGCAGCACAGTTTCCAATTCGTGAGGGCCTTAGAC
+AACCGCTTGAGCTTCATCTCACGCCCCTTCTTGAAGAAATAGTACCTGATGTCTCCTTTT
+GTCAGTTTGAGTTTGTCAGCCATGGCCGCCAGAGTCCCCTCCTTAGTCTTTCTCAAAGTG
+CTTTTTTACTTCCTGGAACTGCTCATAGGTGAACCCAGAGTATCCATCCCAGTCGGACAG
+ACCCCGAGTTGTCTCCATCTCAGCTACTTCTATCTCTTCTGCAGCTCACTTGAGTTCTGT
+TCTTCAAGATTCCATAAAACTCTTTCTTCAGAGATAAGTTCATTATAGATAATCATGTCA
+TCTTGAATTCCTGTTGTCCAAATGTCCCAGAGTTTCCAAACGTGGTATGTAGCATGGTCA
+TGAAGTGTGCACTGACATCCCTCTCCTGGTCCGAGAAGCTCGCAGTGGTAAGAGAACATG
+TGACGGGCGATCTCACAGGTTCTGTACAAGGAACCTGGAGACCCTCTCCCCAACATAAAT
+CCAAAGGAATACGCACTAGCTTGTGAGGATACAGATTTTAGCCAAGTGAAAGAGCAAAAG
+CTCACAGCAAAACAAAAGCCTGGACAATCAAGCCAAAGATGCCAGCACAGCAGGAAATGT
+GTGGTAACCATGTACCTGACGCTCGGCTGAGCAAAGCGAGCCCCTCACCAGTCAGTTTGA
+GTTACTTACTTGGCTAAAATCCATGTTCCTGTCTTTGAGCTGGACGGAGCCTGTAGTTTG
+GTTTAAAGTCTAAATGTTACAGAGTTTAAATATGTGGGAAACCATCATCAAAAGGAGGCT
+GGACTGTACACTAAACACCTCTGAGTCTACAGCAGGCTGGACTGTACACTAAACACCACC
+ACAGAGTATACAGCGGTGACTATAGACTCACCACAGACTATCTTATGTGAAACATTTCCA
+ATATTCTAAAAGAAAGTCATTTTTATAAATGTGTTGGCTGCATATTTTTGACTTGTCCTT
+ATCTAAATCACATCACTAAGTCTGCAAAACTTCTAAATAATACCAATACTCTTTGTGGGA
+AAAGGGTTTTTTGCGTCTTTTATTATTTTTACATTGTACCTCTAAATATTTATGTTTTCT
+TGTTCTTCAGGTTCTTTTATTTAACTAAAAGATGTTTGTTCGGATTTTTACTCTCAGATG
+GAAATTGGAAGCATAATTGTGCTTAAAAGGCAGCACTAAAGATCATTCCATTTACTATTC
+AGATAGCCCAGTACAGGCTCCCCCTTGGATTGGCACTGCTATTCTGTAGGACTGCTTTGG
+TTTGGGTTGGGTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGG
+TTTGGTTTGGTTTG
+>TR2|c0_g1_i2 len=5475 path=[5983:0-50 5984:51-65 5985:66-74 6053:75-75 6052:76-413 6024:414-436 6047:437-745 6051:746-1283 @6049@!:1284-2050 6054:2051-2053 6055:2054-2054 6056:2055-2078 6057:2079-2090 5943:2091-2097 5944:2098-2099 @6042@!:2100-3844 5981:3845-3860 6045:3861-4207 6041:4208-4589 6036:4590-4938 5976:4939-4939 5977:4940-4976 5978:4977-4977 6040:4978-5343 5973:5344-5367 6035:5368-5434 5964:5435-5439 5965:5440-5444 5966:5445-5449 5967:5450-5454 5968:5455-5459 5969:5460-5464 59 [...]
+CTCCGCGGCGCGGCGGCCAGTGCGGACTGCGGTTCCCGCCCGGCGCGCGGGTGCTGTGAC
+TGCTCCTCCGGGGCGGACTGGTGACTCTGCAGCGCTCTGGAGCCTCTCGTGCGGGGACTC
+CGTGGTGTCGCATTCCCTCAGAGAGGGAGACACGCACCCGGAGCTCCGAGCACAGCTCTC
+AAGGGCTGGCGGCCACGACGGCGTTTGCTCGGGTTCCCGGTGCAGTCCGAGTCTCTGCGG
+CCGCCCGGTGCGCCCGGGAGAGCGCACCTCCCCCGGCACGGCAGAACCGAGGCGACGAGG
+ATCAGGAGGGTCCTGCGCCCGCTACCACTGCCCACCGCGGGCCAGCCCGGCTGCGAGCAG
+CGGAGTTGCAGCGCTTTTTAGAGCTCTGGAGCCCCAGAAGACCTCTGCGAACCAGCCAAG
+AAGGAAGAGAGAACCCCAGCATACTGACACGTGAACGAAACCCTCTTCTGGACAACCGTT
+TCTCCAAGGAGGATGAAGCCTTCTAGACCCATGTGATCTCCTATGAAGAACTGACCCCAC
+CTGCTGGTCACCCCAGCTCCCACCATGGGCCCTGCAGGAAGCGTACTGAGCAGTGGGCAG
+ATGCAGATGCAGATGGTCCTGTGGGGAAGTCTGGCTGCCGTGGCCATGTTCTTCCTCATC
+ACCTTCCTCGTCCTCCTGTGTTCCACTTGCGACAGAGAGAAGAAGCCACGGCAGCATAGC
+GGGGACCATGAGAACCTGATGAATGTGCCTTCCGACAAGGACATGTTCAGCCATTCGGCA
+ACCAGCCTGACAACAGATGCACTGGCTAGCAGCGAACAGAACGGGGTGCTCACCAATGGC
+GACATTCTTTCAGAAGACAGCACGCTGACCTGCATGCAGCACTATGAGGAAGTCCAGACC
+TCGGCTTCCGATCTCCTGGACTCCCAGGACAGCACAGGAAAGGCCAAGTGCCACCAGAGC
+CGGGAGCTGCCCAGGATCCCGCCTGAGAACGCCGTGGACGAGATTCTCACAGCCAGGGCT
+GCAGACACGGAACTGGGGCCCGGAGTGGAGGGGCCCTACGAGGTGCTCAAGGACAGCTCC
+TCCCAGGAGAACATGGTGGAGGACTGTCTGTATGAAACAGTGAAGGAGATCAAGGAAGTG
+GCAGACAAAGGCCAGGGTGGCAAGTCCAAGTCCACTTCTGCCTTGAAGGAGCTTCAGGGG
+GCTCCCATGGAGGGCAAGGCCGACTTTGCTGAATATGCCTCTGTGGACAGAAACAAAAAG
+TGCCGCCACAGCGCGAACGCAGAGAGCATTCTGGGAACTTGCAGTGACCTGGACGAGGAA
+AGCCCACCTCCTGTCCCGGTTAAGCTTCTGGATGAGAATGCCAACCTTCCCCAGGAGGGA
+GGAGGACAGGCAGAGGAGCAAGCTGCAGAAGGGACCGGTGGACACAGCAAGAGATTTAGT
+TCCTTGTCATACAAGTCTCGGGAAGAAGACCCGACTCTTACAGAAGAGGAGATCTCAGCA
+ATGTATTCCTCAGTGAATAAGCCTGGCCAGTCGGCACACAAACCTGGACCATGTATGAAA
+GGGCCAGAATCTGCCTGCCACTCCATGAAGGGCCTCCCTCAGAGGTCGTCATCTTCCTGC
+AATGACCTCTATGCCACTGTGAAAGACTTTGAGAAAACTCCCAACAGCATCAGCACACTG
+CCCCCGGCAAGGAGACCCAGTGAGGAGCCAGAGCCTGACTATGAAGCCATACAGACTCTA
+AACAGAGAGGATGAGAAGGTCCCTCTGGAGACCAATGGCCACCATGTCCCCAAGGAGAGT
+GACTACGAGAGCATTGGGGACTTGCAGCAATGCAGAGATGTCACCAGGCTCTAGCAACTA
+AAAGAGGCTGTGATCAGCAGCTCTGCTGTGGAAAGGAGGTGGCTGCAGTTTCTCGCTGCT
+TTGGTTGACTGAAATCTTCAAGTGCAGTCTCCCAGTTGTCTCCCAGTTTCCAAAACAGTA
+AGGTACGGACCTGCCTGCCAGGGCAGCCACCCTCCAGTGCTCCCAAGAAACCCCTGGGAC
+CCCTCACCTCCACATTCCACAGAGGAAGGCCAGCTGTGGGTGCTGGCGGGGAAGCCCCAC
+CCACCAATGCCAAAATCCCACTGCCTGCTGAAGAAGAGCCAGGTTTCCATCCTTGCTCTC
+TTTCCCTCTGCTCCTCATGCTAAAACACTGGCACTTCACCCCTGGAGACCTCCCATGTGT
+GCTTCATCCCAAGGATGGTCTCCCACTGGCCTGCACTGGCCTTCAGTAAATGTTAGCATG
+GAGAGAAACTGGTTGCCGTTAACCCACCCTCTTCCCAGACCTGCCTCTTAGTCCCTGGGA
+AGGAACCTGGATGTGCAGGCTGTGAGGTATGGGGTGGGCCGTCCCTGGAGTCTCTGGGGT
+TCTTGCTCCTCGTTGGACACTGCATCTGCAGTCTTCAGAGGTTCATGAGGTCAGTTGAGA
+TGTTTTTTAATGTTCTATGTTGAAAACCTTCCCAACAGTGTTTGGATTTTCATAACTACT
+GTGGTACTTCTGTAGCTGTTCACACCCAGTGCTCTTCCTTCCAAACAGAGCCTTAATGTT
+TCTGTGAGGATGGCAGCCATGGTGTCTATCCCCAAAGGGCTGCGGACATAAATGTGTTCC
+CGGTGGTCTTTGCTGCCCACATGTGACTTTCCTATAATCTGATGGTAATCTGAGTAAAAT
+GTAAACATTTATTTTATTATATAAATTTATAAGATGTTTTATGTTTAATGCCTAATTTCT
+AGAAAGTGCCAGAAAATATATATTAACTATTTGGATTTTATGTACAACGATTTATACTCT
+CATTTTACAAACGATACCATAAAGCACATAAGCTAGATAATTATAAGCAGTTTTTATTCT
+TTTCTCTAATGAGTAATATAGCATTGAAGACTTGTTAAGGCTCAACTCCTCAGACAGTAC
+TGGGAGTTCTAGATCCAAAACACTGAGGCACTGGTGGCAAAATGCAATGGACATAAATGT
+GTCACTGCTGAGACACTCGGTGTTATAAATAGAACAAAATCTGACTTGGGAATCCTGAAA
+GTACCAGACTTTCACTGATGTCTAGTGACCCCTCTAAAGACAGCAGTGGCGGTGCCCCCG
+TTCAGTCTCTGCCGACGCAAATTGCCCGGTTGTTCATCGCTTCACAGGAATCAGTAGCTG
+AAGCAGCTCACATTGAAAGTTCAGTCATCGCTCTAGATCTTCCCAGGCCAGCATTGGAAA
+CTCTGTTCACTTTTCATTTTAAGAGGAGCCTCGCTGAAGTGCAGGACACAGATAAAGAGA
+CAGCCTTTTCTTTCCTACTGCCATGTGGCATCTTATTCTAATGACTTAAGAATCATGCTA
+TTTTCCTTCCCTGTGATAAAGAGTGTGCGTGGGAAGGTGACATGACCAGCTCTGTGGCCT
+GTCTTTCCATCCTTGTACTCACCGACTGGTTGTGGATCATGCCTGTGGAGCTGCAAACTC
+TCTTGGATGTTGTTGGCATTAGCCTAATCCTCCATGAAGATGGTGGGCACATGGATAAGC
+ATCGCCTCTGCTGGCCCCGCCACAGCGGTGGGATACCCCAGGGAACTGGGAGCAGTAATG
+GGCAAGGCTGTTTGCAACCACTGATTTTCGCTGCTGTGTATTAATGAGTTTGGCCCAACC
+ATCTCTCAGGCCACGAGGGTCCCCTCATCACATGCCACTCCCCGTGCCACAGGGCGCTCC
+TGGACATGTGCTTGCCACCATGCAATTCCTTACAGGCATCGTATAGCTCAGGAGTTTGAT
+TATGTTTTATAAAAAGTCTTAGCAGGAAAGCTGGTATGATCTCTAAAGTATAAAACTCTT
+TTTTTCTATGAATGCACGCTTTATTATTCATGTACCGTCCAGAGACATCAAACCCATCAG
+CCCCCTGCCCCAAGAAGGAAGTTGAAAAACATTAACAGTAAAGAGCCTTTGCCCAAGAGT
+CAGAGATCCTATGACCTGCCTTCTCTGCTTTGGTGCCCAGAAGAGAGTGTGAGACTCTTC
+AAGGCTCCCAGAGCTTCGGGGAATCCAGGGTCATTTTGAGAGGACTCTGGGGTTCTGCCC
+GGTAGTCCCTCTTGATGCACAGTGGCAGCAGCACAGTTTCCAATTCGTGAGGGCCTTAGA
+CAACCGCTTGAGCTTCATCTCACGCCCCTTCTTGAAGAAATAGTACCTGATGTCTCCTTT
+TGTCAGTTTGAGTTTGTCAGCCATGGCCGCCAGAGTCCCCTCCTTAGTCTTTCTCAAAGT
+GCTTTTTTACTTCCTGGAACTGCTCATAGGTGAACCCAGAGTATCCATCCCAGTCGGACA
+GACCCCGAGTTGTCTCCATCTCAGCTACTTCTATCTCTTCTGCAGCTCACTTGAGTTCTG
+TTCTTCAAGATTCCATAAAACTCTTTCTTCAGAGATAAGTTCATTATAGATAATCATGTC
+ATCTTGAATTCCTGTTGTCCAAATGTCCCAGAGTTTCCAAACGTGGTATGTAGCATGGTC
+ATGAAGTGTGCACTGACATCCCTCTCCTGGTCCGAGAAGCTCGCAGTGGTAAGAGAACAT
+GTGACGGGCGATCTCACAGGTTCTGTACAAGGAACCTGGAGACCCTCTCCCCAACATAAA
+TCCAAAGGAATACGCACTAGCTTGTGAGGATACAGATTTTAGCCAAGTGAAAGAGCAAAA
+GCTCACAGCAAAACAAAAGCCTGGACAATCAAGCCAAAGATGCCAGCACAGCAGGAAATG
+TGTGGTAACCATGTACCTGACGCTCGGCTGAGCAAAGCGAGCCCCTCACCAGTCAGTTTG
+AGTTACTTACTTGGCTAAAATCCATGTTCCTGTCTTTGAGCTGGACGGAGCCTGTAGTTT
+GGTTTAAAGTCTAAATGTTACAGAGTTTAAATATGTGGGAAACCATCATCAAAAGGAGGC
+TGGACTGTACACTAAACACCTCTGAGTCTACAGCAGGCTGGACTGTACACTAAACACCAC
+CACAGAGTATACAGCGGTGACTATAGACTCACCACAGACTATCTTATGTGAAACATTTCC
+AATATTCTAAAAGAAAGTCATTTTTATAAATGTGTTGGCTGCATATTTTTGACTTGTCCT
+TATCTAAATCACATCACTAAGTCTGCAAAACTTCTAAATAATACCAATACTCTTTGTGGG
+AAAAGGGTTTTTTGCGTCTTTTATTATTTTTACATTGTACCTCTAAATATTTATGTTTTC
+TTGTTCTTCAGGTTCTTTTATTTAACTAAAAGATGTTTGTTCGGATTTTTACTCTCAGAT
+GGAAATTGGAAGCATAATTGTGCTTAAAAGGCAGCACTAAAGATCATTCCATTTACTATT
+CAGATAGCCCAGTACAGGCTCCCCCTTGGATTGGCACTGCTATTCTGTAGGACTGCTTTG
+GTTTGGGTTGGGTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTGGTTTG
+GTTTGGTTTGGTTTG
+>TR2|c1_g1_i1 len=1413 path=[1400:0-26 1401:27-30 1402:31-34 1403:35-38 1404:39-1412] [-1, 1400, 1401, 1402, 1403, 1404, -2]
+TGGATGGATGGATGGATGGATGGATGGATGGATGGATGGGTGCCTAGAGAGTTGAGTCTG
+GAACTCCAATCATTCTATGTATTTTTAGTACATTTTTTAAAGTATCAAATACACAATTGA
+CTCTGAAGGAAGACAAAAATAGCAAAATTTGAACTAAGTGTTGTGAGTAGCTCCTGCCTG
+TCCCCACTTCCCACCTGCCCGTAAGGTCATGTTTCTCAACCTTCCCAATGCTGTGACCCC
+CCCCCCCCAAACACCACCATGTTTTATTGCCATTTCATAACTGTAACTTTGCTACTGTTA
+TGAATCATAATGTAAATGTCTGGTCTGCAGGATAGAGAACCCAAAAGGGGTCTTCACCCA
+CAGGTTGAGTGCCAGTCTTAACATGTAAACAGTAAATGTAAAGGATTCACCCACAGGTTG
+AGTGCTAGTCTTAACATGTAAACAATAAATGTAAAGGAAGACTATGAACTCAAAGGTTAA
+ACTTTTTATTTAGATATTTTCTTTGTAACTCAAGAGTAAGCCAAGTTTGAGGAAAATTTA
+GTGAGGTCATTAAAGTTGTAAATCTGTAAGCCAGAAGAAGTAGCCCTCCCAGTATATTTT
+TTCTAAAGACTTTAAACTGTTTTCTCTAGGAAGATCAACTCCTGGAATAAAAGAACAAAG
+CTCCCATAGCCTTTCCAGCAGAGCATATATCTGTCTGCCACTACCCAGGTGTCTGTTCTT
+GTCATAGTGTTTCAATAATTTATACTGGGGGGAGGGGGAAGTGCATTTTAAATTTTCTTG
+GAAAAGTGAATTAATGTGTTAAATTGTCCAGTTTTGTCTAAAGAGAACGATTCGTTTTGG
+AGACAAGAGCACAGGGCTGTGGTCCCTGTCCCACCATCAAGTTTACTGTGTGACCTCAAG
+CAAATGATTGAACTTCTCTGTGCCTCAGTTTCTCCATATTACAAGATGGGGATAATGATT
+ACCAACCATTGCCTACCTCATAGGGATATTTTGGGAACAAGTCAGATAATGTAAGACAAA
+GGTTTTGATCTCCTTAAAAGGTGCTGTATAAACTGCGGTTGCATTGCTAATGATCCAGCA
+TTGTGTTTAGGATTAGATGATAGCAATACTTTTTGTCACGTTTTAGTCGAGGCATTATTT
+CTACTCTTCTGTGGCCAGATCACAAATTTTCATTCAATAATGGTACTTAAGGAACTGACA
+CGGGTGTTTGTTTTCTGTCTCTAATGCTAATATGTCAATTCTGAACAGTCATAAAAGGGT
+GGAGTTGAACTTGTGATGGCTTCTAGTTCACATGGAACAAATCTTATTCAAGCTGTATAT
+TAAAAGTATAATTACTTGTAAATAGCAGGTACATTGTAATTAAAGACACTTATTAACTTG
+TCTTTGTTCTTTTTAAATTGTAATAAAGGCCAG
+>TR2|c2_g1_i1 len=1096 path=[1035:0-1049 1036:1050-1051 1037:1052-1053 1038:1054-1055 1039:1056-1057 1040:1058-1059 1041:1060-1061 1042:1062-1063 1043:1064-1065 1044:1066-1067 1045:1068-1069 1046:1070-1071 1047:1072-1073 1048:1074-1075 1049:1076-1077 1050:1078-1079 1051:1080-1081 1052:1082-1083 1053:1084-1085 1054:1086-1087 1055:1088-1089 1056:1090-1091 1057:1092-1093 1058:1094-1095] [-1, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051 [...]
+GTTTGGTTTGGTTTGGTTTGGTTTAAGATCTAGGAACTGGGCACTGCAGCCCATGCCTGT
+TATCCTATAATGAGGGAGAGTGGGAAAGAAGGACGGTTTTACATTCAAGGCTAACTTGGG
+CTACAAGGCCAGAGCCTATTCTAAACAAAATGTTCTGGTTATCTCAAATCACCTTATATG
+TGTTGTAAAGGTTGGTGACAGTCCCTCCTCAGACTTCTATGTTAACCTGGCACCTGTTCA
+ATGTTGCTGTTGTATTTACATGCCTTGTGATTTGTGGGGGAGTTTGAAATACAAGCAGAT
+AAATACACTGTTACAAGTAGAGGCTGTAGTTCTCATTCCAACAAGTTCCCTCATAAGGAT
+GGTTGGTTGTAGCATGTCCCTAAGGTTCCCAGCCAGTTTGAAGGTACTCCTCTTATTCAA
+GTAGGGTACAAAATAGTCCAAGACACAAAGCAGTTACTAATTATCTCTGCTGATAATTGT
+AACTATCTGATCATCTAGTTCATGAAAGAGTAAAGAGGTTTTGTTCGATGTGAAAATGCT
+TGAACCTTGGCTTTCTATGTTCAAAAATATTCGCATTAGCCTCGGAATCTTAGGGTTCTT
+CCCTGACTCTGATGCCCTTCAAGAGGCAGAAGGACTAGGGTGTGAAGTCAGTGTTTCCTT
+CCCCTCACTTGCCTGCTCCTGCACAGATGACCTACTGCCCCTTCATCCATTTGCCGTTGA
+CCTCGTCCCCATCATGAGTGTCTACACAGCTGTCACCTCTGTGCCATATCTACAGCATGT
+CCAGCTTCTCTTCAGTACCGCTCACCAGCCTAGGTGGGACCACTGACTGTGAGTCTGCAG
+TGGCCACCGCCCAGTCTCTGTGTCTCAAGCTCCAAGAGACGGTCACACACTAACCTGCAA
+GCCAAGGCTGGTGACTTTGACCATCCCTAACGCATGAGTTTTCCATGGAAACCTGGTCGG
+TGAACCTGACACGAAATTCCCAATTCCCCTTTACTCTGTACTGTGTGGCTGGTGCTCTTG
+TTTTCGTTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCT
+CTCTCTCTCTCTCTCT
+>TR3|c0_g1_i1 len=304 path=[282:0-303] [-1, 282, -2]
+GGTTTTTGTTGTTGTGTTTGGTTTTGTTTTTAATCAAAGGGCAAGCAAGCAAAGTTTATT
+TAAATTTTTATTTTATGTGTATGGGTATTTTGCTGCATATATGGCTGTCTACTATTTGCA
+TACCTAGTGTCTACAGAGACCAGAAGAAGACATCAAGTCCCCTGAAACTGGAGTTACAGA
+TGGTTATGAGTCATTATGTGGGTGCTGGGAATTGAACCCAGGTGATCTGGAGGAGGAGTC
+ATTTTTTTTGTTTTGTTTTTCATATATGTCATACAAAGTCTATTGAGAAGTAAATAAATC
+TTCG
+>TR4|c0_g1_i1 len=281 path=[275:0-146 276:147-280] [-1, 275, 276, -2]
+GCCAGTAGAAATGTGGACATGATAAGCCATCGTGTGGCCAAACTAGAGGAGACAAGGAAC
+GCTTTTCATCCTCTGTTTTGGAGCCAGGCCATGTCAGTAGCTTTCAGTGGAAAGTCTGAG
+GGGACATTTGACTGTCCATGGCTGTAGAGCAGGCACACTGTCCAGGCCGCCTAACTGTTT
+GACCAGCACTAATGAAATGTCAGTGTCCTGCACTCACTGTCTGCATGTTGTTCAAATGAT
+TTTCTGCATGGTGCTTTGACTTTGGCTGTCCCATGACCCAG
+>TR4|c2_g1_i1 len=518 path=[561:0-25 562:26-40 572:41-109 571:110-255 565:256-279 566:280-517] [-1, 561, 562, 572, 571, 565, 566, -2]
+CCAGTATGAGTGCTGGGTGTGTGTGTGTTGTGTGTTACCTGTGCATTTGTGTATTATGTG
+TGTGCAGGAGAGGAGGTGAGGGCATGCATGTGCATGGGTGTGTGCATGTTGCATGTCTGT
+GTGGGTGTGGGTGTGGTGGGGTACTATGGCCTGGAATGGTGATTCAGCCAGCTCAGTGCA
+CTTCCCTGTGGTGACTTTTTAGAAGTGTGCAAGTGAGTAGGAGAAGGAAGTGCAAGATGG
+CAGCACAGTGTGTTTGATTAACAGTAACACTTTAACTTGTATGATCACTTTTTCTCAGGT
+GCTCTGAGTCAGGTGTGGGGCTGACATCATCACTTTCTAGCCAGGTCTCCCTCACAGTAT
+CCTTAGAATTTCAGAACTTTGAGGTGTCACAAAGTATGAGCTAAGAGCTAGACAGATTTT
+TTTCCTTTTCCAGCGTAATGATGGTTGTCTTAACCAAAACTGGGGGGGGGGGGGATTTTG
+TTGTACCCCCTGGTGGTCTTCATTTGAGTGATTTTGAT
+>TR4|c3_g1_i1 len=360 path=[486:0-57 501:58-225 491:226-249 500:250-323 494:324-359] [-1, 486, 501, 491, 500, 494, -2]
+AAGTGAGCCGGCATTTCCATCAGGTACCTGTGGCTGGTGGCTCCCTCCACGGGGCTGGCT
+ATGTAGCTCCCATATGTCCCTTAGAGAGTCTGTCATCCTCTTTACTTTGTCACTAACCCC
+TTGTCTTAACCAAGCATCATGTGGGCAAAGATGCAGTTTTCCTTTATTAGATGGCCTGGG
+TCTAGATACGCTGGTGGTGGACTTGCCTCACAGGGTTCAGAGTGCTCAGGGAGCTTCCTA
+ACTCTGCTCCTTGTGAAGTGGCCTGACCCCTTCCCTACCATGATCTCCTGAGTTAAGACA
+CTACTTGGAAAGAAAGATTTCTTCCTGCTGATGAGGCTGGAGGAAGGCATTTTGTATTCT
+>TR4|c3_g1_i2 len=395 path=[486:0-57 501:58-225 491:226-249 500:250-323 496:324-334 497:335-358 498:359-394] [-1, 486, 501, 491, 500, 496, 497, 498, -2]
+AAGTGAGCCGGCATTTCCATCAGGTACCTGTGGCTGGTGGCTCCCTCCACGGGGCTGGCT
+ATGTAGCTCCCATATGTCCCTTAGAGAGTCTGTCATCCTCTTTACTTTGTCACTAACCCC
+TTGTCTTAACCAAGCATCATGTGGGCAAAGATGCAGTTTTCCTTTATTAGATGGCCTGGG
+TCTAGATACGCTGGTGGTGGACTTGCCTCACAGGGTTCAGAGTGCTCAGGGAGCTTCCTA
+ACTCTGCTCCTTGTGAAGTGGCCTGACCCCTTCCCTACCATGATCTCCTGAGTTAAGACA
+CTACTTGGAAAGAAAGATTTCTTCTTGCTGATGAGGCTTGAGGAAGTCTGTTTGTAGCCA
+GTAGAAATGTGGACGTGATAAGCCATCGTGTGGCC
+>TR4|c4_g1_i1 len=8757 path=[10067:0-123 10068:124-147 10238:148-333 @10231@!:334-957 10218:958-1805 10145:1806-1829 10237:1830-1874 @10224@!:1875-2722 10230:2723-3111 10216:3112-3436 10223:3437-3734 10131:3735-3758 10215:3759-4380 10245:4381-4699 @10235@!:4700-5459 10241:5460-6645 10251:6646-6646 10135:6647-6661 10240:6662-6662 @10234@!:6663-7161 10253:7162-7164 10089:7165-7182 10249:7183-7260 10248:7261-7623 10226:7624-7968 10255:7969-7969 10075:7970-7982 10076:7983-7983 10077:7984-875 [...]
+GGCGCGCTGACGTCTCCTTCGGACACGTCGGCGGCGGCACCTGGAGCCGGATGTGCCAAG
+ATGGCTGCGGCTGCTGCTGGGAACGCGCTAGTTCCCCCTACTGCCGCCGCCGTCGCCGGC
+TGGGTTTCAGTTCGCGGCGCCTGAGAAGCCAACCACAGCTCACAGGCACAAATTAAAGAA
+AAGCTCTACTCTGCCCCCTTGATAAGCAGCATCTCCTTGTGGAAAAGACTCCAACATGCA
+GCCACCACCTCAGGCAGTCCCGTCTGGGGTGGCTGGACCACCCCCAGCTGGGAATCCTCG
+GAGCATGTTCTGGGCCAACAGCCCTTACAGGAAGCCAGCCAATAATGCACCAGTGGCTCC
+CATAACACGCCCATTGCAGCCAGTAACGGATCCGTTTGCTTTTAATAGACAGACTCTTCA
+AAACACACCAGTAGGAAGTTCATCCAAAAGCAGCCTGCCCAATTTGCCTGGCCCAGCCCT
+CTCTGTTTTTTCTCAGTGGCCTGGTTTGCCTGTGACTCCCACAAATGCTGGGGATAGCTC
+CACAGGATTGCATGAGCCTCTGTCAGGAACTCTGTCACAGCCTAGAGCAGATGCCAGTCT
+ATTTCCTCCTGCATCTACCCCTTCTTCACTCCCTGGGCTGGAGGTGAGCAGGAATGCTGA
+GGCTGATCCCAGCTCAGGACATGAAGTCCAGATGCTGCCACATTCAGCTCACTACATTCC
+AGGAGTGGGTCCTGAGCAGCCTCTCGGGGGCCAAATGAATGACAGTGGGTCCGGGCCTGA
+CCAACCCATGAATAGGCATGCCCCCCATGATGGTGCCGTGACCCACGCAGCATCTCCTTT
+CCTCCCTCAGCCACAGATGCCAGGTCAGTGGGGGCCTGCACAAGGAGGCCCTCAGCCCTC
+CTATCAGCATCACTCACCCTACCTGGAGGGACCTGTTCAGAACATGGGGCTCCAGGCTGC
+CAGCTTGCCCCATTTTCCCCCTCCATCTAGTCTACACCAGGGACCTGGCCATGAGTCTCA
+TGCCCCACAAACATTTACTCCAGCATCCTTGGCCAGTGGTGAAGGGAATGAGATAGTTCA
+CCAGCAAAGTAAAAATCACCCATTGAGTAGCTTCCCCCCTAAACACACTTTTGAGCAGAA
+TTCCAGAATTGGGAATATGTGGGCAAGCCCAGAGTTGAAGCAGAATCCGGGAGTGAATAA
+AGAGCATCTGCTAGACCCTGCCCATGTCAATCCCTTCACTCAGGGAAATAGTCCTGAAAA
+CCAGGCGCATCATCCCCCAGTGGCAGCAACTAACCATGCCCTGCAAGAAGCAGCCTCTGG
+AGCTCTCTCAATGTTTTTTCAAGGGGAAGAGACAGAGAATGAGGAAAATCTCTCATCTGA
+AAAAGCAGGCCTCGATAAGAGATTGAACTTGGATAGCTTTTCTTCTACCTCCAGACTGGG
+CCATCCACCACCACCTGGAGCTAGTGGTGTCTACCAGGCCTTTCCTAGAGGCCCTAGCAG
+TGAGGCTGCGCAGGAAGGAGATGCGCAACCTTATTTTTCGCAGTCTGTGGGCGTCCGTCT
+TGACAAACAGAGCACTGTGCCCCCTGCTAATGATGCATGGGGTGATGTTCCGGGGACCGG
+GACCCGCTGTGCCAGTGGGCCACAGTGTGAGAATGTTGAGAACTTAGAATTTGTTCAGAA
+TCAAGAAGTTTTGCCCCGTGAGACCCTGAGTGTGGATCCCTTCCCCCTGAGTGATCAGAT
+CCGATATGGGCCCCTTCCTGGGCCAGCTGCCTCCAGGCCTGCTACTGTGGGCCTCACCAG
+AGGTGGGGGGCTAAATCTTGAGGCCCCAGACACACCACTGCACCCTACACGACCTGACAG
+TGTGTCATCCAGCTACAGCAGCCATAGCCACAGAAGTCCTCCTGGGTCAGCCAGACCCCA
+AGAATTGGTGGGCACATTCATTCAGCAAGAAGTTGGGAAACTTGAAGATGATACTTCAGG
+GAGTTTTTTTAAGCAAATTGATTCTTCTCCTGTTGGAGGTGAAACAGATGAGGTGACTGG
+GAGCCAAAATTGCTGCAGCAGTCTGTCCCAGCCTTCAACCCCAAGCCCTCCAAAACCTAC
+AGGAGTATTCCAAACAAGTGCAAACAGTTCTTTTGAGCCAGTAAAATCCCACTTGGTTGG
+AGTGAAACCAGTTGAAGCAGATCGTGCCAACATGGTGGTTGAAGTGAGAGGGACCCAATA
+CTGTCCGAAGAAGCGCAGGGCAGCTGTTGCACCACCTGATGCTACCTCAGGAAACCTGGA
+ACAGCCACCAGACAACATGGAGACCCCGTGTGCACCTCAGGCCTGCCCTTTGCCTCTTAG
+CACCACTGGAGAGGCTGGGCAACTGGTTTCAAACACGGCAGGGACACCCCTGGATACTGT
+GCGCCCAGTGCCTGATAAGAGGCCCTCAGCCAGGGCCCAGGGACCTGTGAAGTGTGAGAG
+CCCAGCAACAACTCTGTGGGCACAAAATGAGCTGCCAGATTTTGGTGGCAATGTCCTTCT
+AGCCCCTGCTGCCCCTGCACTTTATGTTCCTGTAAAACCAAAACCTTCAGAGGTTGTTCA
+TCATCCAGAAAAGGGAATGTCTGGACAGAAGGCCTGGAAACAAGGGTCTGTGCCACCTTT
+GCAGAACCAAGACCCTCCTGGTGCTTCTGAGAACCTTGAGAACCCTCCCAAGGTAGGAGA
+AGAGGAGGCCCTTCCAGTGCAGGCAAGTTCTGGTTATGCGAGTTTGCTTTCTTCGCCACC
+CACTGAATCTTTGCACAATCAACCTGTCCTGATTGCTCAGCCTGATCAAAGCTATAATTT
+GGCTCAGCCTATTAATTTTTCTGTGTCCTTACTGAATCCTAATGAGAAGAATCAGTCCTG
+GGGAGATGCTGTGGTGGGGGAGAGATCCATAGTGAGCAACAACTGGGCTCTCGGTGGTGA
+TCCTGAAGAACGTGCTGCTCTGTCTGGAGTTCCAGCCAGTGCTGTCACTGGCGCGTCTTT
+GCCTAGCAGTATCCCCCAGAATTGTGCCCCTCAAGGTTCGGGGTCTTCTGAAATGATTGC
+TAGCCAGTCTGCCAGTTGGTTGGTTCAACAGCTATCCCCTCAAACCCCTCAAAGTCCGCA
+TCCAAATGCAGAAAAGGGCCCTTCCGAGTTTGTTAGTAGCCCTGCTGGCAATACAAGTGT
+GATGCTAGTTCCACCTGCAAGCAGTACTTTGGTTCCTAACAGTAATAAGGCAAAGCACTC
+TAGTAACCAGGAAGAAGCTGTTGGCGCCCTAGACTTCACATTAAATAGAACTTTGGAAAA
+TCCTGTGAGAATGTACAGCCCATCTCCTTCAGATGGCCCAGCTTCTCAGCAGCCTCTTCC
+CAATCATCCCAGACAATCTGGGCCTGGGCTGCATAACCAGGATCATTTCTACCAGCAGGT
+AACAAAAGATGCTCAGGACCAGCATAGACTAGAAAGAGCCCAGCCAGAGCTGGTGCCTCC
+TCGGCCACAGAATTCTCCCCAAGTGCCCCAAGCATCGTGTCCAGAGCCTTCAAATCCTGA
+AAGCCCACCCACACAAGGACAGTCTGAAAGCTTGGCCCAGCCACCAGCAAGTCCAGCTTC
+AGTCAACACAGGCCAGCTGCTGCCTCAGCCACCACAGGCTTCCAGTGCATCCGTTACATC
+TACCAACTCCAGCCAGGCAGCTGTGCGGTCAGAGCAGCTGTGGCTACACCCACCACCTCC
+TAATACTTTTGGCCCAGCACCTCAAGACTTGGCATCCTACTACTATTACAGACCCCTGTA
+TGATGCCTACCAGTCTCAGTACCCTTCACCGTACCCGTCAGATCCTGGGACAGCCTCGCT
+GTACTACCAGGATATGTATGGCCTGTATGAGCCTCGTTACAGACCCTATGACAGCTCAGC
+ATCTGCTTATGCCGAGAACCACCGCTATTCTGAGCCTGAGCGGCCCAGCTCCCGTGCAAG
+TCACTATTCCGACCAGCTTGCTCCCAGGCAAGGATATCCTGAAGGATACTATAATTCCAA
+GAGTGGATGGAGCAGTCACAGTGATTACTATGCAAATTATTACTCTGGCCAGTATGATTA
+TGGAGACCCCAGCCGCTGGGATCGTTACTATGGGTCTCGCCTTAGGGATCCTCGCACCTG
+GGACCGGAGGTACTGGTATGACTCTGAACATGACCCATACAGGAAGGACCACTATGCTTA
+CAGTGACAGGCCTGAGAAATGTGATGATCACTGGAGGTATGACCCTCGCTTCACTGGGAG
+CTTCGACGATGACGCTGAGATCCACAGGGACCCCTATGGAGAAGAAGCAGACAGACGCAG
+CATCCACAGTGAGCACTCGGCACGGAGCCTGCGCAGCACTCACAGTCTGCCCAGCCGCCG
+CAGCAGCCTCAGCTCCCATTCACACCAGAGTCAGATTTACAGAAGCCACCATGTGACTGG
+CGGTTCCTTTGAGGCCCCTCATGCCCCAGGCTCATTTCATGGTGATTATGCCTATGGCAC
+ATATGCCAGCAATTTCAGCGGTGCCCATGGTTTTCCAGAGTACAGCTACCCTGCAGACAC
+CTCCTGGCCTGCTGTGGAGCAAGTTCCATCAAGACCGACCTCTCCTGAGAAGTTTACGGT
+GCCTCATGTCTGTGCCAGGTTTGGTCCTGGTGGTCAGCTCCTTAAAGTGATTCCCAACCT
+GCCTTCAGAAGGACAGCCTGCACTGGTGGAGATCCACAGCTTAGAGACCTTGCTGCAGCA
+CACACCTGAGCAGGAAGAGATGCGCTCCTTCCCAGGACCTCTCGGCAAAGATGATACCCA
+CAAAGTAGATGTTATTAACTTTGCACAGAACAAAGCAACAAAATGTTTGCAGAATGAAAG
+TTTAATTGATAAAGAGTCTGCAAGTCTTCTTTGGAAATTCATTATTCTGTTATGCAGACA
+GAATGGGACTGTTGTGGGAACAGACATTGCAGAGCTTTTGTTACGGGACCATAGAACTGT
+ATGGCTTCCTGGGAAGTCACCCAATGAGGCAAACCTGATAGATTTTACCAATGAGGCTGT
+GGAACAAGTGGAAGAGGAGGAGTCAGGGGAGGCCCAGCTCTCATTTCTCACAGACAGTCA
+GACAGTGACCACCAGCGTGCTGGAGAAGGAGACTGAGCGGTTCCGTGAGCTCTTGCTGTA
+TGGCCGGAAGAAGGATGCTCTGGAGTCTGCCATGAAAAATGGCTTATGGGGTCATGCTCT
+TCTGCTTGCAAGTAAGATGGACAGCCGGACACATGCCCGTGTCATGACCAGGTTTGCCAA
+CAGTCTTCCAATCAATGACCCCCTGCAGACTGTCTACCAGCTCATGTCTGGACGGATGCC
+TGCTGCATCCACGTGTTGTGGCGATGAGAAGTGGGGAGATTGGAGGCCACATCTTGCAAT
+GGTTTTGTCCAACCTGAACAACAACATGGATGTTGAATCTAGGACCATGGCTACGATGGG
+TGATACTCTAGCATCAAAAGGCCTGTTGGATGCTGCACACTTCTGCTACCTGATGGCCCA
+GGTTGGATTTGGGGTTTATACAAAGAAAACTACAAAACTTGTCTTGATAGGCTCAAATCA
+CAGTTTGCCCTTTTTAAAGTTTGCCACCAATGAAGCCATTCAAAGGACGGAGGCTTATGA
+GTATGCTCAGTCCCTTGGGGCACATACCTGTTCCTTACCTAACTTCCAGGTGTTTAAATT
+CATCTACTTGTGCCGCCTGGCTGAAATGGGACTTGCCACACAGGCCTTCCACTACTGCGA
+AGTAATAGCCAAGAGTGTCCTGACACAGCCTGGTGCATACTCTCCAGTACTGATTAGCCA
+GTTGACTCAGATGGCTTCCCAGTTACGCCTCTTCGATCCTCAACTGAAGGAGAAGCCAGA
+AGAGGAGTCCTTTGTGGAGCCTGCCTGGTTGGTGCAGCTGCAGCACGTGGAGAGGCAGAT
+CCAGGAGGGCACTGTGCTGTGGAGCCAGGATGGAACTGAACCCCAGCAGTGTCGCATTAC
+ATCGGGCTCTGAGGTGGAGCAGTCAGATGGCCCTGGACTCAACCAGCAGGCAGGGCCACA
+GGCCGACAACCCTCTACTGATGCCAAGCACTGAGCCTTTGATGCATGGCGTGCAACTGCT
+GCCCACAGCTCCTCAGACATTGCCTGATGGCCAGCCTGCTCACCTTTCCAGGGTGCCGAT
+GTTCCCAGTGCCAATGTCTCGTGGGCCCCTGGAGCTGAGTCCTGCCTATGGACCCCCAGG
+ATCTGCACTTGGCTTCCCAGAATCCTCCAGATCTGATCCTGCAGTGCTGCATCCTGGGCA
+GGCCCTGCCACCCACTACACTAAGTCTCCAGGAAAGTGGGCTTCCACCCCAGGAGGCCAA
+AAGTCCAGACCCAGAAATGGTGCCACGGGGCTCACCTGTCAGACACTCCCCTCCGGAGCT
+CAGTCAAGAGGAGTTTGGCGAGAGCTTCGCTGACCCGGGCTCTTCCAGAACAGCACAGGA
+CTTGGAAACCTCCCCAGTGTGGGATCTTGGCAGCTCCAGTTTGACACGTGCACCATCTTT
+GACATCTGATTCTGAAGGGAAGAAACCTGCACAGGCTGTCAAAAAGGAGCCCAAGGAGCC
+CAAGAAGACTGAGTCCTGGTTCTCTCGTTGGCTGCCTGGAAAAAAAAGGACAGAAGCTTA
+TCTACCAGATGACAAGAACAAATCAATTGTTTGGGATGAAAAGAAAAACCAGTGGGTGAA
+TTTGAATGAACCAGAGGAGGAGAAGAAGGCTCCACCCCCACCTCCAACATCGTTCCCCAG
+GGTTCCCCAGGTGGCTCCCACTGGGCCTGCAGGACCACCCACGGCCTCCGTGAATGTGTT
+TTCTAGAAAAGCAGGTGGGTCCAGAGCTCGCTATGTGGATGTTCTAAACCCAAGTGGAAC
+ACAGCGGAGTGAACCAGCTCTTGCTCCTGCAGATTTCTTTGCTCCTCTCGCCCCACTGCC
+AATTCCTTCTAACTTATTTGTACCAAACCCAGATGCAGAAGAGCCACAACCTGCAGATGG
+GACTGGCTGTAGGGGACAGGCACCAGCTGGGACTCAGTCTAAGGCAGAGTCCACCCTGGA
+ACCCAAGGTGGGAAGTTCTACAGTATCAGCCCCTGGACCTGAGCTCTTACCCTCCAAACC
+AGATGGCTCCCAAGGAGGAGAGGCTCCTGGAGACCATTGTCCTACAGGGGCCCCTCATGG
+TGGGTCTGTGCCCTTTTACAACCCTGCTCAGTTGGTGCAGGCTTCTGTCACCTCGGGAAA
+TTCAAGGCCAGGGAGGATTGGCCAAAGAAAATATGCGGCATTGAACTAGGATTGCTGCTG
+GATTCTTATTTGGAACCCTGAGATGATTAGATAACTGTTCTTCACCAAGAACCAACTAGC
+TGCCTCAGGTCTCGTGGATCCCAGATGGACATGGCAGTAACTCAGAGCCGGTCATACTGT
+GTGTCTCCTTCCTTGCAGCCTATGTATATGAATGATTGAAAAATTGATTTCAAGGTTCCT
+TTCAAATGCTGGATAGAATGAATCTAATTCAAAGTCTTTTATGTAAAAGAACAATGTTTC
+TTTTTTAGTCACTTTAGACAAATTAAGGTTTGAGCCACTTGAGAATATCCCCGCAGAGAG
+GCTAGGCAGGGATTCACTACAGGAGAGCACAGTTACTTGGACACCAAGGCCTTTCTCACC
+TGAGAAATGGTGCAAACCAACCAGGGATCCTTAGGCTACTGAGAAGGCTGTCTGCTTACC
+TGGAGAGGACTGACTGCTGGGATGTCTGGCCTAAGAGGAGCCTCAAACTGCACTGGGCAA
+CTGTGCCTTGTCCTGTGAACTGGGGAGTACATGCCAGCTCCTCAAAGGGTCACCAGATGG
+CAGCGGCTCCCAGGCTGGGGAGGAAGTGGTTACAAGGGCATGTCTCTCCAACATTTCCAG
+CCTCACTCCATTTTCTGTGGCCTCATTAGTGCTGGGTGCGTTTTTTTTTTGCTCCGAGCT
+TTCCGTCATGGCTCAGTCACTGGGGAGAGCCCCAGGGAGCTGATATTCTGAAGCTGCTGA
+TCTGATTAACCAGGTCAAAAACTGGCTGTGTGCTGCAACGTACTGCCCTCCTAGCCAGGA
+GTCTGTATGGAGCCCTCTAGCTGACTCAATGTCACCTGCAGACAGCACTTAAAGCCTTGG
+TGGTATCTTGGAGTGGCTTACGGTGTCCTAGCGCACACTCTGGAACCTTGCATCTCTACC
+CCAAAGCCCACCAGGGACCTTCAGCAGCGACTCACTGGCTCACCCATATCACTTCAAGGA
+GCTGCCACCACATAAGAGTCAAAGCTTTAAGGCTTCACTGACTGTTCCTAAAACTATCCT
+TACACTCTAAAGAGGAAGGGAAAGAGAGTTAAATATTTAAAAATCAGCAGGTAGAAAACA
+TAAATGGTTTGTTTGGTATTAAATTTAGAAATTGTAGAACATGGAATTAGTACAGCCCTT
+CCCGGTTTTCTGGTTCCTTGCATCATCTAGGAAAGACTCACAGAATGGCTTCCAGGACGT
+TCCATAGATGAGTGTACTTGGACCCTCCTGTTCCTGTCATTAAGAAAGGCCTGTCCCTGT
+GGGTCAGTAGCAACTTGTGTCCTTGCTGGGACCAGGCAGGACCCTTGCCTCTGGTTCAAC
+CCTGCCCAGGCTCTGTGTTGACTGCCAACCACTTTGGATTCAAGAAGCTTCCTCCCTGGG
+AGCTGCTATTTTTCCAAAATTCACATTGTTAAATAAAATATTTTGGGCTCTCAAGTG
+>TR4|c4_g1_i2 len=968 path=[10061:0-204 10250:205-259 10248:260-622 10226:623-967] [-1, 10061, 10250, 10248, 10226]
+ACAACCCTGCTCAGTTGGTGCAGAATTGGCAGAACAAAAACAAATCATGTCTGCAGTGCT
+GTGGGCTAGGAAATGCTGAGCAGCAGGAACTTGGCACATACAGAAGGTCTTGCTTACACT
+TGAAGCTAACACAGAGTCTGCCCATTTGTTATTGATCTGTGGGGTTATCCTGTAGCTCCA
+TCGCTGGACAGCCTCTGGGCATGGACACATGTAGGTCATTGCTGTTCCTTTTGTTCTAGG
+CTTCTGTCACCTCGGGAAATTCAAGGCCAGGGAGGATTGGCCAAAGAAAATATGCGGCAT
+TGAACTAGGATTGCTGCTGGATTCTTATTTGGAACCCTGAGATGATTAGATAACTGTTCT
+TCACCAAGAACCAACTAGCTGCCTCAGGTCTCGTGGATCCCAGATGGACATGGCAGTAAC
+TCAGAGCCGGTCATACTGTGTGTCTCCTTCCTTGCAGCCTATGTATATGAATGATTGAAA
+AATTGATTTCAAGGTTCCTTTCAAATGCTGGATAGAATGAATCTAATTCAAAGTCTTTTA
+TGTAAAAGAACAATGTTTCTTTTTTAGTCACTTTAGACAAATTAAGGTTTGAGCCACTTG
+AGAATATCCCCGCAGAGAGGCTAGGCAGGGATTCACTACAGGAGAGCACAGTTACTTGGA
+CACCAAGGCCTTTCTCACCTGAGAAATGGTGCAAACCAACCAGGGATCCTTAGGCTACTG
+AGAAGGCTGTCTGCTTACCTGGAGAGGACTGACTGCTGGGATGTCTGGCCTAAGAGGAGC
+CTCAAACTGCACTGGGCAACTGTGCCTTGTCCTGTGAACTGGGGAGTACATGCCAGCTCC
+TCAAAGGGTCACCAGATGGCAGCGGCTCCCAGGCTGGGGAGGAAGTGGTTACAAGGGCAT
+GTCTCTCCAACATTTCCAGCCTCACTCCATTTTCTGTGGCCTCATTAGTGCTGGGTGCGT
+TTTTTTTT
+>TR4|c4_g1_i3 len=8817 path=[10067:0-123 10068:124-147 10238:148-333 @10231@!:334-957 10218:958-1805 10145:1806-1829 10237:1830-1874 @10224@!:1875-2722 10230:2723-3111 10216:3112-3436 10223:3437-3734 10131:3735-3758 10215:3759-4380 10245:4381-4699 @10235@!:4700-5459 10241:5460-6645 10251:6646-6646 10135:6647-6661 10240:6662-6662 @10234@!:6663-7161 10252:7162-7167 10256:7168-7175 10258:7176-7176 10220:7177-7182 10212:7183-7242 10249:7243-7320 10248:7321-7683 10226:7684-8028 10255:8029-802 [...]
+GGCGCGCTGACGTCTCCTTCGGACACGTCGGCGGCGGCACCTGGAGCCGGATGTGCCAAG
+ATGGCTGCGGCTGCTGCTGGGAACGCGCTAGTTCCCCCTACTGCCGCCGCCGTCGCCGGC
+TGGGTTTCAGTTCGCGGCGCCTGAGAAGCCAACCACAGCTCACAGGCACAAATTAAAGAA
+AAGCTCTACTCTGCCCCCTTGATAAGCAGCATCTCCTTGTGGAAAAGACTCCAACATGCA
+GCCACCACCTCAGGCAGTCCCGTCTGGGGTGGCTGGACCACCCCCAGCTGGGAATCCTCG
+GAGCATGTTCTGGGCCAACAGCCCTTACAGGAAGCCAGCCAATAATGCACCAGTGGCTCC
+CATAACACGCCCATTGCAGCCAGTAACGGATCCGTTTGCTTTTAATAGACAGACTCTTCA
+AAACACACCAGTAGGAAGTTCATCCAAAAGCAGCCTGCCCAATTTGCCTGGCCCAGCCCT
+CTCTGTTTTTTCTCAGTGGCCTGGTTTGCCTGTGACTCCCACAAATGCTGGGGATAGCTC
+CACAGGATTGCATGAGCCTCTGTCAGGAACTCTGTCACAGCCTAGAGCAGATGCCAGTCT
+ATTTCCTCCTGCATCTACCCCTTCTTCACTCCCTGGGCTGGAGGTGAGCAGGAATGCTGA
+GGCTGATCCCAGCTCAGGACATGAAGTCCAGATGCTGCCACATTCAGCTCACTACATTCC
+AGGAGTGGGTCCTGAGCAGCCTCTCGGGGGCCAAATGAATGACAGTGGGTCCGGGCCTGA
+CCAACCCATGAATAGGCATGCCCCCCATGATGGTGCCGTGACCCACGCAGCATCTCCTTT
+CCTCCCTCAGCCACAGATGCCAGGTCAGTGGGGGCCTGCACAAGGAGGCCCTCAGCCCTC
+CTATCAGCATCACTCACCCTACCTGGAGGGACCTGTTCAGAACATGGGGCTCCAGGCTGC
+CAGCTTGCCCCATTTTCCCCCTCCATCTAGTCTACACCAGGGACCTGGCCATGAGTCTCA
+TGCCCCACAAACATTTACTCCAGCATCCTTGGCCAGTGGTGAAGGGAATGAGATAGTTCA
+CCAGCAAAGTAAAAATCACCCATTGAGTAGCTTCCCCCCTAAACACACTTTTGAGCAGAA
+TTCCAGAATTGGGAATATGTGGGCAAGCCCAGAGTTGAAGCAGAATCCGGGAGTGAATAA
+AGAGCATCTGCTAGACCCTGCCCATGTCAATCCCTTCACTCAGGGAAATAGTCCTGAAAA
+CCAGGCGCATCATCCCCCAGTGGCAGCAACTAACCATGCCCTGCAAGAAGCAGCCTCTGG
+AGCTCTCTCAATGTTTTTTCAAGGGGAAGAGACAGAGAATGAGGAAAATCTCTCATCTGA
+AAAAGCAGGCCTCGATAAGAGATTGAACTTGGATAGCTTTTCTTCTACCTCCAGACTGGG
+CCATCCACCACCACCTGGAGCTAGTGGTGTCTACCAGGCCTTTCCTAGAGGCCCTAGCAG
+TGAGGCTGCGCAGGAAGGAGATGCGCAACCTTATTTTTCGCAGTCTGTGGGCGTCCGTCT
+TGACAAACAGAGCACTGTGCCCCCTGCTAATGATGCATGGGGTGATGTTCCGGGGACCGG
+GACCCGCTGTGCCAGTGGGCCACAGTGTGAGAATGTTGAGAACTTAGAATTTGTTCAGAA
+TCAAGAAGTTTTGCCCCGTGAGACCCTGAGTGTGGATCCCTTCCCCCTGAGTGATCAGAT
+CCGATATGGGCCCCTTCCTGGGCCAGCTGCCTCCAGGCCTGCTACTGTGGGCCTCACCAG
+AGGTGGGGGGCTAAATCTTGAGGCCCCAGACACACCACTGCACCCTACACGACCTGACAG
+TGTGTCATCCAGCTACAGCAGCCATAGCCACAGAAGTCCTCCTGGGTCAGCCAGACCCCA
+AGAATTGGTGGGCACATTCATTCAGCAAGAAGTTGGGAAACTTGAAGATGATACTTCAGG
+GAGTTTTTTTAAGCAAATTGATTCTTCTCCTGTTGGAGGTGAAACAGATGAGGTGACTGG
+GAGCCAAAATTGCTGCAGCAGTCTGTCCCAGCCTTCAACCCCAAGCCCTCCAAAACCTAC
+AGGAGTATTCCAAACAAGTGCAAACAGTTCTTTTGAGCCAGTAAAATCCCACTTGGTTGG
+AGTGAAACCAGTTGAAGCAGATCGTGCCAACATGGTGGTTGAAGTGAGAGGGACCCAATA
+CTGTCCGAAGAAGCGCAGGGCAGCTGTTGCACCACCTGATGCTACCTCAGGAAACCTGGA
+ACAGCCACCAGACAACATGGAGACCCCGTGTGCACCTCAGGCCTGCCCTTTGCCTCTTAG
+CACCACTGGAGAGGCTGGGCAACTGGTTTCAAACACGGCAGGGACACCCCTGGATACTGT
+GCGCCCAGTGCCTGATAAGAGGCCCTCAGCCAGGGCCCAGGGACCTGTGAAGTGTGAGAG
+CCCAGCAACAACTCTGTGGGCACAAAATGAGCTGCCAGATTTTGGTGGCAATGTCCTTCT
+AGCCCCTGCTGCCCCTGCACTTTATGTTCCTGTAAAACCAAAACCTTCAGAGGTTGTTCA
+TCATCCAGAAAAGGGAATGTCTGGACAGAAGGCCTGGAAACAAGGGTCTGTGCCACCTTT
+GCAGAACCAAGACCCTCCTGGTGCTTCTGAGAACCTTGAGAACCCTCCCAAGGTAGGAGA
+AGAGGAGGCCCTTCCAGTGCAGGCAAGTTCTGGTTATGCGAGTTTGCTTTCTTCGCCACC
+CACTGAATCTTTGCACAATCAACCTGTCCTGATTGCTCAGCCTGATCAAAGCTATAATTT
+GGCTCAGCCTATTAATTTTTCTGTGTCCTTACTGAATCCTAATGAGAAGAATCAGTCCTG
+GGGAGATGCTGTGGTGGGGGAGAGATCCATAGTGAGCAACAACTGGGCTCTCGGTGGTGA
+TCCTGAAGAACGTGCTGCTCTGTCTGGAGTTCCAGCCAGTGCTGTCACTGGCGCGTCTTT
+GCCTAGCAGTATCCCCCAGAATTGTGCCCCTCAAGGTTCGGGGTCTTCTGAAATGATTGC
+TAGCCAGTCTGCCAGTTGGTTGGTTCAACAGCTATCCCCTCAAACCCCTCAAAGTCCGCA
+TCCAAATGCAGAAAAGGGCCCTTCCGAGTTTGTTAGTAGCCCTGCTGGCAATACAAGTGT
+GATGCTAGTTCCACCTGCAAGCAGTACTTTGGTTCCTAACAGTAATAAGGCAAAGCACTC
+TAGTAACCAGGAAGAAGCTGTTGGCGCCCTAGACTTCACATTAAATAGAACTTTGGAAAA
+TCCTGTGAGAATGTACAGCCCATCTCCTTCAGATGGCCCAGCTTCTCAGCAGCCTCTTCC
+CAATCATCCCAGACAATCTGGGCCTGGGCTGCATAACCAGGATCATTTCTACCAGCAGGT
+AACAAAAGATGCTCAGGACCAGCATAGACTAGAAAGAGCCCAGCCAGAGCTGGTGCCTCC
+TCGGCCACAGAATTCTCCCCAAGTGCCCCAAGCATCGTGTCCAGAGCCTTCAAATCCTGA
+AAGCCCACCCACACAAGGACAGTCTGAAAGCTTGGCCCAGCCACCAGCAAGTCCAGCTTC
+AGTCAACACAGGCCAGCTGCTGCCTCAGCCACCACAGGCTTCCAGTGCATCCGTTACATC
+TACCAACTCCAGCCAGGCAGCTGTGCGGTCAGAGCAGCTGTGGCTACACCCACCACCTCC
+TAATACTTTTGGCCCAGCACCTCAAGACTTGGCATCCTACTACTATTACAGACCCCTGTA
+TGATGCCTACCAGTCTCAGTACCCTTCACCGTACCCGTCAGATCCTGGGACAGCCTCGCT
+GTACTACCAGGATATGTATGGCCTGTATGAGCCTCGTTACAGACCCTATGACAGCTCAGC
+ATCTGCTTATGCCGAGAACCACCGCTATTCTGAGCCTGAGCGGCCCAGCTCCCGTGCAAG
+TCACTATTCCGACCAGCTTGCTCCCAGGCAAGGATATCCTGAAGGATACTATAATTCCAA
+GAGTGGATGGAGCAGTCACAGTGATTACTATGCAAATTATTACTCTGGCCAGTATGATTA
+TGGAGACCCCAGCCGCTGGGATCGTTACTATGGGTCTCGCCTTAGGGATCCTCGCACCTG
+GGACCGGAGGTACTGGTATGACTCTGAACATGACCCATACAGGAAGGACCACTATGCTTA
+CAGTGACAGGCCTGAGAAATGTGATGATCACTGGAGGTATGACCCTCGCTTCACTGGGAG
+CTTCGACGATGACGCTGAGATCCACAGGGACCCCTATGGAGAAGAAGCAGACAGACGCAG
+CATCCACAGTGAGCACTCGGCACGGAGCCTGCGCAGCACTCACAGTCTGCCCAGCCGCCG
+CAGCAGCCTCAGCTCCCATTCACACCAGAGTCAGATTTACAGAAGCCACCATGTGACTGG
+CGGTTCCTTTGAGGCCCCTCATGCCCCAGGCTCATTTCATGGTGATTATGCCTATGGCAC
+ATATGCCAGCAATTTCAGCGGTGCCCATGGTTTTCCAGAGTACAGCTACCCTGCAGACAC
+CTCCTGGCCTGCTGTGGAGCAAGTTCCATCAAGACCGACCTCTCCTGAGAAGTTTACGGT
+GCCTCATGTCTGTGCCAGGTTTGGTCCTGGTGGTCAGCTCCTTAAAGTGATTCCCAACCT
+GCCTTCAGAAGGACAGCCTGCACTGGTGGAGATCCACAGCTTAGAGACCTTGCTGCAGCA
+CACACCTGAGCAGGAAGAGATGCGCTCCTTCCCAGGACCTCTCGGCAAAGATGATACCCA
+CAAAGTAGATGTTATTAACTTTGCACAGAACAAAGCAACAAAATGTTTGCAGAATGAAAG
+TTTAATTGATAAAGAGTCTGCAAGTCTTCTTTGGAAATTCATTATTCTGTTATGCAGACA
+GAATGGGACTGTTGTGGGAACAGACATTGCAGAGCTTTTGTTACGGGACCATAGAACTGT
+ATGGCTTCCTGGGAAGTCACCCAATGAGGCAAACCTGATAGATTTTACCAATGAGGCTGT
+GGAACAAGTGGAAGAGGAGGAGTCAGGGGAGGCCCAGCTCTCATTTCTCACAGACAGTCA
+GACAGTGACCACCAGCGTGCTGGAGAAGGAGACTGAGCGGTTCCGTGAGCTCTTGCTGTA
+TGGCCGGAAGAAGGATGCTCTGGAGTCTGCCATGAAAAATGGCTTATGGGGTCATGCTCT
+TCTGCTTGCAAGTAAGATGGACAGCCGGACACATGCCCGTGTCATGACCAGGTTTGCCAA
+CAGTCTTCCAATCAATGACCCCCTGCAGACTGTCTACCAGCTCATGTCTGGACGGATGCC
+TGCTGCATCCACGTGTTGTGGCGATGAGAAGTGGGGAGATTGGAGGCCACATCTTGCAAT
+GGTTTTGTCCAACCTGAACAACAACATGGATGTTGAATCTAGGACCATGGCTACGATGGG
+TGATACTCTAGCATCAAAAGGCCTGTTGGATGCTGCACACTTCTGCTACCTGATGGCCCA
+GGTTGGATTTGGGGTTTATACAAAGAAAACTACAAAACTTGTCTTGATAGGCTCAAATCA
+CAGTTTGCCCTTTTTAAAGTTTGCCACCAATGAAGCCATTCAAAGGACGGAGGCTTATGA
+GTATGCTCAGTCCCTTGGGGCACATACCTGTTCCTTACCTAACTTCCAGGTGTTTAAATT
+CATCTACTTGTGCCGCCTGGCTGAAATGGGACTTGCCACACAGGCCTTCCACTACTGCGA
+AGTAATAGCCAAGAGTGTCCTGACACAGCCTGGTGCATACTCTCCAGTACTGATTAGCCA
+GTTGACTCAGATGGCTTCCCAGTTACGCCTCTTCGATCCTCAACTGAAGGAGAAGCCAGA
+AGAGGAGTCCTTTGTGGAGCCTGCCTGGTTGGTGCAGCTGCAGCACGTGGAGAGGCAGAT
+CCAGGAGGGCACTGTGCTGTGGAGCCAGGATGGAACTGAACCCCAGCAGTGTCGCATTAC
+ATCGGGCTCTGAGGTGGAGCAGTCAGATGGCCCTGGACTCAACCAGCAGGCAGGGCCACA
+GGCCGACAACCCTCTACTGATGCCAAGCACTGAGCCTTTGATGCATGGCGTGCAACTGCT
+GCCCACAGCTCCTCAGACATTGCCTGATGGCCAGCCTGCTCACCTTTCCAGGGTGCCGAT
+GTTCCCAGTGCCAATGTCTCGTGGGCCCCTGGAGCTGAGTCCTGCCTATGGACCCCCAGG
+ATCTGCACTTGGCTTCCCAGAATCCTCCAGATCTGATCCTGCAGTGCTGCATCCTGGGCA
+GGCCCTGCCACCCACTACACTAAGTCTCCAGGAAAGTGGGCTTCCACCCCAGGAGGCCAA
+AAGTCCAGACCCAGAAATGGTGCCACGGGGCTCACCTGTCAGACACTCCCCTCCGGAGCT
+CAGTCAAGAGGAGTTTGGCGAGAGCTTCGCTGACCCGGGCTCTTCCAGAACAGCACAGGA
+CTTGGAAACCTCCCCAGTGTGGGATCTTGGCAGCTCCAGTTTGACACGTGCACCATCTTT
+GACATCTGATTCTGAAGGGAAGAAACCTGCACAGGCTGTCAAAAAGGAGCCCAAGGAGCC
+CAAGAAGACTGAGTCCTGGTTCTCTCGTTGGCTGCCTGGAAAAAAAAGGACAGAAGCTTA
+TCTACCAGATGACAAGAACAAATCAATTGTTTGGGATGAAAAGAAAAACCAGTGGGTGAA
+TTTGAATGAACCAGAGGAGGAGAAGAAGGCTCCACCCCCACCTCCAACATCGTTCCCCAG
+GGTTCCCCAGGTGGCTCCCACTGGGCCTGCAGGACCACCCACGGCCTCCGTGAATGTGTT
+TTCTAGAAAAGCAGGTGGGTCCAGAGCTCGCTATGTGGATGTTCTAAACCCAAGTGGAAC
+ACAGCGGAGTGAACCAGCTCTTGCTCCTGCAGATTTCTTTGCTCCTCTCGCCCCACTGCC
+AATTCCTTCTAACTTATTTGTACCAAACCCAGATGCAGAAGAGCCACAACCTGCAGATGG
+GACTGGCTGTAGGGGACAGGCACCAGCTGGGACTCAGTCTAAGGCAGAGTCCACCCTGGA
+ACCCAAGGTGGGAAGTTCTACAGTATCAGCCCCTGGACCTGAGCTCTTACCCTCCAAACC
+AGATGGCTCCCAAGGAGGAGAGCTCTCGCGTTGTAGCTCTCTGAGCTCGCTCTCACAGGA
+AGTGAGCCGGCATTTCCATCAGGCTCCTGGAGACCATTGTCCTACAGGGGCCCCTCATGG
+TGGGTCTGTGCCCTTTTACAACCCTGCTCAGTTGGTGCAGGCTTCTGTCACCTCGGGAAA
+TTCAAGGCCAGGGAGGATTGGCCAAAGAAAATATGCGGCATTGAACTAGGATTGCTGCTG
+GATTCTTATTTGGAACCCTGAGATGATTAGATAACTGTTCTTCACCAAGAACCAACTAGC
+TGCCTCAGGTCTCGTGGATCCCAGATGGACATGGCAGTAACTCAGAGCCGGTCATACTGT
+GTGTCTCCTTCCTTGCAGCCTATGTATATGAATGATTGAAAAATTGATTTCAAGGTTCCT
+TTCAAATGCTGGATAGAATGAATCTAATTCAAAGTCTTTTATGTAAAAGAACAATGTTTC
+TTTTTTAGTCACTTTAGACAAATTAAGGTTTGAGCCACTTGAGAATATCCCCGCAGAGAG
+GCTAGGCAGGGATTCACTACAGGAGAGCACAGTTACTTGGACACCAAGGCCTTTCTCACC
+TGAGAAATGGTGCAAACCAACCAGGGATCCTTAGGCTACTGAGAAGGCTGTCTGCTTACC
+TGGAGAGGACTGACTGCTGGGATGTCTGGCCTAAGAGGAGCCTCAAACTGCACTGGGCAA
+CTGTGCCTTGTCCTGTGAACTGGGGAGTACATGCCAGCTCCTCAAAGGGTCACCAGATGG
+CAGCGGCTCCCAGGCTGGGGAGGAAGTGGTTACAAGGGCATGTCTCTCCAACATTTCCAG
+CCTCACTCCATTTTCTGTGGCCTCATTAGTGCTGGGTGCGTTTTTTTTTTGCTCCGAGCT
+TTCCGTCATGGCTCAGTCACTGGGGAGAGCCCCAGGGAGCTGATATTCTGAAGCTGCTGA
+TCTGATTAACCAGGTCAAAAACTGGCTGTGTGCTGCAACGTACTGCCCTCCTAGCCAGGA
+GTCTGTATGGAGCCCTCTAGCTGACTCAATGTCACCTGCAGACAGCACTTAAAGCCTTGG
+TGGTATCTTGGAGTGGCTTACGGTGTCCTAGCGCACACTCTGGAACCTTGCATCTCTACC
+CCAAAGCCCACCAGGGACCTTCAGCAGCGACTCACTGGCTCACCCATATCACTTCAAGGA
+GCTGCCACCACATAAGAGTCAAAGCTTTAAGGCTTCACTGACTGTTCCTAAAACTATCCT
+TACACTCTAAAGAGGAAGGGAAAGAGAGTTAAATATTTAAAAATCAGCAGGTAGAAAACA
+TAAATGGTTTGTTTGGTATTAAATTTAGAAATTGTAGAACATGGAATTAGTACAGCCCTT
+CCCGGTTTTCTGGTTCCTTGCATCATCTAGGAAAGACTCACAGAATGGCTTCCAGGACGT
+TCCATAGATGAGTGTACTTGGACCCTCCTGTTCCTGTCATTAAGAAAGGCCTGTCCCTGT
+GGGTCAGTAGCAACTTGTGTCCTTGCTGGGACCAGGCAGGACCCTTGCCTCTGGTTCAAC
+CCTGCCCAGGCTCTGTGTTGACTGCCAACCACTTTGGATTCAAGAAGCTTCCTCCCTGGG
+AGCTGCTATTTTTCCAAAATTCACATTGTTAAATAAAATATTTTGGGCTCTCAAGTG
+>TR4|c4_g1_i4 len=7787 path=[10147:0-59 @10231@!:60-683 10218:684-1531 10145:1532-1555 10237:1556-1600 @10224@!:1601-2448 10102:2449-2451 10103:2452-2466 10223:2467-2764 10131:2765-2788 10215:2789-3410 10245:3411-3729 @10235@!:3730-4489 10241:4490-5675 10251:5676-5676 10135:5677-5691 10240:5692-5692 @10234@!:5693-6191 10253:6192-6194 10089:6195-6212 10249:6213-6290 10248:6291-6653 10226:6654-6998 10255:6999-6999 10075:7000-7012 10076:7013-7013 10077:7014-7786] [-1, 10147, 10231, 10218, 1 [...]
+GGACCCCCCCCAGCGGGGAATCCTCGGAGCATGTTCGGGGCCAACAGCCCTTACAGGAAG
+CCAGCCAATAATGCACCAGTGGCTCCCATAACACGCCCATTGCAGCCAGTAACGGATCCG
+TTTGCTTTTAATAGACAGACTCTTCAAAACACACCAGTAGGAAGTTCATCCAAAAGCAGC
+CTGCCCAATTTGCCTGGCCCAGCCCTCTCTGTTTTTTCTCAGTGGCCTGGTTTGCCTGTG
+ACTCCCACAAATGCTGGGGATAGCTCCACAGGATTGCATGAGCCTCTGTCAGGAACTCTG
+TCACAGCCTAGAGCAGATGCCAGTCTATTTCCTCCTGCATCTACCCCTTCTTCACTCCCT
+GGGCTGGAGGTGAGCAGGAATGCTGAGGCTGATCCCAGCTCAGGACATGAAGTCCAGATG
+CTGCCACATTCAGCTCACTACATTCCAGGAGTGGGTCCTGAGCAGCCTCTCGGGGGCCAA
+ATGAATGACAGTGGGTCCGGGCCTGACCAACCCATGAATAGGCATGCCCCCCATGATGGT
+GCCGTGACCCACGCAGCATCTCCTTTCCTCCCTCAGCCACAGATGCCAGGTCAGTGGGGG
+CCTGCACAAGGAGGCCCTCAGCCCTCCTATCAGCATCACTCACCCTACCTGGAGGGACCT
+GTTCAGAACATGGGGCTCCAGGCTGCCAGCTTGCCCCATTTTCCCCCTCCATCTAGTCTA
+CACCAGGGACCTGGCCATGAGTCTCATGCCCCACAAACATTTACTCCAGCATCCTTGGCC
+AGTGGTGAAGGGAATGAGATAGTTCACCAGCAAAGTAAAAATCACCCATTGAGTAGCTTC
+CCCCCTAAACACACTTTTGAGCAGAATTCCAGAATTGGGAATATGTGGGCAAGCCCAGAG
+TTGAAGCAGAATCCGGGAGTGAATAAAGAGCATCTGCTAGACCCTGCCCATGTCAATCCC
+TTCACTCAGGGAAATAGTCCTGAAAACCAGGCGCATCATCCCCCAGTGGCAGCAACTAAC
+CATGCCCTGCAAGAAGCAGCCTCTGGAGCTCTCTCAATGTTTTTTCAAGGGGAAGAGACA
+GAGAATGAGGAAAATCTCTCATCTGAAAAAGCAGGCCTCGATAAGAGATTGAACTTGGAT
+AGCTTTTCTTCTACCTCCAGACTGGGCCATCCACCACCACCTGGAGCTAGTGGTGTCTAC
+CAGGCCTTTCCTAGAGGCCCTAGCAGTGAGGCTGCGCAGGAAGGAGATGCGCAACCTTAT
+TTTTCGCAGTCTGTGGGCGTCCGTCTTGACAAACAGAGCACTGTGCCCCCTGCTAATGAT
+GCATGGGGTGATGTTCCGGGGACCGGGACCCGCTGTGCCAGTGGGCCACAGTGTGAGAAT
+GTTGAGAACTTAGAATTTGTTCAGAATCAAGAAGTTTTGCCCCGTGAGACCCTGAGTGTG
+GATCCCTTCCCCCTGAGTGATCAGATCCGATATGGGCCCCTTCCTGGGCCAGCTGCCTCC
+AGGCCTGCTACTGTGGGCCTCACCAGAGGTGGGGGGCTAAATCTTGAGGCCCCAGACACA
+CCACTGCACCCTACACGACCTGACAGTGTGTCATCCAGCTACAGCAGCCATAGCCACAGA
+AGTCCTCCTGGGTCAGCCAGACCCCAAGAATTGGTGGGCACATTCATTCAGCAAGAAGTT
+GGGAAACTTGAAGATGATACTTCAGGGAGTTTTTTTAAGCAAATTGATTCTTCTCCTGTT
+GGAGGTGAAACAGATGAGGTGACTGGGAGCCAAAATTGCTGCAGCAGTCTGTCCCAGCCT
+TCAACCCCAAGCCCTCCAAAACCTACAGGAGTATTCCAAACAAGTGCAAACAGTTCTTTT
+GAGCCAGTAAAATCCCACTTGGTTGGAGTGAAACCAGTTGAAGCAGATCGTGCCAACATG
+GTGGTTGAAGTGAGAGGGACCCAATACTGTCCGAAGAAGCGCAGGGCAGCTGTTGCACCA
+CCTGATGCTACCTCAGGAAACCTGGAACAGCCACCAGACAACATGGAGACCCCGTGTGCA
+CCTCAGGCCTGCCCTTTGCCTCTTAGCACCACTGGAGAGGCTGGGCAACTGGTTTCAAAC
+ACGGCAGGGACACCCCTGGATACTGTGCGCCCAGTGCCTGATAAGAGGCCCTCAGCCAGG
+GCCCAGGGACCTGTGAAGTGTGAGAGCCCAGCAACAACTCTGTGGGCACAAAATGAGCTG
+CCAGATTTTGGTGGCAATGTCCTTCTAGCCCCTGCTGCCCCTGCACTTTATGTTCCTGTA
+AAACCAAAACCTTCAGAGGTTGTTCATCATCCAGAAAAGGGAATGTCTGGACAGAAGGCC
+TGGAAACAAGGGTCTGTGCCACCTTTGCAGAACCAAGACCCTCCTGGTGCTTCTGAGAAC
+CTTGAGAACCCTCCCAAGGTAGGAGAAGAGGAGGCCCTTCCAGTGCAGGTAACAAAAGAT
+GCTCAGGACCAGCATAGACTAGAAAGAGCCCAGCCAGAGCTGGTGCCTCCTCGGCCACAG
+AATTCTCCCCAAGTGCCCCAAGCATCGTGTCCAGAGCCTTCAAATCCTGAAAGCCCACCC
+ACACAAGGACAGTCTGAAAGCTTGGCCCAGCCACCAGCAAGTCCAGCTTCAGTCAACACA
+GGCCAGCTGCTGCCTCAGCCACCACAGGCTTCCAGTGCATCCGTTACATCTACCAACTCC
+AGCCAGGCAGCTGTGCGGTCAGAGCAGCTGTGGCTACACCCACCACCTCCTAATACTTTT
+GGCCCAGCACCTCAAGACTTGGCATCCTACTACTATTACAGACCCCTGTATGATGCCTAC
+CAGTCTCAGTACCCTTCACCGTACCCGTCAGATCCTGGGACAGCCTCGCTGTACTACCAG
+GATATGTATGGCCTGTATGAGCCTCGTTACAGACCCTATGACAGCTCAGCATCTGCTTAT
+GCCGAGAACCACCGCTATTCTGAGCCTGAGCGGCCCAGCTCCCGTGCAAGTCACTATTCC
+GACCAGCTTGCTCCCAGGCAAGGATATCCTGAAGGATACTATAATTCCAAGAGTGGATGG
+AGCAGTCACAGTGATTACTATGCAAATTATTACTCTGGCCAGTATGATTATGGAGACCCC
+AGCCGCTGGGATCGTTACTATGGGTCTCGCCTTAGGGATCCTCGCACCTGGGACCGGAGG
+TACTGGTATGACTCTGAACATGACCCATACAGGAAGGACCACTATGCTTACAGTGACAGG
+CCTGAGAAATGTGATGATCACTGGAGGTATGACCCTCGCTTCACTGGGAGCTTCGACGAT
+GACGCTGAGATCCACAGGGACCCCTATGGAGAAGAAGCAGACAGACGCAGCATCCACAGT
+GAGCACTCGGCACGGAGCCTGCGCAGCACTCACAGTCTGCCCAGCCGCCGCAGCAGCCTC
+AGCTCCCATTCACACCAGAGTCAGATTTACAGAAGCCACCATGTGACTGGCGGTTCCTTT
+GAGGCCCCTCATGCCCCAGGCTCATTTCATGGTGATTATGCCTATGGCACATATGCCAGC
+AATTTCAGCGGTGCCCATGGTTTTCCAGAGTACAGCTACCCTGCAGACACCTCCTGGCCT
+GCTGTGGAGCAAGTTCCATCAAGACCGACCTCTCCTGAGAAGTTTACGGTGCCTCATGTC
+TGTGCCAGGTTTGGTCCTGGTGGTCAGCTCCTTAAAGTGATTCCCAACCTGCCTTCAGAA
+GGACAGCCTGCACTGGTGGAGATCCACAGCTTAGAGACCTTGCTGCAGCACACACCTGAG
+CAGGAAGAGATGCGCTCCTTCCCAGGACCTCTCGGCAAAGATGATACCCACAAAGTAGAT
+GTTATTAACTTTGCACAGAACAAAGCAACAAAATGTTTGCAGAATGAAAGTTTAATTGAT
+AAAGAGTCTGCAAGTCTTCTTTGGAAATTCATTATTCTGTTATGCAGACAGAATGGGACT
+GTTGTGGGAACAGACATTGCAGAGCTTTTGTTACGGGACCATAGAACTGTATGGCTTCCT
+GGGAAGTCACCCAATGAGGCAAACCTGATAGATTTTACCAATGAGGCTGTGGAACAAGTG
+GAAGAGGAGGAGTCAGGGGAGGCCCAGCTCTCATTTCTCACAGACAGTCAGACAGTGACC
+ACCAGCGTGCTGGAGAAGGAGACTGAGCGGTTCCGTGAGCTCTTGCTGTATGGCCGGAAG
+AAGGATGCTCTGGAGTCTGCCATGAAAAATGGCTTATGGGGTCATGCTCTTCTGCTTGCA
+AGTAAGATGGACAGCCGGACACATGCCCGTGTCATGACCAGGTTTGCCAACAGTCTTCCA
+ATCAATGACCCCCTGCAGACTGTCTACCAGCTCATGTCTGGACGGATGCCTGCTGCATCC
+ACGTGTTGTGGCGATGAGAAGTGGGGAGATTGGAGGCCACATCTTGCAATGGTTTTGTCC
+AACCTGAACAACAACATGGATGTTGAATCTAGGACCATGGCTACGATGGGTGATACTCTA
+GCATCAAAAGGCCTGTTGGATGCTGCACACTTCTGCTACCTGATGGCCCAGGTTGGATTT
+GGGGTTTATACAAAGAAAACTACAAAACTTGTCTTGATAGGCTCAAATCACAGTTTGCCC
+TTTTTAAAGTTTGCCACCAATGAAGCCATTCAAAGGACGGAGGCTTATGAGTATGCTCAG
+TCCCTTGGGGCACATACCTGTTCCTTACCTAACTTCCAGGTGTTTAAATTCATCTACTTG
+TGCCGCCTGGCTGAAATGGGACTTGCCACACAGGCCTTCCACTACTGCGAAGTAATAGCC
+AAGAGTGTCCTGACACAGCCTGGTGCATACTCTCCAGTACTGATTAGCCAGTTGACTCAG
+ATGGCTTCCCAGTTACGCCTCTTCGATCCTCAACTGAAGGAGAAGCCAGAAGAGGAGTCC
+TTTGTGGAGCCTGCCTGGTTGGTGCAGCTGCAGCACGTGGAGAGGCAGATCCAGGAGGGC
+ACTGTGCTGTGGAGCCAGGATGGAACTGAACCCCAGCAGTGTCGCATTACATCGGGCTCT
+GAGGTGGAGCAGTCAGATGGCCCTGGACTCAACCAGCAGGCAGGGCCACAGGCCGACAAC
+CCTCTACTGATGCCAAGCACTGAGCCTTTGATGCATGGCGTGCAACTGCTGCCCACAGCT
+CCTCAGACATTGCCTGATGGCCAGCCTGCTCACCTTTCCAGGGTGCCGATGTTCCCAGTG
+CCAATGTCTCGTGGGCCCCTGGAGCTGAGTCCTGCCTATGGACCCCCAGGATCTGCACTT
+GGCTTCCCAGAATCCTCCAGATCTGATCCTGCAGTGCTGCATCCTGGGCAGGCCCTGCCA
+CCCACTACACTAAGTCTCCAGGAAAGTGGGCTTCCACCCCAGGAGGCCAAAAGTCCAGAC
+CCAGAAATGGTGCCACGGGGCTCACCTGTCAGACACTCCCCTCCGGAGCTCAGTCAAGAG
+GAGTTTGGCGAGAGCTTCGCTGACCCGGGCTCTTCCAGAACAGCACAGGACTTGGAAACC
+TCCCCAGTGTGGGATCTTGGCAGCTCCAGTTTGACACGTGCACCATCTTTGACATCTGAT
+TCTGAAGGGAAGAAACCTGCACAGGCTGTCAAAAAGGAGCCCAAGGAGCCCAAGAAGACT
+GAGTCCTGGTTCTCTCGTTGGCTGCCTGGAAAAAAAAGGACAGAAGCTTATCTACCAGAT
+GACAAGAACAAATCAATTGTTTGGGATGAAAAGAAAAACCAGTGGGTGAATTTGAATGAA
+CCAGAGGAGGAGAAGAAGGCTCCACCCCCACCTCCAACATCGTTCCCCAGGGTTCCCCAG
+GTGGCTCCCACTGGGCCTGCAGGACCACCCACGGCCTCCGTGAATGTGTTTTCTAGAAAA
+GCAGGTGGGTCCAGAGCTCGCTATGTGGATGTTCTAAACCCAAGTGGAACACAGCGGAGT
+GAACCAGCTCTTGCTCCTGCAGATTTCTTTGCTCCTCTCGCCCCACTGCCAATTCCTTCT
+AACTTATTTGTACCAAACCCAGATGCAGAAGAGCCACAACCTGCAGATGGGACTGGCTGT
+AGGGGACAGGCACCAGCTGGGACTCAGTCTAAGGCAGAGTCCACCCTGGAACCCAAGGTG
+GGAAGTTCTACAGTATCAGCCCCTGGACCTGAGCTCTTACCCTCCAAACCAGATGGCTCC
+CAAGGAGGAGAGGCTCCTGGAGACCATTGTCCTACAGGGGCCCCTCATGGTGGGTCTGTG
+CCCTTTTACAACCCTGCTCAGTTGGTGCAGGCTTCTGTCACCTCGGGAAATTCAAGGCCA
+GGGAGGATTGGCCAAAGAAAATATGCGGCATTGAACTAGGATTGCTGCTGGATTCTTATT
+TGGAACCCTGAGATGATTAGATAACTGTTCTTCACCAAGAACCAACTAGCTGCCTCAGGT
+CTCGTGGATCCCAGATGGACATGGCAGTAACTCAGAGCCGGTCATACTGTGTGTCTCCTT
+CCTTGCAGCCTATGTATATGAATGATTGAAAAATTGATTTCAAGGTTCCTTTCAAATGCT
+GGATAGAATGAATCTAATTCAAAGTCTTTTATGTAAAAGAACAATGTTTCTTTTTTAGTC
+ACTTTAGACAAATTAAGGTTTGAGCCACTTGAGAATATCCCCGCAGAGAGGCTAGGCAGG
+GATTCACTACAGGAGAGCACAGTTACTTGGACACCAAGGCCTTTCTCACCTGAGAAATGG
+TGCAAACCAACCAGGGATCCTTAGGCTACTGAGAAGGCTGTCTGCTTACCTGGAGAGGAC
+TGACTGCTGGGATGTCTGGCCTAAGAGGAGCCTCAAACTGCACTGGGCAACTGTGCCTTG
+TCCTGTGAACTGGGGAGTACATGCCAGCTCCTCAAAGGGTCACCAGATGGCAGCGGCTCC
+CAGGCTGGGGAGGAAGTGGTTACAAGGGCATGTCTCTCCAACATTTCCAGCCTCACTCCA
+TTTTCTGTGGCCTCATTAGTGCTGGGTGCGTTTTTTTTTTGCTCCGAGCTTTCCGTCATG
+GCTCAGTCACTGGGGAGAGCCCCAGGGAGCTGATATTCTGAAGCTGCTGATCTGATTAAC
+CAGGTCAAAAACTGGCTGTGTGCTGCAACGTACTGCCCTCCTAGCCAGGAGTCTGTATGG
+AGCCCTCTAGCTGACTCAATGTCACCTGCAGACAGCACTTAAAGCCTTGGTGGTATCTTG
+GAGTGGCTTACGGTGTCCTAGCGCACACTCTGGAACCTTGCATCTCTACCCCAAAGCCCA
+CCAGGGACCTTCAGCAGCGACTCACTGGCTCACCCATATCACTTCAAGGAGCTGCCACCA
+CATAAGAGTCAAAGCTTTAAGGCTTCACTGACTGTTCCTAAAACTATCCTTACACTCTAA
+AGAGGAAGGGAAAGAGAGTTAAATATTTAAAAATCAGCAGGTAGAAAACATAAATGGTTT
+GTTTGGTATTAAATTTAGAAATTGTAGAACATGGAATTAGTACAGCCCTTCCCGGTTTTC
+TGGTTCCTTGCATCATCTAGGAAAGACTCACAGAATGGCTTCCAGGACGTTCCATAGATG
+AGTGTACTTGGACCCTCCTGTTCCTGTCATTAAGAAAGGCCTGTCCCTGTGGGTCAGTAG
+CAACTTGTGTCCTTGCTGGGACCAGGCAGGACCCTTGCCTCTGGTTCAACCCTGCCCAGG
+CTCTGTGTTGACTGCCAACCACTTTGGATTCAAGAAGCTTCCTCCCTGGGAGCTGCTATT
+TTTCCAAAATTCACATTGTTAAATAAAATATTTTGGGCTCTCAAGTG
+>TR4|c4_g1_i5 len=7847 path=[10147:0-59 @10231@!:60-683 10218:684-1531 10145:1532-1555 10237:1556-1600 @10224@!:1601-2448 10102:2449-2451 10103:2452-2466 10223:2467-2764 10131:2765-2788 10215:2789-3410 10245:3411-3729 @10235@!:3730-4489 10241:4490-5675 10251:5676-5676 10135:5677-5691 10240:5692-5692 @10234@!:5693-6191 10252:6192-6197 10256:6198-6205 10258:6206-6206 10220:6207-6212 10212:6213-6272 10249:6273-6350 10248:6351-6713 10226:6714-7058 10255:7059-7059 10075:7060-7072 10076:7073-7 [...]
+GGACCCCCCCCAGCGGGGAATCCTCGGAGCATGTTCGGGGCCAACAGCCCTTACAGGAAG
+CCAGCCAATAATGCACCAGTGGCTCCCATAACACGCCCATTGCAGCCAGTAACGGATCCG
+TTTGCTTTTAATAGACAGACTCTTCAAAACACACCAGTAGGAAGTTCATCCAAAAGCAGC
+CTGCCCAATTTGCCTGGCCCAGCCCTCTCTGTTTTTTCTCAGTGGCCTGGTTTGCCTGTG
+ACTCCCACAAATGCTGGGGATAGCTCCACAGGATTGCATGAGCCTCTGTCAGGAACTCTG
+TCACAGCCTAGAGCAGATGCCAGTCTATTTCCTCCTGCATCTACCCCTTCTTCACTCCCT
+GGGCTGGAGGTGAGCAGGAATGCTGAGGCTGATCCCAGCTCAGGACATGAAGTCCAGATG
+CTGCCACATTCAGCTCACTACATTCCAGGAGTGGGTCCTGAGCAGCCTCTCGGGGGCCAA
+ATGAATGACAGTGGGTCCGGGCCTGACCAACCCATGAATAGGCATGCCCCCCATGATGGT
+GCCGTGACCCACGCAGCATCTCCTTTCCTCCCTCAGCCACAGATGCCAGGTCAGTGGGGG
+CCTGCACAAGGAGGCCCTCAGCCCTCCTATCAGCATCACTCACCCTACCTGGAGGGACCT
+GTTCAGAACATGGGGCTCCAGGCTGCCAGCTTGCCCCATTTTCCCCCTCCATCTAGTCTA
+CACCAGGGACCTGGCCATGAGTCTCATGCCCCACAAACATTTACTCCAGCATCCTTGGCC
+AGTGGTGAAGGGAATGAGATAGTTCACCAGCAAAGTAAAAATCACCCATTGAGTAGCTTC
+CCCCCTAAACACACTTTTGAGCAGAATTCCAGAATTGGGAATATGTGGGCAAGCCCAGAG
+TTGAAGCAGAATCCGGGAGTGAATAAAGAGCATCTGCTAGACCCTGCCCATGTCAATCCC
+TTCACTCAGGGAAATAGTCCTGAAAACCAGGCGCATCATCCCCCAGTGGCAGCAACTAAC
+CATGCCCTGCAAGAAGCAGCCTCTGGAGCTCTCTCAATGTTTTTTCAAGGGGAAGAGACA
+GAGAATGAGGAAAATCTCTCATCTGAAAAAGCAGGCCTCGATAAGAGATTGAACTTGGAT
+AGCTTTTCTTCTACCTCCAGACTGGGCCATCCACCACCACCTGGAGCTAGTGGTGTCTAC
+CAGGCCTTTCCTAGAGGCCCTAGCAGTGAGGCTGCGCAGGAAGGAGATGCGCAACCTTAT
+TTTTCGCAGTCTGTGGGCGTCCGTCTTGACAAACAGAGCACTGTGCCCCCTGCTAATGAT
+GCATGGGGTGATGTTCCGGGGACCGGGACCCGCTGTGCCAGTGGGCCACAGTGTGAGAAT
+GTTGAGAACTTAGAATTTGTTCAGAATCAAGAAGTTTTGCCCCGTGAGACCCTGAGTGTG
+GATCCCTTCCCCCTGAGTGATCAGATCCGATATGGGCCCCTTCCTGGGCCAGCTGCCTCC
+AGGCCTGCTACTGTGGGCCTCACCAGAGGTGGGGGGCTAAATCTTGAGGCCCCAGACACA
+CCACTGCACCCTACACGACCTGACAGTGTGTCATCCAGCTACAGCAGCCATAGCCACAGA
+AGTCCTCCTGGGTCAGCCAGACCCCAAGAATTGGTGGGCACATTCATTCAGCAAGAAGTT
+GGGAAACTTGAAGATGATACTTCAGGGAGTTTTTTTAAGCAAATTGATTCTTCTCCTGTT
+GGAGGTGAAACAGATGAGGTGACTGGGAGCCAAAATTGCTGCAGCAGTCTGTCCCAGCCT
+TCAACCCCAAGCCCTCCAAAACCTACAGGAGTATTCCAAACAAGTGCAAACAGTTCTTTT
+GAGCCAGTAAAATCCCACTTGGTTGGAGTGAAACCAGTTGAAGCAGATCGTGCCAACATG
+GTGGTTGAAGTGAGAGGGACCCAATACTGTCCGAAGAAGCGCAGGGCAGCTGTTGCACCA
+CCTGATGCTACCTCAGGAAACCTGGAACAGCCACCAGACAACATGGAGACCCCGTGTGCA
+CCTCAGGCCTGCCCTTTGCCTCTTAGCACCACTGGAGAGGCTGGGCAACTGGTTTCAAAC
+ACGGCAGGGACACCCCTGGATACTGTGCGCCCAGTGCCTGATAAGAGGCCCTCAGCCAGG
+GCCCAGGGACCTGTGAAGTGTGAGAGCCCAGCAACAACTCTGTGGGCACAAAATGAGCTG
+CCAGATTTTGGTGGCAATGTCCTTCTAGCCCCTGCTGCCCCTGCACTTTATGTTCCTGTA
+AAACCAAAACCTTCAGAGGTTGTTCATCATCCAGAAAAGGGAATGTCTGGACAGAAGGCC
+TGGAAACAAGGGTCTGTGCCACCTTTGCAGAACCAAGACCCTCCTGGTGCTTCTGAGAAC
+CTTGAGAACCCTCCCAAGGTAGGAGAAGAGGAGGCCCTTCCAGTGCAGGTAACAAAAGAT
+GCTCAGGACCAGCATAGACTAGAAAGAGCCCAGCCAGAGCTGGTGCCTCCTCGGCCACAG
+AATTCTCCCCAAGTGCCCCAAGCATCGTGTCCAGAGCCTTCAAATCCTGAAAGCCCACCC
+ACACAAGGACAGTCTGAAAGCTTGGCCCAGCCACCAGCAAGTCCAGCTTCAGTCAACACA
+GGCCAGCTGCTGCCTCAGCCACCACAGGCTTCCAGTGCATCCGTTACATCTACCAACTCC
+AGCCAGGCAGCTGTGCGGTCAGAGCAGCTGTGGCTACACCCACCACCTCCTAATACTTTT
+GGCCCAGCACCTCAAGACTTGGCATCCTACTACTATTACAGACCCCTGTATGATGCCTAC
+CAGTCTCAGTACCCTTCACCGTACCCGTCAGATCCTGGGACAGCCTCGCTGTACTACCAG
+GATATGTATGGCCTGTATGAGCCTCGTTACAGACCCTATGACAGCTCAGCATCTGCTTAT
+GCCGAGAACCACCGCTATTCTGAGCCTGAGCGGCCCAGCTCCCGTGCAAGTCACTATTCC
+GACCAGCTTGCTCCCAGGCAAGGATATCCTGAAGGATACTATAATTCCAAGAGTGGATGG
+AGCAGTCACAGTGATTACTATGCAAATTATTACTCTGGCCAGTATGATTATGGAGACCCC
+AGCCGCTGGGATCGTTACTATGGGTCTCGCCTTAGGGATCCTCGCACCTGGGACCGGAGG
+TACTGGTATGACTCTGAACATGACCCATACAGGAAGGACCACTATGCTTACAGTGACAGG
+CCTGAGAAATGTGATGATCACTGGAGGTATGACCCTCGCTTCACTGGGAGCTTCGACGAT
+GACGCTGAGATCCACAGGGACCCCTATGGAGAAGAAGCAGACAGACGCAGCATCCACAGT
+GAGCACTCGGCACGGAGCCTGCGCAGCACTCACAGTCTGCCCAGCCGCCGCAGCAGCCTC
+AGCTCCCATTCACACCAGAGTCAGATTTACAGAAGCCACCATGTGACTGGCGGTTCCTTT
+GAGGCCCCTCATGCCCCAGGCTCATTTCATGGTGATTATGCCTATGGCACATATGCCAGC
+AATTTCAGCGGTGCCCATGGTTTTCCAGAGTACAGCTACCCTGCAGACACCTCCTGGCCT
+GCTGTGGAGCAAGTTCCATCAAGACCGACCTCTCCTGAGAAGTTTACGGTGCCTCATGTC
+TGTGCCAGGTTTGGTCCTGGTGGTCAGCTCCTTAAAGTGATTCCCAACCTGCCTTCAGAA
+GGACAGCCTGCACTGGTGGAGATCCACAGCTTAGAGACCTTGCTGCAGCACACACCTGAG
+CAGGAAGAGATGCGCTCCTTCCCAGGACCTCTCGGCAAAGATGATACCCACAAAGTAGAT
+GTTATTAACTTTGCACAGAACAAAGCAACAAAATGTTTGCAGAATGAAAGTTTAATTGAT
+AAAGAGTCTGCAAGTCTTCTTTGGAAATTCATTATTCTGTTATGCAGACAGAATGGGACT
+GTTGTGGGAACAGACATTGCAGAGCTTTTGTTACGGGACCATAGAACTGTATGGCTTCCT
+GGGAAGTCACCCAATGAGGCAAACCTGATAGATTTTACCAATGAGGCTGTGGAACAAGTG
+GAAGAGGAGGAGTCAGGGGAGGCCCAGCTCTCATTTCTCACAGACAGTCAGACAGTGACC
+ACCAGCGTGCTGGAGAAGGAGACTGAGCGGTTCCGTGAGCTCTTGCTGTATGGCCGGAAG
+AAGGATGCTCTGGAGTCTGCCATGAAAAATGGCTTATGGGGTCATGCTCTTCTGCTTGCA
+AGTAAGATGGACAGCCGGACACATGCCCGTGTCATGACCAGGTTTGCCAACAGTCTTCCA
+ATCAATGACCCCCTGCAGACTGTCTACCAGCTCATGTCTGGACGGATGCCTGCTGCATCC
+ACGTGTTGTGGCGATGAGAAGTGGGGAGATTGGAGGCCACATCTTGCAATGGTTTTGTCC
+AACCTGAACAACAACATGGATGTTGAATCTAGGACCATGGCTACGATGGGTGATACTCTA
+GCATCAAAAGGCCTGTTGGATGCTGCACACTTCTGCTACCTGATGGCCCAGGTTGGATTT
+GGGGTTTATACAAAGAAAACTACAAAACTTGTCTTGATAGGCTCAAATCACAGTTTGCCC
+TTTTTAAAGTTTGCCACCAATGAAGCCATTCAAAGGACGGAGGCTTATGAGTATGCTCAG
+TCCCTTGGGGCACATACCTGTTCCTTACCTAACTTCCAGGTGTTTAAATTCATCTACTTG
+TGCCGCCTGGCTGAAATGGGACTTGCCACACAGGCCTTCCACTACTGCGAAGTAATAGCC
+AAGAGTGTCCTGACACAGCCTGGTGCATACTCTCCAGTACTGATTAGCCAGTTGACTCAG
+ATGGCTTCCCAGTTACGCCTCTTCGATCCTCAACTGAAGGAGAAGCCAGAAGAGGAGTCC
+TTTGTGGAGCCTGCCTGGTTGGTGCAGCTGCAGCACGTGGAGAGGCAGATCCAGGAGGGC
+ACTGTGCTGTGGAGCCAGGATGGAACTGAACCCCAGCAGTGTCGCATTACATCGGGCTCT
+GAGGTGGAGCAGTCAGATGGCCCTGGACTCAACCAGCAGGCAGGGCCACAGGCCGACAAC
+CCTCTACTGATGCCAAGCACTGAGCCTTTGATGCATGGCGTGCAACTGCTGCCCACAGCT
+CCTCAGACATTGCCTGATGGCCAGCCTGCTCACCTTTCCAGGGTGCCGATGTTCCCAGTG
+CCAATGTCTCGTGGGCCCCTGGAGCTGAGTCCTGCCTATGGACCCCCAGGATCTGCACTT
+GGCTTCCCAGAATCCTCCAGATCTGATCCTGCAGTGCTGCATCCTGGGCAGGCCCTGCCA
+CCCACTACACTAAGTCTCCAGGAAAGTGGGCTTCCACCCCAGGAGGCCAAAAGTCCAGAC
+CCAGAAATGGTGCCACGGGGCTCACCTGTCAGACACTCCCCTCCGGAGCTCAGTCAAGAG
+GAGTTTGGCGAGAGCTTCGCTGACCCGGGCTCTTCCAGAACAGCACAGGACTTGGAAACC
+TCCCCAGTGTGGGATCTTGGCAGCTCCAGTTTGACACGTGCACCATCTTTGACATCTGAT
+TCTGAAGGGAAGAAACCTGCACAGGCTGTCAAAAAGGAGCCCAAGGAGCCCAAGAAGACT
+GAGTCCTGGTTCTCTCGTTGGCTGCCTGGAAAAAAAAGGACAGAAGCTTATCTACCAGAT
+GACAAGAACAAATCAATTGTTTGGGATGAAAAGAAAAACCAGTGGGTGAATTTGAATGAA
+CCAGAGGAGGAGAAGAAGGCTCCACCCCCACCTCCAACATCGTTCCCCAGGGTTCCCCAG
+GTGGCTCCCACTGGGCCTGCAGGACCACCCACGGCCTCCGTGAATGTGTTTTCTAGAAAA
+GCAGGTGGGTCCAGAGCTCGCTATGTGGATGTTCTAAACCCAAGTGGAACACAGCGGAGT
+GAACCAGCTCTTGCTCCTGCAGATTTCTTTGCTCCTCTCGCCCCACTGCCAATTCCTTCT
+AACTTATTTGTACCAAACCCAGATGCAGAAGAGCCACAACCTGCAGATGGGACTGGCTGT
+AGGGGACAGGCACCAGCTGGGACTCAGTCTAAGGCAGAGTCCACCCTGGAACCCAAGGTG
+GGAAGTTCTACAGTATCAGCCCCTGGACCTGAGCTCTTACCCTCCAAACCAGATGGCTCC
+CAAGGAGGAGAGCTCTCGCGTTGTAGCTCTCTGAGCTCGCTCTCACAGGAAGTGAGCCGG
+CATTTCCATCAGGCTCCTGGAGACCATTGTCCTACAGGGGCCCCTCATGGTGGGTCTGTG
+CCCTTTTACAACCCTGCTCAGTTGGTGCAGGCTTCTGTCACCTCGGGAAATTCAAGGCCA
+GGGAGGATTGGCCAAAGAAAATATGCGGCATTGAACTAGGATTGCTGCTGGATTCTTATT
+TGGAACCCTGAGATGATTAGATAACTGTTCTTCACCAAGAACCAACTAGCTGCCTCAGGT
+CTCGTGGATCCCAGATGGACATGGCAGTAACTCAGAGCCGGTCATACTGTGTGTCTCCTT
+CCTTGCAGCCTATGTATATGAATGATTGAAAAATTGATTTCAAGGTTCCTTTCAAATGCT
+GGATAGAATGAATCTAATTCAAAGTCTTTTATGTAAAAGAACAATGTTTCTTTTTTAGTC
+ACTTTAGACAAATTAAGGTTTGAGCCACTTGAGAATATCCCCGCAGAGAGGCTAGGCAGG
+GATTCACTACAGGAGAGCACAGTTACTTGGACACCAAGGCCTTTCTCACCTGAGAAATGG
+TGCAAACCAACCAGGGATCCTTAGGCTACTGAGAAGGCTGTCTGCTTACCTGGAGAGGAC
+TGACTGCTGGGATGTCTGGCCTAAGAGGAGCCTCAAACTGCACTGGGCAACTGTGCCTTG
+TCCTGTGAACTGGGGAGTACATGCCAGCTCCTCAAAGGGTCACCAGATGGCAGCGGCTCC
+CAGGCTGGGGAGGAAGTGGTTACAAGGGCATGTCTCTCCAACATTTCCAGCCTCACTCCA
+TTTTCTGTGGCCTCATTAGTGCTGGGTGCGTTTTTTTTTTGCTCCGAGCTTTCCGTCATG
+GCTCAGTCACTGGGGAGAGCCCCAGGGAGCTGATATTCTGAAGCTGCTGATCTGATTAAC
+CAGGTCAAAAACTGGCTGTGTGCTGCAACGTACTGCCCTCCTAGCCAGGAGTCTGTATGG
+AGCCCTCTAGCTGACTCAATGTCACCTGCAGACAGCACTTAAAGCCTTGGTGGTATCTTG
+GAGTGGCTTACGGTGTCCTAGCGCACACTCTGGAACCTTGCATCTCTACCCCAAAGCCCA
+CCAGGGACCTTCAGCAGCGACTCACTGGCTCACCCATATCACTTCAAGGAGCTGCCACCA
+CATAAGAGTCAAAGCTTTAAGGCTTCACTGACTGTTCCTAAAACTATCCTTACACTCTAA
+AGAGGAAGGGAAAGAGAGTTAAATATTTAAAAATCAGCAGGTAGAAAACATAAATGGTTT
+GTTTGGTATTAAATTTAGAAATTGTAGAACATGGAATTAGTACAGCCCTTCCCGGTTTTC
+TGGTTCCTTGCATCATCTAGGAAAGACTCACAGAATGGCTTCCAGGACGTTCCATAGATG
+AGTGTACTTGGACCCTCCTGTTCCTGTCATTAAGAAAGGCCTGTCCCTGTGGGTCAGTAG
+CAACTTGTGTCCTTGCTGGGACCAGGCAGGACCCTTGCCTCTGGTTCAACCCTGCCCAGG
+CTCTGTGTTGACTGCCAACCACTTTGGATTCAAGAAGCTTCCTCCCTGGGAGCTGCTATT
+TTTCCAAAATTCACATTGTTAAATAAAATATTTTGGGCTCTCAAGTG
+>TR4|c4_g1_i6 len=1068 path=[10191:0-221 10212:222-281 10249:282-359 10248:360-722 10226:723-1067] [-1, 10191, 10212, 10249, 10248, 10226]
+TTTTTTCCTTTTCCGGGGGGATGGGGGGTTTTTTTAACAAAAGGGGGGGGGGGGGGCATT
+TGATGCTACCTCTGGCTGTCTTCATTTGAGTGATATTGATTCTAATGGCATCATAAAGCT
+TTTAAAACCAGCTGACAGCTTGGAGCAATGGAGCATGCTGATCTTCATGTCTGTATCTTG
+TGTGTTCTTGCTGTTCCATAGCTCTCGCGTTGTAGCTCTCTGAGCTCGCTCTCACAGGAA
+GTGAGCCGGCATTTCCATCAGGCTCCTGGAGACCATTGTCCTACAGGGGCCCCTCATGGT
+GGGTCTGTGCCCTTTTACAACCCTGCTCAGTTGGTGCAGGCTTCTGTCACCTCGGGAAAT
+TCAAGGCCAGGGAGGATTGGCCAAAGAAAATATGCGGCATTGAACTAGGATTGCTGCTGG
+ATTCTTATTTGGAACCCTGAGATGATTAGATAACTGTTCTTCACCAAGAACCAACTAGCT
+GCCTCAGGTCTCGTGGATCCCAGATGGACATGGCAGTAACTCAGAGCCGGTCATACTGTG
+TGTCTCCTTCCTTGCAGCCTATGTATATGAATGATTGAAAAATTGATTTCAAGGTTCCTT
+TCAAATGCTGGATAGAATGAATCTAATTCAAAGTCTTTTATGTAAAAGAACAATGTTTCT
+TTTTTAGTCACTTTAGACAAATTAAGGTTTGAGCCACTTGAGAATATCCCCGCAGAGAGG
+CTAGGCAGGGATTCACTACAGGAGAGCACAGTTACTTGGACACCAAGGCCTTTCTCACCT
+GAGAAATGGTGCAAACCAACCAGGGATCCTTAGGCTACTGAGAAGGCTGTCTGCTTACCT
+GGAGAGGACTGACTGCTGGGATGTCTGGCCTAAGAGGAGCCTCAAACTGCACTGGGCAAC
+TGTGCCTTGTCCTGTGAACTGGGGAGTACATGCCAGCTCCTCAAAGGGTCACCAGATGGC
+AGCGGCTCCCAGGCTGGGGAGGAAGTGGTTACAAGGGCATGTCTCTCCAACATTTCCAGC
+CTCACTCCATTTTCTGTGGCCTCATTAGTGCTGGGTGCGTTTTTTTTT
+>TR5|c0_g1_i1 len=436 path=[439:0-171 440:172-195 441:196-435] [-1, 439, 440, 441, -2]
+TGTGTATGGCTTGTTCCAGGTGAAAGTGAGGCCAGGACGAGACAAGTAAGCTTTGGGGGC
+TCCTGCCAGTTCTTGGATAGGGTAACTTTTGGGGGATGGATGGCAGGCTTAGGCGAGGCC
+TAATGTTCCACGCAGCCCCTAGGCTATTATGAATCTGCGTCCATCTGAGCCTCAGTCCCA
+GCTGCTTCTTAGGGCATAACTCCCAGGTTACTAATCTTTGTGGTTGCATGAAGAAACGGC
+TTGTTCTGTGACCTGCTGCTCTAGGGTTGAGCAAGCTCCTGGAGGCATCAGCATCACCTT
+CTTTTGGCACAACAGGGTTGTGGTTGGGGCTAGAGCAACCTAGATGGGACGAAGAACCCT
+AACCTCTGGGCAGTGGCCCATTTCCTATGGGGCTCAGCAGGTGTGCAGCTGAGTGAAGTT
+GAGGCCAGCTCTTTTT
+>TR6|c0_g1_i1 len=284 path=[324:0-37 325:38-283] [-1, 324, 325, -2]
+CTGCTGCCCTAGATTCCTTGGGTCAGACCTGTGCTGTCCGTTGTCTCCGCTGCAGCTAGC
+CTCTGAGAGAGAGGAGTTGGCAGAGATTAGGGTATAATGCCATTAAAATGTGTAGTCGGA
+ATGTAGCTCTGGAGCTAGGCGATTACTGTTCCCATGTTTCTGTTTCCCCTTTAAACACTC
+TTAAAACTCGTACAAAAGCACCTCATTGTCCCAATGTTCAGTATAAGCTGGCAGATAACC
+CTTGCTGGGGTATGGGATCTCCGAGGTCCTTAGCCTCTAGGGTG
+>TR6|c0_g2_i1 len=329 path=[322:0-82 323:83-328] [-1, 322, 323, -2]
+TTTTCTTATATCGCCTACATATTTTCCCAAATCAGCATTACCAAGCTGCTGCCCTAGATG
+CCTTGGGTCAGACCTGTGCTGTCCGTTGTCTCCGCTGCAGCTAGCCTCTGAGAGAGAGGA
+GTTGGCAGAGATTAGGGTATAATGCCATTAAAATGTGTAGTCGGAATGTAGCTCTGGAGC
+TAGGCGATTACTGTTCCCATGTTTCTGTTTCCCCTTTAAACACTCTTAAAACTCGTACAA
+AAGCACCTCATTGTCCCAATGTTCAGTATAAGCTGGCAGATAACCCTTGCTGGGGTATGG
+GATCTCCGAGGTCCTTAGCCTCTAGGGTG
+>TR7|c0_g1_i1 len=6692 path=[7480:0-168 @7569@!:169-1348 7543:1349-1369 7568:1370-1420 @7563@!:1421-3733 7542:3734-4263 7525:4264-4287 7566:4288-4474 @7561@!:4475-5543 7549:5544-5891 7572:5892-5892 7574:5893-5893 7523:5894-6691] [-1, 7480, 7569, 7543, 7568, 7563, 7542, 7525, 7566, 7561, 7549, 7572, 7574, 7523, -2]
+CGGCGTGTGACGCAGTCAGGCCTCTGCGCGCTGCGCCCGAAGCGGCGGTCGGTGGCAGCG
+GCGGCGGCGACGACGGTTTTTCTGGAGGCCGCGCGGTGAGCGGCGGGTGACGGGCGGACC
+TGGGCTCTCACTCCAGACGCACCGCTCTTTCTGAAGCAAACACTTGCTTTGAAGATGTTT
+AACAAATCATTTGGAACCCCCTTTGGGGGTAGTACAGGGGGCTTTGGCACAACGTCAACA
+TTTGGGCAAAATACTGGCTTTGGTACGACTAGTGGAGGAGCATTTGGAACATCTGCATTT
+GGTTCTAGCAACAATACTGGAGGCTTATTTGGAAATTCACAGACCAAACCAGGAGGATTA
+TTTGGTACCAGTTCATTTAGCCAGCCAGCAACCTCCACAAGCACTGGGTTTGGGTTTGGC
+ACATCAACAGGAACATCAAATAGCTTATTTGGAACTGCAAGTACCGGGACCAGTCTTTTC
+TCATCCCAGAACAATGCATTTGCACAAAATAAACCAACTGGCTTTGGGAATTTTGGAACC
+AGTACTAGCAGTGGAGGACTCTTTGGAACTACAAATACCACCTCTAATCCTTTTGGTAGC
+ACATCTGGCTCCCTTTTTGGGCCAAGTAGTTTTACAGCAGCACCTACAGGAACTACCATC
+AAATTTAATCCTCCCACTGGTACAGATACTATGGTCAAAGCTGGAGTTAGCACTAACATC
+AGTACAAAGCATCAGTGTATTACTGCTATGAAAGAATATGAAAGCAAGTCATTAGAGGAA
+CTACGTTTGGAGGATTATCAGGCTAACCGGAAAGGCCCACAGAACCAAGTGGGAGGAGGC
+ACCACGGCTGGCTTATTTGGGTCTTCTCCAGCAACTTCCAGTGCAACAGGGCTCTTCAGC
+TCCTCCACCACTAATTCAGCCTTTTCATATGGTCAGAACAAAACTGCCTTTGGAACTAGC
+ACAACTGGATTTGGAACAAATCCAGGTGGTCTCTTTGGCCAACAGAATCAACAGACTACC
+AGTCTCTTCAGCAAACCATTTGGCCAGGCTACAACCACCCCGAATACTGGCTTTTCCTTT
+GGTAATACCAGCACCCTTGGACAGCCAAGCACCAATACTATGGGCCTATTTGGAGTAACC
+CAAGCCTCACAACCAGGAGGTCTTTTTGGGACAGCTACAAACACCAGCACTGGGACAGCA
+TTTGGGACAGGAACAGGTCTCTTTGGGCAGCCCAATACTGGATTTGGTGCAGTTGGTTCG
+ACCCTGTTTGGCAATAACAAGCTTACAACTTTTGGAACCAGCACAACCAGTGCTCCTTCA
+TTTGGTACAACCAGTGGCGGGCTCTTCGGTAACAAACCAACCCTGACTTTAGGAACCAAT
+ACAAACACTTCCAATTTTGGGTTTGGCACAAATAACAGTGGGAGCAGTATTTTTGGAAGT
+AAGCCAGCAGCTGGAACTTTGGGAACTGGACTTGGTACAGGATTTGGAACAGCTCTTGGT
+GCTGGACAGGCATCTTTGTTTGGAAACAACCAACCTAAGATTGGAGGGCCTCTTGGTACA
+GGAGCCTTTGGGGCCCCTGGATTTAATACTTCGACAGCCATTTTGGGCTTTGGCGCCCCC
+CAGGCCCCAGTAGCTTTGACAGATCCAAATGCTTCTGCTGCCCAGCAGGCTGTTCTCCAG
+CAGCACCTCAATAGCCTAACATACTCACCCTTTGGAGACTCCCCCCTCTTCCGGAATCCT
+ATGTCAGATCCTAAGAAGAAAGAAGAGAGACTGAAACCAACCAATCCAGCTGCTCAGAAA
+GCTCTTACAACACCTACTCATTATAAACTTACACCTCGCCCTGCTACCAGAGTCAGGCCA
+AAGGCTTTGCAAACAACAGGCACAGCCAAATCACATCTCTTTGATGGGCTGGATGACGAT
+GAACCATCTCTAGCCAACGGAGCATTCATGCCTAAAAAGAGCATCAAGAAGTTGGTTTTG
+AAAAATCTCAACAATAGCAATCTCTTTTCTCCTGTTAATCATGATTCAGAAGATCTAGCT
+TCACCCTCTGAGTATCCAGAAAATGGAGAAAGATTTAGCTTCCTGAGCAAACCTGTTGAT
+GAGAACAATCAGCAGGATGGAGAAGATGACTCTCTTGTATCACGATTTTACACTAATCCT
+ATTGCCAAACCCATTCCACAAACTCCAGAGAGTGTTGGAAACAAAAATAACAGTAGCAGC
+AATGTGGAAGATACCATTGTTGCCTTGAACATGCGTGCTGCTTTGCGCAATGGATTGGAA
+GGAAGCAGTGAAGAGACGTCATTCCATGATGAGTCATTGCAAGATGACCGAGAAGAGATA
+GAAAATAATGCTTACCACATACACCCAGCAGGCATTGTTCTCACAAAAGTTGGTTATTAC
+ACTATCCCATCTATGGATGACCTTGCTAAAATTACCAACGAGAAGGGAGAATGCATTGTT
+TCTGACTTCACCATTGGTCGTAAAGGATATGGCTCAATCTATTTTGAAGGAGATGTGAAT
+TTGACAAATCTAAATTTGGATGATATTGTGCATATCCGAAGGAAAGAAGTTATTGTCTAT
+GTAGATGATAACCAAAAGCCACCTGTGGGTGAAGGGCTAAATAGGAAGGCTGAAGTTACT
+TTGGATGGAGTTTGGCCAACAGATAAAACATCCCGGTGTTTAATAAAGAGTCCAGATCGA
+CTTGCTGATATCAACTATGAGGGGAGATTAGAAGCAGTCTCAAGAAAGCAAGGGGCCCAA
+TTCAAGGAGTATCGGCCTGAAACTGGTTCTTGGGTATTTAAGGTCTCCCATTTTTCCAAG
+TATGGCCTTCAGGATTCTGATGAAGAGGAGGAGGAACACCCACCCAAAACGACTTCAAAG
+AAGCTGAAGACTGCCCCTTTGCCCCCTGCAGGCCAGGCAACCACTTTCCAGATGACTCTT
+AATGGCAAGCCTGCACCCCCACCTCAGAGCCAGAGCCCAGAAGTGGAGCAGTTAGGCAGG
+GTTGTGGAACTGGACAGCGACATGGTAGATATCACCCAGGAGCCAGTTCCAGATTCTGTG
+TTAGAAGAGAGTGTGCCCGAGGATCAGGAGCCTGTGTCTGCTTCAACGCATATTGCATCT
+TCACTGGGAATTAATCCACATGTTTTACAGATCATGAAAGCATCATTGCTTGTTGACGAA
+GAAGATGTAGATGCCATGGATCAACGCTTTGGTCACATCCCTTCCAAAGGAGAGACTGTC
+CAGGAAATCTGTTCTCCTAGACTCCCCATTTCAGCCTCCCACTCATCAAAATCCCGCTCC
+ATAGTTGGTGGGTTGCTGCAATCAAAATTTGCAAGTGGAACTTTTCTTTCACCAAGTGCC
+TCCGTGCAAGAATGTCGCACTCCCAGGACATCATCTCGCATGAACATCCCATCCACATCC
+CCCTGGTCTGTCCCTCTGCCCCTGGCCACTGTGTTCACAGTGCCCAGCCCAGCCCCTGAG
+GTTCAGCTAAAAACAGTGGGGATACGAAGGCAACCAGGCCTAGTCCCTCTTGAAAAATCC
+ATTACATATGGCAAGGGGAAGCTCTTGATGGACATGGCCCTATTCATGGGACGTTCATTT
+CGGGTTGGTTGGGGTCCCAACTGGACTCTTGCTAATAGTGGAGAACAACTGCATGGCTCC
+CATGAACTGGAAAATCATCAGGTTGCCGATTCTATGGAATATGGATTCCTGCCCAATCCA
+GTAGCTGTTAAATCTCTATCTGAATCCCCATTCAAAGTTCATTTGGAAAAACTCGGCTTA
+AGACAGAGGAAGCTGGATGAAGATCTGCAGTTATACCAGACACCTCTAGAGCTCAAATTA
+AAACATAGCACTGTCCATGTAGATGAGCTGTGTCCTCTCATTGTCCCCAACCCTGGGGTT
+TCAGTCATTCATGATTATGCAGATTGGGTTAAGGACTCACCTGGAGATTTCCTGGAACTA
+CCAATTGTGAAGCACTGGAGCCTGACATGGACATTATGTGAAGCCCTATGGGGCCACCTG
+AAGGAGCTTGACGGCCAGCTGGATGAGCCCAGCGAATACATTCAGACTCTGGAGCGTAGA
+AGAGCTTTTTCCCGCTGGCTGTCACATACCGCTGCACCTCAGATTGAAGAGGAAGTCTCC
+TTAACCCGCAGAGACAGTCCCGTAGAGGCTGTCTTCAGCTACCTCACGGGCAGTAGGATT
+AGTGAGGCCTGTTGTCTGGCACAGCAGTCAGGTGATCATCGCCTTGCCCTTCTTCTGTCT
+CAGTTGGTGGGAAGCCAGTCAGTCCGGGAGCTGCTCACCATGCAGTTGGCCGATTGGCAT
+CAGCTCCAGGCTGACTCCTTCATCCACGATGAGCGATTGCGCATATTTGCCCTGTTGGCT
+GGAAAACCGGTGTGGCAGCTCTCAGAGCAGAAACAAATCAATGTTTGCTCCCAGCTAGAT
+TGGAAACGAACACTTGCTATCCATCTTTGGTATTTGCTTCCGCCAACCGCCTCCATTTCC
+AGGGCTCTCAGCATGTATGAAGAAGCATTTCAGAATACTCCTGAGGGTGATAAATATGCC
+TGCTCCCCTCTTCCTTCTTACCTGGAGGGCTGCGGCTGTATGGTAGAGGAAGAAAAAGAC
+TCCCGGAGACCACTTCAAGATGTTTGCTTTCATCTTCTAAAACTCTACAGTGACAGACAT
+TATGAGCTCAATCAGCTATTAGAACCTCGAAGCATAACTGCAGATCCTTTGGACTACCGC
+CTGAGCTGGCACCTTTGGGAAGTGCTACGTGCTCTTAACTATACCCATCTCTCAGAACAG
+TGTGAAGGTGTGCTACAGGCCAGTTATGCTGGCCAACTGGAAAGTGAAGGACTCTGGGAG
+TGGGCCATCTTTGTCTTCCTACACATTGACAACTCGGGCATGCGTGAGAAGGCTGTTCGA
+GAGCTGCTGACAAGGCACTGCCAACTGTCAGAGACCCCTGAGTCTTGGGCTAAGGAGGCG
+TTCCTCACACAGAAGCTTTGTGTGCCTGCTGAGTGGATTCATGAGGCCAAAGCAGTTCGA
+GCACACATGGAATCCAATAAGCACTTGGAGGCCCTCTATTTATTTAAAGCTGGTCACTGG
+AACCGCTGCCACAAACTAGTCATTCGTCACCTAGCTTCTGATGCCATTATTAATGAGAAC
+TATGACTACCTGAAAGGATTCTTAGAAGATCTGGCACCTCCAGAGCGCAGCAGCCTCATC
+CAGGACTGGGAAACATCTGGGCTCGTTTACCTGGATTATATTCGAGTGATTGAAATGCTC
+CACCGTATTCAGCAGGTGGATTGCTCAGGTTATGAACTAGAGCACTTACATACCAAAGTG
+ACTTCACTGTGCAATCGGATAGAACAGATTCCGTGTTACAATGCCAAGGATCGCCTGGCT
+CAATCAGATATGGCCAAGCGGGTAGCCAACTTACTGCGGGTAGTGCTGAGCCTTCAGCAT
+GCTCCTGATGCCACCTCCAACTCAACGCCAGACCCTCAGCGAGTCCCTTTGCGTCTTTTG
+GCTCCCCACATTGGCAGGCTCCCCATGCCTGAGGACTACGCCTTGGAGGAACTGCGAGGC
+CTTACCCAGTCCTACCTTCGAGAACTGACTGTTGGGAGCCAGTGAGCTTGGCTCTTGCCA
+CCACACTCATGCCCACTCACACTCGCCACACCACAGTCCCCAGCACTGTTTTAGTTGACA
+CTTTGCCAATCTCTGGGAATCCTCCATTCCTTTCTGCTGCATCTTCTAGTTATTCAGGGG
+TTTTCCTAATACTGAGCATAGCCTACAATAGCTCATAAGGGCTTCTGGAACAACAACAAA
+GAAGACAGGTCTCCATTTATCAACCTCAAGACCTTTTTTTTTCTTTTTCTTTTTTTTTTT
+TTTTTTTTTTTTTTCTTTTGAAAAATGGTCAATAAAACCTCTTTGGCAGAACCTCCCAAA
+ACCTAGGGAATTCTTTTCCACACCCAGCGTTCTGGCTCTCACCCCATGCCAGCATCTAAC
+CTCCACCACTGCGATCCTTTTGTACCGTGACTGTTTGACAGACATCTGGCATATGACTGA
+CTGACCTTCCTTACAGATTTGTCCCTCAAGTAGATTTCTCAGTAACGGTGGATTTTGGAG
+TCAAAAGAGAGTTGGACCTTGTTCTTTGGTAAATTTAAGATAGAAGGGCTGTCTGCCATA
+GAGGTAGAGATCTTCAAGGCCTTTACTCATGCCCTGTGTATCCTTTGGACACCATACTAT
+CATGCGCAGTGGCCCCAAGCCACCGAGAACCAGTCTGAGAAGCTCCAGATTCGCTCAGGC
+CCTTGATCATCAGTCGTCGTCGTCTTCGATTTGCCAGAGGAGTTTAGATGAAGAATGTCA
+AGGATGTTCCTCCCTGCCCTCCCATCTAGCCAAGAACATTTCCAAGAAGATAAAACTGTC
+ACTGAGACAGGTCTGGATGCGCCCTAGGGGCAAATAGAGAAGGCCTTTACCACATTGCTG
+CTGGCTATAGGAAGTCCCAGGTACTAGCCTGAAACAGCTGATATTTGGGGCTGTCACAGA
+CAATATGGCCACCCCTTGGTCTTTATGCATGAAGATTATGTAAAGGTTTTTATTAAAAAA
+TATATATATATATATAAATGATCTAGATTATTTTCCTCTTTCTGAAGTACTTTCTTAAAA
+AAATAAAATTAAATGTTTATAGTATTCCCGGT
+>TR7|c0_g1_i2 len=3918 path=[7480:0-168 @7569@!:169-1348 7494:1349-1369 @7563@!:1370-3682 7570:3683-3695 7567:3696-3731 7562:3732-3755 7556:3756-3827 7571:3828-3831 7573:3832-3845 7554:3846-3855 7548:3856-3858 7539:3859-3882 7436:3883-3917] [-1, 7480, 7569, 7494, 7563, 7570, 7567, 7562, 7556, 7571, 7573, 7554, 7548, 7539, 7436, -2]
+CGGCGTGTGACGCAGTCAGGCCTCTGCGCGCTGCGCCCGAAGCGGCGGTCGGTGGCAGCG
+GCGGCGGCGACGACGGTTTTTCTGGAGGCCGCGCGGTGAGCGGCGGGTGACGGGCGGACC
+TGGGCTCTCACTCCAGACGCACCGCTCTTTCTGAAGCAAACACTTGCTTTGAAGATGTTT
+AACAAATCATTTGGAACCCCCTTTGGGGGTAGTACAGGGGGCTTTGGCACAACGTCAACA
+TTTGGGCAAAATACTGGCTTTGGTACGACTAGTGGAGGAGCATTTGGAACATCTGCATTT
+GGTTCTAGCAACAATACTGGAGGCTTATTTGGAAATTCACAGACCAAACCAGGAGGATTA
+TTTGGTACCAGTTCATTTAGCCAGCCAGCAACCTCCACAAGCACTGGGTTTGGGTTTGGC
+ACATCAACAGGAACATCAAATAGCTTATTTGGAACTGCAAGTACCGGGACCAGTCTTTTC
+TCATCCCAGAACAATGCATTTGCACAAAATAAACCAACTGGCTTTGGGAATTTTGGAACC
+AGTACTAGCAGTGGAGGACTCTTTGGAACTACAAATACCACCTCTAATCCTTTTGGTAGC
+ACATCTGGCTCCCTTTTTGGGCCAAGTAGTTTTACAGCAGCACCTACAGGAACTACCATC
+AAATTTAATCCTCCCACTGGTACAGATACTATGGTCAAAGCTGGAGTTAGCACTAACATC
+AGTACAAAGCATCAGTGTATTACTGCTATGAAAGAATATGAAAGCAAGTCATTAGAGGAA
+CTACGTTTGGAGGATTATCAGGCTAACCGGAAAGGCCCACAGAACCAAGTGGGAGGAGGC
+ACCACGGCTGGCTTATTTGGGTCTTCTCCAGCAACTTCCAGTGCAACAGGGCTCTTCAGC
+TCCTCCACCACTAATTCAGCCTTTTCATATGGTCAGAACAAAACTGCCTTTGGAACTAGC
+ACAACTGGATTTGGAACAAATCCAGGTGGTCTCTTTGGCCAACAGAATCAACAGACTACC
+AGTCTCTTCAGCAAACCATTTGGCCAGGCTACAACCACCCCGAATACTGGCTTTTCCTTT
+GGTAATACCAGCACCCTTGGACAGCCAAGCACCAATACTATGGGCCTATTTGGAGTAACC
+CAAGCCTCACAACCAGGAGGTCTTTTTGGGACAGCTACAAACACCAGCACTGGGACAGCA
+TTTGGGACAGGAACAGGTCTCTTTGGGCAGCCCAATACTGGATTTGGTGCAGTTGGTTCG
+ACCCTGTTTGGCAATAACAAGCTTACAACTTTTGGAACCAGCACAACCAGTGCTCCTTCA
+TTTGGTACAACCAGTGGCGGGCTCTTCGGGTTTGGCACAAATAACAGTGGGAGCAGTATT
+TTTGGAAGTAAGCCAGCAGCTGGAACTTTGGGAACTGGACTTGGTACAGGATTTGGAACA
+GCTCTTGGTGCTGGACAGGCATCTTTGTTTGGAAACAACCAACCTAAGATTGGAGGGCCT
+CTTGGTACAGGAGCCTTTGGGGCCCCTGGATTTAATACTTCGACAGCCATTTTGGGCTTT
+GGCGCCCCCCAGGCCCCAGTAGCTTTGACAGATCCAAATGCTTCTGCTGCCCAGCAGGCT
+GTTCTCCAGCAGCACCTCAATAGCCTAACATACTCACCCTTTGGAGACTCCCCCCTCTTC
+CGGAATCCTATGTCAGATCCTAAGAAGAAAGAAGAGAGACTGAAACCAACCAATCCAGCT
+GCTCAGAAAGCTCTTACAACACCTACTCATTATAAACTTACACCTCGCCCTGCTACCAGA
+GTCAGGCCAAAGGCTTTGCAAACAACAGGCACAGCCAAATCACATCTCTTTGATGGGCTG
+GATGACGATGAACCATCTCTAGCCAACGGAGCATTCATGCCTAAAAAGAGCATCAAGAAG
+TTGGTTTTGAAAAATCTCAACAATAGCAATCTCTTTTCTCCTGTTAATCATGATTCAGAA
+GATCTAGCTTCACCCTCTGAGTATCCAGAAAATGGAGAAAGATTTAGCTTCCTGAGCAAA
+CCTGTTGATGAGAACAATCAGCAGGATGGAGAAGATGACTCTCTTGTATCACGATTTTAC
+ACTAATCCTATTGCCAAACCCATTCCACAAACTCCAGAGAGTGTTGGAAACAAAAATAAC
+AGTAGCAGCAATGTGGAAGATACCATTGTTGCCTTGAACATGCGTGCTGCTTTGCGCAAT
+GGATTGGAAGGAAGCAGTGAAGAGACGTCATTCCATGATGAGTCATTGCAAGATGACCGA
+GAAGAGATAGAAAATAATGCTTACCACATACACCCAGCAGGCATTGTTCTCACAAAAGTT
+GGTTATTACACTATCCCATCTATGGATGACCTTGCTAAAATTACCAACGAGAAGGGAGAA
+TGCATTGTTTCTGACTTCACCATTGGTCGTAAAGGATATGGCTCAATCTATTTTGAAGGA
+GATGTGAATTTGACAAATCTAAATTTGGATGATATTGTGCATATCCGAAGGAAAGAAGTT
+ATTGTCTATGTAGATGATAACCAAAAGCCACCTGTGGGTGAAGGGCTAAATAGGAAGGCT
+GAAGTTACTTTGGATGGAGTTTGGCCAACAGATAAAACATCCCGGTGTTTAATAAAGAGT
+CCAGATCGACTTGCTGATATCAACTATGAGGGGAGATTAGAAGCAGTCTCAAGAAAGCAA
+GGGGCCCAATTCAAGGAGTATCGGCCTGAAACTGGTTCTTGGGTATTTAAGGTCTCCCAT
+TTTTCCAAGTATGGCCTTCAGGATTCTGATGAAGAGGAGGAGGAACACCCACCCAAAACG
+ACTTCAAAGAAGCTGAAGACTGCCCCTTTGCCCCCTGCAGGCCAGGCAACCACTTTCCAG
+ATGACTCTTAATGGCAAGCCTGCACCCCCACCTCAGAGCCAGAGCCCAGAAGTGGAGCAG
+TTAGGCAGGGTTGTGGAACTGGACAGCGACATGGTAGATATCACCCAGGAGCCAGTTCCA
+GATTCTGTGTTAGAAGAGAGTGTGCCCGAGGATCAGGAGCCTGTGTCTGCTTCAACGCAT
+ATTGCATCTTCACTGGGAATTAATCCACATGTTTTACAGATCATGAAAGCATCATTGCTT
+GTTGACGAAGAAGATGTAGATGCCATGGATCAACGCTTTGGTCACATCCCTTCCAAAGGA
+GAGACTGTCCAGGAAATCTGTTCTCCTAGACTCCCCATTTCAGCCTCCCACTCATCAAAA
+TCCCGCTCCATAGTTGGTGGGTTGCTGCAATCAAAATTTGCAAGTGGAACTTTTCTTTCA
+CCAAGTGCCTCCGTGCAAGAATGTCGCACTCCCAGGACATCATCTCGCATGAACATCCCA
+TCCACATCCCCCTGGTCTGTCCCTCTGCCCCTGGCCACTGTGTTCACAGTGCCCAGCCCA
+GCCCCTGAGGTTCAGCTAAAAACAGTGGGGATACGAAGGCAACCAGGCCTAGTCCCTCTT
+GAAAAATCCATTACATATGGCAAGGGGAAGCTCTTGATGGACATGGCCCTATTCATGGGA
+CGTTCATTTCGGGTTGGTTGGGGTCCCAACTGGACTCTTGCTAATAGTGGAGAACAACTG
+CATGGCTCCCATGAACTGGAAAATCATCAGGTTGCCGATTCTATGGAATATGGATTCCTG
+CCCAATCCAGTAGCTGTTAAATCGTGAGTTATGTTTATTGATGCTTTGGGGGAATGTCCA
+CATTATAGTTGGGGCTGTTCTGTTATCAAGAAACCCAAGGTCAGCACCCTGCTTTTTGAT
+CTCTCTATATAAATTTTTAACCCAAGTATAAGTATTTCATATGTTATGTACATAGTATCA
+TATATGTTCCTATGTAGTCCCTACAATTAAGTCCTCTGGTAATTATCATACAAAATGTAT
+TGCATTTACACCAAATAA
+>TR7|c0_g1_i3 len=6641 path=[7480:0-168 @7569@!:169-1348 7494:1349-1369 @7563@!:1370-3682 7542:3683-4212 7525:4213-4236 7566:4237-4423 @7561@!:4424-5492 7549:5493-5840 7572:5841-5841 7574:5842-5842 7523:5843-6640] [-1, 7480, 7569, 7494, 7563, 7542, 7525, 7566, 7561, 7549, 7572, 7574, 7523, -2]
+CGGCGTGTGACGCAGTCAGGCCTCTGCGCGCTGCGCCCGAAGCGGCGGTCGGTGGCAGCG
+GCGGCGGCGACGACGGTTTTTCTGGAGGCCGCGCGGTGAGCGGCGGGTGACGGGCGGACC
+TGGGCTCTCACTCCAGACGCACCGCTCTTTCTGAAGCAAACACTTGCTTTGAAGATGTTT
+AACAAATCATTTGGAACCCCCTTTGGGGGTAGTACAGGGGGCTTTGGCACAACGTCAACA
+TTTGGGCAAAATACTGGCTTTGGTACGACTAGTGGAGGAGCATTTGGAACATCTGCATTT
+GGTTCTAGCAACAATACTGGAGGCTTATTTGGAAATTCACAGACCAAACCAGGAGGATTA
+TTTGGTACCAGTTCATTTAGCCAGCCAGCAACCTCCACAAGCACTGGGTTTGGGTTTGGC
+ACATCAACAGGAACATCAAATAGCTTATTTGGAACTGCAAGTACCGGGACCAGTCTTTTC
+TCATCCCAGAACAATGCATTTGCACAAAATAAACCAACTGGCTTTGGGAATTTTGGAACC
+AGTACTAGCAGTGGAGGACTCTTTGGAACTACAAATACCACCTCTAATCCTTTTGGTAGC
+ACATCTGGCTCCCTTTTTGGGCCAAGTAGTTTTACAGCAGCACCTACAGGAACTACCATC
+AAATTTAATCCTCCCACTGGTACAGATACTATGGTCAAAGCTGGAGTTAGCACTAACATC
+AGTACAAAGCATCAGTGTATTACTGCTATGAAAGAATATGAAAGCAAGTCATTAGAGGAA
+CTACGTTTGGAGGATTATCAGGCTAACCGGAAAGGCCCACAGAACCAAGTGGGAGGAGGC
+ACCACGGCTGGCTTATTTGGGTCTTCTCCAGCAACTTCCAGTGCAACAGGGCTCTTCAGC
+TCCTCCACCACTAATTCAGCCTTTTCATATGGTCAGAACAAAACTGCCTTTGGAACTAGC
+ACAACTGGATTTGGAACAAATCCAGGTGGTCTCTTTGGCCAACAGAATCAACAGACTACC
+AGTCTCTTCAGCAAACCATTTGGCCAGGCTACAACCACCCCGAATACTGGCTTTTCCTTT
+GGTAATACCAGCACCCTTGGACAGCCAAGCACCAATACTATGGGCCTATTTGGAGTAACC
+CAAGCCTCACAACCAGGAGGTCTTTTTGGGACAGCTACAAACACCAGCACTGGGACAGCA
+TTTGGGACAGGAACAGGTCTCTTTGGGCAGCCCAATACTGGATTTGGTGCAGTTGGTTCG
+ACCCTGTTTGGCAATAACAAGCTTACAACTTTTGGAACCAGCACAACCAGTGCTCCTTCA
+TTTGGTACAACCAGTGGCGGGCTCTTCGGGTTTGGCACAAATAACAGTGGGAGCAGTATT
+TTTGGAAGTAAGCCAGCAGCTGGAACTTTGGGAACTGGACTTGGTACAGGATTTGGAACA
+GCTCTTGGTGCTGGACAGGCATCTTTGTTTGGAAACAACCAACCTAAGATTGGAGGGCCT
+CTTGGTACAGGAGCCTTTGGGGCCCCTGGATTTAATACTTCGACAGCCATTTTGGGCTTT
+GGCGCCCCCCAGGCCCCAGTAGCTTTGACAGATCCAAATGCTTCTGCTGCCCAGCAGGCT
+GTTCTCCAGCAGCACCTCAATAGCCTAACATACTCACCCTTTGGAGACTCCCCCCTCTTC
+CGGAATCCTATGTCAGATCCTAAGAAGAAAGAAGAGAGACTGAAACCAACCAATCCAGCT
+GCTCAGAAAGCTCTTACAACACCTACTCATTATAAACTTACACCTCGCCCTGCTACCAGA
+GTCAGGCCAAAGGCTTTGCAAACAACAGGCACAGCCAAATCACATCTCTTTGATGGGCTG
+GATGACGATGAACCATCTCTAGCCAACGGAGCATTCATGCCTAAAAAGAGCATCAAGAAG
+TTGGTTTTGAAAAATCTCAACAATAGCAATCTCTTTTCTCCTGTTAATCATGATTCAGAA
+GATCTAGCTTCACCCTCTGAGTATCCAGAAAATGGAGAAAGATTTAGCTTCCTGAGCAAA
+CCTGTTGATGAGAACAATCAGCAGGATGGAGAAGATGACTCTCTTGTATCACGATTTTAC
+ACTAATCCTATTGCCAAACCCATTCCACAAACTCCAGAGAGTGTTGGAAACAAAAATAAC
+AGTAGCAGCAATGTGGAAGATACCATTGTTGCCTTGAACATGCGTGCTGCTTTGCGCAAT
+GGATTGGAAGGAAGCAGTGAAGAGACGTCATTCCATGATGAGTCATTGCAAGATGACCGA
+GAAGAGATAGAAAATAATGCTTACCACATACACCCAGCAGGCATTGTTCTCACAAAAGTT
+GGTTATTACACTATCCCATCTATGGATGACCTTGCTAAAATTACCAACGAGAAGGGAGAA
+TGCATTGTTTCTGACTTCACCATTGGTCGTAAAGGATATGGCTCAATCTATTTTGAAGGA
+GATGTGAATTTGACAAATCTAAATTTGGATGATATTGTGCATATCCGAAGGAAAGAAGTT
+ATTGTCTATGTAGATGATAACCAAAAGCCACCTGTGGGTGAAGGGCTAAATAGGAAGGCT
+GAAGTTACTTTGGATGGAGTTTGGCCAACAGATAAAACATCCCGGTGTTTAATAAAGAGT
+CCAGATCGACTTGCTGATATCAACTATGAGGGGAGATTAGAAGCAGTCTCAAGAAAGCAA
+GGGGCCCAATTCAAGGAGTATCGGCCTGAAACTGGTTCTTGGGTATTTAAGGTCTCCCAT
+TTTTCCAAGTATGGCCTTCAGGATTCTGATGAAGAGGAGGAGGAACACCCACCCAAAACG
+ACTTCAAAGAAGCTGAAGACTGCCCCTTTGCCCCCTGCAGGCCAGGCAACCACTTTCCAG
+ATGACTCTTAATGGCAAGCCTGCACCCCCACCTCAGAGCCAGAGCCCAGAAGTGGAGCAG
+TTAGGCAGGGTTGTGGAACTGGACAGCGACATGGTAGATATCACCCAGGAGCCAGTTCCA
+GATTCTGTGTTAGAAGAGAGTGTGCCCGAGGATCAGGAGCCTGTGTCTGCTTCAACGCAT
+ATTGCATCTTCACTGGGAATTAATCCACATGTTTTACAGATCATGAAAGCATCATTGCTT
+GTTGACGAAGAAGATGTAGATGCCATGGATCAACGCTTTGGTCACATCCCTTCCAAAGGA
+GAGACTGTCCAGGAAATCTGTTCTCCTAGACTCCCCATTTCAGCCTCCCACTCATCAAAA
+TCCCGCTCCATAGTTGGTGGGTTGCTGCAATCAAAATTTGCAAGTGGAACTTTTCTTTCA
+CCAAGTGCCTCCGTGCAAGAATGTCGCACTCCCAGGACATCATCTCGCATGAACATCCCA
+TCCACATCCCCCTGGTCTGTCCCTCTGCCCCTGGCCACTGTGTTCACAGTGCCCAGCCCA
+GCCCCTGAGGTTCAGCTAAAAACAGTGGGGATACGAAGGCAACCAGGCCTAGTCCCTCTT
+GAAAAATCCATTACATATGGCAAGGGGAAGCTCTTGATGGACATGGCCCTATTCATGGGA
+CGTTCATTTCGGGTTGGTTGGGGTCCCAACTGGACTCTTGCTAATAGTGGAGAACAACTG
+CATGGCTCCCATGAACTGGAAAATCATCAGGTTGCCGATTCTATGGAATATGGATTCCTG
+CCCAATCCAGTAGCTGTTAAATCTCTATCTGAATCCCCATTCAAAGTTCATTTGGAAAAA
+CTCGGCTTAAGACAGAGGAAGCTGGATGAAGATCTGCAGTTATACCAGACACCTCTAGAG
+CTCAAATTAAAACATAGCACTGTCCATGTAGATGAGCTGTGTCCTCTCATTGTCCCCAAC
+CCTGGGGTTTCAGTCATTCATGATTATGCAGATTGGGTTAAGGACTCACCTGGAGATTTC
+CTGGAACTACCAATTGTGAAGCACTGGAGCCTGACATGGACATTATGTGAAGCCCTATGG
+GGCCACCTGAAGGAGCTTGACGGCCAGCTGGATGAGCCCAGCGAATACATTCAGACTCTG
+GAGCGTAGAAGAGCTTTTTCCCGCTGGCTGTCACATACCGCTGCACCTCAGATTGAAGAG
+GAAGTCTCCTTAACCCGCAGAGACAGTCCCGTAGAGGCTGTCTTCAGCTACCTCACGGGC
+AGTAGGATTAGTGAGGCCTGTTGTCTGGCACAGCAGTCAGGTGATCATCGCCTTGCCCTT
+CTTCTGTCTCAGTTGGTGGGAAGCCAGTCAGTCCGGGAGCTGCTCACCATGCAGTTGGCC
+GATTGGCATCAGCTCCAGGCTGACTCCTTCATCCACGATGAGCGATTGCGCATATTTGCC
+CTGTTGGCTGGAAAACCGGTGTGGCAGCTCTCAGAGCAGAAACAAATCAATGTTTGCTCC
+CAGCTAGATTGGAAACGAACACTTGCTATCCATCTTTGGTATTTGCTTCCGCCAACCGCC
+TCCATTTCCAGGGCTCTCAGCATGTATGAAGAAGCATTTCAGAATACTCCTGAGGGTGAT
+AAATATGCCTGCTCCCCTCTTCCTTCTTACCTGGAGGGCTGCGGCTGTATGGTAGAGGAA
+GAAAAAGACTCCCGGAGACCACTTCAAGATGTTTGCTTTCATCTTCTAAAACTCTACAGT
+GACAGACATTATGAGCTCAATCAGCTATTAGAACCTCGAAGCATAACTGCAGATCCTTTG
+GACTACCGCCTGAGCTGGCACCTTTGGGAAGTGCTACGTGCTCTTAACTATACCCATCTC
+TCAGAACAGTGTGAAGGTGTGCTACAGGCCAGTTATGCTGGCCAACTGGAAAGTGAAGGA
+CTCTGGGAGTGGGCCATCTTTGTCTTCCTACACATTGACAACTCGGGCATGCGTGAGAAG
+GCTGTTCGAGAGCTGCTGACAAGGCACTGCCAACTGTCAGAGACCCCTGAGTCTTGGGCT
+AAGGAGGCGTTCCTCACACAGAAGCTTTGTGTGCCTGCTGAGTGGATTCATGAGGCCAAA
+GCAGTTCGAGCACACATGGAATCCAATAAGCACTTGGAGGCCCTCTATTTATTTAAAGCT
+GGTCACTGGAACCGCTGCCACAAACTAGTCATTCGTCACCTAGCTTCTGATGCCATTATT
+AATGAGAACTATGACTACCTGAAAGGATTCTTAGAAGATCTGGCACCTCCAGAGCGCAGC
+AGCCTCATCCAGGACTGGGAAACATCTGGGCTCGTTTACCTGGATTATATTCGAGTGATT
+GAAATGCTCCACCGTATTCAGCAGGTGGATTGCTCAGGTTATGAACTAGAGCACTTACAT
+ACCAAAGTGACTTCACTGTGCAATCGGATAGAACAGATTCCGTGTTACAATGCCAAGGAT
+CGCCTGGCTCAATCAGATATGGCCAAGCGGGTAGCCAACTTACTGCGGGTAGTGCTGAGC
+CTTCAGCATGCTCCTGATGCCACCTCCAACTCAACGCCAGACCCTCAGCGAGTCCCTTTG
+CGTCTTTTGGCTCCCCACATTGGCAGGCTCCCCATGCCTGAGGACTACGCCTTGGAGGAA
+CTGCGAGGCCTTACCCAGTCCTACCTTCGAGAACTGACTGTTGGGAGCCAGTGAGCTTGG
+CTCTTGCCACCACACTCATGCCCACTCACACTCGCCACACCACAGTCCCCAGCACTGTTT
+TAGTTGACACTTTGCCAATCTCTGGGAATCCTCCATTCCTTTCTGCTGCATCTTCTAGTT
+ATTCAGGGGTTTTCCTAATACTGAGCATAGCCTACAATAGCTCATAAGGGCTTCTGGAAC
+AACAACAAAGAAGACAGGTCTCCATTTATCAACCTCAAGACCTTTTTTTTTCTTTTTCTT
+TTTTTTTTTTTTTTTTTTTTTTTCTTTTGAAAAATGGTCAATAAAACCTCTTTGGCAGAA
+CCTCCCAAAACCTAGGGAATTCTTTTCCACACCCAGCGTTCTGGCTCTCACCCCATGCCA
+GCATCTAACCTCCACCACTGCGATCCTTTTGTACCGTGACTGTTTGACAGACATCTGGCA
+TATGACTGACTGACCTTCCTTACAGATTTGTCCCTCAAGTAGATTTCTCAGTAACGGTGG
+ATTTTGGAGTCAAAAGAGAGTTGGACCTTGTTCTTTGGTAAATTTAAGATAGAAGGGCTG
+TCTGCCATAGAGGTAGAGATCTTCAAGGCCTTTACTCATGCCCTGTGTATCCTTTGGACA
+CCATACTATCATGCGCAGTGGCCCCAAGCCACCGAGAACCAGTCTGAGAAGCTCCAGATT
+CGCTCAGGCCCTTGATCATCAGTCGTCGTCGTCTTCGATTTGCCAGAGGAGTTTAGATGA
+AGAATGTCAAGGATGTTCCTCCCTGCCCTCCCATCTAGCCAAGAACATTTCCAAGAAGAT
+AAAACTGTCACTGAGACAGGTCTGGATGCGCCCTAGGGGCAAATAGAGAAGGCCTTTACC
+ACATTGCTGCTGGCTATAGGAAGTCCCAGGTACTAGCCTGAAACAGCTGATATTTGGGGC
+TGTCACAGACAATATGGCCACCCCTTGGTCTTTATGCATGAAGATTATGTAAAGGTTTTT
+ATTAAAAAATATATATATATATATAAATGATCTAGATTATTTTCCTCTTTCTGAAGTACT
+TTCTTAAAAAAATAAAATTAAATGTTTATAGTATTCCCGGT
+>TR7|c0_g2_i1 len=832 path=[7527:0-23 7528:24-24 7529:25-25 7530:26-26 7531:27-27 7532:28-28 7533:29-29 7534:30-30 7535:31-31 7536:32-32 7537:33-33 7538:34-831] [-1, 7527, 7528, 7529, 7530, 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, -2]
+TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCTTTTGAAAAATGGTCAATAAAACCT
+CTTTGGCAGAACCTCCCAAAACCTAGGGAATTCTTTTCCACACCCAGCGTTCTGGCTCTC
+ACCCCATGCCAGCATCTAACCTCCACCACTGCGATCCTTTTGTACCGTGACTGTTTGACA
+GACATCTGGCATATGACTGACTGACCTTCCTTACAGATTTGTCCCTCAAGTAGATTTCTC
+AGTAACGGTGGATTTTGGAGTCAAAAGAGAGTTGGACCTTGTTCTTTGGTAAATTTAAGA
+TAGAAGGGCTGTCTGCCATAGAGGTAGAGATCTTCAAGGCCTTTACTCATGCCCTGTGTA
+TCCTTTGGACACCATACTATCATGCGCAGTGGCCCCAAGCCACCGAGAACCAGTCTGAGA
+AGCTCCAGATTCGCTCAGGCCCTTGATCATCAGTCGTCGTCGTCTTCGATTTGCCAGAGG
+AGTTTAGATGAAGAATGTCAAGGATGTTCCTCCCTGCCCTCCCATCTAGCCAAGAACATT
+TCCAAGAAGATAAAACTGTCACTGAGACAGGTCTGGATGCGCCCTAGGGGCAAATAGAGA
+AGGCCTTTACCACATTGCTGCTGGCTATAGGAAGTCCCAGGTACTAGCCTGAAACAGCTG
+ATATTTGGGGCTGTCACAGACAATATGGCCACCCCTTGGTCTTTATGCATGAAGATTATG
+TAAAGGTTTTTATTAAAAAATATATATATATATATAAATGATCTAGATTATTTTCCTCTT
+TCTGAAGTACTTTCTTAAAAAAATAAAATTAAATGTTTATAGTATTCCCGGT
+>TR7|c1_g1_i1 len=341 path=[319:0-340] [-1, 319, -2]
+CAAAGGAATTAAGTAATTTAGAATCAGGCCGTATGTGTTGGTATATGCATATAATCTAGT
+CACTTAGGAGATAAAGGCTGGAGAATCAGAAATTCATCGTCTTTCTTGGCTATATATCAA
+GTTTAGGGTTACATGAGATGTATCTCAAAATATTTGGTATGTATAAACTTACCTTCATAA
+CTTTTGACACCTAAGTATTTGTAAACCAGGCATTCTACATATAACTTTTGATGTTTAGAT
+CTTGTAGTGTCCACATAAGTCGTGAAGCAAGTAATTACTGACTCCCATACTTTTGTACCG
+AGCTGTGCTTTGTTGCATTAAAATGTATTGGTTATCTTGCA
+>TR8|c1_g1_i1 len=252 path=[255:0-88 256:89-112 257:113-251] [-1, 255, 256, 257, -2]
+AATTTCTGTACCTTTCAGAAATTTAATGGAAAGGATTCCAAACTGGTCTCAGTTTTCAAG
+GGTCTACTTGTTCTGGGTGTCTTAAAGATATGCATTTCTTAGTGCATTTCTGCGGGAAAA
+GTGTTGCTTAAATTGGGATATTTTTGTTACTTTGGAAATTTTTTACTAGATAGAAATTTC
+TATATGTCTTTTCCTTTCCAAAATTTAGTACTCATTTCTGATTTAATTGAAAGCAGCTGT
+GCTTGACATTGT
+>TR8|c3_g1_i1 len=235 path=[268:0-36 270:37-108 265:109-234] [-1, 268, 270, 265, -2]
+CGGCCAGGGGCTTGTGGAGGTTAAAGTTTCTGTACAGTCCGCTTCCAGTCTCGTGTATCT
+TCTCTGGAGTGTTGTTTTGCAGTGCGGGGTGAGCTGGTGTGGGTGTTTGAATGCTGCTGT
+TTGCTGTTTTTTAAAGGCCTTCTAGCCCTCCCATGGGGTTGCTGCAGCAGGAATTCTTAC
+CTGTGCTTCAGCCCAGCATACAGACTGCTGACAGGCACCACACAGTCACTCGAGG
+>TR8|c5_g1_i1 len=341 path=[385:0-146 386:147-167 400:168-234 398:235-307 396:308-331 397:332-340] [-1, 385, 386, 400, 398, 396, 397, -2]
+CCCCACTGTAAGCGCCACATGCTTACTTCCTTCTTTACTTCCTGCATACTCTGTGTTTGT
+AAGTCAGTGTCAGAGTTACAACAAGAGACGGCCCAGAACAGGAAGAGTGCATTGCTGAGA
+CTGGAAACCTGCTTTGTCCCTCCGTTTTGGCAGAAGCAAGTTTTTAATTATTGAAAGCAA
+AAGTCCTTCCTTTGCTCTGTCTTTGTAGAGTCTTAGGGGTGTTGGAGGATAGAGGTAAGA
+AAGAAATGCTTATGTTGGGTTTCTGTAACTAAGGAATTTGTCCCATAGTGAGCAATCCCT
+TCCTTATTACATCTTAGCAAGAGTAGGGCCCAGTAGAATCT
+>TR8|c5_g1_i2 len=256 path=[385:0-146 386:147-167 400:168-234 392:235-255] [-1, 385, 386, 400, 392, -2]
+CCCCACTGTAAGCGCCACATGCTTACTTCCTTCTTTACTTCCTGCATACTCTGTGTTTGT
+AAGTCAGTGTCAGAGTTACAACAAGAGACGGCCCAGAACAGGAAGAGTGCATTGCTGAGA
+CTGGAAACCTGCTTTGTCCCTCCGTTTTGGCAGAAGCAAGTTTTTAATTATTGAAAGCAA
+AAGTCCTTCCTTTGCTCTGTCTTTGTAGAGTCTTAGGGGTGTTGGAGGATAGAGGCACCA
+CACAGTCACTCGAGGC
+>TR8|c6_g1_i1 len=349 path=[402:0-137 403:138-169 408:170-186 398:187-210 399:211-348] [-1, 402, 403, 408, 398, 399, -2]
+GAGAGGCTCCTGAAGGTGGAACCTAAAGCTGCCCAAGGCACTGCATTGTGTGAGCTTCAG
+GAGTTCAGAGGCAAAGCAGGTGACACTTCACTTACCATTTGGCTGTGTGAAATGACCCAG
+TCTAGGACAGGAAAGATATCTGCCTAGTATGGAGACTGAGACGAATGGTCAGGAATGGTT
+ATCTGGTTGCAGCTTCTCTTTTTAAGTTTGGTTTAAATGCGTGACTATACTTAGCTATGA
+GGCAGGCTGATTCCTACCCAGGTAACACTAGGTTGTGGTGCTGCTGTTAACCGTGGTCTC
+TTCTGTTTCCCTTTCGCTGACCTCAGGCACCACACAGTCACTCGAGGCA
+>TR8|c7_g1_i1 len=289 path=[342:0-45 347:46-175 345:176-249 341:250-288] [-1, 342, 347, 345, 341, -2]
+AGACCTTTCCTTTCTGAACTGGCAGTATTTAGTACGTAAGCTAAAATGATGCTGTTTATT
+TGGCTAGATTCTCCTGTTCTTAAGCCGTAAGACCTAGCTATCTCTATGTGCCACTTGACA
+CCAGGGACATGCCTGCTGTGCACTGTGCTGTTGCATGGCCATCGTACTGTGCACTTACTC
+AGACCTACATGCTACATACCCAGGCTGTAGGGACCAGTGCAGTCAATCATTGCCTGTGGA
+GCATGACTGTAGTTGACATCATACAGACTTGCATAGAGGCTCTGATGAA
+>TR8|c8_g1_i1 len=2592 path=[3520:0-259 @3555@!:260-1204 3489:1205-1226 3564:1227-1602 3560:1603-1674 3554:1675-2040 3514:2041-2063 3563:2064-2073 3571:2074-2074 3570:2075-2080 3568:2081-2081 3566:2082-2119 3552:2120-2126 3544:2127-2141 3532:2142-2305 3452:2306-2591] [-1, 3520, 3555, 3489, 3564, 3560, 3554, 3514, 3563, 3571, 3570, 3568, 3566, 3552, 3544, 3532, 3452, -2]
+CAGTGGCCACCTGGGGGTTGGCGGCGCCCTAGTGTCGCCTACTGGAAGGGCAAAAACCCG
+GGACCATGTCGGCCCAGGGCGACTGTGAGTTTCTGGTGCAGCGAGCCCGGGAACTAGTGC
+CCCAGGACCTGTGGGCAGCCAAGGCATGGCTGATCACGGCCCGCAGCCTCTACCCGGCCG
+ACTTCAACATCCAGTATGAAATGTACACCATCGAACGGAATGCCGAGAGGACTGCCACCG
+CAGGGAGGTTGCTGTATGACATGTTTGTGAATTTCCCGGACCAGCCGGTGGTATGGAGAG
+AAATCAGCATCATCACGTCAGCATTGAGGAACGACTCACAAGATAAGCAGACCCAGTTCT
+TACGGAGTTTATTTGAAACCCTTCCCGGTCGGGTCCAGTGTGAAATGTTGTTGAAGGTGA
+CAGAGCAATGCTTCAACACGCTGGAACGATCAGAAATGTTGCTGCTGCTGCTGAGGCGTT
+TCCCTGAGACAGTGGTGCAACACGGGGTTGGCCTCGGGGAGGCCCTGCTGGAAGCTGAAA
+CCATTGAAGAACAAGACTCTCCTGTTAACTGCTTTAGAAAGCTATTTGTTTGTGATGTCC
+TTCCTCTAATAATCAACAACCATGATGTCCGCTTGCCCGCCAATCTCTTATATAAATACT
+TGAACAAAGCAGCTGAATTTTACATCAACTATGTCACTCGGTCCACACAGTCAGAAAATC
+AGCATCAAGGTGCACAGGATACATCTGATTTAATGTCGCCTAGCAAGCGTAGCTCTCAGA
+AGTACATAATAGAAGGACTGACTGAGAAATCATCCCACATCGTCGACCCCTGGGAGAGGT
+TGTTTAAGATTCTGAATGTTGTTGGAATGAGATGCGAATGGCAGATGGATAAAGGGAGAC
+GAAGCTGCAGTGACCTGCTGCACCGGATGAAGGAGCTCTGCAGATACATGAACAGCTTTG
+ACAGCGAAGCTCACAACAACTATAAAAACCAAGTGCTCTACTCCACGATGCTGGTGTTCT
+TCAAGAGTGCGTTCCAGTACGTCAGCAGCATACAGCCATCTCTCTTCCAAGGTCCTAACG
+CCCCAAGCCAGGTTCCACTAATTCTTCTGGAAGATGTGGCCAATGTGTATGGTGATGTAG
+AAATTGATCGCAGTAAACACATACACAAGAAGAGGAAGCTAGCTGAGGGAAGAGAAAAAA
+CCATGAGTTCAGATGATGAAGAGTGTTCAGCGAAAGGCAGAAACCGGCACATTGTTGTCA
+GCAAAGCTGACCTCAGCAACTCCATCGAAGTACTGGAGAGCTTCAAACTGGCCAGGGAAA
+GCTGGGAGTTACTCTACTCTCTGGAATTCCTTGACAAAGAATTTACAAGAATTTGCTTGG
+CTTGGAAGACAGACACCTGGCTGTGGCTAAGAATCTTCCTCACAGATATGATCATCTACC
+AGGGTCAATATAAGAAGGCCATAGCCAGTCTGCATCACTTAGCAGCTCTGCAAGGATCCC
+TTTCTCAGCCACAGATCACAGGACAGGGGACTTTAGAACACCAGAGGGCGCTCATCCAGC
+TGGCAACGTGTCACTTTGCTCTGGGGGAGTACAGAATGACGTGCGAGAAAGTCCTAGATC
+TGATGTGTTACATGGTGCTCCCCATACAAGATGGCGGGAAGCCACAGGAAGAGCCGTCCA
+AAGTAAAGCCCAAGTGTAGAAAAGGTTTGGATCTGAAGCTTCTGCCCTGTACCAGTAAGG
+CTATCATGCCATACTGCCTGCACTTGATGCTGGCCTGCTTTAAGCTGAGAGCTTTTACAG
+ACAGCAGAGACGACATGGCACTGGGCCATGTGATTGTACTGCTCCAGCAGGAGTGGCCAC
+GGGGAGAGAACCTTTTCCTGAAAGCCATCAGTAAGATTTGCCAGCAAGGAAATTTCCAGT
+ATGAGAACTTCTTCAGCTATGTTACAAACATTGATATGCTGGAGGAATTTGCTTATTTAA
+GAACCCAAGAAGGAGGGAAGATTCATCTGGAATTACTCCCAAATCAAGGAATGCTGATCA
+ACCATTGCAGACCTTTTGGGTGGTCCCTCCAGATGAGTGGCAGAGATGTTGTGAGCAGTG
+TACCTCTCCTCCCCTTGGGGCACCACACAGTCACTCGAGGCATCACCAAAGGTGTGAAGG
+AGGACTTCCGCCTGGCCATGGAGCGCCAGGTCTCCCGCTGTGGTGAGAACCTGATGGCGG
+TACTACATCGCTTCTGCATTAATGAGAAGATCTTGCTCCTGCAGACTCTGACCTGATAGA
+CCTCCTGGCCACCAGCGGCTCAGCCATGACAAGCGCTGCCAGACCAGGGCTGATGAAGAA
+GAAAAACACCAAGTTCTAACTCCCTTAGTTGCTTAAAAGTCAATCCGAAGAGTATAGGAA
+GTTATTTCTATTTTTAAGACTTCAGGTTTTTTTAGTTTGTACAAAATAAGATTCAATCCA
+TTTTGTAAATAAAAACCCGAAAGATTTGAAGTTTTAAAAAAAAACTTATTTTTAGTTTCA
+AGTAGGGTACATTTGTCTTCTATTTTTCTAATCATGGCAAAGGGGCAAAAATCCAACACA
+ATTAAATGCAGG
+>TR8|c8_g1_i2 len=2514 path=[3520:0-259 @3555@!:260-1204 3489:1205-1226 3564:1227-1602 3560:1603-1674 3554:1675-2040 3572:2041-2041 3466:2042-2063 3532:2064-2227 3452:2228-2513] [-1, 3520, 3555, 3489, 3564, 3560, 3554, 3572, 3466, 3532, 3452, -2]
+CAGTGGCCACCTGGGGGTTGGCGGCGCCCTAGTGTCGCCTACTGGAAGGGCAAAAACCCG
+GGACCATGTCGGCCCAGGGCGACTGTGAGTTTCTGGTGCAGCGAGCCCGGGAACTAGTGC
+CCCAGGACCTGTGGGCAGCCAAGGCATGGCTGATCACGGCCCGCAGCCTCTACCCGGCCG
+ACTTCAACATCCAGTATGAAATGTACACCATCGAACGGAATGCCGAGAGGACTGCCACCG
+CAGGGAGGTTGCTGTATGACATGTTTGTGAATTTCCCGGACCAGCCGGTGGTATGGAGAG
+AAATCAGCATCATCACGTCAGCATTGAGGAACGACTCACAAGATAAGCAGACCCAGTTCT
+TACGGAGTTTATTTGAAACCCTTCCCGGTCGGGTCCAGTGTGAAATGTTGTTGAAGGTGA
+CAGAGCAATGCTTCAACACGCTGGAACGATCAGAAATGTTGCTGCTGCTGCTGAGGCGTT
+TCCCTGAGACAGTGGTGCAACACGGGGTTGGCCTCGGGGAGGCCCTGCTGGAAGCTGAAA
+CCATTGAAGAACAAGACTCTCCTGTTAACTGCTTTAGAAAGCTATTTGTTTGTGATGTCC
+TTCCTCTAATAATCAACAACCATGATGTCCGCTTGCCCGCCAATCTCTTATATAAATACT
+TGAACAAAGCAGCTGAATTTTACATCAACTATGTCACTCGGTCCACACAGTCAGAAAATC
+AGCATCAAGGTGCACAGGATACATCTGATTTAATGTCGCCTAGCAAGCGTAGCTCTCAGA
+AGTACATAATAGAAGGACTGACTGAGAAATCATCCCACATCGTCGACCCCTGGGAGAGGT
+TGTTTAAGATTCTGAATGTTGTTGGAATGAGATGCGAATGGCAGATGGATAAAGGGAGAC
+GAAGCTGCAGTGACCTGCTGCACCGGATGAAGGAGCTCTGCAGATACATGAACAGCTTTG
+ACAGCGAAGCTCACAACAACTATAAAAACCAAGTGCTCTACTCCACGATGCTGGTGTTCT
+TCAAGAGTGCGTTCCAGTACGTCAGCAGCATACAGCCATCTCTCTTCCAAGGTCCTAACG
+CCCCAAGCCAGGTTCCACTAATTCTTCTGGAAGATGTGGCCAATGTGTATGGTGATGTAG
+AAATTGATCGCAGTAAACACATACACAAGAAGAGGAAGCTAGCTGAGGGAAGAGAAAAAA
+CCATGAGTTCAGATGATGAAGAGTGTTCAGCGAAAGGCAGAAACCGGCACATTGTTGTCA
+GCAAAGCTGACCTCAGCAACTCCATCGAAGTACTGGAGAGCTTCAAACTGGCCAGGGAAA
+GCTGGGAGTTACTCTACTCTCTGGAATTCCTTGACAAAGAATTTACAAGAATTTGCTTGG
+CTTGGAAGACAGACACCTGGCTGTGGCTAAGAATCTTCCTCACAGATATGATCATCTACC
+AGGGTCAATATAAGAAGGCCATAGCCAGTCTGCATCACTTAGCAGCTCTGCAAGGATCCC
+TTTCTCAGCCACAGATCACAGGACAGGGGACTTTAGAACACCAGAGGGCGCTCATCCAGC
+TGGCAACGTGTCACTTTGCTCTGGGGGAGTACAGAATGACGTGCGAGAAAGTCCTAGATC
+TGATGTGTTACATGGTGCTCCCCATACAAGATGGCGGGAAGCCACAGGAAGAGCCGTCCA
+AAGTAAAGCCCAAGTGTAGAAAAGGTTTGGATCTGAAGCTTCTGCCCTGTACCAGTAAGG
+CTATCATGCCATACTGCCTGCACTTGATGCTGGCCTGCTTTAAGCTGAGAGCTTTTACAG
+ACAGCAGAGACGACATGGCACTGGGCCATGTGATTGTACTGCTCCAGCAGGAGTGGCCAC
+GGGGAGAGAACCTTTTCCTGAAAGCCATCAGTAAGATTTGCCAGCAAGGAAATTTCCAGT
+ATGAGAACTTCTTCAGCTATGTTACAAACATTGATATGCTGGAGGAATTTGCTTATTTAA
+GAACCCAAGAAGGAGGGAAGATTCATCTGGAATTACTCCCAAATCAAGGAATGCTGATCA
+AGCACCACACAGTCACTCGAGGCATCACCAAAGGTGTGAAGGAGGACTTCCGCCTGGCCA
+TGGAGCGCCAGGTCTCCCGCTGTGGTGAGAACCTGATGGCGGTACTACATCGCTTCTGCA
+TTAATGAGAAGATCTTGCTCCTGCAGACTCTGACCTGATAGACCTCCTGGCCACCAGCGG
+CTCAGCCATGACAAGCGCTGCCAGACCAGGGCTGATGAAGAAGAAAAACACCAAGTTCTA
+ACTCCCTTAGTTGCTTAAAAGTCAATCCGAAGAGTATAGGAAGTTATTTCTATTTTTAAG
+ACTTCAGGTTTTTTTAGTTTGTACAAAATAAGATTCAATCCATTTTGTAAATAAAAACCC
+GAAAGATTTGAAGTTTTAAAAAAAAACTTATTTTTAGTTTCAAGTAGGGTACATTTGTCT
+TCTATTTTTCTAATCATGGCAAAGGGGCAAAAATCCAACACAATTAAATGCAGG
+>TR8|c8_g1_i3 len=2614 path=[3520:0-259 @3555@!:260-1204 3489:1205-1226 3564:1227-1602 3560:1603-1674 3554:1675-2040 3572:2041-2041 3548:2042-2063 3539:2064-2083 3569:2084-2084 3567:2085-2085 3563:2086-2095 3571:2096-2096 3570:2097-2102 3568:2103-2103 3566:2104-2141 3552:2142-2148 3544:2149-2163 3532:2164-2327 3452:2328-2613] [-1, 3520, 3555, 3489, 3564, 3560, 3554, 3572, 3548, 3539, 3569, 3567, 3563, 3571, 3570, 3568, 3566, 3552, 3544, 3532, 3452, -2]
+CAGTGGCCACCTGGGGGTTGGCGGCGCCCTAGTGTCGCCTACTGGAAGGGCAAAAACCCG
+GGACCATGTCGGCCCAGGGCGACTGTGAGTTTCTGGTGCAGCGAGCCCGGGAACTAGTGC
+CCCAGGACCTGTGGGCAGCCAAGGCATGGCTGATCACGGCCCGCAGCCTCTACCCGGCCG
+ACTTCAACATCCAGTATGAAATGTACACCATCGAACGGAATGCCGAGAGGACTGCCACCG
+CAGGGAGGTTGCTGTATGACATGTTTGTGAATTTCCCGGACCAGCCGGTGGTATGGAGAG
+AAATCAGCATCATCACGTCAGCATTGAGGAACGACTCACAAGATAAGCAGACCCAGTTCT
+TACGGAGTTTATTTGAAACCCTTCCCGGTCGGGTCCAGTGTGAAATGTTGTTGAAGGTGA
+CAGAGCAATGCTTCAACACGCTGGAACGATCAGAAATGTTGCTGCTGCTGCTGAGGCGTT
+TCCCTGAGACAGTGGTGCAACACGGGGTTGGCCTCGGGGAGGCCCTGCTGGAAGCTGAAA
+CCATTGAAGAACAAGACTCTCCTGTTAACTGCTTTAGAAAGCTATTTGTTTGTGATGTCC
+TTCCTCTAATAATCAACAACCATGATGTCCGCTTGCCCGCCAATCTCTTATATAAATACT
+TGAACAAAGCAGCTGAATTTTACATCAACTATGTCACTCGGTCCACACAGTCAGAAAATC
+AGCATCAAGGTGCACAGGATACATCTGATTTAATGTCGCCTAGCAAGCGTAGCTCTCAGA
+AGTACATAATAGAAGGACTGACTGAGAAATCATCCCACATCGTCGACCCCTGGGAGAGGT
+TGTTTAAGATTCTGAATGTTGTTGGAATGAGATGCGAATGGCAGATGGATAAAGGGAGAC
+GAAGCTGCAGTGACCTGCTGCACCGGATGAAGGAGCTCTGCAGATACATGAACAGCTTTG
+ACAGCGAAGCTCACAACAACTATAAAAACCAAGTGCTCTACTCCACGATGCTGGTGTTCT
+TCAAGAGTGCGTTCCAGTACGTCAGCAGCATACAGCCATCTCTCTTCCAAGGTCCTAACG
+CCCCAAGCCAGGTTCCACTAATTCTTCTGGAAGATGTGGCCAATGTGTATGGTGATGTAG
+AAATTGATCGCAGTAAACACATACACAAGAAGAGGAAGCTAGCTGAGGGAAGAGAAAAAA
+CCATGAGTTCAGATGATGAAGAGTGTTCAGCGAAAGGCAGAAACCGGCACATTGTTGTCA
+GCAAAGCTGACCTCAGCAACTCCATCGAAGTACTGGAGAGCTTCAAACTGGCCAGGGAAA
+GCTGGGAGTTACTCTACTCTCTGGAATTCCTTGACAAAGAATTTACAAGAATTTGCTTGG
+CTTGGAAGACAGACACCTGGCTGTGGCTAAGAATCTTCCTCACAGATATGATCATCTACC
+AGGGTCAATATAAGAAGGCCATAGCCAGTCTGCATCACTTAGCAGCTCTGCAAGGATCCC
+TTTCTCAGCCACAGATCACAGGACAGGGGACTTTAGAACACCAGAGGGCGCTCATCCAGC
+TGGCAACGTGTCACTTTGCTCTGGGGGAGTACAGAATGACGTGCGAGAAAGTCCTAGATC
+TGATGTGTTACATGGTGCTCCCCATACAAGATGGCGGGAAGCCACAGGAAGAGCCGTCCA
+AAGTAAAGCCCAAGTGTAGAAAAGGTTTGGATCTGAAGCTTCTGCCCTGTACCAGTAAGG
+CTATCATGCCATACTGCCTGCACTTGATGCTGGCCTGCTTTAAGCTGAGAGCTTTTACAG
+ACAGCAGAGACGACATGGCACTGGGCCATGTGATTGTACTGCTCCAGCAGGAGTGGCCAC
+GGGGAGAGAACCTTTTCCTGAAAGCCATCAGTAAGATTTGCCAGCAAGGAAATTTCCAGT
+ATGAGAACTTCTTCAGCTATGTTACAAACATTGATATGCTGGAGGAATTTGCTTATTTAA
+GAACCCAAGAAGGAGGGAAGATTCATCTGGAATTACTCCCAAATCAAGGAATGCTGATCA
+AGTTCCAAACAAATTCTCTGAAGCCATTGCAGACCTTTTGGGTGGTCCCTCCAGATGAGT
+GGCAGAGATGTTGTGAGCAGTGTACCTCTCCTCCCCTTGGGGCACCACACAGTCACTCGA
+GGCATCACCAAAGGTGTGAAGGAGGACTTCCGCCTGGCCATGGAGCGCCAGGTCTCCCGC
+TGTGGTGAGAACCTGATGGCGGTACTACATCGCTTCTGCATTAATGAGAAGATCTTGCTC
+CTGCAGACTCTGACCTGATAGACCTCCTGGCCACCAGCGGCTCAGCCATGACAAGCGCTG
+CCAGACCAGGGCTGATGAAGAAGAAAAACACCAAGTTCTAACTCCCTTAGTTGCTTAAAA
+GTCAATCCGAAGAGTATAGGAAGTTATTTCTATTTTTAAGACTTCAGGTTTTTTTAGTTT
+GTACAAAATAAGATTCAATCCATTTTGTAAATAAAAACCCGAAAGATTTGAAGTTTTAAA
+AAAAAACTTATTTTTAGTTTCAAGTAGGGTACATTTGTCTTCTATTTTTCTAATCATGGC
+AAAGGGGCAAAAATCCAACACAATTAAATGCAGG
+>TR8|c8_g1_i4 len=574 path=[3420:0-43 3569:44-44 3567:45-45 3563:46-55 3571:56-56 3570:57-62 3568:63-63 3566:64-101 3552:102-108 3544:109-123 3532:124-287 3452:288-573] [-1, 3420, 3569, 3567, 3563, 3571, 3570, 3568, 3566, 3552, 3544, 3532, 3452, -2]
+CTTAGGGGTGTTGGAGGATAGAGCCATTGCAGACCTTTTGGGTGGTCCCTCCAGATGAGT
+GGCAGAGATGTTGTGAGCAGTGTACCTCTCCTCCCCTTGGGGCACCACACAGTCACTCGA
+GGCATCACCAAAGGTGTGAAGGAGGACTTCCGCCTGGCCATGGAGCGCCAGGTCTCCCGC
+TGTGGTGAGAACCTGATGGCGGTACTACATCGCTTCTGCATTAATGAGAAGATCTTGCTC
+CTGCAGACTCTGACCTGATAGACCTCCTGGCCACCAGCGGCTCAGCCATGACAAGCGCTG
+CCAGACCAGGGCTGATGAAGAAGAAAAACACCAAGTTCTAACTCCCTTAGTTGCTTAAAA
+GTCAATCCGAAGAGTATAGGAAGTTATTTCTATTTTTAAGACTTCAGGTTTTTTTAGTTT
+GTACAAAATAAGATTCAATCCATTTTGTAAATAAAAACCCGAAAGATTTGAAGTTTTAAA
+AAAAAACTTATTTTTAGTTTCAAGTAGGGTACATTTGTCTTCTATTTTTCTAATCATGGC
+AAAGGGGCAAAAATCCAACACAATTAAATGCAGG
+>TR8|c8_g2_i1 len=338 path=[3486:0-51 3487:52-337] [-1, 3486, 3487, -2]
+GCTCCGGCAGACTCTGACCTGATAGCCCCCCTGGCCACCAGCGGCTCAGCCATGACAAGC
+GCTGCCAGACCAGGGCTGATGAAGAAGAAAAACACCAAGTTCTAACTCCCTTAGTTGCTT
+AAAAGTCAATCCGAAGAGTATAGGAAGTTATTTCTATTTTTAAGACTTCAGGTTTTTTTA
+GTTTGTACAAAATAAGATTCAATCCATTTTGTAAATAAAAACCCGAAAGATTTGAAGTTT
+TAAAAAAAAACTTATTTTTAGTTTCAAGTAGGGTACATTTGTCTTCTATTTTTCTAATCA
+TGGCAAAGGGGCAAAAATCCAACACAATTAAATGCAGG
+>TR8|c9_g1_i1 len=236 path=[1166:0-34 1223:35-37 1221:38-54 @1218@!:55-209 1187:210-235] [-1, 1166, 1223, 1221, 1218, 1187, -2]
+AAGTTAGAAATGTCTCAAGGCACCATAAAGTACTATGCATCAGTTTGTGCCCAGCAGGAG
+TCAGATCTTTAACCCTCAAAGACACCGAGCTGAGTTAGCCAGCTAGACTAGAAATGTCCG
+TGCACCACTATTTTCTCGTGGCCCTGCTGTCTTCCCAGAAGCTCTTTAAAATGCCTGGGT
+TGTTCAGAGTGGTTTGTTTTCACCCGGTGTCACTCCTGCGCTGCCGCTGCGGGGGG
+>TR8|c9_g1_i2 len=316 path=[1178:0-86 1179:87-90 1223:91-93 1221:94-110 @1218@!:111-265 1192:266-297 1193:298-315] [-1, 1178, 1179, 1223, 1221, 1218, 1192, 1193, -2]
+CTGCACACGATGATAACTTGTACTTGGCTCAGTTTTGGGTTGCAGCCCAGGGACTCAAGT
+TAGAAATATCTCAAGGCACCATAAAGTACTATGCATCAGTTTGTGCCCAGCAGGAGTCAG
+ATCTTTAACCCTCAAAGACACCGAGCTGAGTTAGCCAGCTAGACTAGAAATGTCCGTGCA
+CCACTATTTTCTCGTGGCCCTGCTGTCTTCCCAGAAGCTCTTTAAAATGCCTGGGTTGTT
+CAGAGTGGTTTGTTTTCACCCGGTGTTACTTCTGCGCTGCCGCTGCCGAGGTGACTCCCG
+CTCACTTTCTCTGTAA
+>TR8|c9_g2_i1 len=709 path=[1194:0-54 1219:55-177 1222:178-212 1214:213-236 1217:237-411 1197:412-429 1212:430-585 1206:586-614 1207:615-627 1208:628-708] [-1, 1194, 1219, 1222, 1214, 1217, 1197, 1212, 1206, 1207, 1208, -2]
+AGTGGTTTGTTTTCACCCGGTGTTACTTCTGCGCTGCCGCTGCCGAGGTGACTCCTGCTC
+ACTTTCTATGTAATAATGCGGTTTAGAAGCACAAGCCTTCAGCGTGATAGCCACAGCCTC
+AGTTTTCTCAGTAGTTGAACTTTGTGACTTGGAGGAGAGTCAGGGGATAGGCAGGAAACA
+GAGGTAGCTTTTGTTTGTCTGAAATTGTCACATTCCCAAACTAGCAGCCAAAATGCCTCT
+GTTTGTGGTGGAGTCCACTGAATTTTGCTAGACTTTTCTTTTCCTCTGTTCATTTTGTTG
+TCCTTATTTCTGGGGTTCTGTTTGTCCTTTCCCGTCCTAACGCACGGCTCTTGGCGCACA
+GTTAGACACCTCTTGGCTTTTGCTCCCATTTAACCCACCCACAGATGAGCAAGCACATGA
+ATAGCTCTACTCTTCATAGACCCTCACAGGCAGTGGTTGTACCTTTCCAACCTGTGACAT
+GGTTCTGTCTCAGGACAAAAGTCTGGATGGACATGGCACTCAAAGGACCTGCCCTGCCTT
+AGCTCCCTGGGGATAGGCCTGCACCCCGGGACCCCAGCGGCTGTGTGGAGGCCAGAACTT
+CTCTGCACCTAGCAGCCATGGAAGGCCTGCCAGAGAGCTCCTTGGTGACTGGGGCATGCT
+TCCCTCTTCCTGCTGTTGTCTCTCTGGTCTGTGGCCTGGTCTCCGGCAC
+>TR9|c0_g1_i1 len=509 path=[7502:0-44 7503:45-48 7504:49-50 7505:51-508] [-1, 7502, 7503, 7504, 7505, -2]
+TCCTCCCTCTCTTAGGGTTTTAAAAGACAAGCCATTAAAATAGATGACCTTTCACAGACT
+GAAACTTGAATCACTGCAAAATGAATCTAGGTTGCTGTCACTTTTTCTTTTGGGTGGCGG
+GGCTTGATGTAGATTTTATTCTATGTACAGAATTTAATGTTGAATATATTAAAAATAACA
+AACCTGGCATGGTTTTGGGAGGTTAGATTTACTGGAAATGTATTCATACTGTGAACTGTG
+CTCTGATGGTTAGAATGAAAAGCTTATCAAGCATTCCATATAACAGTGGATGTAGAAAAT
+GTTTTCAGGTGGATATGTATATGGTACAGATGTAAAGTTTTCTATGTAAAAAATTCTGTA
+CAACTTTCTGTACAATATTGATTCTCATCTGGCATATCTAATCAGGTTATAGGTCAATAA
+AGTTTTTGAATTATTTCATCAGTGCAGTGTAACCCACAGCCCTGTTTTCATTGTTTTTTG
+TTTGTTTTAATTAAAGGTCAAACCATGAG
+>TR9|c0_g2_i1 len=530 path=[7513:0-49 7514:50-69 7515:70-71 7516:72-529] [-1, 7513, 7514, 7515, 7516, -2]
+GAACAACACCTCCCTGTGACATCCCCCCTCTCTTGGGGTTTTAAAAAACAAGCCATTAAA
+ATAGATGACCTTTCACAGACTGAAACTTGAATCACTGCAAAATGAATCTAGGTTGCTGTC
+ACTTTTTCTTTTGGGTGGCGGGGCTTGATGTAGATTTTATTCTATGTACAGAATTTAATG
+TTGAATATATTAAAAATAACAAACCTGGCATGGTTTTGGGAGGTTAGATTTACTGGAAAT
+GTATTCATACTGTGAACTGTGCTCTGATGGTTAGAATGAAAAGCTTATCAAGCATTCCAT
+ATAACAGTGGATGTAGAAAATGTTTTCAGGTGGATATGTATATGGTACAGATGTAAAGTT
+TTCTATGTAAAAAATTCTGTACAACTTTCTGTACAATATTGATTCTCATCTGGCATATCT
+AATCAGGTTATAGGTCAATAAAGTTTTTGAATTATTTCATCAGTGCAGTGTAACCCACAG
+CCCTGTTTTCATTGTTTTTTGTTTGTTTTAATTAAAGGTCAAACCATGAG
+>TR9|c0_g3_i1 len=528 path=[7519:0-47 7520:48-67 7521:68-69 7522:70-527] [-1, 7519, 7520, 7521, 7522, -2]
+ACAACCCCTACCTGTGACATCCCCGCTCTCTTGGGGTTTTAAAAAACAAGCCATTAAAAT
+AGATGACCTTTCACAGACTGAAACTTGAATCACTGCAAAATGAATCTAGGTTGCTGTCAC
+TTTTTCTTTTGGGTGGCGGGGCTTGATGTAGATTTTATTCTATGTACAGAATTTAATGTT
+GAATATATTAAAAATAACAAACCTGGCATGGTTTTGGGAGGTTAGATTTACTGGAAATGT
+ATTCATACTGTGAACTGTGCTCTGATGGTTAGAATGAAAAGCTTATCAAGCATTCCATAT
+AACAGTGGATGTAGAAAATGTTTTCAGGTGGATATGTATATGGTACAGATGTAAAGTTTT
+CTATGTAAAAAATTCTGTACAACTTTCTGTACAATATTGATTCTCATCTGGCATATCTAA
+TCAGGTTATAGGTCAATAAAGTTTTTGAATTATTTCATCAGTGCAGTGTAACCCACAGCC
+CTGTTTTCATTGTTTTTTGTTTGTTTTAATTAAAGGTCAAACCATGAG
+>TR9|c0_g4_i1 len=7195 path=[7495:0-1805 7496:1806-1823 @7534@!:1824-5598 7533:5599-5739 7532:5740-6174 7529:6175-6730 7489:6731-6734 7490:6735-6736 7491:6737-7194] [-1, 7495, 7496, 7534, 7533, 7532, 7529, 7489, 7490, 7491, -2]
+CGGGCCGCCGGGGCGGGGTGCCGCCGCCGCCGGGCCGTAGGGACGAGTGAGGCGGGCGGC
+CGGGAAGCGACCCCCGGGCCGACGGCGCCGAGGCCGGACGGGCGCGGCCCTCGAACGGCG
+GCCCCTCGAGCGTGGCGAGGCTTTCGACGCCCTTGGCGGCCCCGCGGCCGCTCCGCGTCG
+CCGGCCGCTTCCTGGTGCCGCCGCTGCCCTCCACGCCTCCTCGCCCCCACCGCCACCTCC
+TCGCCTTTCTCCCTCCCCGTCCTCATCCCGGTCCCCGTCCCCCTCCTCCGCCTTCCCTCC
+AGCCGCCGGGACCGCCGCCGCCGCCGCCTCCTCCGCGTCCATGTATGAGGGCAAGAAGAC
+GAAGAACATGTTCCTGACCCGGGCCCTGGAGAAGATTCTGGCCGACAAGGAAGTGAAGAA
+GGCGCATCACTCCCAGCTGCGCAAAGCGTGCGAGGTGGCCCTAGAGGAAATAAAAGTTGA
+AACTGAGAAACAAAGCCCTCCTCATGGAGAAGCAAAAGCTGGATCAGGCACCCTTCCACC
+AGTGAAATCAAAGACAAATTTTATTGAAGCAGACAAGTACTTTTTACCCTTTGAGTTGGC
+ATGCCAGTCCAAATGTCCCCGCATAGTTAGTACATCTCTAGATTGTTTGCAGAAACTTAT
+TGCTTATGGGCACTTGACTGGCAGGGCTCCAGATAGTACGACACCAGGCAAAAAATTAAT
+TGATAGAATTATTGAAACAATATGTGGCTGCTTCCAAGGTCCTCAAACAGATGAAGGAGT
+TCAGTTGCAGATAATAAAGGCTTTACTTACCGCAGTGACATCACAACACATAGAAATCCA
+TGAAGGAACTGTGCTGCAAGCTGTGAGGACATGCTACAATATCTATTTAGCCAGCAAAAA
+TCTCATCAATCAGACAACAGCCAAAGCTACTCTTACTCAAATGCTGAACGTTATCTTTGC
+ACGCATGGAAAACCAAGCATTACAGGAGGCCAAACAAATGGAAAGAGAAAGACATCGGCA
+GCAGCAGCATTTGTTACAGTCTCCAGTAAGCCATCATGAGCCCGAGTCACCTCATCTTAG
+ATATTTGCCACCTCAGACTGTTGATCATATAAACCAAGAGCATGAAGGGGATCTTGAGCC
+CCAAACACATGATGTGGATAAAAGTCTCCAAGATGATACAGAGCCTGAAAACGGATCTGA
+TATTTCCAGTGCAGAAAATGAACAGACAGAAGCTGATCAGGCAACTGCAGCTGAAACATT
+ATCTAAAAATGATATCTTGTATGATGGAGACTATGAAGAAAAGCCACTTGATATTGTCCA
+GAGCATTGTAGAAGAAATGGTGAACATCATTGTTGGAGACATGGGAGAAGGGATGGCTAT
+CAGTGCAAGTACAGAAGGCAACACTGGAACTGTAGAAGATGGTAGTGACAGTGAAAACAT
+CCAAGCAAATGGAATCCCAGGAACACCCATTTCTGTTGCATATACACCATCGTTACCTGA
+CGACAGGTTATCTGTCTCCTCCAATGATACTCAGGAATCTGGAAATTCTTCAGGACCTTC
+ACCTGGTGCTAAGTTTTCCCACATTTTACAAAAGGATGCCTTTCTAGTGTTCAGGTCATT
+GTGTAAGCTGTCAATGAAACCACTGTCAGATGGACCACCAGATCCAAAGTCTCATGAGTT
+ACGGTCCAAGATTCTTTCATTGCAGTTGCTTCTGTCCATTCTGCAGAATGCAGGACCTGT
+TTTCAGGACAAATGAGATGTTTATTAATGCTATCAAGCAGTATCTATGTGTTGCACTCTC
+AAAAAAACGGAGTCTCATCTGTTCCAGAGGTTTTTGAGCTTTCTCTTTCCATATTTCTTA
+CTTTGTTGTCAAACTTCAAGACACATCTGAAGATGCAAATTGAGGTATTCTTTAAAGAAA
+TCTTCCTGTACATTTTGGAAACGTCTACAAGCTCATTTGACCATAAGTGGATGGTTATTC
+AGACACTGACAAGGATCTGTGCAGATGCTCAGAGTGTGGTGGACATTTATGTAAATTATG
+ACTGTGACCTAAATGCAGCAAATATATTTGAAAGACTAGTAAATGACCTGTCGAAAATTG
+CCCAAGGAAGGGGCAGCCAAGAACTTGGTATGAGTAATGTTCAGGAATTGAGCCTGCGAA
+AAAAGGGGTTAGAATGTTTAGTTTCAATTTTGAAATGTATGGTTGAATGGAGCAAGGATC
+AGTATGTGAACCCCAACTCTCAAACTACCCTTGGTCAGGAAAAACCCTCAGAGCAAGAGA
+TAAGTGAAGTTAAACACCCAGAGACTATAAACAGATATGGAAGTTTAAACTCCTTAGAAT
+CCACATCATCATCAGGAATTGGCAGCTACAGTACACAGATGTCTGGCACTGATAATCCAG
+AACAATTTGAGGTCCTAAAGCAGCAAAAAGAAATAATAGAACAAGGGATTGATTTATTTA
+ATAAGAAACCAAAGAGAGGAATACAATACCTCCAAGAACAAGGGATGCTTGGCACCACAC
+CCGAAGATATAGCTCAGTTCTTACATCAAGAAGAAAGATTAGACTCTACTCAGGTGGGTG
+AGTTCCTGGGAGATAATGATAAATTCAATAAAGAAGTCATGTATGCATATGTAGACCAAC
+ATGACTTTTCAGGAAAAGACTTTGTTTCAGCTCTTCGTCTATTTCTGGAAGGATTCCGGC
+TTCCAGGAGAAGCTCAGAAAATTGATCGATTAATGGAAAAATTTGCTGCAAGATACCTAG
+AGTGCAACCAAGGACAAACCCTTTTTGCTAGTGCAGATACTGCTTATGTTTTGGCCTACT
+CAATTATCATGTTGACTACAGACCTTCACAGTCCACAGGTTAAAAACAAAATGACAAAAG
+AACAGTACATTAAAATGAATCGTGGTATCAATGACAGTAAAGATCTCCCTGAAGAGTATC
+TATCAGCCATTTATAACGAAATAGCTGGGAAAAAAATATCAATGAAAGAAACAAAAGAAC
+TAACAATCCCTACAAAGTCAACTAAACAGAATGTAGCCAGTGAAAAGCAAAGACGACTTC
+TGTATAACTTAGAAATGGAACAGATGGCCAAGACGGCTAAAGCACTCATGGAAGCTGTGA
+GCCATGTTCAGGCACCTTTTACAAGTGCAACACACTTGGAGCACGTGAGGCCGATGTTTA
+AGTTGGCTTGGACACCTTTTCTGGCTGCATTCAGTGTGGGTCTCCAAGACTGTGATGATA
+CTGAAGTAGCCTCTCTTTGCCTAGAAGGGATAAGATGTGCTATCAGGATTGCATGCATTT
+TCAGCATTCAGCTGGAAAGAGATGCATATGTCCAAGCACTAGCCAGATTTACCTTACTTA
+CAGTGAGTTCTGGTATTACTGAAATGAAACAGAAGAATATCGACACAATAAAAACACTCA
+TCACGGTGGCTCACACTGATGGAAATTATTTAGGAAATTCGTGGCATGAGATCCTGAAGT
+GCATCAGTCAGTTAGAGCTGGCACAACTTATAGGAACTGGAGTGAAGCCTCGGTACATTT
+CTGGGACTGTGAGAGGCAGAGAAGGGTCTCTCACTGGGACAAAAGATCAGGCTCCAGATG
+AATTTGTTGGTCTAGGGCTAGTTGGAGGAAATGTGGACTGGAAGCAGATAGCCAGTATTC
+AGGAGTCTATTGGAGAAACCAGCTCTCAAAGTGTGGTAGTTGCTGTGGATAGAATATTCA
+CCGGATCCACAAGGCTAGATGGAAATGCTATTGTTGATTTTGTCCGTTGGCTATGTGCTG
+TGTCTATGGATGAATTGCTTTCTACTACACACCCAAGAATGTTTAGTCTACAAAAAATAG
+TAGAAATATCATACTATAACATGGGAAGAATAAGACTGCAGTGGTCTCGGATTTGGGAAG
+TTATTGGAGATCATTTTAATAAGGTTGGTTGCAATCCTAATGAAGATGTAGCCATATTTG
+CAGTAGACTCTCTGAGGCAGCTATCAATGAAGTTTTTAGAGAAAGGAGAGCTTGCAAACT
+TCAGATTCCAAAAGGATTTCTTACGACCTTTTGAACATATAATGAAACGAAACAGGTCTC
+CAACAATTCGAGATATGGTTGTACGGTGTATAGCACAAATGGTTAATTCTCAGGCTGCAA
+ATATTCGTTCAGGATGGAAGAACATTTTCTCAGTATTCCATCTAGCTGCATCAGACCAAG
+ATGAAAGCATAGTAGAACTTGCATTTCAGACAACAGGGCACATTGTCACTCTTGTATTTG
+AAAAACACTTTCCGGCCACCATTGATTCTTTCCAGGATGCAGTGAAGTGTTTGTCTGAAT
+TCGCATGTAATGCAGCTTTCCCAGACACAAGTATGGAAGCAATCCGACTTATTCGCCATT
+GTGCAAAATATGTGTCTGATAGACCGCAGGCTTTCAAGGAGTACACAAGTGATGACATGA
+GCGTGGCACCTGAAGACAGGGTGTGGGTGAGAGGGTGGTTCCCGATCCTCTTTGAGTTGT
+CTTGTATCATCAATAGATGCAAATTAGATGTAAGAACCAGGGGCTTAACAGTAATGTTTG
+AAATAATGAAAACATATGGCCACACTTATGAAAAACATTGGTGGCAGGACTTATTCAGAA
+TTGTTTTCAGAATCTTTGACAACATGAAATTGCCAGAACAGCAGACAGAGAAAGCTGAAT
+GGATGACAACAACTTGTAACCATGCCCTTTATGCAATATGTGATGTATTCACCCAGTATT
+TAGAAGTTCTCAGCGATGTACTTTTGGATGATATTTTTGCCCAGCTTTACTGGTGTGTAC
+AACAAGACAATGAGCAGTTAGCACGATCTGGTACAAACTGCTTAGAAAACGTGGTTATTC
+TGAATGGTGAAAAGTTTACTCTTGAAATCTGGGATAAAACGTGTAACTGCACCCTGGATA
+TCTTCAAAACCACAATTCCTCACGCGCTTCTGACTTGGCGTCCCACCTCTGGCGAGGCCG
+AACCCCCATCTCCATCAGCTGTGAGTGAAAAGCCGTTGGATGCAATATCACAAAAATCTG
+TAGACATACATGATTCTATTCAACCAAGATCTTCAGATAACAGACAGCAAGCACCACTGG
+TTTCTGTTTCTACTGTGAGTGAAGAAGTTAGCAAAGTGAAATCCACAGCAAAATTCCCAG
+AACAAAAATTGTTTGCTGCCCTGTTGATTAAATGTGTTGTGCAGCTGGAACTCATCCAGA
+CCATCGACAACATTGTCTTCTTCCCAGCCACAAGCAAGAAGGAGGATGCAGAGAACTTAG
+CTGCAGCCCAGAGAGATGCAGTAGACTTCGATGTTCGAGTTGATACTCAAGACCAAGGAA
+TGTACCGCTTTTTAACATCACAACAACTGTTCAAGCTACTGGACTGCTTATTAGAGTCGC
+ATAGATTTGCAAAAGCATTTAATTCCAACAATGAACAGAGGACTGCTCTGTGGAAAGCAG
+GCTTCAAAGGCAAGTCCAAGCCCAATCTTCTAAAACAGGAGACAAGCAGCCTGGCGTGTG
+GGCTGCGCATTCTCTTCCGGATGTACATGGACGAGAGCAGAGTCAGTGCCTGGGAAGAAG
+TCCAGCAGAGGCTTTTAAACGTCTGCAGGGAAGCGCTGAGCTACTTCCTCACTCTAACAT
+CCGAAAGTCACCGGGAAGCCTGGACTAACTTACTGTTACTGTTCCTCACTAAAGTTCTGA
+AGATCAGTGACAGCAGGTTTAAAGCTCACGCATCATTCTACTACCCTCTCTTATGTGAAA
+TTATGCAATTTGACTTGATTCCGGAACTGCGTGCTGTTCTTAGAAGATTTTTCCTGCGAA
+TTGGAATAGTATTTCAAATATCACAACCACCTGAACAGGAACTTGGGATAAACAGGCAAT
+GATGAGAGCCGATGTTTTTCTGTTGGTGTTTACATTGCTCTGCTCTGTGAAAGGATCCTG
+CAGCAGAGGCTTCCTACCTGAAAAATGTTTCTCTCAATTGTAGTGTGTGAGTTACTGGTA
+AGACGCTTACACCTATAACTCAAGGTCGGAATAGTCCCTCCAGTCCCTTTAGTAACCCAG
+TGGCCTCTGTCTCGTGTTGGGCTCATGTTGAGCAGAAAGGCTGTTCCCACAGCATCAGCC
+TACCTTTAGGGTCCTTCCCTGTCCTCTAAGCAGGGTGAGCCCACACTGTGGCAGGTACGG
+AAATTACCCAAAGAAGTATAGATGTAAAGACTGAGCTTCTGCGAGAAGTACAACTCAGGA
+GAGCTGTATTTTGAAGGATAAAATGTTTATAATTGGGGGTGGGGGAAGGGAGAAAAAAAT
+TATTGCTCATGGTAAAAGATATTTAGCAACTATGGTATTCTTACTCTGAAGATTTTTGCA
+CACTCAGGCTATCTGAGACACCGGAAATCATCATCTTTCTGTGAAAATGTACAGAGATGC
+AGGTCTGTAATATAAAAATCTTAAACATATTGTTCCTCCTGCACTGTTTTATTTCTTTAT
+TTTCTTATCTACTTGCTAAATACCCATAATATTTTGTCAAATGCACTAAAACATTTGGGT
+TGAACTTTTAGTCTTTGGGGGAGTGGTGGTCATTTTGAGGGCTTGCTGTGCCCTGAATCT
+GTTGTGGCTGATGCCTGTCAAGATGACAACAGGAGGGGATCCACCAAGGTAGAAAACATC
+CCTGCTGACAAGACCTACCTGTGACATACTCACTCTCTTAGGGCTTTTAAAGACAAGCCA
+TTAAAATAGATGACCTTTCACAGACTGAAACTTGAATCACTGCAAAATGAATCTAGGTTG
+CTGTCACTTTTTCTTTTGGGTGGCGGGGCTTGATGTAGATTTTATTCTATGTACAGAATT
+TAATGTTGAATATATTAAAAATAACAAACCTGGCATGGTTTTGGGAGGTTAGATTTACTG
+GAAATGTATTCATACTGTGAACTGTGCTCTGATGGTTAGAATGAAAAGCTTATCAAGCAT
+TCCATATAACAGTGGATGTAGAAAATGTTTTCAGGTGGATATGTATATGGTACAGATGTA
+AAGTTTTCTATGTAAAAAATTCTGTACAACTTTCTGTACAATATTGATTCTCATCTGGCA
+TATCTAATCAGGTTATAGGTCAATAAAGTTTTTGAATTATTTCATCAGTGCAGTGTAACC
+CACAGCCCTGTTTTCATTGTTTTTTGTTTGTTTTAATTAAAGGTCAAACCATGAG
+>TR9|c0_g5_i1 len=530 path=[7506:0-54 7507:55-57 7508:58-71 7509:72-529] [-1, 7506, 7507, 7508, 7509, -2]
+CGAAAACCCCTCCCTGTGACATCCTCCCTCTTTTGGGGTTTTAAAAGAAAAGCCATTAAA
+ATAGATGACCTTTCACAGACTGAAACTTGAATCACTGCAAAATGAATCTAGGTTGCTGTC
+ACTTTTTCTTTTGGGTGGCGGGGCTTGATGTAGATTTTATTCTATGTACAGAATTTAATG
+TTGAATATATTAAAAATAACAAACCTGGCATGGTTTTGGGAGGTTAGATTTACTGGAAAT
+GTATTCATACTGTGAACTGTGCTCTGATGGTTAGAATGAAAAGCTTATCAAGCATTCCAT
+ATAACAGTGGATGTAGAAAATGTTTTCAGGTGGATATGTATATGGTACAGATGTAAAGTT
+TTCTATGTAAAAAATTCTGTACAACTTTCTGTACAATATTGATTCTCATCTGGCATATCT
+AATCAGGTTATAGGTCAATAAAGTTTTTGAATTATTTCATCAGTGCAGTGTAACCCACAG
+CCCTGTTTTCATTGTTTTTTGTTTGTTTTAATTAAAGGTCAAACCATGAG
+>TR9|c0_g6_i1 len=542 path=[7484:0-66 7485:67-69 7486:70-83 7487:84-541] [-1, 7484, 7485, 7486, 7487, -2]
+AACCACCCCTGCTAACAAGCCCTCCCTGTGACATACTCACTCTCTTGGGGTTTTAAAAGA
+AAAGCCATTAAAATAGATGACCTTTCACAGACTGAAACTTGAATCACTGCAAAATGAATC
+TAGGTTGCTGTCACTTTTTCTTTTGGGTGGCGGGGCTTGATGTAGATTTTATTCTATGTA
+CAGAATTTAATGTTGAATATATTAAAAATAACAAACCTGGCATGGTTTTGGGAGGTTAGA
+TTTACTGGAAATGTATTCATACTGTGAACTGTGCTCTGATGGTTAGAATGAAAAGCTTAT
+CAAGCATTCCATATAACAGTGGATGTAGAAAATGTTTTCAGGTGGATATGTATATGGTAC
+AGATGTAAAGTTTTCTATGTAAAAAATTCTGTACAACTTTCTGTACAATATTGATTCTCA
+TCTGGCATATCTAATCAGGTTATAGGTCAATAAAGTTTTTGAATTATTTCATCAGTGCAG
+TGTAACCCACAGCCCTGTTTTCATTGTTTTTTGTTTGTTTTAATTAAAGGTCAAACCATG
+AG
+>TR9|c0_g7_i1 len=509 path=[7492:0-36 7493:37-50 7494:51-508] [-1, 7492, 7493, 7494, -2]
+TACTCACTCTCTTAGGGTTTTAAAAGAAAAGCCATTAAAATAGATGACCTTTCACAGACT
+GAAACTTGAATCACTGCAAAATGAATCTAGGTTGCTGTCACTTTTTCTTTTGGGTGGCGG
+GGCTTGATGTAGATTTTATTCTATGTACAGAATTTAATGTTGAATATATTAAAAATAACA
+AACCTGGCATGGTTTTGGGAGGTTAGATTTACTGGAAATGTATTCATACTGTGAACTGTG
+CTCTGATGGTTAGAATGAAAAGCTTATCAAGCATTCCATATAACAGTGGATGTAGAAAAT
+GTTTTCAGGTGGATATGTATATGGTACAGATGTAAAGTTTTCTATGTAAAAAATTCTGTA
+CAACTTTCTGTACAATATTGATTCTCATCTGGCATATCTAATCAGGTTATAGGTCAATAA
+AGTTTTTGAATTATTTCATCAGTGCAGTGTAACCCACAGCCCTGTTTTCATTGTTTTTTG
+TTTGTTTTAATTAAAGGTCAAACCATGAG
+>TR10|c0_g1_i1 len=348 path=[340:0-93 341:94-117 342:118-118 343:119-347] [-1, 340, 341, 342, 343, -2]
+CTGCCCTGCCCTGCTCTGCCCTGCCCTGCCCTGCCCTGCCCTGTACTTGTCTGTGTGATC
+AAGAATGAACATGTGCAAACACAGACACACACACGCACACACACACACACACACACACAG
+AGCAACTAGAATTATGTTTTCTAGGTGCTGCCAAAGACTAGGTTGTTTTACAGATATTTT
+CTAAAAAGAACAGGCATTCTTATTTCTTCCAAAGGTCACTCTAGTGTATGTTCTGGGTCT
+TAACTTATGGAGGCATAGGTCTTAGGTATAAAGGATTTTCTTGTTAAATCAACTGTCATA
+ATTTGAATAGTGTCACCCAAAGGTCATTGTGTTCAAACTGGCCCTAAC
+>TR10|c0_g2_i1 len=344 path=[344:0-93 345:94-106 346:107-107 347:108-108 348:109-109 349:110-110 350:111-111 351:112-112 352:113-113 353:114-114 354:115-343] [-1, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, -2]
+CTGCCCTGCCCTGCTCTGCCCTGCCCTGCCCTGCCCTGCCCTGTACTTGTCTGTGTGATC
+AAGAATGAACATGTGCAAACACAGACACACACACACACACACACACACACACACAGAGCA
+ACTAGAATTATGTTTTCTAGGTGCTGCCAAAGACTAGGTTGTTTTACAGATATTTTCTAA
+AAAGAACAGGCATTCTTATTTCTTCCAAAGGTCACTCTAGTGTATGTTCTGGGTCTTAAC
+TTATGGAGGCATAGGTCTTAGGTATAAAGGATTTTCTTGTTAAATCAACTGTCATAATTT
+GAATAGTGTCACCCAAAGGTCATTGTGTTCAAACTGGCCCTAAC
+>TR11|c0_g1_i1 len=307 path=[304:0-225 305:226-306] [-1, 304, 305, -2]
+AAATTATTTAGCTTGGAGAGAATAGGGACTGTGTTGTTTATTATAATTATTTGTGTAATA
+CCCTTTCTCAGTATTGTTAAACCATTAGAAGTCTTTTGTCCTCGTGGGGAAAGGTTTGTA
+AATTAGTTATTAGGTTGTTTCTTTGAATGGTAAAGTGGCTTACTTTAATTTTACTTTTAA
+TTTAATGTGGTTTATACTCAATCAAGATAAAGCAATATTTTTAACTTACTGACTTACTCC
+TACAGAGAAGAGTTGTTTATGGGACTTTGTAAAACACCCTCTACCTCTCAGCTACTAAAC
+GCAGGAC
+>TR11|c1_g1_i1 len=312 path=[450:0-36 451:37-54 465:55-60 464:61-160 448:161-164 462:165-196 443:197-311] [-1, 450, 451, 465, 464, 448, 462, 443, -2]
+GTCAGATTAATTTTCTGCAAAAGTTTAGTTCCTTTTTCTCAAGTTGTTTCAGGTAAACTT
+GTAATAGCTATTTAAATAATTGTTATAAAAATATATAATTTATAAAAGCAAGTAAATTGG
+GCTGGTGAGATGGCTCAATGGGTAAGAGCACCCGACTGCTCTTCCAAAGGTCCAAAGTTC
+AAATCCCAGCAACCACATGGTGGCTCATAACCATCCGTAATGAGATCTGACTCCCTCTTC
+TGGAGTGTCTGAAGACAGCTACAGTGTACTTACATATAATCAAAAAAAAAAAATCTTTAA
+AAAAAAAAAAAG
+>TR11|c1_g2_i1 len=247 path=[444:0-95 445:96-99 463:100-131 455:132-246] [-1, 444, 445, 463, 455, -2]
+TTTACCTCACTTTGTAATTGAACTGAATCTGAATTCAGTAACAGAAAATCACAGGGCTGG
+TGAGATGGCTCAGTGGGTAAGAGCACCCGACTGCTCTTCCGAAGGTCCGAAGTTCAAATC
+CCAGCAACCACATGGTGGCTCATAACCATCCGTAATGAGATCTGACTCCCTCTTCTGGAG
+TGTCTGAAGACAGCTACAGTGTACTTACATATAATCAAAAAAAAAAAATCTTTAAAAAAA
+AAAAAAG
+>TR11|c2_g1_i1 len=235 path=[213:0-234] [-1, 213, -2]
+CAACCACTTTCCAGATGACTCTTAATGGCAAGCCTGCACCCCCACCTCAGGTAGAGAAGG
+GCAGAGAATGTGAATGCAGCTGTGGTAAAGAAGTCAGCTGTGCAACCCTGGCTGCTATTT
+TTTACTCAAGATTTAAAGGGTTTTCTTGCTGTTTGGATCATTCTACAGATTGTAACTTTC
+AATTTCTCTCATTTGGACTTGTAATGTTTTGATCAGTGATCAGCTTGAGATAGCA
+>TR12|c0_g1_i1 len=272 path=[299:0-133 300:134-157 305:158-269 298:270-271] [-1, 299, 300, 305, 298, -2]
+GCCTTTGGTGGCTTGAGCCAGTGTTTTCCATCAGAGCATCAGAGTGGTGAGGGTATACCA
+CAGGAAGTCCTTCACCTCATGGCAGAGGAAAAAAAAAAATAGGAAGTGGCCTGGGTTGAC
+TTCTGGCCTACACTACACACACCCACCGAAGGGCATTTGACTGGCTGAGTGGAGAGGGCA
+GACCTGGCTAATGACATCAGCCAGCCAAGGCTGACCACTTCCAAACCCTTTCCTTTGCCG
+TCCTGACCAGATTGTGCCCACCTATGAGAGGA
+>TR12|c2_g1_i1 len=466 path=[524:0-85 525:86-109 530:110-288 529:289-321 527:322-345 518:346-465] [-1, 524, 525, 530, 529, 527, 518, -2]
+GTCCTACCTCTACAGTGCCACTGAAGCAAATGTCCTGTAACCAGGGATGTGAGACCTGGC
+CCCTCTTATCAAAGCGATCCAGGGATCTGATAGTAGTGAAACCTCAGGGCATTCCTTAGA
+GCAGCCTAGCCTTTTCCTCAGCCAATCCAAGAGCAAACAGTTCTGTTGAATGAGTCATGT
+GTAGCTTCAGGCCCCAGAGGTGAAGTTTCCCTGATCAAGTCAGTACTTGTGGGGACTAAG
+ACATGGCTGGCCCATCACTGAGCTCTGTCTTCAGATCACGCCCCTTTCACTGACGGGCAA
+GTCTGTCTCTGAGCTTGGTGTCTCTCATCTAAACACAGCTAAGTGTGTTAGTGTTCTTGT
+CACTGTGAGAGTCTAGAGAGTGAGCTTGGTCTGGCTCTCAGCTTCACGAGTGTCAGCCTT
+TGGTGGCTTGAGCCAGTGTGTTCCATCAGAGCATCAGCGTGGTGAG
+>TR12|c3_g1_i1 len=484 path=[652:0-65 669:66-161 667:162-216 649:217-233 650:234-257 666:258-332 658:333-356 670:357-368 668:369-395 665:396-419 642:420-423 643:424-483] [-1, 652, 669, 667, 649, 650, 666, 658, 670, 668, 665, 642, 643, -2]
+CCAGCGTGGGGCCGGGGGCCGGTGAGTGGCTACCCAGCACCGCGGACAGAGGGGCACCCC
+AAGACCTGTACTCTCTGCCTCTAGGAGGAAGGAGAGTGAAGGGGATAGGATATGAAGTGG
+GTGCCAGACAAGGTGTGGGGATGCTACCACCGATTTGTTCTCCCTACGGCACCAGCTGTA
+GCTTTGGAAGCCGCGCAGCCCCATCTTCCCTAATCTTAGCCCATCCCGTTACTATTTCCA
+GGATAGCCCATCATGCATAGAAAGAAAACAGAGCCCTAGGCAGAGGGAGCCATAACCCAC
+AAGGCATTTGTAGAGAAATGGAAAAAGAGTCGCCCTAGGGTAGCAGCGCAGGGAGCAGGA
+GTCTCCTGTGTCCTGGTGAAGATGCACAGAACAGAAAGCTGGGCCTGCAAGCTGCCTGGC
+TTGTTTGCTTTGGCTTCCTCTCTCCAAAGCCTGACTGTCCTTGGAGTATTCTGGTCCTCT
+GTGG
+>TR12|c4_g1_i1 len=2226 path=[2634:0-75 2716:76-219 2714:220-304 2702:305-325 2713:326-368 2707:369-396 2700:397-420 2712:421-467 2688:468-491 2706:492-540 2721:541-562 2724:563-571 2715:572-584 2710:585-605 @2703@!:606-2032 2640:2033-2225] [-1, 2634, 2716, 2714, 2702, 2713, 2707, 2700, 2712, 2688, 2706, 2721, 2724, 2715, 2710, 2703, 2640, -2]
+AGCTGCCACAGGCTGGGCAGGGCAGTCTCCCAGCAGAGGATCGGGGCGTGTCCCGGTTAG
+AAGTCATGCTTGGAAGGTCTGGCTACCGGGCACTGCCCTTAGGGGATTTTGATCGTTTCC
+AGCAGTCGAGCTTCGGCTTTCTGGGTTCGCAGAAGGGCTGCTTGTCCCCAGAGCCGGGCA
+GCGTGGGGCCGGGGGCCGACGCGCCGGAGAGCTGGCCCTCCTGTCTCTGCCATGGCCTCG
+TCAGTGTCCTGGGGTTCTTGCTGCTGCTGCTCACCTTCCCCATTTCCGGCTGGTTTGCTC
+TGAAGGTTTCTTTTGATCATGATGTTTCTCCCAGTAACATGAGAAACTAGGGCAGTTCCC
+ATCCTTCAGATGGATAAACTGAAGCCCAGACTGAACCAACGGCATCTCGGGAGCCAGGAA
+GGAGCAGAAATTGTTTTCTAGGTCCTGGAATCTGGACATATATATTCCTTTGCAAAATCA
+TCCTCCCTTTGGCTCAGATCCAATCAAAAGAAAAGCACCCAGCATACCCAGCAAGCATGG
+AATAATGAAACTCAGGTCTTGCTTTGCATAACGGTTGCTTAATAGATTGTGCCCACCTAT
+GAGAGGATGATTGTGTTTCGACTGGGCCGGATCCGTAACCCCCAGGGGCCTGGCATGGTT
+CTTCTCCTGCCCTTTATTGACTCCTTCCAGAGGGTAGATTTGAGGACCCGAGCCTTCAAC
+GTTCCTCCTTGCAAGCTGGCCTCTAAGGATGGGGCTGTGCTGTCGGTGGGAGCTGATGTC
+CAGTTCCGCATCTGGGACCCAGTGCTATCCGTGATGGCTGTGAAGGACCTGAACACAGCT
+ACTCGCATGACAGCCCACAACGCCATGACTAAGGCCCTGCTCAGAAGGCCACTGCAGGAG
+ATCCAGATGGAGAAGCTCAAGATCGGTGACCAGCTCCTGCTGGAGATCAATGACGTGACC
+AGAGCTTGGGGACTGGAGGTCGACCGTGTAGAGCTGGCAGTAGAGGCTGTGTTGCAGCCA
+CCGCAAGACAGCCTGACTGTGCCCAGCCTGGACAGCACCCTCCAACAGCTGGCCCTCCAC
+TTGCTAGGGGGAAGTATGAACTCAGCGGTCGGACATGTTCCATCCCCAGGGCCAGACACC
+TTGGAGATGATAAATGAAGTGGAACCTCCTGCCTCTCTTGCTGGGGCCGGGCCTGAGCCC
+AGCCCGAAGCAGCCCGTGGCTGAGGGGCTCCTCACAGCCCTGCAACCCTTCCTGTCAGAG
+GCACTGGTCAGCCAGGTTGGGGCCTGCTACCAGTTCAATGTCATCTTGCCCAGTGGCACC
+CAGAGTATCTACTTCCTGGACCTTACTACAGGACAAGGCCGCGTGGGACATGGAGAGCCT
+GATGGCATCCCTGACGTGGTGGTGGAGATGGCTGAAGCAGACTTGCAGGCCTTGTTGAGC
+AAAGAACTTCGGCCCTTAGGGGCCTACATGAGTGGGCGGCTGAAGGTGAAGGGTGACCTG
+GCCGTGGTCATGAAGCTGGAGGCTGTACTCAAGGCCTTGAAGTAGCCGTGTTGGTTGTCC
+ATCAGACACCTAGCCCTGAACCTGGTGCCAACCCAGAGAAGCCTCTTGGAATAGGAGGCG
+TTGGTTTGGGCCATGGAAAACTGAGGCCTGAAGATGTTTCAGTCCCAACGAGGAGCCCGG
+GAGGCTGGGAGACATCTACTGCTGGTCACAGCTGAGTCGGGTGTACCACCCCTTAGCCTG
+TGGTAGTCCTCTGGACAGGCCTTTGCTCGTTCAATCCCCAACAAATGCTTAGTGCTGAGT
+CGGAACACAGAGTGAAGACAGAGAGCCTGGCCTGCCCTACCCAGCTGATAACCTGACCGA
+CCGGAGAGACGAGAAGCCCAGAAGCTTCTGAATGGCAGCATGTGAAGGGTCAAAGCACAT
+GGATCATGGCTCTGACATTCAGGGAGATCACAGGGAAGGGAAGGTGAGGAAGGGTGGCCC
+TCAAGAAAGGGTTACTGCAGCTGATCCAGGCGGCCCTGCCAGAACAGGCTGGGTGGGGAG
+GGCATGTGATAGAACAATTTGCTTTTCTTATGGGTCTGCTCCTGAAGACACCGGGTCCTA
+TCCTCTGGCTCCATCCTGCATGTTTAAGGAGCTGGGCTCAGGGCAGCATGTGGGAGAGCC
+CTGCTGTTCCGTGCTTATAGAGGCTTGGAGCCTCCAACAAATAAATGTGACATTTACGGT
+GTGGAA
+>TR12|c4_g1_i2 len=1946 path=[2634:0-75 2716:76-219 2714:220-304 2674:305-325 @2703@!:326-1752 2640:1753-1945] [-1, 2634, 2716, 2714, 2674, 2703, 2640, -2]
+AGCTGCCACAGGCTGGGCAGGGCAGTCTCCCAGCAGAGGATCGGGGCGTGTCCCGGTTAG
+AAGTCATGCTTGGAAGGTCTGGCTACCGGGCACTGCCCTTAGGGGATTTTGATCGTTTCC
+AGCAGTCGAGCTTCGGCTTTCTGGGTTCGCAGAAGGGCTGCTTGTCCCCAGAGCCGGGCA
+GCGTGGGGCCGGGGGCCGACGCGCCGGAGAGCTGGCCCTCCTGTCTCTGCCATGGCCTCG
+TCAGTGTCCTGGGGTTCTTGCTGCTGCTGCTCACCTTCCCCATTTCCGGCTGGTTTGCTC
+TGAAGATTGTGCCCACCTATGAGAGGATGATTGTGTTTCGACTGGGCCGGATCCGTAACC
+CCCAGGGGCCTGGCATGGTTCTTCTCCTGCCCTTTATTGACTCCTTCCAGAGGGTAGATT
+TGAGGACCCGAGCCTTCAACGTTCCTCCTTGCAAGCTGGCCTCTAAGGATGGGGCTGTGC
+TGTCGGTGGGAGCTGATGTCCAGTTCCGCATCTGGGACCCAGTGCTATCCGTGATGGCTG
+TGAAGGACCTGAACACAGCTACTCGCATGACAGCCCACAACGCCATGACTAAGGCCCTGC
+TCAGAAGGCCACTGCAGGAGATCCAGATGGAGAAGCTCAAGATCGGTGACCAGCTCCTGC
+TGGAGATCAATGACGTGACCAGAGCTTGGGGACTGGAGGTCGACCGTGTAGAGCTGGCAG
+TAGAGGCTGTGTTGCAGCCACCGCAAGACAGCCTGACTGTGCCCAGCCTGGACAGCACCC
+TCCAACAGCTGGCCCTCCACTTGCTAGGGGGAAGTATGAACTCAGCGGTCGGACATGTTC
+CATCCCCAGGGCCAGACACCTTGGAGATGATAAATGAAGTGGAACCTCCTGCCTCTCTTG
+CTGGGGCCGGGCCTGAGCCCAGCCCGAAGCAGCCCGTGGCTGAGGGGCTCCTCACAGCCC
+TGCAACCCTTCCTGTCAGAGGCACTGGTCAGCCAGGTTGGGGCCTGCTACCAGTTCAATG
+TCATCTTGCCCAGTGGCACCCAGAGTATCTACTTCCTGGACCTTACTACAGGACAAGGCC
+GCGTGGGACATGGAGAGCCTGATGGCATCCCTGACGTGGTGGTGGAGATGGCTGAAGCAG
+ACTTGCAGGCCTTGTTGAGCAAAGAACTTCGGCCCTTAGGGGCCTACATGAGTGGGCGGC
+TGAAGGTGAAGGGTGACCTGGCCGTGGTCATGAAGCTGGAGGCTGTACTCAAGGCCTTGA
+AGTAGCCGTGTTGGTTGTCCATCAGACACCTAGCCCTGAACCTGGTGCCAACCCAGAGAA
+GCCTCTTGGAATAGGAGGCGTTGGTTTGGGCCATGGAAAACTGAGGCCTGAAGATGTTTC
+AGTCCCAACGAGGAGCCCGGGAGGCTGGGAGACATCTACTGCTGGTCACAGCTGAGTCGG
+GTGTACCACCCCTTAGCCTGTGGTAGTCCTCTGGACAGGCCTTTGCTCGTTCAATCCCCA
+ACAAATGCTTAGTGCTGAGTCGGAACACAGAGTGAAGACAGAGAGCCTGGCCTGCCCTAC
+CCAGCTGATAACCTGACCGACCGGAGAGACGAGAAGCCCAGAAGCTTCTGAATGGCAGCA
+TGTGAAGGGTCAAAGCACATGGATCATGGCTCTGACATTCAGGGAGATCACAGGGAAGGG
+AAGGTGAGGAAGGGTGGCCCTCAAGAAAGGGTTACTGCAGCTGATCCAGGCGGCCCTGCC
+AGAACAGGCTGGGTGGGGAGGGCATGTGATAGAACAATTTGCTTTTCTTATGGGTCTGCT
+CCTGAAGACACCGGGTCCTATCCTCTGGCTCCATCCTGCATGTTTAAGGAGCTGGGCTCA
+GGGCAGCATGTGGGAGAGCCCTGCTGTTCCGTGCTTATAGAGGCTTGGAGCCTCCAACAA
+ATAAATGTGACATTTACGGTGTGGAA
+>TR12|c4_g1_i3 len=2104 path=[2693:0-75 2694:76-97 2714:98-182 2702:183-203 2713:204-246 2707:247-274 2700:275-298 2712:299-345 2688:346-369 2706:370-418 2721:419-440 2724:441-449 2715:450-462 2710:463-483 @2703@!:484-1910 2640:1911-2103] [-1, 2693, 2694, 2714, 2702, 2713, 2707, 2700, 2712, 2688, 2706, 2721, 2724, 2715, 2710, 2703, 2640, -2]
+AGCTGCCACAGGCTGGGCAGGGCAGTCTCCCAGCAGAGGATCGGGGCGTGTCCCGGTTAG
+AAGTCATGCTTGGAAGACGCGCCGGAGAGCTGGCCCTCCTGTCTCTGCCATGGCCTCGTC
+AGTGTCCTGGGGTTCTTGCTGCTGCTGCTCACCTTCCCCATTTCCGGCTGGTTTGCTCTG
+AAGGTTTCTTTTGATCATGATGTTTCTCCCAGTAACATGAGAAACTAGGGCAGTTCCCAT
+CCTTCAGATGGATAAACTGAAGCCCAGACTGAACCAACGGCATCTCGGGAGCCAGGAAGG
+AGCAGAAATTGTTTTCTAGGTCCTGGAATCTGGACATATATATTCCTTTGCAAAATCATC
+CTCCCTTTGGCTCAGATCCAATCAAAAGAAAAGCACCCAGCATACCCAGCAAGCATGGAA
+TAATGAAACTCAGGTCTTGCTTTGCATAACGGTTGCTTAATAGATTGTGCCCACCTATGA
+GAGGATGATTGTGTTTCGACTGGGCCGGATCCGTAACCCCCAGGGGCCTGGCATGGTTCT
+TCTCCTGCCCTTTATTGACTCCTTCCAGAGGGTAGATTTGAGGACCCGAGCCTTCAACGT
+TCCTCCTTGCAAGCTGGCCTCTAAGGATGGGGCTGTGCTGTCGGTGGGAGCTGATGTCCA
+GTTCCGCATCTGGGACCCAGTGCTATCCGTGATGGCTGTGAAGGACCTGAACACAGCTAC
+TCGCATGACAGCCCACAACGCCATGACTAAGGCCCTGCTCAGAAGGCCACTGCAGGAGAT
+CCAGATGGAGAAGCTCAAGATCGGTGACCAGCTCCTGCTGGAGATCAATGACGTGACCAG
+AGCTTGGGGACTGGAGGTCGACCGTGTAGAGCTGGCAGTAGAGGCTGTGTTGCAGCCACC
+GCAAGACAGCCTGACTGTGCCCAGCCTGGACAGCACCCTCCAACAGCTGGCCCTCCACTT
+GCTAGGGGGAAGTATGAACTCAGCGGTCGGACATGTTCCATCCCCAGGGCCAGACACCTT
+GGAGATGATAAATGAAGTGGAACCTCCTGCCTCTCTTGCTGGGGCCGGGCCTGAGCCCAG
+CCCGAAGCAGCCCGTGGCTGAGGGGCTCCTCACAGCCCTGCAACCCTTCCTGTCAGAGGC
+ACTGGTCAGCCAGGTTGGGGCCTGCTACCAGTTCAATGTCATCTTGCCCAGTGGCACCCA
+GAGTATCTACTTCCTGGACCTTACTACAGGACAAGGCCGCGTGGGACATGGAGAGCCTGA
+TGGCATCCCTGACGTGGTGGTGGAGATGGCTGAAGCAGACTTGCAGGCCTTGTTGAGCAA
+AGAACTTCGGCCCTTAGGGGCCTACATGAGTGGGCGGCTGAAGGTGAAGGGTGACCTGGC
+CGTGGTCATGAAGCTGGAGGCTGTACTCAAGGCCTTGAAGTAGCCGTGTTGGTTGTCCAT
+CAGACACCTAGCCCTGAACCTGGTGCCAACCCAGAGAAGCCTCTTGGAATAGGAGGCGTT
+GGTTTGGGCCATGGAAAACTGAGGCCTGAAGATGTTTCAGTCCCAACGAGGAGCCCGGGA
+GGCTGGGAGACATCTACTGCTGGTCACAGCTGAGTCGGGTGTACCACCCCTTAGCCTGTG
+GTAGTCCTCTGGACAGGCCTTTGCTCGTTCAATCCCCAACAAATGCTTAGTGCTGAGTCG
+GAACACAGAGTGAAGACAGAGAGCCTGGCCTGCCCTACCCAGCTGATAACCTGACCGACC
+GGAGAGACGAGAAGCCCAGAAGCTTCTGAATGGCAGCATGTGAAGGGTCAAAGCACATGG
+ATCATGGCTCTGACATTCAGGGAGATCACAGGGAAGGGAAGGTGAGGAAGGGTGGCCCTC
+AAGAAAGGGTTACTGCAGCTGATCCAGGCGGCCCTGCCAGAACAGGCTGGGTGGGGAGGG
+CATGTGATAGAACAATTTGCTTTTCTTATGGGTCTGCTCCTGAAGACACCGGGTCCTATC
+CTCTGGCTCCATCCTGCATGTTTAAGGAGCTGGGCTCAGGGCAGCATGTGGGAGAGCCCT
+GCTGTTCCGTGCTTATAGAGGCTTGGAGCCTCCAACAAATAAATGTGACATTTACGGTGT
+GGAA
+>TR12|c4_g2_i1 len=229 path=[2709:0-31 2685:32-44 2701:45-172 2637:173-196 2638:197-228] [2709, 2685, 2701, 2637, 2638, -2]
+AATAATGAAACTCAGGTCTTGCTTTGCATAACGGTTGCTTAATAGGTAAGGGTGAAAGAT
+ACAGATGTAGTTGAACAACACATCTGACTGCTTCAGGGTAGGTGAAGCCCAAGCAGGCTT
+TCCCCTTTGCATAGCCCTAGGCAGTGAAGTCCCTAGAAAGCCTCTGTGTTTGTTGAGTCT
+AGAAAGGAGCGCTGAGGTGAAGCCAGGTCCTACCTCTACAGTGCCACTG
+>TR13|c0_g1_i1 len=261 path=[275:0-189 276:190-260] [-1, 275, 276, -2]
+TGTCTTTCTCTGAGTTTGTTGAGTAGATACTTTGGTTCCTTGTTCTTAGCCTGAAGTAGG
+AAGGTAATAAAGGGAAGGAAATTATTCTTAAATTGAATTCTTACAGAGAAAGTGTTATAA
+AATCATTGTGGCTGAGGACAGAGAGATGGGTCATTTGTTAAGGGTGTTTGCTACCAAGGT
+CATTCTCACATGGGAGAGGGAGAGAACCAACTCCTACAAGTTACCCTCTGACTTCTACAC
+GTATTCTAACACACATGCCCC
+>TR13|c1_g1_i1 len=301 path=[279:0-300] [-1, 279, -2]
+GCCTCTTCCTGAGAAATAACAGGGAGGGTTTCACTGTGTGCTGATCATGCCTTCACCCAG
+GGCTGGATCACTTTTCTTTAAAAACTTTATTTGTGTGTGTGTGTATGCACATGCGTATGC
+ATGCATGGGTTCCCACAGAGGCCAGAGGAGGGCATTGAATCCCCTGGTACTTGAGTTACA
+GGTATTTGGGACCCACTGCATGTGAGTGCCGAGAGCTGATTGCAAGAGCAGCAAGCACTC
+CTAATAAGTGACCCATCTCTCCACCCCCTTGATTTTATTTTGTAACATTACTGTGGTGAG
+G
+>TR14|c0_g1_i1 len=246 path=[261:0-195 262:196-245] [-1, 261, 262, -2]
+GAAAAGCAGAGACGTATTGAGTTCCCAGAGGCCCATTCAGCAGCCCTTCCTGGAGGACAA
+GGCCTCCCAGGGTGCCAGCCTGCTGCTCTCTCCCCAGCTCTCTGACACATGACACAAAAC
+ATGCTGCTTAGGCTGTGCTTGGAAGACACCAGGAAACCAAAGCAGTCTGGCATTACAAAC
+CTGGCTCTTCATATCCCCTTTTCCATTTAAAGTAGGCTGTAGAGCGAGCTAGACAATCAA
+GTAGCA
+>TR14|c1_g1_i1 len=324 path=[327:0-92 328:93-116 329:117-323] [-1, 327, 328, 329, -2]
+CCATATTCTGACCATTAGTTAGACCTAGAGTGTTCACTTCATGCATATCTACGATGTCGG
+CACTGACAGCACACCTTCTGACATTTCTTCCATCCAGTGGAGTCTGTTGATTTTCTCAAC
+ACTTGTCCCCTCTTCTATAGCCTGACTTCTCTTCCTTTTCTGAACACCCCTGGGCGTCTA
+CCCTAACTGCTACCATGACCTATATGTACAACTTTACTCTGTCCACATCTTAATGTCTGT
+GCTCCCTCTATCCCTTGCCTTTGAGGCTTCAAGAGAGGAAGTTTTATGTGAGGGTCTCTT
+TTTCTTATGTAGTACTTAATTGCC
+>TR14|c3_g1_i1 len=422 path=[441:0-290 447:291-364 444:365-421] [-1, 441, 447, 444, -2]
+CTCATAGAATATGTGACCAGTAAGGGTAATGCTATATGTTTACTGACTGCACTACCTACT
+AATTTTGTTTGTACTCAGAACCATGTTCCCACTGCATGTTTCTATTTACTCCGAAGTAAA
+ATCTTTTTTGGTATTGGCAGTACTGTGCTCTGGGTAGTGATTAGGGCAAAAGAAGACACA
+CAATAAAGAACCAGGTGTTAGACGTCAGCAAGTCAAGGCCTTGGTTCTCAGCAGACAGAA
+GACAGCCCTTCTCAATCCTCATCCCTTCCCTGAACAGACATGTCTTCTGCAAGCTTCTCC
+AAGTCAGTTGTTCACAGGAACATCATCAGAATAAATTTGAAATTATGATTAGTATCTGAT
+AAAGCATAGTGTGTGTCTTAAAAGACACGTTGTTAATCACTGTCTGTGCATGAAAAGCAG
+AG
+>TR14|c4_g1_i1 len=272 path=[298:0-50 305:51-200 301:201-224 302:225-271] [-1, 298, 305, 301, 302, -2]
+GAACACAGCCCATTGCTAAACTGGGAAGGATGGATAATCCATCCTGCAGATTCTCAACCT
+TCCGAATGCTGTGACCCTTTAATACAATTAATTCCTCATTACAGCCCCCCCCACCGTAAA
+ATCATTTCCATTGCTACTTTATAATTTTGCTACTGTTATTGATCATAATGTAAATCTCTG
+TGTTTTCTGAGAGGTCTTATGCCAGACCCTATGAAAGGGTGATGCCCATAGGTTGAGAAG
+TGCTATCAGAGGGTAACTATCCTAAGTCTTTT
+>TR14|c7_g1_i1 len=378 path=[402:0-146 403:147-172 410:173-229 408:230-377] [-1, 402, 403, 410, 408, -2]
+GGAGATCTCAAAGGGGGCCTTCCTCAGTCACCCATTCGGGATATAAGGAAGAAAGAATAG
+GTCATTACACACAGGGGGACTGGAGCGGAGTGTCAGCCTTCATATAACTTCAGTGGGAAG
+AGCAGGTGTAGTATAGCGAGGAAGACCACTGTATCTTGGCATGCAGTGGGGGAAAGGAGG
+AATTATAGACCTCAGAGTGACGCTTCTGGTCTCAGTCAAGTTAATGCTCCCCAGAAACAG
+AAAGCACACAACCAAAGCTGGTCTTTACTTTGAAGTTTCGTGATGACATTGTCTTCATGC
+TGCACTCTGGTTGAGCCCCCTCCTGCTCCCTCTGGTGCCCACACATTAGGGTGTGGGACT
+GTACAGGGTACATACAAC
+>TR14|c9_g1_i1 len=242 path=[308:0-103 321:104-147 320:148-179 319:180-180 317:181-203 307:204-241] [-1, 308, 321, 320, 319, 317, 307, -2]
+CTCTGTAACTCCCGACAAGAGCCACGGACGGACCTGGGGCTGCCAGTGATTGGAAGGCCT
+AGGCACTTCACAGGCCTCTTTGCTCTGTAGCTTCTTCTTTATAGGTGTGGACAGGGAGGA
+GGGTGCGGAGGGCTCTTAAGAAGGAAGGTGGCCTGGGTATGAGAGATGCACATCTCAGCT
+GGGCTTCTGTAAGGAAATACATGAGGCTATCCTGGGATATCTCAAAGGGGGCCTTCCTCA
+GT
+>TR14|c10_g1_i1 len=456 path=[515:0-160 520:161-362 519:363-413 511:414-434 512:435-455] [-1, 515, 520, 519, 511, 512, -2]
+TACAAGCCGGGCTCTTCATATCCCCTTTGCCAGTGAAAGCAGGTACTATGGCCAGCTAGA
+CAATCAAGTAGCCTAGGTTGTCACCATTGTGTGGCTCCTAGGTCCACTTGATACCGATCC
+ATCATCCTCTTGGAAGATATTCATCTTAATAGGCAGGGGGTAAACTCTGAACACTGCTAG
+CATCTTAGGAACTGTGGCAGATGTCAGAGGGCTGAGGGAGGCTGTCAGCAGACACTTCCT
+TCTTATCTGTCGTGCTGGGGGTGGGGCTGGAATGCATCTTCCACTTGCCCCGACATTTCC
+TGTAAACATGAGGGGTGTACATTCATGAGGCGTTCAGAGTGGAACATCCTAAGATGCAGG
+CGTGCGCGGGAGAGTTGACCTTTGTCTTGGACAAGCTTTCTCCTGACTGCTGTTTTTCTG
+ATTTCCTTGCAGTTCCTCAGCACTTTGTTTGCCCCC
+>TR14|c11_g1_i1 len=390 path=[617:0-43 630:44-309 625:310-333 626:334-389] [-1, 617, 630, 625, 626, -2]
+TAGAGAGGCTGAGACTGGCTGCCTACAATCTAATCTACCTCGATAACTTAGGACTAACTC
+TTCCTAGAATGTTTGGTTCTTAAGATAAGGCAGCTCATATAAGTAAGCTATCACACAGGC
+CCAGCTCTGCTCAGAATGGGGGAAGGTCAGCACTCTGACCCCTTCTGCTCTCGAGGGCCT
+GTCTTTCCTCCTCGGCTCTTACTCCTTTGAGACTGCACCCCCTAACTTCTGTCTCATCTT
+CATTTATAGGCCTGGACTCTTTGAAGTCTGATATTGATTACAGTGGGATGTCAATTGTCT
+GCTTGCGACAGGGCACCTGGAACCTATTCAGATAAGCAAGAGGTTTCCACTGTGAACCCA
+ACGAGCTGCGAGCTGTGACCTTGCTCTCAG
+>TR14|c12_g1_i1 len=2364 path=[4004:0-610 @4194@!:611-1077 4047:1078-1099 @4211@!:1100-1621 4171:1622-1794 4165:1795-2363] [-1, 4004, 4194, 4047, 4211, 4171, 4165, -2]
+GAGCTCTTCAGGAGGGGGAATGTGCTTGTGGTTTTTGGTCTTGTGCATTTTGTGACAAAG
+GAATTCCCTTTTGAATCGCGCTGTTCCCTTGAAACCCTGGAGCCTCTGGTTCAAGCAGCG
+CAGTCAGTCTGTGCAGTGTCCCTGACGTCATCCGGCGTATGCATAAGCTCTGCTATTGTC
+TTACCGCTAGAGCAGGGCTGAGGACTGCAGTCTCTGCTGCTGCTCGCAGACCTGCCCTGC
+GCTAGCTACCTAGCCCTGCCTCACTGCATCCCTCAAGAGCCGCGGCAGCCTTTCCTTGCC
+TGCTGGATTTTGAGAAGCAGCTCTTCGATTTGGGCTGGTGTAGGAGCCCTGGCTTTCCAT
+TCTCGAGAGAAAGCTGAAGCGCTCAGAGGAGAATCTGGCAGCTGGACATAGCTCGGACTG
+CATTGTCTGGCTTCATGACCCCTGCTGTGTAGCCGGCTCATCTCTTTGCTCTCAGGAGCA
+CATGCACATCTTACATTTTCCTACTTCCTTTTTCTTTTTCTTTCCCTTCTTCTAATTTTT
+TTTTAAAGCACCTTCTGGAGCCAGCCATGTTTGGTACTGAATCTTCATTGAGCATGTTTT
+TGAACACGTTAACCCCAAAGTTCTACGTGGCCCTGACAGGCACTTCCTCGCTAATATCGG
+GACTTATTTTGATATTTGAATGGTGGTATTTTCGCAAGTATGGAACATCTTTCATTGAAC
+AAGTCTCCGTAAGCCACTTGCGCCCCCTTCTGGGAGGGGTTGACAACAACTCTTCCAATA
+ATTCTAATTCCAGTAATGGAGACTCAGATTCCAACAGACAAAGTGTCTCAGAATGCAAAG
+TATGGCGAAATCCACTGAATCTGTTTAGGGGTGCGGAATATAATCGGTACACTTGGGTCA
+CAGGACGAGAGCCTCTGACCTACTATGACATGAACCTCTCTGCCCAGGACCACCAGACAT
+TCTTTACTTGTGATTCAGATCATCTTCGCCCTGCAGATGCAATAATGCAAAAAGCTTGGA
+GAGAAAGGAACCCTCAAGCCAGGATTTCTGCAGCTCATGAAGCCTTGGAGATAAACGAGT
+GTGCAACTGCGTACATTCTCTTGGCGGAAGAAGAAGCGACAACTATTGCTGAAGCAGAAA
+AACTCTTTAAGCAGGCCCTGAAGGCTGGAGATGGTTGTTACCGGCGCTCTCAGCAGCTAC
+AACATCATGGGTCCCAGTATGAAGCTCAACACAGACGAGACACCAATGTCTTAGTCTATA
+TCAAAAGAAGGCTGGCGATGTGTGCCCGGAGACTTGGAAGGACCAGAGAAGCAGTGAAGA
+TGATGAGAGATTTAATGAAGGAGTTTCCCCTCCTAAGCATGTTCAATATCCATGAGAACC
+TTCTAGAAGCTCTTCTGGAACTCCAAGCTTATGCTGATGTTCAGGCAGTCTTAGCAAAGT
+ATGATGATATAAGCTTACCAAAGTCGGCGACAATATGCTACACAGCCGCCCTGCTCAAAG
+CAAGAGCTGTCTCTGACAAATTCTCTCCAGAGGCTGCGTCTCGGAGGGGGCTGAGCACAG
+CAGAGATGAATGCAGTAGAAGCCATCCACAGAGCTGTGGAATTTAATCCACACGTGCCAA
+AATATCTACTAGAAATGAAAAGCTTAATCCTCCCACCAGAACACATCCTGAAGAGAGGAG
+ACAGTGAAGCGATAGCATATGCATTCTTTCATCTTGCACACTGGAAGAGGGTGGAAGGGG
+CTTTGAATCTCTTGCATTGTACGTGGGAAGGCACTTTCCGGATGATCCCGTATCCCCTGG
+AGAAGGGACACCTATTTTATCCATACCCAATCTGTACAGAAACAGCTGACCGGGAGCTGC
+TTCCCTCTTTCCATGAAGTCTCAGTTTACCCAAAGAAGGAACTTCCCTTCTTCATCCTCT
+TCACTGCTGGACTGTGCTCCTTCACAGCCATGCTGGCCCTCCTGACACATCAGTTTCCGG
+AACTTATGGGAGTCTTCGCAAAAGCTTTCCTCAGCACTTTGTTTGCCCCCTTGAACTTTG
+TTATGGAGAAAGTGGAAAGCATCCTCCCCTCCAGTTTGTGGCATCAGCTGACACGGATCT
+GAGGGAGCCTCCCATCCTTCACTTTCCACACCATCCACCATCTCTTCTGTGCCAACCTCT
+CATGGACCGCAAGAAAGCATGACTTTGAAAAAGGGAAACCATTCTGAGATTTTAAACTGC
+TCATGGACTATCAGTTCCTTATTAAAGGCTGGTTTTGTTGTACAAAATTTATTGATGTTC
+AGTTCTATTTTATTTTGCCTTCAAAACTGACTGATCAAAAAGTAAAAAAAATAAATAAAT
+AAACTTTTGTGTATTGCAAGAAAA
+>TR14|c12_g1_i2 len=2166 path=[4166:0-29 4167:30-52 4168:53-60 4169:61-64 4239:65-101 4257:102-102 4259:103-117 4248:118-126 4236:127-131 4221:132-141 4246:142-155 4234:156-166 4219:167-179 4255:180-182 4250:183-191 4243:192-198 4231:199-237 4215:238-245 4242:246-258 4254:259-261 4249:262-271 4241:272-278 4229:279-307 4212:308-343 @4194@!:344-810 4117:811-814 4228:815-901 @4211@!:902-1423 4171:1424-1596 4165:1597-2165] [-1, 4166, 4167, 4168, 4169, 4239, 4257, 4259, 4248, 4236, 4221, 4246 [...]
+CCGGCGGGGGCTCGGAGCGCAGGCCGCGCGCTTTCCCGCCGCATCCGGGCGCCGGGCGAG
+CTCCGGGGACGCCGGGCCCTGGCGGCGGCGGCGGCTCGAGCCGTGCCTCGGGCGGGTGAA
+TCATCCCGGCCGACAGCGAGCGCCGCGGCGGCCCGTAGCAGCGCCGGAAGATGGCCGAGG
+CGGGCGCGGGCTTCCTGGAGCAGCTCAAGTCCTGCATCGTGTGGTCGTGGACCTATCTGT
+GGACCGTGTGGTTCTTCCTCGTGCTCTTCCTGGTCTACATCCTGAGGGTGCCCCTGAGGA
+TCAACGACAACCTGAGCACAGTGAGCATGTTTTTGAACACGTTAACCCCAAAGTTCTACG
+TGGCCCTGACAGGCACTTCCTCGCTAATATCGGGACTTATTTTGATATTTGAATGGTGGT
+ATTTTCGCAAGTATGGAACATCTTTCATTGAACAAGTCTCCGTAAGCCACTTGCGCCCCC
+TTCTGGGAGGGGTTGACAACAACTCTTCCAATAATTCTAATTCCAGTAATGGAGACTCAG
+ATTCCAACAGACAAAGTGTCTCAGAATGCAAAGTATGGCGAAATCCACTGAATCTGTTTA
+GGGGTGCGGAATATAATCGGTACACTTGGGTCACAGGACGAGAGCCTCTGACCTACTATG
+ACATGAACCTCTCTGCCCAGGACCACCAGACATTCTTTACTTGTGATTCAGATCATCTTC
+GCCCTGCAGATGCAATAATGCAAAAAGCTTGGAGAGAAAGGAACCCTCAAGCCAGGATTT
+CTGCAGCTCATGAAGCCTTGGAGATAAACGAAATTAGGTCCAGAGTTGAAGTTCCCCTAA
+TTGCTTCCTCTACCATCTGGGAGATAAAATTGTTACCAAAGTGTGCAACTGCGTACATTC
+TCTTGGCGGAAGAAGAAGCGACAACTATTGCTGAAGCAGAAAAACTCTTTAAGCAGGCCC
+TGAAGGCTGGAGATGGTTGTTACCGGCGCTCTCAGCAGCTACAACATCATGGGTCCCAGT
+ATGAAGCTCAACACAGACGAGACACCAATGTCTTAGTCTATATCAAAAGAAGGCTGGCGA
+TGTGTGCCCGGAGACTTGGAAGGACCAGAGAAGCAGTGAAGATGATGAGAGATTTAATGA
+AGGAGTTTCCCCTCCTAAGCATGTTCAATATCCATGAGAACCTTCTAGAAGCTCTTCTGG
+AACTCCAAGCTTATGCTGATGTTCAGGCAGTCTTAGCAAAGTATGATGATATAAGCTTAC
+CAAAGTCGGCGACAATATGCTACACAGCCGCCCTGCTCAAAGCAAGAGCTGTCTCTGACA
+AATTCTCTCCAGAGGCTGCGTCTCGGAGGGGGCTGAGCACAGCAGAGATGAATGCAGTAG
+AAGCCATCCACAGAGCTGTGGAATTTAATCCACACGTGCCAAAATATCTACTAGAAATGA
+AAAGCTTAATCCTCCCACCAGAACACATCCTGAAGAGAGGAGACAGTGAAGCGATAGCAT
+ATGCATTCTTTCATCTTGCACACTGGAAGAGGGTGGAAGGGGCTTTGAATCTCTTGCATT
+GTACGTGGGAAGGCACTTTCCGGATGATCCCGTATCCCCTGGAGAAGGGACACCTATTTT
+ATCCATACCCAATCTGTACAGAAACAGCTGACCGGGAGCTGCTTCCCTCTTTCCATGAAG
+TCTCAGTTTACCCAAAGAAGGAACTTCCCTTCTTCATCCTCTTCACTGCTGGACTGTGCT
+CCTTCACAGCCATGCTGGCCCTCCTGACACATCAGTTTCCGGAACTTATGGGAGTCTTCG
+CAAAAGCTTTCCTCAGCACTTTGTTTGCCCCCTTGAACTTTGTTATGGAGAAAGTGGAAA
+GCATCCTCCCCTCCAGTTTGTGGCATCAGCTGACACGGATCTGAGGGAGCCTCCCATCCT
+TCACTTTCCACACCATCCACCATCTCTTCTGTGCCAACCTCTCATGGACCGCAAGAAAGC
+ATGACTTTGAAAAAGGGAAACCATTCTGAGATTTTAAACTGCTCATGGACTATCAGTTCC
+TTATTAAAGGCTGGTTTTGTTGTACAAAATTTATTGATGTTCAGTTCTATTTTATTTTGC
+CTTCAAAACTGACTGATCAAAAAGTAAAAAAAATAAATAAATAAACTTTTGTGTATTGCA
+AGAAAA
+>TR14|c12_g1_i3 len=2097 path=[4166:0-29 4167:30-52 4168:53-60 4169:61-64 4239:65-101 4257:102-102 4259:103-117 4248:118-126 4236:127-131 4221:132-141 4246:142-155 4234:156-166 4219:167-179 4255:180-182 4250:183-191 4243:192-198 4231:199-237 4215:238-245 4242:246-258 4254:259-261 4249:262-271 4241:272-278 4229:279-307 4212:308-343 @4194@!:344-810 4047:811-832 @4211@!:833-1354 4171:1355-1527 4165:1528-2096] [-1, 4166, 4167, 4168, 4169, 4239, 4257, 4259, 4248, 4236, 4221, 4246, 4234, 4219, [...]
+CCGGCGGGGGCTCGGAGCGCAGGCCGCGCGCTTTCCCGCCGCATCCGGGCGCCGGGCGAG
+CTCCGGGGACGCCGGGCCCTGGCGGCGGCGGCGGCTCGAGCCGTGCCTCGGGCGGGTGAA
+TCATCCCGGCCGACAGCGAGCGCCGCGGCGGCCCGTAGCAGCGCCGGAAGATGGCCGAGG
+CGGGCGCGGGCTTCCTGGAGCAGCTCAAGTCCTGCATCGTGTGGTCGTGGACCTATCTGT
+GGACCGTGTGGTTCTTCCTCGTGCTCTTCCTGGTCTACATCCTGAGGGTGCCCCTGAGGA
+TCAACGACAACCTGAGCACAGTGAGCATGTTTTTGAACACGTTAACCCCAAAGTTCTACG
+TGGCCCTGACAGGCACTTCCTCGCTAATATCGGGACTTATTTTGATATTTGAATGGTGGT
+ATTTTCGCAAGTATGGAACATCTTTCATTGAACAAGTCTCCGTAAGCCACTTGCGCCCCC
+TTCTGGGAGGGGTTGACAACAACTCTTCCAATAATTCTAATTCCAGTAATGGAGACTCAG
+ATTCCAACAGACAAAGTGTCTCAGAATGCAAAGTATGGCGAAATCCACTGAATCTGTTTA
+GGGGTGCGGAATATAATCGGTACACTTGGGTCACAGGACGAGAGCCTCTGACCTACTATG
+ACATGAACCTCTCTGCCCAGGACCACCAGACATTCTTTACTTGTGATTCAGATCATCTTC
+GCCCTGCAGATGCAATAATGCAAAAAGCTTGGAGAGAAAGGAACCCTCAAGCCAGGATTT
+CTGCAGCTCATGAAGCCTTGGAGATAAACGAGTGTGCAACTGCGTACATTCTCTTGGCGG
+AAGAAGAAGCGACAACTATTGCTGAAGCAGAAAAACTCTTTAAGCAGGCCCTGAAGGCTG
+GAGATGGTTGTTACCGGCGCTCTCAGCAGCTACAACATCATGGGTCCCAGTATGAAGCTC
+AACACAGACGAGACACCAATGTCTTAGTCTATATCAAAAGAAGGCTGGCGATGTGTGCCC
+GGAGACTTGGAAGGACCAGAGAAGCAGTGAAGATGATGAGAGATTTAATGAAGGAGTTTC
+CCCTCCTAAGCATGTTCAATATCCATGAGAACCTTCTAGAAGCTCTTCTGGAACTCCAAG
+CTTATGCTGATGTTCAGGCAGTCTTAGCAAAGTATGATGATATAAGCTTACCAAAGTCGG
+CGACAATATGCTACACAGCCGCCCTGCTCAAAGCAAGAGCTGTCTCTGACAAATTCTCTC
+CAGAGGCTGCGTCTCGGAGGGGGCTGAGCACAGCAGAGATGAATGCAGTAGAAGCCATCC
+ACAGAGCTGTGGAATTTAATCCACACGTGCCAAAATATCTACTAGAAATGAAAAGCTTAA
+TCCTCCCACCAGAACACATCCTGAAGAGAGGAGACAGTGAAGCGATAGCATATGCATTCT
+TTCATCTTGCACACTGGAAGAGGGTGGAAGGGGCTTTGAATCTCTTGCATTGTACGTGGG
+AAGGCACTTTCCGGATGATCCCGTATCCCCTGGAGAAGGGACACCTATTTTATCCATACC
+CAATCTGTACAGAAACAGCTGACCGGGAGCTGCTTCCCTCTTTCCATGAAGTCTCAGTTT
+ACCCAAAGAAGGAACTTCCCTTCTTCATCCTCTTCACTGCTGGACTGTGCTCCTTCACAG
+CCATGCTGGCCCTCCTGACACATCAGTTTCCGGAACTTATGGGAGTCTTCGCAAAAGCTT
+TCCTCAGCACTTTGTTTGCCCCCTTGAACTTTGTTATGGAGAAAGTGGAAAGCATCCTCC
+CCTCCAGTTTGTGGCATCAGCTGACACGGATCTGAGGGAGCCTCCCATCCTTCACTTTCC
+ACACCATCCACCATCTCTTCTGTGCCAACCTCTCATGGACCGCAAGAAAGCATGACTTTG
+AAAAAGGGAAACCATTCTGAGATTTTAAACTGCTCATGGACTATCAGTTCCTTATTAAAG
+GCTGGTTTTGTTGTACAAAATTTATTGATGTTCAGTTCTATTTTATTTTGCCTTCAAAAC
+TGACTGATCAAAAAGTAAAAAAAATAAATAAATAAACTTTTGTGTATTGCAAGAAAA
+>TR14|c12_g1_i4 len=2015 path=[4166:0-29 4167:30-52 4168:53-60 4169:61-64 4239:65-101 4257:102-102 4259:103-117 4248:118-126 4236:127-131 4221:132-141 4246:142-155 4234:156-166 4219:167-179 4255:180-182 4250:183-191 4243:192-198 4231:199-237 4215:238-245 4242:246-258 4254:259-261 4249:262-271 4241:272-278 4229:279-307 4212:308-343 @4194@!:344-810 4117:811-814 4228:815-901 @4211@!:902-1423 3950:1424-1445 3951:1446-2014] [-1, 4166, 4167, 4168, 4169, 4239, 4257, 4259, 4248, 4236, 4221, 4246 [...]
+CCGGCGGGGGCTCGGAGCGCAGGCCGCGCGCTTTCCCGCCGCATCCGGGCGCCGGGCGAG
+CTCCGGGGACGCCGGGCCCTGGCGGCGGCGGCGGCTCGAGCCGTGCCTCGGGCGGGTGAA
+TCATCCCGGCCGACAGCGAGCGCCGCGGCGGCCCGTAGCAGCGCCGGAAGATGGCCGAGG
+CGGGCGCGGGCTTCCTGGAGCAGCTCAAGTCCTGCATCGTGTGGTCGTGGACCTATCTGT
+GGACCGTGTGGTTCTTCCTCGTGCTCTTCCTGGTCTACATCCTGAGGGTGCCCCTGAGGA
+TCAACGACAACCTGAGCACAGTGAGCATGTTTTTGAACACGTTAACCCCAAAGTTCTACG
+TGGCCCTGACAGGCACTTCCTCGCTAATATCGGGACTTATTTTGATATTTGAATGGTGGT
+ATTTTCGCAAGTATGGAACATCTTTCATTGAACAAGTCTCCGTAAGCCACTTGCGCCCCC
+TTCTGGGAGGGGTTGACAACAACTCTTCCAATAATTCTAATTCCAGTAATGGAGACTCAG
+ATTCCAACAGACAAAGTGTCTCAGAATGCAAAGTATGGCGAAATCCACTGAATCTGTTTA
+GGGGTGCGGAATATAATCGGTACACTTGGGTCACAGGACGAGAGCCTCTGACCTACTATG
+ACATGAACCTCTCTGCCCAGGACCACCAGACATTCTTTACTTGTGATTCAGATCATCTTC
+GCCCTGCAGATGCAATAATGCAAAAAGCTTGGAGAGAAAGGAACCCTCAAGCCAGGATTT
+CTGCAGCTCATGAAGCCTTGGAGATAAACGAAATTAGGTCCAGAGTTGAAGTTCCCCTAA
+TTGCTTCCTCTACCATCTGGGAGATAAAATTGTTACCAAAGTGTGCAACTGCGTACATTC
+TCTTGGCGGAAGAAGAAGCGACAACTATTGCTGAAGCAGAAAAACTCTTTAAGCAGGCCC
+TGAAGGCTGGAGATGGTTGTTACCGGCGCTCTCAGCAGCTACAACATCATGGGTCCCAGT
+ATGAAGCTCAACACAGACGAGACACCAATGTCTTAGTCTATATCAAAAGAAGGCTGGCGA
+TGTGTGCCCGGAGACTTGGAAGGACCAGAGAAGCAGTGAAGATGATGAGAGATTTAATGA
+AGGAGTTTCCCCTCCTAAGCATGTTCAATATCCATGAGAACCTTCTAGAAGCTCTTCTGG
+AACTCCAAGCTTATGCTGATGTTCAGGCAGTCTTAGCAAAGTATGATGATATAAGCTTAC
+CAAAGTCGGCGACAATATGCTACACAGCCGCCCTGCTCAAAGCAAGAGCTGTCTCTGACA
+AATTCTCTCCAGAGGCTGCGTCTCGGAGGGGGCTGAGCACAGCAGAGATGAATGCAGTAG
+AAGCCATCCACAGAGCTGTGGAATTTAATCCACACGTGCCAAAACTTTCCGGATGATCCC
+GTATCCCCTGGAGAAGGGACACCTATTTTATCCATACCCAATCTGTACAGAAACAGCTGA
+CCGGGAGCTGCTTCCCTCTTTCCATGAAGTCTCAGTTTACCCAAAGAAGGAACTTCCCTT
+CTTCATCCTCTTCACTGCTGGACTGTGCTCCTTCACAGCCATGCTGGCCCTCCTGACACA
+TCAGTTTCCGGAACTTATGGGAGTCTTCGCAAAAGCTTTCCTCAGCACTTTGTTTGCCCC
+CTTGAACTTTGTTATGGAGAAAGTGGAAAGCATCCTCCCCTCCAGTTTGTGGCATCAGCT
+GACACGGATCTGAGGGAGCCTCCCATCCTTCACTTTCCACACCATCCACCATCTCTTCTG
+TGCCAACCTCTCATGGACCGCAAGAAAGCATGACTTTGAAAAAGGGAAACCATTCTGAGA
+TTTTAAACTGCTCATGGACTATCAGTTCCTTATTAAAGGCTGGTTTTGTTGTACAAAATT
+TATTGATGTTCAGTTCTATTTTATTTTGCCTTCAAAACTGACTGATCAAAAAGTAAAAAA
+AATAAATAAATAAACTTTTGTGTATTGCAAGAAAA
+>TR14|c12_g1_i5 len=2433 path=[4004:0-610 @4194@!:611-1077 4117:1078-1081 4228:1082-1168 @4211@!:1169-1690 4171:1691-1863 4165:1864-2432] [-1, 4004, 4194, 4117, 4228, 4211, 4171, 4165, -2]
+GAGCTCTTCAGGAGGGGGAATGTGCTTGTGGTTTTTGGTCTTGTGCATTTTGTGACAAAG
+GAATTCCCTTTTGAATCGCGCTGTTCCCTTGAAACCCTGGAGCCTCTGGTTCAAGCAGCG
+CAGTCAGTCTGTGCAGTGTCCCTGACGTCATCCGGCGTATGCATAAGCTCTGCTATTGTC
+TTACCGCTAGAGCAGGGCTGAGGACTGCAGTCTCTGCTGCTGCTCGCAGACCTGCCCTGC
+GCTAGCTACCTAGCCCTGCCTCACTGCATCCCTCAAGAGCCGCGGCAGCCTTTCCTTGCC
+TGCTGGATTTTGAGAAGCAGCTCTTCGATTTGGGCTGGTGTAGGAGCCCTGGCTTTCCAT
+TCTCGAGAGAAAGCTGAAGCGCTCAGAGGAGAATCTGGCAGCTGGACATAGCTCGGACTG
+CATTGTCTGGCTTCATGACCCCTGCTGTGTAGCCGGCTCATCTCTTTGCTCTCAGGAGCA
+CATGCACATCTTACATTTTCCTACTTCCTTTTTCTTTTTCTTTCCCTTCTTCTAATTTTT
+TTTTAAAGCACCTTCTGGAGCCAGCCATGTTTGGTACTGAATCTTCATTGAGCATGTTTT
+TGAACACGTTAACCCCAAAGTTCTACGTGGCCCTGACAGGCACTTCCTCGCTAATATCGG
+GACTTATTTTGATATTTGAATGGTGGTATTTTCGCAAGTATGGAACATCTTTCATTGAAC
+AAGTCTCCGTAAGCCACTTGCGCCCCCTTCTGGGAGGGGTTGACAACAACTCTTCCAATA
+ATTCTAATTCCAGTAATGGAGACTCAGATTCCAACAGACAAAGTGTCTCAGAATGCAAAG
+TATGGCGAAATCCACTGAATCTGTTTAGGGGTGCGGAATATAATCGGTACACTTGGGTCA
+CAGGACGAGAGCCTCTGACCTACTATGACATGAACCTCTCTGCCCAGGACCACCAGACAT
+TCTTTACTTGTGATTCAGATCATCTTCGCCCTGCAGATGCAATAATGCAAAAAGCTTGGA
+GAGAAAGGAACCCTCAAGCCAGGATTTCTGCAGCTCATGAAGCCTTGGAGATAAACGAAA
+TTAGGTCCAGAGTTGAAGTTCCCCTAATTGCTTCCTCTACCATCTGGGAGATAAAATTGT
+TACCAAAGTGTGCAACTGCGTACATTCTCTTGGCGGAAGAAGAAGCGACAACTATTGCTG
+AAGCAGAAAAACTCTTTAAGCAGGCCCTGAAGGCTGGAGATGGTTGTTACCGGCGCTCTC
+AGCAGCTACAACATCATGGGTCCCAGTATGAAGCTCAACACAGACGAGACACCAATGTCT
+TAGTCTATATCAAAAGAAGGCTGGCGATGTGTGCCCGGAGACTTGGAAGGACCAGAGAAG
+CAGTGAAGATGATGAGAGATTTAATGAAGGAGTTTCCCCTCCTAAGCATGTTCAATATCC
+ATGAGAACCTTCTAGAAGCTCTTCTGGAACTCCAAGCTTATGCTGATGTTCAGGCAGTCT
+TAGCAAAGTATGATGATATAAGCTTACCAAAGTCGGCGACAATATGCTACACAGCCGCCC
+TGCTCAAAGCAAGAGCTGTCTCTGACAAATTCTCTCCAGAGGCTGCGTCTCGGAGGGGGC
+TGAGCACAGCAGAGATGAATGCAGTAGAAGCCATCCACAGAGCTGTGGAATTTAATCCAC
+ACGTGCCAAAATATCTACTAGAAATGAAAAGCTTAATCCTCCCACCAGAACACATCCTGA
+AGAGAGGAGACAGTGAAGCGATAGCATATGCATTCTTTCATCTTGCACACTGGAAGAGGG
+TGGAAGGGGCTTTGAATCTCTTGCATTGTACGTGGGAAGGCACTTTCCGGATGATCCCGT
+ATCCCCTGGAGAAGGGACACCTATTTTATCCATACCCAATCTGTACAGAAACAGCTGACC
+GGGAGCTGCTTCCCTCTTTCCATGAAGTCTCAGTTTACCCAAAGAAGGAACTTCCCTTCT
+TCATCCTCTTCACTGCTGGACTGTGCTCCTTCACAGCCATGCTGGCCCTCCTGACACATC
+AGTTTCCGGAACTTATGGGAGTCTTCGCAAAAGCTTTCCTCAGCACTTTGTTTGCCCCCT
+TGAACTTTGTTATGGAGAAAGTGGAAAGCATCCTCCCCTCCAGTTTGTGGCATCAGCTGA
+CACGGATCTGAGGGAGCCTCCCATCCTTCACTTTCCACACCATCCACCATCTCTTCTGTG
+CCAACCTCTCATGGACCGCAAGAAAGCATGACTTTGAAAAAGGGAAACCATTCTGAGATT
+TTAAACTGCTCATGGACTATCAGTTCCTTATTAAAGGCTGGTTTTGTTGTACAAAATTTA
+TTGATGTTCAGTTCTATTTTATTTTGCCTTCAAAACTGACTGATCAAAAAGTAAAAAAAA
+TAAATAAATAAACTTTTGTGTATTGCAAGAAAA
+>TR14|c12_g1_i6 len=2213 path=[4004:0-610 @4194@!:611-1077 4047:1078-1099 @4211@!:1100-1621 3950:1622-1643 3951:1644-2212] [-1, 4004, 4194, 4047, 4211, 3950, 3951, -2]
+GAGCTCTTCAGGAGGGGGAATGTGCTTGTGGTTTTTGGTCTTGTGCATTTTGTGACAAAG
+GAATTCCCTTTTGAATCGCGCTGTTCCCTTGAAACCCTGGAGCCTCTGGTTCAAGCAGCG
+CAGTCAGTCTGTGCAGTGTCCCTGACGTCATCCGGCGTATGCATAAGCTCTGCTATTGTC
+TTACCGCTAGAGCAGGGCTGAGGACTGCAGTCTCTGCTGCTGCTCGCAGACCTGCCCTGC
+GCTAGCTACCTAGCCCTGCCTCACTGCATCCCTCAAGAGCCGCGGCAGCCTTTCCTTGCC
+TGCTGGATTTTGAGAAGCAGCTCTTCGATTTGGGCTGGTGTAGGAGCCCTGGCTTTCCAT
+TCTCGAGAGAAAGCTGAAGCGCTCAGAGGAGAATCTGGCAGCTGGACATAGCTCGGACTG
+CATTGTCTGGCTTCATGACCCCTGCTGTGTAGCCGGCTCATCTCTTTGCTCTCAGGAGCA
+CATGCACATCTTACATTTTCCTACTTCCTTTTTCTTTTTCTTTCCCTTCTTCTAATTTTT
+TTTTAAAGCACCTTCTGGAGCCAGCCATGTTTGGTACTGAATCTTCATTGAGCATGTTTT
+TGAACACGTTAACCCCAAAGTTCTACGTGGCCCTGACAGGCACTTCCTCGCTAATATCGG
+GACTTATTTTGATATTTGAATGGTGGTATTTTCGCAAGTATGGAACATCTTTCATTGAAC
+AAGTCTCCGTAAGCCACTTGCGCCCCCTTCTGGGAGGGGTTGACAACAACTCTTCCAATA
+ATTCTAATTCCAGTAATGGAGACTCAGATTCCAACAGACAAAGTGTCTCAGAATGCAAAG
+TATGGCGAAATCCACTGAATCTGTTTAGGGGTGCGGAATATAATCGGTACACTTGGGTCA
+CAGGACGAGAGCCTCTGACCTACTATGACATGAACCTCTCTGCCCAGGACCACCAGACAT
+TCTTTACTTGTGATTCAGATCATCTTCGCCCTGCAGATGCAATAATGCAAAAAGCTTGGA
+GAGAAAGGAACCCTCAAGCCAGGATTTCTGCAGCTCATGAAGCCTTGGAGATAAACGAGT
+GTGCAACTGCGTACATTCTCTTGGCGGAAGAAGAAGCGACAACTATTGCTGAAGCAGAAA
+AACTCTTTAAGCAGGCCCTGAAGGCTGGAGATGGTTGTTACCGGCGCTCTCAGCAGCTAC
+AACATCATGGGTCCCAGTATGAAGCTCAACACAGACGAGACACCAATGTCTTAGTCTATA
+TCAAAAGAAGGCTGGCGATGTGTGCCCGGAGACTTGGAAGGACCAGAGAAGCAGTGAAGA
+TGATGAGAGATTTAATGAAGGAGTTTCCCCTCCTAAGCATGTTCAATATCCATGAGAACC
+TTCTAGAAGCTCTTCTGGAACTCCAAGCTTATGCTGATGTTCAGGCAGTCTTAGCAAAGT
+ATGATGATATAAGCTTACCAAAGTCGGCGACAATATGCTACACAGCCGCCCTGCTCAAAG
+CAAGAGCTGTCTCTGACAAATTCTCTCCAGAGGCTGCGTCTCGGAGGGGGCTGAGCACAG
+CAGAGATGAATGCAGTAGAAGCCATCCACAGAGCTGTGGAATTTAATCCACACGTGCCAA
+AACTTTCCGGATGATCCCGTATCCCCTGGAGAAGGGACACCTATTTTATCCATACCCAAT
+CTGTACAGAAACAGCTGACCGGGAGCTGCTTCCCTCTTTCCATGAAGTCTCAGTTTACCC
+AAAGAAGGAACTTCCCTTCTTCATCCTCTTCACTGCTGGACTGTGCTCCTTCACAGCCAT
+GCTGGCCCTCCTGACACATCAGTTTCCGGAACTTATGGGAGTCTTCGCAAAAGCTTTCCT
+CAGCACTTTGTTTGCCCCCTTGAACTTTGTTATGGAGAAAGTGGAAAGCATCCTCCCCTC
+CAGTTTGTGGCATCAGCTGACACGGATCTGAGGGAGCCTCCCATCCTTCACTTTCCACAC
+CATCCACCATCTCTTCTGTGCCAACCTCTCATGGACCGCAAGAAAGCATGACTTTGAAAA
+AGGGAAACCATTCTGAGATTTTAAACTGCTCATGGACTATCAGTTCCTTATTAAAGGCTG
+GTTTTGTTGTACAAAATTTATTGATGTTCAGTTCTATTTTATTTTGCCTTCAAAACTGAC
+TGATCAAAAAGTAAAAAAAATAAATAAATAAACTTTTGTGTATTGCAAGAAAA
+>TR14|c12_g1_i7 len=1946 path=[4166:0-29 4167:30-52 4168:53-60 4169:61-64 4239:65-101 4257:102-102 4259:103-117 4248:118-126 4236:127-131 4221:132-141 4246:142-155 4234:156-166 4219:167-179 4255:180-182 4250:183-191 4243:192-198 4231:199-237 4215:238-245 4242:246-258 4254:259-261 4249:262-271 4241:272-278 4229:279-307 4212:308-343 @4194@!:344-810 4047:811-832 @4211@!:833-1354 3950:1355-1376 3951:1377-1945] [-1, 4166, 4167, 4168, 4169, 4239, 4257, 4259, 4248, 4236, 4221, 4246, 4234, 4219, [...]
+CCGGCGGGGGCTCGGAGCGCAGGCCGCGCGCTTTCCCGCCGCATCCGGGCGCCGGGCGAG
+CTCCGGGGACGCCGGGCCCTGGCGGCGGCGGCGGCTCGAGCCGTGCCTCGGGCGGGTGAA
+TCATCCCGGCCGACAGCGAGCGCCGCGGCGGCCCGTAGCAGCGCCGGAAGATGGCCGAGG
+CGGGCGCGGGCTTCCTGGAGCAGCTCAAGTCCTGCATCGTGTGGTCGTGGACCTATCTGT
+GGACCGTGTGGTTCTTCCTCGTGCTCTTCCTGGTCTACATCCTGAGGGTGCCCCTGAGGA
+TCAACGACAACCTGAGCACAGTGAGCATGTTTTTGAACACGTTAACCCCAAAGTTCTACG
+TGGCCCTGACAGGCACTTCCTCGCTAATATCGGGACTTATTTTGATATTTGAATGGTGGT
+ATTTTCGCAAGTATGGAACATCTTTCATTGAACAAGTCTCCGTAAGCCACTTGCGCCCCC
+TTCTGGGAGGGGTTGACAACAACTCTTCCAATAATTCTAATTCCAGTAATGGAGACTCAG
+ATTCCAACAGACAAAGTGTCTCAGAATGCAAAGTATGGCGAAATCCACTGAATCTGTTTA
+GGGGTGCGGAATATAATCGGTACACTTGGGTCACAGGACGAGAGCCTCTGACCTACTATG
+ACATGAACCTCTCTGCCCAGGACCACCAGACATTCTTTACTTGTGATTCAGATCATCTTC
+GCCCTGCAGATGCAATAATGCAAAAAGCTTGGAGAGAAAGGAACCCTCAAGCCAGGATTT
+CTGCAGCTCATGAAGCCTTGGAGATAAACGAGTGTGCAACTGCGTACATTCTCTTGGCGG
+AAGAAGAAGCGACAACTATTGCTGAAGCAGAAAAACTCTTTAAGCAGGCCCTGAAGGCTG
+GAGATGGTTGTTACCGGCGCTCTCAGCAGCTACAACATCATGGGTCCCAGTATGAAGCTC
+AACACAGACGAGACACCAATGTCTTAGTCTATATCAAAAGAAGGCTGGCGATGTGTGCCC
+GGAGACTTGGAAGGACCAGAGAAGCAGTGAAGATGATGAGAGATTTAATGAAGGAGTTTC
+CCCTCCTAAGCATGTTCAATATCCATGAGAACCTTCTAGAAGCTCTTCTGGAACTCCAAG
+CTTATGCTGATGTTCAGGCAGTCTTAGCAAAGTATGATGATATAAGCTTACCAAAGTCGG
+CGACAATATGCTACACAGCCGCCCTGCTCAAAGCAAGAGCTGTCTCTGACAAATTCTCTC
+CAGAGGCTGCGTCTCGGAGGGGGCTGAGCACAGCAGAGATGAATGCAGTAGAAGCCATCC
+ACAGAGCTGTGGAATTTAATCCACACGTGCCAAAACTTTCCGGATGATCCCGTATCCCCT
+GGAGAAGGGACACCTATTTTATCCATACCCAATCTGTACAGAAACAGCTGACCGGGAGCT
+GCTTCCCTCTTTCCATGAAGTCTCAGTTTACCCAAAGAAGGAACTTCCCTTCTTCATCCT
+CTTCACTGCTGGACTGTGCTCCTTCACAGCCATGCTGGCCCTCCTGACACATCAGTTTCC
+GGAACTTATGGGAGTCTTCGCAAAAGCTTTCCTCAGCACTTTGTTTGCCCCCTTGAACTT
+TGTTATGGAGAAAGTGGAAAGCATCCTCCCCTCCAGTTTGTGGCATCAGCTGACACGGAT
+CTGAGGGAGCCTCCCATCCTTCACTTTCCACACCATCCACCATCTCTTCTGTGCCAACCT
+CTCATGGACCGCAAGAAAGCATGACTTTGAAAAAGGGAAACCATTCTGAGATTTTAAACT
+GCTCATGGACTATCAGTTCCTTATTAAAGGCTGGTTTTGTTGTACAAAATTTATTGATGT
+TCAGTTCTATTTTATTTTGCCTTCAAAACTGACTGATCAAAAAGTAAAAAAAATAAATAA
+ATAAACTTTTGTGTATTGCAAGAAAA
+>TR14|c12_g1_i8 len=2282 path=[4004:0-610 @4194@!:611-1077 4117:1078-1081 4228:1082-1168 @4211@!:1169-1690 3950:1691-1712 3951:1713-2281] [-1, 4004, 4194, 4117, 4228, 4211, 3950, 3951, -2]
+GAGCTCTTCAGGAGGGGGAATGTGCTTGTGGTTTTTGGTCTTGTGCATTTTGTGACAAAG
+GAATTCCCTTTTGAATCGCGCTGTTCCCTTGAAACCCTGGAGCCTCTGGTTCAAGCAGCG
+CAGTCAGTCTGTGCAGTGTCCCTGACGTCATCCGGCGTATGCATAAGCTCTGCTATTGTC
+TTACCGCTAGAGCAGGGCTGAGGACTGCAGTCTCTGCTGCTGCTCGCAGACCTGCCCTGC
+GCTAGCTACCTAGCCCTGCCTCACTGCATCCCTCAAGAGCCGCGGCAGCCTTTCCTTGCC
+TGCTGGATTTTGAGAAGCAGCTCTTCGATTTGGGCTGGTGTAGGAGCCCTGGCTTTCCAT
+TCTCGAGAGAAAGCTGAAGCGCTCAGAGGAGAATCTGGCAGCTGGACATAGCTCGGACTG
+CATTGTCTGGCTTCATGACCCCTGCTGTGTAGCCGGCTCATCTCTTTGCTCTCAGGAGCA
+CATGCACATCTTACATTTTCCTACTTCCTTTTTCTTTTTCTTTCCCTTCTTCTAATTTTT
+TTTTAAAGCACCTTCTGGAGCCAGCCATGTTTGGTACTGAATCTTCATTGAGCATGTTTT
+TGAACACGTTAACCCCAAAGTTCTACGTGGCCCTGACAGGCACTTCCTCGCTAATATCGG
+GACTTATTTTGATATTTGAATGGTGGTATTTTCGCAAGTATGGAACATCTTTCATTGAAC
+AAGTCTCCGTAAGCCACTTGCGCCCCCTTCTGGGAGGGGTTGACAACAACTCTTCCAATA
+ATTCTAATTCCAGTAATGGAGACTCAGATTCCAACAGACAAAGTGTCTCAGAATGCAAAG
+TATGGCGAAATCCACTGAATCTGTTTAGGGGTGCGGAATATAATCGGTACACTTGGGTCA
+CAGGACGAGAGCCTCTGACCTACTATGACATGAACCTCTCTGCCCAGGACCACCAGACAT
+TCTTTACTTGTGATTCAGATCATCTTCGCCCTGCAGATGCAATAATGCAAAAAGCTTGGA
+GAGAAAGGAACCCTCAAGCCAGGATTTCTGCAGCTCATGAAGCCTTGGAGATAAACGAAA
+TTAGGTCCAGAGTTGAAGTTCCCCTAATTGCTTCCTCTACCATCTGGGAGATAAAATTGT
+TACCAAAGTGTGCAACTGCGTACATTCTCTTGGCGGAAGAAGAAGCGACAACTATTGCTG
+AAGCAGAAAAACTCTTTAAGCAGGCCCTGAAGGCTGGAGATGGTTGTTACCGGCGCTCTC
+AGCAGCTACAACATCATGGGTCCCAGTATGAAGCTCAACACAGACGAGACACCAATGTCT
+TAGTCTATATCAAAAGAAGGCTGGCGATGTGTGCCCGGAGACTTGGAAGGACCAGAGAAG
+CAGTGAAGATGATGAGAGATTTAATGAAGGAGTTTCCCCTCCTAAGCATGTTCAATATCC
+ATGAGAACCTTCTAGAAGCTCTTCTGGAACTCCAAGCTTATGCTGATGTTCAGGCAGTCT
+TAGCAAAGTATGATGATATAAGCTTACCAAAGTCGGCGACAATATGCTACACAGCCGCCC
+TGCTCAAAGCAAGAGCTGTCTCTGACAAATTCTCTCCAGAGGCTGCGTCTCGGAGGGGGC
+TGAGCACAGCAGAGATGAATGCAGTAGAAGCCATCCACAGAGCTGTGGAATTTAATCCAC
+ACGTGCCAAAACTTTCCGGATGATCCCGTATCCCCTGGAGAAGGGACACCTATTTTATCC
+ATACCCAATCTGTACAGAAACAGCTGACCGGGAGCTGCTTCCCTCTTTCCATGAAGTCTC
+AGTTTACCCAAAGAAGGAACTTCCCTTCTTCATCCTCTTCACTGCTGGACTGTGCTCCTT
+CACAGCCATGCTGGCCCTCCTGACACATCAGTTTCCGGAACTTATGGGAGTCTTCGCAAA
+AGCTTTCCTCAGCACTTTGTTTGCCCCCTTGAACTTTGTTATGGAGAAAGTGGAAAGCAT
+CCTCCCCTCCAGTTTGTGGCATCAGCTGACACGGATCTGAGGGAGCCTCCCATCCTTCAC
+TTTCCACACCATCCACCATCTCTTCTGTGCCAACCTCTCATGGACCGCAAGAAAGCATGA
+CTTTGAAAAAGGGAAACCATTCTGAGATTTTAAACTGCTCATGGACTATCAGTTCCTTAT
+TAAAGGCTGGTTTTGTTGTACAAAATTTATTGATGTTCAGTTCTATTTTATTTTGCCTTC
+AAAACTGACTGATCAAAAAGTAAAAAAAATAAATAAATAAACTTTTGTGTATTGCAAGAA
+AA
+>TR15|c0_g1_i1 len=3745 path=[6028:0-88 6297:89-105 6273:106-110 6316:111-119 6338:120-133 6329:134-180 6343:181-184 6342:185-223 6337:224-232 6328:233-279 6294:280-395 6327:396-428 6313:429-442 6293:443-464 6341:465-466 6336:467-479 6326:480-487 6340:488-503 6335:504-511 6325:512-527 6311:528-538 6290:539-586 6263:587-606 6229:607-630 6289:631-725 6169:726-742 6262:743-813 5953:814-857 5954:858-859 6261:860-919 6071:920-943 6334:944-955 6310:956-993 6344:994-999 6347:1000-1000 6309:1001 [...]
+GCCAGGGTGACCACTAGACTGAGCTGGGGCGAACCCTGGGCGGGGGCGGGGGCCGAGGCA
+CGGGGCCGCAGTCGTTGTTCCAGCTGCCACCGTGACTGGCCTAGGTCCGCCTCCGCCAGC
+GCTGGGCCCGGCTGAATCAGACCTCGGGCGTCCGGCGGCGGGTCTGCTGCCGAACGGAGG
+GCGCAGGTGAGCCTAGGACGCTGAGCGCGCTGCCCTACTCTGCCTCGGCGGGGTGGAGGG
+CTGGCCGGGGGTGCTGGACAGACTTGTGCAGCTCCGTGAAGTGCAGCCCCGACCCCCTGG
+CGCCTGTTCTCACGAAGTCGCTTTTAAGACTAGCGAGCTGACTTCGGGGAGCCAAGAGAT
+TTTTCTGCGTTTCCTCAGGCATCGGTGAGAACTCTCAAGTCTCCAGCCATGCAGCTACAG
+GCCCTCCTCCAAAAGGACCGCCCCATGCCACAAAGGGAGCCACTCGAGTTTTCATGGCAT
+CGAGCTGGCGAACTCTGACGTGCATCCTTGACAACAAGAGTTGCTTGTTAACCTCCCAGG
+GAGGATCCCTTTCCTTAGGAGGGCCAGGCTGAGGGGGTCAGGGCTGGCCAGGTCTGGACT
+ATGCCATCCAAGTCAGCTTGCCTGCGTCACACTGAGGCACCTGGGCAGCTAGAAGGCAGA
+ATGCTCCAGGGACAGCCTCCGAACACGGAAAAGAAGCTCATCCCAACACCAGGCTTCTTA
+CCAGCCTCTGACTCTCAGGGTTCAGAGACAAACCCCATGCCTCCTTTCAGCATTCCAGCA
+AAAACAAGCAACCAGAACCCACAAACTAAGGCAAATCTCATCACCCCACAGCCACCCATT
+AGACCCAAGTTGGAGCGAACCCTGTCCCTCGATGACAAGGGCTGGAGAAGGAGGCGTTTC
+CGGGGTAGTCAGGAGGATCTGACTGTCCAGAATGGGGCCAGTCCCTGCAGGGGCTCCTTG
+CAAGACTCAGTAGCCCAGTCCCCTGCCTACAGCCGTCCCCTGCCCTGCCTCAGCACATCC
+TTGCAGGAGATACCTAAGTCCCGAAGGGCCACAGGCAGTGAGGGAGGGAGCCCATCCTTG
+TGGAGTGACTGTCTTTCTGGAATGATCAGCACCTCCTTGGACCTCCTGCACAGAGATGCT
+GCCTCAGGTGGGCCCCCCTCCAGGTTGGCAAGTTTGCATGCCTCACACACACCACCAGCT
+ATGGACCTCAGCATAGCCTCCAGCTCCCTGAGAACAGCAAACAAGGTTGACCCCGAGCAC
+ACGGACTACAAGCTCCGCATGCAGACCAGACTGGTCAGGGCCCACAGCAACCTGGGCCCT
+AGCAGACCCCGGAGCCCCTTGGCTGGTGACGATCACTCCATTCACTCAGCCAGATCTTTC
+AGCCTTCTGGCCCCCATCCGCACCAAGGACATCAGAAGCAGGAGCTATCTGGAGGGAAGT
+CTTCTGGCCAGTGGGGCCCTGCTAGGAGCAGAAGAGCTGGCCAGGTACTTCCCAGACCGA
+AACATGGCTCTCTTCGTGGCTACCTGGAACATGCAGGGCCAGAAGGAGCTCCCAGCGAGC
+CTGGATGAGTTTCTGCTCCCCACCGAGGCTGACTACACTCAGGACCTGTATGTCATTGGA
+ATTCAGGAGGGCTGCTCTGACAGGCGGGAGTGGGAGACACGCCTGCAGGAGACACTGGGC
+CCTCAGTATGTACTGCTGTCATCAGCAGCACATGGGGTCCTGTACATGTCCCTGTTTATC
+CGTAGGGACCTCATCTGGTTCTGCTCAGAGGTCGAGTACTCCACAGTAACTACACGCATC
+GTGTCTCAGATCAAGACCAAGGGGGCCCTGGGCGTCAGCTTCACCTTTTTTGGCACCTCC
+TTCCTCTTCATCACATCTCACTTCACCTCTGGAGATGGGAAGGTAGCAGAGCGGCTACTG
+GACTACAGCAGAACCATCCAAGCCCTAGCCCTGCCCCGGAATGTGCCAGACACAAATCCC
+TACCGCTCTAGTGCAGGGGATGTCACTACCCGGTTTGATGAGGTCTTCTGGTTTGGGGAC
+TTCAACTTCCGCCTGAGTGGTGGACGAGTGGCTGTGGAGGCCTTCCTGAAGCAGAAACCT
+GAGGTGGATGTGCTGGCTCTCCTCCAACACGACCAGCTCACCCGGGAGATGAAGAAAGGG
+TCCATCTTCAGGGGCTTTGAGGAGGCAGAGATTCACTTTCTTCCATCCTACAAGTTTGAC
+ATTGGGAAGGACACCTACGACAGCACCTCCAAGCAAAGGACACCCTCCTACACAGACCGA
+GTCCTATACAAAAGCCGTCACAAGGGTGACATCTGTCCCATGAAGTATTCCTCTTGTCCT
+GGGATCAAGACTTCAGACCACCGTCCTGTGTATGGCTTGTTCCAGGTGAAAGTGAGGCCA
+GGACGAGACAACATCCCATTAGCTGCCGGCAAGTTTGACCGAGAATTGTACTTGATAGGA
+ATTAAAAGGCGGATTTCAAAGGAGATTCAGAGACAGGAAGCACTGAAGAGCCAGAGCTCC
+AGTGCAGTTTGCACCGTGTCCTGAAGATTCCAGACCAGGACTGGCCACAGCAACGGGGGC
+CAAGGTCACTGCAAAGGATGGGCTTCTTCTCAGCTGCTCCTGTAATGCTGGGATTCTAAT
+CCACCACGGCCAGGGGCTCCCTGCTCTCACCACAGACCCAGCCCTCAGGACATTTATACC
+ATGTTCCCACAGGCACATGGCAGGGCATGTGGACACCAAGCAGCAGTTTTGTCCTCAGGA
+GTAGTCCAGACTTCTTGCCCTTGAGCACTGCTGTCTCTTCAAACTCCTTTTATTTATTCC
+TGTTCTCATGCTAGAGCCCAGGTTCTCCATCTGTATCCTCCTAGTAGCTCCTTCCCTCCA
+GGGAAGGATCAGGCAACCTCTGGTATCCTAGATGCTCAATGCCTAGAACCTGCCAGGACT
+TCAATTCTGGGATATTCCCTACAGACATTTTGACAGGCTTTGAGGTTCTACATCCTGGTC
+CCAGGCTCCCAACCCCCAGTTGAGTAGGGACCTCTCCACTCTACAGGCCAAGCCTAGCTA
+TATTAAACTCATAGTTTTTAGGAGCTTCAGACCATTTGCTTTTGTGCTGCTAGTCCCGGA
+AAGGCATGAGAAATTGTTACCAGACAGCACCTTGCTGGGTTTCACTCCTTGAAGAAAGCT
+TAGGAGCATCATTGCTCTCAATCTTACCCCACCCCTTCAGACATAGCCTTGAATGTACAG
+ACACCTAGGGGCATCCACTCTAGTCTTCTAAATCATTTATTTTTCCATATTTATATTTTT
+AAATAAATAAGGATATATTCAATTGTAAACTCTTTCTGGCCAAAGAGTGAACCTTGGAAG
+AAGTCTGCATGCATCTTGGGGCCTCAGGACACCCCAGGGTTTTAAAAGGACATAGAAGTC
+AAAGGCCAAACATTTGGTCTCAGCTGTCACCTGCTACTCAGTCCCATCCCAGGTCTTTCT
+GCTAGGTACTGTCCCTGCTCACAGCCAGAAGCAGCAATAGCTGGAAAAAGTGACGACTTG
+GGACTCCAGTGAACCATAATAAACCAACGAATAAGGTGAAACTCAACAGCATCAGCTTCT
+CCAATATGGAAAGTCACCTGCTTCAATAAACCACTGTGAACTGCAAATTCTACTGGGAAG
+ACAGCCTTTTCTCTCCCAGACAGGCTGCCCTGGACTTCATAATCCTGCCTCAACTATTCC
+TGGCTTGAATAAGGTTTGATGTGGC
+>TR15|c0_g1_i2 len=3637 path=[6028:0-88 6297:89-105 6273:106-110 6316:111-119 6338:120-133 6329:134-180 6343:181-184 6342:185-223 6337:224-232 6328:233-279 6294:280-395 6327:396-428 6313:429-442 6293:443-464 6341:465-466 6336:467-479 6326:480-487 6340:488-503 6335:504-511 6325:512-527 6311:528-538 6290:539-586 6263:587-606 6229:607-630 6289:631-725 6169:726-742 6262:743-813 5953:814-857 5954:858-859 6261:860-919 6071:920-943 6334:944-955 6310:956-993 6344:994-999 6347:1000-1000 6309:1001 [...]
+GCCAGGGTGACCACTAGACTGAGCTGGGGCGAACCCTGGGCGGGGGCGGGGGCCGAGGCA
+CGGGGCCGCAGTCGTTGTTCCAGCTGCCACCGTGACTGGCCTAGGTCCGCCTCCGCCAGC
+GCTGGGCCCGGCTGAATCAGACCTCGGGCGTCCGGCGGCGGGTCTGCTGCCGAACGGAGG
+GCGCAGGTGAGCCTAGGACGCTGAGCGCGCTGCCCTACTCTGCCTCGGCGGGGTGGAGGG
+CTGGCCGGGGGTGCTGGACAGACTTGTGCAGCTCCGTGAAGTGCAGCCCCGACCCCCTGG
+CGCCTGTTCTCACGAAGTCGCTTTTAAGACTAGCGAGCTGACTTCGGGGAGCCAAGAGAT
+TTTTCTGCGTTTCCTCAGGCATCGGTGAGAACTCTCAAGTCTCCAGCCATGCAGCTACAG
+GCCCTCCTCCAAAAGGACCGCCCCATGCCACAAAGGGAGCCACTCGAGTTTTCATGGCAT
+CGAGCTGGCGAACTCTGACGTGCATCCTTGACAACAAGAGTTGCTTGTTAACCTCCCAGG
+GAGGATCCCTTTCCTTAGGAGGGCCAGGCTGAGGGGGTCAGGGCTGGCCAGGTCTGGACT
+ATGCCATCCAAGTCAGCTTGCCTGCGTCACACTGAGGCACCTGGGCAGCTAGAAGGCAGA
+ATGCTCCAGGGACAGCCTCCGAACACGGAAAAGAAGCTCATCCCAACACCAGGCTTCTTA
+CCAGCCTCTGACTCTCAGGGTTCAGAGACAAACCCCATGCCTCCTTTCAGCATTCCAGCA
+AAAACAAGCAACCAGAACCCACAAACTAAGGCAAATCTCATCACCCCACAGCCACCCATT
+AGACCCAAGTTGGAGCGAACCCTGTCCCTCGATGACAAGGGCTGGAGAAGGAGGCGTTTC
+CGGGGTAGTCAGGAGGATCTGACTGTCCAGAATGGGGCCAGTCCCTGCAGGGGCTCCTTG
+CAAGACTCAGTAGCCCAGTCCCCTGCCTACAGCCGTCCCCTGCCCTGCCTCAGCACATCC
+TTGCAGGAGATACCTAAGTCCCGAAGGGCCACAGGCAGTGAGGGAGGGAGCCCATCCTTG
+TGGAGTGACTGTCTTTCTGGAATGATCAGCACCTCCTTGGACCTCCTGCACAGAGATGCT
+GCCTCAGGTGGGCCCCCCTCCAGGTTGGCAAGTTTGCATGCCTCACACACACCACCAGCT
+ATGGACCTCAGCATAGCCTCCAGCTCCCTGAGAACAGCAAACAAGGTTGACCCCGAGCAC
+ACGGACTACAAGCTCCGCATGCAGACCAGACTGGTCAGGGCCCACAGCAACCTGGGCCCT
+AGCAGACCCCGGAGCCCCTTGGCTGGTGACGATCACTCCATTCACTCAGCCAGATCTTTC
+AGCCTTCTGGCCCCCATCCGCACCAAGGACATCAGAAGCAGGAGCTATCTGGAGGGAAGT
+CTTCTGGCCAGTGGGGCCCTGCTAGGAGCAGAAGAGCTGGCCAGGTACTTCCCAGACCGA
+AACATGGCTCTCTTCGTGGCTACCTGGAACATGCAGGGCCAGAAGGAGCTCCCAGCGAGC
+CTGGATGAGTTTCTGCTCCCCACCGAGGCTGACTACACTCAGGACCTGTATGTCATTGGA
+ATTCAGGAGGGCTGCTCTGACAGGCGGGAGTGGGAGACACGCCTGCAGGAGACACTGGGC
+CCTCAGTATGTACTGCTGTCATCAGCAGCACATGGGGTCCTGTACATGTCCCTGTTTATC
+CGTAGGGACCTCATCTGGTTCTGCTCAGAGGTCGAGTACTCCACAGTAACTACACGCATC
+GTGTCTCAGATCAAGACCAAGGGGGCCCTGGGCGTCAGCTTCACCTTTTTTGGCACCTCC
+TTCCTCTTCATCACATCTCACTTCACCTGGGATGTCACTACCCGGTTTGATGAGGTCTTC
+TGGTTTGGGGACTTCAACTTCCGCCTGAGTGGTGGACGAGTGGCTGTGGAGGCCTTCCTG
+AAGCAGAAACCTGAGGTGGATGTGCTGGCTCTCCTCCAACACGACCAGCTCACCCGGGAG
+ATGAAGAAAGGGTCCATCTTCAGGGGCTTTGAGGAGGCAGAGATTCACTTTCTTCCATCC
+TACAAGTTTGACATTGGGAAGGACACCTACGACAGCACCTCCAAGCAAAGGACACCCTCC
+TACACAGACCGAGTCCTATACAAAAGCCGTCACAAGGGTGACATCTGTCCCATGAAGTAT
+TCCTCTTGTCCTGGGATCAAGACTTCAGACCACCGTCCTGTGTATGGCTTGTTCCAGGTG
+AAAGTGAGGCCAGGACGAGACAACATCCCATTAGCTGCCGGCAAGTTTGACCGAGAATTG
+TACTTGATAGGAATTAAAAGGCGGATTTCAAAGGAGATTCAGAGACAGGAAGCACTGAAG
+AGCCAGAGCTCCAGTGCAGTTTGCACCGTGTCCTGAAGATTCCAGACCAGGACTGGCCAC
+AGCAACGGGGGCCAAGGTCACTGCAAAGGATGGGCTTCTTCTCAGCTGCTCCTGTAATGC
+TGGGATTCTAATCCACCACGGCCAGGGGCTCCCTGCTCTCACCACAGACCCAGCCCTCAG
+GACATTTATACCATGTTCCCACAGGCACATGGCAGGGCATGTGGACACCAAGCAGCAGTT
+TTGTCCTCAGGAGTAGTCCAGACTTCTTGCCCTTGAGCACTGCTGTCTCTTCAAACTCCT
+TTTATTTATTCCTGTTCTCATGCTAGAGCCCAGGTTCTCCATCTGTATCCTCCTAGTAGC
+TCCTTCCCTCCAGGGAAGGATCAGGCAACCTCTGGTATCCTAGATGCTCAATGCCTAGAA
+CCTGCCAGGACTTCAATTCTGGGATATTCCCTACAGACATTTTGACAGGCTTTGAGGTTC
+TACATCCTGGTCCCAGGCTCCCAACCCCCAGTTGAGTAGGGACCTCTCCACTCTACAGGC
+CAAGCCTAGCTATATTAAACTCATAGTTTTTAGGAGCTTCAGACCATTTGCTTTTGTGCT
+GCTAGTCCCGGAAAGGCATGAGAAATTGTTACCAGACAGCACCTTGCTGGGTTTCACTCC
+TTGAAGAAAGCTTAGGAGCATCATTGCTCTCAATCTTACCCCACCCCTTCAGACATAGCC
+TTGAATGTACAGACACCTAGGGGCATCCACTCTAGTCTTCTAAATCATTTATTTTTCCAT
+ATTTATATTTTTAAATAAATAAGGATATATTCAATTGTAAACTCTTTCTGGCCAAAGAGT
+GAACCTTGGAAGAAGTCTGCATGCATCTTGGGGCCTCAGGACACCCCAGGGTTTTAAAAG
+GACATAGAAGTCAAAGGCCAAACATTTGGTCTCAGCTGTCACCTGCTACTCAGTCCCATC
+CCAGGTCTTTCTGCTAGGTACTGTCCCTGCTCACAGCCAGAAGCAGCAATAGCTGGAAAA
+AGTGACGACTTGGGACTCCAGTGAACCATAATAAACCAACGAATAAGGTGAAACTCAACA
+GCATCAGCTTCTCCAATATGGAAAGTCACCTGCTTCAATAAACCACTGTGAACTGCAAAT
+TCTACTGGGAAGACAGCCTTTTCTCTCCCAGACAGGCTGCCCTGGACTTCATAATCCTGC
+CTCAACTATTCCTGGCTTGAATAAGGTTTGATGTGGC
+>TR15|c0_g1_i3 len=253 path=[6206:0-56 6337:57-65 6328:66-112 6294:113-228 6080:229-252] [-1, 6206, 6337, 6328, 6294, 6080, -2]
+TGCCGGGCGGCGGGGGCAGGTGAGCCTAGGACGGTGAGCGCGCTGCCCTACTCTGCCTCG
+GCGGGGTGGAGGGCTGGCCGGGGGTGCTGGACAGACTTGTGCAGCTCCGTGAAGTGCAGC
+CCCGACCCCCTGGCGCCTGTTCTCACGAAGTCGCTTTTAAGACTAGCGAGCTGACTTCGG
+GGAGCCAAGAGATTTTTCTGCGTTTCCTCAGGCATCGGTGAGAACTCTCGAGTCTCCAGC
+CATGCAGCTACAG
+>TR16|c0_g1_i1 len=3869 path=[6096:0-46 6189:47-92 6202:93-134 6195:135-209 6187:210-222 6206:223-243 6200:244-564 6214:565-1315 6212:1316-1707 6208:1708-1881 6217:1882-1892 6123:1893-1905 6198:1906-1916 6191:1917-2304 6203:2305-2634 6197:2635-3020 @6190@!:3021-3845 6153:3846-3868] [-1, 6096, 6189, 6202, 6195, 6187, 6206, 6200, 6214, 6212, 6208, 6217, 6123, 6198, 6191, 6203, 6197, 6190, 6153, -2]
+TGACCCGATATGCTGCATCCCTGAGTCAGTATGCTGCTGCCTCCCAGTCCTGTAACTTTG
+CACTCAGGTTTTTCCACTCCAACCAGAAAGATATACTGCAGGCAAACAGCTGGCCGAGGT
+GTCCCCTGGGGGTTTAAAAGCCGCATCGAATGCAGTTGACTTAGCACCCGTGGCGCAGCC
+CCACGGCTTGAAATGAACCCTGCGAGGCTGTGTATCAGAGGACCTCAGAATACATTATTC
+AAGCTTACAAATATGGTGCATTTGAGAAGATCCCAGAGTTTATCGCTTTTAGGAACAGGC
+TGAATAATTCTCTCCATTTTGCACAAGTACGCACTGAGCGGATGCTGTTAGACCTTCTAC
+TTGAAGCAAACATATCAATTAGCTTGGCAGAAAGTATCAAATCAATGAATCTGAGGCCAG
+AGGAAGATGATGTTCCATGGGAAGATTTGCGAGACAACAGAGACTTGGATGTTTTCTTCA
+GTTGGGATCCAAAAGACAGGAATGTTTCTGAAGAGCATAAGAAACTCTCCTTGGAGGAAG
+AAACCATGTGGTTAAGAATTCGCTCCTTAACGTTGAGGCTGATCAGTGGACTTCCAAGTC
+TTACCCACCCTGTGGAGCCCAAGAACTCAGAGAAGATGTCAGAGAACGGTGTGTCCTCCC
+GGATCGACATCCTTCGTTTGCTCCTCCAACAGCTAGAGGTGGCCGTGGAGACGGGGAAGC
+GGTTTATTGAGAAGGAAATTCAGTACCCCTTCCTTGGGCCTGTTCCCACCAGGATGGGCA
+GGTTCTTCAGTTCTGGCTGCTGTCAGTGCCAAGTCCAGTCCTTCCATCTGGTCAGCGACA
+TGTATGAGCTTGACACCAGTGGCTTAGAGGGTACAGTGGATATACAGGAACGAATAGAAA
+ATAGTCTTGCATCTTTACTAGAACTATTGAAAGGTGTCTTCAGCACATGTAAAGGGGACC
+TCTTAGAAGTTACAGATGGCAATGTGAAGACCCAGCCTGCAGTCCTAGAGAATCTGGTCT
+TCTTCGTTGAGACTATTTCTGTCATCCTTTGGGTGTCCAGTTACTGTGAAAGTGTCTTGC
+GACCATACAAATTAAATATCCAGAAAAAGAAAAAGAAGAAAAAAGAAACGAGCATCATCA
+TGCCTCCAATCTTCACCAGTTTCCAAGACTACGTTACTGGACTTCAGACTGTAATTTCCA
+ATGCTGTGGATCATATTAAAGGACTTGAAGCACATCTGATTGCACTTAGACTTGAGGAGC
+TCACGTTAGAGGAAACTTCTATCTCTACGGAAGAAAGAAAATTTTCAAAGACTGTGCAGG
+GGAAAGTCCAGAGCAGTTACCTGCACTCACTTCTGGAGACAGGGGAGCTGCTGAGAAAAA
+GACTTGAGACTACAAAGAAACTAAAAATTTAAGGAATTCTGAACCATAAACACCGAAGGT
+TCCACAGCAGAAGATGACACACCACCTTCCCCAGCAAAAACAACATCTGGCTGGCATTGT
+TCTAATCCAGAACTTCCTCACAAATGCATGAAGGACTTTGATCGTGAATTAATTTTTGAG
+GTATTAAATATATACAACAAATTAAATTATTGTATATAAACCAGAAGCAGGACCCTCATC
+TGGGTTTACCACTCTTTATACCTGTCCATACATACAGGACAGCAACAAGAGCACCCCACC
+TCACTCCCAGCTCCAGGAATGGCTGGGGTGGACATTTCTATACAAGCAGCAATAGAGAAT
+AAGTATAGCATCGACCTCAGAGCAGGTGGGTTGCTTTTTCATCATGCAGTGGGAGTTTGG
+GTTGGGTAGCCCATACTGTAGCCGTATGAGGCAAAAGCAGGTGTAGGAGACCCAGGAGCA
+GGACCCTTCCCTCAGTGGCAGGTTCCTTGTGCCATCCCACAGAACCGGGATGGACCCACA
+GAGGCTCAAGGGAGATGTGGCTGAGTACGTGCCACCACAGGGCACCACACATGACCACAG
+GTGCTCAGTTTTGGCTTCACAGCCCCAGCAGCCAAGACATCCCCAGCCCCGCTCCTGGGA
+GAGCTCAGCCTCAGGGCAGTGAGGAAGTCCAAGTTCTGCCCACTTTGAGGAAGAAATCTG
+AGCACAGCCCACCGTGAGCTTCGTAAACTGCTGAGACTGAGCCCCGCTGGTCTTCTGGGA
+AAGGTGGAAAAGCTGTTGGAAGAGGTTGTACGTGGTGTGTGCAGGCGAGTCTGATATTTG
+TGTCGTCATTAAGTCACCTTGTGCAGCTGATTGATGAGTCACACACAGATACACATATGC
+ATAAATATGCTTGGAAACAGATTTACTACTCTAGTGCTTTTAAGGGGGGCTTTGGGATGG
+AAGGATTAAATATGGGTTTAACCTAGGTTTTTAAGTTTTAGGTTGAAAAAGGTATGTTTT
+ATAATGGGCCTGATGTTGGTGTCCTGTTGACACTTAAGAACTGCATCAGGGTGTATTCAT
+GTTGTTCACCTAAGGTTGGTGGCCTGTTCCCTAAGCCTCCAGCTTAAGAGGCTGGTCTGC
+GAGAAGATGAAAACTGCTCTTGATTATGTCATGCCGAGCTCCGACAGCGCTTTCCGTGAC
+TGTTTTGTGTCTGAATCTCCTCTCTCACTTCTGTTCTTGTTCCCTGTCACTTTATTCCTG
+AGAGTAACTGTAAGGTGAAAAGATGACTTGGTGAGGACTGGTCTTTCCCATGGACTGCTC
+CAGCAGCACACCATTGCATTCTTTATCGTAACTGTCTGGGATTCACAAATCAGCATAGTG
+GTTAACTAATTTACTTGTAAGGAAATGTGTGCAAACTACTTTCTTACTTGTAGGATGTGC
+TGGAGCCTACATCATGGTTGCATCAGAGTATCACGTGCTCCATCCCCAAAAAAAGGGCCT
+TTTTGAATAAGATGGGTTGAAGACCCTGATTTTGACTTGCCTTGAACACCACCTTGTGGT
+ACTGTTCTGTAGTTGTGGCCTGTTTCCCATGGGACTGGGTGGGCGTTTGCTTGCACTGCC
+CTGGCTCCTGGAATAATGTTTCTTGGGATATTCAAATTGTGCTGTGTGTTCACGGTCACA
+GATGCTCTAAATCAAGCTCTGTCAGCTGACCATGGTCCGTATGGACTGCATGGGCTGGCT
+ATGGCCCTCAGGCATAGCTCCTTCCTCTAATGGTCTATCCTGTCAGTCTCCTGCTCTAAC
+ATGTAGGGCCTCCACTGGTCTTGTTGACAAATAATGTCATGGTGGGGTTACACTTCCTCT
+GTTACTTGCTGATTTTCTTACTAAATGTAGCATTTCAATCAGATCTAATTCTTACATTTT
+GAGATAACTGTAAAAAGAGTGAAATTATGAAATGGCCAATATCTTTTATCAGTCTATTCT
+TTTGGAAGCTGTCATGCACTATACATTGTGTACAGTTAAAAGTATATATATATATATATT
+CTTACTGAGTGAACGCCTCCTCTCCCCACGCCTGTATGTCACTAGCATCTAAGGAGAATG
+CTCAAGGCCCAGTGCTGCTGCTGCTGTGGTTTATATGGGTTTTGTTCTGTTTTGTTTTTG
+TGTGGTAAATTGATATTTAAAAACAACAAAAACCACGACTACTGTTTACAGACTGAAAAA
+AAACAATCACTGCTTTTTATACTACTGAGATCCTAAGTCAAGACTTTGCAAAGCAGGAAT
+CGGGTTCAAGTTACTTCTTTGCTGTGGACGGATAGTCCTCTGTAGTATCTCCACATGATG
+GAGAGTGCACAAACCTAGGTGTGCTGCCATCAATTTTGTATATTTTCATAATTTTAATTG
+TTCGAAATTGCATTATATTTTGCAATCACCACATTCAATCTGTATATGTCTTTCATTTCA
+ACTTTTTCAATACAAAAAGGGATTCAATT
+>TR16|c0_g1_i2 len=5399 path=[6143:0-93 6207:94-298 6201:299-347 6194:348-1202 6186:1203-1705 6094:1706-1751 6205:1752-1773 6200:1774-2094 6214:2095-2845 6212:2846-3237 6208:3238-3411 6217:3412-3422 6123:3423-3435 6198:3436-3446 6191:3447-3834 6203:3835-4164 6197:4165-4550 @6190@!:4551-5375 6153:5376-5398] [-1, 6143, 6207, 6201, 6194, 6186, 6094, 6205, 6200, 6214, 6212, 6208, 6217, 6123, 6198, 6191, 6203, 6197, 6190, 6153, -2]
+ACTGAGGTTCTGCGCTTGTCATCATGGCGACGCGGGGCCATGTGCAGGACCCTAACGACC
+GGCGCCTCCGGCCCATTTACGATTATCTTGATAATGGAAATAATAAAATGGCAATTCAGC
+AAGCTGATAAACTGTTGAAGAAACACAAAGATCTTCACTGTGCAAAGGTTCTCAAGGCCA
+TTGGTTTACAGAGAACTGGCAAGCAGGAAGAAGCTTTCACCTTGGCTCAGGAGGTGGCTG
+CCCTTGAGCCCACAGATGACAACTCCCTGCAGGCCCTGACGATTCTCTACCGAGAGATGC
+ACCGGCCGGAGTTAGTCACAAAGCTCTATGAGGCGGCTGTGAAGAAAGTTCCCAACAGCG
+AGGAGTACCACTCTCACCTCTTCATGGCCTATGCCAGAGTGGGCGAGTACAAGAAGATGC
+AGCAGGCTGGCATGGCTCTGTATAAGATTGTCCCCAAAAACCCTTACTACTTTTGGTCAG
+TGATGAGCTTGATCATGCAATCTATATCCGCACGGGATGAGAACCTCTCCAAAACCATGT
+TTCTGCCCCTGGCGGAGAGAATGGTAGAGAAGATGGTGAAGGAGGACAAGATAGAGGCTG
+AAGCTGAGGTTGAACTTTATTACATGATTCTGGAGCGCTTGGGAAAGTACCAGGAAGCCC
+TGGATGTCATTAGAGGAAAATTAGGAGAGAAGTTGACAAGTGAAATTCAGAGTCGGGAAA
+ACAAATGCATGGCCATGTACAAGAAGCTGAGCAAGTGGCCGGAGTGCAACGCCCTTTCCC
+GACGCCTCCTTCTGAAAAACTCAGATGACTGGCAGTTCTATCTGACTTATTTCGATTCTG
+TCTTTCGACTGATTGAGGAAGCCTGGACGCCGCCTGCTGAGGGGGAACACTCCTTAGAAG
+GGGAAGTACACTGCTCTGCAGAAGATGCTGTGAAGTTTATAGAGGACAGGATAACAGAGG
+CATCACAAAGCTCTCGACATGTCCGAGGCCCACACCTAGCTAAGCTGGAGCTCATCAGGC
+GCTTGCGGAGCCAAGGCTGTAATGACGAATACAAGCTGGGTGACCCTGAAGAGTTAATGT
+TCCAGTATTTCAAGAAGTTCGGGGATAAGCCATGCTGCTTCACAGACCTGAAGGTGTTCG
+TTGACCTCTTGCCTGCCGCCCAGTGCACACAATTCATTAACCAGCTCCTTGGAGTTGTTC
+CATTGTCGACGCCGACAGAGGATAAGCTTGCCCTGCCGGCCGACATCCGAGGCCTGCAGC
+AGCATCTGTGTGTTGTGCAGCTGACACGGCTCCTTGGCTTGTACCACAGCATGGATAAGA
+GTCAGAAGCTGGATGTGGTCAAAGAACTGATGTTAAGGTACCAGCACGGACTGGAGTTTG
+GGCGCTCTTGTTTGAAGACAGAGTTGCAGTTCTCAGACTATTACTGCCTGCTCGCTGTTC
+ATGTGCTCATTGATGTATGGAGAGAAGCAGGTGAGGAGACTGCGGTCTGGCAGGCCCTGA
+CTCTGCTGGAAGAAGGCTTAACCCACAGCCCATCCAATGCTCAGTTCAAATTGCTACTTG
+TTCGGATCTACTGCGTGCTGGGTGCATTTGAACCAGTGGTGGATCTCTACTCCAGTCTCG
+ATGCTAAGCACATCCAGCACGACACCATTGGCTATCTTCTGACCCGATATGCTGCATCCC
+TGGGTCAGTATGCTGCTGCCTCCCAGTCCTGTAACTTTGCACTCAGGTTTTTCCACTCCA
+ACCAGAAAGATACCTCAGAATACATTATTCAAGCTTACAAATATGGTGCATTTGAGAAGA
+TCCCAGAGTTTATCGCTTTTAGGAACAGGCTGAATAATTCTCTCCATTTTGCACAAGTAC
+GCACTGAGCGGATGCTGTTAGACCTTCTACTTGAAGCAAACATATCAATTAGCTTGGCAG
+AAAGTATCAAATCAATGAATCTGAGGCCAGAGGAAGATGATGTTCCATGGGAAGATTTGC
+GAGACAACAGAGACTTGGATGTTTTCTTCAGTTGGGATCCAAAAGACAGGAATGTTTCTG
+AAGAGCATAAGAAACTCTCCTTGGAGGAAGAAACCATGTGGTTAAGAATTCGCTCCTTAA
+CGTTGAGGCTGATCAGTGGACTTCCAAGTCTTACCCACCCTGTGGAGCCCAAGAACTCAG
+AGAAGATGTCAGAGAACGGTGTGTCCTCCCGGATCGACATCCTTCGTTTGCTCCTCCAAC
+AGCTAGAGGTGGCCGTGGAGACGGGGAAGCGGTTTATTGAGAAGGAAATTCAGTACCCCT
+TCCTTGGGCCTGTTCCCACCAGGATGGGCAGGTTCTTCAGTTCTGGCTGCTGTCAGTGCC
+AAGTCCAGTCCTTCCATCTGGTCAGCGACATGTATGAGCTTGACACCAGTGGCTTAGAGG
+GTACAGTGGATATACAGGAACGAATAGAAAATAGTCTTGCATCTTTACTAGAACTATTGA
+AAGGTGTCTTCAGCACATGTAAAGGGGACCTCTTAGAAGTTACAGATGGCAATGTGAAGA
+CCCAGCCTGCAGTCCTAGAGAATCTGGTCTTCTTCGTTGAGACTATTTCTGTCATCCTTT
+GGGTGTCCAGTTACTGTGAAAGTGTCTTGCGACCATACAAATTAAATATCCAGAAAAAGA
+AAAAGAAGAAAAAAGAAACGAGCATCATCATGCCTCCAATCTTCACCAGTTTCCAAGACT
+ACGTTACTGGACTTCAGACTGTAATTTCCAATGCTGTGGATCATATTAAAGGACTTGAAG
+CACATCTGATTGCACTTAGACTTGAGGAGCTCACGTTAGAGGAAACTTCTATCTCTACGG
+AAGAAAGAAAATTTTCAAAGACTGTGCAGGGGAAAGTCCAGAGCAGTTACCTGCACTCAC
+TTCTGGAGACAGGGGAGCTGCTGAGAAAAAGACTTGAGACTACAAAGAAACTAAAAATTT
+AAGGAATTCTGAACCATAAACACCGAAGGTTCCACAGCAGAAGATGACACACCACCTTCC
+CCAGCAAAAACAACATCTGGCTGGCATTGTTCTAATCCAGAACTTCCTCACAAATGCATG
+AAGGACTTTGATCGTGAATTAATTTTTGAGGTATTAAATATATACAACAAATTAAATTAT
+TGTATATAAACCAGAAGCAGGACCCTCATCTGGGTTTACCACTCTTTATACCTGTCCATA
+CATACAGGACAGCAACAAGAGCACCCCACCTCACTCCCAGCTCCAGGAATGGCTGGGGTG
+GACATTTCTATACAAGCAGCAATAGAGAATAAGTATAGCATCGACCTCAGAGCAGGTGGG
+TTGCTTTTTCATCATGCAGTGGGAGTTTGGGTTGGGTAGCCCATACTGTAGCCGTATGAG
+GCAAAAGCAGGTGTAGGAGACCCAGGAGCAGGACCCTTCCCTCAGTGGCAGGTTCCTTGT
+GCCATCCCACAGAACCGGGATGGACCCACAGAGGCTCAAGGGAGATGTGGCTGAGTACGT
+GCCACCACAGGGCACCACACATGACCACAGGTGCTCAGTTTTGGCTTCACAGCCCCAGCA
+GCCAAGACATCCCCAGCCCCGCTCCTGGGAGAGCTCAGCCTCAGGGCAGTGAGGAAGTCC
+AAGTTCTGCCCACTTTGAGGAAGAAATCTGAGCACAGCCCACCGTGAGCTTCGTAAACTG
+CTGAGACTGAGCCCCGCTGGTCTTCTGGGAAAGGTGGAAAAGCTGTTGGAAGAGGTTGTA
+CGTGGTGTGTGCAGGCGAGTCTGATATTTGTGTCGTCATTAAGTCACCTTGTGCAGCTGA
+TTGATGAGTCACACACAGATACACATATGCATAAATATGCTTGGAAACAGATTTACTACT
+CTAGTGCTTTTAAGGGGGGCTTTGGGATGGAAGGATTAAATATGGGTTTAACCTAGGTTT
+TTAAGTTTTAGGTTGAAAAAGGTATGTTTTATAATGGGCCTGATGTTGGTGTCCTGTTGA
+CACTTAAGAACTGCATCAGGGTGTATTCATGTTGTTCACCTAAGGTTGGTGGCCTGTTCC
+CTAAGCCTCCAGCTTAAGAGGCTGGTCTGCGAGAAGATGAAAACTGCTCTTGATTATGTC
+ATGCCGAGCTCCGACAGCGCTTTCCGTGACTGTTTTGTGTCTGAATCTCCTCTCTCACTT
+CTGTTCTTGTTCCCTGTCACTTTATTCCTGAGAGTAACTGTAAGGTGAAAAGATGACTTG
+GTGAGGACTGGTCTTTCCCATGGACTGCTCCAGCAGCACACCATTGCATTCTTTATCGTA
+ACTGTCTGGGATTCACAAATCAGCATAGTGGTTAACTAATTTACTTGTAAGGAAATGTGT
+GCAAACTACTTTCTTACTTGTAGGATGTGCTGGAGCCTACATCATGGTTGCATCAGAGTA
+TCACGTGCTCCATCCCCAAAAAAAGGGCCTTTTTGAATAAGATGGGTTGAAGACCCTGAT
+TTTGACTTGCCTTGAACACCACCTTGTGGTACTGTTCTGTAGTTGTGGCCTGTTTCCCAT
+GGGACTGGGTGGGCGTTTGCTTGCACTGCCCTGGCTCCTGGAATAATGTTTCTTGGGATA
+TTCAAATTGTGCTGTGTGTTCACGGTCACAGATGCTCTAAATCAAGCTCTGTCAGCTGAC
+CATGGTCCGTATGGACTGCATGGGCTGGCTATGGCCCTCAGGCATAGCTCCTTCCTCTAA
+TGGTCTATCCTGTCAGTCTCCTGCTCTAACATGTAGGGCCTCCACTGGTCTTGTTGACAA
+ATAATGTCATGGTGGGGTTACACTTCCTCTGTTACTTGCTGATTTTCTTACTAAATGTAG
+CATTTCAATCAGATCTAATTCTTACATTTTGAGATAACTGTAAAAAGAGTGAAATTATGA
+AATGGCCAATATCTTTTATCAGTCTATTCTTTTGGAAGCTGTCATGCACTATACATTGTG
+TACAGTTAAAAGTATATATATATATATATTCTTACTGAGTGAACGCCTCCTCTCCCCACG
+CCTGTATGTCACTAGCATCTAAGGAGAATGCTCAAGGCCCAGTGCTGCTGCTGCTGTGGT
+TTATATGGGTTTTGTTCTGTTTTGTTTTTGTGTGGTAAATTGATATTTAAAAACAACAAA
+AACCACGACTACTGTTTACAGACTGAAAAAAAACAATCACTGCTTTTTATACTACTGAGA
+TCCTAAGTCAAGACTTTGCAAAGCAGGAATCGGGTTCAAGTTACTTCTTTGCTGTGGACG
+GATAGTCCTCTGTAGTATCTCCACATGATGGAGAGTGCACAAACCTAGGTGTGCTGCCAT
+CAATTTTGTATATTTTCATAATTTTAATTGTTCGAAATTGCATTATATTTTGCAATCACC
+ACATTCAATCTGTATATGTCTTTCATTTCAACTTTTTCAATACAAAAAGGGATTCAATT
+>TR17|c0_g1_i1 len=227 path=[228:0-57 229:58-226] [-1, 228, 229, -2]
+CTCCCTAAGCCACTGTCTAGCTTTTCTTTTCATTAGCACTTAGAGCAGCGACTTCAAAGG
+ACCATACTTTAACCGCAGTGCTTGAGAGGCAGAGGCAAGCATATATATCTGTGAGTTCCA
+GGACAGCCTGACTATGTTCAAAACTAAAGAAAGAAATCATGGTGGCACACATATAATCCT
+AGCACTGGGGAAACGAGGCAGAAGGATCAGGAATTTGAGGCCAGCTT
+>TR17|c1_g1_i1 len=298 path=[276:0-297] [-1, 276, -2]
+GACTTGTTCTAAGCAAGGGTCTGTGAGGTGGGGAAAGATAGCACTGTTGTAGTTAACACA
+AATGTTCTTATTGTTCACTAAGCTCTGCTCACTTGTAGAAATGTTAACCAAGAACACCAG
+AAATAGTTGCTCAGCAGCCAGAAGCCAGGAGTTCCTCACCTGTGCCTTTTCGACTTTGAC
+AACATCTGCCTTGAAATTTTGAGAAACAACATTCTTTGTCCTTCCTGCCCGCCTTAGATT
+TTTGTCTGTTCTTCTACACTGTTGTGAATCACACCTTTGTACACTGAAGTCAATGTTT
+>TR18|c0_g1_i1 len=433 path=[461:0-143 462:144-167 467:168-228 465:229-252 466:253-432] [-1, 461, 462, 467, 465, 466, -2]
+AAAAGTATTTGGAATTTTGATTAGTTGGATTTCATTCTGTTTTACTTCATAATAACTAAA
+TATAGTTTGTGCTGAGACTGAATTGTTATTTAGGAAGAAAATTGCTTGTGCATTGTTTGT
+TCCTGTCCTGAGAGCAGTGGTTCAATACATCTCAGAAATCGATATTCCGGTCGCCTATTT
+TAGGAATAAAACTAATCAGGTGCAGAAAAATTTAATTCTTTTATCAGTGAAAGAAAACAC
+CACAATTTGAAGCCAAGTCTCAGTATCAGGCCTGCACAGCCACTCTCTCAGGGACTCCAT
+CTAAGTAAAACTTAGAAAATGGAGCTGGGGGTTTTCTAAACAGTCCCAATAGATCCCCTC
+AGTGTTTGGTTTTCTTCCTCATTTGAAAACCGTGTGTTGGTGCTCGAGTTCACAGAAACA
+AATAGGGTCTAGG
+>TR19|c0_g1_i1 len=3697 path=[3923:0-399 3924:400-417 3945:418-545 3943:546-2131 3912:2132-3696] [-1, 3923, 3924, 3945, 3943, 3912, -2]
+GGAGCTGGAGGCCCCCAGGCAACTACACCGTCCACGTACCCAGAGGGGCTGGGCCCTCCC
+ACCAGAGACCACGCCCTGGTGTGCCTTAGGGGCCCTGGTTTGTTAGTCTCTGAGTGTGCA
+GTTGCTGCACATGGGGCCCTGGCGCTTGCTGCACCAACTTCCTGTTGGGCCCGTGGTCCT
+TGGAGGCATGCAGTTCAGCAGACAGTGACTCAGCCATCCACCCAACATGCGGAACGTGTC
+TCTTCTGCAGGTCCCGGTCCACAGCAGGATTCCCCCTCTGTGAAAAGGCACGCTGATCTG
+TCTGGATAAGTGTGGCCGGCCCCATGTATCCGGAATCAACCACGGGGTCCCCAGCTCGAC
+TCTCCCTGCGGCAGACAGGCTCCCCCGGGATGATCTACAGGAATCTGGGCAAATCTGGCC
+TTCGGGTCTCCTGCCTGGGGCTTGGAACATGGGTGACCTTCGGGGGCCAGATCACGGATG
+AGATGGCAGAGCACCTAATGACCTTGGCCTACGATAATGGCATCAACCTGTTCGATACGG
+CGGAGGTCTACGCTGCTGGAAAAGCTGAAGTGGTATTAGGGAACATCATTAAGAAGAAGG
+GATGGAGACGGTCCAGCCTTGTCATCACCACCAAGATCTTCTGGGGTGGAAAAGCGGAGA
+CTGAGAGAGGCCTTTCCAGGAAGCACATAATTGAAGGACTGAAAGCGTCCCTGGAGCGGC
+TGCAGCTGGAGTACGTGGATGTGGTTTTTGCCAACCGCCCAGACCCCAACACGCCCATGG
+AAGAGACCGTGCGGGCCATGACCCATGTCATCAACCAGGGGATGGCCATGTACTGGGGCA
+CATCACGCTGGAGCTCCATGGAGATCATGGAGGCCTACTCGGTGGCTCGGCAGTTCAACC
+TGATCCCGCCCATCTGCGAGCAAGCGGAATATCACATGTTCCAGAGGGAGAAGGTGGAGG
+TCCAGCTGCCAGAGCTGTTCCACAAGATAGGAGTAGGTGCCATGACCTGGTCCCCTCTGG
+CGTGCGGCATCGTCTCAGGGAAGTATGACAGCGGGATCCCACCCTACTCCAGAGCCTCCC
+TGAAGGGCTACCAGTGGTTGAAGGACAAGATCCTGAGTGAGGAGGGTCGCCGCCAGCAGG
+CCAAGCTGAAGGAACTGCAGGCCATTGCCGAACGCCTGGGCTGCACCCTACCCCAGCTGG
+CCATAGCCTGGTGCCTGAGGAATGAGGGTGTCAGCTCCGTGCTTCTGGGTGCTTCCAATG
+CAGAACAACTTATGGAGAACATTGGAGCAATACAGGTCCTTCCAAAATTGTCGTCTTCCA
+TCGTCCACGAGATCGACAGCATTCTGGGCAATAAACCCTACAGCAAAAAGGACTATAGAT
+CCTAAGTCTACTCCCCACCCCTCGTGCCCCACCCGGACAGTTCCCGGTTCCCTCCTCGTC
+TCTGTTCGCTCGCTTCTGCTGTTCCAAAGCCAAATGCAGAGTGTGGTTCACATCCAAAGG
+GAAATCACTATGCCCAGACGTGACAGGGAATCGACCTCCAAAGTCACCGCCAGATGCCGC
+CTGCCGCTTCTTCACTGGATACTGTCCGACAACGGATGCCAGGGGATGGCATCAGTTAGG
+GGGACATCCAGAGGCTCCCGCCCAAGCCCACCACCTCTGCTTATCCTTCAAGAAGAAACA
+CTTGCCCCCAGCCATGGCCCTTCACGGAAATTCTAGAAGCCATGGCCGGGTGGAGGTCTC
+ATCCTTAGAGCAGGAGGGGCCGCCAAGAGCCCATCTCAAAAGAGGGGTGTGCACCCTTCT
+CCCAGAGTCCTGGTGGTTAGAGCAGGGCCCTCCCTCTTTCCATGGACACCAGGTACTTTG
+CTCAAGGCTGGCCTGGATCCCATTCTTCCTAGGTCTTGACCTGCCCCACATACCCACCGA
+GCCTTGGCTGACATAGCTACCCAGCTGGCCCTTGGCCCCCACCCTCCCCCTTGCTGGCAG
+GGCCAGGGATTCCAGCTGGCTTTCCCAGCATCTTCCAACTGCTGAGCCCCACAGCAGGCA
+AGCTCAGCAGGCTTGGATGGAGCCCATCGGAGTATGCCTCTCAAGACAGACACTCGTGGG
+CAAGTGTGGCAGCTGGCCCCACCGCAGGCAGGTGGCAGCAGGCTTGCAAGACCATATTGC
+TCTCACAGACCTTCCAATACCTCTGCTGTACCGGGGCAGTGGGCTCATGATGTGGGCTTT
+GCCCAGATGAAGCACTTAGAGCTATGTTGCAAGCCAGGGAACTACGGGAGCAGCTCCAGT
+AATAGTCTCCGTGTTTTAAGAATAGATCCCAGAGCTTCTCCCTGGAAAAATGGCTAGGAC
+CACCCATTCCCTTCTGCGTACCCTCATGCTGGCCTAGGGCAGGATGGGGAGAGGAAGTAG
+TGGAAAGGATAGGCAGCCCTTTATCACTGGGATAAATCCTGCATGGATGTTGATGCCAGG
+GAGCCTGCGGGATTGGTCAGTACACACTGCCTGGAGGCCCCATCCCATGGTTTTGTGATG
+CTCTGGGGGACAGGGTCCTACCCAGCTGCCTCCCTAGGAGACCAGCCTCCTGCCCTGCTG
+CACAGACCATGGCCAGCTCCCAGGCACAAGTCCTAGATGCTTAGCACCCTAGCTTTGCCT
+TCTGTAGCTGCTATTACAAGGCTGCTCCTTGCTGCTCTTAAGGCTGGGCAGAGGTGAGGA
+CAGGGGTGGGGGTTGGGGGGGTTTATGGGGAGGAGACAGGAAGAAAGGCAGACAAACCCC
+CCCCCGAAAACCCTGAGCTCTCTAACCTTCGCTGCTCATAGTGCTGACCCTAAGACCTCA
+GAAGCAGCTCTGTGTGTGGGGGGATGGAGACCATGGGCTCTGGTATTTCCATGCCTGGCT
+AGCAGAGCCAGCTTTCTGGACAGGGCCCTGCAGTGGCCCAGCAGGAAGTACCAGACCTGT
+CCACACAGCTGGCCTTGGCCCTGCTTGTTAGGTGGGCCAGGCATGCAGGGATGCCCACAG
+TGGGAGCTACTGCCTGCCTGTGAACCACACCTCAGAGCTAAGCTCCTGCTGGTGATGTGC
+AAGAGACAGGAAAACAGGCTGCCGGGCTAAGGCCCATAGGATTTAGCCCACAGGAGCCCT
+AGATGCAAAAGACATGTTAACCAAGTGTTTCTGAGAGGTTGTCTTCCACACCCACTCTCG
+AAGCGTCAGGGATTTGCTTCTTAAACTTCTGCGGAGGGGTTTGGCTTGGGAGGCCATGTA
+GAGCAAGTACAGACAGCCTGTTAGTGGGAGCTTGCCCCCAGGCCCTCAAAGGGTGTAAGG
+CCAGCTCCTTCCTCCATGGCCTCTCCTTCCTTTAGCCCAGCTGCCTGCAGGCCAGCCCAA
+GCCAGCTTCTCTTCACCTTGAAGTAGTCTGCCAGGCCTGGTGCAGGAGGAGGGCCATGTA
+GAGAGAGGATCTGGCACTCGGAGCCCAAGGTCCCAAGGCACAGCAGCGCACCTGTGTGCC
+TGCTCTCCTCATGTACATACATAACGTGCTTTCTCTCCCCGTTTTTTGTTTGTTTTTTTT
+TAAACGAGCGTGGCTCCTCGCTAACTGCACCCCACCAGGCCGACAGCAAACGCCTCCAGC
+TTCCCGACAGACTCAGACCAAGGTGCGGCCCCGTATTTATGGAATGGCAAATAAAACCCG
+AGCCCTTTGGTCTCCACGTTTCTGATCTCTCCTTTCC
+>TR19|c0_g1_i2 len=3739 path=[3913:0-399 3914:400-412 3915:413-413 3940:414-440 3946:441-459 3945:460-587 3943:588-2173 3912:2174-3738] [-1, 3913, 3914, 3915, 3940, 3946, 3945, 3943, 3912, -2]
+GGAGCTGGAGGCCCCCAGGCAACTACACCGTCCACGTACCCAGAGGGGCTGGGCCCTCCC
+ACCAGAGACCACGCCCTGGTGTGCCTTAGGGGCCCTGGTTTGTTAGTCTCTGAGTGTGCA
+GTTGCTGCACATGGGGCCCTGGCGCTTGCTGCACCAACTTCCTGTTGGGCCCGTGGTCCT
+TGGAGGCATGCAGTTCAGCAGACAGTGACTCAGCCATCCACCCAACATGCGGAACGTGTC
+TCTTCTGCAGGTCCCGGTCCACAGCAGGATTCCCCCTCTGTGAAAAGGCACGCTGATCTG
+TCTGGATAAGTGTGGCCGGCCCCATGTATCCGGAATCAACCACGGGGTCCCCAGCTCGAC
+TCTCCCTGCGGCAGACAGGCTCCCCCGGGATGATCTACAGTACTCGTTATGGGAGTCCCA
+AAAGACAGCTCCAGTTTTACAGGAATCTGGGCAAATCTGGCCTTCGGGTCTCCTGCCTGG
+GGCTTGGAACATGGGTGACCTTCGGGGGCCAGATCACGGATGAGATGGCAGAGCACCTAA
+TGACCTTGGCCTACGATAATGGCATCAACCTGTTCGATACGGCGGAGGTCTACGCTGCTG
+GAAAAGCTGAAGTGGTATTAGGGAACATCATTAAGAAGAAGGGATGGAGACGGTCCAGCC
+TTGTCATCACCACCAAGATCTTCTGGGGTGGAAAAGCGGAGACTGAGAGAGGCCTTTCCA
+GGAAGCACATAATTGAAGGACTGAAAGCGTCCCTGGAGCGGCTGCAGCTGGAGTACGTGG
+ATGTGGTTTTTGCCAACCGCCCAGACCCCAACACGCCCATGGAAGAGACCGTGCGGGCCA
+TGACCCATGTCATCAACCAGGGGATGGCCATGTACTGGGGCACATCACGCTGGAGCTCCA
+TGGAGATCATGGAGGCCTACTCGGTGGCTCGGCAGTTCAACCTGATCCCGCCCATCTGCG
+AGCAAGCGGAATATCACATGTTCCAGAGGGAGAAGGTGGAGGTCCAGCTGCCAGAGCTGT
+TCCACAAGATAGGAGTAGGTGCCATGACCTGGTCCCCTCTGGCGTGCGGCATCGTCTCAG
+GGAAGTATGACAGCGGGATCCCACCCTACTCCAGAGCCTCCCTGAAGGGCTACCAGTGGT
+TGAAGGACAAGATCCTGAGTGAGGAGGGTCGCCGCCAGCAGGCCAAGCTGAAGGAACTGC
+AGGCCATTGCCGAACGCCTGGGCTGCACCCTACCCCAGCTGGCCATAGCCTGGTGCCTGA
+GGAATGAGGGTGTCAGCTCCGTGCTTCTGGGTGCTTCCAATGCAGAACAACTTATGGAGA
+ACATTGGAGCAATACAGGTCCTTCCAAAATTGTCGTCTTCCATCGTCCACGAGATCGACA
+GCATTCTGGGCAATAAACCCTACAGCAAAAAGGACTATAGATCCTAAGTCTACTCCCCAC
+CCCTCGTGCCCCACCCGGACAGTTCCCGGTTCCCTCCTCGTCTCTGTTCGCTCGCTTCTG
+CTGTTCCAAAGCCAAATGCAGAGTGTGGTTCACATCCAAAGGGAAATCACTATGCCCAGA
+CGTGACAGGGAATCGACCTCCAAAGTCACCGCCAGATGCCGCCTGCCGCTTCTTCACTGG
+ATACTGTCCGACAACGGATGCCAGGGGATGGCATCAGTTAGGGGGACATCCAGAGGCTCC
+CGCCCAAGCCCACCACCTCTGCTTATCCTTCAAGAAGAAACACTTGCCCCCAGCCATGGC
+CCTTCACGGAAATTCTAGAAGCCATGGCCGGGTGGAGGTCTCATCCTTAGAGCAGGAGGG
+GCCGCCAAGAGCCCATCTCAAAAGAGGGGTGTGCACCCTTCTCCCAGAGTCCTGGTGGTT
+AGAGCAGGGCCCTCCCTCTTTCCATGGACACCAGGTACTTTGCTCAAGGCTGGCCTGGAT
+CCCATTCTTCCTAGGTCTTGACCTGCCCCACATACCCACCGAGCCTTGGCTGACATAGCT
+ACCCAGCTGGCCCTTGGCCCCCACCCTCCCCCTTGCTGGCAGGGCCAGGGATTCCAGCTG
+GCTTTCCCAGCATCTTCCAACTGCTGAGCCCCACAGCAGGCAAGCTCAGCAGGCTTGGAT
+GGAGCCCATCGGAGTATGCCTCTCAAGACAGACACTCGTGGGCAAGTGTGGCAGCTGGCC
+CCACCGCAGGCAGGTGGCAGCAGGCTTGCAAGACCATATTGCTCTCACAGACCTTCCAAT
+ACCTCTGCTGTACCGGGGCAGTGGGCTCATGATGTGGGCTTTGCCCAGATGAAGCACTTA
+GAGCTATGTTGCAAGCCAGGGAACTACGGGAGCAGCTCCAGTAATAGTCTCCGTGTTTTA
+AGAATAGATCCCAGAGCTTCTCCCTGGAAAAATGGCTAGGACCACCCATTCCCTTCTGCG
+TACCCTCATGCTGGCCTAGGGCAGGATGGGGAGAGGAAGTAGTGGAAAGGATAGGCAGCC
+CTTTATCACTGGGATAAATCCTGCATGGATGTTGATGCCAGGGAGCCTGCGGGATTGGTC
+AGTACACACTGCCTGGAGGCCCCATCCCATGGTTTTGTGATGCTCTGGGGGACAGGGTCC
+TACCCAGCTGCCTCCCTAGGAGACCAGCCTCCTGCCCTGCTGCACAGACCATGGCCAGCT
+CCCAGGCACAAGTCCTAGATGCTTAGCACCCTAGCTTTGCCTTCTGTAGCTGCTATTACA
+AGGCTGCTCCTTGCTGCTCTTAAGGCTGGGCAGAGGTGAGGACAGGGGTGGGGGTTGGGG
+GGGTTTATGGGGAGGAGACAGGAAGAAAGGCAGACAAACCCCCCCCCGAAAACCCTGAGC
+TCTCTAACCTTCGCTGCTCATAGTGCTGACCCTAAGACCTCAGAAGCAGCTCTGTGTGTG
+GGGGGATGGAGACCATGGGCTCTGGTATTTCCATGCCTGGCTAGCAGAGCCAGCTTTCTG
+GACAGGGCCCTGCAGTGGCCCAGCAGGAAGTACCAGACCTGTCCACACAGCTGGCCTTGG
+CCCTGCTTGTTAGGTGGGCCAGGCATGCAGGGATGCCCACAGTGGGAGCTACTGCCTGCC
+TGTGAACCACACCTCAGAGCTAAGCTCCTGCTGGTGATGTGCAAGAGACAGGAAAACAGG
+CTGCCGGGCTAAGGCCCATAGGATTTAGCCCACAGGAGCCCTAGATGCAAAAGACATGTT
+AACCAAGTGTTTCTGAGAGGTTGTCTTCCACACCCACTCTCGAAGCGTCAGGGATTTGCT
+TCTTAAACTTCTGCGGAGGGGTTTGGCTTGGGAGGCCATGTAGAGCAAGTACAGACAGCC
+TGTTAGTGGGAGCTTGCCCCCAGGCCCTCAAAGGGTGTAAGGCCAGCTCCTTCCTCCATG
+GCCTCTCCTTCCTTTAGCCCAGCTGCCTGCAGGCCAGCCCAAGCCAGCTTCTCTTCACCT
+TGAAGTAGTCTGCCAGGCCTGGTGCAGGAGGAGGGCCATGTAGAGAGAGGATCTGGCACT
+CGGAGCCCAAGGTCCCAAGGCACAGCAGCGCACCTGTGTGCCTGCTCTCCTCATGTACAT
+ACATAACGTGCTTTCTCTCCCCGTTTTTTGTTTGTTTTTTTTTAAACGAGCGTGGCTCCT
+CGCTAACTGCACCCCACCAGGCCGACAGCAAACGCCTCCAGCTTCCCGACAGACTCAGAC
+CAAGGTGCGGCCCCGTATTTATGGAATGGCAAATAAAACCCGAGCCCTTTGGTCTCCACG
+TTTCTGATCTCTCCTTTCC
+>TR19|c0_g2_i1 len=420 path=[3899:0-399 3900:400-412 3901:413-413 3902:414-419] [-1, 3899, 3900, 3901, 3902, -2]
+GGAGCTGGAGGCCCCCAGGCAACTACACCGTCCACGTACCCAGAGGGGCTGGGCCCTCCC
+ACCAGAGACCACGCCCTGGTGTGCCTTAGGGGCCCTGGTTTGTTAGTCTCTGAGTGTGCA
+GTTGCTGCACATGGGGCCCTGGCGCTTGCTGCACCAACTTCCTGTTGGGCCCGTGGTCCT
+TGGAGGCATGCAGTTCAGCAGACAGTGACTCAGCCATCCACCCAACATGCGGAACGTGTC
+TCTTCTGCAGGTCCCGGTCCACAGCAGGATTCCCCCTCTGTGAAAAGGCACGCTGATCTG
+TCTGGATAAGTGTGGCCGGCCCCATGTATCCGGAATCAACCACGGGGTCCCCAGCTCGAC
+TCTCCCTGCGGCAGACAGGCTCCCCCGGGATGATCTACAGTACTCGTTATGGGAATCCCG
+>TR20|c1_g1_i1 len=245 path=[223:0-244] [-1, 223, -2]
+GAACTCCAAGCTTATGCTGATGTTCAGGCAGTCTTAGCAAAGTATGATGGTCAAATCTAA
+GTGGATCAAGGAACTCCACATAAAACCAGAGACACTGAAACTTATAGAGGAGAAAGTGGG
+GAAAAGCCTCGAAGATATGGGCACAGGGGAAAAAGACCTGAATAGAAAAGCAATGCCTTG
+TGCTGTAAGATCGAGAATCGACAAATGAGACCTCATAAAATTGCAAAGCTTCTGTAAGGC
+AACAG
+>TR20|c2_g1_i1 len=239 path=[217:0-238] [-1, 217, -2]
+CATAGTACTACCGGAGGATCCCGCAATACCTCTCCTGGGCATATATCCAGAAGATGTCCC
+AACCGGTAAGAAGAACACATGCTCCACTATGTTCATAGCAGCCTTATTTATAATAGCCAG
+AAGCTGGAAAGAACCCAGATGTCCCTCAACAGAGGAATAGATACAGAAAATGTGGTACAT
+TTACACAATGGAGTACTACTCAGCTATTAAAAATAATGAATTTATGAATTTCGTAGTCA
+>TR21|c0_g1_i1 len=930 path=[1486:0-44 1636:45-45 1634:46-84 1630:85-100 1637:101-108 1641:109-110 1605:111-124 1633:125-139 1629:140-197 1638:198-207 1635:208-232 1632:233-239 1628:240-246 1621:247-270 1639:271-271 1601:272-285 1627:286-442 1620:443-542 1600:543-608 1591:609-632 1610:633-680 1536:681-704 1599:705-730 1530:731-737 1531:738-761 1609:762-769 1598:770-770 1619:771-791 1631:792-803 1626:804-831 1640:832-836 1607:837-842 1511:843-855 1512:856-866 1513:867-929] [-1, 1486, 1636 [...]
+CTCCAGAATTTCCTCTGCCTGCCTCTGCCTCCCAAGTGCTGCGATTAAAAGCGTGCACCA
+CCACGCCCGGCTCTTCTGCCCGGTTCTTAGGATTCCTCCTTCCCTGAAGAGGTCAGGAAT
+TAGTTTATGACTTAGACTGTCCTGCAGGCAGGGGCTTCTTGAAGGATAGAACAGACGTCT
+CTTGTCACCTTCCTGTCTAGGGCTGGGGAGGAGAGAACAGATAGCAAGCTCATCCCCAGA
+TTCTGGGCCTGTTTGCTCAACACCCATTCAGGATTCTTAGTTCTTCCTGCCAAAAGGCTT
+GAATTGAAGTACACTATAGATATAGATAGATAGATAGATAGATATAGATATAGATATAGA
+TATAGTTCTTTCAGGGCATTAAAGTGGGAATAAATACTAAACTAGCACTTTAGTCCCACT
+GTGACTGTTACTTGTGAGCATTAGTTTTATCCTTAGTAGCTGAAGCCTTTCCTCTGTAAT
+GACCCCTTGAAAGCATACTTGTGGTGTGGCCAGTAGAATGTGTTAACACCAGCAGTGTCC
+ACTCCACCCAGCATGAGTGCTCTCTATTCCAGGTTTGGGTGGGCGGTACTCATTAGGCAA
+GGGCTTGTTGGTCCATGCTATGTCCAGCAATGAGAAATCGAATGGATCATGTTCTCAGAT
+TCTGTGGCTCTCACCTGGGAGAGAAAAGTCTCCTGTAGGGTGTTGTACCGGTTAGTTATG
+GTGGAGGTCCCTAACTCGCTATGGGGAGCTTTTGGGGCAGAACACAGGCAAAACATACAC
+ATGGCCCACTGTACTCTGGGACACGGTGCCTGAAATTGTCCTGCCAGGCCCAGCTGGTGT
+TCTGTGGTTGCTTCTGCTCTTTTGCCCCCAGACGCGCCGGAGAGCTGGCCCTCCCGTCTA
+TGCCATAGCCTCGTCAGTGTCCTGGGGTTC
+>TR22|c1_g1_i1 len=256 path=[234:0-255] [-1, 234, -2]
+GGACTTGTCTTCAAGTCCATTTTCTTTCCTCGGGGAATCTCCCCTTCCCGACACCCACAC
+CGAACTCCGGGAGCCAGGAAGTACACTGCTTGCAAGACGCCTTTGCAGCCTGCTCCCTCC
+TCCTGGCACCCCACCTGCATCTGCAGACTATCCCCAGGCTTGGCCCTGAGCCCCAGCTAT
+CCCAAACGTGGTCTCCCTTCTCTCTTTCTCTCTCTCAGAGACCGTGCGGGCCATGACCCA
+TGTCATCAACCAGGGG
diff --git a/tests/test.csv b/tests/test.csv
new file mode 100644
index 0000000..17f8613
--- /dev/null
+++ b/tests/test.csv
@@ -0,0 +1,12 @@
+Node name,DATA1,DATA2,DATA3
+NODE_6+_length_50434_cov_42.3615,SIX_PLUS,6plus,plus6
+NODE_6-_length_50434_cov_42.3615,SIX_MINUS,6minus,minus6
+NODE_7+_length_50434_cov_42.3615,SEVEN_PLUS,7plus,plus7
+NODE_4+,FOUR_PLUS,4plus,plus4
+4-,FOUR_MINUS,4minus,minus4
+3,THREE_PLUS,3plus,plus3
+NODE_5-,FIVE_MINUS
+NODE_8,EIGHT_PLUS,8plus,plus8
+NODE_9+,NINE_PLUS,9plus,plus9,extra,extra,extra
+BADLINE
+BADLINE_BADLINE_BADLINE_BADLINE_BADLINE
\ No newline at end of file
diff --git a/tests/test.fastg b/tests/test.fastg
new file mode 100755
index 0000000..42c376e
--- /dev/null
+++ b/tests/test.fastg
@@ -0,0 +1,7282 @@
+>NODE_1_length_6070_cov_43.3434:NODE_12_length_394_cov_88.6719';
+TATTGAACTGTCAGGAGCTGGCTGCACAACAGCCATTACGCCCAATCAACTGGTGCAGTC
+GTCTTCTGAAAATGACAATCGTGCCACCGGCTCCAGGTCTTATCGAACAGCTCAGACACA
+TGGTCCAAATGCTGGTCGATCCGTTCGGCCAGTTTTTCGATGGCCTCTTGCTTGAGCTTG
+TCACTTTCCCTGAACTCGATGTTCAAGGCCCTGGCCACCTGGTTGAGGTTCCGGCCGATA
+GCTCCAAGCTGCCGGCACGATTCCCGTACGGTGTTCACTTCTTCATCAGTGAGGACCGGC
+ATCCGGTTCAACGACCGCAGTCATTTCTGTACCTAAACAGTCCTGCGAATATGTGAGTTT
+TGACCTAATGAGCCACAAAAACTCATTTTCGCCCACGATAATTTTTCTACTTCCTTTCTT
+TGGAATGCTCATTTCAATATTCACATAACGTCGCTATCAATCGCGGAAAAGGCGTAGTGC
+GCGAAGCGAACGAAGCTTTTTGCCGTCGATTGCATAGCTTTGTTAACCCTTTTTCCAAAT
+TTGATAGCAATAGTTAATGTTTGAAGTAAAGTGTTGCTCAAAAACAACTTCGAAGGTATT
+TGGAATACTCGGGAAGAAAACATCCCCCTCTGGCTCGATGTCGATCGTCGATAAGTGGAG
+CGTAGAGGCCATGGGTAATGTTTCTCGGTAAATTTCTCCGCCACCAGACACTATAACGTG
+ACCGGTGAATTCAGCTAGCCTGTCCATGGCCTCTTCGATTGACTGAAATACAACTACATT
+GTCATCATTTGATGTCCAACCTGAGCGGGTAACGACCGCGTATTTCCTATTGGGGAGTGC
+GCCCATAGATTCAAACGTCTTGCGACCCACCAGAAGCCACTGATTGTAGGTCAATGCTTT
+AAAAAGTAGCTGCTCCCCTTTCGCGGACCAGGGTATGTCTGGACCGCAACCAATCACGCC
+GTTTTTCGCTTTCGCAGCCATCAATGATACTTTCAAGGTTCTCATCCTGGGTTAACTTTG
+TTTTAGGGCGACTGCCCTGCTGCGTAACATCGTTGCTGCTCCATAACATCAAACATCGAC
+CCACGGCGTAACGCGCTTGCTGCTTGGATGCCCGAGGCATAGACTGTACAAAAAAACAGT
+CATAACAAGCCATGAAAACCGCCACTGCGCCGTTACCACCGCTGCGTTCGGTCAAGGTTC
+TGGACCAGTTGCGTGAGCGCATACGCTACTTGCATTACAGTTTACGAACCGAACAGGCTT
+ATGTCCACTGGGTTCGTGCCTTCATCCGTTTCCACGGTGTGCGTCACCCGGCAACCTTGG
+GCAGCAGCGAAGTCGAGGCATTTCTGTCCTGGCTGGCGAACGAGCGCAAGGTTTCGGTCT
+CCACGCATCGTCAGGCATTGGCGGCCTTGCTGTTCTTCTACGGCAAGGTGCTGTGCACGG
+ATCTGCCCTGGCTTCAGGAGATCGGAAGACCTCGGCCGTCGCGGCGCTTGCCGGTGGTGC
+TGACCCCGGATGAAGTGGTTCGCATCCTCGGTTTTCTGGAAGGCGAGCATCGTTTGTTCG
+CCCAGCTTCTGTATGGAACGGGCATGCGGATCAGTGAGGGTTTGCAACTGCGGGTCAAGG
+ATCTGGATTTCGATCACGGCACGATCATCGTGCGGGAGGGCAAGGGCTCCAAGGATCGGG
+CCTTGATGTTACCCGAGAGCTTGGCACCCAGCCTGCGCGAGCAGCTGTCGCGTGCACGGG
+CATGGTGGCTGAAGGACCAGGCCGAGGGCCGCAGCGGCGTTGCGCTTCCCGACGCCCTTG
+AGCGGAAGTATCCGCGCGCCGGGCATTCCTGGCCGTGGTTCTGGGTTTTTGCGCAGCACA
+CGCATTCGACCGATCCACGGAGCGGTGTCGTGCGTCGCCATCACATGTATGACCAGACCT
+TTCAGCGCGCCTTCAAACGTGCCGTAGAACAAGCAGGCATCACGAAGCCCGCCACACCGC
+ACACCCTCCGCCACTCGTTCGCGACGGCCTTGCTCCGCAGCGGTTACGACATTCGAACCG
+TGCAGGATCTGCTCGGCCATTCCGACGTCTCTACGACGATGATTTACACGCATGTGCTGA
+AAGTTGGCGGTGCCGGAGTGCGCTCACCGCTTGATGCGCTGCCGCCCCTCACTAGTGAGA
+GGTAGGGCAGCGCAAGTCAATCCTGGCGGATTCACTACCCCTGCGCGAAGGCCATCGGTG
+CCGCATCGAACGGCCGGTTGCGGAAAGTCCTCCCTGCGTCCGCTGATGGCCGGCAGCAGC
+CCGTCGTTGCCTGATGGATCCAACCCCTCCGCTGCTATAGTGCAGTCGGCTTCTGACGTT
+CAGTGCAGCCGTCTTCTGAAAACGACACCATGTGCAAACGATGTCAGAATAGAGTTAAAT
+TTCCTATTGATTGACATATTCCGTCAAAGGTAATAGATTTCATCCTGACACTTTTGCCTT
+TGGAGGCATCTTGCAAGGTCAACGCATCGGCTATGTCCGCGTCAGCAGCTTCGACCAGAA
+CCCGGAACGGCAATTGGAGGGTGTTCAGGTGGCGCGGGTGTTCACCGACAAGGCTTCTGG
+CAAGGACACCCAGCGTCCCGAGCTGGAAAGGCTGCTGGCCTTCGTCCGCGAGGGCGACAC
+CGTGGTGGTGCATAGCATGGACAGGCTGGCACGCAACCTTGATGACCTGCGCCGCATCGT
+CCAAGGGCTGACACAACGGGGCGTGCGCATGGAGTTCGTCAAAGAAGGGCTGAAGTTCAC
+CGGCGAGGACTCACCGATGGCCAATCTGATGCTGTCGGTCATGGGAGCCTTCGCTGAGTT
+CGAGCGCGCCCTGATCCGCGAACGTCAGCGCGAGGGAATCGTGCTGGCCAAGCAGCGCGG
+TGCCTACCGGGGACGAAAGAAATCGCTGAACAGCGAACAAATTGCCGAGTTGAAACGGCG
+AGTTGCGGCAGGCGACCAAAAAACCTTGGTGGCCCGTGACTTCGGCATCAGCCGCGAAAC
+CTTGTACCAGTACCTGCGGGAAGACTGACCATGCCACGCCGCTCAATCCTGTCCGCCACC
+GAGCGCGAAAGCCTGCTGGCACTGCCAGATGCCAAAGACGAACTGATACGGCACTACACG
+TTCAACGAAACCGACCTGTCGGTGATCCGTCAGCGTCGCGGCGCCGCGAATCGATTGGGC
+TTCGCTGTGCAGCTTTGCTACTTGCGATTCCCTGGCACCTTTTTGGGCGTCGATGAGCCT
+CCGTTTCCGCCCCTGTTGCGCATGGTGGCCGCGCAACTCAAGATGCCAGTGGAAAGTTGG
+AGCGAGTACGGCCAGCGCGAACAGACACGGCGGGAGCACTTGGTCGAGCTGCAAACGGTT
+TTTGGGTTCAAGCCCTTCACCATGAGCCACTATCGGCAAGCCGTGCATACATTGACCGAG
+CTGGCCTTGCAGACCGACAAAGGCATCGTGCTGGCGAGCGCACTTGTCGAGAATCTGCGG
+CGGCAGAGCATTATCCTGCCCGCCATGAATGCCATCGAGCGCGCAAGCGCCGAGGCCATC
+ACCCGTGCCAACCGACGCATTTACGCGGCGCTGACCGATTCTTTGTTATCACCCCACCGT
+CAGCGCCTGGACGAACTTCTCAAGCGCAAGGACGGCAGTAAAGTGACGTGGCTGGCATGG
+CTGCGCCAGTCGCCTGCCAAACCGAACTCTCGCCACATGCTCGAACATATTGAGCGCCTG
+AAATCCTGGCAAGCACTTGATCTGCCCGCAGGCATCGAGCGGCAGGTTCACCAGAACCGC
+CTGCTCAAAATCGCTCGTGAAGGTGGCCAGATGACGCCTGCTGATCTGGCAAAGTTCGAG
+GTGCAACGACGCTATGCCACGCTGGTAGCGCTGGCCATCGAAGGCATGGCCACCGTCACC
+GATGAAATCATCGACCTTCACGATCGCATCATCGGCAAGCTGTTCAACGCGGCCAAGAAC
+AAGCATCAGCAGCAGTTCCAGGCTTCCGGCAAGGCGATCAACGACAAGGTGCGGATGTAT
+GGGCGCATCGGTCAAGCGTTGATTGAGGCCAAGCAAAGCGGCAGCGATCCGTTCGCCGCC
+ATCGAGGCCGTTATGCCCTGGGACACCTTCGCCGCCAGCGTCACCGAAGCGCAAACATTG
+GCGCGGCCTGCCGACTTTGATTTCCTGCACCACATCGGTGAAAGCTATGCCACGCTACGC
+CGCTACGCGCCGCAGTTCCTGGGCGTGCTCAAATTGCGGGCTGCGCCCGCCGCCAAGGGT
+GTGCTCGATGCCATCGACATGCTGCGCGGCATGAACAGCGACAGCGCGCGCAAGGTGCCC
+GCCGATGCGCCAACCGCATTCATCAAGCCGCGCTGGGCAAAGCTGGTTCTGACCGACGAC
+GGCATCGACCGGCGTTACTACGAGTTATGCGCCCTGTCGGAGCTGAAGAACGCGCTGCGC
+TCCGGTGATGTCTGGGTGCAGGGTTCTCGCCAGTTCAAGGACTTCGACGAATACCTGGTG
+CCGGTCGAGAAGTTCGCCACTTTGAAGCTGGCCAGCGAATTGCCGCTGGCAGTGGCCACC
+GACTGCGACCAATACCTGCATGACCGGTTGGAATTGTTGGAGGCGCAACTCGCCACAGTC
+AACCGCATGGCTGCGGCCAACGACTTACCGGATGCCATCATCACCACCGCGTCAGGCCTG
+AAGATCACGCCGCTGGACGCGGCAGTACCAGACGCCGCGCAAGCCATGATCGACCAGACA
+GCTATGCTGCTGCCGCACCTCAAAATCACCGAGTTGCTGATGGAGGTCGATGAATGGACG
+GGCTTCACCCGCCACTTCACACACCTGAAGACCAGCGACACGGCCAAGGACAAAACCTTG
+CTGTTGACGACGATCCTGGCCGACGCGATCAACCTGGGTCTGACCAAAATGGCCGAGTCC
+TGCCCTGGCACCACCTACGCCAAGCTGTCTTGGCTGCAAGCCTGGCACATCCGCGATGAA
+ACCTATTCGACGGCGCTGGCCGAGCTGGTGAATGCGCAGTTTCGGCAACCCTTCGCCGGC
+AACTGGGGTGACGGCACCACGTCATCGTCGGACGGCCAGAACTTCAGAACCGGCAGCAAA
+GCAGAAAGCACTGGTCATATCAACCCGAAGTATGGAAGCAGTCCAGGACGGACTTTCTAC
+ACCCATATCTCCGACCAGTACGCGCCCTTCAGTGCCAAGGTGGTCAACGTGGGCATTCGT
+GATTCAACTTACGTGCTTGATGGCCTGCTGTACCACGAGTCGGACTTGCGCATCGAGGAA
+CACTACACCGACACGGCAGGCTTCACCGATCACGTGTTTGGCTTGATGCATTTGCTGGGA
+TTTCGCTTCGCGCCGCGTATCCGTGACTTGGGCGAAACCAAGCTATTCATCCCCAAGGGC
+GATGCCGCCTATGACGCGCTCAAGCCGATGATTAGCAGCGACAGGCTGAACATCAAGCAA
+ATACGCGCCCATTGGGATGAAATTCTGCGGCTGGCCACCTCCATCAAGCAAGGCACGGTA
+ACGGCTTCGCTGATGCTGCGCAAACTCGGCAGCTACCCGCGCCAGAACGGCTTGGCCGTG
+GCGTTGCGCGAGCTGGGGCGCATCGAGCGCACGCTGTTCATTTTGGATTGGCTGCAAAGC
+GTGGAGCTGCGCCGCCGCGTCCATGCGGGGCTGAATAAGGGCGAGGCGCGCAACGCGCTG
+GCCAGGGCGGTCTTCTTCTACCGATTGGGTGAAATCCGCGACCGCAGTTTTGAGCAGCAG
+CGCTACCGGGCCAGCGGCCTCAATCTGGTGACGGCGGCCATCGTGTTGTGGAACACGGTA
+TATCTGGAGCGTGCCACCAGTGCTTTGCGTGGCAACGGCACGGCGCTGGACGACACATTG
+TTGCAATATCTGTCGCCGCTGGGGTGGGAGCACATCAACCTGACCGGCGATTACCTATGG
+CGCAGCAGCGCCAAGGTCGGTGCGGGGAAGTTTAGGCCATTGCGACCGCTGCCACCGGCT
+TAGCGTGCTTTATTTAATGAGATGGTCACTCCCTCCTTCCCGGTACTATGCTGAGGACAG
+GCTTTCATTC
+>NODE_1_length_6070_cov_43.3434':NODE_4_length_123_cov_119.957;
+GAATGAAAGCCTGTCCTCAGCATAGTACCGGGAAGGAGGGAGTGACCATCTCATTAAATA
+AAGCACGCTAAGCCGGTGGCAGCGGTCGCAATGGCCTAAACTTCCCCGCACCGACCTTGG
+CGCTGCTGCGCCATAGGTAATCGCCGGTCAGGTTGATGTGCTCCCACCCCAGCGGCGACA
+GATATTGCAACAATGTGTCGTCCAGCGCCGTGCCGTTGCCACGCAAAGCACTGGTGGCAC
+GCTCCAGATATACCGTGTTCCACAACACGATGGCCGCCGTCACCAGATTGAGGCCGCTGG
+CCCGGTAGCGCTGCTGCTCAAAACTGCGGTCGCGGATTTCACCCAATCGGTAGAAGAAGA
+CCGCCCTGGCCAGCGCGTTGCGCGCCTCGCCCTTATTCAGCCCCGCATGGACGCGGCGGC
+GCAGCTCCACGCTTTGCAGCCAATCCAAAATGAACAGCGTGCGCTCGATGCGCCCCAGCT
+CGCGCAACGCCACGGCCAAGCCGTTCTGGCGCGGGTAGCTGCCGAGTTTGCGCAGCATCA
+GCGAAGCCGTTACCGTGCCTTGCTTGATGGAGGTGGCCAGCCGCAGAATTTCATCCCAAT
+GGGCGCGTATTTGCTTGATGTTCAGCCTGTCGCTGCTAATCATCGGCTTGAGCGCGTCAT
+AGGCGGCATCGCCCTTGGGGATGAATAGCTTGGTTTCGCCCAAGTCACGGATACGCGGCG
+CGAAGCGAAATCCCAGCAAATGCATCAAGCCAAACACGTGATCGGTGAAGCCTGCCGTGT
+CGGTGTAGTGTTCCTCGATGCGCAAGTCCGACTCGTGGTACAGCAGGCCATCAAGCACGT
+AAGTTGAATCACGAATGCCCACGTTGACCACCTTGGCACTGAAGGGCGCGTACTGGTCGG
+AGATATGGGTGTAGAAAGTCCGTCCTGGACTGCTTCCATACTTCGGGTTGATATGACCAG
+TGCTTTCTGCTTTGCTGCCGGTTCTGAAGTTCTGGCCGTCCGACGATGACGTGGTGCCGT
+CACCCCAGTTGCCGGCGAAGGGTTGCCGAAACTGCGCATTCACCAGCTCGGCCAGCGCCG
+TCGAATAGGTTTCATCGCGGATGTGCCAGGCTTGCAGCCAAGACAGCTTGGCGTAGGTGG
+TGCCAGGGCAGGACTCGGCCATTTTGGTCAGACCCAGGTTGATCGCGTCGGCCAGGATCG
+TCGTCAACAGCAAGGTTTTGTCCTTGGCCGTGTCGCTGGTCTTCAGGTGTGTGAAGTGGC
+GGGTGAAGCCCGTCCATTCATCGACCTCCATCAGCAACTCGGTGATTTTGAGGTGCGGCA
+GCAGCATAGCTGTCTGGTCGATCATGGCTTGCGCGGCGTCTGGTACTGCCGCGTCCAGCG
+GCGTGATCTTCAGGCCTGACGCGGTGGTGATGATGGCATCCGGTAAGTCGTTGGCCGCAG
+CCATGCGGTTGACTGTGGCGAGTTGCGCCTCCAACAATTCCAACCGGTCATGCAGGTATT
+GGTCGCAGTCGGTGGCCACTGCCAGCGGCAATTCGCTGGCCAGCTTCAAAGTGGCGAACT
+TCTCGACCGGCACCAGGTATTCGTCGAAGTCCTTGAACTGGCGAGAACCCTGCACCCAGA
+CATCACCGGAGCGCAGCGCGTTCTTCAGCTCCGACAGGGCGCATAACTCGTAGTAACGCC
+GGTCGATGCCGTCGTCGGTCAGAACCAGCTTTGCCCAGCGCGGCTTGATGAATGCGGTTG
+GCGCATCGGCGGGCACCTTGCGCGCGCTGTCGCTGTTCATGCCGCGCAGCATGTCGATGG
+CATCGAGCACACCCTTGGCGGCGGGCGCAGCCCGCAATTTGAGCACGCCCAGGAACTGCG
+GCGCGTAGCGGCGTAGCGTGGCATAGCTTTCACCGATGTGGTGCAGGAAATCAAAGTCGG
+CAGGCCGCGCCAATGTTTGCGCTTCGGTGACGCTGGCGGCGAAGGTGTCCCAGGGCATAA
+CGGCCTCGATGGCGGCGAACGGATCGCTGCCGCTTTGCTTGGCCTCAATCAACGCTTGAC
+CGATGCGCCCATACATCCGCACCTTGTCGTTGATCGCCTTGCCGGAAGCCTGGAACTGCT
+GCTGATGCTTGTTCTTGGCCGCGTTGAACAGCTTGCCGATGATGCGATCGTGAAGGTCGA
+TGATTTCATCGGTGACGGTGGCCATGCCTTCGATGGCCAGCGCTACCAGCGTGGCATAGC
+GTCGTTGCACCTCGAACTTTGCCAGATCAGCAGGCGTCATCTGGCCACCTTCACGAGCGA
+TTTTGAGCAGGCGGTTCTGGTGAACCTGCCGCTCGATGCCTGCGGGCAGATCAAGTGCTT
+GCCAGGATTTCAGGCGCTCAATATGTTCGAGCATGTGGCGAGAGTTCGGTTTGGCAGGCG
+ACTGGCGCAGCCATGCCAGCCACGTCACTTTACTGCCGTCCTTGCGCTTGAGAAGTTCGT
+CCAGGCGCTGACGGTGGGGTGATAACAAAGAATCGGTCAGCGCCGCGTAAATGCGTCGGT
+TGGCACGGGTGATGGCCTCGGCGCTTGCGCGCTCGATGGCATTCATGGCGGGCAGGATAA
+TGCTCTGCCGCCGCAGATTCTCGACAAGTGCGCTCGCCAGCACGATGCCTTTGTCGGTCT
+GCAAGGCCAGCTCGGTCAATGTATGCACGGCTTGCCGATAGTGGCTCATGGTGAAGGGCT
+TGAACCCAAAAACCGTTTGCAGCTCGACCAAGTGCTCCCGCCGTGTCTGTTCGCGCTGGC
+CGTACTCGCTCCAACTTTCCACTGGCATCTTGAGTTGCGCGGCCACCATGCGCAACAGGG
+GCGGAAACGGAGGCTCATCGACGCCCAAAAAGGTGCCAGGGAATCGCAAGTAGCAAAGCT
+GCACAGCGAAGCCCAATCGATTCGCGGCGCCGCGACGCTGACGGATCACCGACAGGTCGG
+TTTCGTTGAACGTGTAGTGCCGTATCAGTTCGTCTTTGGCATCTGGCAGTGCCAGCAGGC
+TTTCGCGCTCGGTGGCGGACAGGATTGAGCGGCGTGGCATGGTCAGTCTTCCCGCAGGTA
+CTGGTACAAGGTTTCGCGGCTGATGCCGAAGTCACGGGCCACCAAGGTTTTTTGGTCGCC
+TGCCGCAACTCGCCGTTTCAACTCGGCAATTTGTTCGCTGTTCAGCGATTTCTTTCGTCC
+CCGGTAGGCACCGCGCTGCTTGGCCAGCACGATTCCCTCGCGCTGACGTTCGCGGATCAG
+GGCGCGCTCGAACTCAGCGAAGGCTCCCATGACCGACAGCATCAGATTGGCCATCGGTGA
+GTCCTCGCCGGTGAACTTCAGCCCTTCTTTGACGAACTCCATGCGCACGCCCCGTTGTGT
+CAGCCCTTGGACGATGCGGCGCAGGTCATCAAGGTTGCGTGCCAGCCTGTCCATGCTATG
+CACCACCACGGTGTCGCCCTCGCGGACGAAGGCCAGCAGCCTTTCCAGCTCGGGACGCTG
+GGTGTCCTTGCCAGAAGCCTTGTCGGTGAACACCCGCGCCACCTGAACACCCTCCAATTG
+CCGTTCCGGGTTCTGGTCGAAGCTGCTGACGCGGACATAGCCGATGCGTTGACCTTGCAA
+GATGCCTCCAAAGGCAAAAGTGTCAGGATGAAATCTATTACCTTTGACGGAATATGTCAA
+TCAATAGGAAATTTAACTCTATTCTGACATCGTTTGCACATGGTGTCGTTTTCAGAAGAC
+GGCTGCACTGAACGTCAGAAGCCGACTGCACTATAGCAGCGGAGGGGTTGGATCCATCAG
+GCAACGACGGGCTGCTGCCGGCCATCAGCGGACGCAGGGAGGACTTTCCGCAACCGGCCG
+TTCGATGCGGCACCGATGGCCTTCGCGCAGGGGTAGTGAATCCGCCAGGATTGACTTGCG
+CTGCCCTACCTCTCACTAGTGAGGGGCGGCAGCGCATCAAGCGGTGAGCGCACTCCGGCA
+CCGCCAACTTTCAGCACATGCGTGTAAATCATCGTCGTAGAGACGTCGGAATGGCCGAGC
+AGATCCTGCACGGTTCGAATGTCGTAACCGCTGCGGAGCAAGGCCGTCGCGAACGAGTGG
+CGGAGGGTGTGCGGTGTGGCGGGCTTCGTGATGCCTGCTTGTTCTACGGCACGTTTGAAG
+GCGCGCTGAAAGGTCTGGTCATACATGTGATGGCGACGCACGACACCGCTCCGTGGATCG
+GTCGAATGCGTGTGCTGCGCAAAAACCCAGAACCACGGCCAGGAATGCCCGGCGCGCGGA
+TACTTCCGCTCAAGGGCGTCGGGAAGCGCAACGCCGCTGCGGCCCTCGGCCTGGTCCTTC
+AGCCACCATGCCCGTGCACGCGACAGCTGCTCGCGCAGGCTGGGTGCCAAGCTCTCGGGT
+AACATCAAGGCCCGATCCTTGGAGCCCTTGCCCTCCCGCACGATGATCGTGCCGTGATCG
+AAATCCAGATCCTTGACCCGCAGTTGCAAACCCTCACTGATCCGCATGCCCGTTCCATAC
+AGAAGCTGGGCGAACAAACGATGCTCGCCTTCCAGAAAACCGAGGATGCGAACCACTTCA
+TCCGGGGTCAGCACCACCGGCAAGCGCCGCGACGGCCGAGGTCTTCCGATCTCCTGAAGC
+CAGGGCAGATCCGTGCACAGCACCTTGCCGTAGAAGAACAGCAAGGCCGCCAATGCCTGA
+CGATGCGTGGAGACCGAAACCTTGCGCTCGTTCGCCAGCCAGGACAGAAATGCCTCGACT
+TCGCTGCTGCCCAAGGTTGCCGGGTGACGCACACCGTGGAAACGGATGAAGGCACGAACC
+CAGTGGACATAAGCCTGTTCGGTTCGTAAACTGTAATGCAAGTAGCGTATGCGCTCACGC
+AACTGGTCCAGAACCTTGACCGAACGCAGCGGTGGTAACGGCGCAGTGGCGGTTTTCATG
+GCTTGTTATGACTGTTTTTTTGTACAGTCTATGCCTCGGGCATCCAAGCAGCAAGCGCGT
+TACGCCGTGGGTCGATGTTTGATGTTATGGAGCAGCAACGATGTTACGCAGCAGGGCAGT
+CGCCCTAAAACAAAGTTAACCCAGGATGAGAACCTTGAAAGTATCATTGATGGCTGCGAA
+AGCGAAAAACGGCGTGATTGGTTGCGGTCCAGACATACCCTGGTCCGCGAAAGGGGAGCA
+GCTACTTTTTAAAGCATTGACCTACAATCAGTGGCTTCTGGTGGGTCGCAAGACGTTTGA
+ATCTATGGGCGCACTCCCCAATAGGAAATACGCGGTCGTTACCCGCTCAGGTTGGACATC
+AAATGATGACAATGTAGTTGTATTTCAGTCAATCGAAGAGGCCATGGACAGGCTAGCTGA
+ATTCACCGGTCACGTTATAGTGTCTGGTGGCGGAGAAATTTACCGAGAAACATTACCCAT
+GGCCTCTACGCTCCACTTATCGACGATCGACATCGAGCCAGAGGGGGATGTTTTCTTCCC
+GAGTATTCCAAATACCTTCGAAGTTGTTTTTGAGCAACACTTTACTTCAAACATTAACTA
+TTGCTATCAAATTTGGAAAAAGGGTTAACAAAGCTATGCAATCGACGGCAAAAAGCTTCG
+TTCGCTTCGCGCACTACGCCTTTTCCGCGATTGATAGCGACGTTATGTGAATATTGAAAT
+GAGCATTCCAAAGAAAGGAAGTAGAAAAATTATCGTGGGCGAAAATGAGTTTTTGTGGCT
+CATTAGGTCAAAACTCACATATTCGCAGGACTGTTTAGGTACAGAAATGACTGCGGTCGT
+TGAACCGGATGCCGGTCCTCACTGATGAAGAAGTGAACACCGTACGGGAATCGTGCCGGC
+AGCTTGGAGCTATCGGCCGGAACCTCAACCAGGTGGCCAGGGCCTTGAACATCGAGTTCA
+GGGAAAGTGACAAGCTCAAGCAAGAGGCCATCGAAAAACTGGCCGAACGGATCGACCAGC
+ATTTGGACCATGTGTCTGAGCTGTTCGATAAGACCTGGAGCCGGTGGCACGATTGTCATT
+TTCAGAAGACGACTGCACCAGTTGATTGGGCGTAATGGCTGTTGTGCAGCCAGCTCCTGA
+CAGTTCAATA
+>NODE_2_length_9792_cov_41.771:NODE_42_length_172_cov_160.495;
+TATTGAACTGTCAGGAGCTGGCTGCACAACAGCCATTACGCCCAATCAACTGGTGCAGTC
+GTCTTCTGAAAATGACACATGGCATCTGACATCAAGTTAGGGTATGCCTCAATCTGACGG
+CTGCGAACCGCCAGGGACAGGCGCAATGTCAGATTCTGTCGCGGCCTTGGCGCGTGCCTG
+GAAGCGTTCATAGCAATCCAGCCCGCAGAAATGTTCGACGTATTCCGCGCCTTCCGGGGT
+GAAGGCGGCATCGAGCGGAATTTCTTTGCAGCATACGCAGCAGGTGGTGCAACTGGCAGT
+GTTCGGGGCGTTTGCGTTCATGGTGGTACTCCTCCAGATTGGTAGCGAAGCTCAAAGCTG
+CCCACTCTCGGCTGGCTGGGAAGCGGTCATGATCTTCCCTTGAAGGCCCGCAGCAGCCGC
+GTCACAGACAGGACAAACAAGCCGGTCAGCGTGAGGGCTGCAATACCCCAGTGCTCCCCG
+ATGAACGCGCCGGCCGTCGTGCCGGCTAGCACAATGGCGAGAATCGGCAAATAGCAGGGA
+CAGGTGAGCACGGCCAGCGCGCCCCACAAGTAGCCGGTGATCGGTTTGTGCGTCTCAGAC
+GGCAAGTGCTCTGGGCTGTTCATGGCAGACTCTCCGCGTGCTGTGCCGGTTCGGTTGGCA
+TGGCGGCCAGTTGCATTTCGAGGCTGGCCAGGGCCTCGCGCCGACGCTCGACGAGTTGCC
+GCAACACGGCAAGCTGCGCAGACGCACCGTCACCGTCCGCAGCATCCAGCGCCCGGCACA
+GCCGCGCCAGTGCGTCCAGGCCGATACCCGCTTCGAAGGCAGCCCGTACAAAGCGCAGCC
+GTTGCAACGCGGTGTCATCGAACAAGCCGTAGCCGCCCGTGGTGTACGCGACCGGCCGTA
+GCAATCCGCGCAGCAGGTAGTCGCGCACGATATGCACGCTCACCCCGGCATCAAGGGCCA
+GCCGGGACACTGTGTAGGCGCTCATTGAACACCTCCTTTTCCTCATCCGGCGCAGCACGA
+AAGCTGCTTCACGTCCTTGCTGAAGGTCTGCGCCGCGAGCTTCAGCCCTTCGACCATGGT
+CAGGTAGGGGAACAATTGGTCGGCCAGTTCCTGCACGGTCATACGGTTGCGAATGGCGAG
+CACCGCCGTCTGGATCAGTTCACCCGCTTCCGGGGCCACCGCTTGCACGCCGATGAGCCG
+TCCGCTACCTTCCTCGATGACCAGCTTGATGAAGCCGCGTGTGTCGAAGTTGGCAAGCGC
+ACGCGGCACGTTATCCAGTGTTAGCAGGCGACTGTCGGTCTCGATCCCGTCGTGATGTGC
+TTCCGCCTCGCTGTAGCCCACGGTGGCGACCTGCGGGTCGGTGAACACCACGGCCGGCAT
+TGCGGTCAGGTCCAGGGCCGCATCGCCGCCAGTCATGTTGATCGCCGCACGAGTGCCGGC
+CGCTGCCGCCACATAGACGAACTGCGGCTGGTCGGTGCAGTCGCCGGCCGCGTAGATGTT
+CGGGCTACTGGTGCGCATGCCCTTGTCGATGACGATGGCCCCCTGCGCATTGACGGCTAC
+CCCCGCCGCTTCCAATGCCAGGCTGCGCGTGTTCGGTGTCCGGCCGGTGGCGACCAGCAG
+CTTGTCGGCGCGCAATTCACCGTGCGTGGTGGTCAGCACGAATTCACCGTCCATATGGGC
+GACCTGGCTGGCTTGCGTGTGCTCCAGCACCTCGATGCCCTCGGCACGGAAAGCGGCTGT
+CACCGCCTCGCCGATGGCCGGGTCTTCACGGAAGAACAAGGTATTGCGCGCCAGGGCCGT
+GACCTTGCTGCCCAGCCGGGCAAAGGCTTGCGCCAGCTCCAGCGCCACCACCGACGAGCC
+GATTACGGCAAGGCGTTCGGGAATGGTGTCGCTCGCCAGGGCCTCGGTGGAAGTCCAGTA
+GGGTGACTCTTTCAAGCCCGGAATCGGCGGGACCGCCGGGCTGGCACCCGTGGCGACCAG
+GCAGCGGTCGAACATCACGACGCGCTCGCCACCCTCGTTCAAACTAACGATAAGGCTCTG
+GTCGTCCTTGAAACGCGCTTCACCGTGCAGAACGGTGATGGCTGAATTGCCGTCCAGGAT
+GCCTTCGTACTTGGCATGACGGAGTTCTTCGACACGGGCCTGCTGCTGGGCCAGCAGCCG
+CTCGCGCAAGATCGTCGGCGGTGTGGGTGGCATGCCGCCGTCGAATGGGCTTTCCCGGCG
+CAGATGGGCGATGTGGGCGGCGCGGATCATGATCTTGGACGGCACACAACCGACGTTGAC
+GCAGGTGCCGCCGATGGTGCCGCGCTCAATCAGCGTGACCTGCGCGCCTTGCTCGACGGC
+CTTCAGTGCTGCCGCCATCGCGGCTCCACCGCTACCAATGACGACGACCTGCAACGGGCG
+TTCGTTGCCACTGGGCTTATCAGCGGCCCCTATCCAGCCGCGCATCTTGTCGAGCAGGCC
+GGCGCGGTTGTCCGTCGGTGGCGCATCGGCAAGCGTTGCCTCGTAGCCCAGTCCGGCCAC
+GGCGGTAGTCAGCGCATCCGATGACGTGCCCGCCTCAATGGCGAGTTGCGCTGTGCCCTT
+CGGATAGGACACCAGCGCCGATTGCACGCCGGGCACTTTCTCCAAGGCTTCCTTGACGTG
+AGCCGCGCACGAGTCGCAGGTCATCCCGGTGATTTTCAGGGTGGTCATGTATTTTTCCTT
+TTCTGTGGTGGCTACGGCTGTTGCCGTCAGCCACGTTGTTCTGGCAATTCACAGCTGTCC
+GGCCCGCAGCGGCGATGTGCTGGCGAGATGAAATCCCAGACCGACACCCCAACCATCAAG
+GCCAGGCCGACATAGAGCAGTCCACCGCTCTGCCAGCCGTAAGCCCGCATTAAAAACACC
+GCTGCCAGCACCAAGATCGGGCCTATCGTGCCGAGCGCCGTGCGTCGCCACTGTCGATGA
+TTGAGCCAAGCGATAGCATTGGCGAGTAACGCGATGCCGGCGAACATCGGCAGCAGGATG
+CCAATGAATAGCCCCTCGTACTGGCTCAAGAAGCCCAGTCCGATGGCCGCGCCAAAGCTG
+GCGATGGCAGGAAAACAGGCGGCGCAGCCCATCGCGGAAACGACGCTGCCGAGCGCGCCG
+GTTTTGCCAGCGATGCGCGTGATGAGTCCCATGTGTCGCTCCCGAGTTCGGTTAACGGAT
+CAGCGTTTGAGGCTGGACGGATAGCCCGCGTCCTCGGTCGCCTTGGTCAACTTCTGGACG
+TTGGTCTTGGCATCGTCGAAGGTGACGACGGCCTGGCGCTTGTCGAAACTTACGTCGGTC
+TTGCTCACGCCCTCAACCTTGGAAAGCGCGTGCTTGACAGTGATCGGGCAAGAGGCGCAG
+GTCATGCCAGGCACGGACAGCGTGACGGTCTGGGTGGCGGCCCACACGGGGGCAACAACG
+GCAGCGAGGGCGAGGGCGGCAAACAGTTTTTTCATGATGAACTCCTGTGATTAATAGAAA
+AATGGCATGACGTAGGGAAATCCGAGCGAGACCAGGACCAGCGCGGCCACGATCCAGAAA
+ATGAGCTTGTAAGTAGCTCGCACTTGGGGAATCGCGCAGACCTCACCCGGTTTGCAGGCT
+TGCGCCGGGCGGTAGATGCGCCGCCAGGCGAAAAACAGCGCGACCAGCGCTGCGCCGATG
+AAGATCGGGCGATAGGGTTCCAGCACCGTCAGGTTGCCGATCCATGCCCCGCTGAACCCC
+AAGGCGATCAAAACCAGCGGCCCCAGGCAGCAGGCCGACGCAAGAATGGCGGCCAGCCCA
+CCGGCGAAGAGCGCGCCGCGCCCGTTTTGTGGTTCAGACTTTTGTGGTTCAGACATACGC
+TTGTCCTTTCAAATTTGGTTTGGATAGCTTAAGCTTACTTCCGTAGTTATGTACGGAGTC
+AAGCGATATGCAAATTAATTTTGAGAATCTGACCATTGGCGTTTTTGCCAAGGCGGCCGG
+GGTCAATGTGGAGACCATCCGGTTCTACCAGCGCAAGGGCCTGCTGCCGGAGCCAGACAA
+GCCCTATGGCAGCATTCGCCGCTATGGCGAGGCGGATGTAACACGAGTGCGGTTCGTGAA
+ATCGGCCCAGCGGCTGGGCTTTAGCCTGGACGAAATCGCCGAGCTACTGCGGCTGGAGGA
+TGGCACCCATTGCGAGGAAGCCAGCGGCCTGGCCGAGCACAAGCTCAAGGATGTGCGCGA
+GAAGATGGCCGACTTGGCACGCATGGAGGCCGTGCTGTCTGAACTGGTGTGCGCCTGCCA
+TGCGCGGAAAGGGAACGTTTTCTGCCCGCTGATTGCGTCACTGCAAGACGGAACGAAGCT
+CGCTGCATCGGCGCGGGGGAGTCACGGGGTGACTACGCCTTAGCGTGCTTTATTTTCCGA
+ATTCTGAGACGACCCCAATAAGGTGATACAGAAACCCGTCGCACCTTTCAGGGTTTTCCC
+ACATCGATTCACAATACTCGTCATAGGCTTTCTGGATAATTGCCGGGGACAACATGGACA
+GCTCCGGGTAAAGAGCCTGGAATTGCTGGTAGTGTTCCGGATCTTGCTCGTCAACGTCCC
+AGGATTTGAGCTCCAGCTGCTCCAGTCCGAACTCACCCGCCCGTGACCACAACGAAGAGA
+TACACTCCGGATTTCCCATGTATGCGTATGTCGCAGCGATAGCGTGGTTCCATTCCCACT
+CCGCCGATTTTATCCCGTTGAACAGTGATTCGGTAACCGGTGCGAAGCCACTGACAAAAT
+CCGTGTTCCAGAGATGTGTGTAGGCACTGGCATCTTCAGACACCGGCACATCCCATTCAG
+GTCGTGGGGGAAGACGGTCCAGGGTAAAGGGCTGGCGAAGGACCATGGACTGCCCCCTGT
+AGACAAAATCCCCCTCACCCTCGACAGGATTGCCGAGAAGTAATCTGGCCGCATCCGCAT
+TACAGGATTCACGGTCGGGATATTTCCGGGGCAGATACGCATTTAAATAGGGGTGATAGA
+TCGCCTGACTATGGTCGATTGTATTGGTCTCACGAGAATACGGCTCGGGGAATACCGACC
+ACGCTTCAATAGCCTCTGCGGCGGTCATTGTTGCCTTCGGAACGAGAGCTAAGGCTGATT
+CCAGGTTGTGGCCATTCTGTTTTACCAGCTGGACAAGTTTCTCGAACACAAAAACATTTT
+CGCCATTTACCTGATAGCTCACAGCGGGGATGCCGTCTATTGAACGGAGTCTTTCACGAA
+GGACATCATCGCTCATATGGAAATTGTGAAACTCATCCAAACAAAAAAATCTACCAGAAG
+GTATTTCACTGCGCATACCGTATTCCTCACGAATTAATGCTCAAATACAGACCGGTCAAA
+AGAGATGTCAATCATAGCATCAGGCAAGCCGGTGACTAACAGGTTGCATAACCTCATTAT
+CATTGGGAGATGTGCCCCTCCGCCGCCTTGCCCGAATCGACCTTGTTCGGTCATCGTGAA
+AGTCTGTTTGCTATTGTCGTTGGGGATAAACCATCAAGCTTTTCAGCATCGCGCATCAAG
+TCCGCAACCCCTTTGCTGGCGTGCCCCAAATCAAACACTACGACCGGGCCAACCTCTATA
+CCCTGCCCAAGAAGCGCCGGATCAATCACTATGATCTGACCTAAATGCTCTGATTTTTTC
+TCAGTACTGAACATCGTAACCACTCTTATTAAAAGCTAACGTGGATGGTGTAACTTGAAC
+TGGTGACTGCCCGGAGACAACAGTTTTCACAGATAAAGCGAATATTTTGCATGTCCTCAT
+CCCACATAGTGTCCGACTCAAACCCAGGTCGTGCCCACCCGACCATCCAGCCCGCTTCAA
+TACACCCTATGTGACAATCGTGCCCTGACCAGGCCGCACGCGAATTTTGAGGAAACAGGG
+AGAAAATAAAAAGAAAACAAAAAGTTATCGGCTGAAGTATTTGCACTGATCTCAAATCAG
+GCGAAGCCTGACAGCACGTATGGGTCTGGCAGGGGACTTTAGGGATGAGGACATGCAATT
+GTGATAACCCTCCCGCCACGGGGTCGGTTAAATTCGTATCCTGCCGGTGCAATTCCAACG
+GACGCATTACCAGTTCGCCGGGTAGCATGGCCAACAAAGCCAGGCATCGAGCACACGGGT
+TTCACTGACGGCCGCTGCATAGACGCCGGTATCCGGGAAGAAATAAACCGGGGTGGCGTT
+GTTCAACTGGTCGCCTTCATCGGCCAGAGCACCGATCACCTCATGAGGCTTCAGCAGCAT
+ATCCGTTAAATATTCATCCGGGTGGATGGCATTCAGCGATATGGCCAGCTCCAGAAATTC
+ATCCAGGGTGTGGCGGGTACGATACCCCCGGAATACTTCGTATGAAGGCGAGACGCATTC
+TCCATACTGGGAACAGGCATCATACCCGGCCAGCTGCTCTTCGGTGAATCTGGAGGCATG
+CTTTGCCACGAGACTCGTAAACTGCTCTTTATCGTCCATCACAATCCTTACACTGTAGGG
+GCCTGTTTTGTCAGACGCGACCACCGGCTATGAACCGACAAGACGTCAGTCGCCTGCCAG
+CCCGGGCGAGGTGGAATACAGTTTACCAGTTCCGGCCGACCGACTTTGCTGCCAGGAGAC
+GCTAAATACACTAATATTGAATCGTTGCATCTTCGATATCCGGGTGACATTCTGGTTCCC
+GGCTTTTCTGATCGGGTATGTAATGATCAATGCCCCCTCCCCCAGGATAAAATTATCAGG
+GCGCAAGGGTAGCTGGAGGAAGGATGGATACCATACATTTCTGCTTAATGCTTTTTTTTT
+GCTTCTGACGTTCTGGTAATCTAATTTTTATCACGATTTGAAAATGATAAATGGAATACA
+CGTAATGAGTTACGCCCACCTTTTTGAAAATTGCGATCATGTTATTGAGGGCAACATTCT
+CCTCGACATTGCGAGTATTCCGCCCGTTCTGAAAAAGGCCCTGATCTTTCTCATCCAATC
+CGGACTGGAGCGGGAGGCATTTAACGCTCAATTAACAGAGCTCTTGATATTACCGCAGCC
+GAATTGTCAGCCCACCTGCTTACTCCGGGAAACGCCTGAATGCGGTTCTTTGTCTTTACC
+TTGTTTTAATTTCACTACATGCTAACGTATGCATACATTAGGCAAAATGGTTTCTCCAAT
+GGAAAAGACGCAATCACCCGCAGAGCGCTTTTACGAAAGCATTTATTATTCTGATGAAAG
+CCTGGAAGAGGATTACCTCGCGGAGCTCCGCAATTTCAGCAGCGACCACTGGGACACTGC
+ACTGCGTGCCGCCCGTTTGTCTGCGGCGGTAAAGCGTTTCAAGACATCGGAGATGCTTCG
+CTTCATTCTGGAATTCGTTGTTCCCGAGAACGCTCAGGAAGACGCCCCCGATCTGACACC
+GCTCGCAGCGAAGCGGCTTTGCAACTCCCTGTTCGGCCGGTCTGGTAGCCAGTCCATTCT
+TGTCTATGTCTTTGGCCAGGCAGGCCGTGTGCATCGCAGTGCAACCTGTTCCCCCAAAAC
+CATAGAGGCTATCGCTGCTCTTTATCGTTCTGACGCTGAACGCTACTGGAATTCAACTCT
+TGCGACAATTGAAAGGGTCAAACACACCTACCGCGCAAAAATCCGAAACTCCTGATCCAG
+TTATTAGACCTTACGCCTTAATGCTAATGTATGCGTCCATTAGCTTTAAGCGAAGACGGA
+CTTATTCAGGATGCTTTTACCAAAGAAGAACCACTGGGATTGGTTTTGATGGCTGTGCCA
+ATTTATATTACCGGTCTGATCATGATAGGTACTCTGTTCACATGTAAGAAATGAACAGCC
+TGTTTCTGTTTAAGGCGAACAGGTTTATTCTCTTCACGCTTCCATGTCCCCCCATAATTT
+CCCATCCCTCTTCAGAGCAATGAGTAATTGTTTGGTCCTTCAGATTCTCCCACCCTACTG
+TCTTCGCAGGCCGTCAGGCAGACACTTTTAAGCCGGTGGTTATAGAGACCAATACGGACG
+ATTTCCTGGAGATAATCCCTTTCCTCCACCGTTAGTAACTGCCCTTCCTTTGATTTTGTA
+ATCATGTCCTGCCAGTTAAGCAATTTCTCGTAATTCACATGCTCACTGGTGTCGAGGCAA
+TGCAGCCGGAAGTAACGCATAAACAGCGGGAATTCGTCGGTCTGGGCGATATCTGAAGCT
+CTGACGGTGAGCCGACACAAACACACAATGGTGGCCTGCTGCATTCTTATCAGCACATTC
+ATGCTCTGGGGTAAGTTGTCCGGCAGCTTCAGGGGGCAGTCGGAAAGGCGTTGTAGAAGT
+GGTCCTGCTTCCGCTGGCTCGCGGCCCTCATATACCTTCAGGGGCTCGGTCCCCAGTTCC
+TGCATCATGGGGTGATACAACCATTCGCGTGACTCCGTCGCATCAATGATGATTTTCTCG
+ATACATTCACTGTAGGTACCATCTCGTCTACCAAGCTGAACCTGACTGATTTCGTATTCT
+ATATCCGGCAGATCAATGCGCAATGCAGCTACCATCTCCGAGGCATGGAGATGGTCGAAC
+GTCAGTTTCCCGGCCACACTGCGGTCAATGTCCAGAAACACAGCTACGCAGAGATCGTTC
+ACCTTCACAAACAGATCTGCCGTTGCGCCGAACATGCTTCCGCTGCCGCTGACTTCATCA
+AGTGGGACCGTGCCTCCATCGTAACCGGCCAGAAGATGCGGGAATCCTAGAAGTTGTTTT
+TCCTGAATAATTTCAATAATTTTTCCCCGAATCGCCTCCATCAGGCCATCACAATCACCG
+AGGAGATCGGTACTGTGGCTATAGTGCCAAAGTTTGACCTCTCCCTGTCTGGCTATCAAA
+TCCGTACGACACCCAGGACAGATGCAGTTGCATGCGCTTCCTCTGCTGACTTCCGTGATG
+TCCAGAAACCGTCCGGTTTCGCGATGGAGTCCGAAAGGAATCCCATAGGTATAGCTCTTT
+CGCATGTCAGTGCCCCCGCTGAATACATACCTTCACTATATCGGGCGAAGACAGCATGAC
+ACTTCGATAAGAAGACTATTTTTCGTGAGATTTTAATACCGTAACTGAGCGGATTGATAA
+AACGATGATGATTAGACACGGGTGAAAAGTTACTTTTCCGATTGCCAAAACCTCCACCAG
+CAGTGTGCCATATTAATCTGGACGGATTCGGAATTAACGAGCGTTTCTTCAGCTGACTCA
+TTTTTTGGCCGAAAATGGCTTTGTTTTATACACCGCAATTACCTTCAATGCAGTTTGTGG
+TTATTAATATAATCCATTATAAATTTCATGAGCTCCGGGTCACTTCGGGCTGAAAAAAGG
+ACTTTCGCTACTTCTTTCATTGCATTTGTCGCATTACTGGGTAATGACTCCAACTTACTG
+ATAGTGTTTTATGGTCAGATAATGCCCGATGACTTTGTCATGCAGCTCCACCGATTTTGA
+GAACGACAGTGACTTCCTGCCCAGCCTTGCCAGATGCTGTCTCAGATTCAGGTTATGCCG
+CTCAATGCGCTGAGTGTAACGCTTGCTGATAACGTGCAGCTTTCCCTTCAGGCGTGATTC
+ATAAAGCGGCCAGTCATCCGTCATCCATACCACGACCTCAAAGGCCGACAGCAGGCCCGG
+AAGACGCTCCAGCGTGGCCAACGTGCGTTCACCGAATACGTGCGCCACAACCGTCCTCCG
+TATCCTGTCATACGCGTAAAACAACCAGAGCTGGCGTGATTTAGCACCGACGTAACCCCA
+CTGTTCGTCCATTTCCGCGCAGACGATGACGTCACTGCCCGGCTGTATGCGCGAGGTTAC
+CGACTGCGGCCT
+>NODE_2_length_9792_cov_41.771':NODE_4_length_123_cov_119.957;
+AGGCCGCAGTCGGTAACCTCGCGCATACAGCCGGGCAGTGACGTCATCGTCTGCGCGGAA
+ATGGACGAACAGTGGGGTTACGTCGGTGCTAAATCACGCCAGCTCTGGTTGTTTTACGCG
+TATGACAGGATACGGAGGACGGTTGTGGCGCACGTATTCGGTGAACGCACGTTGGCCACG
+CTGGAGCGTCTTCCGGGCCTGCTGTCGGCCTTTGAGGTCGTGGTATGGATGACGGATGAC
+TGGCCGCTTTATGAATCACGCCTGAAGGGAAAGCTGCACGTTATCAGCAAGCGTTACACT
+CAGCGCATTGAGCGGCATAACCTGAATCTGAGACAGCATCTGGCAAGGCTGGGCAGGAAG
+TCACTGTCGTTCTCAAAATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGACC
+ATAAAACACTATCAGTAAGTTGGAGTCATTACCCAGTAATGCGACAAATGCAATGAAAGA
+AGTAGCGAAAGTCCTTTTTTCAGCCCGAAGTGACCCGGAGCTCATGAAATTTATAATGGA
+TTATATTAATAACCACAAACTGCATTGAAGGTAATTGCGGTGTATAAAACAAAGCCATTT
+TCGGCCAAAAAATGAGTCAGCTGAAGAAACGCTCGTTAATTCCGAATCCGTCCAGATTAA
+TATGGCACACTGCTGGTGGAGGTTTTGGCAATCGGAAAAGTAACTTTTCACCCGTGTCTA
+ATCATCATCGTTTTATCAATCCGCTCAGTTACGGTATTAAAATCTCACGAAAAATAGTCT
+TCTTATCGAAGTGTCATGCTGTCTTCGCCCGATATAGTGAAGGTATGTATTCAGCGGGGG
+CACTGACATGCGAAAGAGCTATACCTATGGGATTCCTTTCGGACTCCATCGCGAAACCGG
+ACGGTTTCTGGACATCACGGAAGTCAGCAGAGGAAGCGCATGCAACTGCATCTGTCCTGG
+GTGTCGTACGGATTTGATAGCCAGACAGGGAGAGGTCAAACTTTGGCACTATAGCCACAG
+TACCGATCTCCTCGGTGATTGTGATGGCCTGATGGAGGCGATTCGGGGAAAAATTATTGA
+AATTATTCAGGAAAAACAACTTCTAGGATTCCCGCATCTTCTGGCCGGTTACGATGGAGG
+CACGGTCCCACTTGATGAAGTCAGCGGCAGCGGAAGCATGTTCGGCGCAACGGCAGATCT
+GTTTGTGAAGGTGAACGATCTCTGCGTAGCTGTGTTTCTGGACATTGACCGCAGTGTGGC
+CGGGAAACTGACGTTCGACCATCTCCATGCCTCGGAGATGGTAGCTGCATTGCGCATTGA
+TCTGCCGGATATAGAATACGAAATCAGTCAGGTTCAGCTTGGTAGACGAGATGGTACCTA
+CAGTGAATGTATCGAGAAAATCATCATTGATGCGACGGAGTCACGCGAATGGTTGTATCA
+CCCCATGATGCAGGAACTGGGGACCGAGCCCCTGAAGGTATATGAGGGCCGCGAGCCAGC
+GGAAGCAGGACCACTTCTACAACGCCTTTCCGACTGCCCCCTGAAGCTGCCGGACAACTT
+ACCCCAGAGCATGAATGTGCTGATAAGAATGCAGCAGGCCACCATTGTGTGTTTGTGTCG
+GCTCACCGTCAGAGCTTCAGATATCGCCCAGACCGACGAATTCCCGCTGTTTATGCGTTA
+CTTCCGGCTGCATTGCCTCGACACCAGTGAGCATGTGAATTACGAGAAATTGCTTAACTG
+GCAGGACATGATTACAAAATCAAAGGAAGGGCAGTTACTAACGGTGGAGGAAAGGGATTA
+TCTCCAGGAAATCGTCCGTATTGGTCTCTATAACCACCGGCTTAAAAGTGTCTGCCTGAC
+GGCCTGCGAAGACAGTAGGGTGGGAGAATCTGAAGGACCAAACAATTACTCATTGCTCTG
+AAGAGGGATGGGAAATTATGGGGGGACATGGAAGCGTGAAGAGAATAAACCTGTTCGCCT
+TAAACAGAAACAGGCTGTTCATTTCTTACATGTGAACAGAGTACCTATCATGATCAGACC
+GGTAATATAAATTGGCACAGCCATCAAAACCAATCCCAGTGGTTCTTCTTTGGTAAAAGC
+ATCCTGAATAAGTCCGTCTTCGCTTAAAGCTAATGGACGCATACATTAGCATTAAGGCGT
+AAGGTCTAATAACTGGATCAGGAGTTTCGGATTTTTGCGCGGTAGGTGTGTTTGACCCTT
+TCAATTGTCGCAAGAGTTGAATTCCAGTAGCGTTCAGCGTCAGAACGATAAAGAGCAGCG
+ATAGCCTCTATGGTTTTGGGGGAACAGGTTGCACTGCGATGCACACGGCCTGCCTGGCCA
+AAGACATAGACAAGAATGGACTGGCTACCAGACCGGCCGAACAGGGAGTTGCAAAGCCGC
+TTCGCTGCGAGCGGTGTCAGATCGGGGGCGTCTTCCTGAGCGTTCTCGGGAACAACGAAT
+TCCAGAATGAAGCGAAGCATCTCCGATGTCTTGAAACGCTTTACCGCCGCAGACAAACGG
+GCGGCACGCAGTGCAGTGTCCCAGTGGTCGCTGCTGAAATTGCGGAGCTCCGCGAGGTAA
+TCCTCTTCCAGGCTTTCATCAGAATAATAAATGCTTTCGTAAAAGCGCTCTGCGGGTGAT
+TGCGTCTTTTCCATTGGAGAAACCATTTTGCCTAATGTATGCATACGTTAGCATGTAGTG
+AAATTAAAACAAGGTAAAGACAAAGAACCGCATTCAGGCGTTTCCCGGAGTAAGCAGGTG
+GGCTGACAATTCGGCTGCGGTAATATCAAGAGCTCTGTTAATTGAGCGTTAAATGCCTCC
+CGCTCCAGTCCGGATTGGATGAGAAAGATCAGGGCCTTTTTCAGAACGGGCGGAATACTC
+GCAATGTCGAGGAGAATGTTGCCCTCAATAACATGATCGCAATTTTCAAAAAGGTGGGCG
+TAACTCATTACGTGTATTCCATTTATCATTTTCAAATCGTGATAAAAATTAGATTACCAG
+AACGTCAGAAGCAAAAAAAAAGCATTAAGCAGAAATGTATGGTATCCATCCTTCCTCCAG
+CTACCCTTGCGCCCTGATAATTTTATCCTGGGGGAGGGGGCATTGATCATTACATACCCG
+ATCAGAAAAGCCGGGAACCAGAATGTCACCCGGATATCGAAGATGCAACGATTCAATATT
+AGTGTATTTAGCGTCTCCTGGCAGCAAAGTCGGTCGGCCGGAACTGGTAAACTGTATTCC
+ACCTCGCCCGGGCTGGCAGGCGACTGACGTCTTGTCGGTTCATAGCCGGTGGTCGCGTCT
+GACAAAACAGGCCCCTACAGTGTAAGGATTGTGATGGACGATAAAGAGCAGTTTACGAGT
+CTCGTGGCAAAGCATGCCTCCAGATTCACCGAAGAGCAGCTGGCCGGGTATGATGCCTGT
+TCCCAGTATGGAGAATGCGTCTCGCCTTCATACGAAGTATTCCGGGGGTATCGTACCCGC
+CACACCCTGGATGAATTTCTGGAGCTGGCCATATCGCTGAATGCCATCCACCCGGATGAA
+TATTTAACGGATATGCTGCTGAAGCCTCATGAGGTGATCGGTGCTCTGGCCGATGAAGGC
+GACCAGTTGAACAACGCCACCCCGGTTTATTTCTTCCCGGATACCGGCGTCTATGCAGCG
+GCCGTCAGTGAAACCCGTGTGCTCGATGCCTGGCTTTGTTGGCCATGCTACCCGGCGAAC
+TGGTAATGCGTCCGTTGGAATTGCACCGGCAGGATACGAATTTAACCGACCCCGTGGCGG
+GAGGGTTATCACAATTGCATGTCCTCATCCCTAAAGTCCCCTGCCAGACCCATACGTGCT
+GTCAGGCTTCGCCTGATTTGAGATCAGTGCAAATACTTCAGCCGATAACTTTTTGTTTTC
+TTTTTATTTTCTCCCTGTTTCCTCAAAATTCGCGTGCGGCCTGGTCAGGGCACGATTGTC
+ACATAGGGTGTATTGAAGCGGGCTGGATGGTCGGGTGGGCACGACCTGGGTTTGAGTCGG
+ACACTATGTGGGATGAGGACATGCAAAATATTCGCTTTATCTGTGAAAACTGTTGTCTCC
+GGGCAGTCACCAGTTCAAGTTACACCATCCACGTTAGCTTTTAATAAGAGTGGTTACGAT
+GTTCAGTACTGAGAAAAAATCAGAGCATTTAGGTCAGATCATAGTGATTGATCCGGCGCT
+TCTTGGGCAGGGTATAGAGGTTGGCCCGGTCGTAGTGTTTGATTTGGGGCACGCCAGCAA
+AGGGGTTGCGGACTTGATGCGCGATGCTGAAAAGCTTGATGGTTTATCCCCAACGACAAT
+AGCAAACAGACTTTCACGATGACCGAACAAGGTCGATTCGGGCAAGGCGGCGGAGGGGCA
+CATCTCCCAATGATAATGAGGTTATGCAACCTGTTAGTCACCGGCTTGCCTGATGCTATG
+ATTGACATCTCTTTTGACCGGTCTGTATTTGAGCATTAATTCGTGAGGAATACGGTATGC
+GCAGTGAAATACCTTCTGGTAGATTTTTTTGTTTGGATGAGTTTCACAATTTCCATATGA
+GCGATGATGTCCTTCGTGAAAGACTCCGTTCAATAGACGGCATCCCCGCTGTGAGCTATC
+AGGTAAATGGCGAAAATGTTTTTGTGTTCGAGAAACTTGTCCAGCTGGTAAAACAGAATG
+GCCACAACCTGGAATCAGCCTTAGCTCTCGTTCCGAAGGCAACAATGACCGCCGCAGAGG
+CTATTGAAGCGTGGTCGGTATTCCCCGAGCCGTATTCTCGTGAGACCAATACAATCGACC
+ATAGTCAGGCGATCTATCACCCCTATTTAAATGCGTATCTGCCCCGGAAATATCCCGACC
+GTGAATCCTGTAATGCGGATGCGGCCAGATTACTTCTCGGCAATCCTGTCGAGGGTGAGG
+GGGATTTTGTCTACAGGGGGCAGTCCATGGTCCTTCGCCAGCCCTTTACCCTGGACCGTC
+TTCCCCCACGACCTGAATGGGATGTGCCGGTGTCTGAAGATGCCAGTGCCTACACACATC
+TCTGGAACACGGATTTTGTCAGTGGCTTCGCACCGGTTACCGAATCACTGTTCAACGGGA
+TAAAATCGGCGGAGTGGGAATGGAACCACGCTATCGCTGCGACATACGCATACATGGGAA
+ATCCGGAGTGTATCTCTTCGTTGTGGTCACGGGCGGGTGAGTTCGGACTGGAGCAGCTGG
+AGCTCAAATCCTGGGACGTTGACGAGCAAGATCCGGAACACTACCAGCAATTCCAGGCTC
+TTTACCCGGAGCTGTCCATGTTGTCCCCGGCAATTATCCAGAAAGCCTATGACGAGTATT
+GTGAATCGATGTGGGAAAACCCTGAAAGGTGCGACGGGTTTCTGTATCACCTTATTGGGG
+TCGTCTCAGAATTCGGAAAATAAAGCACGCTAAGGCGTAGTCACCCCGTGACTCCCCCGC
+GCCGATGCAGCGAGCTTCGTTCCGTCTTGCAGTGACGCAATCAGCGGGCAGAAAACGTTC
+CCTTTCCGCGCATGGCAGGCGCACACCAGTTCAGACAGCACGGCCTCCATGCGTGCCAAG
+TCGGCCATCTTCTCGCGCACATCCTTGAGCTTGTGCTCGGCCAGGCCGCTGGCTTCCTCG
+CAATGGGTGCCATCCTCCAGCCGCAGTAGCTCGGCGATTTCGTCCAGGCTAAAGCCCAGC
+CGCTGGGCCGATTTCACGAACCGCACTCGTGTTACATCCGCCTCGCCATAGCGGCGAATG
+CTGCCATAGGGCTTGTCTGGCTCCGGCAGCAGGCCCTTGCGCTGGTAGAACCGGATGGTC
+TCCACATTGACCCCGGCCGCCTTGGCAAAAACGCCAATGGTCAGATTCTCAAAATTAATT
+TGCATATCGCTTGACTCCGTACATAACTACGGAAGTAAGCTTAAGCTATCCAAACCAAAT
+TTGAAAGGACAAGCGTATGTCTGAACCACAAAAGTCTGAACCACAAAACGGGCGCGGCGC
+GCTCTTCGCCGGTGGGCTGGCCGCCATTCTTGCGTCGGCCTGCTGCCTGGGGCCGCTGGT
+TTTGATCGCCTTGGGGTTCAGCGGGGCATGGATCGGCAACCTGACGGTGCTGGAACCCTA
+TCGCCCGATCTTCATCGGCGCAGCGCTGGTCGCGCTGTTTTTCGCCTGGCGGCGCATCTA
+CCGCCCGGCGCAAGCCTGCAAACCGGGTGAGGTCTGCGCGATTCCCCAAGTGCGAGCTAC
+TTACAAGCTCATTTTCTGGATCGTGGCCGCGCTGGTCCTGGTCTCGCTCGGATTTCCCTA
+CGTCATGCCATTTTTCTATTAATCACAGGAGTTCATCATGAAAAAACTGTTTGCCGCCCT
+CGCCCTCGCTGCCGTTGTTGCCCCCGTGTGGGCCGCCACCCAGACCGTCACGCTGTCCGT
+GCCTGGCATGACCTGCGCCTCTTGCCCGATCACTGTCAAGCACGCGCTTTCCAAGGTTGA
+GGGCGTGAGCAAGACCGACGTAAGTTTCGACAAGCGCCAGGCCGTCGTCACCTTCGACGA
+TGCCAAGACCAACGTCCAGAAGTTGACCAAGGCGACCGAGGACGCGGGCTATCCGTCCAG
+CCTCAAACGCTGATCCGTTAACCGAACTCGGGAGCGACACATGGGACTCATCACGCGCAT
+CGCTGGCAAAACCGGCGCGCTCGGCAGCGTCGTTTCCGCGATGGGCTGCGCCGCCTGTTT
+TCCTGCCATCGCCAGCTTTGGCGCGGCCATCGGACTGGGCTTCTTGAGCCAGTACGAGGG
+GCTATTCATTGGCATCCTGCTGCCGATGTTCGCCGGCATCGCGTTACTCGCCAATGCTAT
+CGCTTGGCTCAATCATCGACAGTGGCGACGCACGGCGCTCGGCACGATAGGCCCGATCTT
+GGTGCTGGCAGCGGTGTTTTTAATGCGGGCTTACGGCTGGCAGAGCGGTGGACTGCTCTA
+TGTCGGCCTGGCCTTGATGGTTGGGGTGTCGGTCTGGGATTTCATCTCGCCAGCACATCG
+CCGCTGCGGGCCGGACAGCTGTGAATTGCCAGAACAACGTGGCTGACGGCAACAGCCGTA
+GCCACCACAGAAAAGGAAAAATACATGACCACCCTGAAAATCACCGGGATGACCTGCGAC
+TCGTGCGCGGCTCACGTCAAGGAAGCCTTGGAGAAAGTGCCCGGCGTGCAATCGGCGCTG
+GTGTCCTATCCGAAGGGCACAGCGCAACTCGCCATTGAGGCGGGCACGTCATCGGATGCG
+CTGACTACCGCCGTGGCCGGACTGGGCTACGAGGCAACGCTTGCCGATGCGCCACCGACG
+GACAACCGCGCCGGCCTGCTCGACAAGATGCGCGGCTGGATAGGGGCCGCTGATAAGCCC
+AGTGGCAACGAACGCCCGTTGCAGGTCGTCGTCATTGGTAGCGGTGGAGCCGCGATGGCG
+GCAGCACTGAAGGCCGTCGAGCAAGGCGCGCAGGTCACGCTGATTGAGCGCGGCACCATC
+GGCGGCACCTGCGTCAACGTCGGTTGTGTGCCGTCCAAGATCATGATCCGCGCCGCCCAC
+ATCGCCCATCTGCGCCGGGAAAGCCCATTCGACGGCGGCATGCCACCCACACCGCCGACG
+ATCTTGCGCGAGCGGCTGCTGGCCCAGCAGCAGGCCCGTGTCGAAGAACTCCGTCATGCC
+AAGTACGAAGGCATCCTGGACGGCAATTCAGCCATCACCGTTCTGCACGGTGAAGCGCGT
+TTCAAGGACGACCAGAGCCTTATCGTTAGTTTGAACGAGGGTGGCGAGCGCGTCGTGATG
+TTCGACCGCTGCCTGGTCGCCACGGGTGCCAGCCCGGCGGTCCCGCCGATTCCGGGCTTG
+AAAGAGTCACCCTACTGGACTTCCACCGAGGCCCTGGCGAGCGACACCATTCCCGAACGC
+CTTGCCGTAATCGGCTCGTCGGTGGTGGCGCTGGAGCTGGCGCAAGCCTTTGCCCGGCTG
+GGCAGCAAGGTCACGGCCCTGGCGCGCAATACCTTGTTCTTCCGTGAAGACCCGGCCATC
+GGCGAGGCGGTGACAGCCGCTTTCCGTGCCGAGGGCATCGAGGTGCTGGAGCACACGCAA
+GCCAGCCAGGTCGCCCATATGGACGGTGAATTCGTGCTGACCACCACGCACGGTGAATTG
+CGCGCCGACAAGCTGCTGGTCGCCACCGGCCGGACACCGAACACGCGCAGCCTGGCATTG
+GAAGCGGCGGGGGTAGCCGTCAATGCGCAGGGGGCCATCGTCATCGACAAGGGCATGCGC
+ACCAGTAGCCCGAACATCTACGCGGCCGGCGACTGCACCGACCAGCCGCAGTTCGTCTAT
+GTGGCGGCAGCGGCCGGCACTCGTGCGGCGATCAACATGACTGGCGGCGATGCGGCCCTG
+GACCTGACCGCAATGCCGGCCGTGGTGTTCACCGACCCGCAGGTCGCCACCGTGGGCTAC
+AGCGAGGCGGAAGCACATCACGACGGGATCGAGACCGACAGTCGCCTGCTAACACTGGAT
+AACGTGCCGCGTGCGCTTGCCAACTTCGACACACGCGGCTTCATCAAGCTGGTCATCGAG
+GAAGGTAGCGGACGGCTCATCGGCGTGCAAGCGGTGGCCCCGGAAGCGGGTGAACTGATC
+CAGACGGCGGTGCTCGCCATTCGCAACCGTATGACCGTGCAGGAACTGGCCGACCAATTG
+TTCCCCTACCTGACCATGGTCGAAGGGCTGAAGCTCGCGGCGCAGACCTTCAGCAAGGAC
+GTGAAGCAGCTTTCGTGCTGCGCCGGATGAGGAAAAGGAGGTGTTCAATGAGCGCCTACA
+CAGTGTCCCGGCTGGCCCTTGATGCCGGGGTGAGCGTGCATATCGTGCGCGACTACCTGC
+TGCGCGGATTGCTACGGCCGGTCGCGTACACCACGGGCGGCTACGGCTTGTTCGATGACA
+CCGCGTTGCAACGGCTGCGCTTTGTACGGGCTGCCTTCGAAGCGGGTATCGGCCTGGACG
+CACTGGCGCGGCTGTGCCGGGCGCTGGATGCTGCGGACGGTGACGGTGCGTCTGCGCAGC
+TTGCCGTGTTGCGGCAACTCGTCGAGCGTCGGCGCGAGGCCCTGGCCAGCCTCGAAATGC
+AACTGGCCGCCATGCCAACCGAACCGGCACAGCACGCGGAGAGTCTGCCATGAACAGCCC
+AGAGCACTTGCCGTCTGAGACGCACAAACCGATCACCGGCTACTTGTGGGGCGCGCTGGC
+CGTGCTCACCTGTCCCTGCTATTTGCCGATTCTCGCCATTGTGCTAGCCGGCACGACGGC
+CGGCGCGTTCATCGGGGAGCACTGGGGTATTGCAGCCCTCACGCTGACCGGCTTGTTTGT
+CCTGTCTGTGACGCGGCTGCTGCGGGCCTTCAAGGGAAGATCATGACCGCTTCCCAGCCA
+GCCGAGAGTGGGCAGCTTTGAGCTTCGCTACCAATCTGGAGGAGTACCACCATGAACGCA
+AACGCCCCGAACACTGCCAGTTGCACCACCTGCTGCGTATGCTGCAAAGAAATTCCGCTC
+GATGCCGCCTTCACCCCGGAAGGCGCGGAATACGTCGAACATTTCTGCGGGCTGGATTGC
+TATGAACGCTTCCAGGCACGCGCCAAGGCCGCGACAGAATCTGACATTGCGCCTGTCCCT
+GGCGGTTCGCAGCCGTCAGATTGAGGCATACCCTAACTTGATGTCAGATGCCATGTGTCA
+TTTTCAGAAGACGACTGCACCAGTTGATTGGGCGTAATGGCTGTTGTGCAGCCAGCTCCT
+GACAGTTCAATA
+>NODE_3_length_5869_cov_43.038:NODE_38_length_237_cov_132.244';
+TATTGAACTGTCAGGAGCTGGCTGCACAACAGCCATTACGCCCAATCAACTGGTGCAGTC
+GTCTTCTGAAAATGACATCCATGCCCAGCCCGTGCGCGAGCTGGATCACCGCCCGCACGA
+TAGTTTGGTCACGGGCATCATCCGGGAGCCTGGCGACAAAGGATTGGTCGATTTTCAATG
+TGGTGATGGGGCAGCATTTCAGATGTTGCAGGCAGGAATAGCCGGTGCCGAAGTCGTCGG
+CGGCGAAGCGCACGCCGATGGCGCGCAAGGCGTCGAAACTGGCGAACAGGGCTGGATTGC
+CGAATGCGACCGATTCGGTCAGTTCGATCTCCAGAAGCTCGGCGGGCAGGGCCATATCGG
+CCAGCACCCGCTTTACCTCGTCGTCGAACGTTGGCCCAACCTGGCTGGCGGACACATTGA
+TGGCAAGACGGAACGGTTGCCATGCCGGTCCTTGCCACTTGTGCATCTGGCGACAGGCCT
+CGCCCAGCACCCACGCGCCTATTTCCGGCATCAGGCCGAACGACTCGGCCAGCGGCAGGA
+ACTGGCCGGGCGGCAACAGGCCAAGCCTCGGATGCCGCCAGCGCATCAACGCTTCCGCGC
+CAGCGATCCGGTGATCGCGCAGATCGACCAGCGGCTGGTAATGCAGGTCAAGCTGTCCGC
+GCGCCGCCGCCTGCGCCAACTCGGCCGCCGTCCATCCGGCGGGCTGCGAACTCGTCATGA
+TCCGCCCCGGAAGGCGCGCAGCAGCCGCGTTACGGCCAGAACGAACAAGCCGGTCAGCGC
+GAGCGCGGCAACACCCCAATGCTCGCCAAGGAAGGCACCGGCGGTCGTCCCGGCCAGCAC
+GGCGGCGAGAATCGGCAGATGGCAGGGGCAGGTCAACACGGCCAGCGCACCCCACAGGTA
+GCCGGAAACGGGTTGGCGCGTCTCGGGCGGCAGTTTGTCAGGGGCGTTCACGGCAATGCC
+TCCTCGTGCGCCCGCTCGGCTGGCATGGAGGCCAGTTGCGCGTCCAGATGGGCCAACGCC
+GCGCGCCGCCGCTCGACCAACTGGCGCAGCACGGCAAGCTGCGCTGCGGCTTGTGCGCCG
+TCCGCTGCGTCGAGCGCACGGCACAGCCGCGCCAGGGCATCCAGGCCGATACCCGCCTCG
+AAGGCCGCGCGCACGAAGCACAGCCGTTGCAAGGCCGCATCGTCGAACACGCCGTAGCCG
+CCCGTGGTGCAGGCCACCGGCCGTAACAAGCCGCGCACCAGGTAGTCGCGCACGATATGT
+ACGCTCACCCCAGCGTTATGGGCCAGTTGCGATACCGTGTAGGCGCTCATCGCACACCTC
+CTTGTCCTCACCCGGCGCAGCAGGAAAGCTGCTTCACATCCTTGTTGAAGGTCTGCGCCG
+CGAGCTTCAACCCTTCGACCATCGTCAGGTAGGGGAACAACTGGTCGGCCAGTTCCTGCA
+CCGTCATCCGGTTGCGAATCGCCAGTGCGGCCGTCTGGATCAGTTCGCCCGCTTCCGGGG
+CCACTGCCTGCACGCCGATCAGTCGTCCGCTGCCTTCTTCAACCACCAGTTTGATGAAGC
+CGCGCGTGTCGAAGTTGGCGAGCGCGCGCGGCACGTTGTCCAGCGTTAGCGTGCGACTAT
+CAGTTTTGATGCCGTCATGGTGCGCTTCCGCCTCGCTGTAGCCTACGGTCGCCACTTGCG
+GGTCGGTGAACACCACGGCCGGCATCGCGGTCAGGTTCAGGGCCGCGTCACCGCCGGTCA
+TGTTGATCGCGGCGCGAGTGCCGGCCGCTGCCGCCACATAGACGAACTGCGGCTGGTCGG
+TGCAGTCGCCTGCGGCGTAGATGTGTTCCACGCTTGTACGCATGCCGGGGTCGATGACGA
+TAGCGCCTTGCGGGGTGAGCGTGACGCCCGTCGCATCCAGTGCCAGCTTGCGTGTGTTGG
+GCGCGCGGCCGGTGGCGACCAGCAGCTTGTCGGCGCGCAGTTCGCCGTGCGCCGTGGTGA
+GCACGAATTCGCCGTCCCCTTCACCATTGATATACGCGACCTGGCTGGCCTGGGTGTGTT
+CCCTCACCTCGATGCCCTCCATGCGGAATGCGGCCGTGACGGCTTCGCCTATAGCTGGGT
+CTTCGCGGAAGAACAGCGTGCTGCGAGCCAGGATCGTCACCTTCGCTCCGAGTCGGGCGA
+ACGCCTGCGCCAGCTCCAGCGCCACCACTGATGAGCCAATCACGGCCAGGCGCTTAGGAA
+TCGTCTCGCTGACCAGCGCTTCAGTGGAAGTCCAGTACGGAGTGTCTTTCAGGCCGGGAA
+TCGGCGGCACGGCCGGGCTCGCGCCGGTGGCGATCAGGCAGCGGTCGAATGCCACCACGC
+GCTCGCCGCCGTCGTTGAGTTGCACGATCAGGTTGCGATTGTCCTTAAAGCGGGCGGAGC
+CGTGCAGCACAGTGATCGCCGGATTGCCCTCCAAGATGCCTTCGTACTTGGCGTGGCGCA
+GTTCATCGACGCGGGCCTGCTGCTGGGCCAGCAGCGCCGTGCGCTGGATGGTCGGCGTGG
+TAGCGGCGATGCCGCCATCGAACGGGCTTTCCCGGCGCAGATGGGCGATATGGGCGGCGC
+GGATCATGATCTTGGACGGCACACAACCGACATTGACGCAGGTGCCGCCGATGGTGCCGC
+GCTCGATCAGCGTGACACGTGCGCCTTGCTCGACGGCCTTCAGCGCCGCTGCCATCGCGG
+CCCCGCCGCTGCCGATGACGGCGATATGCAATGCGCCGCTGCTACCCGTCTTGTCGTTTC
+TGCCCAGCAGATCGCGCATCTTGTCGAGCAATCCGCCCGGCGTCGAAACTGAGGGGGCAT
+CGGCCAGCGTGGCCCGATAACCGAGTCCAGCTACAGCGGCCGTCAGCGCGTCGGGTGACG
+TGCCGACCTCAATGGCGAGCTTGGCGCTGCCCTTGGCGTAGGAGACATCCGCTGATTGCA
+CGCCGGGCACTTTCTCCAGGGCGTCCTTGACATGCACTGCGCACGAGTCGCAAGTCATGC
+CGGTGATTTTGAGAGTGCTCATACCATCGTTCCTTATTCGTGTGGGCCGCCGTGTCGCAC
+GGTCAGCCGTCTTTCACAAGCGCTTGGCGGGGAGTTCGCAGCCGTCCGGTCCGCAACGGC
+GATGCGCCGGCGACACGAAGTCCCAGATCGACACCCCAATCATCAAGGCCAGGCCGACGT
+ACATCAGGTTCGCCGTCCACCAGTTGCCGAGCAGCCAGACCGTGGCCGCAAACACGATGG
+CCGGGCCGATCATGCCGAGCAGACTGCGCAGCCATTGCCGATGACTGAACCAACCCAGCG
+CGTTCGCCAGGAAGGCCAGCGCGGCAAACAGCGGCAGCAGGCGGCTGATGAACAGTCCCT
+CGTACTGGCTCAAGAAGCCCAGCCCGATGGCCGCGCCGAAGCTGGCGAGGGCTGGAAAGC
+AGGCGGCGCAGCCCATCGCGGAAACGACGCTGCCGAGCGCGCCGGTTTTATCGGCAATGC
+GTGTCATCAGTCCCATGAAGCGGCTCTCGCTGTTGTCGTTGGCTTGCTGGCTCACTGCTT
+GACGCTGGACGGATAGCCGGCGTCTGCGGTGGCCTTGGTCAGCTTCTGTACGCTGGCCTT
+GGTGTCGTCAAAAGTGACGACGGCCTCGCGCTTCTCGAAGCCCACATCGACCTTGCTCAC
+GCCTTCGACCTTGGAGAGCGCTTTCTTGACTGTGATCGGGCAGGCGACGCAAGTCATGCC
+GGGAACCGCTAGCGTGACGGTCTGGGTAGCGGCCCACACCGGGGCAACAGCGGCGGCGAG
+GGCAAGGGAGGCAAACAGTTTCTTCATGATGAACTCCTGGTTAATAGAAAAATGGAACGA
+CATAGGGAAATCCAAGCGCGACCAGGACCAGCACGGCCACGATCCAGAAAATCAGCTTGT
+AGGTGGCGCGCACCTGCGGAATCGCGCAGACCTCACCTGGCTTGCATGCCTGCACGGGCC
+GGTAAATCCGCTTCCAGGCGAAGAACAGCGCCACTAGCGCCGCGCCGATGAACAACGGTC
+GATAGGGTTCCAGCACCGTCAGGTTGCCGATCCAAGCACCGGAGAAGCCCAGGGCGACCA
+GTACTAGCGGCCCCAGGCAGCAGGTCGATGCAAGAATGGCGGCCAGCCCGCCGGCGAAGA
+GCGCACCGCGCCCGTTTTGTGGTTCAGACATACGTTGGCCCTTTTGAATTTGGATTGGAT
+AGCGTAACCTTACTTCCGTACTCATGTACGGAGTCAAGCGATATGGAAAATAATTTGGAA
+AACCTGACCATTGGCGTTTTTGCCAAGGCGGCCGGGGTCAACGTGGAGACAATCCGCTTC
+TATCAGCGCAAGGGCCTGTTGCGGGAACCGGACAAGCCTTACGGCAGCATCCGCCGCTAT
+GGGGAGGCGGACGTGGTTCGGGTGAAATTCGTGAAATCGGCACAGCGGCTGGGGTTCAGT
+CTGGACGAGATTGCCGAGCTGTTGCGGCTCGACGATGGCACCCACTGCGAGGAGGCCAGC
+AGCCTGGCCGAACACAAGCTCAAGGACGTGCGCGAGAAGATGGCCGACTTGGCGCGCATG
+GAAACCGTGCTGTCTGAACTCGTGTGCGCCTGCCATGCACGAAAGGGGAATGTTTCCTGC
+CCGTTGATCGCGTCACTACAGGGCGAAGCAGGCCTGGCAAGGTCAGCTATGCCTTAGCGT
+GCTTTATTTAATGAGATGGTCACTCCCTCCTTCCCAGTACTATGCTGAGGACAGGCTTTC
+ATTCGGAGAACCATCATGGAAAACATTGCGCTTATTGGTATCGATCTGGGTAAGAACTCT
+TTCCATATTCATTGTCAGGATCATCGTGGGAAGGCCGTTTACCGTAAAAAATTCACCCGA
+CCAAAGCTAATCGAATTTCTGGCGACATGCCCGGCAACAACCATCGCGATGGAAGCCTGT
+GGCGGTTCTCACTTTATGGCACGCAAGCTGGCAGAGTTAGGGCATTTTCCAAAGCTGATA
+TCACCGCAATTTGTCCGCCCATTCGTTAAAAGCAACAAAAATGACTTCGTTGATGCTGAA
+GCTATCTGTGAAGCAGCATCACGTCCATCTATGCGTTTCGTGCAGCCCAGAACCGAATCT
+CAGCAGGCAATGCGAGCTCTGCATCGTGTCCGTGAATCCCTGGTTCAGGATAAGGTGAAA
+ACAACTAATCAGATGCATGCTTTTCTGCTGGAATTTGGTATCAGCGTTCCGCGAGGTGCT
+GCCGTTATTAGTCGACTGAGTACCCTTCTTGAGGACAGTAGTTTGCCTCTTTATCTCAGC
+CAGTTACTGCTGAAATTACAACAGCATTATCACTATCTTGTTGAGCAGATTAAAGATCTG
+GAATCTCAGTTGAAACGAAAGTTGGACGAAGATGAGGTTGGACAGCGCTTGCTGAGTATT
+CCCTGCGTTGGAACGCTGACTGCCAGTACTATTTCAACTGAGATTGGCGACGGGAAGCAG
+TACGCCAGCAGCCGTGACTTTGCGGCGGCAACAGGGCTGGTACCCCGACAGTACAGCACG
+GGAGGTCGGACGACATTGTTAGGGATTAGCAAGCGGGGCAACAAAAAGATCCGAACTTTG
+TTGGTTCAGTGTGCCAGGGTATTCATACAAAAACTGGAACACCAGTCTGGCAAGTTGGCC
+GACTGGGTCAGGGAGTTGTTGTGTCGGAAAAGCAACTTTGTCGTCACCTGTGCTCTGGCA
+AACAAGCTGGCCAGAATAGCCTGGGCACTGACGGCGCGACAGCAAACTTACGAAGCATAA
+AGGCAGAAATACACCAGTTTAAACAATCATTCATCTGGTTTTGCGAATACTGATATTGAT
+GATACTAACGGCCCACCGGCCTGTTGAGGAACCTGTAAAACGGAAAGGC
+>NODE_3_length_5869_cov_43.038':NODE_4_length_123_cov_119.957;
+GCCTTTCCGTTTTACAGGTTCCTCAACAGGCCGGTGGGCCGTTAGTATCATCAATATCAG
+TATTCGCAAAACCAGATGAATGATTGTTTAAACTGGTGTATTTCTGCCTTTATGCTTCGT
+AAGTTTGCTGTCGCGCCGTCAGTGCCCAGGCTATTCTGGCCAGCTTGTTTGCCAGAGCAC
+AGGTGACGACAAAGTTGCTTTTCCGACACAACAACTCCCTGACCCAGTCGGCCAACTTGC
+CAGACTGGTGTTCCAGTTTTTGTATGAATACCCTGGCACACTGAACCAACAAAGTTCGGA
+TCTTTTTGTTGCCCCGCTTGCTAATCCCTAACAATGTCGTCCGACCTCCCGTGCTGTACT
+GTCGGGGTACCAGCCCTGTTGCCGCCGCAAAGTCACGGCTGCTGGCGTACTGCTTCCCGT
+CGCCAATCTCAGTTGAAATAGTACTGGCAGTCAGCGTTCCAACGCAGGGAATACTCAGCA
+AGCGCTGTCCAACCTCATCTTCGTCCAACTTTCGTTTCAACTGAGATTCCAGATCTTTAA
+TCTGCTCAACAAGATAGTGATAATGCTGTTGTAATTTCAGCAGTAACTGGCTGAGATAAA
+GAGGCAAACTACTGTCCTCAAGAAGGGTACTCAGTCGACTAATAACGGCAGCACCTCGCG
+GAACGCTGATACCAAATTCCAGCAGAAAAGCATGCATCTGATTAGTTGTTTTCACCTTAT
+CCTGAACCAGGGATTCACGGACACGATGCAGAGCTCGCATTGCCTGCTGAGATTCGGTTC
+TGGGCTGCACGAAACGCATAGATGGACGTGATGCTGCTTCACAGATAGCTTCAGCATCAA
+CGAAGTCATTTTTGTTGCTTTTAACGAATGGGCGGACAAATTGCGGTGATATCAGCTTTG
+GAAAATGCCCTAACTCTGCCAGCTTGCGTGCCATAAAGTGAGAACCGCCACAGGCTTCCA
+TCGCGATGGTTGTTGCCGGGCATGTCGCCAGAAATTCGATTAGCTTTGGTCGGGTGAATT
+TTTTACGGTAAACGGCCTTCCCACGATGATCCTGACAATGAATATGGAAAGAGTTCTTAC
+CCAGATCGATACCAATAAGCGCAATGTTTTCCATGATGGTTCTCCGAATGAAAGCCTGTC
+CTCAGCATAGTACTGGGAAGGAGGGAGTGACCATCTCATTAAATAAAGCACGCTAAGGCA
+TAGCTGACCTTGCCAGGCCTGCTTCGCCCTGTAGTGACGCGATCAACGGGCAGGAAACAT
+TCCCCTTTCGTGCATGGCAGGCGCACACGAGTTCAGACAGCACGGTTTCCATGCGCGCCA
+AGTCGGCCATCTTCTCGCGCACGTCCTTGAGCTTGTGTTCGGCCAGGCTGCTGGCCTCCT
+CGCAGTGGGTGCCATCGTCGAGCCGCAACAGCTCGGCAATCTCGTCCAGACTGAACCCCA
+GCCGCTGTGCCGATTTCACGAATTTCACCCGAACCACGTCCGCCTCCCCATAGCGGCGGA
+TGCTGCCGTAAGGCTTGTCCGGTTCCCGCAACAGGCCCTTGCGCTGATAGAAGCGGATTG
+TCTCCACGTTGACCCCGGCCGCCTTGGCAAAAACGCCAATGGTCAGGTTTTCCAAATTAT
+TTTCCATATCGCTTGACTCCGTACATGAGTACGGAAGTAAGGTTACGCTATCCAATCCAA
+ATTCAAAAGGGCCAACGTATGTCTGAACCACAAAACGGGCGCGGTGCGCTCTTCGCCGGC
+GGGCTGGCCGCCATTCTTGCATCGACCTGCTGCCTGGGGCCGCTAGTACTGGTCGCCCTG
+GGCTTCTCCGGTGCTTGGATCGGCAACCTGACGGTGCTGGAACCCTATCGACCGTTGTTC
+ATCGGCGCGGCGCTAGTGGCGCTGTTCTTCGCCTGGAAGCGGATTTACCGGCCCGTGCAG
+GCATGCAAGCCAGGTGAGGTCTGCGCGATTCCGCAGGTGCGCGCCACCTACAAGCTGATT
+TTCTGGATCGTGGCCGTGCTGGTCCTGGTCGCGCTTGGATTTCCCTATGTCGTTCCATTT
+TTCTATTAACCAGGAGTTCATCATGAAGAAACTGTTTGCCTCCCTTGCCCTCGCCGCCGC
+TGTTGCCCCGGTGTGGGCCGCTACCCAGACCGTCACGCTAGCGGTTCCCGGCATGACTTG
+CGTCGCCTGCCCGATCACAGTCAAGAAAGCGCTCTCCAAGGTCGAAGGCGTGAGCAAGGT
+CGATGTGGGCTTCGAGAAGCGCGAGGCCGTCGTCACTTTTGACGACACCAAGGCCAGCGT
+ACAGAAGCTGACCAAGGCCACCGCAGACGCCGGCTATCCGTCCAGCGTCAAGCAGTGAGC
+CAGCAAGCCAACGACAACAGCGAGAGCCGCTTCATGGGACTGATGACACGCATTGCCGAT
+AAAACCGGCGCGCTCGGCAGCGTCGTTTCCGCGATGGGCTGCGCCGCCTGCTTTCCAGCC
+CTCGCCAGCTTCGGCGCGGCCATCGGGCTGGGCTTCTTGAGCCAGTACGAGGGACTGTTC
+ATCAGCCGCCTGCTGCCGCTGTTTGCCGCGCTGGCCTTCCTGGCGAACGCGCTGGGTTGG
+TTCAGTCATCGGCAATGGCTGCGCAGTCTGCTCGGCATGATCGGCCCGGCCATCGTGTTT
+GCGGCCACGGTCTGGCTGCTCGGCAACTGGTGGACGGCGAACCTGATGTACGTCGGCCTG
+GCCTTGATGATTGGGGTGTCGATCTGGGACTTCGTGTCGCCGGCGCATCGCCGTTGCGGA
+CCGGACGGCTGCGAACTCCCCGCCAAGCGCTTGTGAAAGACGGCTGACCGTGCGACACGG
+CGGCCCACACGAATAAGGAACGATGGTATGAGCACTCTCAAAATCACCGGCATGACTTGC
+GACTCGTGCGCAGTGCATGTCAAGGACGCCCTGGAGAAAGTGCCCGGCGTGCAATCAGCG
+GATGTCTCCTACGCCAAGGGCAGCGCCAAGCTCGCCATTGAGGTCGGCACGTCACCCGAC
+GCGCTGACGGCCGCTGTAGCTGGACTCGGTTATCGGGCCACGCTGGCCGATGCCCCCTCA
+GTTTCGACGCCGGGCGGATTGCTCGACAAGATGCGCGATCTGCTGGGCAGAAACGACAAG
+ACGGGTAGCAGCGGCGCATTGCATATCGCCGTCATCGGCAGCGGCGGGGCCGCGATGGCA
+GCGGCGCTGAAGGCCGTCGAGCAAGGCGCACGTGTCACGCTGATCGAGCGCGGCACCATC
+GGCGGCACCTGCGTCAATGTCGGTTGTGTGCCGTCCAAGATCATGATCCGCGCCGCCCAT
+ATCGCCCATCTGCGCCGGGAAAGCCCGTTCGATGGCGGCATCGCCGCTACCACGCCGACC
+ATCCAGCGCACGGCGCTGCTGGCCCAGCAGCAGGCCCGCGTCGATGAACTGCGCCACGCC
+AAGTACGAAGGCATCTTGGAGGGCAATCCGGCGATCACTGTGCTGCACGGCTCCGCCCGC
+TTTAAGGACAATCGCAACCTGATCGTGCAACTCAACGACGGCGGCGAGCGCGTGGTGGCA
+TTCGACCGCTGCCTGATCGCCACCGGCGCGAGCCCGGCCGTGCCGCCGATTCCCGGCCTG
+AAAGACACTCCGTACTGGACTTCCACTGAAGCGCTGGTCAGCGAGACGATTCCTAAGCGC
+CTGGCCGTGATTGGCTCATCAGTGGTGGCGCTGGAGCTGGCGCAGGCGTTCGCCCGACTC
+GGAGCGAAGGTGACGATCCTGGCTCGCAGCACGCTGTTCTTCCGCGAAGACCCAGCTATA
+GGCGAAGCCGTCACGGCCGCATTCCGCATGGAGGGCATCGAGGTGAGGGAACACACCCAG
+GCCAGCCAGGTCGCGTATATCAATGGTGAAGGGGACGGCGAATTCGTGCTCACCACGGCG
+CACGGCGAACTGCGCGCCGACAAGCTGCTGGTCGCCACCGGCCGCGCGCCCAACACACGC
+AAGCTGGCACTGGATGCGACGGGCGTCACGCTCACCCCGCAAGGCGCTATCGTCATCGAC
+CCCGGCATGCGTACAAGCGTGGAACACATCTACGCCGCAGGCGACTGCACCGACCAGCCG
+CAGTTCGTCTATGTGGCGGCAGCGGCCGGCACTCGCGCCGCGATCAACATGACCGGCGGT
+GACGCGGCCCTGAACCTGACCGCGATGCCGGCCGTGGTGTTCACCGACCCGCAAGTGGCG
+ACCGTAGGCTACAGCGAGGCGGAAGCGCACCATGACGGCATCAAAACTGATAGTCGCACG
+CTAACGCTGGACAACGTGCCGCGCGCGCTCGCCAACTTCGACACGCGCGGCTTCATCAAA
+CTGGTGGTTGAAGAAGGCAGCGGACGACTGATCGGCGTGCAGGCAGTGGCCCCGGAAGCG
+GGCGAACTGATCCAGACGGCCGCACTGGCGATTCGCAACCGGATGACGGTGCAGGAACTG
+GCCGACCAGTTGTTCCCCTACCTGACGATGGTCGAAGGGTTGAAGCTCGCGGCGCAGACC
+TTCAACAAGGATGTGAAGCAGCTTTCCTGCTGCGCCGGGTGAGGACAAGGAGGTGTGCGA
+TGAGCGCCTACACGGTATCGCAACTGGCCCATAACGCTGGGGTGAGCGTACATATCGTGC
+GCGACTACCTGGTGCGCGGCTTGTTACGGCCGGTGGCCTGCACCACGGGCGGCTACGGCG
+TGTTCGACGATGCGGCCTTGCAACGGCTGTGCTTCGTGCGCGCGGCCTTCGAGGCGGGTA
+TCGGCCTGGATGCCCTGGCGCGGCTGTGCCGTGCGCTCGACGCAGCGGACGGCGCACAAG
+CCGCAGCGCAGCTTGCCGTGCTGCGCCAGTTGGTCGAGCGGCGGCGCGCGGCGTTGGCCC
+ATCTGGACGCGCAACTGGCCTCCATGCCAGCCGAGCGGGCGCACGAGGAGGCATTGCCGT
+GAACGCCCCTGACAAACTGCCGCCCGAGACGCGCCAACCCGTTTCCGGCTACCTGTGGGG
+TGCGCTGGCCGTGTTGACCTGCCCCTGCCATCTGCCGATTCTCGCCGCCGTGCTGGCCGG
+GACGACCGCCGGTGCCTTCCTTGGCGAGCATTGGGGTGTTGCCGCGCTCGCGCTGACCGG
+CTTGTTCGTTCTGGCCGTAACGCGGCTGCTGCGCGCCTTCCGGGGCGGATCATGACGAGT
+TCGCAGCCCGCCGGATGGACGGCGGCCGAGTTGGCGCAGGCGGCGGCGCGCGGACAGCTT
+GACCTGCATTACCAGCCGCTGGTCGATCTGCGCGATCACCGGATCGCTGGCGCGGAAGCG
+TTGATGCGCTGGCGGCATCCGAGGCTTGGCCTGTTGCCGCCCGGCCAGTTCCTGCCGCTG
+GCCGAGTCGTTCGGCCTGATGCCGGAAATAGGCGCGTGGGTGCTGGGCGAGGCCTGTCGC
+CAGATGCACAAGTGGCAAGGACCGGCATGGCAACCGTTCCGTCTTGCCATCAATGTGTCC
+GCCAGCCAGGTTGGGCCAACGTTCGACGACGAGGTAAAGCGGGTGCTGGCCGATATGGCC
+CTGCCCGCCGAGCTTCTGGAGATCGAACTGACCGAATCGGTCGCATTCGGCAATCCAGCC
+CTGTTCGCCAGTTTCGACGCCTTGCGCGCCATCGGCGTGCGCTTCGCCGCCGACGACTTC
+GGCACCGGCTATTCCTGCCTGCAACATCTGAAATGCTGCCCCATCACCACATTGAAAATC
+GACCAATCCTTTGTCGCCAGGCTCCCGGATGATGCCCGTGACCAAACTATCGTGCGGGCG
+GTGATCCAGCTCGCGCACGGGCTGGGCATGGATGTCATTTTCAGAAGACGACTGCACCAG
+TTGATTGGGCGTAATGGCTGTTGTGCAGCCAGCTCCTGACAGTTCAATA
+>NODE_4_length_123_cov_119.957:NODE_33_length_106_cov_94.1379,NODE_34_length_1034_cov_43.0564;
+TGTCATTTTCAGAAGACGACTGCACCAGTTGATTGGGCGTAATGGCTGTTGTGCAGCCAG
+CTCCTGACAGTTCAATATCAGAAGTGATCTGCACCAATCTCGACTATGCTCAATACTCGT
+GTG
+>NODE_4_length_123_cov_119.957':NODE_1_length_6070_cov_43.3434,NODE_2_length_9792_cov_41.771,NODE_3_length_5869_cov_43.038;
+CACACGAGTATTGAGCATAGTCGAGATTGGTGCAGATCACTTCTGATATTGAACTGTCAG
+GAGCTGGCTGCACAACAGCCATTACGCCCAATCAACTGGTGCAGTCGTCTTCTGAAAATG
+ACA
+>NODE_5_length_226_cov_46.5369:NODE_43_length_220_cov_211.224;
+TCACCGAATACGTGCGCAACAACCGTCTTCCGGAGCCTGTCATACGCGTAAAACAGCCAG
+CGCTGGCGCGATTTAGCGCAGACGATGACGTCACTGCCCGGCTGTATGCGCGAGGTTACC
+GACTGCGGCCTGAGTTTTTTAAATGACGTAAAATCGTGTTGAGGCCAACGCCCATAATGC
+GGGCGGTTGCCCGGCATCCAACGCCATTCATGGCCATATCAATGAT
+>NODE_5_length_226_cov_46.5369':NODE_41_length_366_cov_169.284;
+ATCATTGATATGGCCATGAATGGCGTTGGATGCCGGGCAACCGCCCGCATTATGGGCGTT
+GGCCTCAACACGATTTTACGTCATTTAAAAAACTCAGGCCGCAGTCGGTAACCTCGCGCA
+TACAGCCGGGCAGTGACGTCATCGTCTGCGCTAAATCGCGCCAGCGCTGGCTGTTTTACG
+CGTATGACAGGCTCCGGAAGACGGTTGTTGCGCACGTATTCGGTGA
+>NODE_6_length_50434_cov_42.3615:NODE_26_length_130_cov_84.9811;
+AGAGCAGAGATAGCGCTGATGTCCGGCGGTGCTTTTGCCGTTACGCACCACCCCGTCAGT
+AGCTGAACAGGAGGGACGGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCA
+TCATACACTAAATCAGTAAGTTGGCAGCATCACCATTTCGTCCAAGCTCGCCGCGTTTAA
+ATAAAAGGAAATGAAGGGAACAGGTAAAAATATTAGATGTTTAATTCTCATACGAGTTAC
+CACCATGGAGCGGAAACAGGATTTTGAATGACGTGATGACTTTACTAATTAAGCTTATTT
+AGAGGTATTAATAGAATATTAAAAAATTTTAATTTTACTGCTGACGTTTTCATAAATCTC
+CTTTCCTGAAAAGTCGGCGATAAATTGGTTACCAATATCTTCATATTACTGACGGACCAG
+TGTCCATACGCTTGCGGGTACTTTATCGTAGAGTTTCTTCATTGTCAGTTCAGCTTTTCG
+ATGGTCATATGCCCCGGAAATTTCCAGTGATGCTATACCTGCATTTTTTTCACAGAGTCG
+TTCGAATACTTTTTCCAGTGTGTCGAAAGAAGAGCACTTACGAAATTTCATTAAATACGC
+CTGCTTAGTTTCGGACATGGTCAACCTTAATTTATTTCCCGCGAAAGTACGGTTTCCCAA
+TCTTATGTCGTTTTGTCCCTAGAATCTAATTTTTTTCACAAATATTTGATGTTTATCTCC
+GGATCGTTGTTGTAGTCGCTCTCTCTTTTTTAGTTGCTGTGAACCTGTTCATAAGTGGAT
+ACCTCAGTGCTAAAATAGCTGTAAATAAAAACAGTGTATTCAGGTGACCACCATGAACAG
+CAAGCCAGTAACCAGACAGTTTGAAGACTCAGACCTCCATCAGGAACTGGTCACGTTTGA
+GGTGCCCAATAATGACCTTAAGGAGCTCATTTTTTACTTTTCTCATATGAAATACAACAC
+GGCTAAAACTTACCTTCAATGGCTGCGTTCCTGGAACGAGTGGTACCAAGCTAATGCAGG
+AAAGGAGGGAAACGAAGCCTGGCCTGCCAGTTCTCTCCCGGTGACAGAACCCCCGTTGTT
+GGCCTATCTGGACTATCTTCAGGGCTCGCTGTCACACAGCAGCATTAAAGGTTGTCTGCA
+CGCGCTGAACAGTATCCATAGGAAAGCACTCGATCGCCCTGGGATCATCACATCCAAGGT
+CAAGAGTATTCTTGCAAGCCTCGAACAAGCTGAAGCCCGAGAGCAAAAAGTGACTCGTCA
+GGCAACGCCATTCCTAGTCTCCGACCTGAAAGCTTTGATTAAAGCCCACGGTACGACACA
+GTCGGTGCGCAAACTCCGAGACCTTTGCATTATCTGGACAGGTTTTGAAACACTGTTGCG
+CTCAGCAGAACTTCGGCGCATTCGGATGCAGGACCTTGTGCTGAATGAACAGACAGGCAG
+TTTTACCCTGACGGTGTACCGGACAAAATCCACTGTCAGTACCCTGCTTACCTATCATCT
+GACCCCTCATCTCACTGCCACCCTAATCAGGCTGATGGATATGGTCAAAAGGGACCAGCA
+AAGCCATCCGAAGGATTATCTCTTCCAGGCAGTTAACTATCAGGACAGCGGATATATGCC
+CCCTGGATGGGGTCTCCGGAGCAAAGGGAATGAGATCAATACGCTGCTGAAAAATCATAA
+TATGCCTTACCGACCTACCCGTCCCCCGATCGGGAAAAATGGAAAGCCCATTATTGTCGA
+TGATGAGGGTATGCTCAGTAAAAACACATTGCTCCGGGCCTTTGAAGCGTTTTGGGATGA
+ACTTCATCCGCAGGAAGCGGGCACCCGATGCTGGACTGGTCACAGCGTTAGGGTTGGCGG
+CGCCATCGAACTTGCTAATGCCGGGTACACGCACTTGCAGATCATGGAGATGGGTAACTG
+GAGCAATCCAGAAATGGTTTCCCGCTATATCCGTAACATTGACGCAGGTAAGAAAGCGAT
+GACGAAGTTCATGCGTGAGGCGCTGGATGAGTAGCGCCCCTGCGGGCGCTAATGAGGATT
+ACTTCTTTCGAAATGGATTAAAGCGGCCAAGATCATGAGGGGCGTCTTTCGGCGGCATCA
+TCCCGGTGCGTTTAAATTTATAAACCCCGTTTAGCTTCATCGTCTGCACGCCCAGATTTA
+ACAGTGCCACCAGCTTCAGGGTATACAGAAACGTGAATGCCGGGACCATCTGAATAAAAA
+TAAATAGCAAACCCGCACACATCACTCGCAGCCAGGCTGCATACTCCATGCTCAGCGGCC
+GCTTAAAGTAATGGATTTCCAGCAATCCGACCGTCTTGTTACTGATCCACACCGCTGCCA
+GTGAGAGTAACAACACGATGCACACCATAATGCCCAGTTCCATGATCCTCACTCCCCGTC
+GATTTGATATTTTGAGTTTCTGATTTACCCGCTTTGGTTTTGTTTTTCGCCTTCTTTTTG
+GGTTTGATATGGTGGAACAGGAAACAATCCACCAGCACCCAACCATTAGCATATCGGGCC
+AGCAGTAATTTCTGGCCCGGATAATGTGTGTGGAAAAGCATTTTCACATCAACGGTATTC
+ATGATCTTCTGCTTGCGCTTCAGTTCCTCCCCAGGCATCTCAAATTCCTGAATAAACGGT
+GATGACAACCGCTGGCGAAGCATTCGAATTGCACTAGCGTTTTCATCGTGTTTTGCCAGC
+CTCCCGAATCGCACAAGCGCCTTATGAGTTACCTGAACAGGCCCCAGATGGGAATTAACC
+AGTTCATACTGCCAGTAGTATCGCAGATCCACTTTTACCCAGCTGATGCTGTCTTCCAGT
+GCGGCTTTCATGATGGTTCCCGACATCGGGACCATGGTCAGCTTGGCCAGACGCATCTGA
+ATGTAATCAGCCAGGGGCCTAAGGGACTCAGGTACATTGCTGTTCAGGAGAAGGTGCTGA
+AGCCCCGGTGTCGACGTCTGCCAGCTCAGGTTGCGGCCGTCAGGCAAAAATTCAAAGTTC
+TGATCCGCTGGCGCCGATTTTGCGTTGTTCTCTTTCCGCATCAGAAAATAATGCCCACAC
+AGTAACTCGGCCCGTACCTGGTCCTCTATCGGGTCATGGCGGGCCTTACTGAGATCAACC
+GTCAACACAACACGGTTGATGGCATCCTCATGGTATTTTTTCACCCAGACACAGACACGA
+TAAAGTCTCTCATCAAGTTTCTGGCTGGTCGTGGAAATCCATTGCATGCTTTTCTCCTCA
+GACCTTTCTCATAATGAAAATGCCAAGATCTGCACCGGGTACAAGTTCCGTGTAGCTATG
+GTTGCTCCTTCGACCATTGGACAGTGCTTCATCCTGCGCTGGCACCCAGTCCTGAAGTCT
+TTTAATTGTTGGCTTTTGTCCGACGCCAAAAATGGGTAATGAGGCTTTCACCACCTTGTA
+ATCAGTCTCGGCATATTTGCTACTTCCACGCTCCTTGCCTTCAGGCCGGTATGTGAACAA
+ATGCGCTATCGGAACCGGGAAGGTATTGGTTCGACAAAGGCGATAACCTTCGCCGTCTCT
+CAGTACTTTTCTTTCCAGTAATGCCTTCGCTCTATCGATGTTCGCCACCACTGTCAGGTC
+AGTTGTCACGGGCGATTTGACCGCTACTAAACGACGCTTATCCAGCATCGCGATGAGATC
+ACTTGCGTTTGTTTTTACCTGGTTTCGGTTTAGCCGCCAGGCAAAAGTAACTTTTTTGAG
+CTGTTCTTCCACAAACAGAATTTTGCGAGTGGAATGCGCAGTCACCAGACCGGGAAGCTT
+ACGGTGAACTTCCTTAAACCGGATGTGTTTCTCCGAATTCACCCTTTTCATTGCAGAGGC
+AAAGTCACTTTTGGCATCATTTATATCGCAAATAATTCCGCTCAGCTGTTCGGCACCCTC
+AGGAACAATAATCAAACCCGGGTATTTGGTTGTCACTTTCGTCGAATTCCTGCTGAGTAC
+ATCAATGTCATCGATACAGAAATCCTGAATAACACGGATAATTTCATCCACGGAGGCATC
+TGAAATAGTACTCACCTCGATGGGGTTCACCTCTTTCAACCGCTCTTCGTGTCGTGTGAC
+GGTCCCCACAGTCATCAGCTCGGCCATCACCGGCTGATGGTCATTCAGAAAGGATCTGAG
+CTTTTCAATTCGCTCCAGAATCCGGTCACGGTAAAAGAGTAAATCTTCACTGGCCATTCA
+TCACTCCGGTTTCAATAAAGCAGCGCAACACCGTTACGTCTTCAACGACTTCTGAAGAGT
+CGATATGCAGCCGGTAGTTGTACTTTTACAGCACCTTCCGCAATTCCCCGGGATTGCCGG
+TTGTATAAAGTGGCAGAGGTTCAACCTGCTGACCGTCATGCCGAAAACAACGATTAAGGT
+CATTCAAAAGGCCAAAACTGACCGGCTGGCGTTGCAGATTGATGCGCTGCCAGTCCTGCT
+TTACACCAAACTTCACCCACCAACCCAGACCAATCAGTTCATTACGTATGTTCTGCACAT
+TGCCCAAATCCGATACTGAAACATCCGGGATTACACCCTTCCCTTCCACCAGCAAATGCA
+TCACGCTCTAAAAATCAGGCTGACGGCTCTTCCTTGCGTGCTTCAGAATTGTACGAATCG
+AACGCAAGCTGTGGCGGGAATGCAAATTACGACGTTCAGCCGAACTAAGCCATCTCTGGA
+TAAGCTCATTTGAATATGACACCGGCATTTCACCGGGGCCTGACCTTTCGATTTCACGCA
+CATACAGCAGGCAGGAAGTAGCGGCACTCACTACTGCGTCAGAATTTTCGTTCATGTTCA
+CGTCCGTTAATATCAGAAATCTGCTTATCCGGTGTCAGGAACAAAGGCTGATAGTACAGG
+CGCCACGGATAGTGTACCGTCAAACCATCCGTTCCAATCCGGTTCAACCGGTAGCGTCCA
+TTAATTCTGTCAACAGACCAGGTGCCAGGAACTACAGAACGACTCCAGCGGAAAACCGGC
+AGATCTCCGAGCTGAAGTGTATTCACGAGCCCTTTATCCATTTCGGTCACGCGTACCTTC
+AACAAGAAGCCCAGCCAGGGTAAAGACCAGATACACAGCCAAACGGGCTGGAGGACAACT
+TTGTTTAACAAATGACCTGTCATGAACATCGCTGATAAAAACATAAAACTGATGATAATC
+CAGAACACCATCCATCCTAACCAGGCTCTTGTCTCACGAAGTTTCCATTCAAGAAGGTAA
+AGTCGCTTTTTCATCCAGAGCCCCCGGAACTCAGTGAATGACTGATGTCTGCTGCATCAA
+AATAGTGGTGCGTGGCAGGATCTCGTTTCGCCACAACTCTTGAGCCGTCGTCCATCCATG
+TAGAATTCCGTTGCCACAGTGTGAATTGAACGCCATGACCTCATCAGTTAGCTGATAGAC
+CAGCCTGTCTGGCATTTCAATGTACTCCGGAAGCGAAAGCAGGACGCCGTGTATCACGTC
+GCCGGTAAGCCTCGACAACGTCTCTTCGTCGTCCAGATTCTTTGTGGGCATCGTCGAAAG
+CGGGATAGAGAAACAACAGAGATCCATTCCCACCGCGTCAAAACCAACATCAAAACCTTC
+GTCATTGAGCACAAATCGGAAGATAGCCTCAGGCGCCTGTTCTAGACCCGGCAGCGAGCC
+CTCCGGCACTTCTGTGCCGGTAAAAAACTTATCAGTCCAGTTACTGAATGGACTGGTGAA
+CACCCAACAAAGCAGAGGCAACGCAATATCCGTTTTAAGTACTCGTTTCGTGCCGGACGT
+TCCTGAAGAGTGAATTTTGCTTTTCATTATTTACCTGTAGAGTGCTTTACTTACAGCTAT
+ATAAACACATTCCGGAATTTCCCCAATAGGTTGGAAAACACTAAAATTCACAGATACTGG
+TTCCCTTCTGTTTTAGCCGGTGCTCAAGATAGATACTTGCCAGGTCGAGTGGCTGATTTT
+CTTCGAGACAGGCCTGAACAAGGTCTTCAGTGGATACGGATACCAGCCCTCGGGTTTCAA
+GAATTTCTTTCGCCGTCGTCAATGCTCGTGAGGCGCTTCGACTTAGCTGAATTTTCACCT
+GAGAACTGTTTTCACACAGGGCATCAGCTGGTACGGTCTGTGAATCTGTATTGCTCATAG
+GGGTATCACTCCATATCAGGGATCGAATGAAAATTAACTGCAATAGACTTCTCTGGTTGA
+CCGTTTTCTACAGTGCTTAGCCAGGTTCGAGCCGGAAGTTGTTGCTCACAAAGAAGCAGA
+TAGCCCTCGCCATTTCGGTGCTTTTGTCCCAGAGCATGCAGGAGATCCCCAGAATATGGA
+CCCAGAGCTGTTCGGGTATAAAACAACGTCCCAGAATGTATCACTTTCGACAATTTGCTA
+AGCAAAACGGTCTTCTCGTCTTCATTTTCGGGTAAGACAAGGATTATCCTGAATCCCTTG
+GCTACATGTGATTGGAGATCTGCCACCAGCGTCCGAAACCTGAACGCATAAATAACCAAT
+CTGAATCGGGTCATTAACAGCGTTGTCGCGGCAAAAATAACGACAACTGAGCCGAATTTA
+GAACGGTAGAACCACCAGTTGAGGGCACCGGCCACTATCAAAACGACCAGCAGCACAATG
+CTTCCGTAAAAAAATGCAGCCGGAAAACGGGTTCTTTTTCCTTCGAGGAACGCAGATGCC
+AGTATTACGCCTGTGATGCAATACACAACCCAGTCAAAGAACGATTCAGTCATCATTAGG
+TGATAGTGTCTCGTGTTGTATTAAATCGGACGCCTGCCGTTATAAAGTCCTCAGCAATCG
+TGTCCCATGCAGCCATCAACTTCGCTAAAATTGTCACAACTCTCGGTTGTAACGTAACGT
+TCCCCACTAGCTAAACGGCGCTGTAAATCGATCTTTACTTCAGCCGCCGGTTTGAGAAAC
+AGATATTCCAGTTGTGAGTCAGTTCCTGAAGAAAGCAGTAGCTCAATACTGAAATCAATA
+TGCCGGTATGTGAAATGGCTATTGTCATTAGAGAAGACCGAATTCACAGGGTTATTGCTC
+AGGATTGTAGTGGCAGGCATAGTGACTCCTTTGTTTTAAACAGTATACAAATCTCTAACG
+ATCCATTTTTCAGATAAGAGACCTATTTTCGCGAAACCGAAACAAAAGAAGTAAAAAGTA
+ATTTGGAGGCTCCAGCATTCGGACTGTGTGCTGCCGGAAACGTCAGCAAGGGGCAAAACA
+TTCGAGTAAAAGAAGCAGAGAAGGAAACAGCTGGAAGGATGTAAATTAGGCTAGGTTTGG
+TTGAAGAAGGTAATGGAAGGCTTACATGTAACGGTGCCAAGAGTACAGTACCGTAAAACA
+TATAGGGCAGTAAGAACGTTGTAAAATTGTAAAAACAATGCAAGTTTTGACGAAAGCAAA
+AAAAAAGGCACGGATAACCGTGCCTTCTTAGAAGTATAAAAACCTGAAAATATATAATTC
+AACCTTCAGGACTCATGCCGCATCAAAGATTTTATCCTCTGATGCTGGGATGAATTCACG
+TAAGTTAGCGAACACCTCAGAAATTAATTCCTGACGGTCATGGATTTTAATCCGACCACC
+AGCTAATTCTGATACATTCACCCCTTGGTAAAGTTCAGTAACAACTTCACCATCTGTATC
+AAGGACTCTAACATTAGCAACCATAGGAAAGTAAGATTTTGAAGCATATCCTTCATAAAT
+CCCAATAATTGATTCATTATTACGGCGTAAAACCACCTTGCCAGACGGCAGCGTTGTTTC
+ATCCATATAACAATCGGTTAATTGCTCTTCGAAATCGTCCTCTTTAAGTGAAATATGCAA
+ACTAAGTTCGTCGGTAATACGACGCGTATATGAATACTCACTAAATGTATAACCGGCCAT
+GTTTATATCACTGAACGTGCGATAAACCTCATAAAGCCCGGATGTTATTTCATCTGATAC
+ATAGTTGATAAGCCCAATAAAATGCGTATCCCAGAATTTTTCCAGTGCAAATCGGGCGAT
+TAAAACCTGACCATCAACTTCCATCAGTCTTTTGTACTCTTCACGATCATAGCCACCTGG
+CTGGGCGCTGTCCGCAGAGTTACTCAGGATCTCACTACAGACATCGTCGTATTCAAAGCG
+GCTGGTCGCGAAATGTTTACCGGAAATATCCAGATATTGACCGGAAACCAGGTCGAAAAC
+CTCAAGGAAGTAAACCAGTCGCTTCTTGAGTGCATCCGCATCCAGGCCAGCCAGTTGGGT
+ATCATTAAGAGTATCCACATAATGCCCCGCAGATTCTCTTAACTCACTGGCTGATATACT
+GCATGTAAACGAAACTTCGTCGCTCTGGCAATGAGAGACACTGATAAACATCTCTGTTTC
+ATCAAAATCAATACCAATGCCTGCCAGTACTGCACGAACGTAGTTCTGGTTATCAGTAGA
+ATTAGTCATCTTCACTTCCTCAGGATTATTAAAGGAAGTGCCCCACAGGGGAGCGACTTC
+CCCAGTGGGTGGATTAAAAATATGTACTACTGCGCCATTCTTTCCTGCAAGTTGATCAGA
+ATAGGTAGCGCGGTCATTTGGTAGAACAAAGTTACTTTTTGGAATGAAGAGGTAAAAAAC
+AAGGGTTAAACAACATCCCGTAACTCTTCGACCGCTTCTTGGACCAACGCAACTCTGTCA
+CAAACCTGCACTCGGCCGGTAGGTCCCACGGAACAGAAAGTACCGTGCGATGATTCAGAC
+AAAACACTCCCGTCACAGCCAGTGAATCGAACGGTCATCATTACAGGAACATCCTTTCCG
+GAACTAACGCCAGTATAAAGACGAATGATTTTTTCATCATCGCGATACACTCCCGTCGTC
+CCTTCAGACTCCTTGAAACCGATGTAAAGGTCTGGCATACAGGCCGGGTATTCATCTGTA
+TTCAAATCAAGATGCAAAGTCAGGTCATCTTTTACACGACGCTGATATTGATATTGACCT
+AAACGGTTAAATGAGTTCTTTACAGATTTAATTATCTGGAGAGAAGTATTCAAACACTTG
+GAGATACTTTTCTCGAACTCTAAGATGAAATCACCAAAATCAGAATGGAAAAATTGCTTA
+AGTGCAAAACGGGCAATGAGAACTTTACCCTCAACACTCATGCGATTTTGATAGATTTCC
+TTTCTTAAAACAGGATCTATTGAATCATGTTCAGACTCCGGTACAGACCCCGCCAATATT
+AATGATGCGATATCGACAATATCTATAGTACTGTGCGCGTTATGATAACCGCGAATTCTT
+ATGTTCTGAAAACCAGACTTTTCATATACTTTAAGAAAGTATTTGATTTTAGTCCGAAGG
+ACTTCAGTTTCAGAATACGGCGCATTATGCTTAATCAATTCTGATATATATAAATCCAGA
+TAAAATAACAAATCATCAAGCGCCACATTTGCTTTAAAAGAAAGTTGTTCAAAATGATTT
+TCTTTGTCATATATTGTAATATCCTCTTGGCTTATATTCAGGCCAAGTTGACATTTAAGC
+ATTGCACTAACAAAGTTTTTATCATCACTTTCATTAAACATATTCACTTCCTCTTTAATG
+AAGAAAGGAAGCAACCCCCACGGGGAATACGCTTCCCCAATGGGTAAAATTAATTACATA
+GAAAGCAGGTCATCTGAATGCTCTGGAGCATACGAATTAACTTGCTTAAGCGAGTTATTT
+ATAGCCTTTCGATAAAGCGATGAAGAGTGTGACTGAACCATTTTATACTCAGTTACGAGA
+AGAGGTGATGTAAAGCAACCTAAGTTCGCATTGAGGGATAAAGATCCACCGTCGCAAGCT
+TCTATAACAGCGTAAATACGCCGCTTCATCACCCTACCCGACAGATAACGATTAACATGG
+TTCAGGAACTTATCCGCTCCTGAAACACTACACACATTCCAGTCAGCAGAAATTATCTGG
+TCTGCGACTGAAACGGGTACAGGTTCGACTACTATCTGGGCATTGATTTGATGGTCAACA
+CTGAAAAAGCTGGTGACTACTTGTGGAACTGAACTCTCCGCAATCTTTTCTGTAACTGCG
+AAAATCAGCGGCAAAGCCGTTGATAAGCGCGAGCGTAAAAGTTCATGCAGATGGTTGATA
+AAATTATGTCCTTTTTCAACCATACCAAGTATTAGATCCTTGTCTGCATTGCTGGAGCGG
+TAATATACATACTCCAGTTTTTCACGGTTCACACCCTCATTTAGACAGTCCGGCTCAACA
+TCCACAAGCCGCAGGTGAGCAGTTGACACTGAAACCTCAAACCGAAAGGTTTCAAGAGTG
+ACCGGCCCAGCCTTCAACAACGCAGCTCCTGAGCAATATTGTGCTATAGGGTGGTAATCC
+ACGTCATGTCCCCATAAAGGCTCACAATCGCGCAGATATCGCCTTAAATGCGGCATTAAA
+GTCCGGACAGGAATATCAGCCTTAACAACTAGACTCTGAATCACACCCGTTTCCAGATTG
+ACACTTTGGATCACGGCACCTTCAAAGCCCATTTTCACCAGCATCGCTTCAATTATTTTA
+TAAATCGCTTTCATTTTGTAGCCCTCGGTTAAGAGGGAATCCTCCCCAAGGGAAGAATTC
+CCTCAGGGATTAGATAAGTTGATAATAAGTATTAATACCCGTTACGAATCGCGTGTTGTC
+TTTCACTCAGGTATGCTTCGTATTCATATTTTCCGGATGCGAAACACTCTTTAAAAAAGA
+CACTGCAAAACGCCTTAAGATCATCTCTGGCATGCATTTCTCTATCTGACATAACTTTCG
+CATAGTCAGATGTGTCAACATCTGCTAAACGCCATCCGTATTTCATGTAAACACGATTAC
+TGAGGGCAAAGCCTTTAAGATAGCGACTTGCATTTTTCATAATCTGACGACTACCTGACA
+AGTTAGACAACAACCTATCAGGTGCAATCATCGTTTCAAGGATATCAACTGGCAGACCCT
+TAGAAAATATTTGTACATTATAACTGCCGAAGCAATCATGATACTTAAAGTCTTTTATAA
+GACGGTCTGGTTGATCAGATGTAATCTTGTTTAAAACATCAAGTGCCAAACGTATACCTT
+CCTTCACTATTTCATGTAATTCGAAATTCACAAATGAAAAGAAGGAACTCAGGCCATCCT
+TGAACGTGAGATAGTCTTCACAAAAACGTCCTTGTCGGGTCAGATGTAGCAATCGTTCCT
+TATTATATTCACATTCAGTCACGTCGTAACTATCACCGCGTGTCAGAGTGAATCCTTCCC
+TTGAGGAAACTGGAAATCTAATATGGTCAATTAAAAAAGACCGATTCCGTTTATTTTTAA
+CTACATCTAACTGACATTTAACACAATCCGCGATGTCCTGGTCTTCAAACCCAGGAAACG
+GGATATCTAAAAATGTTGAACTGTATGCGGGGGCATACGAATAAAGAAAATCAAATGAAA
+CATCGGCGTCACAGCATATTCCAGTAAATTTACCGTCGGTGCCACTCAAGCAGATAACAT
+TACTGACCTTCACTGAATGTTTACGCGATATCAGAAATGCATTAATGATTTTCTCAATAA
+TTTTCATGTAATCCTCACTTAAATAAAAAATGGGATTACACCCATCAGGGATGTAATCCC
+CGGATGGGTAATGTTAATCAGAAATCGTAAAGACCTAAATCTTTATTTCGCCCCGAAATC
+GTGGAAGATATAAGGCGATTGACACGTTTCTGTATATTATGCTCAGATGTCTCTTTTATA
+AAAAGTGGTAATGACTTACCAAGAGACCGTCCATTTTTTGAATATTGACAGACTATATAG
+CCATGTCTCCAACCAGTACTGATATAAGACTGAATGCATTTGATAAACCCAGAAGCCGCC
+GCTTCTGTTCGTAAAGAGGCATATGATTTCAGATACCTTTCTATTGAACATAGTGCAACA
+GCTTTAAGAGTCACCTCCAGCATTTCATTCCCGTGCTTAACTCTCTTAATCAACTGATCT
+TCATTCCGTTGCAGGTATACATTTCGCAGTCCTGCAATCAAAATTAAAACCTGTCTGAGT
+AATGCACAGAGCCTATTACGAACATATTTCATGAAATCTTCAAAATACAAAAGCCAGAAA
+CAAGCCGCCTGACTTATTAAGATTTCATGCGAGCAAGACAGCATCTTAGCCAGCTCGATA
+TCTTCAGTTCGAAAAGAAAAGTTACTTTTCTCAAACCGCTGTTGCTTTGAATTACACGTA
+TAGAGCTCTATCCATACAGAGATAAACTCAAGTGACTCCATGTCTTCACAGAGCAATTCA
+GCACTGTTGATACACTGCTGAAGTTCAAGGCCGATATCATACGAAACCGGACAATCTTTC
+AGAGACTCAACGTAGTCAGGGACGAACTGAGATAAATGCGTTGTTTTCAGATACAGGCTG
+AGATGCACTTGTGTCAATGGCTTTACCAGCGACGTTACAGGCAACTCATTAATGGAAGTT
+GGTACAATGCCATTCTTTATCAGAACCGCATTGACCAGATCTGTAGCTAATTTCATAAGA
+CCTCCAGATTCAACTCTGAGGGCCACCCCGATGGGAGGTGCCATCAGGGATGTAGTAAAA
+ATATGTGTTATCTTTATGCGCAAAGTGCCATGACATTGTCGATATAACTGACAAGTGATG
+GTCGCTCATCCTTTACTGCAAAGTGACGAAGGCCATCAAGGTTGTATGCTGGAAGGAAAT
+CGGCATACCCTCGCGCACGAAGATCATCAATAACAAGTTTTAAATAATCAAATTTACCAA
+GTGAACCTCTTAATGGAGGTCTTCCCGGCTTGGACAAAATTTCAAAAGCTTGCTGCCAGG
+TGATTTCTTCCGCTTCTCGTGTTGCAAGATTAAAATGCACATACTTAAATGCTTTATAAT
+CTCCACGACTTGTAAGATAGTAATTCGGAAAGAAGTATTTATCACAACGCAACAAACAGG
+TTCCTGAAGGACGAATAACGTACAACAGGTTTTTGTCTTTATCTATTATGCTGTGTTTTA
+AAATCGTGAAGTCAATTTCATTATCATGAAGGTAATAACACGAAGATGGTTGCTCAACGA
+TATGAGATGAAATCACAGCAGCGAACGTATTAAATAAATCTTGATTTTCAATATTCATAA
+CAATGCTCTCCGATATTTAACGATGAGCATCACCCTAACGGTAATACTCCCGTCAGGGGT
+TTTAAGTTTTATGGATATACCATGTCATACAACCGACCGTAGCCAGATGTATCGCACATT
+TATTAAACTGAGCAAGCATCTCAGCCGTAAAAAAAACCTGAATAACAGGTGATTTTCACG
+AAGGAAATCGGATTATCTGTTTAGGATTTAACGTAAATAAACACTAAAGAGATAACCCCC
+CCCGGCCTGAAAAGGCGGGGGAGTTATCGGATTTAAAGCTGAGCAAGACATTCAGGAGCC
+CATTTTACGGGGAATCCATCCGGTCCTGTTAATTTTAGTACATCGTTCCAGTCGACTCCT
+TTCTTCCCTACAGGAATATCGAAATCAGGTTCAAAGACTTTAATTGTCAGCTCTGAAGTG
+GGATATCGCTTTGCAAAAAACTCTTTCATACGTTCCTGAAGTCGTTTAGCTGACTCCATT
+CCCGGGGAAGTGCCTTTTGTATTCACAAGATCCTTATCCGCCCAGATGTAAAACTGTATT
+ACTTTCACACCAGGGGGAGGCAGGAGACTATCCGGCACTTCAACGTTTTCAAGGCACCAG
+GCAGAGCTCGCGGCCCAGCACGGTGTTGAAGTCGCTTCAGTAACTGACAGCGCGTTTTCT
+ATGCCTTCAGCCACACCTAACGTCCAGGTACGGGTACCTGGATTGAAGTGTGGATCGTAC
+AGCTGAATTGAGCCGCCAGTCATATCGGCAGGCGGTTTCATCATCAGTTTCGGATTCTCA
+ACATGTGCCTTATCACCATTTAACTCGACGAACGTTCTGTGGATTGTCAGAGGACGCCCA
+CGGGTATCGCGATAAATTGCGATCATTCCCGGGTAAATCGTGGGTTTTTCCAGTGACTTA
+TCCATGTAGTAAAGTCGTTTGTTCAGACCTAAATCCTTGGGAAGGTTGCTCAGAACTCGA
+TTAAGACCTCGATTTCGGAGATACACCCACACAGGGCTCTCAGGTTTGATTTCACCGGTA
+TAGTGATATATCACTTCAAGTTTACGCCCTCGTTTTTCAACTTCATCGCTGTCAAGCGTT
+TCGGTTGCACGAACTGTTGATTTATAACGACGTTCACTTTCGAGATCCGCATCAGTTAAT
+GGAGCGTACAAATCCATCCCAAAGAAATCAGTCAGGATCTTCTTACAAGTCTGGGTCTTG
+CTCAGCTTGTAGTACTCTGCCAATACATCAATACCGTCACAAAATGCATTCACTGGAAAA
+TCATTGTGAATGGCACAACCGGTAAAGAGGTCCTTTTTACGGAACCGGAACTTTGATTTC
+CCGACCCCACTAAATGGGCAAGGAACCTGGCCAGGTGCTTTATCACAAGCGTCTTTAAAT
+GCCGGTATTCTATCGAATACATAGCGCCAGCCTGATACTTCCGCTATACGAGCGTGAACC
+ATTTTTATAAAGTGGTCAGTGACTTCATGTGGTGTACGCTTAACAGCCTGGGATGCATAA
+GTCATTTGTTCTCTCTTATCTGGCATTGTGGGTTTCTCAATGCCCTCTGCGATGCAGAAA
+ACAGGGAGAAACCCACAACGCAGAATCTAAGAATGAGGGCCCACAAGAGCCCTCAACAAT
+TACGCTTCAGTCTTGAAGCCGATATTTTCAAGACGCTGGATAAAACCATCAACCATTGAC
+GTTGCCATTTCTCCATTACCCTCTGGTATAGATACATCCCGGAGAATTCTTTCTTCTGGC
+AATTCACTTTTGACAATTTCACCCATGCGACCAAAAATACGGACACGATGCATCGTCCCG
+ACTTTTTCATACTCGACACGGTAAGTCTTTATCTGAGTCATATATTGCTCCTTAATCCTT
+CAGGGAGCAAAGCGACCCAACCGGGCGTCGTTTTGCCCCGATTGGGTAGAGTTTAATTAG
+ATAGAATTTGATGTACTAATTTACTGACCTCATTCGGCAATAAAGAAATATCATCAACAT
+TTACGAAGGTGCCCTCATTAAAACCCATCAACACATCAGTTTTAATACCAACACCAGCGA
+TTTCAATGCCGTTACTTTCAGCAACTGAAAAAACATCATTAATGGTGTAAGCCGACTCAG
+TCGGATAACCATCAGTAATAAGGAAAACAATTTTCCTGTCAAACTGGCTTTCAAGTAACA
+ACTCTAAAGCAGCATTTAATGCAGAACCCGTTGGGGTATTATTGCCCTTGCAGCCAAGTG
+AGAATTTTGAAAGTTTCTCTTCCGCGTTTTCATCAAACGTTTTGATAACTTCAAAATCTT
+TGTCTACAAACGGATAAATCACATTAGCAACATGCATTTTTGAAATAGCTTCAATTGCCA
+GAGTTAATGCAAGGTCAGTCTTAATTGCATGGATATAACGGTGTTCCAGACTCATTGAAC
+CTGAAATATCACGAACAATGACCAAGCCGACGTGGCCCCGGTTTTTAGATTCGCTTTGTG
+ACCGAAATACATCCCTAACACCCATCGGAGACTGGATCAGTCGATTAATATCGAATGACA
+AGCCTCTATCACGGGTTTTAAATTGACCACGCATTTTTACCTGCTGTAAAACAGATAAAT
+CTGCCCCAAGGGTCTGGCTGATATTTAATGCTTCATTGTAGACATTCAGATCAATGTTCA
+AATCTGGAACATCCCACTCACTTGCACCAAATTCAGCTTTAACCTCATCCGACACACTGG
+CAGCAATTACGGAGATCTCTTTTGCAAGAACCTCATGAAAATCCTCGCTTTCCTCATCAC
+TGTTTAAAAAATCATCCAGCAATTTGGCAAGCATATCCCACTGTTCAGGAGAAAAGTTAC
+TTTCCCCATCAGAAGAATTTCCATTTGAACTGTCGTTTAGGGAAGGTGTCGAGTCAGCAT
+CATCCGAGCCGGGGGTCGCCGATTCATCACCTTCAGACTCACCATCAGGTTCGCCGTTAG
+AGTTCTCAGCATTTTGTTCATCCCCTCCGGATTGGTCCGGTAACCCATTACCTTCCGCAG
+GCGCCTTACCATCACCAGAATCATCGCCTTGACCTTCTTTATCACCATCCCCTTCACCCT
+GGCTATCACCATTGGGTTCGGTATCAGGTTCATTCTCAGAGCCAGATGATTCATCTGTAT
+CGTCATGCGGGTCTTTCGACTGCTCCTCTTCTTGCTGTTTCTCTTTTGCTTCATCCCTTA
+AACGCTCTAAAAGAGCCAGAGTTTTACGCGCCAGAGAATCGCAATTTTGCGTACTTTTGC
+AACTTAGAGCTTGATGAATGATCTCATCGACTTCTGAAGTTACAGGTGCAAGGATTTTCT
+TTGCATAATCGAAAAATGGGTCAAGCGTTTCTTTATGCCCTTCTTGTTGGAGAACGTTAA
+CCCGCAATGTATTAAGCAGGTACATTTCAATAAACTGAACCGGGTTTTGAGGGGTTGAAG
+AAATATCAACCGTCATACGCCCAGCTTCAACCATCAAGGCATAAGTCACCGCGAGGCGTT
+TTTTTGCCTCCTGATAATCAATACCCGTCTTCTCTTCCATCTGGACATCATCAAAAAGAT
+TAATAAGTCCTTTTAGTCGACAAGCACGAGCATATGCTTTTTGCTTTTGTTTTAGGTTTT
+GAAAATCAGCCTTCAAGTCATCATCAATACTGATGAAGCCATCTGCATTGATCAATTCTC
+CAACAAAAGCTTCACGGTATACTTCATGCTCTGTATAACGACCGTGTCCTGCTTCATGAC
+ATATGAATCCTTCAATTAGCTTGACAAATCTCTCATCGCTATAATCACCGTTAGGTAAAA
+CACAGACATTGTTTTGGGTGTTGAAATAAGGTGTACTCACCTTATTGTCAATAATTACAT
+AAATCCCATTTATACCGCTTATCACGCTGGCTATATTCGTCAGGCGTTGAATATGGCGTG
+GTGAAGATTTTAAATCAAATTTCATTTGAGTACCTTTATTTGATAAAGGGTACTCACCCA
+GATGGTGAAGTACCCATCTGGGGATATTTTTACAAGACTAAATTACCAACCGGTCAATTC
+GAGTTCGCAGTCAAATGCTCTATTACTACCACTGGCCTGAATAGAAACATCTTCATCAGG
+GCCAACAGCAGGCTCAGGTGCATTCACTGCCTTGTTCTCAAGATCTTCAACCGGGTCTTC
+TCTGAAAACATTTGCTGAAGAAAAAACATCATCCTCAGCAGTATTCAGAGAGTTAGCCGC
+TGTAACCTGTGAATCGATATTGAATGACCGGGTTATGGAATCCAGCCAGTCGGTTACCTT
+TTGTTCACCGGAGATAATACGTTTCAGCATTGACGCATCGCTCATGAAATAGAACCACTG
+CTTTAATACCGCAACATCACGGGGAGAAGAAATGGCACCTTTTGGTAAATTATTCATGAT
+ATGCTTAATAGCTTCTGCAAGAACAACAGCCTCTTTATGAATGAACATGAAGCTAATTAT
+TTTATCCTGCATCTGCTTTAATCGGTCAATCGTGCTGGAACGCAAATTATCATTTTTGCT
+GATTTTTGTATAAACCTTCATAGCTTCATCGGCCAAGTCAGTTATCAGTTGTTCTTGATA
+AAAGTCCTGCGTTTCATCCCCCTCCACACTAATCGGTGAAAACGGAATGAAATGTGCCAG
+ATTAAACCGGAATGATTTAACAAAATCATCTTTAGTCAATTTCAACTGGTCAATTAAATC
+TGACATCAACGGACTGCGATCTTTCTCAGCCTGAATATGAGTGTCATAGTTATCAACCAC
+GTTCTGGATACCGGCTTGAAATTCACGTTCGATTTCTTGTGCCTCTTCGAGAAACTCCTC
+CATCCTTTCAACTGGCAGTATCCACATATTGCTATAGCGGATGCACAACCGTGAACAAAG
+GGTTGAAATTCGACTAGTGATAGTGCTTTTGAAACTCAGTGCCTTTATGTCTATCCAGCG
+AACTTCGCTTTTAGACACGCTCTTCTGGTCTGTTATATCATCACCGCCATAGGACAGTTC
+GATTTTATCAGTTCGCCGAGAGCCCTGACACCCACTAATTTCAATTTTTGTTATAACAGC
+ACCTTCCTGCAAGTCAGGATATGCTTTTATAAAGTTTTCACTGATTTCCTTTGCAGAAAC
+TTTATTAAGTTTAGAAGTATTGAAAGTCATAGGTTTTCTCCAGATTTAGAAATGGGAAAA
+CCTCCCCGTCGGGAAAGATTTCCCGATAGGGTTAATAATATTACTTTTCAAGTGTTGTTA
+AAAGAATTCCAGGAAATTCATTTTCGACATCCGCCGATTGAATGCTCCCTTGATACATGA
+ATCCTTTTGATTCAAGGCCCTTAATCATGGCTTCCATATCTTTGTTACAGACTTCATAAC
+AAATAAATGAATAGTCATTATTATGCTGCTTCAGACCTATATATTGATTTCCATCTTGTG
+CAATCACGAAAGTTTCAGTTCCGTTTGCACTCAGAAAACCGTAAAACGTAAGATGAGCAA
+AGTCTGTCACACGGCATTCAGCCTTCTGATAACTCGTCCCATCTATAACTACTTTTTTGC
+AGTGTAATACTCCATTGTACGGTTCTTGTCGTCACCGAGAATTAAGTCGATGGCTTCCAA
+CACCATACCAGTGGCATGTGCAGGCAGAGCCGACGCAAAAGCAATTTTAAATGTATCCAG
+TAAGGACATGGTCTTTAACGTCATTGACGTTCCAACCCATGCCACAAGCTGGCGTATATC
+CATTACACTGTCGTCAGTTCCTGTGTTGTTTACTGCAACGGCTACCGAAACGAATTTTTC
+AATTACCAGCATAGGCAGGTTATTGTAGCGTTTAAGCAAAACGTTGGTTAATGCAACCTC
+TGAAGGCCTTTCCATCTCCACAATCAGGAAGCGCTTGATAAACGCTGCATCCTGCCGCTG
+CGATGAAACGAACTTACGAGATCCCCCACTCATGTTTGTGTTTGAAGTACCCATAAACCG
+CGTAAACTTATTTGCCTTAACCACTTCGCCACCGTTGGCAGCTAGTGACCAGGGCTTTCG
+CTCTATAGGCATATGAAGCTTTGCGGCAGTATCAGGGTCAATCTTGTCCACTTCATCCAG
+AAGAATGAGGTGGCCTTCCTGAAATGCCGTTACAAGCTCGCTAGGCACAAAACTGGTGTT
+ACCGTTAATAAGACTACGCTCACCTTCCAGCTCATCAGCGCGAATATTGCTGTTGATTTG
+CTTTATGGTTAGCGGCCAGTTCAGCATATGGCTAATATACATTGCCATTTCAGTCTTACC
+TGATCCAGATTCTCCTTTCAGGCATACACTCAAATCTATATCGTTACTTACAAGCAATTT
+TACTACTTGCTCAAGTATTCGAGAATTTGGTATATAGTCCTTATTCAGATTCGCACGATA
+TGGAGAAAACTTTTTAAACACTGGAACAATCATATCCTCATCCATCTCAGGAATGCCAAA
+TAAATCTTTTGCTTTGACAAGATAATACTGTTCTTTATTCGCAAACATCTTACTTGATAT
+AACATTTGCGGGTAACAGATTACCAATGATTTCTTCCTGTACGGAATTGTCGGATTTTAA
+TACAGTTGCGGCGTTAGTCATTTTTAAAACTCCGGTAAAATGCAAACACCGCCCGCTGGC
+AGATGTTTGCCAGTGGCATGTTAGTGGAAAGTCATCCTACACGCGGTCGCCATCTGTGTT
+CTGATAGCGGCAACGTTGTAACCAAGATGAGTTCCTACGATTTCGAATACTTCTGACTCA
+ATCCATTCAAACTGGCGTTCAAATGTAGGGTTTACGATTACCCAACCAAAAGTATCTCTT
+AAGGTTAACTTGTTATTAACGACAAGTTTTTCAAACAAATTAATTGTTGATTTAAATACT
+TTAGAATAGACATCCATTATATCCCGATCAGTCCATTTCATTGCCAGTTTGTTTTCTTGC
+AACAAATAGTCCTGTTCGAAAAAGATATCCCATCCCATCTCTTCCTTACAATCATGCAGA
+ATAACCTCTTTATCTTGATGATAACGAGCTAATTCAGCATTTTCACCTCCGTAACTGTGC
+GTATATTCATATAAGCTTTTTTTAAGCTCTGACCTGAACTCAATAGCATCAATACCATGA
+GTGGCACATGTAAGCTCAAATGATTTCGACATATACCACCGTGTTTCGGCTTCAAGAAGC
+GGATTCACGGTTATGTTACCGAATTCATCAGTGGAATAGAGTGATTTTGTAATGACGAGA
+TGCCTTACGTTTTCCAACGACTCTTCCATTGCGACGACGTATAACTGATATACATCTTCA
+GGGGCCCAGTCAAAAACCAGACCACCTAACTCCGCACTGTACTCTTCTAGAGTGAAGAGA
+TAATCAGTTTCCGCAGCAAAACTAATGTCATGCAGAATTTGATTTTTGAGTAGTTTGGGA
+CAATTACCAGGCAAAGCAACATCTTCCGACACACTAGGCTCCAGTTCCGGGCCTGAATGT
+TTATCTTCTGATTGAATACTTTGTTGTGCGGCTATTGCATCATTTATATAGTCAAGTGGA
+GACTCAACTATAGTTATTATTTCTTTTTCCTCTTCTTCAAAATCGAATATAGAGAAAAAA
+TCCATTTGCTTACTGCAAAATGCAGTCGGCCTTATTTTTTGTTTCATGGGATCTCCTAAG
+GGAGAACTCCCATGAAGGGATTTCTCCCCTTTTGGGTGGTTTAAATGTCAGATCTGTCTA
+AAGCTACTTTGCCCAAAACCCTTAGGAGGTTTAGGTATGTGAGCTAACTTACTTGTTGCA
+ACTACTCTCATGTAGTCAAGAGGATGCTCTCTCCCTTCCAATGTGATGGTATCCACAACA
+AGATAACCGGAGACCATTAACTCATCACCTTGATTTATACCAGTGAAACAGCCTGAATAC
+ATCTCTGGTGATACTTTGATTTGAATCGAAAATTCTCTCTCAGTAATTTCACCATTAATT
+TCAGTTTTCATTCTGTTTTTGAGCTTTATCAATAACCCAACGTTTCCGCTAGTCATTTCT
+TTCTCCATTGCACTGATAACTATCCCGGACACTTTTACTTCATTAACATATTCAAGATAT
+GACATTACTTCTCTCCTCAATTTAAGCAAAGAGAAGCCCCGTCAGGGTTTCCCCTTAACA
+GGATTAGATAAATTTGTTTACAATGAACATAAATGTCATCATGGCAATAACAGAAAAGCC
+AAACAGCTGACCAAAAGATCTTGGTGCTTTTACCGTTTTAGCGTTATTGATTTGTGCCAA
+GAGTTCATCAACTGTCGCTTGCCGTTTATCTGCTTTCATTTGATAATCTAAACATTGCTC
+CTCGCGTTTAGTGAGAAACTCAATTTTCGACTTGATAGCATAATCCCAGCCTTTGGAATC
+GAAAACGCTCAATTCACTAAAGGTGTGTAACATGAGTTCATCAGGAAAACCTAACTCTTT
+CATTAATGGGCGAACGGCTGCATACATTGCATCTACAGTTTCATAATGTGCTTTGGTCAC
+TTCATTAAATCGATTACGCAATGCTAATTTCTCGCGCTTCTCAATAATTTCAGAAACCCA
+GGCAACCAACTGATCATTTTTTAACTCTCTGGATTTAGCGAGTGAATAATCAAGGTTATC
+CACATCAAGAAATGTGTTCAACCCGTACTTTTCAAACTCTTCATTTAAGAACTTATCCAG
+ATCGGCTAAAGTTTTAAACATTGGAATTGCAGGTGCTTCTTTGAGAAGTGTGTAAGCTTT
+CTCAAAGTCAATTGGATTGACAAGAATTTGCTGCATTTCCACATGATAATAAGTAGAAAA
+AGCAGAAAGCTTTTGAGCCAGCATTGAAACTGATTTCAAAGAATTCAGTTCAATTATGGT
+TGGACCATCTTCATTCATAATAACAATAAGGTCATTATCATGCCCTGAATAAACATTCAG
+AGAATCCAATAACTTCTTGTTAACCACCTTATCCATATCTGGGATCAGATCAGCGAAGGC
+GATGAGAAGAGCTTTACTGCGTGCTTTACTTTTAGACATTTGGGGTCACCTATATATAGT
+AAGAAGGAAGGAATCATTAAATATCCCAACACAAAGGCAAAGCCTGTCATTCATCTCCCG
+TAAGCTATGAACCGCCTGATTTATACTTTCTGGCATTAGAAGTACGCAACGAAAATAGCT
+CAATTAAGAGCTAAGTTAGTTACGATTTGGTAAATTCGATTGTCCTTTTTCAGACATGGG
+AAAGGCACCAGCGACAAAGGTGACATTTTGCCGGTGGTGCCTTGCAGCTTTAGAAAGCTG
+GCCGCTTTTCACGGCTGAATATGCGCTTAACGCGCAAAGTAACTTTTATAAAGTTACTTG
+AAATGTGGGAGCAATAAATTCAAGCTCATATACGTTATACTACACGGGTTCATTCCTGTA
+AATAAAGAAATCAAAATTATTCTGTCAAAGGGGATTCTGTTCTACTTTTCGCAGCCTCTT
+TCAATTTATCTTCAGCACATTCGCTTAAAAAGAAAGACGGATCACCGTACCACATTACAT
+GCAGCTGTTGCTCTGCTCGTGTAAACCCAACAAAAAGCAGTCGTCTTTCTTCTTCAATCG
+CCTCCTGCCCCACTGACCGCTTACTTGGAATCTGATCTGCATTACAACTCATAATAATTA
+CATTTTTCCATTCAAGACCCTTCGAACCGTGCAACGTCGATAAAACTACTTTATCCGGTG
+TATATTCCTCATCCTTCTTCTTTGGCCCCAGACACATCGCCGCAGCTCGATTTATCATAT
+TTTGCCAGCCTGTCTTTTCGGCCCATTGCTTACAGGTATCCAGCGCAATTCTGCTCAGTG
+ATGGTGATCCTTTCTGCGTCCTCATTTTTATCGACGACAACTCCATCCACTTAATCAGAT
+TTGCGAACCTTTTTTCTATTTCAACCTTTTCCCGAGTCTCCTGTGTAAACCGGGTGAAGT
+TTGAATGAAGCGTTCTTGTTTCCAGGGAACTTTCATTCGGGATGTTCAGTTCACCAAAAG
+TTACTTTTCTTCCTTTCATGCTCAATGCTGTCTGGTCCAAGACCTCTTCATTTTCACCGA
+AAAGCGCCAGCACCCTCTTCATTAACCGGACATCGTTGGAATGTCGGAAGAATGCCATCA
+AATGCAATACATCGCTTGTCTCCTTTTCATCCCAAAATGACTTCCCACCATAACGAAGTA
+CCGGCTGCTCTATCAGGCTTTCAAGCTGATCGAGATGTGCATTACCTCTGCTGAGGATTG
+CCCACCCAATCGGGTCTTGGTTAATCAGATTGAGAATGCCTTGAATTTGCTCATCCATAT
+CAACATATGAGCGGAAATGAACTTTTCCCCCACCGCCCTTAGCTGAACGGAGATCTTTAG
+CGTATCTGTAAACATTTTTTTCAATCAATGCCCCTGCTACCTTCAAAATCTCTGGTTCAC
+ATCTGAAACAAGTATTCAAATAAAATATGTTGGGCCTGAATTGTTTTTCAAACTGCTGGA
+ATATTTTGACTCCACCTGATGCCCTGAATGAATAAATTGCCTGATCATCATCCCCAACGA
+TGCTAGTGTTAACACCTGCCCTCGTATGTAGTGAGATCCAGGCATACTGAATCGAGTCGG
+TATCCTGAACTTCATCTACAACTAAATGTGTCAAGTTAAGTGGCTGCATTTTCCCCGAGT
+ACATCTGGCCCACAACAAAACGTGAGAGTGCATTCAAATCTGCAACGTGGTCTTTCTGAC
+ATATTGCCTGATAGGTGTTGAACAAGTGGATTTGTTGCCGCGTATGGCGAACTGAAATGA
+TGTCCGTATCCATTTCCCTTCCAATCGCGTCAATAGCAAATTCTGCATCCGGGTATCGAA
+AAGGCGCGCCGGACTCCTTCAATGCCCTGTGAATTACAGAACGCTGTGCCGAGCTAATCA
+ACATCTTGCCCTTCCAGTTGACCATATCCAGTTGCATCCGGATAAAGCCGTGGAATGTAT
+TGACCAGCACCCTATCCTGGTCTTTCTTACTTAATCGACGTTTCAGTTTTTCAGCCAATG
+AATTTGTTGCTGCACGGGTAAATGTGACCATCCCCACTTTGGCATAAGGGAACTGCCTGA
+GGATAGAGATCACCGCCTCTATCATCGTGAATGACTTTCCAGATCCCGGTGCTGCAATAA
+CCATATTATTAGCATTTGCATTTTCAATGATGACCCTTTGCTCATCTGTTGGTTTACCCA
+TAAAAGCCTCTGAATATTTAGTCCCCTTTATTATACGATTTAAATTTGACGGATTTTTCT
+TTACAAGACTCATTTTTGGTCACTTCATATTTTTCCATTTTTTCTTCATTTAGGTTGTTT
+GAGAAACTGGCGAGTATGAAATAATGCTTCTAGACATAAAATTCATTCAAAAAGGGTCAT
+AAATGAAAAATAAACGGTTTGTATCCTTGGTTTCAGCTTTAGTTGCAAGTGCGTCTCTGG
+TAGGGTGTGCTGGGAACGCAGGTCAATCCCCTAACTCCGCCCAGCACAGCGACACTCATG
+GGCTCTACTGGCATGCTAACGCAAAAGATTCTGTAGCCAAAAATGCTTACTCTCTGGCCG
+GGTTTGACGTTTCTTTTAATGAGGAAACTGTTCAGCCAGGTGGTGATGCAGATAACTTCC
+TTTCCAAACTCTTGATTAGCGGCTCTATGGGATATGTGACAGGCGGTCTCAGCGGATTAA
+GCATTATGAGTTTGGGCTCTCTATACAGCTCCTCTGACGCCGAATACATTCAGGTTAACC
+AGTATGTTGTCTTTGTCCCGAACCCGAAGAAACTTCCTTATAACGATGAAAGCCTAGTTC
+GTGCCGGTGCTGCGTATGTTTACAATCACACCAAAGAGTCACAGGTAATGCTCGGATTCA
+ACCCATCGAAGCAAAGTGCAGCTCTGGCGTCCTGCAAGATTGATAGGGCGGTCATCAATA
+AATGGAGTACATGCGAGCTCACTTCAAAACCAGCTCCTGACGTAATGCCAACTAATTCCA
+TGTACAGCTTCCAGGCTATTCGCCCTGCGACTGGAACTGAAATCCCCCAACTTAATCTAC
+CTGCCGGTGAGTATTCAGTTATTCGTTACGTGTTCATTCCATTTAAAGGCAATGAGTCAA
+GCAATAATTTCTCAGGTATTATTTTCCGTTCTGATAGTCCAAAGTTCACCATGCCAGGCG
+GCGCAGCTGCTTCAATTAATGGGAAAGACTATTACCTCTTCTCTGGTGAGTATGGTCAGA
+AAGGATTCCCGGAAAAAACTCTGAAATCAAAATAACAAAAGGGGCTTTACAGCCCCTTTT
+TTTGGCTATTTGCAATCTGAGGTTGGATTGTAGATTTTAGTTAGAAATGGATCAAAGTCC
+GTTTTGTGCAAAACTTGGTTGACAACCCTCTTTTGGAAGATGTGCCGTTTCGTGCAAAAG
+TTGGTTGGAGGCCAAGATGGCAGAGTTCGTAGGTTCGGCTGCTTCGCAAGCTGATTTCAT
+TTGGAAGAACGCGGAAGACCTGTGGGGGGGATTTCAAGCATACCGACTTCGGCAAGATCA
+TTTTGCCGTTTACTCTGCTGCGTCGATTGGAGTGCGCACTGGAGTCTACACGGGAAGCAT
+CGCTCGATAGCCAACCAGCCACGATTGAGTTCTTAGAAGCAGAGTTCAGTGTTGATTTCG
+ATGCGCTGCTATCTTGACCGCCAATCAGACCCGCATGGTTCAGGTTTGTGTATGAGAGTC
+CCCAAATGGCTGTAGTTCTAACCAAAGCCTTGATTGAAGCCGGCCGCGCCGGAAATAGTG
+GGTACAGAAAAGGCAGTTGCTTGCGCTGGGCGTAAGTTACCCGCCGAAAAGCGGCTGGAT
+CGAACGACTGATCGGCACTGAGGTATCTGACGAGCAGTACGAACGCTTTCTGGGGCACAG
+CACGAGCAAGCAGGCTGAACAGATCCTACGCGGAGAGCAGCCAGCCAAGGGGCTTCAGTA
+TGCAAAGCGAGCGAAGAAGCTCGCTTCTGAAAGAAAAGCCACAATTGATCTGGATAACGA
+GCACCTGTCTGAAATCGAAAAGTATCGGTAGCCCTAGACTTTTAGCCGCTGAAGATCTCT
+TAGATACCATTGGTGAAACTTGCTGAAGTCAGCCTTCTGTTTCTCTACCGTGCTGTTATA
+GATCGCATCACTGGTAACAGCACAAGCAGTCCAGCCAGCCTCATAGACGAAGCGAGTAGC
+TATCGGTGACTTCTTCGGGGTGCTATCCCAGCGGTTTTTGAGCCACCGCGCAAGCCCTTC
+ATCAAGAGGGACCACCAGATTTAGCTGCTGTTTTGTGCGAGTGATACCGACATAAAACAG
+CCGACGTTCCTCCTCGATTTCCTCTTCGGCCGGAGGGGTGTTCATCGATGTGCGAACGCT
+GTAAACATCATCGGGTTTGCCGCCAGGAAATTCCTGCTCATTCAGCCCGATCAGTATTAC
+GTTATCCCACTCCAGCCCCTTGGAACCATGCAGTGTGGAAAGGATGAAGGGATCGCAGTC
+AGTAGCAGCCTCGCCTGGATTCAAGATAAGGTTTAAAAACGTGCGGGAATCGATCTTACT
+GGAGTCAAGTAGCTCCCCGATCCTCACGACCCCTCGTTGCTGGTCGTTCGATCCAGTGCG
+AGTTACACCCTCAGAGCCAACACTATCAATGAAACCCTCCATACTCAGGCGTCGTAACAC
+ATCGATAGCAGGCGTTTCCTCTCCGTCTTTCTGGCAGATAGTGGCGAGCCTGCCCAGCCG
+ATCTTTTTGGTATTGTGCGCCCTCGAATAACTGACCTAGAGCAGACCATAGGTCGGCGTG
+CGGAGCCATCAATCCACTGAGCGCCGCTTTGAATTGCCCTTTCTGCCAGCTAAAACCAGC
+CTCCTTCAGAAAGCCGTAAACAATCGCTTGTTTGTTGGGATGGTTTTCCAGTAGCCGCAG
+ATCGCCGTACACAGACAGCAAGACGCCAACTACCAGTATCCCGATTTCGGTGCGGGTGTG
+TAATGCGCTTGAACCATTGAGGTAGCGATAAGGTAGCCCACACAGGCGTAAAACAATTTC
+CGCCTCAGCAAGGTTCGCCTTAGTGCGGGACAATATGGCTTGTGTTCCACTGCTCACCGA
+GAGGTTTGATAGCACCTTGGATAGGCAGTTATCAAAGTGCAATCTGACCTCTGTTTTGGG
+GGTGCTAGGATGACTGACACAAAGCTTGGTCAGCTTTGTAGAGTTGCGCCGAATTACCGA
+GTTAGCCATCAAGGAAAGCTCATGGCCAAATCTGAACGTGCATGACAGTTGAAACACCTT
+CGTATTCGGGTAGTGCCTTTCAAACAGTCCGCCGATAAAGTCTGGTCGAGCACCACGCCA
+CTCATAAATACACTGGTTAACATCACCAACAGCCATAACCGACGTATCCGACTTAGATAG
+CAAGCGGGTCATGTCATGCTGTATCAGGTTAACGTCCTGATATTCATCAACAATGATGTG
+CTTGAAGTGGGCACCAAGGCTGCTGTCATTACGCAACAGTGCGACAGCCTCAATCAAACA
+GTCATCAAAGGTTCGCAGACTGTTTTCCTCCAGCAGCTCACAATAGCGGCCATAGGCGTG
+AATAAACCCCCGTTTGATGTTGCTGAACGTTGGATCATTGGCAGCATCAACAGGAGTTAC
+GGCCGCCGCCCGGCAGCGAGCAATAAACAGCTCGAAGTTTTCAATTTCATTGGGGTCAAT
+ATAATTCGCCTCATGGTCAAAGCCATAGCGGTAGGCTTGCTTTACCAGTTGCTCATAGCG
+GTAGTCGCTTGGAGTAATGAGGTCTTTCTTCTTGATTATCTGTTGGCGTTCTCCGTAACC
+AACAATCTTTAAGGCCAAGCTGTGGAACGTGCGGATTTCTGGAATCACGCTCGACATCAG
+TGCCGTCTTCAACTTCTCCGTGAAGCTCACCTGCGCCGACTTGTTGTACATCAGGATCAG
+AATGGAGCGAGGATCAGTTCCCGTCTTGACCAGCCGCTCAACGCGCTTTACAAGTGTGGT
+TGTTTTCCCGCTACCAGGTACGGCTTTTACCAACGCATGTCCGGTGTCATGGTTGACAAT
+ACTTTTCTGCTCCCAAGTCAGTCTTTTGGTCATGCCTTAACCTTGTAATTGGCGCACTGA
+CGGGCCTCGGTGTAGGGAACGATCTTTGCCTTACTGTGACATTGCAGATAGCCATCCTCC
+CATCGGCCTGCTTGCTCGCACATAATGCAGTTGGGAAATAGTGAATGAGGATCGGCGTGA
+CGGATAAAAGCTCGTAAGTTATCAGCCAGCTCAGCGGCCCCTAACGATCTAGGCCATGTG
+TTCACGTCAGAATTGATTGTTAAATCCACTTCAGCGAGCGGCATCGTTTGTTCGTAGAGT
+CGGCCGGAACCACTTAAACTCCAGACAGACATATACACGTTACCTACTGAGCAGACGCCG
+CTACAGGTGTCCACAGATTGAAACGGGGGAAGCCAGTTGAATACTCTCAGGATCTTCTCC
+TTGATCGAGTAGGCCCCGGTAAGCAACATCTGAATATCAGAGGCAGATTGGACCTTAAAC
+TCAAGAATCGGGATACCGGCTTCGATCTTGTCTTGAGAGCAGGGGTGTGTGACACAAATC
+TCTACGTAGCAACGCCTTTCGCCAGTCGTATCATACAACATCACGTCTGGTCGCAGCCCT
+GTGACCTTATCGTGTTTTTCCAGCTCTGCCTGATCGAAAAATTGAGTCAAGTTGTAGCGT
+GCAGGCACGGATTTTACGCACTGACGTGCTTCGTCTCTAACCAAGGCTAAATGAGAACCA
+TTACAGGCAACCCGGCGCTCCAGCTCAAGGCTAATAGGCATTTCACGGCTGAGAGCTTGT
+TGGTAGCGATAGAAGAATGCTTCTTTGCCGCACTTGTGAAGATAGGTTTCAAGGGCACAG
+CATTCTTCCGAATGGCGAAAGTGCTTAGCGTTGAACTCGCCCATTACCGGGGTCAGGGGG
+CTCTTACAACCTGGGCAGGTGTAAGTATGTGAGCGCAGGGCAGCGCCAATGTGCGTGAGG
+GTGCCCTCGCCGTCTAGCGCGTAAGCGTATTGTATTGAGCTGGATTGAGTTGTCATGACT
+GCGTATCCTCCCAAAAAAATCCAGCTAAGAACAGACCTTACGGCAGGCAAATGGTAAGTA
+GTGCTTCTTGAAGCAGTCGAGTGTACAGCGGCTCAGTGAAAAAGCTAATCGCCCGCTCAA
+CAACCTAGTGATACTGGTGCAGATTCGACAATGAGTTAATGCCCGGAGAGCATCTGCAAG
+ACTTCTAGCTGGAAGGCATTCCAACCAGCCCTCGCTTCTGAAAAGCCGTCAGGAAACGGT
+AAAATCCAACCAAGTGAGCAACTTCACTTGATCAAAGATCTAAGGCTAGAATGATGGAAT
+TCCAACCTTAGTTTGCAAATAGCCCTTTTTTTTAATATTTTGGTATTTCCTTACCTGTAA
+TTGGATCTACATAAGTTGACCCAACTTCACAAATCGCAGGGCGTGGAAGATAGCTACAGT
+CTACGTTCTCCTCTTTAATGGCCTGAGCGTTTTCCTGTCTGGCTTTTATCATATTCTCCT
+CTCCTCCCATTGCATCTTTTGTTCTTTCTGATGGAAGTTGATAATTCTCGTTTTTAAATG
+GCAAATTTGCTGTTATTGACGATTCTGAGAATGTAGCGTACTGGTCCGGTACTTCTCCGA
+CCTGAACAGCATCGTTAATCCATTCTGTTAAATCAATCTTGTCAAAATCTAACTTTTGGA
+TCTGCCCTATTGATAAGCCAACGCAGTTTGAAGTAACCGGGTCTATTCCAAGCTGCGGGT
+AGGCCTGCTGCATAATAACGCGAGATAACATTGAATTGTAACAGCACATGTCTGTTGCTT
+TTTTAACACATTTCTTTGTAAATCCCAGATTCAGATATTTAACACAACGGTTTGTATCCA
+GTGTAAAACAGGATTTCTGATTTTTGTGAATAGATGCTTCCATTTCTTTTTGATCGCAGG
+CCACCAGCATTTCAAGCAGCATTTTTGTGACTTGATATGCCGTATAAATCCAGCCGATTA
+CATTTAATGCAAGCATAAAGTTTTGAACAGCAGCAGAAAAGACTATTTCTCCACCCGTTG
+TCGCTACATTTTTAAATACGAAGTCTCGAACTGTATCGGGAAGCAGGTCATAGGCTTTTT
+CCATGGCCATCTGCTTAAGTTTACCAAGCCCGAATGAACTCATAGTCTCCTTAGCAAGCT
+GACCACTTTCACCAGCAGCGGATGATCCTACTGTTCGGCCAAGGTTACCGGCCACGTTTT
+CGTAAACGCTGGTTATTGAACTGGTCACATTGTTCCACATTTGTCCGACAGTTTTACCTG
+CCGATGCAGTCCATTCACCCACTGAGTTAGCCATTGATGCCCAGGTTCCGCTCTCCCCTC
+CAGTCCAGTTTACCAGTTGAGCATTCACTCGGGTCCAGTTCGTGTTTCGGATCATCGACC
+CGGCCAGCATTATCGCCTCCAGTGACCCAGCAGCACCCTGCGGCTTTTCGCAGCAATCTG
+TTTTGGCCAGTCCGTTCACAAAACCAACGGACCTGCCGCACCACTCTGCTTTCCCTTCAA
+AGACAGAGCAGGAGTTAGGGTCGTTTGGATCTTCGCATTTTGCTTCACCTTGCATGTACT
+GAACCATATTGGAGTACGCGGCCACTTTCCCAAAATCTTTGTTTTCTTCTTTTGGGCCTG
+TTTCACATGTTCCGCCAGAACATGGGATCATACCTACACAGGAGTTAGTCTGTGACTCTA
+CCTCTCTGACTACGTCTTTCCCTCTGTCACATGTATATTTCTGCTCATACATGTAGCAAG
+TATTTGTGCCTTCATCGAACCAACCTTCAGCACATGTCTGATTATCTAGCACACACGCAG
+CATCATTTTTATATGTGCTGCATGCGTCAGGCATATTTTTTATATCGTCGTAGTTGTAGC
+AAAGGTCTTTGCCTGTGGGGTCTTTCATGATGTTTCCCTTCGCATCATAAGAGCACAGTT
+TTTCCTTCGCCAGGGGATCACAGAAATAGCCTTCAAGGTTTGTTTTCCAGGTTAAGTATC
+CTGTATCACCTTTGTAAAGCGGTGTGGCCATCTTAAGCACACTTTCCGGGAGTCGCTTTG
+TACCAACATCCATGTTGACAAACCTGTCAAACCGACAGAATGAATTCGGCGTTTGTACTG
+CATCAAAACATCCTGCGGGCTCCTGTATATGTTTATCCTCCAACTTCATATTTTCAAAAG
+TCATCTCAACTTCAAAATAGCCTTCCCCACCACCGCCAACCCATACGCGCGAAGCCATAG
+TCACTTCACGATCCTGCTCCTGATATACAGAGGTTTTTACTTGTTCAGTAATATCGTAGA
+CTTTATCGAGCTTCCAGGATTTCTTTAACTCCCATTGACCTTGTGGAGATGGATAATTGC
+TACTTCTATATGCTCCATCTATATGAGCAAAAATCTGTGTACCATCAAGCGTGACCCTCA
+TATGGTCATCCCACTCTGCGTTAATTATTTTCGCAGTTGCGAGCTTTGCATCTGGATGGA
+ATTTTAAGGTTAATGAGTTGTCATAGACTCCATCGTTCCAATAGTTGTCGTCCCTTCTGC
+CAAACCAGACTCTCACACAATTATCTCCGCACATGGACATATCACCATTACCACCTGAGA
+TATAAACCGGCACGGAAAAATCACGAGTTATCGTGCAACTGTTAAAATTATCTTTCTTGG
+GTGAATTGCAGTAAAACTCTTTGTAATCTGGATAGTGCGTAGTAATTGTTTGTTTTGATG
+TTTCCGTATTACAATTCTGTAGCCAGTTTCCTGTACCAGCTACAGCATTTCCTATTTCGT
+TACGACCCGCATTGAACATAGGGTCGTTAGGTTTAATAGTAGATGCTGGGTTTTCTTTAT
+TTGCATTCACCAGAGTACGGTAGGCGACTCCATCATAACTTTGCGCTTCAAACAGCTGAC
+TTTTTCGATTTTTGATGTCATTGATGAAGCCATTTTCATCTCCATACCGGCCACCAGCAT
+TGAACTGAACATCACTGTGCTTCTGCTCTGAGCTGAATAGTTCCCCTGTACTGGTTTTGG
+TACCTGCCGTTGTATTCGGGTTGTTACTTATTCCAATATTACCGCTGCTGTCCCTAGAAA
+GTAACTTTGCCCCCTCTTTCGTATAATTCGAGTTAATTGTACCGCCCGACATGCTAGGTA
+ATTGTACAGCCTTACCGATCGATTTCCCGTCGGACACCGCATTACTCATAACACTTTCAT
+TTGAGTTCGGCGTCCCGTACTTCCCAACATTTAGGTTTGTTGACTCTGCTTTACCAACAT
+ATTTCTCGGAAATTTTGCCGCTCAGATTTTCCCCGGAATCAGCATTTTTATACTTTTCCA
+CAATATCCTGAGCACTGGTGGTTGCGTTCCGGTTGGCGTTGGGATTGGCAAGGTTAAAAT
+TGTTTTCAAGCTGGTCAAAAATCGCATCTGCCGCAAATATTTTAGGCGTTAACGCAATGT
+TTATGAGCGAAACGTAAAATGCCCAACTCATAGTATTAGCTATCATAGACGCAATAATTG
+CTGAAGAAATTATTTTTCTATGTTTCATATATAATACTCAATTTTTTCAATTAGTTGGGT
+ATATACCTGACGCAGCAATCATTATAGCGCCACAGCATGTAAACATAGTTATCTATGCCG
+ATTTTTTTCCGTCCACCTTTAAGCGTTGACCAGTCATGGACAGAATCGCCTAGGCGATGA
+CAGCAATCCGGACCATTCGCCTCCGGCGTTGGGTAAAGCATTGAAAGTCGGTATTGAGAT
+CGAGGAGTGAAGTATTCCCACGTTTTTTCACACATTGCGTCAGCTCCCATTGTTCTCATA
+AGCATTCCCTGCCTATGTAACTTCGTCAGTAGACGCTGAGTTATAAGTGAGCTGGTTCTG
+ACGGCATCATCATTCGCATAGATGTGTCCAGTTAACGGATAAAGGTTCCCATCACACCCG
+GCACAAAAATATGCAGCCAAATTATCCTTCCCGGCAGTCACGGCCACGCAGTCAGCTGCA
+CATACCATTGAGGCGATAGGGTTTGCAAATACCACAGCTTCGGGGTTTAGCACGAGCGTC
+AATAGGTCACTTTCCCACATCGGATCTACTTCGCTGATATACGTCAGACTGGCATCAACA
+TAAGGTTCTGCTGTACATTCACCAATAACCAGCAATTTCAACATCGTCATGATTGGGAAT
+TCCCAGAGATGTACGTCGTAGAATCCGGCTTCTGTTGCGGTCATAGGCTGGTTAGTATTG
+CTCTTGCCGATGTCGAACTGTGATTTTTGCAGCATGGTTCCCTCTAAAAATGGGCTGCAC
+CACGGACTTTTCACCACTTCAACAATTTTTACTGGTTGGAAAAAACTTAGCTGCCATCCG
+ATTTCTGGTATCCCATTTTGATCCGTGCAATAGCAACCAGGGCGTGAGGGGGCGGCACCT
+TCAGGGGCTGCTCCAATTCCCATGATCCGCATCGGGAAGATACAACTCCAGCAGATGTTT
+TTGATTAGGCCCTGCCATACTCCCGCTGACTGGCACATTGCTCCCGGGACACCGGTATCT
+GCGGCCATTGTCATTGCAGGCAGCGAGAGCGACAGCATGACAGCGATCAATATTTCCAAA
+AGTAACTTTTTTAGCTTCTTCACCGGCACGCTCACTATTTAGTAATGAATGTTGTCACGC
+TTTCCATATACGCAACCACTTTGTTAAAACACTCTCTCATCTGGTCCGGGTAAGTTAGCG
+TCAGCCAAGTGGCCAGCAGCGCCCCAAAAATAAATCCTATTTTCATATCAATTCTCCTCT
+GCCGCGATTTTTGTTCCAATACCACGTATTTCAGCTTCACTGAATTGCGTTATACGGAAT
+TTCTCTTTTTCAGTGGAGATCAGCGCTGGCGTGTTTTTTATCTGGAAACGAGCAATAATT
+TGCTCATTAACTTTGAACACCTTCCCATTGAATTTTTCGCGCAGATCATTCAAATGATCC
+CATCCATTTTCCTGTTTGATGCGCGTGAACATCGGCATCACCTGACCGCTGCCAAGACGC
+TGGCGATATTGCTTCTCTGCCCACTCAAGTTGCCCTGGGTTCATTGGGTCAAAAATTATC
+ATTGTGAGGTTCTGCGGGAACCTGGCCAGTGGGTTAATGAGCTCGCCAGCAGAAGCAATG
+ACGCGACCCTGCTTATCTTTAACGTCCTGAGTAACCCTGATTGTCGGGTCGATTAGCCAT
+TCCTTGTGCTCTTGAGCGGGAGGCAGATTAACCATGTACTGGTTTTTCCAGGTATCAGCG
+ACTGCTCTCTTCTTGGCGCCGTCCCAGTCGTATTTCTGTGCTCGCTCTTCGAGCTCTTTA
+ATAATGCTCTTCTCTTCAACCGGATAGGTCGTACCAGCAATCGGGAAAAGATCTTGGTCG
+GGTTTTCTGGCCAGTTCGCGCTGGAAGAAATCAACGTTGAAAGAGCCGACCATTTTTGCA
+AACCGGGATTGCTCACGGGAGATTATTGTCGGGACCTGCGTGATCTGGTACTGGTTAAAT
+GCGTCCGGGTCAATCGTAATTAGTGGGGAGTCAAACTTCCCCTTCACCACCAGCTGGTTG
+ATAGCTGCCTGAGTTTCAGGGAGGCGTGTAGTGCCTTTCTTCAGACCATTAAAAACCACT
+CTCGCCTTATGTTCTGACGCGGTACGGAGTAGATCTTCCAGGACGTAATCAGGCAAGCTA
+AATGACGCAAAGATAGTGATACCGTTTTCTGTCGAGAGCACCTCTTCCCGACTGCTGTCT
+ATTTTACGCTCGAAGTCAGCGGCGGTGATTCCTGATGAACCAAACATCTTTTCGATATTC
+GAAGACTGACTGCGCATAACTTCTGGTTTATTTTCGACGGATTTCAGTGCAGACTCGCTG
+AGCTGTGAATTTCCCTGAATCTCATCACGTCTGCGAATGATGTCGTTAACTGCTTCCGAG
+TTATTACTCTGAGCGCGGATAGCCTGCGTATGGTCTATAACTGCCTGCACACTGTCAGCA
+TTCATACCCGGGACATAACCGCGATTTGTTTGCTGACTGAGGTCCCCGTTTTTCTTCATA
+GCTTCGGCCTGGCGGATGTATTTCTTGGTATCAGGAGAATCCAGAGAACCAGACGGGAGC
+GGACCTTCTGATGCGTGTGGTACCGGTATTTGGGCGCCCAGAACCTGAGCTTGCCTTGCA
+ATGTCATCAGCAACCTGTTGATACTGGGGGCTAGCCACAGCGGTGGATATTAAGGCGTAA
+AATGCCAGACAGGAGGCCAGAGGCTTAATAGTTGTTTTTAATTCAAAAGATCGCATATGT
+TTTCCCAATAACTGAAGTCAACTTAACCGGCCCCCAAAAACGTGAGTCCCATGAGTGGTC
+CGTTTGCCCAATTAAAAAGACCTCCCCTTCCGGAATAGTTAATTCTCTTTCAATGGTCTC
+GGCAGGTATGCCGTATTTCACAGAAATACGTCTGGCATTGGCTTTATAAAATTTGTTCCC
+ATTATAAACACCATCCAATGTGACCCTCAGGCGATCTCCGCCGACTCCTGCCACAATTTT
+AATAACCTTCTCATTTTCACGTATAAAACGGACTGATTTTGGCATATGAAAAGCTATGAT
+ATTCCCTGAACTTACCGATTTATCCTTCAGATCGATCATGTAAAAATCAGCAGGTAAACA
+TCCATTTAATAGTCCATGACCAAACGTAAATCGATTAAAAAAAATCAACATAACCAGTAT
+CAGGATTCCGAGATTTATTGGCACGTACCAATCAAAACTCAGTAAACCACGCTTCTTAGG
+TATGTATTCTCTCATAACCTACTTCTCTCAGAATCAGAAAGCAAAATGGACTGTCTTTTA
+CATTACCTTAAAACCTATTATCCATGTTTTGGTACTTCCTTATTTCAGCAAAGCCAGCTA
+TTTCTGATTATTTACCGCCTTTTTTTCTTTCATTCCGTCTTTGATTTGTGATTGTCCTGG
+CCGCTGTCTTACTCATGTAAAGTAACTTTCCCGACGTTACCCCATCAAAAAGTGAAAAAC
+AAAAAAGCCGGGACATTTCTGCCCCGGCTGTTATTTCATTAGCTTGCCTTACTGCGAGGT
+TTCAACTGAATCTACGGACTTTGACGCGCCCTCATCCGGACCATAAACGGTCGTACGCTG
+AGTTGCTGAATCCCCACTATCATCATACGCGACAACTCGTATATCTTGCTTCCCACGATT
+AAGGTTTTTGGACAGTGTCGCAGTGCTGCCGAAAACATTCCTTAGCTCATCATTGATATA
+CCATTCATATCGAACCAGCTTGCCATCAGTGTCAATACATTTGTTTGTGAAACTCCAGCT
+CATATTAGACTCTGTGTAGCTTAATGCACATTGCGGAGCCGCGTTTTTAACAACCTCAAA
+ATCAACTGATGCGGTACCTCTTTGGCCCATTTTACTGACAACATCCAGCGTGACTTCGTA
+TTTCTTCTCAGTAAGACCAGAAATTAACTGAGCCCAATAGTTTTTACTACCAGGAACAAC
+CTCGCCGTTTACTTTGTATGTCACAGTATCAATACTGTCAGCAGAGTGCGCCAGTTTAAT
+GTTAGATCTTAGCGTGACATCAAGAGGCGCCCTCATGAACTTATTAGAGAATTTCGGTGT
+CATTTCTACAGTCATGGGCGTTTGCTCATCGACTACGAAGGTATTTTCAATACGCTGTTC
+GTTGTTACGGTTATCACGGAAAACGATTACCAACGTATATTTCCCCGGCTTCGCAATTGC
+AAATTCTTTCGTATCACCATCATCTTTTAAAACTGAGATATTGTCCTTATCGTAGATCCA
+TTCCCGAGAATAAGTTACCCCAGGATAGCCACCGTCTTTTATTCCGCTCAGCGCAACATG
+TAAGGTCGACGGGGCCATGGTGTATTTAAGCTTTGTACTGACTTTCATCTCAGGAAACTT
+ATACACCCAAGATTTAACAGATACTTTCCGCGTGGAAATAGTACTGTCCTTACTGTCAGC
+AAGCCATGCACTGTATTCAAATGCCGCATATCCTTGCTTATCCAGCATCTGCTCAGTCAA
+AGTTATCGACAGATTCGCACCTCTGATTTTTTGTCCGTCAGGGGCAGTCCATTCTTCAAT
+GACGTCATTTCCGTTCTTGAATCGGCTGTTCGGGTTAGTGTATTTACCATCTAAAGTAAC
+TTTACTTCCCACCTCGACGCTTGAAATACCACTTACTGAAACAGATAGGCGCTTGGGTTT
+AGCGACGGTTAACCGGGCAGACGTCTCTTTCCAGGATGACTCTTCAGCCAACTCATCAGA
+ATCCAGGTAACGCATTCGGGCGTAAATGGTCGGAGGTAGCGTATCAGCGGCCGATACGTT
+ATAGGTAGTGTCACCCTGAACCCAATTCACTTTATCCTCCGACCACATCACTTCGGCCGT
+ACCCTGCGGAATTGGTTCATCGTTATCCAGCAGCGTGACAGGCAAATCATCGCCTTCGAG
+AATTTCAGCAACATCGATGCTCAGCTTAGGCTGTTTGTACGTTACAACCGTCAGAACGTC
+GCTATAAGACTCTTTCGACGTAAACTTGTTGGTCATTTTTGCCCTGTAAAGCCATTTACC
+AACCTCAGTTTTCCTGATCGAAATGCTTCGCTTCCCTGTCATGTCCTGAAGCATAGTCCA
+TGTCTGTCCATTATCAGAAGACTCCTGCCACTCGGTAGGCGCCAGCGCATCGGAGTTAGC
+TGTACTGGCCGATTTGAAGTTAACAAGCGTACTGAGCGGGATACGTCCGATAATCAGACT
+CTTTGAGAGATTACCTTCTAGCTCTTCGCCCTTATAAACACGGATGCTAACTGCACTGGT
+TTCCCGGGTCAGTTCGAAATCTGCGAAAGGCGATCGTACTTTAGCAATCCCGACAAGTCG
+CACGTTCCCGAGGTCCATATTTTCTATCTTGATCTTGGTTTCAACCACCCCGGCATCATT
+CACGGGCAGTGCTTCGGTTAGGGGTGTACGTTCATACGTCGTTTTATATCGGCCTGTTTC
+TGGATCTTTTCCATAAACACTTTTCTGAGCGTAAATGGTTACATCCCAGTCCCCCATTGT
+TGTCCGACTAAATGAACTTTTGCGGGTTGAATTGTTATAGCGGCCAACAGACACCTTCAA
+TGGCAATTCCATCGTGGTAGCAGTCTTTTTGTCCTCAATTTCCATTGCCGCTCTAATGTT
+AAAGTCGGGTACCGTATACACATTGAGCGTATCAACGGTTCGCATAGTCGGTTCCTTCGA
+GTACTCGACAGCTATGTCGAAGACATTCTTCGTCCACAACGGGGCTGATGCCACTTTAAG
+ACGTTGAACAAACGTCGTTGCATCGTTATTTGATGAACGGTTCTTAAACGTCGTTTTTAC
+GCTTTCCCCCCCGTTTTGTGAAACATAGACTGTCACATCAGCAGGAACCACTTTTGCCAA
+TAGACGAGCTGCTTCCCCGCCAGTGGTATACGCCAGTGCGGTGTTATCGTTAATCCCCGT
+CAACACCTTGTTTTTCTTGTAGGTAAGGACCGGGTTATAAGGTAACTGCGTAATCAGCAC
+ATGGCGGTTTCTGGACGATACAGCTTTAGAGCCCTTGCCGTTTATCATATAGACCTGATA
+GTCGAGCAGGTTATCGCCTGTTTTATTGAAGAACCCTGTCAGGCCTGGCGTCCGACCTTT
+AAAGTAAAATTCAAGCCCGTCAGGCACATTGTTCCACTGAGGGTAACAGGCGGTGATATC
+AGATTTGTCACCATACCATTCAAGGTATGCCAGTGCGTTCTCTTCTGTAGTAAAGAGAGT
+GCATTTATCACCGGCCGTCTGACTCATGAGATCGGTATACTGCCGAACTCGTGAGTACAA
+TGTGATGTCTTTCTCAAAGTTTTTAAGCGTGAATCCTGTTGGTTGATACGTGAAAGTAGT
+ATTAAATGTCACAATCTTGCCGTACAGGTTTTCAGCTATGACCGTGATTTCATGGTCAGC
+ATTCACTTCTAGATCATCCCCAACCGGCAGATAATAAATGCCTTTGTGGTTCGTGGGGGT
+GAGCTCAACAAGTTTGTTATCTATCGTAACAGCTTTAATATCCGCGACTCCGGCCTGGCC
+CTGGAATGCGGCAACAATAATTTCATTTAAGAAATACACAGGAGCTCGTTTGGCCAGAGC
+TGCACCGTCCTTAAGCACCATCAGTGTTGGGTTATCAGAAAGCATCAGTTTGCTTTCAGG
+CTCATTGTACGTAGAGGTATTCTTGCTATTGTTCTCTACCGTGAACGAGGCGGCATAAGA
+ACCATTCGTCAAGTCTGTTAAGTCAAAGATATACAGATATTCATCGCCGACTTTCTGTGG
+CCCGCTCACGGGCTGAAGAGTACGACGTAGCGGTGTTGCCCAGGATTGCTTAAAGTCGAT
+AACCGTACCATCTTCTAAAGTAACTTTTGTTGTCGGCTTAAACACCCCATCAGGATTCAT
+CGTTAGCGTCATAGCGGTTGGTAACCACCACTCACCCTCAGTTCCTTCCTGAGGCACTTT
+GACGGCTACGGCCACCGTTCTAGCTCCTGTATAGATCTCCTGTCCACCAACACTTATTGT
+TTTAGCTTCATCCGTGAAATTCCAGAGAGTATGGTCAACAACAGGAGGACGGTAATCCCA
+GGTCAGCGTTAGCTTCTGCGCTTCAGGAGGGGCAAAGTAATTATTTTTCGAATTGGCAGT
+GACCGTGATTTCCCGTGAACCCATCAGCAAATCCGAATCACTTACTTTGATGCTTCCAAC
+ATCGATCGTGCAGCCATTCCCACCAATTGCGACTTCGCAAGCTGATCCAGACCCGATAGA
+GATATATTGCACATAATTGCGAGGCTCTACGGAGACAGTGACATTCCTAATTGCTTCATC
+CTTAAGATAGGATTTAAGAGTGTAACCATCCTGAACCACTCCATTCATAGACGATTTCAG
+GCCCGTTATCGTCGGTTTAACCGGTACAAGAGCATTAACTGTATACTCCCCATTAACCAC
+TTCTACTTTCTGCCTTTCTGATCCAGAAAAATAAGAAATTTTATACGGCAGTTTTAGTTC
+TCCTGCCGCATTGGGTATCCCTGTTAAATTGAATCCGTTTGCTGTAAAGCCAGAGGTATT
+TGGAAGCCATTCAAAAAAGCAGACCAAGTTATCTACGCTTGATGTCGCACGATCATCAAC
+CGTCACATTGCATGCGTTGCCAGTACCTGAAGCAGTAATTGTATTATTGTTGACGAATGC
+AACAAAATCGCCCGGGCCGGGATTAAACGTGACGGCAGGCATATCAGCCTGGAGTTTTCC
+GGAAATCATAATTGCCTCAGCTTGTACCGATTTAATCGAAGCAATTAAAGAAAACAACAG
+GGTTAAACATAAACCTGATTTTCTCATGACGAACACCTGTTTTTTTACGCAGAATTAGAA
+TCACTCTACGTTAAAAAATTCTGAAATCTTGTTCGTAAAGAGGAAAAAAAACATTAAATT
+TTTGCAGGAAATTGAGGTTTTTTAGCTCACTGACCGCTCTTAGACTCAGATAGGCGAAGG
+GCGGTAATTATCGATTCTGAGGATACCCAAGGCATTTTAAGTGTCAGGAACCCCAACAAG
+AACAAGCCTGTTGAAACGCAATCCATTTGTGTTACGGGAAGGTTATAATTTAAAGGCTTA
+AACGTCCCCATTTTAACCGGTACAATGCTTGCGCTTACCAAAAGGCCCCCACGGTCGTTG
+GGGCCGATATTGATATTTTTGTAGGCTTGGTGAGTGCGATGCGTGGTCTTACGCTTTTCA
+AATTTTAGTGTCGGCTTAATTCTCAGAAAAACAGATGCCAGCGCCATGGCTTCGTTTTGG
+GATAGTTTCATGAGAATGCTGCCCTCTGAATTCCATCCATATTCCCTATTGTCAGACGGA
+GGAGCAAACTGGAGAGACAGGTAATACTTTTCAGTCTCAGTTACAAACGCCGAATTATCA
+GCAGAGCGACTTTTGTCGAGATTTACTTCGAATGCCATCGCGACAGATTGGCTGAATACT
+CTGACCCGTTGAGGCTTCGCACCAGTTGCTGACAGATCGCTCATTGTCATACTCTCTTCT
+TAAAGAACCATGTACCGGACATAACTTCATTATCCTTCGTGTGCGTCAAATCCGAAATAA
+CAAAACCACCTTTTCCTTCCGAAATTATCATGGTGTAAGAGCTCGTATGCACAAGGCGGG
+AATTTTTGACTTGCAGACCCGTACACTTAACTGCAATTTCATTACCCGGAACTCTCTCAA
+CAAAAGTAACTTTTGATGCAACGCCATTGATATGTACGCTTCCGTTATCTGCTATCTGGA
+TGTTCAACGAAGGTGTGGATTCTTTATCACAAGGTTGGAAAACAGAAGTGGTTTTAAGAA
+CTTTGCCAGTAAAATCGTACAAGTCAGGCTTCGACGGTTTTGCGTTAAAGATCGAGTAAG
+ACCCCGCCACTGTTAAACCAACCATTAAAAGGGGGATTACCTTTTTAAAATTAACTTTCA
+TCCTCCAGTTCCTCTCCAATCAAGTGTAAAGCACTTACGCACATAAGCCTGAGTTGATAC
+AGCAAATTGTCGGCGGTGATCCCCCCAACAAATGTCACTGTACGGCGTATCGAAACGCCT
+CCAGGCTCGCATTGAATATGGCCAATACCTGCATCGCGAAGGAAATCATTCTCGGCGCTT
+ACCAGGTCTGCTTCAGCAGGCGGAATGACCACTTCGATGAGTATTGTATCAATTGGAGCC
+CACTCCCAGTCGTACTTAAGCGATGAAATTGGGGCAATGGAAACATGAAATTCATCAATA
+TTAAAAATGACTGGTTTTTTGCCTGTTGATTTAGGCTGAATGAAGGGATTCTCGACCAGG
+ACAACTGGGAATTCAGAAATAGACAGAACTTCGATTAACTGATCTCGACGTAAACCGTGT
+ATTAGTGAGTTGCGTGATAACATTCAGTCAGCCTTTATTATAATAATCAGATAGTTACAC
+ATGATCCCGCTAGTTCCTTACCATCTTCCCGCTTGCAGCGTAGTAACCATTAAGATCTTA
+TGGGTTAGGGTAACAAAAAAATCTAACTTAACCAGTAAAGCATAGAGATTTTTTACATAA
+AATAATAAATAAGTACCAATTTTATTAAGATATTTCCTATCTCAGCCAATACTTTAGGAA
+AAATCTGTACCCGTTTTAACACCTATACATACATCGTGCAAACAAAGAACAGTAAACGGG
+GCCTAAACCACCTTTTTTTAGTGGTTTACCTAACCAAAATTAATTTATCCAAAATCGTAA
+CTGGTTCGACCTGAATCAACCCACGCGAATTTTAATGATTTCTTAGAACTGGCTCTATAA
+TTCTTCAAACTGGCTTAACTGGAGATGTGACAACGAGGGATTCATTTAGTACATGAAACC
+GGTTTACCATTCCCCCTCACCTGTTAATAATATACCAAAAAAAAGCCAGCTGGTAAGCTG
+ACTTTTTATTAATAGATAACTCAATCTAATCAATTGATATTACTATACTTACTTCGCAAG
+ATTTGCGAGGTTTGCATTGGCCTTTTTCTTCGGCTTCCTTGTCACACCTTGGATTTGCGC
+ATGTTCACTCAGCACCGTGTTTTCGCTTTGTGAGGCGCTAACAGCAGCAGAACCATGACT
+AGTATTTAAACCTGAATCATTCTTTTTTGCGCTCTCAATCGGCGTTAAAATCTCTAAAGT
+CTCAGGTTTGGGATTTACAGTCAGTTCTTTAGGTATTAATTCCAGCCGCTGATCCCTTAC
+CCTCTCTGCCTTTAATGTTTCACTGACATCAGATTGACTAGTAGTTGAAAAAGTTGCCTT
+AGAAAAATCACAGCCATTAATCATTGAAAATAATTCATTGAATTTCGAATCAAGCATAAA
+GCTTATTTGTTCTTTCAAATTTTCATTGTTTAATTTGTCTTTATTAAATTCATCATTAAA
+AAATCGATTTAGATCAGCAGCTGTTAATCTCTCATTCAGTCCATTAATAAAACTAGATAA
+CTCGGGGAAGAGATTATTTAGCACTAACCCCGTAGTGATTGCAGATCTTATTAGAGAAAT
+CTGCTCGCCACGATGTGTTAGGGAATTTTTTTTCAAAAAATTATATGCATACGGAGATTG
+TCGTTCCGATAACCAAAACGCACTAATCTGAATACGATCGTTTTCCTTCTCAGATTTTTT
+AGTCATAAAACTCTCCCCTTTGCAAAACCATCATCATGCAAAACCATCATCATGCAAAAA
+CAGTATCTGCGATAGCCAGTGAAAGTGCGAATTGCGGATTATCAACCATGATGATTTTCG
+ATTTGTCAAAATGTTTACGAACTGCCGGTTCAATCAGGTAAGAACCTCCACCAACAAGGA
+AAACATTATGCGGCCGTTCTTCCACTTGAGTGACTGCTTTAATCACTTTTTCTTGAAGTT
+GCGCCACAGCCCCATTAACAGCATTGAACACGCCGTCAAGATCTTCCGGGGACACCTTGA
+GCGAGGCTTTGTTTTCACGATTATCGACTAGGTGATGAATATAGGCGTTACTTGCATTCA
+GCTTTGCAGAATCCAAATAACGACGGATTTCATCATATACGATTGAGCAACCAATACGGT
+CAAAACCCCTGACACTGGAGATCTGTTCCAGCTGACCTGTAATGCTTGCAACATCAAGTG
+TTGTCCCACCTAAATCGATAACCAGGCTTGATTCAAAAGATTCAATTGATTCGATTTCAT
+CAGCACGCGTTACCGCTGGAAGGGATTCCGGGAAAACGGTAACTGAAACAACATTAAATG
+AAACACGTTTACCATCAATATAACGCTCCACCGGCTTCATCAGGTTGTCTTTTTTTCGTT
+GGATGTTTTCATTATTGGTTTCACCCAGAGCGGTATAAAACTGACTGAGTGGCAAAGTTA
+CGTAGAGATGAACATCCTGTGGCATTAGACCTGAGGAATGTAGAGCATGGTGAACATTAA
+GACGACTGATTTCATCGTACTGATGCGCAACGTCGGTAGTTTCTAAAGCATTGCTTGATT
+CGCTGTGGTGCGAGAATCGTTGAAGACCATCAATTAGATAATTGAATGGAATAAGTCCGT
+CATGGCTTACCCGGAAATCTGCAACGAAACTATTTTGAGTCAATAAAGGTACAAGGTCAC
+CTTGATTGTTAGTGCAAACCAGTTTTGCCGCTTTACTACCATCATCAATAACAACTTTGA
+GTGTCTCAAGTTCAGTAGAGTTTGATTCAGCCACAGCCAGTTTTGTTTTTGCTAATTCAG
+TCATGCAGAAACCCTCGTATTGGTTTATTTAGCCCACCACTTTTGTTATGGAATTTATAC
+ACCAATGGTTGCTTTAGGTCAACATTAAACGGGACAAAACACTAACGTAAGTCCTTGTTA
+AAAAAGAATCCTTCAGTTTTAATCCAGATGCAACCCTAGATTCATGTACACCTGAGCAAC
+ACACGCAAAAACTATATTTTGCTCAGCGTTTTTATACCAAAAATAAAACAACTGAGGTGC
+ATTACAGTTGATACGGCTCGGAAACCGAAAAATGATTTCTAGCTCCATTTTGGACACTCA
+CAAAAATTACCCCTCTTATCGAAAAAATTGATGACTTTCATCCGGTAGTATTAATGCAAT
+TTCAGAAAGAGGCATTTATGGCATCCGAGCACGTCCAGACAATTGATCTGACTAATTTTT
+CAGGAAGGGTTTTCTTTCTGGCAGACCCTCATGGTCATTATTCGACGCTATGTAACCTTA
+TCCATTCGATATCAGAACCTGATGAGGAGTTGATCGTTTTCTCCACAGGAAATCTCTTCG
+ATTATGGACCTGAGCCTATGGAGTTAATGACAGCGATCAACACAGGGATTTTTGACGGCC
+GTTCTGTTCGTGTGTTCTCAGCTGCCGGGGCCGGAGAAGAGATGCTGAAAAAGCTCTTAC
+CCATAAATAAAGACCGCAGGACTTATTATCCAAGCACATTTCTTAATGAACGGTGGTGTG
+CAAGAGGCGGGCGATGGCATAAACAAATTAACCGCAACTATCTTGAAGAGGAAATCTGCA
+AACTGCTCTCCACCCAGCTGGCTACTGTGATGAAGGTGCTTTTTAAAGGCAATATTTCTA
+TAGGTATTTGCCCATCCGATTACACAGACATACGGCAGGGCTTCAACAATACATATAACG
+CCCTCCTCGCTTTTAATCAGGCAAATGTGAATATTTTTCAGAGTCAGTTTCTATACGGCA
+TGGATCACGCAGTCAGGCCAGTGAATGTCAGCGATGTAAACCTCGTAGTATTGGGTCGGA
+ATCCAGTTAACAGCATCAGAAAGGCCCATGGGCTACCGCTGACTAACTTACCGGTACTCA
+TAGGAAACTGCCTCCACATCAATACAGGTTCTCTGTACATGTCAGAAATCAGTAGCCCAG
+CACTACTGGCACCAGGTATTCCGCCTACTACAGTTCCGGCAATAACACTGGTCGAGTTGA
+TCCTGGCATCTACACCGACCCTGATTTGCCACCAAATGATCCTGAATAAAAACGGTATTT
+ACACACAAAACACTGCACCACTTAACCTGGATTCAAATGATAATAATATAGAGGCCACAT
+TATAATGCTTAAATTAGAACTGATAATTTTGCCGTTGCTGGCATTTTTAGGTCCATCCAA
+CATTACAAATGCATCGACTAAAACCCCGATACCGTCGTCCCAGCTATCTGATGCCAAAAC
+TGGGGTTAACTATGAATTTATTACTATTGCTGCAAATTACGTCAACGGAATGTGGCTTGT
+TGATGGTCGACAAAGACCAGTAATTAAAACAAGCATGACTAAGCGTAACTATCTTCAGAT
+TGAAAACGACTCTGCTTCAACTCCTTTAAATCTTGTAATACCCAAAATTGAATTTTCCAT
+CATTGCAAAAAATGGCGTGTTTATATCAAAATTTATCTCCCTTGATGAAGATGCATCCGG
+GAAACGAATTCTCTGGTTAGAACCTGGTTCCAGCATGACAATTTCATTCGTCAATGATCT
+ATCCAGTACCCCGTTACAGGCGTTAGTGTCCGTAACAAAGCAGAAAAAAGAGGTTATTGC
+CATTTTTGGCCCAGATCAGGGTAAAAAATTCACCCTGCCCCTACCGTCAGATTCACAACA
+ATCGTCAATCGACTATGTCCCCTCTCCAGAAATCGCATTACGTATCAATGCCCCCAAAAA
+ACTTCAACCCGCTATCGCAATCCCGGAGGACGCTAGTGCATCTTTATTACCTTCACATAC
+CTACAAGATCAGAGCGGCAGAAAAAGTAAGGACTTTTAAATTTTCGTCGTTCGTTTGGGT
+TGGAAAGCGTAACAACCTCCTCGGTGGTTCAGATTATTTCACCAAAGAGTTGAAAATTTA
+CCCAGGAGAAAACTTCGATATCAGTACCATACAGAAAACGACTATGAGGACTGAAAATGA
+TTAAAGTTTCAGCATTTATTCTTACCTTACTTGTGACTGGATGTCAGTCGGTTGGAAGCA
+AAATTGCAGTCCTCCCTTCGGTAGGGTTCGACCCTATAATGAGCAACAGAACTGAAGCCT
+ACACCGACGGAAAAGTTACTTTTCTGATTGAGAGTTCAGGCACTGATGTCTGGTTACTCG
+CCAAGAATGGGACCAAAGAATTTATTGAGTTGTCTGATCTGAATCTCGGCGGGAGTCGTT
+GCACCTATTCGTCACGTGGAAAACAGTTGATATCACCTAGTTCAGTTACAATTTTTACGG
+TGCCCACAGTTGGTTTACTTGGTCTTTGTTACGATAACAATGACCAATTAACATTTATTA
+ATAACTCATTTAAGAACATCTCACAGTCTTCACGAGATGGACTCACATTGCCATTACTGT
+TCAGTATTAAATATAAATTCCCAGGTTCATTTGATTCCAAACAAATTGTAGTCACTCAAT
+CATTTGATTTAGAATTTTTGCAAAAGGAGCAATCATGAAATATATATTGACCGTTTTGTG
+TATTTTTTTCTGCCAGACTGCAAGTGCTTACCCTTATCGCATTTACACTGCCCCAGAAGG
+TGCAATTGTGAAAAATATACTTACTAATGAAGTGATCGGGAAAACACCGGTTGAAGTTGA
+TGTCAGCAATACTGAAGCTGGATCAACTTTCGGAATTTCAATGTATCGTCATGAGAATGT
+AGCTATTAAAATTTTCACAGTAATGCCAAATGCAGAAAATAATTTTACTGTTTCTGGTCC
+AGACGTTGCCACTATGTCTTTACCGGGTAAGGCCCCGTTAAACGTGACCAATGACAGTAA
+TGCAGCAGCGGTTCATATAGATCTAAGACCTTTTCTGTCTGAACCGGCCCATCACCCTGT
+TCAATAACACTTCTAGGCCCCAATCTTTGGGGCCTGCTTAACAATACCGTATATGTTAAA
+ACCCATCATTATCAGATAGTTAAGATATTTTTGCTATTGATTTCTTTTAGGACTTGGTAA
+TGCGTAGACTAAATAAAAGCGTACATGAATAATTTCATCCGCATCTAATGATGCGGATAT
+TTTTTGATTTTAATTATTCATTTCGCTCAGTTTTGATTTTATAAACTTCTCAATTTCGTC
+AATTAATTCTCGGTTCATTCTATTAAACTCAAAACGGATTTTACGCCCCGAGGAACTTTT
+GCTAATTCTTGCATATTTATCTTTATTAGTAAAAGTTGCCAATTCACGTGTATCCCAACC
+TTTGCTAGGTGGTTTAATATCAAGTTTTTCAACTACCGTTGTAATCTTCTCCATTACGGT
+TTTCTGTGCTTCAGCAATATCAGAAATATCCAGATCTCGAATTTCCTCACGTGTATTCTC
+AACAACTTCTTCAAGAGAAAATAAATTCTTCTCTATATATTTTTGAAGTCGGAATAGGCG
+ATTGTAATAAGAATTCGGAATAGCTTCATAGTCAGGAAACAGTGCAATAAGAGTGCTGTT
+AATCTTTGCAGCCTGAACTCGCTTAGAGACGGACACGTGACTGATACCATGATAGTTTGC
+AAGCTCTTCATTGGTAACAAATCCATGCTCTTCCATTTCCCTTAAATACTTTAAACCTAC
+TTCACGATATGAAAAGCGTCGAGAAGTTTGTGTTGCTGATATGATGGAATTAATATCATC
+TGCGTTAACATCATCAGGCAAAACCCATAATGGCAATTCTTTTGCTGATTGAATGCAACA
+GAAACGCCTGCGGCTACCTTCTATTAGCAGATACACTCCGTTCCGCTTAACTGCAACGCC
+CTCAGTATCAACACCTCTTGCTTCAATGTCCTTCAGAATATCTCTTACTGCATTTACAGA
+AAGAGCCTCCTGATTTCGTGGGTTCAGAGGGTGTACTGTGGTTTCCAGTTCCACCTTTTC
+CGCCGGAACAATGATGTGTTCCGCCTCAAGCTTCCGCCCATTGTGTAATGTAAAAAGTTT
+CTTCAGGCGTGGCTGACCTTTCAGGCCTTGAAGCCCGGAGCGATGGATTACTTCAGTACG
+CTTAGGCGCATTAATATAACGGGATTTGTCGTTCCCGATATGCTGCTCATCACTCATACA
+TTACCCCCTTGCTTCACTGAAAAACTCTTAATCTCATTAATAAATTGCTGGTAGACCGCC
+ATCACGGATTCTTCGGCAACATCAAGCTGTTTGGGAGAGCAGAGCTCTTCTGATTTTTTG
+ATATCCAATACGGTTCTACCCCTAGAAGCTGCGGCTTTAAACGCTTCTGAGTTTTTGATA
+TTTGCAGACATAAAGAGTTCCTGCACTGTCCTTACCAGTTTATCCAGGACAATCTTTTCA
+TAGGGACTCTTATCGTCGACATTCACTGCCAACACTTTGAACCAGCTTAGATTTTCGCCC
+TTGCTCGGCGATTGTTTGAATCGCTCACTGATCGTCAACATGAAATCAGTTGTTGAGGCA
+TAATCATACTCACGAGGTGAAACGGCAACCAAAATGCCATCAGCAGCTTCATCCGCTGCC
+CATGTGATTGGCGAATCTTCTGGTGGAGTATCGATAATGATCAGGTCGTACTTGCTCTTC
+AAGACCGGCAGGATTACCTCTTTAAAACGTAGTAATAACTCAGTTCGTTCTTCTCTGGAA
+CACTGCCAGTATTTATCTTTGAAACGTGCATCTGTAGGGAATGCGGTAATAACATCAAGA
+TTCGGAAGGTGTGTTGAAAAAGGCATACCTTCAATAATTTGTTCTTCCGAGTACCCTAAA
+TCAAGATATTTTCTGTAATCTGAGTCTTCTTCGTAAACCCCTAAGATGGCGTCAATAGCA
+GTCAGGAAAACATCATCTTCCGCTACGCTCTGGATCATCCCGCTTCCAATAGACCCTTGT
+GGGTCCCATTCGATCAACAGTATCCGCGCGTTTAGATGCAAATCAAGTGCTGCCGCAACT
+GCAAGAACGCCTGAAGTTGTACTCTTCCCCGTACCACCCTTATGGTTCTGCGTTACGATT
+GTACGGCTACAGTAGTAGTCGCTATATCGAGGATAGTTCAGAGCATCCATTATTTTCTGG
+ACATCCCAGCGGGTATAGAGATGGTTTTTGTTCTGGTAGATAGGAGCACCAACCAGTTCT
+TTTTCTTCAAGATCCGCTAAGATTTTGTTAAAAGTTACGCGAGATTTACCAAAAAAATCT
+GACAGATTTTTTTTATTCAAGCAGTGGTTATAGATTAGGCGATCAACACCGTCTACACTA
+TCATCCGATACCGAAACCCTCGAAGAGACCAATAATGACTCTTTCAGAGAGATCTGCTCG
+CTCTTCATGCGTTGACCGACAAGGGCGATCTTATCAATTAGATTCATTCTCTTCCGATCC
+CTTTTACCTAAATAGTGAAATTAAACGTATATACGTAAACTTTACGCATAATGCGTATAC
+TTTAGCGTTATGCGTTTAATAGTAACCTTAATTCTATTATTACGCTAACGTTCTGTATTC
+TTTTCTTAGATTTTGGAATATCTGCATTATTGAATTTCAATTGGCAGTTCATTGAAGTCT
+TCCAAAAGCCTCTTAAGTATCAACAATACCAATCTTCCGACATAGCAGGATCACTCCATA
+GATGTGGCAATAAGGGGGGTAAATCCCACGGTACCCGACCAGCATTACCCCATAGCCTGG
+CGATTAAGGGGGTTAAATGCCATGGTACGAGACCAGCATTCCTCCATGGCCTGGCGATTA
+AGGAGGTTAAATGCCACGCTACGCGACCTGCTTCTCCATGGCCTGGCGATTAAGGGGGTT
+AAATGCCACACTACGCGACCTGCTTCCCCATAGTCTGGCGATTAAGGGGGTTAAATGCCA
+CGCTACGAGACCAGCTTCCCCATAGCCTGGCGATTAAAGGATTAAATGCCACGCTACGCG
+ACCAGCCTCCCCATGGCCTGGCGATTAAGGGGGTTAAATGCCACGGGACACGACCAGCTT
+TCCTCCATGGTCTGGCGATTAAGGGGGTTAAATT
+>NODE_6_length_50434_cov_42.3615':NODE_43_length_220_cov_211.224';
+AATTTAACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGTCGTGTCCCGTGGCATTTA
+ACCCCCTTAATCGCCAGGCCATGGGGAGGCTGGTCGCGTAGCGTGGCATTTAATCCTTTA
+ATCGCCAGGCTATGGGGAAGCTGGTCTCGTAGCGTGGCATTTAACCCCCTTAATCGCCAG
+ACTATGGGGAAGCAGGTCGCGTAGTGTGGCATTTAACCCCCTTAATCGCCAGGCCATGGA
+GAAGCAGGTCGCGTAGCGTGGCATTTAACCTCCTTAATCGCCAGGCCATGGAGGAATGCT
+GGTCTCGTACCATGGCATTTAACCCCCTTAATCGCCAGGCTATGGGGTAATGCTGGTCGG
+GTACCGTGGGATTTACCCCCCTTATTGCCACATCTATGGAGTGATCCTGCTATGTCGGAA
+GATTGGTATTGTTGATACTTAAGAGGCTTTTGGAAGACTTCAATGAACTGCCAATTGAAA
+TTCAATAATGCAGATATTCCAAAATCTAAGAAAAGAATACAGAACGTTAGCGTAATAATA
+GAATTAAGGTTACTATTAAACGCATAACGCTAAAGTATACGCATTATGCGTAAAGTTTAC
+GTATATACGTTTAATTTCACTATTTAGGTAAAAGGGATCGGAAGAGAATGAATCTAATTG
+ATAAGATCGCCCTTGTCGGTCAACGCATGAAGAGCGAGCAGATCTCTCTGAAAGAGTCAT
+TATTGGTCTCTTCGAGGGTTTCGGTATCGGATGATAGTGTAGACGGTGTTGATCGCCTAA
+TCTATAACCACTGCTTGAATAAAAAAAATCTGTCAGATTTTTTTGGTAAATCTCGCGTAA
+CTTTTAACAAAATCTTAGCGGATCTTGAAGAAAAAGAACTGGTTGGTGCTCCTATCTACC
+AGAACAAAAACCATCTCTATACCCGCTGGGATGTCCAGAAAATAATGGATGCTCTGAACT
+ATCCTCGATATAGCGACTACTACTGTAGCCGTACAATCGTAACGCAGAACCATAAGGGTG
+GTACGGGGAAGAGTACAACTTCAGGCGTTCTTGCAGTTGCGGCAGCACTTGATTTGCATC
+TAAACGCGCGGATACTGTTGATCGAATGGGACCCACAAGGGTCTATTGGAAGCGGGATGA
+TCCAGAGCGTAGCGGAAGATGATGTTTTCCTGACTGCTATTGACGCCATCTTAGGGGTTT
+ACGAAGAAGACTCAGATTACAGAAAATATCTTGATTTAGGGTACTCGGAAGAACAAATTA
+TTGAAGGTATGCCTTTTTCAACACACCTTCCGAATCTTGATGTTATTACCGCATTCCCTA
+CAGATGCACGTTTCAAAGATAAATACTGGCAGTGTTCCAGAGAAGAACGAACTGAGTTAT
+TACTACGTTTTAAAGAGGTAATCCTGCCGGTCTTGAAGAGCAAGTACGACCTGATCATTA
+TCGATACTCCACCAGAAGATTCGCCAATCACATGGGCAGCGGATGAAGCTGCTGATGGCA
+TTTTGGTTGCCGTTTCACCTCGTGAGTATGATTATGCCTCAACAACTGATTTCATGTTGA
+CGATCAGTGAGCGATTCAAACAATCGCCGAGCAAGGGCGAAAATCTAAGCTGGTTCAAAG
+TGTTGGCAGTGAATGTCGACGATAAGAGTCCCTATGAAAAGATTGTCCTGGATAAACTGG
+TAAGGACAGTGCAGGAACTCTTTATGTCTGCAAATATCAAAAACTCAGAAGCGTTTAAAG
+CCGCAGCTTCTAGGGGTAGAACCGTATTGGATATCAAAAAATCAGAAGAGCTCTGCTCTC
+CCAAACAGCTTGATGTTGCCGAAGAATCCGTGATGGCGGTCTACCAGCAATTTATTAATG
+AGATTAAGAGTTTTTCAGTGAAGCAAGGGGGTAATGTATGAGTGATGAGCAGCATATCGG
+GAACGACAAATCCCGTTATATTAATGCGCCTAAGCGTACTGAAGTAATCCATCGCTCCGG
+GCTTCAAGGCCTGAAAGGTCAGCCACGCCTGAAGAAACTTTTTACATTACACAATGGGCG
+GAAGCTTGAGGCGGAACACATCATTGTTCCGGCGGAAAAGGTGGAACTGGAAACCACAGT
+ACACCCTCTGAACCCACGAAATCAGGAGGCTCTTTCTGTAAATGCAGTAAGAGATATTCT
+GAAGGACATTGAAGCAAGAGGTGTTGATACTGAGGGCGTTGCAGTTAAGCGGAACGGAGT
+GTATCTGCTAATAGAAGGTAGCCGCAGGCGTTTCTGTTGCATTCAATCAGCAAAAGAATT
+GCCATTATGGGTTTTGCCTGATGATGTTAACGCAGATGATATTAATTCCATCATATCAGC
+AACACAAACTTCTCGACGCTTTTCATATCGTGAAGTAGGTTTAAAGTATTTAAGGGAAAT
+GGAAGAGCATGGATTTGTTACCAATGAAGAGCTTGCAAACTATCATGGTATCAGTCACGT
+GTCCGTCTCTAAGCGAGTTCAGGCTGCAAAGATTAACAGCACTCTTATTGCACTGTTTCC
+TGACTATGAAGCTATTCCGAATTCTTATTACAATCGCCTATTCCGACTTCAAAAATATAT
+AGAGAAGAATTTATTTTCTCTTGAAGAAGTTGTTGAGAATACACGTGAGGAAATTCGAGA
+TCTGGATATTTCTGATATTGCTGAAGCACAGAAAACCGTAATGGAGAAGATTACAACGGT
+AGTTGAAAAACTTGATATTAAACCACCTAGCAAAGGTTGGGATACACGTGAATTGGCAAC
+TTTTACTAATAAAGATAAATATGCAAGAATTAGCAAAAGTTCCTCGGGGCGTAAAATCCG
+TTTTGAGTTTAATAGAATGAACCGAGAATTAATTGACGAAATTGAGAAGTTTATAAAATC
+AAAACTGAGCGAAATGAATAATTAAAATCAAAAAATATCCGCATCATTAGATGCGGATGA
+AATTATTCATGTACGCTTTTATTTAGTCTACGCATTACCAAGTCCTAAAAGAAATCAATA
+GCAAAAATATCTTAACTATCTGATAATGATGGGTTTTAACATATACGGTATTGTTAAGCA
+GGCCCCAAAGATTGGGGCCTAGAAGTGTTATTGAACAGGGTGATGGGCCGGTTCAGACAG
+AAAAGGTCTTAGATCTATATGAACCGCTGCTGCATTACTGTCATTGGTCACGTTTAACGG
+GGCCTTACCCGGTAAAGACATAGTGGCAACGTCTGGACCAGAAACAGTAAAATTATTTTC
+TGCATTTGGCATTACTGTGAAAATTTTAATAGCTACATTCTCATGACGATACATTGAAAT
+TCCGAAAGTTGATCCAGCTTCAGTATTGCTGACATCAACTTCAACCGGTGTTTTCCCGAT
+CACTTCATTAGTAAGTATATTTTTCACAATTGCACCTTCTGGGGCAGTGTAAATGCGATA
+AGGGTAAGCACTTGCAGTCTGGCAGAAAAAAATACACAAAACGGTCAATATATATTTCAT
+GATTGCTCCTTTTGCAAAAATTCTAAATCAAATGATTGAGTGACTACAATTTGTTTGGAA
+TCAAATGAACCTGGGAATTTATATTTAATACTGAACAGTAATGGCAATGTGAGTCCATCT
+CGTGAAGACTGTGAGATGTTCTTAAATGAGTTATTAATAAATGTTAATTGGTCATTGTTA
+TCGTAACAAAGACCAAGTAAACCAACTGTGGGCACCGTAAAAATTGTAACTGAACTAGGT
+GATATCAACTGTTTTCCACGTGACGAATAGGTGCAACGACTCCCGCCGAGATTCAGATCA
+GACAACTCAATAAATTCTTTGGTCCCATTCTTGGCGAGTAACCAGACATCAGTGCCTGAA
+CTCTCAATCAGAAAAGTAACTTTTCCGTCGGTGTAGGCTTCAGTTCTGTTGCTCATTATA
+GGGTCGAACCCTACCGAAGGGAGGACTGCAATTTTGCTTCCAACCGACTGACATCCAGTC
+ACAAGTAAGGTAAGAATAAATGCTGAAACTTTAATCATTTTCAGTCCTCATAGTCGTTTT
+CTGTATGGTACTGATATCGAAGTTTTCTCCTGGGTAAATTTTCAACTCTTTGGTGAAATA
+ATCTGAACCACCGAGGAGGTTGTTACGCTTTCCAACCCAAACGAACGACGAAAATTTAAA
+AGTCCTTACTTTTTCTGCCGCTCTGATCTTGTAGGTATGTGAAGGTAATAAAGATGCACT
+AGCGTCCTCCGGGATTGCGATAGCGGGTTGAAGTTTTTTGGGGGCATTGATACGTAATGC
+GATTTCTGGAGAGGGGACATAGTCGATTGACGATTGTTGTGAATCTGACGGTAGGGGCAG
+GGTGAATTTTTTACCCTGATCTGGGCCAAAAATGGCAATAACCTCTTTTTTCTGCTTTGT
+TACGGACACTAACGCCTGTAACGGGGTACTGGATAGATCATTGACGAATGAAATTGTCAT
+GCTGGAACCAGGTTCTAACCAGAGAATTCGTTTCCCGGATGCATCTTCATCAAGGGAGAT
+AAATTTTGATATAAACACGCCATTTTTTGCAATGATGGAAAATTCAATTTTGGGTATTAC
+AAGATTTAAAGGAGTTGAAGCAGAGTCGTTTTCAATCTGAAGATAGTTACGCTTAGTCAT
+GCTTGTTTTAATTACTGGTCTTTGTCGACCATCAACAAGCCACATTCCGTTGACGTAATT
+TGCAGCAATAGTAATAAATTCATAGTTAACCCCAGTTTTGGCATCAGATAGCTGGGACGA
+CGGTATCGGGGTTTTAGTCGATGCATTTGTAATGTTGGATGGACCTAAAAATGCCAGCAA
+CGGCAAAATTATCAGTTCTAATTTAAGCATTATAATGTGGCCTCTATATTATTATCATTT
+GAATCCAGGTTAAGTGGTGCAGTGTTTTGTGTGTAAATACCGTTTTTATTCAGGATCATT
+TGGTGGCAAATCAGGGTCGGTGTAGATGCCAGGATCAACTCGACCAGTGTTATTGCCGGA
+ACTGTAGTAGGCGGAATACCTGGTGCCAGTAGTGCTGGGCTACTGATTTCTGACATGTAC
+AGAGAACCTGTATTGATGTGGAGGCAGTTTCCTATGAGTACCGGTAAGTTAGTCAGCGGT
+AGCCCATGGGCCTTTCTGATGCTGTTAACTGGATTCCGACCCAATACTACGAGGTTTACA
+TCGCTGACATTCACTGGCCTGACTGCGTGATCCATGCCGTATAGAAACTGACTCTGAAAA
+ATATTCACATTTGCCTGATTAAAAGCGAGGAGGGCGTTATATGTATTGTTGAAGCCCTGC
+CGTATGTCTGTGTAATCGGATGGGCAAATACCTATAGAAATATTGCCTTTAAAAAGCACC
+TTCATCACAGTAGCCAGCTGGGTGGAGAGCAGTTTGCAGATTTCCTCTTCAAGATAGTTG
+CGGTTAATTTGTTTATGCCATCGCCCGCCTCTTGCACACCACCGTTCATTAAGAAATGTG
+CTTGGATAATAAGTCCTGCGGTCTTTATTTATGGGTAAGAGCTTTTTCAGCATCTCTTCT
+CCGGCCCCGGCAGCTGAGAACACACGAACAGAACGGCCGTCAAAAATCCCTGTGTTGATC
+GCTGTCATTAACTCCATAGGCTCAGGTCCATAATCGAAGAGATTTCCTGTGGAGAAAACG
+ATCAACTCCTCATCAGGTTCTGATATCGAATGGATAAGGTTACATAGCGTCGAATAATGA
+CCATGAGGGTCTGCCAGAAAGAAAACCCTTCCTGAAAAATTAGTCAGATCAATTGTCTGG
+ACGTGCTCGGATGCCATAAATGCCTCTTTCTGAAATTGCATTAATACTACCGGATGAAAG
+TCATCAATTTTTTCGATAAGAGGGGTAATTTTTGTGAGTGTCCAAAATGGAGCTAGAAAT
+CATTTTTCGGTTTCCGAGCCGTATCAACTGTAATGCACCTCAGTTGTTTTATTTTTGGTA
+TAAAAACGCTGAGCAAAATATAGTTTTTGCGTGTGTTGCTCAGGTGTACATGAATCTAGG
+GTTGCATCTGGATTAAAACTGAAGGATTCTTTTTTAACAAGGACTTACGTTAGTGTTTTG
+TCCCGTTTAATGTTGACCTAAAGCAACCATTGGTGTATAAATTCCATAACAAAAGTGGTG
+GGCTAAATAAACCAATACGAGGGTTTCTGCATGACTGAATTAGCAAAAACAAAACTGGCT
+GTGGCTGAATCAAACTCTACTGAACTTGAGACACTCAAAGTTGTTATTGATGATGGTAGT
+AAAGCGGCAAAACTGGTTTGCACTAACAATCAAGGTGACCTTGTACCTTTATTGACTCAA
+AATAGTTTCGTTGCAGATTTCCGGGTAAGCCATGACGGACTTATTCCATTCAATTATCTA
+ATTGATGGTCTTCAACGATTCTCGCACCACAGCGAATCAAGCAATGCTTTAGAAACTACC
+GACGTTGCGCATCAGTACGATGAAATCAGTCGTCTTAATGTTCACCATGCTCTACATTCC
+TCAGGTCTAATGCCACAGGATGTTCATCTCTACGTAACTTTGCCACTCAGTCAGTTTTAT
+ACCGCTCTGGGTGAAACCAATAATGAAAACATCCAACGAAAAAAAGACAACCTGATGAAG
+CCGGTGGAGCGTTATATTGATGGTAAACGTGTTTCATTTAATGTTGTTTCAGTTACCGTT
+TTCCCGGAATCCCTTCCAGCGGTAACGCGTGCTGATGAAATCGAATCAATTGAATCTTTT
+GAATCAAGCCTGGTTATCGATTTAGGTGGGACAACACTTGATGTTGCAAGCATTACAGGT
+CAGCTGGAACAGATCTCCAGTGTCAGGGGTTTTGACCGTATTGGTTGCTCAATCGTATAT
+GATGAAATCCGTCGTTATTTGGATTCTGCAAAGCTGAATGCAAGTAACGCCTATATTCAT
+CACCTAGTCGATAATCGTGAAAACAAAGCCTCGCTCAAGGTGTCCCCGGAAGATCTTGAC
+GGCGTGTTCAATGCTGTTAATGGGGCTGTGGCGCAACTTCAAGAAAAAGTGATTAAAGCA
+GTCACTCAAGTGGAAGAACGGCCGCATAATGTTTTCCTTGTTGGTGGAGGTTCTTACCTG
+ATTGAACCGGCAGTTCGTAAACATTTTGACAAATCGAAAATCATCATGGTTGATAATCCG
+CAATTCGCACTTTCACTGGCTATCGCAGATACTGTTTTTGCATGATGATGGTTTTGCATG
+ATGATGGTTTTGCAAAGGGGAGAGTTTTATGACTAAAAAATCTGAGAAGGAAAACGATCG
+TATTCAGATTAGTGCGTTTTGGTTATCGGAACGACAATCTCCGTATGCATATAATTTTTT
+GAAAAAAAATTCCCTAACACATCGTGGCGAGCAGATTTCTCTAATAAGATCTGCAATCAC
+TACGGGGTTAGTGCTAAATAATCTCTTCCCCGAGTTATCTAGTTTTATTAATGGACTGAA
+TGAGAGATTAACAGCTGCTGATCTAAATCGATTTTTTAATGATGAATTTAATAAAGACAA
+ATTAAACAATGAAAATTTGAAAGAACAAATAAGCTTTATGCTTGATTCGAAATTCAATGA
+ATTATTTTCAATGATTAATGGCTGTGATTTTTCTAAGGCAACTTTTTCAACTACTAGTCA
+ATCTGATGTCAGTGAAACATTAAAGGCAGAGAGGGTAAGGGATCAGCGGCTGGAATTAAT
+ACCTAAAGAACTGACTGTAAATCCCAAACCTGAGACTTTAGAGATTTTAACGCCGATTGA
+GAGCGCAAAAAAGAATGATTCAGGTTTAAATACTAGTCATGGTTCTGCTGCTGTTAGCGC
+CTCACAAAGCGAAAACACGGTGCTGAGTGAACATGCGCAAATCCAAGGTGTGACAAGGAA
+GCCGAAGAAAAAGGCCAATGCAAACCTCGCAAATCTTGCGAAGTAAGTATAGTAATATCA
+ATTGATTAGATTGAGTTATCTATTAATAAAAAGTCAGCTTACCAGCTGGCTTTTTTTTGG
+TATATTATTAACAGGTGAGGGGGAATGGTAAACCGGTTTCATGTACTAAATGAATCCCTC
+GTTGTCACATCTCCAGTTAAGCCAGTTTGAAGAATTATAGAGCCAGTTCTAAGAAATCAT
+TAAAATTCGCGTGGGTTGATTCAGGTCGAACCAGTTACGATTTTGGATAAATTAATTTTG
+GTTAGGTAAACCACTAAAAAAAGGTGGTTTAGGCCCCGTTTACTGTTCTTTGTTTGCACG
+ATGTATGTATAGGTGTTAAAACGGGTACAGATTTTTCCTAAAGTATTGGCTGAGATAGGA
+AATATCTTAATAAAATTGGTACTTATTTATTATTTTATGTAAAAAATCTCTATGCTTTAC
+TGGTTAAGTTAGATTTTTTTGTTACCCTAACCCATAAGATCTTAATGGTTACTACGCTGC
+AAGCGGGAAGATGGTAAGGAACTAGCGGGATCATGTGTAACTATCTGATTATTATAATAA
+AGGCTGACTGAATGTTATCACGCAACTCACTAATACACGGTTTACGTCGAGATCAGTTAA
+TCGAAGTTCTGTCTATTTCTGAATTCCCAGTTGTCCTGGTCGAGAATCCCTTCATTCAGC
+CTAAATCAACAGGCAAAAAACCAGTCATTTTTAATATTGATGAATTTCATGTTTCCATTG
+CCCCAATTTCATCGCTTAAGTACGACTGGGAGTGGGCTCCAATTGATACAATACTCATCG
+AAGTGGTCATTCCGCCTGCTGAAGCAGACCTGGTAAGCGCCGAGAATGATTTCCTTCGCG
+ATGCAGGTATTGGCCATATTCAATGCGAGCCTGGAGGCGTTTCGATACGCCGTACAGTGA
+CATTTGTTGGGGGGATCACCGCCGACAATTTGCTGTATCAACTCAGGCTTATGTGCGTAA
+GTGCTTTACACTTGATTGGAGAGGAACTGGAGGATGAAAGTTAATTTTAAAAAGGTAATC
+CCCCTTTTAATGGTTGGTTTAACAGTGGCGGGGTCTTACTCGATCTTTAACGCAAAACCG
+TCGAAGCCTGACTTGTACGATTTTACTGGCAAAGTTCTTAAAACCACTTCTGTTTTCCAA
+CCTTGTGATAAAGAATCCACACCTTCGTTGAACATCCAGATAGCAGATAACGGAAGCGTA
+CATATCAATGGCGTTGCATCAAAAGTTACTTTTGTTGAGAGAGTTCCGGGTAATGAAATT
+GCAGTTAAGTGTACGGGTCTGCAAGTCAAAAATTCCCGCCTTGTGCATACGAGCTCTTAC
+ACCATGATAATTTCGGAAGGAAAAGGTGGTTTTGTTATTTCGGATTTGACGCACACGAAG
+GATAATGAAGTTATGTCCGGTACATGGTTCTTTAAGAAGAGAGTATGACAATGAGCGATC
+TGTCAGCAACTGGTGCGAAGCCTCAACGGGTCAGAGTATTCAGCCAATCTGTCGCGATGG
+CATTCGAAGTAAATCTCGACAAAAGTCGCTCTGCTGATAATTCGGCGTTTGTAACTGAGA
+CTGAAAAGTATTACCTGTCTCTCCAGTTTGCTCCTCCGTCTGACAATAGGGAATATGGAT
+GGAATTCAGAGGGCAGCATTCTCATGAAACTATCCCAAAACGAAGCCATGGCGCTGGCAT
+CTGTTTTTCTGAGAATTAAGCCGACACTAAAATTTGAAAAGCGTAAGACCACGCATCGCA
+CTCACCAAGCCTACAAAAATATCAATATCGGCCCCAACGACCGTGGGGGCCTTTTGGTAA
+GCGCAAGCATTGTACCGGTTAAAATGGGGACGTTTAAGCCTTTAAATTATAACCTTCCCG
+TAACACAAATGGATTGCGTTTCAACAGGCTTGTTCTTGTTGGGGTTCCTGACACTTAAAA
+TGCCTTGGGTATCCTCAGAATCGATAATTACCGCCCTTCGCCTATCTGAGTCTAAGAGCG
+GTCAGTGAGCTAAAAAACCTCAATTTCCTGCAAAAATTTAATGTTTTTTTTCCTCTTTAC
+GAACAAGATTTCAGAATTTTTTAACGTAGAGTGATTCTAATTCTGCGTAAAAAAACAGGT
+GTTCGTCATGAGAAAATCAGGTTTATGTTTAACCCTGTTGTTTTCTTTAATTGCTTCGAT
+TAAATCGGTACAAGCTGAGGCAATTATGATTTCCGGAAAACTCCAGGCTGATATGCCTGC
+CGTCACGTTTAATCCCGGCCCGGGCGATTTTGTTGCATTCGTCAACAATAATACAATTAC
+TGCTTCAGGTACTGGCAACGCATGCAATGTGACGGTTGATGATCGTGCGACATCAAGCGT
+AGATAACTTGGTCTGCTTTTTTGAATGGCTTCCAAATACCTCTGGCTTTACAGCAAACGG
+ATTCAATTTAACAGGGATACCCAATGCGGCAGGAGAACTAAAACTGCCGTATAAAATTTC
+TTATTTTTCTGGATCAGAAAGGCAGAAAGTAGAAGTGGTTAATGGGGAGTATACAGTTAA
+TGCTCTTGTACCGGTTAAACCGACGATAACGGGCCTGAAATCGTCTATGAATGGAGTGGT
+TCAGGATGGTTACACTCTTAAATCCTATCTTAAGGATGAAGCAATTAGGAATGTCACTGT
+CTCCGTAGAGCCTCGCAATTATGTGCAATATATCTCTATCGGGTCTGGATCAGCTTGCGA
+AGTCGCAATTGGTGGGAATGGCTGCACGATCGATGTTGGAAGCATCAAAGTAAGTGATTC
+GGATTTGCTGATGGGTTCACGGGAAATCACGGTCACTGCCAATTCGAAAAATAATTACTT
+TGCCCCTCCTGAAGCGCAGAAGCTAACGCTGACCTGGGATTACCGTCCTCCTGTTGTTGA
+CCATACTCTCTGGAATTTCACGGATGAAGCTAAAACAATAAGTGTTGGTGGACAGGAGAT
+CTATACAGGAGCTAGAACGGTGGCCGTAGCCGTCAAAGTGCCTCAGGAAGGAACTGAGGG
+TGAGTGGTGGTTACCAACCGCTATGACGCTAACGATGAATCCTGATGGGGTGTTTAAGCC
+GACAACAAAAGTTACTTTAGAAGATGGTACGGTTATCGACTTTAAGCAATCCTGGGCAAC
+ACCGCTACGTCGTACTCTTCAGCCCGTGAGCGGGCCACAGAAAGTCGGCGATGAATATCT
+GTATATCTTTGACTTAACAGACTTGACGAATGGTTCTTATGCCGCCTCGTTCACGGTAGA
+GAACAATAGCAAGAATACCTCTACGTACAATGAGCCTGAAAGCAAACTGATGCTTTCTGA
+TAACCCAACACTGATGGTGCTTAAGGACGGTGCAGCTCTGGCCAAACGAGCTCCTGTGTA
+TTTCTTAAATGAAATTATTGTTGCCGCATTCCAGGGCCAGGCCGGAGTCGCGGATATTAA
+AGCTGTTACGATAGATAACAAACTTGTTGAGCTCACCCCCACGAACCACAAAGGCATTTA
+TTATCTGCCGGTTGGGGATGATCTAGAAGTGAATGCTGACCATGAAATCACGGTCATAGC
+TGAAAACCTGTACGGCAAGATTGTGACATTTAATACTACTTTCACGTATCAACCAACAGG
+ATTCACGCTTAAAAACTTTGAGAAAGACATCACATTGTACTCACGAGTTCGGCAGTATAC
+CGATCTCATGAGTCAGACGGCCGGTGATAAATGCACTCTCTTTACTACAGAAGAGAACGC
+ACTGGCATACCTTGAATGGTATGGTGACAAATCTGATATCACCGCCTGTTACCCTCAGTG
+GAACAATGTGCCTGACGGGCTTGAATTTTACTTTAAAGGTCGGACGCCAGGCCTGACAGG
+GTTCTTCAATAAAACAGGCGATAACCTGCTCGACTATCAGGTCTATATGATAAACGGCAA
+GGGCTCTAAAGCTGTATCGTCCAGAAACCGCCATGTGCTGATTACGCAGTTACCTTATAA
+CCCGGTCCTTACCTACAAGAAAAACAAGGTGTTGACGGGGATTAACGATAACACCGCACT
+GGCGTATACCACTGGCGGGGAAGCAGCTCGTCTATTGGCAAAAGTGGTTCCTGCTGATGT
+GACAGTCTATGTTTCACAAAACGGGGGGGAAAGCGTAAAAACGACGTTTAAGAACCGTTC
+ATCAAATAACGATGCAACGACGTTTGTTCAACGTCTTAAAGTGGCATCAGCCCCGTTGTG
+GACGAAGAATGTCTTCGACATAGCTGTCGAGTACTCGAAGGAACCGACTATGCGAACCGT
+TGATACGCTCAATGTGTATACGGTACCCGACTTTAACATTAGAGCGGCAATGGAAATTGA
+GGACAAAAAGACTGCTACCACGATGGAATTGCCATTGAAGGTGTCTGTTGGCCGCTATAA
+CAATTCAACCCGCAAAAGTTCATTTAGTCGGACAACAATGGGGGACTGGGATGTAACCAT
+TTACGCTCAGAAAAGTGTTTATGGAAAAGATCCAGAAACAGGCCGATATAAAACGACGTA
+TGAACGTACACCCCTAACCGAAGCACTGCCCGTGAATGATGCCGGGGTGGTTGAAACCAA
+GATCAAGATAGAAAATATGGACCTCGGGAACGTGCGACTTGTCGGGATTGCTAAAGTACG
+ATCGCCTTTCGCAGATTTCGAACTGACCCGGGAAACCAGTGCAGTTAGCATCCGTGTTTA
+TAAGGGCGAAGAGCTAGAAGGTAATCTCTCAAAGAGTCTGATTATCGGACGTATCCCGCT
+CAGTACGCTTGTTAACTTCAAATCGGCCAGTACAGCTAACTCCGATGCGCTGGCGCCTAC
+CGAGTGGCAGGAGTCTTCTGATAATGGACAGACATGGACTATGCTTCAGGACATGACAGG
+GAAGCGAAGCATTTCGATCAGGAAAACTGAGGTTGGTAAATGGCTTTACAGGGCAAAAAT
+GACCAACAAGTTTACGTCGAAAGAGTCTTATAGCGACGTTCTGACGGTTGTAACGTACAA
+ACAGCCTAAGCTGAGCATCGATGTTGCTGAAATTCTCGAAGGCGATGATTTGCCTGTCAC
+GCTGCTGGATAACGATGAACCAATTCCGCAGGGTACGGCCGAAGTGATGTGGTCGGAGGA
+TAAAGTGAATTGGGTTCAGGGTGACACTACCTATAACGTATCGGCCGCTGATACGCTACC
+TCCGACCATTTACGCCCGAATGCGTTACCTGGATTCTGATGAGTTGGCTGAAGAGTCATC
+CTGGAAAGAGACGTCTGCCCGGTTAACCGTCGCTAAACCCAAGCGCCTATCTGTTTCAGT
+AAGTGGTATTTCAAGCGTCGAGGTGGGAAGTAAAGTTACTTTAGATGGTAAATACACTAA
+CCCGAACAGCCGATTCAAGAACGGAAATGACGTCATTGAAGAATGGACTGCCCCTGACGG
+ACAAAAAATCAGAGGTGCGAATCTGTCGATAACTTTGACTGAGCAGATGCTGGATAAGCA
+AGGATATGCGGCATTTGAATACAGTGCATGGCTTGCTGACAGTAAGGACAGTACTATTTC
+CACGCGGAAAGTATCTGTTAAATCTTGGGTGTATAAGTTTCCTGAGATGAAAGTCAGTAC
+AAAGCTTAAATACACCATGGCCCCGTCGACCTTACATGTTGCGCTGAGCGGAATAAAAGA
+CGGTGGCTATCCTGGGGTAACTTATTCTCGGGAATGGATCTACGATAAGGACAATATCTC
+AGTTTTAAAAGATGATGGTGATACGAAAGAATTTGCAATTGCGAAGCCGGGGAAATATAC
+GTTGGTAATCGTTTTCCGTGATAACCGTAACAACGAACAGCGTATTGAAAATACCTTCGT
+AGTCGATGAGCAAACGCCCATGACTGTAGAAATGACACCGAAATTCTCTAATAAGTTCAT
+GAGGGCGCCTCTTGATGTCACGCTAAGATCTAACATTAAACTGGCGCACTCTGCTGACAG
+TATTGATACTGTGACATACAAAGTAAACGGCGAGGTTGTTCCTGGTAGTAAAAACTATTG
+GGCTCAGTTAATTTCTGGTCTTACTGAGAAGAAATACGAAGTCACGCTGGATGTTGTCAG
+TAAAATGGGCCAAAGAGGTACCGCATCAGTTGATTTTGAGGTTGTTAAAAACGCGGCTCC
+GCAATGTGCATTAAGCTACACAGAGTCTAATATGAGCTGGAGTTTCACAAACAAATGTAT
+TGACACTGATGGCAAGCTGGTTCGATATGAATGGTATATCAATGATGAGCTAAGGAATGT
+TTTCGGCAGCACTGCGACACTGTCCAAAAACCTTAATCGTGGGAAGCAAGATATACGAGT
+TGTCGCGTATGATGATAGTGGGGATTCAGCAACTCAGCGTACGACCGTTTATGGTCCGGA
+TGAGGGCGCGTCAAAGTCCGTAGATTCAGTTGAAACCTCGCAGTAAGGCAAGCTAATGAA
+ATAACAGCCGGGGCAGAAATGTCCCGGCTTTTTTGTTTTTCACTTTTTGATGGGGTAACG
+TCGGGAAAGTTACTTTACATGAGTAAGACAGCGGCCAGGACAATCACAAATCAAAGACGG
+AATGAAAGAAAAAAAGGCGGTAAATAATCAGAAATAGCTGGCTTTGCTGAAATAAGGAAG
+TACCAAAACATGGATAATAGGTTTTAAGGTAATGTAAAAGACAGTCCATTTTGCTTTCTG
+ATTCTGAGAGAAGTAGGTTATGAGAGAATACATACCTAAGAAGCGTGGTTTACTGAGTTT
+TGATTGGTACGTGCCAATAAATCTCGGAATCCTGATACTGGTTATGTTGATTTTTTTTAA
+TCGATTTACGTTTGGTCATGGACTATTAAATGGATGTTTACCTGCTGATTTTTACATGAT
+CGATCTGAAGGATAAATCGGTAAGTTCAGGGAATATCATAGCTTTTCATATGCCAAAATC
+AGTCCGTTTTATACGTGAAAATGAGAAGGTTATTAAAATTGTGGCAGGAGTCGGCGGAGA
+TCGCCTGAGGGTCACATTGGATGGTGTTTATAATGGGAACAAATTTTATAAAGCCAATGC
+CAGACGTATTTCTGTGAAATACGGCATACCTGCCGAGACCATTGAAAGAGAATTAACTAT
+TCCGGAAGGGGAGGTCTTTTTAATTGGGCAAACGGACCACTCATGGGACTCACGTTTTTG
+GGGGCCGGTTAAGTTGACTTCAGTTATTGGGAAAACATATGCGATCTTTTGAATTAAAAA
+CAACTATTAAGCCTCTGGCCTCCTGTCTGGCATTTTACGCCTTAATATCCACCGCTGTGG
+CTAGCCCCCAGTATCAACAGGTTGCTGATGACATTGCAAGGCAAGCTCAGGTTCTGGGCG
+CCCAAATACCGGTACCACACGCATCAGAAGGTCCGCTCCCGTCTGGTTCTCTGGATTCTC
+CTGATACCAAGAAATACATCCGCCAGGCCGAAGCTATGAAGAAAAACGGGGACCTCAGTC
+AGCAAACAAATCGCGGTTATGTCCCGGGTATGAATGCTGACAGTGTGCAGGCAGTTATAG
+ACCATACGCAGGCTATCCGCGCTCAGAGTAATAACTCGGAAGCAGTTAACGACATCATTC
+GCAGACGTGATGAGATTCAGGGAAATTCACAGCTCAGCGAGTCTGCACTGAAATCCGTCG
+AAAATAAACCAGAAGTTATGCGCAGTCAGTCTTCGAATATCGAAAAGATGTTTGGTTCAT
+CAGGAATCACCGCCGCTGACTTCGAGCGTAAAATAGACAGCAGTCGGGAAGAGGTGCTCT
+CGACAGAAAACGGTATCACTATCTTTGCGTCATTTAGCTTGCCTGATTACGTCCTGGAAG
+ATCTACTCCGTACCGCGTCAGAACATAAGGCGAGAGTGGTTTTTAATGGTCTGAAGAAAG
+GCACTACACGCCTCCCTGAAACTCAGGCAGCTATCAACCAGCTGGTGGTGAAGGGGAAGT
+TTGACTCCCCACTAATTACGATTGACCCGGACGCATTTAACCAGTACCAGATCACGCAGG
+TCCCGACAATAATCTCCCGTGAGCAATCCCGGTTTGCAAAAATGGTCGGCTCTTTCAACG
+TTGATTTCTTCCAGCGCGAACTGGCCAGAAAACCCGACCAAGATCTTTTCCCGATTGCTG
+GTACGACCTATCCGGTTGAAGAGAAGAGCATTATTAAAGAGCTCGAAGAGCGAGCACAGA
+AATACGACTGGGACGGCGCCAAGAAGAGAGCAGTCGCTGATACCTGGAAAAACCAGTACA
+TGGTTAATCTGCCTCCCGCTCAAGAGCACAAGGAATGGCTAATCGACCCGACAATCAGGG
+TTACTCAGGACGTTAAAGATAAGCAGGGTCGCGTCATTGCTTCTGCTGGCGAGCTCATTA
+ACCCACTGGCCAGGTTCCCGCAGAACCTCACAATGATAATTTTTGACCCAATGAACCCAG
+GGCAACTTGAGTGGGCAGAGAAGCAATATCGCCAGCGTCTTGGCAGCGGTCAGGTGATGC
+CGATGTTCACGCGCATCAAACAGGAAAATGGATGGGATCATTTGAATGATCTGCGCGAAA
+AATTCAATGGGAAGGTGTTCAAAGTTAATGAGCAAATTATTGCTCGTTTCCAGATAAAAA
+ACACGCCAGCGCTGATCTCCACTGAAAAAGAGAAATTCCGTATAACGCAATTCAGTGAAG
+CTGAAATACGTGGTATTGGAACAAAAATCGCGGCAGAGGAGAATTGATATGAAAATAGGA
+TTTATTTTTGGGGCGCTGCTGGCCACTTGGCTGACGCTAACTTACCCGGACCAGATGAGA
+GAGTGTTTTAACAAAGTGGTTGCGTATATGGAAAGCGTGACAACATTCATTACTAAATAG
+TGAGCGTGCCGGTGAAGAAGCTAAAAAAGTTACTTTTGGAAATATTGATCGCTGTCATGC
+TGTCGCTCTCGCTGCCTGCAATGACAATGGCCGCAGATACCGGTGTCCCGGGAGCAATGT
+GCCAGTCAGCGGGAGTATGGCAGGGCCTAATCAAAAACATCTGCTGGAGTTGTATCTTCC
+CGATGCGGATCATGGGAATTGGAGCAGCCCCTGAAGGTGCCGCCCCCTCACGCCCTGGTT
+GCTATTGCACGGATCAAAATGGGATACCAGAAATCGGATGGCAGCTAAGTTTTTTCCAAC
+CAGTAAAAATTGTTGAAGTGGTGAAAAGTCCGTGGTGCAGCCCATTTTTAGAGGGAACCA
+TGCTGCAAAAATCACAGTTCGACATCGGCAAGAGCAATACTAACCAGCCTATGACCGCAA
+CAGAAGCCGGATTCTACGACGTACATCTCTGGGAATTCCCAATCATGACGATGTTGAAAT
+TGCTGGTTATTGGTGAATGTACAGCAGAACCTTATGTTGATGCCAGTCTGACGTATATCA
+GCGAAGTAGATCCGATGTGGGAAAGTGACCTATTGACGCTCGTGCTAAACCCCGAAGCTG
+TGGTATTTGCAAACCCTATCGCCTCAATGGTATGTGCAGCTGACTGCGTGGCCGTGACTG
+CCGGGAAGGATAATTTGGCTGCATATTTTTGTGCCGGGTGTGATGGGAACCTTTATCCGT
+TAACTGGACACATCTATGCGAATGATGATGCCGTCAGAACCAGCTCACTTATAACTCAGC
+GTCTACTGACGAAGTTACATAGGCAGGGAATGCTTATGAGAACAATGGGAGCTGACGCAA
+TGTGTGAAAAAACGTGGGAATACTTCACTCCTCGATCTCAATACCGACTTTCAATGCTTT
+ACCCAACGCCGGAGGCGAATGGTCCGGATTGCTGTCATCGCCTAGGCGATTCTGTCCATG
+ACTGGTCAACGCTTAAAGGTGGACGGAAAAAAATCGGCATAGATAACTATGTTTACATGC
+TGTGGCGCTATAATGATTGCTGCGTCAGGTATATACCCAACTAATTGAAAAAATTGAGTA
+TTATATATGAAACATAGAAAAATAATTTCTTCAGCAATTATTGCGTCTATGATAGCTAAT
+ACTATGAGTTGGGCATTTTACGTTTCGCTCATAAACATTGCGTTAACGCCTAAAATATTT
+GCGGCAGATGCGATTTTTGACCAGCTTGAAAACAATTTTAACCTTGCCAATCCCAACGCC
+AACCGGAACGCAACCACCAGTGCTCAGGATATTGTGGAAAAGTATAAAAATGCTGATTCC
+GGGGAAAATCTGAGCGGCAAAATTTCCGAGAAATATGTTGGTAAAGCAGAGTCAACAAAC
+CTAAATGTTGGGAAGTACGGGACGCCGAACTCAAATGAAAGTGTTATGAGTAATGCGGTG
+TCCGACGGGAAATCGATCGGTAAGGCTGTACAATTACCTAGCATGTCGGGCGGTACAATT
+AACTCGAATTATACGAAAGAGGGGGCAAAGTTACTTTCTAGGGACAGCAGCGGTAATATT
+GGAATAAGTAACAACCCGAATACAACGGCAGGTACCAAAACCAGTACAGGGGAACTATTC
+AGCTCAGAGCAGAAGCACAGTGATGTTCAGTTCAATGCTGGTGGCCGGTATGGAGATGAA
+AATGGCTTCATCAATGACATCAAAAATCGAAAAAGTCAGCTGTTTGAAGCGCAAAGTTAT
+GATGGAGTCGCCTACCGTACTCTGGTGAATGCAAATAAAGAAAACCCAGCATCTACTATT
+AAACCTAACGACCCTATGTTCAATGCGGGTCGTAACGAAATAGGAAATGCTGTAGCTGGT
+ACAGGAAACTGGCTACAGAATTGTAATACGGAAACATCAAAACAAACAATTACTACGCAC
+TATCCAGATTACAAAGAGTTTTACTGCAATTCACCCAAGAAAGATAATTTTAACAGTTGC
+ACGATAACTCGTGATTTTTCCGTGCCGGTTTATATCTCAGGTGGTAATGGTGATATGTCC
+ATGTGCGGAGATAATTGTGTGAGAGTCTGGTTTGGCAGAAGGGACGACAACTATTGGAAC
+GATGGAGTCTATGACAACTCATTAACCTTAAAATTCCATCCAGATGCAAAGCTCGCAACT
+GCGAAAATAATTAACGCAGAGTGGGATGACCATATGAGGGTCACGCTTGATGGTACACAG
+ATTTTTGCTCATATAGATGGAGCATATAGAAGTAGCAATTATCCATCTCCACAAGGTCAA
+TGGGAGTTAAAGAAATCCTGGAAGCTCGATAAAGTCTACGATATTACTGAACAAGTAAAA
+ACCTCTGTATATCAGGAGCAGGATCGTGAAGTGACTATGGCTTCGCGCGTATGGGTTGGC
+GGTGGTGGGGAAGGCTATTTTGAAGTTGAGATGACTTTTGAAAATATGAAGTTGGAGGAT
+AAACATATACAGGAGCCCGCAGGATGTTTTGATGCAGTACAAACGCCGAATTCATTCTGT
+CGGTTTGACAGGTTTGTCAACATGGATGTTGGTACAAAGCGACTCCCGGAAAGTGTGCTT
+AAGATGGCCACACCGCTTTACAAAGGTGATACAGGATACTTAACCTGGAAAACAAACCTT
+GAAGGCTATTTCTGTGATCCCCTGGCGAAGGAAAAACTGTGCTCTTATGATGCGAAGGGA
+AACATCATGAAAGACCCCACAGGCAAAGACCTTTGCTACAACTACGACGATATAAAAAAT
+ATGCCTGACGCATGCAGCACATATAAAAATGATGCTGCGTGTGTGCTAGATAATCAGACA
+TGTGCTGAAGGTTGGTTCGATGAAGGCACAAATACTTGCTACATGTATGAGCAGAAATAT
+ACATGTGACAGAGGGAAAGACGTAGTCAGAGAGGTAGAGTCACAGACTAACTCCTGTGTA
+GGTATGATCCCATGTTCTGGCGGAACATGTGAAACAGGCCCAAAAGAAGAAAACAAAGAT
+TTTGGGAAAGTGGCCGCGTACTCCAATATGGTTCAGTACATGCAAGGTGAAGCAAAATGC
+GAAGATCCAAACGACCCTAACTCCTGCTCTGTCTTTGAAGGGAAAGCAGAGTGGTGCGGC
+AGGTCCGTTGGTTTTGTGAACGGACTGGCCAAAACAGATTGCTGCGAAAAGCCGCAGGGT
+GCTGCTGGGTCACTGGAGGCGATAATGCTGGCCGGGTCGATGATCCGAAACACGAACTGG
+ACCCGAGTGAATGCTCAACTGGTAAACTGGACTGGAGGGGAGAGCGGAACCTGGGCATCA
+ATGGCTAACTCAGTGGGTGAATGGACTGCATCGGCAGGTAAAACTGTCGGACAAATGTGG
+AACAATGTGACCAGTTCAATAACCAGCGTTTACGAAAACGTGGCCGGTAACCTTGGCCGA
+ACAGTAGGATCATCCGCTGCTGGTGAAAGTGGTCAGCTTGCTAAGGAGACTATGAGTTCA
+TTCGGGCTTGGTAAACTTAAGCAGATGGCCATGGAAAAAGCCTATGACCTGCTTCCCGAT
+ACAGTTCGAGACTTCGTATTTAAAAATGTAGCGACAACGGGTGGAGAAATAGTCTTTTCT
+GCTGCTGTTCAAAACTTTATGCTTGCATTAAATGTAATCGGCTGGATTTATACGGCATAT
+CAAGTCACAAAAATGCTGCTTGAAATGCTGGTGGCCTGCGATCAAAAAGAAATGGAAGCA
+TCTATTCACAAAAATCAGAAATCCTGTTTTACACTGGATACAAACCGTTGTGTTAAATAT
+CTGAATCTGGGATTTACAAAGAAATGTGTTAAAAAAGCAACAGACATGTGCTGTTACAAT
+TCAATGTTATCTCGCGTTATTATGCAGCAGGCCTACCCGCAGCTTGGAATAGACCCGGTT
+ACTTCAAACTGCGTTGGCTTATCAATAGGGCAGATCCAAAAGTTAGATTTTGACAAGATT
+GATTTAACAGAATGGATTAACGATGCTGTTCAGGTCGGAGAAGTACCGGACCAGTACGCT
+ACATTCTCAGAATCGTCAATAACAGCAAATTTGCCATTTAAAAACGAGAATTATCAACTT
+CCATCAGAAAGAACAAAAGATGCAATGGGAGGAGAGGAGAATATGATAAAAGCCAGACAG
+GAAAACGCTCAGGCCATTAAAGAGGAGAACGTAGACTGTAGCTATCTTCCACGCCCTGCG
+ATTTGTGAAGTTGGGTCAACTTATGTAGATCCAATTACAGGTAAGGAAATACCAAAATAT
+TAAAAAAAAGGGCTATTTGCAAACTAAGGTTGGAATTCCATCATTCTAGCCTTAGATCTT
+TGATCAAGTGAAGTTGCTCACTTGGTTGGATTTTACCGTTTCCTGACGGCTTTTCAGAAG
+CGAGGGCTGGTTGGAATGCCTTCCAGCTAGAAGTCTTGCAGATGCTCTCCGGGCATTAAC
+TCATTGTCGAATCTGCACCAGTATCACTAGGTTGTTGAGCGGGCGATTAGCTTTTTCACT
+GAGCCGCTGTACACTCGACTGCTTCAAGAAGCACTACTTACCATTTGCCTGCCGTAAGGT
+CTGTTCTTAGCTGGATTTTTTTGGGAGGATACGCAGTCATGACAACTCAATCCAGCTCAA
+TACAATACGCTTACGCGCTAGACGGCGAGGGCACCCTCACGCACATTGGCGCTGCCCTGC
+GCTCACATACTTACACCTGCCCAGGTTGTAAGAGCCCCCTGACCCCGGTAATGGGCGAGT
+TCAACGCTAAGCACTTTCGCCATTCGGAAGAATGCTGTGCCCTTGAAACCTATCTTCACA
+AGTGCGGCAAAGAAGCATTCTTCTATCGCTACCAACAAGCTCTCAGCCGTGAAATGCCTA
+TTAGCCTTGAGCTGGAGCGCCGGGTTGCCTGTAATGGTTCTCATTTAGCCTTGGTTAGAG
+ACGAAGCACGTCAGTGCGTAAAATCCGTGCCTGCACGCTACAACTTGACTCAATTTTTCG
+ATCAGGCAGAGCTGGAAAAACACGATAAGGTCACAGGGCTGCGACCAGACGTGATGTTGT
+ATGATACGACTGGCGAAAGGCGTTGCTACGTAGAGATTTGTGTCACACACCCCTGCTCTC
+AAGACAAGATCGAAGCCGGTATCCCGATTCTTGAGTTTAAGGTCCAATCTGCCTCTGATA
+TTCAGATGTTGCTTACCGGGGCCTACTCGATCAAGGAGAAGATCCTGAGAGTATTCAACT
+GGCTTCCCCCGTTTCAATCTGTGGACACCTGTAGCGGCGTCTGCTCAGTAGGTAACGTGT
+ATATGTCTGTCTGGAGTTTAAGTGGTTCCGGCCGACTCTACGAACAAACGATGCCGCTCG
+CTGAAGTGGATTTAACAATCAATTCTGACGTGAACACATGGCCTAGATCGTTAGGGGCCG
+CTGAGCTGGCTGATAACTTACGAGCTTTTATCCGTCACGCCGATCCTCATTCACTATTTC
+CCAACTGCATTATGTGCGAGCAAGCAGGCCGATGGGAGGATGGCTATCTGCAATGTCACA
+GTAAGGCAAAGATCGTTCCCTACACCGAGGCCCGTCAGTGCGCCAATTACAAGGTTAAGG
+CATGACCAAAAGACTGACTTGGGAGCAGAAAAGTATTGTCAACCATGACACCGGACATGC
+GTTGGTAAAAGCCGTACCTGGTAGCGGGAAAACAACCACACTTGTAAAGCGCGTTGAGCG
+GCTGGTCAAGACGGGAACTGATCCTCGCTCCATTCTGATCCTGATGTACAACAAGTCGGC
+GCAGGTGAGCTTCACGGAGAAGTTGAAGACGGCACTGATGTCGAGCGTGATTCCAGAAAT
+CCGCACGTTCCACAGCTTGGCCTTAAAGATTGTTGGTTACGGAGAACGCCAACAGATAAT
+CAAGAAGAAAGACCTCATTACTCCAAGCGACTACCGCTATGAGCAACTGGTAAAGCAAGC
+CTACCGCTATGGCTTTGACCATGAGGCGAATTATATTGACCCCAATGAAATTGAAAACTT
+CGAGCTGTTTATTGCTCGCTGCCGGGCGGCGGCCGTAACTCCTGTTGATGCTGCCAATGA
+TCCAACGTTCAGCAACATCAAACGGGGGTTTATTCACGCCTATGGCCGCTATTGTGAGCT
+GCTGGAGGAAAACAGTCTGCGAACCTTTGATGACTGTTTGATTGAGGCTGTCGCACTGTT
+GCGTAATGACAGCAGCCTTGGTGCCCACTTCAAGCACATCATTGTTGATGAATATCAGGA
+CGTTAACCTGATACAGCATGACATGACCCGCTTGCTATCTAAGTCGGATACGTCGGTTAT
+GGCTGTTGGTGATGTTAACCAGTGTATTTATGAGTGGCGTGGTGCTCGACCAGACTTTAT
+CGGCGGACTGTTTGAAAGGCACTACCCGAATACGAAGGTGTTTCAACTGTCATGCACGTT
+CAGATTTGGCCATGAGCTTTCCTTGATGGCTAACTCGGTAATTCGGCGCAACTCTACAAA
+GCTGACCAAGCTTTGTGTCAGTCATCCTAGCACCCCCAAAACAGAGGTCAGATTGCACTT
+TGATAACTGCCTATCCAAGGTGCTATCAAACCTCTCGGTGAGCAGTGGAACACAAGCCAT
+ATTGTCCCGCACTAAGGCGAACCTTGCTGAGGCGGAAATTGTTTTACGCCTGTGTGGGCT
+ACCTTATCGCTACCTCAATGGTTCAAGCGCATTACACACCCGCACCGAAATCGGGATACT
+GGTAGTTGGCGTCTTGCTGTCTGTGTACGGCGATCTGCGGCTACTGGAAAACCATCCCAA
+CAAACAAGCGATTGTTTACGGCTTTCTGAAGGAGGCTGGTTTTAGCTGGCAGAAAGGGCA
+ATTCAAAGCGGCGCTCAGTGGATTGATGGCTCCGCACGCCGACCTATGGTCTGCTCTAGG
+TCAGTTATTCGAGGGCGCACAATACCAAAAAGATCGGCTGGGCAGGCTCGCCACTATCTG
+CCAGAAAGACGGAGAGGAAACGCCTGCTATCGATGTGTTACGACGCCTGAGTATGGAGGG
+TTTCATTGATAGTGTTGGCTCTGAGGGTGTAACTCGCACTGGATCGAACGACCAGCAACG
+AGGGGTCGTGAGGATCGGGGAGCTACTTGACTCCAGTAAGATCGATTCCCGCACGTTTTT
+AAACCTTATCTTGAATCCAGGCGAGGCTGCTACTGACTGCGATCCCTTCATCCTTTCCAC
+ACTGCATGGTTCCAAGGGGCTGGAGTGGGATAACGTAATACTGATCGGGCTGAATGAGCA
+GGAATTTCCTGGCGGCAAACCCGATGATGTTTACAGCGTTCGCACATCGATGAACACCCC
+TCCGGCCGAAGAGGAAATCGAGGAGGAACGTCGGCTGTTTTATGTCGGTATCACTCGCAC
+AAAACAGCAGCTAAATCTGGTGGTCCCTCTTGATGAAGGGCTTGCGCGGTGGCTCAAAAA
+CCGCTGGGATAGCACCCCGAAGAAGTCACCGATAGCTACTCGCTTCGTCTATGAGGCTGG
+CTGGACTGCTTGTGCTGTTACCAGTGATGCGATCTATAACAGCACGGTAGAGAAACAGAA
+GGCTGACTTCAGCAAGTTTCACCAATGGTATCTAAGAGATCTTCAGCGGCTAAAAGTCTA
+GGGCTACCGATACTTTTCGATTTCAGACAGGTGCTCGTTATCCAGATCAATTGTGGCTTT
+TCTTTCAGAAGCGAGCTTCTTCGCTCGCTTTGCATACTGAAGCCCCTTGGCTGGCTGCTC
+TCCGCGTAGGATCTGTTCAGCCTGCTTGCTCGTGCTGTGCCCCAGAAAGCGTTCGTACTG
+CTCGTCAGATACCTCAGTGCCGATCAGTCGTTCGATCCAGCCGCTTTTCGGCGGGTAACT
+TACGCCCAGCGCAAGCAACTGCCTTTTCTGTACCCACTATTTCCGGCGCGGCCGGCTTCA
+ATCAAGGCTTTGGTTAGAACTACAGCCATTTGGGGACTCTCATACACAAACCTGAACCAT
+GCGGGTCTGATTGGCGGTCAAGATAGCAGCGCATCGAAATCAACACTGAACTCTGCTTCT
+AAGAACTCAATCGTGGCTGGTTGGCTATCGAGCGATGCTTCCCGTGTAGACTCCAGTGCG
+CACTCCAATCGACGCAGCAGAGTAAACGGCAAAATGATCTTGCCGAAGTCGGTATGCTTG
+AAATCCCCCCCACAGGTCTTCCGCGTTCTTCCAAATGAAATCAGCTTGCGAAGCAGCCGA
+ACCTACGAACTCTGCCATCTTGGCCTCCAACCAACTTTTGCACGAAACGGCACATCTTCC
+AAAAGAGGGTTGTCAACCAAGTTTTGCACAAAACGGACTTTGATCCATTTCTAACTAAAA
+TCTACAATCCAACCTCAGATTGCAAATAGCCAAAAAAAGGGGCTGTAAAGCCCCTTTTGT
+TATTTTGATTTCAGAGTTTTTTCCGGGAATCCTTTCTGACCATACTCACCAGAGAAGAGG
+TAATAGTCTTTCCCATTAATTGAAGCAGCTGCGCCGCCTGGCATGGTGAACTTTGGACTA
+TCAGAACGGAAAATAATACCTGAGAAATTATTGCTTGACTCATTGCCTTTAAATGGAATG
+AACACGTAACGAATAACTGAATACTCACCGGCAGGTAGATTAAGTTGGGGGATTTCAGTT
+CCAGTCGCAGGGCGAATAGCCTGGAAGCTGTACATGGAATTAGTTGGCATTACGTCAGGA
+GCTGGTTTTGAAGTGAGCTCGCATGTACTCCATTTATTGATGACCGCCCTATCAATCTTG
+CAGGACGCCAGAGCTGCACTTTGCTTCGATGGGTTGAATCCGAGCATTACCTGTGACTCT
+TTGGTGTGATTGTAAACATACGCAGCACCGGCACGAACTAGGCTTTCATCGTTATAAGGA
+AGTTTCTTCGGGTTCGGGACAAAGACAACATACTGGTTAACCTGAATGTATTCGGCGTCA
+GAGGAGCTGTATAGAGAGCCCAAACTCATAATGCTTAATCCGCTGAGACCGCCTGTCACA
+TATCCCATAGAGCCGCTAATCAAGAGTTTGGAAAGGAAGTTATCTGCATCACCACCTGGC
+TGAACAGTTTCCTCATTAAAAGAAACGTCAAACCCGGCCAGAGAGTAAGCATTTTTGGCT
+ACAGAATCTTTTGCGTTAGCATGCCAGTAGAGCCCATGAGTGTCGCTGTGCTGGGCGGAG
+TTAGGGGATTGACCTGCGTTCCCAGCACACCCTACCAGAGACGCACTTGCAACTAAAGCT
+GAAACCAAGGATACAAACCGTTTATTTTTCATTTATGACCCTTTTTGAATGAATTTTATG
+TCTAGAAGCATTATTTCATACTCGCCAGTTTCTCAAACAACCTAAATGAAGAAAAAATGG
+AAAAATATGAAGTGACCAAAAATGAGTCTTGTAAAGAAAAATCCGTCAAATTTAAATCGT
+ATAATAAAGGGGACTAAATATTCAGAGGCTTTTATGGGTAAACCAACAGATGAGCAAAGG
+GTCATCATTGAAAATGCAAATGCTAATAATATGGTTATTGCAGCACCGGGATCTGGAAAG
+TCATTCACGATGATAGAGGCGGTGATCTCTATCCTCAGGCAGTTCCCTTATGCCAAAGTG
+GGGATGGTCACATTTACCCGTGCAGCAACAAATTCATTGGCTGAAAAACTGAAACGTCGA
+TTAAGTAAGAAAGACCAGGATAGGGTGCTGGTCAATACATTCCACGGCTTTATCCGGATG
+CAACTGGATATGGTCAACTGGAAGGGCAAGATGTTGATTAGCTCGGCACAGCGTTCTGTA
+ATTCACAGGGCATTGAAGGAGTCCGGCGCGCCTTTTCGATACCCGGATGCAGAATTTGCT
+ATTGACGCGATTGGAAGGGAAATGGATACGGACATCATTTCAGTTCGCCATACGCGGCAA
+CAAATCCACTTGTTCAACACCTATCAGGCAATATGTCAGAAAGACCACGTTGCAGATTTG
+AATGCACTCTCACGTTTTGTTGTGGGCCAGATGTACTCGGGGAAAATGCAGCCACTTAAC
+TTGACACATTTAGTTGTAGATGAAGTTCAGGATACCGACTCGATTCAGTATGCCTGGATC
+TCACTACATACGAGGGCAGGTGTTAACACTAGCATCGTTGGGGATGATGATCAGGCAATT
+TATTCATTCAGGGCATCAGGTGGAGTCAAAATATTCCAGCAGTTTGAAAAACAATTCAGG
+CCCAACATATTTTATTTGAATACTTGTTTCAGATGTGAACCAGAGATTTTGAAGGTAGCA
+GGGGCATTGATTGAAAAAAATGTTTACAGATACGCTAAAGATCTCCGTTCAGCTAAGGGC
+GGTGGGGGAAAAGTTCATTTCCGCTCATATGTTGATATGGATGAGCAAATTCAAGGCATT
+CTCAATCTGATTAACCAAGACCCGATTGGGTGGGCAATCCTCAGCAGAGGTAATGCACAT
+CTCGATCAGCTTGAAAGCCTGATAGAGCAGCCGGTACTTCGTTATGGTGGGAAGTCATTT
+TGGGATGAAAAGGAGACAAGCGATGTATTGCATTTGATGGCATTCTTCCGACATTCCAAC
+GATGTCCGGTTAATGAAGAGGGTGCTGGCGCTTTTCGGTGAAAATGAAGAGGTCTTGGAC
+CAGACAGCATTGAGCATGAAAGGAAGAAAAGTAACTTTTGGTGAACTGAACATCCCGAAT
+GAAAGTTCCCTGGAAACAAGAACGCTTCATTCAAACTTCACCCGGTTTACACAGGAGACT
+CGGGAAAAGGTTGAAATAGAAAAAAGGTTCGCAAATCTGATTAAGTGGATGGAGTTGTCG
+TCGATAAAAATGAGGACGCAGAAAGGATCACCATCACTGAGCAGAATTGCGCTGGATACC
+TGTAAGCAATGGGCCGAAAAGACAGGCTGGCAAAATATGATAAATCGAGCTGCGGCGATG
+TGTCTGGGGCCAAAGAAGAAGGATGAGGAATATACACCGGATAAAGTAGTTTTATCGACG
+TTGCACGGTTCGAAGGGTCTTGAATGGAAAAATGTAATTATTATGAGTTGTAATGCAGAT
+CAGATTCCAAGTAAGCGGTCAGTGGGGCAGGAGGCGATTGAAGAAGAAAGACGACTGCTT
+TTTGTTGGGTTTACACGAGCAGAGCAACAGCTGCATGTAATGTGGTACGGTGATCCGTCT
+TTCTTTTTAAGCGAATGTGCTGAAGATAAATTGAAAGAGGCTGCGAAAAGTAGAACAGAA
+TCCCCTTTGACAGAATAATTTTGATTTCTTTATTTACAGGAATGAACCCGTGTAGTATAA
+CGTATATGAGCTTGAATTTATTGCTCCCACATTTCAAGTAACTTTATAAAAGTTACTTTG
+CGCGTTAAGCGCATATTCAGCCGTGAAAAGCGGCCAGCTTTCTAAAGCTGCAAGGCACCA
+CCGGCAAAATGTCACCTTTGTCGCTGGTGCCTTTCCCATGTCTGAAAAAGGACAATCGAA
+TTTACCAAATCGTAACTAACTTAGCTCTTAATTGAGCTATTTTCGTTGCGTACTTCTAAT
+GCCAGAAAGTATAAATCAGGCGGTTCATAGCTTACGGGAGATGAATGACAGGCTTTGCCT
+TTGTGTTGGGATATTTAATGATTCCTTCCTTCTTACTATATATAGGTGACCCCAAATGTC
+TAAAAGTAAAGCACGCAGTAAAGCTCTTCTCATCGCCTTCGCTGATCTGATCCCAGATAT
+GGATAAGGTGGTTAACAAGAAGTTATTGGATTCTCTGAATGTTTATTCAGGGCATGATAA
+TGACCTTATTGTTATTATGAATGAAGATGGTCCAACCATAATTGAACTGAATTCTTTGAA
+ATCAGTTTCAATGCTGGCTCAAAAGCTTTCTGCTTTTTCTACTTATTATCATGTGGAAAT
+GCAGCAAATTCTTGTCAATCCAATTGACTTTGAGAAAGCTTACACACTTCTCAAAGAAGC
+ACCTGCAATTCCAATGTTTAAAACTTTAGCCGATCTGGATAAGTTCTTAAATGAAGAGTT
+TGAAAAGTACGGGTTGAACACATTTCTTGATGTGGATAACCTTGATTATTCACTCGCTAA
+ATCCAGAGAGTTAAAAAATGATCAGTTGGTTGCCTGGGTTTCTGAAATTATTGAGAAGCG
+CGAGAAATTAGCATTGCGTAATCGATTTAATGAAGTGACCAAAGCACATTATGAAACTGT
+AGATGCAATGTATGCAGCCGTTCGCCCATTAATGAAAGAGTTAGGTTTTCCTGATGAACT
+CATGTTACACACCTTTAGTGAATTGAGCGTTTTCGATTCCAAAGGCTGGGATTATGCTAT
+CAAGTCGAAAATTGAGTTTCTCACTAAACGCGAGGAGCAATGTTTAGATTATCAAATGAA
+AGCAGATAAACGGCAAGCGACAGTTGATGAACTCTTGGCACAAATCAATAACGCTAAAAC
+GGTAAAAGCACCAAGATCTTTTGGTCAGCTGTTTGGCTTTTCTGTTATTGCCATGATGAC
+ATTTATGTTCATTGTAAACAAATTTATCTAATCCTGTTAAGGGGAAACCCTGACGGGGCT
+TCTCTTTGCTTAAATTGAGGAGAGAAGTAATGTCATATCTTGAATATGTTAATGAAGTAA
+AAGTGTCCGGGATAGTTATCAGTGCAATGGAGAAAGAAATGACTAGCGGAAACGTTGGGT
+TATTGATAAAGCTCAAAAACAGAATGAAAACTGAAATTAATGGTGAAATTACTGAGAGAG
+AATTTTCGATTCAAATCAAAGTATCACCAGAGATGTATTCAGGCTGTTTCACTGGTATAA
+ATCAAGGTGATGAGTTAATGGTCTCCGGTTATCTTGTTGTGGATACCATCACATTGGAAG
+GGAGAGAGCATCCTCTTGACTACATGAGAGTAGTTGCAACAAGTAAGTTAGCTCACATAC
+CTAAACCTCCTAAGGGTTTTGGGCAAAGTAGCTTTAGACAGATCTGACATTTAAACCACC
+CAAAAGGGGAGAAATCCCTTCATGGGAGTTCTCCCTTAGGAGATCCCATGAAACAAAAAA
+TAAGGCCGACTGCATTTTGCAGTAAGCAAATGGATTTTTTCTCTATATTCGATTTTGAAG
+AAGAGGAAAAAGAAATAATAACTATAGTTGAGTCTCCACTTGACTATATAAATGATGCAA
+TAGCCGCACAACAAAGTATTCAATCAGAAGATAAACATTCAGGCCCGGAACTGGAGCCTA
+GTGTGTCGGAAGATGTTGCTTTGCCTGGTAATTGTCCCAAACTACTCAAAAATCAAATTC
+TGCATGACATTAGTTTTGCTGCGGAAACTGATTATCTCTTCACTCTAGAAGAGTACAGTG
+CGGAGTTAGGTGGTCTGGTTTTTGACTGGGCCCCTGAAGATGTATATCAGTTATACGTCG
+TCGCAATGGAAGAGTCGTTGGAAAACGTAAGGCATCTCGTCATTACAAAATCACTCTATT
+CCACTGATGAATTCGGTAACATAACCGTGAATCCGCTTCTTGAAGCCGAAACACGGTGGT
+ATATGTCGAAATCATTTGAGCTTACATGTGCCACTCATGGTATTGATGCTATTGAGTTCA
+GGTCAGAGCTTAAAAAAAGCTTATATGAATATACGCACAGTTACGGAGGTGAAAATGCTG
+AATTAGCTCGTTATCATCAAGATAAAGAGGTTATTCTGCATGATTGTAAGGAAGAGATGG
+GATGGGATATCTTTTTCGAACAGGACTATTTGTTGCAAGAAAACAAACTGGCAATGAAAT
+GGACTGATCGGGATATAATGGATGTCTATTCTAAAGTATTTAAATCAACAATTAATTTGT
+TTGAAAAACTTGTCGTTAATAACAAGTTAACCTTAAGAGATACTTTTGGTTGGGTAATCG
+TAAACCCTACATTTGAACGCCAGTTTGAATGGATTGAGTCAGAAGTATTCGAAATCGTAG
+GAACTCATCTTGGTTACAACGTTGCCGCTATCAGAACACAGATGGCGACCGCGTGTAGGA
+TGACTTTCCACTAACATGCCACTGGCAAACATCTGCCAGCGGGCGGTGTTTGCATTTTAC
+CGGAGTTTTAAAAATGACTAACGCCGCAACTGTATTAAAATCCGACAATTCCGTACAGGA
+AGAAATCATTGGTAATCTGTTACCCGCAAATGTTATATCAAGTAAGATGTTTGCGAATAA
+AGAACAGTATTATCTTGTCAAAGCAAAAGATTTATTTGGCATTCCTGAGATGGATGAGGA
+TATGATTGTTCCAGTGTTTAAAAAGTTTTCTCCATATCGTGCGAATCTGAATAAGGACTA
+TATACCAAATTCTCGAATACTTGAGCAAGTAGTAAAATTGCTTGTAAGTAACGATATAGA
+TTTGAGTGTATGCCTGAAAGGAGAATCTGGATCAGGTAAGACTGAAATGGCAATGTATAT
+TAGCCATATGCTGAACTGGCCGCTAACCATAAAGCAAATCAACAGCAATATTCGCGCTGA
+TGAGCTGGAAGGTGAGCGTAGTCTTATTAACGGTAACACCAGTTTTGTGCCTAGCGAGCT
+TGTAACGGCATTTCAGGAAGGCCACCTCATTCTTCTGGATGAAGTGGACAAGATTGACCC
+TGATACTGCCGCAAAGCTTCATATGCCTATAGAGCGAAAGCCCTGGTCACTAGCTGCCAA
+CGGTGGCGAAGTGGTTAAGGCAAATAAGTTTACGCGGTTTATGGGTACTTCAAACACAAA
+CATGAGTGGGGGATCTCGTAAGTTCGTTTCATCGCAGCGGCAGGATGCAGCGTTTATCAA
+GCGCTTCCTGATTGTGGAGATGGAAAGGCCTTCAGAGGTTGCATTAACCAACGTTTTGCT
+TAAACGCTACAATAACCTGCCTATGCTGGTAATTGAAAAATTCGTTTCGGTAGCCGTTGC
+AGTAAACAACACAGGAACTGACGACAGTGTAATGGATATACGCCAGCTTGTGGCATGGGT
+TGGAACGTCAATGACGTTAAAGACCATGTCCTTACTGGATACATTTAAAATTGCTTTTGC
+GTCGGCTCTGCCTGCACATGCCACTGGTATGGTGTTGGAAGCCATCGACTTAATTCTCGG
+TGACGACAAGAACCGTACAATGGAGTATTACACTGCAAAAAAGTAGTTATAGATGGGACG
+AGTTATCAGAAGGCTGAATGCCGTGTGACAGACTTTGCTCATCTTACGTTTTACGGTTTT
+CTGAGTGCAAACGGAACTGAAACTTTCGTGATTGCACAAGATGGAAATCAATATATAGGT
+CTGAAGCAGCATAATAATGACTATTCATTTATTTGTTATGAAGTCTGTAACAAAGATATG
+GAAGCCATGATTAAGGGCCTTGAATCAAAAGGATTCATGTATCAAGGGAGCATTCAATCG
+GCGGATGTCGAAAATGAATTTCCTGGAATTCTTTTAACAACACTTGAAAAGTAATATTAT
+TAACCCTATCGGGAAATCTTTCCCGACGGGGAGGTTTTCCCATTTCTAAATCTGGAGAAA
+ACCTATGACTTTCAATACTTCTAAACTTAATAAAGTTTCTGCAAAGGAAATCAGTGAAAA
+CTTTATAAAAGCATATCCTGACTTGCAGGAAGGTGCTGTTATAACAAAAATTGAAATTAG
+TGGGTGTCAGGGCTCTCGGCGAACTGATAAAATCGAACTGTCCTATGGCGGTGATGATAT
+AACAGACCAGAAGAGCGTGTCTAAAAGCGAAGTTCGCTGGATAGACATAAAGGCACTGAG
+TTTCAAAAGCACTATCACTAGTCGAATTTCAACCCTTTGTTCACGGTTGTGCATCCGCTA
+TAGCAATATGTGGATACTGCCAGTTGAAAGGATGGAGGAGTTTCTCGAAGAGGCACAAGA
+AATCGAACGTGAATTTCAAGCCGGTATCCAGAACGTGGTTGATAACTATGACACTCATAT
+TCAGGCTGAGAAAGATCGCAGTCCGTTGATGTCAGATTTAATTGACCAGTTGAAATTGAC
+TAAAGATGATTTTGTTAAATCATTCCGGTTTAATCTGGCACATTTCATTCCGTTTTCACC
+GATTAGTGTGGAGGGGGATGAAACGCAGGACTTTTATCAAGAACAACTGATAACTGACTT
+GGCCGATGAAGCTATGAAGGTTTATACAAAAATCAGCAAAAATGATAATTTGCGTTCCAG
+CACGATTGACCGATTAAAGCAGATGCAGGATAAAATAATTAGCTTCATGTTCATTCATAA
+AGAGGCTGTTGTTCTTGCAGAAGCTATTAAGCATATCATGAATAATTTACCAAAAGGTGC
+CATTTCTTCTCCCCGTGATGTTGCGGTATTAAAGCAGTGGTTCTATTTCATGAGCGATGC
+GTCAATGCTGAAACGTATTATCTCCGGTGAACAAAAGGTAACCGACTGGCTGGATTCCAT
+AACCCGGTCATTCAATATCGATTCACAGGTTACAGCGGCTAACTCTCTGAATACTGCTGA
+GGATGATGTTTTTTCTTCAGCAAATGTTTTCAGAGAAGACCCGGTTGAAGATCTTGAGAA
+CAAGGCAGTGAATGCACCTGAGCCTGCTGTTGGCCCTGATGAAGATGTTTCTATTCAGGC
+CAGTGGTAGTAATAGAGCATTTGACTGCGAACTCGAATTGACCGGTTGGTAATTTAGTCT
+TGTAAAAATATCCCCAGATGGGTACTTCACCATCTGGGTGAGTACCCTTTATCAAATAAA
+GGTACTCAAATGAAATTTGATTTAAAATCTTCACCACGCCATATTCAACGCCTGACGAAT
+ATAGCCAGCGTGATAAGCGGTATAAATGGGATTTATGTAATTATTGACAATAAGGTGAGT
+ACACCTTATTTCAACACCCAAAACAATGTCTGTGTTTTACCTAACGGTGATTATAGCGAT
+GAGAGATTTGTCAAGCTAATTGAAGGATTCATATGTCATGAAGCAGGACACGGTCGTTAT
+ACAGAGCATGAAGTATACCGTGAAGCTTTTGTTGGAGAATTGATCAATGCAGATGGCTTC
+ATCAGTATTGATGATGACTTGAAGGCTGATTTTCAAAACCTAAAACAAAAGCAAAAAGCA
+TATGCTCGTGCTTGTCGACTAAAAGGACTTATTAATCTTTTTGATGATGTCCAGATGGAA
+GAGAAGACGGGTATTGATTATCAGGAGGCAAAAAAACGCCTCGCGGTGACTTATGCCTTG
+ATGGTTGAAGCTGGGCGTATGACGGTTGATATTTCTTCAACCCCTCAAAACCCGGTTCAG
+TTTATTGAAATGTACCTGCTTAATACATTGCGGGTTAACGTTCTCCAACAAGAAGGGCAT
+AAAGAAACGCTTGACCCATTTTTCGATTATGCAAAGAAAATCCTTGCACCTGTAACTTCA
+GAAGTCGATGAGATCATTCATCAAGCTCTAAGTTGCAAAAGTACGCAAAATTGCGATTCT
+CTGGCGCGTAAAACTCTGGCTCTTTTAGAGCGTTTAAGGGATGAAGCAAAAGAGAAACAG
+CAAGAAGAGGAGCAGTCGAAAGACCCGCATGACGATACAGATGAATCATCTGGCTCTGAG
+AATGAACCTGATACCGAACCCAATGGTGATAGCCAGGGTGAAGGGGATGGTGATAAAGAA
+GGTCAAGGCGATGATTCTGGTGATGGTAAGGCGCCTGCGGAAGGTAATGGGTTACCGGAC
+CAATCCGGAGGGGATGAACAAAATGCTGAGAACTCTAACGGCGAACCTGATGGTGAGTCT
+GAAGGTGATGAATCGGCGACCCCCGGCTCGGATGATGCTGACTCGACACCTTCCCTAAAC
+GACAGTTCAAATGGAAATTCTTCTGATGGGGAAAGTAACTTTTCTCCTGAACAGTGGGAT
+ATGCTTGCCAAATTGCTGGATGATTTTTTAAACAGTGATGAGGAAAGCGAGGATTTTCAT
+GAGGTTCTTGCAAAAGAGATCTCCGTAATTGCTGCCAGTGTGTCGGATGAGGTTAAAGCT
+GAATTTGGTGCAAGTGAGTGGGATGTTCCAGATTTGAACATTGATCTGAATGTCTACAAT
+GAAGCATTAAATATCAGCCAGACCCTTGGGGCAGATTTATCTGTTTTACAGCAGGTAAAA
+ATGCGTGGTCAATTTAAAACCCGTGATAGAGGCTTGTCATTCGATATTAATCGACTGATC
+CAGTCTCCGATGGGTGTTAGGGATGTATTTCGGTCACAAAGCGAATCTAAAAACCGGGGC
+CACGTCGGCTTGGTCATTGTTCGTGATATTTCAGGTTCAATGAGTCTGGAACACCGTTAT
+ATCCATGCAATTAAGACTGACCTTGCATTAACTCTGGCAATTGAAGCTATTTCAAAAATG
+CATGTTGCTAATGTGATTTATCCGTTTGTAGACAAAGATTTTGAAGTTATCAAAACGTTT
+GATGAAAACGCGGAAGAGAAACTTTCAAAATTCTCACTTGGCTGCAAGGGCAATAATACC
+CCAACGGGTTCTGCATTAAATGCTGCTTTAGAGTTGTTACTTGAAAGCCAGTTTGACAGG
+AAAATTGTTTTCCTTATTACTGATGGTTATCCGACTGAGTCGGCTTACACCATTAATGAT
+GTTTTTTCAGTTGCTGAAAGTAACGGCATTGAAATCGCTGGTGTTGGTATTAAAACTGAT
+GTGTTGATGGGTTTTAATGAGGGCACCTTCGTAAATGTTGATGATATTTCTTTATTGCCG
+AATGAGGTCAGTAAATTAGTACATCAAATTCTATCTAATTAAACTCTACCCAATCGGGGC
+AAAACGACGCCCGGTTGGGTCGCTTTGCTCCCTGAAGGATTAAGGAGCAATATATGACTC
+AGATAAAGACTTACCGTGTCGAGTATGAAAAAGTCGGGACGATGCATCGTGTCCGTATTT
+TTGGTCGCATGGGTGAAATTGTCAAAAGTGAATTGCCAGAAGAAAGAATTCTCCGGGATG
+TATCTATACCAGAGGGTAATGGAGAAATGGCAACGTCAATGGTTGATGGTTTTATCCAGC
+GTCTTGAAAATATCGGCTTCAAGACTGAAGCGTAATTGTTGAGGGCTCTTGTGGGCCCTC
+ATTCTTAGATTCTGCGTTGTGGGTTTCTCCCTGTTTTCTGCATCGCAGAGGGCATTGAGA
+AACCCACAATGCCAGATAAGAGAGAACAAATGACTTATGCATCCCAGGCTGTTAAGCGTA
+CACCACATGAAGTCACTGACCACTTTATAAAAATGGTTCACGCTCGTATAGCGGAAGTAT
+CAGGCTGGCGCTATGTATTCGATAGAATACCGGCATTTAAAGACGCTTGTGATAAAGCAC
+CTGGCCAGGTTCCTTGCCCATTTAGTGGGGTCGGGAAATCAAAGTTCCGGTTCCGTAAAA
+AGGACCTCTTTACCGGTTGTGCCATTCACAATGATTTTCCAGTGAATGCATTTTGTGACG
+GTATTGATGTATTGGCAGAGTACTACAAGCTGAGCAAGACCCAGACTTGTAAGAAGATCC
+TGACTGATTTCTTTGGGATGGATTTGTACGCTCCATTAACTGATGCGGATCTCGAAAGTG
+AACGTCGTTATAAATCAACAGTTCGTGCAACCGAAACGCTTGACAGCGATGAAGTTGAAA
+AACGAGGGCGTAAACTTGAAGTGATATATCACTATACCGGTGAAATCAAACCTGAGAGCC
+CTGTGTGGGTGTATCTCCGAAATCGAGGTCTTAATCGAGTTCTGAGCAACCTTCCCAAGG
+ATTTAGGTCTGAACAAACGACTTTACTACATGGATAAGTCACTGGAAAAACCCACGATTT
+ACCCGGGAATGATCGCAATTTATCGCGATACCCGTGGGCGTCCTCTGACAATCCACAGAA
+CGTTCGTCGAGTTAAATGGTGATAAGGCACATGTTGAGAATCCGAAACTGATGATGAAAC
+CGCCTGCCGATATGACTGGCGGCTCAATTCAGCTGTACGATCCACACTTCAATCCAGGTA
+CCCGTACCTGGACGTTAGGTGTGGCTGAAGGCATAGAAAACGCGCTGTCAGTTACTGAAG
+CGACTTCAACACCGTGCTGGGCCGCGAGCTCTGCCTGGTGCCTTGAAAACGTTGAAGTGC
+CGGATAGTCTCCTGCCTCCCCCTGGTGTGAAAGTAATACAGTTTTACATCTGGGCGGATA
+AGGATCTTGTGAATACAAAAGGCACTTCCCCGGGAATGGAGTCAGCTAAACGACTTCAGG
+AACGTATGAAAGAGTTTTTTGCAAAGCGATATCCCACTTCAGAGCTGACAATTAAAGTCT
+TTGAACCTGATTTCGATATTCCTGTAGGGAAGAAAGGAGTCGACTGGAACGATGTACTAA
+AATTAACAGGACCGGATGGATTCCCCGTAAAATGGGCTCCTGAATGTCTTGCTCAGCTTT
+AAATCCGATAACTCCCCCGCCTTTTCAGGCCGGGGGGGGTTATCTCTTTAGTGTTTATTT
+ACGTTAAATCCTAAACAGATAATCCGATTTCCTTCGTGAAAATCACCTGTTATTCAGGTT
+TTTTTTACGGCTGAGATGCTTGCTCAGTTTAATAAATGTGCGATACATCTGGCTACGGTC
+GGTTGTATGACATGGTATATCCATAAAACTTAAAACCCCTGACGGGAGTATTACCGTTAG
+GGTGATGCTCATCGTTAAATATCGGAGAGCATTGTTATGAATATTGAAAATCAAGATTTA
+TTTAATACGTTCGCTGCTGTGATTTCATCTCATATCGTTGAGCAACCATCTTCGTGTTAT
+TACCTTCATGATAATGAAATTGACTTCACGATTTTAAAACACAGCATAATAGATAAAGAC
+AAAAACCTGTTGTACGTTATTCGTCCTTCAGGAACCTGTTTGTTGCGTTGTGATAAATAC
+TTCTTTCCGAATTACTATCTTACAAGTCGTGGAGATTATAAAGCATTTAAGTATGTGCAT
+TTTAATCTTGCAACACGAGAAGCGGAAGAAATCACCTGGCAGCAAGCTTTTGAAATTTTG
+TCCAAGCCGGGAAGACCTCCATTAAGAGGTTCACTTGGTAAATTTGATTATTTAAAACTT
+GTTATTGATGATCTTCGTGCGCGAGGGTATGCCGATTTCCTTCCAGCATACAACCTTGAT
+GGCCTTCGTCACTTTGCAGTAAAGGATGAGCGACCATCACTTGTCAGTTATATCGACAAT
+GTCATGGCACTTTGCGCATAAAGATAACACATATTTTTACTACATCCCTGATGGCACCTC
+CCATCGGGGTGGCCCTCAGAGTTGAATCTGGAGGTCTTATGAAATTAGCTACAGATCTGG
+TCAATGCGGTTCTGATAAAGAATGGCATTGTACCAACTTCCATTAATGAGTTGCCTGTAA
+CGTCGCTGGTAAAGCCATTGACACAAGTGCATCTCAGCCTGTATCTGAAAACAACGCATT
+TATCTCAGTTCGTCCCTGACTACGTTGAGTCTCTGAAAGATTGTCCGGTTTCGTATGATA
+TCGGCCTTGAACTTCAGCAGTGTATCAACAGTGCTGAATTGCTCTGTGAAGACATGGAGT
+CACTTGAGTTTATCTCTGTATGGATAGAGCTCTATACGTGTAATTCAAAGCAACAGCGGT
+TTGAGAAAAGTAACTTTTCTTTTCGAACTGAAGATATCGAGCTGGCTAAGATGCTGTCTT
+GCTCGCATGAAATCTTAATAAGTCAGGCGGCTTGTTTCTGGCTTTTGTATTTTGAAGATT
+TCATGAAATATGTTCGTAATAGGCTCTGTGCATTACTCAGACAGGTTTTAATTTTGATTG
+CAGGACTGCGAAATGTATACCTGCAACGGAATGAAGATCAGTTGATTAAGAGAGTTAAGC
+ACGGGAATGAAATGCTGGAGGTGACTCTTAAAGCTGTTGCACTATGTTCAATAGAAAGGT
+ATCTGAAATCATATGCCTCTTTACGAACAGAAGCGGCGGCTTCTGGGTTTATCAAATGCA
+TTCAGTCTTATATCAGTACTGGTTGGAGACATGGCTATATAGTCTGTCAATATTCAAAAA
+ATGGACGGTCTCTTGGTAAGTCATTACCACTTTTTATAAAAGAGACATCTGAGCATAATA
+TACAGAAACGTGTCAATCGCCTTATATCTTCCACGATTTCGGGGCGAAATAAAGATTTAG
+GTCTTTACGATTTCTGATTAACATTACCCATCCGGGGATTACATCCCTGATGGGTGTAAT
+CCCATTTTTTATTTAAGTGAGGATTACATGAAAATTATTGAGAAAATCATTAATGCATTT
+CTGATATCGCGTAAACATTCAGTGAAGGTCAGTAATGTTATCTGCTTGAGTGGCACCGAC
+GGTAAATTTACTGGAATATGCTGTGACGCCGATGTTTCATTTGATTTTCTTTATTCGTAT
+GCCCCCGCATACAGTTCAACATTTTTAGATATCCCGTTTCCTGGGTTTGAAGACCAGGAC
+ATCGCGGATTGTGTTAAATGTCAGTTAGATGTAGTTAAAAATAAACGGAATCGGTCTTTT
+TTAATTGACCATATTAGATTTCCAGTTTCCTCAAGGGAAGGATTCACTCTGACACGCGGT
+GATAGTTACGACGTGACTGAATGTGAATATAATAAGGAACGATTGCTACATCTGACCCGA
+CAAGGACGTTTTTGTGAAGACTATCTCACGTTCAAGGATGGCCTGAGTTCCTTCTTTTCA
+TTTGTGAATTTCGAATTACATGAAATAGTGAAGGAAGGTATACGTTTGGCACTTGATGTT
+TTAAACAAGATTACATCTGATCAACCAGACCGTCTTATAAAAGACTTTAAGTATCATGAT
+TGCTTCGGCAGTTATAATGTACAAATATTTTCTAAGGGTCTGCCAGTTGATATCCTTGAA
+ACGATGATTGCACCTGATAGGTTGTTGTCTAACTTGTCAGGTAGTCGTCAGATTATGAAA
+AATGCAAGTCGCTATCTTAAAGGCTTTGCCCTCAGTAATCGTGTTTACATGAAATACGGA
+TGGCGTTTAGCAGATGTTGACACATCTGACTATGCGAAAGTTATGTCAGATAGAGAAATG
+CATGCCAGAGATGATCTTAAGGCGTTTTGCAGTGTCTTTTTTAAAGAGTGTTTCGCATCC
+GGAAAATATGAATACGAAGCATACCTGAGTGAAAGACAACACGCGATTCGTAACGGGTAT
+TAATACTTATTATCAACTTATCTAATCCCTGAGGGAATTCTTCCCTTGGGGAGGATTCCC
+TCTTAACCGAGGGCTACAAAATGAAAGCGATTTATAAAATAATTGAAGCGATGCTGGTGA
+AAATGGGCTTTGAAGGTGCCGTGATCCAAAGTGTCAATCTGGAAACGGGTGTGATTCAGA
+GTCTAGTTGTTAAGGCTGATATTCCTGTCCGGACTTTAATGCCGCATTTAAGGCGATATC
+TGCGCGATTGTGAGCCTTTATGGGGACATGACGTGGATTACCACCCTATAGCACAATATT
+GCTCAGGAGCTGCGTTGTTGAAGGCTGGGCCGGTCACTCTTGAAACCTTTCGGTTTGAGG
+TTTCAGTGTCAACTGCTCACCTGCGGCTTGTGGATGTTGAGCCGGACTGTCTAAATGAGG
+GTGTGAACCGTGAAAAACTGGAGTATGTATATTACCGCTCCAGCAATGCAGACAAGGATC
+TAATACTTGGTATGGTTGAAAAAGGACATAATTTTATCAACCATCTGCATGAACTTTTAC
+GCTCGCGCTTATCAACGGCTTTGCCGCTGATTTTCGCAGTTACAGAAAAGATTGCGGAGA
+GTTCAGTTCCACAAGTAGTCACCAGCTTTTTCAGTGTTGACCATCAAATCAATGCCCAGA
+TAGTAGTCGAACCTGTACCCGTTTCAGTCGCAGACCAGATAATTTCTGCTGACTGGAATG
+TGTGTAGTGTTTCAGGAGCGGATAAGTTCCTGAACCATGTTAATCGTTATCTGTCGGGTA
+GGGTGATGAAGCGGCGTATTTACGCTGTTATAGAAGCTTGCGACGGTGGATCTTTATCCC
+TCAATGCGAACTTAGGTTGCTTTACATCACCTCTTCTCGTAACTGAGTATAAAATGGTTC
+AGTCACACTCTTCATCGCTTTATCGAAAGGCTATAAATAACTCGCTTAAGCAAGTTAATT
+CGTATGCTCCAGAGCATTCAGATGACCTGCTTTCTATGTAATTAATTTTACCCATTGGGG
+AAGCGTATTCCCCGTGGGGGTTGCTTCCTTTCTTCATTAAAGAGGAAGTGAATATGTTTA
+ATGAAAGTGATGATAAAAACTTTGTTAGTGCAATGCTTAAATGTCAACTTGGCCTGAATA
+TAAGCCAAGAGGATATTACAATATATGACAAAGAAAATCATTTTGAACAACTTTCTTTTA
+AAGCAAATGTGGCGCTTGATGATTTGTTATTTTATCTGGATTTATATATATCAGAATTGA
+TTAAGCATAATGCGCCGTATTCTGAAACTGAAGTCCTTCGGACTAAAATCAAATACTTTC
+TTAAAGTATATGAAAAGTCTGGTTTTCAGAACATAAGAATTCGCGGTTATCATAACGCGC
+ACAGTACTATAGATATTGTCGATATCGCATCATTAATATTGGCGGGGTCTGTACCGGAGT
+CTGAACATGATTCAATAGATCCTGTTTTAAGAAAGGAAATCTATCAAAATCGCATGAGTG
+TTGAGGGTAAAGTTCTCATTGCCCGTTTTGCACTTAAGCAATTTTTCCATTCTGATTTTG
+GTGATTTCATCTTAGAGTTCGAGAAAAGTATCTCCAAGTGTTTGAATACTTCTCTCCAGA
+TAATTAAATCTGTAAAGAACTCATTTAACCGTTTAGGTCAATATCAATATCAGCGTCGTG
+TAAAAGATGACCTGACTTTGCATCTTGATTTGAATACAGATGAATACCCGGCCTGTATGC
+CAGACCTTTACATCGGTTTCAAGGAGTCTGAAGGGACGACGGGAGTGTATCGCGATGATG
+AAAAAATCATTCGTCTTTATACTGGCGTTAGTTCCGGAAAGGATGTTCCTGTAATGATGA
+CCGTTCGATTCACTGGCTGTGACGGGAGTGTTTTGTCTGAATCATCGCACGGTACTTTCT
+GTTCCGTGGGACCTACCGGCCGAGTGCAGGTTTGTGACAGAGTTGCGTTGGTCCAAGAAG
+CGGTCGAAGAGTTACGGGATGTTGTTTAACCCTTGTTTTTTACCTCTTCATTCCAAAAAG
+TAACTTTGTTCTACCAAATGACCGCGCTACCTATTCTGATCAACTTGCAGGAAAGAATGG
+CGCAGTAGTACATATTTTTAATCCACCCACTGGGGAAGTCGCTCCCCTGTGGGGCACTTC
+CTTTAATAATCCTGAGGAAGTGAAGATGACTAATTCTACTGATAACCAGAACTACGTTCG
+TGCAGTACTGGCAGGCATTGGTATTGATTTTGATGAAACAGAGATGTTTATCAGTGTCTC
+TCATTGCCAGAGCGACGAAGTTTCGTTTACATGCAGTATATCAGCCAGTGAGTTAAGAGA
+ATCTGCGGGGCATTATGTGGATACTCTTAATGATACCCAACTGGCTGGCCTGGATGCGGA
+TGCACTCAAGAAGCGACTGGTTTACTTCCTTGAGGTTTTCGACCTGGTTTCCGGTCAATA
+TCTGGATATTTCCGGTAAACATTTCGCGACCAGCCGCTTTGAATACGACGATGTCTGTAG
+TGAGATCCTGAGTAACTCTGCGGACAGCGCCCAGCCAGGTGGCTATGATCGTGAAGAGTA
+CAAAAGACTGATGGAAGTTGATGGTCAGGTTTTAATCGCCCGATTTGCACTGGAAAAATT
+CTGGGATACGCATTTTATTGGGCTTATCAACTATGTATCAGATGAAATAACATCCGGGCT
+TTATGAGGTTTATCGCACGTTCAGTGATATAAACATGGCCGGTTATACATTTAGTGAGTA
+TTCATATACGCGTCGTATTACCGACGAACTTAGTTTGCATATTTCACTTAAAGAGGACGA
+TTTCGAAGAGCAATTAACCGATTGTTATATGGATGAAACAACGCTGCCGTCTGGCAAGGT
+GGTTTTACGCCGTAATAATGAATCAATTATTGGGATTTATGAAGGATATGCTTCAAAATC
+TTACTTTCCTATGGTTGCTAATGTTAGAGTCCTTGATACAGATGGTGAAGTTGTTACTGA
+ACTTTACCAAGGGGTGAATGTATCAGAATTAGCTGGTGGTCGGATTAAAATCCATGACCG
+TCAGGAATTAATTTCTGAGGTGTTCGCTAACTTACGTGAATTCATCCCAGCATCAGAGGA
+TAAAATCTTTGATGCGGCATGAGTCCTGAAGGTTGAATTATATATTTTCAGGTTTTTATA
+CTTCTAAGAAGGCACGGTTATCCGTGCCTTTTTTTTTGCTTTCGTCAAAACTTGCATTGT
+TTTTACAATTTTACAACGTTCTTACTGCCCTATATGTTTTACGGTACTGTACTCTTGGCA
+CCGTTACATGTAAGCCTTCCATTACCTTCTTCAACCAAACCTAGCCTAATTTACATCCTT
+CCAGCTGTTTCCTTCTCTGCTTCTTTTACTCGAATGTTTTGCCCCTTGCTGACGTTTCCG
+GCAGCACACAGTCCGAATGCTGGAGCCTCCAAATTACTTTTTACTTCTTTTGTTTCGGTT
+TCGCGAAAATAGGTCTCTTATCTGAAAAATGGATCGTTAGAGATTTGTATACTGTTTAAA
+ACAAAGGAGTCACTATGCCTGCCACTACAATCCTGAGCAATAACCCTGTGAATTCGGTCT
+TCTCTAATGACAATAGCCATTTCACATACCGGCATATTGATTTCAGTATTGAGCTACTGC
+TTTCTTCAGGAACTGACTCACAACTGGAATATCTGTTTCTCAAACCGGCGGCTGAAGTAA
+AGATCGATTTACAGCGCCGTTTAGCTAGTGGGGAACGTTACGTTACAACCGAGAGTTGTG
+ACAATTTTAGCGAAGTTGATGGCTGCATGGGACACGATTGCTGAGGACTTTATAACGGCA
+GGCGTCCGATTTAATACAACACGAGACACTATCACCTAATGATGACTGAATCGTTCTTTG
+ACTGGGTTGTGTATTGCATCACAGGCGTAATACTGGCATCTGCGTTCCTCGAAGGAAAAA
+GAACCCGTTTTCCGGCTGCATTTTTTTACGGAAGCATTGTGCTGCTGGTCGTTTTGATAG
+TGGCCGGTGCCCTCAACTGGTGGTTCTACCGTTCTAAATTCGGCTCAGTTGTCGTTATTT
+TTGCCGCGACAACGCTGTTAATGACCCGATTCAGATTGGTTATTTATGCGTTCAGGTTTC
+GGACGCTGGTGGCAGATCTCCAATCACATGTAGCCAAGGGATTCAGGATAATCCTTGTCT
+TACCCGAAAATGAAGACGAGAAGACCGTTTTGCTTAGCAAATTGTCGAAAGTGATACATT
+CTGGGACGTTGTTTTATACCCGAACAGCTCTGGGTCCATATTCTGGGGATCTCCTGCATG
+CTCTGGGACAAAAGCACCGAAATGGCGAGGGCTATCTGCTTCTTTGTGAGCAACAACTTC
+CGGCTCGAACCTGGCTAAGCACTGTAGAAAACGGTCAACCAGAGAAGTCTATTGCAGTTA
+ATTTTCATTCGATCCCTGATATGGAGTGATACCCCTATGAGCAATACAGATTCACAGACC
+GTACCAGCTGATGCCCTGTGTGAAAACAGTTCTCAGGTGAAAATTCAGCTAAGTCGAAGC
+GCCTCACGAGCATTGACGACGGCGAAAGAAATTCTTGAAACCCGAGGGCTGGTATCCGTA
+TCCACTGAAGACCTTGTTCAGGCCTGTCTCGAAGAAAATCAGCCACTCGACCTGGCAAGT
+ATCTATCTTGAGCACCGGCTAAAACAGAAGGGAACCAGTATCTGTGAATTTTAGTGTTTT
+CCAACCTATTGGGGAAATTCCGGAATGTGTTTATATAGCTGTAAGTAAAGCACTCTACAG
+GTAAATAATGAAAAGCAAAATTCACTCTTCAGGAACGTCCGGCACGAAACGAGTACTTAA
+AACGGATATTGCGTTGCCTCTGCTTTGTTGGGTGTTCACCAGTCCATTCAGTAACTGGAC
+TGATAAGTTTTTTACCGGCACAGAAGTGCCGGAGGGCTCGCTGCCGGGTCTAGAACAGGC
+GCCTGAGGCTATCTTCCGATTTGTGCTCAATGACGAAGGTTTTGATGTTGGTTTTGACGC
+GGTGGGAATGGATCTCTGTTGTTTCTCTATCCCGCTTTCGACGATGCCCACAAAGAATCT
+GGACGACGAAGAGACGTTGTCGAGGCTTACCGGCGACGTGATACACGGCGTCCTGCTTTC
+GCTTCCGGAGTACATTGAAATGCCAGACAGGCTGGTCTATCAGCTAACTGATGAGGTCAT
+GGCGTTCAATTCACACTGTGGCAACGGAATTCTACATGGATGGACGACGGCTCAAGAGTT
+GTGGCGAAACGAGATCCTGCCACGCACCACTATTTTGATGCAGCAGACATCAGTCATTCA
+CTGAGTTCCGGGGGCTCTGGATGAAAAAGCGACTTTACCTTCTTGAATGGAAACTTCGTG
+AGACAAGAGCCTGGTTAGGATGGATGGTGTTCTGGATTATCATCAGTTTTATGTTTTTAT
+CAGCGATGTTCATGACAGGTCATTTGTTAAACAAAGTTGTCCTCCAGCCCGTTTGGCTGT
+GTATCTGGTCTTTACCCTGGCTGGGCTTCTTGTTGAAGGTACGCGTGACCGAAATGGATA
+AAGGGCTCGTGAATACACTTCAGCTCGGAGATCTGCCGGTTTTCCGCTGGAGTCGTTCTG
+TAGTTCCTGGCACCTGGTCTGTTGACAGAATTAATGGACGCTACCGGTTGAACCGGATTG
+GAACGGATGGTTTGACGGTACACTATCCGTGGCGCCTGTACTATCAGCCTTTGTTCCTGA
+CACCGGATAAGCAGATTTCTGATATTAACGGACGTGAACATGAACGAAAATTCTGACGCA
+GTAGTGAGTGCCGCTACTTCCTGCCTGCTGTATGTGCGTGAAATCGAAAGGTCAGGCCCC
+GGTGAAATGCCGGTGTCATATTCAAATGAGCTTATCCAGAGATGGCTTAGTTCGGCTGAA
+CGTCGTAATTTGCATTCCCGCCACAGCTTGCGTTCGATTCGTACAATTCTGAAGCACGCA
+AGGAAGAGCCGTCAGCCTGATTTTTAGAGCGTGATGCATTTGCTGGTGGAAGGGAAGGGT
+GTAATCCCGGATGTTTCAGTATCGGATTTGGGCAATGTGCAGAACATACGTAATGAACTG
+ATTGGTCTGGGTTGGTGGGTGAAGTTTGGTGTAAAGCAGGACTGGCAGCGCATCAATCTG
+CAACGCCAGCCGGTCAGTTTTGGCCTTTTGAATGACCTTAATCGTTGTTTTCGGCATGAC
+GGTCAGCAGGTTGAACCTCTGCCACTTTATACAACCGGCAATCCCGGGGAATTGCGGAAG
+GTGCTGTAAAAGTACAACTACCGGCTGCATATCGACTCTTCAGAAGTCGTTGAAGACGTA
+ACGGTGTTGCGCTGCTTTATTGAAACCGGAGTGATGAATGGCCAGTGAAGATTTACTCTT
+TTACCGTGACCGGATTCTGGAGCGAATTGAAAAGCTCAGATCCTTTCTGAATGACCATCA
+GCCGGTGATGGCCGAGCTGATGACTGTGGGGACCGTCACACGACACGAAGAGCGGTTGAA
+AGAGGTGAACCCCATCGAGGTGAGTACTATTTCAGATGCCTCCGTGGATGAAATTATCCG
+TGTTATTCAGGATTTCTGTATCGATGACATTGATGTACTCAGCAGGAATTCGACGAAAGT
+GACAACCAAATACCCGGGTTTGATTATTGTTCCTGAGGGTGCCGAACAGCTGAGCGGAAT
+TATTTGCGATATAAATGATGCCAAAAGTGACTTTGCCTCTGCAATGAAAAGGGTGAATTC
+GGAGAAACACATCCGGTTTAAGGAAGTTCACCGTAAGCTTCCCGGTCTGGTGACTGCGCA
+TTCCACTCGCAAAATTCTGTTTGTGGAAGAACAGCTCAAAAAAGTTACTTTTGCCTGGCG
+GCTAAACCGAAACCAGGTAAAAACAAACGCAAGTGATCTCATCGCGATGCTGGATAAGCG
+TCGTTTAGTAGCGGTCAAATCGCCCGTGACAACTGACCTGACAGTGGTGGCGAACATCGA
+TAGAGCGAAGGCATTACTGGAAAGAAAAGTACTGAGAGACGGCGAAGGTTATCGCCTTTG
+TCGAACCAATACCTTCCCGGTTCCGATAGCGCATTTGTTCACATACCGGCCTGAAGGCAA
+GGAGCGTGGAAGTAGCAAATATGCCGAGACTGATTACAAGGTGGTGAAAGCCTCATTACC
+CATTTTTGGCGTCGGACAAAAGCCAACAATTAAAAGACTTCAGGACTGGGTGCCAGCGCA
+GGATGAAGCACTGTCCAATGGTCGAAGGAGCAACCATAGCTACACGGAACTTGTACCCGG
+TGCAGATCTTGGCATTTTCATTATGAGAAAGGTCTGAGGAGAAAAGCATGCAATGGATTT
+CCACGACCAGCCAGAAACTTGATGAGAGACTTTATCGTGTCTGTGTCTGGGTGAAAAAAT
+ACCATGAGGATGCCATCAACCGTGTTGTGTTGACGGTTGATCTCAGTAAGGCCCGCCATG
+ACCCGATAGAGGACCAGGTACGGGCCGAGTTACTGTGTGGGCATTATTTTCTGATGCGGA
+AAGAGAACAACGCAAAATCGGCGCCAGCGGATCAGAACTTTGAATTTTTGCCTGACGGCC
+GCAACCTGAGCTGGCAGACGTCGACACCGGGGCTTCAGCACCTTCTCCTGAACAGCAATG
+TACCTGAGTCCCTTAGGCCCCTGGCTGATTACATTCAGATGCGTCTGGCCAAGCTGACCA
+TGGTCCCGATGTCGGGAACCATCATGAAAGCCGCACTGGAAGACAGCATCAGCTGGGTAA
+AAGTGGATCTGCGATACTACTGGCAGTATGAACTGGTTAATTCCCATCTGGGGCCTGTTC
+AGGTAACTCATAAGGCGCTTGTGCGATTCGGGAGGCTGGCAAAACACGATGAAAACGCTA
+GTGCAATTCGAATGCTTCGCCAGCGGTTGTCATCACCGTTTATTCAGGAATTTGAGATGC
+CTGGGGAGGAACTGAAGCGCAAGCAGAAGATCATGAATACCGTTGATGTGAAAATGCTTT
+TCCACACACATTATCCGGGCCAGAAATTACTGCTGGCCCGATATGCTAATGGTTGGGTGC
+TGGTGGATTGTTTCCTGTTCCACCATATCAAACCCAAAAAGAAGGCGAAAAACAAAACCA
+AAGCGGGTAAATCAGAAACTCAAAATATCAAATCGACGGGGAGTGAGGATCATGGAACTG
+GGCATTATGGTGTGCATCGTGTTGTTACTCTCACTGGCAGCGGTGTGGATCAGTAACAAG
+ACGGTCGGATTGCTGGAAATCCATTACTTTAAGCGGCCGCTGAGCATGGAGTATGCAGCC
+TGGCTGCGAGTGATGTGTGCGGGTTTGCTATTTATTTTTATTCAGATGGTCCCGGCATTC
+ACGTTTCTGTATACCCTGAAGCTGGTGGCACTGTTAAATCTGGGCGTGCAGACGATGAAG
+CTAAACGGGGTTTATAAATTTAAACGCACCGGGATGATGCCGCCGAAAGACGCCCCTCAT
+GATCTTGGCCGCTTTAATCCATTTCGAAAGAAGTAATCCTCATTAGCGCCCGCAGGGGCG
+CTACTCATCCAGCGCCTCACGCATGAACTTCGTCATCGCTTTCTTACCTGCGTCAATGTT
+ACGGATATAGCGGGAAACCATTTCTGGATTGCTCCAGTTACCCATCTCCATGATCTGCAA
+GTGCGTGTACCCGGCATTAGCAAGTTCGATGGCGCCGCCAACCCTAACGCTGTGACCAGT
+CCAGCATCGGGTGCCCGCTTCCTGCGGATGAAGTTCATCCCAAAACGCTTCAAAGGCCCG
+GAGCAATGTGTTTTTACTGAGCATACCCTCATCATCGACAATAATGGGCTTTCCATTTTT
+CCCGATCGGGGGACGGGTAGGTCGGTAAGGCATATTATGATTTTTCAGCAGCGTATTGAT
+CTCATTCCCTTTGCTCCGGAGACCCCATCCAGGGGGCATATATCCGCTGTCCTGATAGTT
+AACTGCCTGGAAGAGATAATCCTTCGGATGGCTTTGCTGGTCCCTTTTGACCATATCCAT
+CAGCCTGATTAGGGTGGCAGTGAGATGAGGGGTCAGATGATAGGTAAGCAGGGTACTGAC
+AGTGGATTTTGTCCGGTACACCGTCAGGGTAAAACTGCCTGTCTGTTCATTCAGCACAAG
+GTCCTGCATCCGAATGCGCCGAAGTTCTGCTGAGCGCAACAGTGTTTCAAAACCTGTCCA
+GATAATGCAAAGGTCTCGGAGTTTGCGCACCGACTGTGTCGTACCGTGGGCTTTAATCAA
+AGCTTTCAGGTCGGAGACTAGGAATGGCGTTGCCTGACGAGTCACTTTTTGCTCTCGGGC
+TTCAGCTTGTTCGAGGCTTGCAAGAATACTCTTGACCTTGGATGTGATGATCCCAGGGCG
+ATCGAGTGCTTTCCTATGGATACTGTTCAGCGCGTGCAGACAACCTTTAATGCTGCTGTG
+TGACAGCGAGCCCTGAAGATAGTCCAGATAGGCCAACAACGGGGGTTCTGTCACCGGGAG
+AGAACTGGCAGGCCAGGCTTCGTTTCCCTCCTTTCCTGCATTAGCTTGGTACCACTCGTT
+CCAGGAACGCAGCCATTGAAGGTAAGTTTTAGCCGTGTTGTATTTCATATGAGAAAAGTA
+AAAAATGAGCTCCTTAAGGTCATTATTGGGCACCTCAAACGTGACCAGTTCCTGATGGAG
+GTCTGAGTCTTCAAACTGTCTGGTTACTGGCTTGCTGTTCATGGTGGTCACCTGAATACA
+CTGTTTTTATTTACAGCTATTTTAGCACTGAGGTATCCACTTATGAACAGGTTCACAGCA
+ACTAAAAAAGAGAGAGCGACTACAACAACGATCCGGAGATAAACATCAAATATTTGTGAA
+AAAAATTAGATTCTAGGGACAAAACGACATAAGATTGGGAAACCGTACTTTCGCGGGAAA
+TAAATTAAGGTTGACCATGTCCGAAACTAAGCAGGCGTATTTAATGAAATTTCGTAAGTG
+CTCTTCTTTCGACACACTGGAAAAAGTATTCGAACGACTCTGTGAAAAAAATGCAGGTAT
+AGCATCACTGGAAATTTCCGGGGCATATGACCATCGAAAAGCTGAACTGACAATGAAGAA
+ACTCTACGATAAAGTACCCGCAAGCGTATGGACACTGGTCCGTCAGTAATATGAAGATAT
+TGGTAACCAATTTATCGCCGACTTTTCAGGAAAGGAGATTTATGAAAACGTCAGCAGTAA
+AATTAAAATTTTTTAATATTCTATTAATACCTCTAAATAAGCTTAATTAGTAAAGTCATC
+ACGTCATTCAAAATCCTGTTTCCGCTCCATGGTGGTAACTCGTATGAGAATTAAACATCT
+AATATTTTTACCTGTTCCCTTCATTTCCTTTTATTTAAACGCGGCGAGCTTGGACGAAAT
+GGTGATGCTGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGGC
+TTCTGTTTCTATCAGCCGTCCCTCCTGTTCAGCTACTGACGGGGTGGTGCGTAACGGCAA
+AAGCACCGCCGGACATCAGCGCTATCTCTGCTCT
+>NODE_7_length_1329_cov_85.8474:NODE_13_length_9382_cov_42.6014,NODE_20_length_5859_cov_41.9915';
+CTGATGAATCCCCTAATGATTTTTATCAAAATCATTAAGTTAAGGTAGATACACATCTTG
+TCATATGATCAAATGGTTTCGCCAAAAATCAATAATCAGACAACAAAATGTGCGAACTCG
+ATATTTTACACGACTCTCTTTACCAATTCTGCCCCGAATTACACTTAAAACGACTCAACA
+GCTTAACGTTGGCTTGCCACGCCTTACTTGACTGTAAAACTCTCACTCTTACCGAACTTG
+GCCGTAACCTGCCAACCAAAGCGAGAACAAAACATAACATCAAACGAATCGACCGATTGT
+TAGGTAATCGTCACCTCCACAAAGAGCGACTCGCTGTATACCGTTGGCATGCTAGCTTTA
+TCTGTTCGGGCAATACGATGCCCATTGTACTTGTTGACTGGTCTGATATCCGTGAGCAAA
+AACGGCTTATGGTATTGCGAGCTTCAGTCGCACTACACGGTCGTTCTGTTACTCTTTATG
+AGAAAGCGTTCCCGCTTTCAGAGCAATGTTCAAAGAAAGCTCATGACCAATTTCTAGCCG
+ACCTTGCGAGCATTCTACCGAGTAACACCACACCGCTCATTGTCAGTGATGCTGGCTTTA
+AAGTGCCATGGTATAAATCCGTTGAGAAGCTGGGTTGGTACTGGTTAAGTCGAGTAAGAG
+GAAAAGTACAATATGCAGACCTAGGAGCGGAAAACTGGAAACCTATCAGCAACTTACATG
+ATATGTCATCTAGTCACTCAAAGACTTTAGGCTATAAGAGGCTGACTAAAAGCAATCCAA
+TCTCATGCCAAATTCTATTGTATAAATCTCGCTCTAAAGGCCGAAAAAATCAGCGCTCGA
+CACGGACTCATTGTCACCACCCGTCACCTAAAATCTACTCAGCGTCGGCAAAGGAGCCAT
+GGATTCTAGCAACTAACTTACCTGTTGAAATTCGAACACCCAAACAACTTGTTAATATCT
+ATTCGAAGCGAATGCAGATTGAAGAAACCTTCCGAGACTTGAAAAGTCCTGCCTACGGAC
+TAGGCCTACGCCATAGCCGAACGAGCAGCTCAGAGCGTTTTGATATCATGCTGCTAATCG
+CCCTGATGCTTCAACTAACATGTTGGCTTGCGGGCGTTCATGCTCAGAAACAAGGTTGGG
+ACAAGCACTTCCAGGCTAACACAGTCAGAAATCGAAACGTACTCTCAACAGTTCGCTTAG
+GCATGGAAGTTTTGCGGCATTCTGGCTACACAATAACAAGGGAAGACTCACTCGTGGCTG
+CAACCCTGCTTACTCAAAATCTATTCACACATGGTTACGTTTTGGGGAAATTATGAGGGG
+ATCTCTCAG
+>NODE_7_length_1329_cov_85.8474':NODE_16_length_35628_cov_42.0221',NODE_25_length_15938_cov_42.5346';
+CTGAGAGATCCCCTCATAATTTCCCCAAAACGTAACCATGTGTGAATAGATTTTGAGTAA
+GCAGGGTTGCAGCCACGAGTGAGTCTTCCCTTGTTATTGTGTAGCCAGAATGCCGCAAAA
+CTTCCATGCCTAAGCGAACTGTTGAGAGTACGTTTCGATTTCTGACTGTGTTAGCCTGGA
+AGTGCTTGTCCCAACCTTGTTTCTGAGCATGAACGCCCGCAAGCCAACATGTTAGTTGAA
+GCATCAGGGCGATTAGCAGCATGATATCAAAACGCTCTGAGCTGCTCGTTCGGCTATGGC
+GTAGGCCTAGTCCGTAGGCAGGACTTTTCAAGTCTCGGAAGGTTTCTTCAATCTGCATTC
+GCTTCGAATAGATATTAACAAGTTGTTTGGGTGTTCGAATTTCAACAGGTAAGTTAGTTG
+CTAGAATCCATGGCTCCTTTGCCGACGCTGAGTAGATTTTAGGTGACGGGTGGTGACAAT
+GAGTCCGTGTCGAGCGCTGATTTTTTCGGCCTTTAGAGCGAGATTTATACAATAGAATTT
+GGCATGAGATTGGATTGCTTTTAGTCAGCCTCTTATAGCCTAAAGTCTTTGAGTGACTAG
+ATGACATATCATGTAAGTTGCTGATAGGTTTCCAGTTTTCCGCTCCTAGGTCTGCATATT
+GTACTTTTCCTCTTACTCGACTTAACCAGTACCAACCCAGCTTCTCAACGGATTTATACC
+ATGGCACTTTAAAGCCAGCATCACTGACAATGAGCGGTGTGGTGTTACTCGGTAGAATGC
+TCGCAAGGTCGGCTAGAAATTGGTCATGAGCTTTCTTTGAACATTGCTCTGAAAGCGGGA
+ACGCTTTCTCATAAAGAGTAACAGAACGACCGTGTAGTGCGACTGAAGCTCGCAATACCA
+TAAGCCGTTTTTGCTCACGGATATCAGACCAGTCAACAAGTACAATGGGCATCGTATTGC
+CCGAACAGATAAAGCTAGCATGCCAACGGTATACAGCGAGTCGCTCTTTGTGGAGGTGAC
+GATTACCTAACAATCGGTCGATTCGTTTGATGTTATGTTTTGTTCTCGCTTTGGTTGGCA
+GGTTACGGCCAAGTTCGGTAAGAGTGAGAGTTTTACAGTCAAGTAAGGCGTGGCAAGCCA
+ACGTTAAGCTGTTGAGTCGTTTTAAGTGTAATTCGGGGCAGAATTGGTAAAGAGAGTCGT
+GTAAAATATCGAGTTCGCACATTTTGTTGTCTGATTATTGATTTTTGGCGAAACCATTTG
+ATCATATGACAAGATGTGTATCTACCTTAACTTAATGATTTTGATAAAAATCATTAGGGG
+ATTCATCAG
+>NODE_8_length_346_cov_41.0595:NODE_27_length_78_cov_99';
+TAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATAAGACAAAAGGCTGCCTCATCGCTAA
+CTTTGCAACAGTGCCGGCGCGAGCACCTGAGCGAGCTGCAAACCGTGTTCGGTTTCCGGC
+CCTTCACCATGAGCCATTACCGGCAGGCCGTCCAGATGCTGACCGAGCTGGCGATGCAAA
+CCGACAAAGGCATCGTGCTGGCCAGCGCCTTGATCGGGCACCTGCGGCGGCAGTCGGTCA
+TTCTGCCCGCCCTCAACGCCGTCGAGCGGGGGCACTGTTGCAAAGTTAGCGATGAGGCAG
+CCTTTTGTCTTATTCAAAGGCCTTACATTTCAAAAACTCTGCTTAC
+>NODE_8_length_346_cov_41.0595':NODE_28_length_79_cov_78';
+GTAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATAAGACAAAAGGCTGCCTCATCGCTA
+ACTTTGCAACAGTGCCCCCGCTCGACGGCGTTGAGGGCGGGCAGAATGACCGACTGCCGC
+CGCAGGTGCCCGATCAAGGCGCTGGCCAGCACGATGCCTTTGTCGGTTTGCATCGCCAGC
+TCGGTCAGCATCTGGACGGCCTGCCGGTAATGGCTCATGGTGAAGGGCCGGAAACCGAAC
+ACGGTTTGCAGCTCGCTCAGGTGCTCGCGCCGGCACTGTTGCAAAGTTAGCGATGAGGCA
+GCCTTTTGTCTTATTCAAAGGCCTTACATTTCAAAAACTCTGCTTA
+>NODE_9_length_4537_cov_41.0029:NODE_27_length_78_cov_99';
+TAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATAAGACAAAAGGCTGCCTCATCGCTAA
+CTTTGCAACAGTGCCGGTAAATCCATGCTGGCCCTGCAACTGGCCGCACAGATTGCAGGC
+GGGCCGGATCTGCTGGAGGTGGGCGAACTGCCCACCGGCCCGGTGATCTACCTGCCCGCC
+GAAGACCCGCCCACCGCCATTCATCACCGCCTGCACGCCCTTGGGGCGCACCTCAGCGCC
+GAGGAACGGCAAGCCGTGGCTGACGGCCTGCTGATCCAGCCGCTGATCGGCAGCCTGCCC
+AACATCATGGCCCCGGAGTGGTTCGACGGCCTCAAGCGCGCCGCCGAGGGCCGCCGCCTG
+ATGGTGCTGGACACGCTGCGCCGGTTCCACATCGAGGAAGAAAACGCCAGCGGCCCCATG
+GCCCAGGTCATCGGTCGCATGGAGGCCATCGCCGCCGATACCGGGTGCTCTATCGTGTTC
+CTGCACCATGCCAGCAAGGGCGCGGCCATGATGGGCGCAGGCGACCAGCAGCAGGCCAGC
+CGGGGCAGCTCGGTACTGGTCGATAACATCCGCTGGCAGTCCTACCTGTCGAGCATGACC
+AGCGCCGAGGCCGAGGAATGGGGTGTGGACGACGACCAGCGCCGGTTCTTCGTCCGCTTC
+GGTGTGAGCAAGGCCAACTATGGCGCACCGTTCGCTGATCGGTGGTTCAGGCGGCATGAC
+GGCGGGGTGCTCAAGCCCGCCGTGCTGGAGAGGCAGCGCAAGAGCAAGGGGGTGCCCCGT
+GGTGAAGCCTAAGAACAAGCACAGCCTCAGCCACGTCCGGCACGACCCGGCGCACTGTCT
+GGCCCCCGGCCTGTTCCGTGCCCTCAAGCGGGGCGAGCGCAAGCGCAGCAAGCTGGACGT
+GACGTATGACTACGGCGACGGCAAGCGGATCGAGTTCAGCGGCCCGGAGCCGCTGGGCGC
+TGATGATCTGCGCATCCTGCAAGGGCTGGTGGCCATGGCTGGGCCTAATGGCCTAGTGCT
+TGGCCCGGAACCCAAGACCGAAGGCGGACGGCAGCTCCGGCTGTTCCTGGAACCCAAGTG
+GGAGGCCGTCACCGCTGATGCCATGGTGGTCAAAGGTAGCTATCGGGCGCTGGCAAAGGA
+AATCGGGGCAGAGGTCGATAGTGGTGGGGCGCTCAAGCACATACAGGACTGCATCGAGCG
+CCTTTGGAAGGTATCCATCATCGCCCAGAATGGCCGCAAGCGGCAGGGGTTTCGGCTGCT
+GTCGGAGTACGCCAGCGACGAGGCGGACGGGCGCCTGTACGTGGCCCTGAACCCCTTGAT
+CGCGCAGGCCGTCATGGGTGGCGGCCAGCATGTGCGCATCAGCATGGACGAGGTGCGGGC
+GCTGGACAGCGAAACCGCCCGCCTGCTGCACCAGCGGCTGTGTGGCTGGATCGACCCCGG
+CAAAACCGGCAAGGCTTCCATAGATACCTTGTGCGGCTATGTCTGGCCGTCAGAGGCCAG
+TGGTTCGACCATGCGCAAGCGCCGCCAGCGGGTGCGCGAGGCGTTGCCGGAGCTGGTCGC
+GCTGGGCTGGACGGTAACCGAGTTCGCGGCGGGCAAGTACGACATCACCCGGCCCAAGGC
+GGCAGGCTGACCCCCCCCACTCTATTGTAAACAAGACATTTTTATCTTTTATATTCAATG
+GCTTATTTTCCTGCTAATTGGTAATACCATGAAAAATACCATGCTCAGAAAAGGCTTAAC
+AATATTTTGAAAAATTGCCTACTGAGCGCTGCCGCACAGCTCCATAGGCCGCTTTCCTGG
+CTTTGCTTCCAGATGTATGCTATTCTGCTCCTGCAGCTAATGGATCACCGCAAACAGGTT
+ACTCGCCTGGGGATTCCCTTTCGACCCGAGCATCCGTATGAGACTCATGCTCGATTATTA
+TTATTATAGAAGCCCCCATGAATAAATCGCTCATCATTTTCGGCATCGTCAACATAACCT
+CGGACAGTTTCTCCGATGGAGGCCGGTATCTGGCGCCAGACGCAGCCATTGCGCAGGCGC
+GTAAGCTGATGGCCGAGGGGGCAGATGTGATCGACCTCGGTCCGGCATCCAGCAACCCCG
+ACGCCGCGCCTGTTTCGTCCGACACAGAAATCGAGCGTATCGCGCCGGTGCTGGACGCGC
+TCAAGGCAGATGGCATTCCCGTCTCGCTCGACAGTTATCAACCCGCGACGCAAGCCTATG
+CCTTGTCGCGTGGTGTGGCCTATCTCAATGATATTCGCGGTTTTCCAGACGCTGCGTTCT
+ATCCGCAATTGGCGAAATCATCTGCCAAACTCGTCGTTATGCATTCGGTGCAAGACGGGC
+AGGCAGATCGGCGCGAGGCACCCGCTGGCGACATCATGGATCACATTGCGGCGTTCTTTG
+ACGCGCGCATCGCGGCGCTGACGGGTGCCGGTATCAAACGCAACCGCCTTGTCCTTGATC
+CCGGCATGGGGTTTTTTCTGGGGGCTGCTCCCGAAACCTCGCTCTCGGTGCTGGCGCGGT
+TCGATGAATTGCGGCTGCGCTTCGATTTGCCGGTGCTTCTGTCTGTTTCGCGCAAATCCT
+TTCTGCGCGCGCTCACAGGCCGTGGTCCGGGGGATGTCGGGGCCGCGACACTCGCTGCAG
+AGCTTGCCGCCGCCGCAGGTGGAGCTGACTTCATCCGCACACACGAGCCGCGCCCCTTGC
+GCGACGGGCTGGCGGTATTGGCGGCGCTAAAAGAAACCGCAAGAATTCGTTAACTGCACA
+TTCGGGATATTTCTCTATATTCGCGCTTCATCAGAAAACTGAAGGAACCTCCATTGAATC
+GAACTAATATTTTTTTTGGTGAATCGCATTCTGACTGGTTGCCTGTCAGAGGCGGAGAAT
+CTGGTGATTTTGTTTTTCGACGTGGTGACGGGCATGCCTTCGCGAAAATCGCACCTGCTT
+CCCGCCGCGGTGAGCTCGCTGGAGAGCGTGACCGCCTCATTTGGCTCAAAGGTCGAGGTG
+TGGCTTGCCCCGAGGTCATCAACTGGCAGGAGGAACAGGAGGGTGCATGCTTGGTGATAA
+CGGCAATTCCGGGAGTACCGGCGGCTGATCTGTCTGGAGCGGATTTGCTCAAAGCGTGGC
+CGTCAATGGGGCAGCAACTTGGCGCTGTTCACAGCCTATCGGTTGATCAATGTCCGTTTG
+AGCGCAGGCTGTCGCGAATGTTCGGACGCGCCGTTGATGTGGTGTCCCGCAATGCCGTCA
+ATCCCGACTTCTTACCGGACGAGGACAAGAGTACGCCGCAGCTCGATCTTTTGGCTCGTG
+TCGAACGAGAGCTACCGGTGCGGCTCGACCAAGAGCGCACCGATATGGTTGTTTGCCATG
+GTGATCCCTGCATGCCGAACTTCATGGTGGACCCTAAAACTCTTCAATGCACGGGTCTGA
+TCGACCTTGGGCGGCTCGGAACAGCAGATCGCTATGCCGATTTGGCACTCATGATTGCTA
+ACGCCGAAGAGAACTGGGCAGCGCCAGATGAAGCAGAGCGCGCCTTCGCTGTCCTATTCA
+ATGTATTGGGGATCGAAGCCCCCGACCGCGAACGCCTTGCCTTCTATCTGCGATTGGACC
+CTCTGACTTGGGGTTGATGTTCATGCCGCCTGTTTTTCCTGCTCATTGGCACGTTTCGCA
+ACCTGTTCTCATTGCGGACACCTTTTCCAGCCTCGTTTGGAAAGTTTCATTGCCAGACGG
+GACTCCTGCAATCGTCAAGGGATTGAAACCTATAGAAGACATTGCTGATGAACTGCGCGG
+GGCCGACTATCTGGTATGGCGCAATGGGAGGGGAGCAGTCCGGTTGCTCGGTCGTGAGAA
+CAATCTGATGTTGCTCGAATATGCCGGGGAGCGAATGCTCTCTCACATCGTTGCCGAGCA
+CGGCGACTACCAGGCGACCGAAATTGCAGCGGAACTAATGGCGAAGCTGTATGCCGCATC
+TGAGGAACCCCTGCCTTCTGCCCTTCTCCCGATCCGGGATCGCTTTGCAGCTTTGTTTCA
+GCGGGCGCGCGATGATCAAAACGCAGGTTGTCAAACTGACTACGTCCACGCGGCGATTAT
+AGCCGATCAAATGATGAGCAATGCCTCGGAACTGCGTGGGCTACATGGCGATCTGCATCA
+TGAAAACATCATGTTCTCCAGTCGCGGCTGGCTGGTGATAGATCCCGTCGGTCTGGTCGG
+TGAAGTGGGCTTTGGCGCCGCCAATATGTTCTACGATCCGGCTGACAGAGACGACCTTTG
+TCTCGATCCTAGACGCATTGCACAGATGGCGGACGCATTCTCTCGTGCGCTGGACGTCGA
+TCCGCGTCGCCTGCTCGACCAGGCGTACGCTTATGGGTGCCTTTCCGCAGCTTGGAACGC
+GGATGGAGAAGAGGAGCAACGCGATCTAGCTATCGCGGCCGCGATCAAGCAGGTGCGACA
+GACGTCATACTAGATATCAAGGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTC
+TTATTCAAAGGCCTTACATTTCAAAAACTCTGCTTAC
+>NODE_9_length_4537_cov_41.0029':NODE_28_length_79_cov_78';
+GTAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATAAGACAAAAGGCTGCCTCATCGCTA
+ACTTTGCAACAGTGCCCTTGATATCTAGTATGACGTCTGTCGCACCTGCTTGATCGCGGC
+CGCGATAGCTAGATCGCGTTGCTCCTCTTCTCCATCCGCGTTCCAAGCTGCGGAAAGGCA
+CCCATAAGCGTACGCCTGGTCGAGCAGGCGACGCGGATCGACGTCCAGCGCACGAGAGAA
+TGCGTCCGCCATCTGTGCAATGCGTCTAGGATCGAGACAAAGGTCGTCTCTGTCAGCCGG
+ATCGTAGAACATATTGGCGGCGCCAAAGCCCACTTCACCGACCAGACCGACGGGATCTAT
+CACCAGCCAGCCGCGACTGGAGAACATGATGTTTTCATGATGCAGATCGCCATGTAGCCC
+ACGCAGTTCCGAGGCATTGCTCATCATTTGATCGGCTATAATCGCCGCGTGGACGTAGTC
+AGTTTGACAACCTGCGTTTTGATCATCGCGCGCCCGCTGAAACAAAGCTGCAAAGCGATC
+CCGGATCGGGAGAAGGGCAGAAGGCAGGGGTTCCTCAGATGCGGCATACAGCTTCGCCAT
+TAGTTCCGCTGCAATTTCGGTCGCCTGGTAGTCGCCGTGCTCGGCAACGATGTGAGAGAG
+CATTCGCTCCCCGGCATATTCGAGCAACATCAGATTGTTCTCACGACCGAGCAACCGGAC
+TGCTCCCCTCCCATTGCGCCATACCAGATAGTCGGCCCCGCGCAGTTCATCAGCAATGTC
+TTCTATAGGTTTCAATCCCTTGACGATTGCAGGAGTCCCGTCTGGCAATGAAACTTTCCA
+AACGAGGCTGGAAAAGGTGTCCGCAATGAGAACAGGTTGCGAAACGTGCCAATGAGCAGG
+AAAAACAGGCGGCATGAACATCAACCCCAAGTCAGAGGGTCCAATCGCAGATAGAAGGCA
+AGGCGTTCGCGGTCGGGGGCTTCGATCCCCAATACATTGAATAGGACAGCGAAGGCGCGC
+TCTGCTTCATCTGGCGCTGCCCAGTTCTCTTCGGCGTTAGCAATCATGAGTGCCAAATCG
+GCATAGCGATCTGCTGTTCCGAGCCGCCCAAGGTCGATCAGACCCGTGCATTGAAGAGTT
+TTAGGGTCCACCATGAAGTTCGGCATGCAGGGATCACCATGGCAAACAACCATATCGGTG
+CGCTCTTGGTCGAGCCGCACCGGTAGCTCTCGTTCGACACGAGCCAAAAGATCGAGCTGC
+GGCGTACTCTTGTCCTCGTCCGGTAAGAAGTCGGGATTGACGGCATTGCGGGACACCACA
+TCAACGGCGCGTCCGAACATTCGCGACAGCCTGCGCTCAAACGGACATTGATCAACCGAT
+AGGCTGTGAACAGCGCCAAGTTGCTGCCCCATTGACGGCCACGCTTTGAGCAAATCCGCT
+CCAGACAGATCAGCCGCCGGTACTCCCGGAATTGCCGTTATCACCAAGCATGCACCCTCC
+TGTTCCTCCTGCCAGTTGATGACCTCGGGGCAAGCCACACCTCGACCTTTGAGCCAAATG
+AGGCGGTCACGCTCTCCAGCGAGCTCACCGCGGCGGGAAGCAGGTGCGATTTTCGCGAAG
+GCATGCCCGTCACCACGTCGAAAAACAAAATCACCAGATTCTCCGCCTCTGACAGGCAAC
+CAGTCAGAATGCGATTCACCAAAAAAAATATTAGTTCGATTCAATGGAGGTTCCTTCAGT
+TTTCTGATGAAGCGCGAATATAGAGAAATATCCCGAATGTGCAGTTAACGAATTCTTGCG
+GTTTCTTTTAGCGCCGCCAATACCGCCAGCCCGTCGCGCAAGGGGCGCGGCTCGTGTGTG
+CGGATGAAGTCAGCTCCACCTGCGGCGGCGGCAAGCTCTGCAGCGAGTGTCGCGGCCCCG
+ACATCCCCCGGACCACGGCCTGTGAGCGCGCGCAGAAAGGATTTGCGCGAAACAGACAGA
+AGCACCGGCAAATCGAAGCGCAGCCGCAATTCATCGAACCGCGCCAGCACCGAGAGCGAG
+GTTTCGGGAGCAGCCCCCAGAAAAAACCCCATGCCGGGATCAAGGACAAGGCGGTTGCGT
+TTGATACCGGCACCCGTCAGCGCCGCGATGCGCGCGTCAAAGAACGCCGCAATGTGATCC
+ATGATGTCGCCAGCGGGTGCCTCGCGCCGATCTGCCTGCCCGTCTTGCACCGAATGCATA
+ACGACGAGTTTGGCAGATGATTTCGCCAATTGCGGATAGAACGCAGCGTCTGGAAAACCG
+CGAATATCATTGAGATAGGCCACACCACGCGACAAGGCATAGGCTTGCGTCGCGGGTTGA
+TAACTGTCGAGCGAGACGGGAATGCCATCTGCCTTGAGCGCGTCCAGCACCGGCGCGATA
+CGCTCGATTTCTGTGTCGGACGAAACAGGCGCGGCGTCGGGGTTGCTGGATGCCGGACCG
+AGGTCGATCACATCTGCCCCCTCGGCCATCAGCTTACGCGCCTGCGCAATGGCTGCGTCT
+GGCGCCAGATACCGGCCTCCATCGGAGAAACTGTCCGAGGTTATGTTGACGATGCCGAAA
+ATGATGAGCGATTTATTCATGGGGGCTTCTATAATAATAATAATCGAGCATGAGTCTCAT
+ACGGATGCTCGGGTCGAAAGGGAATCCCCAGGCGAGTAACCTGTTTGCGGTGATCCATTA
+GCTGCAGGAGCAGAATAGCATACATCTGGAAGCAAAGCCAGGAAAGCGGCCTATGGAGCT
+GTGCGGCAGCGCTCAGTAGGCAATTTTTCAAAATATTGTTAAGCCTTTTCTGAGCATGGT
+ATTTTTCATGGTATTACCAATTAGCAGGAAAATAAGCCATTGAATATAAAAGATAAAAAT
+GTCTTGTTTACAATAGAGTGGGGGGGGTCAGCCTGCCGCCTTGGGCCGGGTGATGTCGTA
+CTTGCCCGCCGCGAACTCGGTTACCGTCCAGCCCAGCGCGACCAGCTCCGGCAACGCCTC
+GCGCACCCGCTGGCGGCGCTTGCGCATGGTCGAACCACTGGCCTCTGACGGCCAGACATA
+GCCGCACAAGGTATCTATGGAAGCCTTGCCGGTTTTGCCGGGGTCGATCCAGCCACACAG
+CCGCTGGTGCAGCAGGCGGGCGGTTTCGCTGTCCAGCGCCCGCACCTCGTCCATGCTGAT
+GCGCACATGCTGGCCGCCACCCATGACGGCCTGCGCGATCAAGGGGTTCAGGGCCACGTA
+CAGGCGCCCGTCCGCCTCGTCGCTGGCGTACTCCGACAGCAGCCGAAACCCCTGCCGCTT
+GCGGCCATTCTGGGCGATGATGGATACCTTCCAAAGGCGCTCGATGCAGTCCTGTATGTG
+CTTGAGCGCCCCACCACTATCGACCTCTGCCCCGATTTCCTTTGCCAGCGCCCGATAGCT
+ACCTTTGACCACCATGGCATCAGCGGTGACGGCCTCCCACTTGGGTTCCAGGAACAGCCG
+GAGCTGCCGTCCGCCTTCGGTCTTGGGTTCCGGGCCAAGCACTAGGCCATTAGGCCCAGC
+CATGGCCACCAGCCCTTGCAGGATGCGCAGATCATCAGCGCCCAGCGGCTCCGGGCCGCT
+GAACTCGATCCGCTTGCCGTCGCCGTAGTCATACGTCACGTCCAGCTTGCTGCGCTTGCG
+CTCGCCCCGCTTGAGGGCACGGAACAGGCCGGGGGCCAGACAGTGCGCCGGGTCGTGCCG
+GACGTGGCTGAGGCTGTGCTTGTTCTTAGGCTTCACCACGGGGCACCCCCTTGCTCTTGC
+GCTGCCTCTCCAGCACGGCGGGCTTGAGCACCCCGCCGTCATGCCGCCTGAACCACCGAT
+CAGCGAACGGTGCGCCATAGTTGGCCTTGCTCACACCGAAGCGGACGAAGAACCGGCGCT
+GGTCGTCGTCCACACCCCATTCCTCGGCCTCGGCGCTGGTCATGCTCGACAGGTAGGACT
+GCCAGCGGATGTTATCGACCAGTACCGAGCTGCCCCGGCTGGCCTGCTGCTGGTCGCCTG
+CGCCCATCATGGCCGCGCCCTTGCTGGCATGGTGCAGGAACACGATAGAGCACCCGGTAT
+CGGCGGCGATGGCCTCCATGCGACCGATGACCTGGGCCATGGGGCCGCTGGCGTTTTCTT
+CCTCGATGTGGAACCGGCGCAGCGTGTCCAGCACCATCAGGCGGCGGCCCTCGGCGGCGC
+GCTTGAGGCCGTCGAACCACTCCGGGGCCATGATGTTGGGCAGGCTGCCGATCAGCGGCT
+GGATCAGCAGGCCGTCAGCCACGGCTTGCCGTTCCTCGGCGCTGAGGTGCGCCCCAAGGG
+CGTGCAGGCGGTGATGAATGGCGGTGGGCGGGTCTTCGGCGGGCAGGTAGATCACCGGGC
+CGGTGGGCAGTTCGCCCACCTCCAGCAGATCCGGCCCGCCTGCAATCTGTGCGGCCAGTT
+GCAGGGCCAGCATGGATTTACCGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGT
+CTTATTCAAAGGCCTTACATTTCAAAAACTCTGCTTA
+>NODE_10_length_211_cov_46.2537:NODE_29_length_751_cov_85.3516';
+CACAATTTGTCCGCCCGTTCGTTAAAAGCAATAAAAACGACTTTGTCGACGCCGAAGCTA
+TTTGTGAAGCTGCATCGCGTCCGTCTATGCGTTTTGTGCAGCCCAGAACGGAATCTCAGC
+AGGCAATGCGGGCTCTGCATCGTGTCCGTGAATCCCTGGTTCAGGATAAGGTAAAAACAA
+CCAATCAAATGCATGCTTTTCTGCTGGAATT
+>NODE_10_length_211_cov_46.2537':NODE_12_length_394_cov_88.6719;
+AATTCCAGCAGAAAAGCATGCATTTGATTGGTTGTTTTTACCTTATCCTGAACCAGGGAT
+TCACGGACACGATGCAGAGCCCGCATTGCCTGCTGAGATTCCGTTCTGGGCTGCACAAAA
+CGCATAGACGGACGCGATGCAGCTTCACAAATAGCTTCGGCGTCGACAAAGTCGTTTTTA
+TTGCTTTTAACGAACGGGCGGACAAATTGTG
+>NODE_11_length_146_cov_38.8551:NODE_29_length_751_cov_85.3516';
+CACAATTTGTCCGCCCGTTCGTTAAAAGCAATAAAAACGACTTTGTCGACGCCGAAGCTA
+TTTGTGAAGCTGCATCGTGTCCGTGAATCCCTGGTTCAGGATAAGGTAAAAACAACCAAT
+CAAATGCATGCTTTTCTGCTGGAATT
+>NODE_11_length_146_cov_38.8551':NODE_12_length_394_cov_88.6719;
+AATTCCAGCAGAAAAGCATGCATTTGATTGGTTGTTTTTACCTTATCCTGAACCAGGGAT
+TCACGGACACGATGCAGCTTCACAAATAGCTTCGGCGTCGACAAAGTCGTTTTTATTGCT
+TTTAACGAACGGGCGGACAAATTGTG
+>NODE_12_length_394_cov_88.6719:NODE_1_length_6070_cov_43.3434',NODE_36_length_2625_cov_42.3034';
+CGATGCAGCTTCACAAATAGCTTCGGCGTCGACAAAGTCGTTTTTATTGCTTTTAACGAA
+CGGGCGGACAAATTGTGGTGATATCAGCTTTGGGGAATGCCCCAACTCTTCCAACTTGCG
+TGCCATAAAGTGAGAACCGCCACAGGCTTCCATTGCGATGGTTGTAGCGGGGCATGTCGC
+CAAAAATTCGATCAACTTTGGCCGGGTAAATTTTTTACGGTAAACAGCCTTCCCGCGACG
+ATCCTGGCAATGAATATGGAAAGAGTTTTTACCCAGATCGATACCAATGAGCGCAATGTT
+TTCCATGATAGTTCTCCGAATGAAAGCCTGTCCTCAGCATAGTACCGGGAAGGAGGGAGT
+GACCATCTCATTAAATAAAGCACGCTAAGCCGGT
+>NODE_12_length_394_cov_88.6719':NODE_10_length_211_cov_46.2537,NODE_11_length_146_cov_38.8551;
+ACCGGCTTAGCGTGCTTTATTTAATGAGATGGTCACTCCCTCCTTCCCGGTACTATGCTG
+AGGACAGGCTTTCATTCGGAGAACTATCATGGAAAACATTGCGCTCATTGGTATCGATCT
+GGGTAAAAACTCTTTCCATATTCATTGCCAGGATCGTCGCGGGAAGGCTGTTTACCGTAA
+AAAATTTACCCGGCCAAAGTTGATCGAATTTTTGGCGACATGCCCCGCTACAACCATCGC
+AATGGAAGCCTGTGGCGGTTCTCACTTTATGGCACGCAAGTTGGAAGAGTTGGGGCATTC
+CCCAAAGCTGATATCACCACAATTTGTCCGCCCGTTCGTTAAAAGCAATAAAAACGACTT
+TGTCGACGCCGAAGCTATTTGTGAAGCTGCATCG
+>NODE_13_length_9382_cov_42.6014:NODE_37_length_78_cov_92;
+CGTGGCTGCAACCCTGCTTACTCAAAATCTATTCACACATGGTTACGTTTTGGGGAAATT
+ATGAGGGGATCTCTCAGAGTTCAGTGTTTATGAAAGATACTGGGAAATAGTTCAGCCAAA
+TAAATAACATAGATTTGCGTGAGATTTATAATACAAAACGCTCATTAGGTCTATGTCTTT
+AAAGGCGCGTGGCTTAATGGGCAATTAAATCCATACTCCTGCAATACATGCTTCAATCCT
+CAACTCGTTTGATAATGGCTGTATTTAATTTGCTGGATTCCACCATTTAAAATGGACAGG
+CTCTGTTTTAAATGAATCACCTGTTTCCGCATGCCAGGTTATTTGGGTGAACAGCCAATA
+TGGTATGATGTTTATAACAAACAAATTCGGAAGGTATAGTTTATGGGGGACCTGGTCAGT
+AAAAATAATATCGATCGCCTTGAACGATTTCATTCTCTGCTGGCAGGGCAGTATTGGTCT
+GCGCTCGTCGATATTCCGGCTGAGGCGATTGTGGCCGGGGACACTCTCCTCATTAACTCG
+TTGCGGTACGTGGATAACAATCTGCATACCGTCATCCTTCGCGCTCACCCCCGGCATTAC
+GGGGAATGGGTAAGCGTTGAAATCGTCGCTGAGAACGGTTCAAAATCAACGAAAGACAAG
+AGACTGAATGAGCATCGGTTTCTGACGGCCGATTTCCTCGCGTTGTTTGAATATCAGCCC
+GACCATGAAATTATCCGTCAGTCGGAGCTCAAAGGCATTCAGGATGAGGTCGCTGACCTG
+CAAATGCGTCTTACGGAAACTCTGCAAGATCCCTCTGCACTCCGGGAACTGGCTATTAAA
+AGGGTCGAAGACGAAGAGGCCAGTAAAAAGGGGGGGGCAACTGAGGACAGAATGCTTCCA
+GCCGTCAGGAATGCAGAAGATGTTGCAGTCACCATGGCGCTGGGTACAGTGCAGAATGCC
+CTTTCTCAGGGGATTTCAGAGGCTCAGGTTTCTCTGATGGCGAAAGTTGCGGAACGGGAA
+GGCAAGATTGCCGGTGCCGTAGCTAACATTATTACGTCGCGTACCGGCGCCATCACCCGG
+GCGCTGGAGAAAATGCATCCGTATTATGCGGAGCTGGCCGCTGCCAAGCTGGCCGGAACG
+CAGGAGGGCATTGAGCAAGCCAGCAAAATTCAGGCAGGTGTTCTCACGCTGGAATTATTC
+GTCGGCAAAAACGTGACGGTAGTTGATGTTGCGGAAGGCGAGCCAGCAGACAGCAGCATC
+CCGTTGACGCTGTGTCAGAAGAAACTCGTCGTGGATGAGGAGTTTTCTGCCTGGAGCGAT
+ATCGACGAACATTTTGATTTCAGGAGTCTTTCCGCATTCCTCAAGGCGCTAAAAGATAAC
+CAGGGGCTGGTGGAGCAAATTTTCCCGACTGAGCGCTGCGTACTTGTCATGGTCACTACC
+CGCAGATTTATTGACTATGGTGATACCTGGGCGAATGCTGAAAACAACGAAAAGAACAGC
+ATCGTGTTTCTGATGGTCCGCAACGGGCAAAATATCAAACAGATCTATTCCCCGGTGGAG
+AGCCATCTTGGGGCGTCCCGGTTATTTCCCTCTGAAGATGAGCAGCAGGGCCACTTCCGA
+GGGTTTGACGGTACCACCATCAAATTTGAAGATGTGGCTTATACCGATCGTCTCAAAGCC
+CATGACCTGATGGCTCTGCATTACCGACGTCTGCTTATCATGCTGTTTGGTCTTGACCAG
+CGACTGGCTCTCTTTGGTCAGTTCTATCCCCAGCATGAAAAGGCGAATTTCTTGAATCTG
+AGCTTCCAGGAACGGTACTTCCATTTTCTGCACGATGAAGACGGCACAGGGCTGCTGGCA
+TCACCAGACTCGCAGACGCTCGATGAATTTATTAGTGAAAAAAACTCCTATATTCAACCG
+GGCTCGCGGCTGCTCTGCAACTGGCGTGAGCTTATGACCCCCAGAACAGCACCTGGTGCC
+GTTAAAGAGGACAGCGGCTATTCAGGGTACTCCTTCATCGCTGACCCTGAGGATAATGTC
+TCTGCTGCGGTTGTGTATCGTCAGGGAGATACTCTGGCCGTTGATGTGGCGGTGAAGCGA
+TTCAGTACAGATAAGATGTTTAACTGTAAGGTAAACGTCTCTGCATATAGCCCGTGGCGG
+CGTGGAGAAGCTGAACTTGCTTATTTGTGCCTTGATGCAGTGGGCCCGGAGGAGCTGACC
+CGGTTTATCCAGCAACGCAAATTCCGGAGTAACCACCTTTTTTATATTCGCTTTTTTAAG
+GCCGCGATCAAATTCCTGGAACAGGAGCGAGAAAACGAACTGCCGCACCGGCAATATCTG
+CTGGCTGCAATGCAGGATTCGGGGATGCACCTGCCGGGGAATATCCAGGAACTGATTCAC
+CAGTGTATTGCTTCATGGAAGACCGGCAACCGTGGGGTTTCCCTCGCTGTCGGGATGAGT
+ACCGAAAAAGGGCGCCAGGCACTGCTGAATCAGCTCTACAGGCTCACTCAGGGTGCAAGC
+GAAATGGTATCGGTCATTCAGGAGCACGTCGCTGCGTCCGGCTCGCAACTTCTTCGGGCC
+GGGGTTAACTCGTCAGGGAATTACGTCGCATTTATCGCGCCTAAACCCTATGAGTGTGAC
+AACAGACTGGAAGCCCATGCGTGGGTCCATCGTGTTGTCTATGCAACCGGGAAACGAAAC
+ATTCGGGAAACCGGCAGATCCTGGGTATCTATGCCGGAGCGTTCGGCATCCGAAATTACT
+CTTTGGGAAGATGAGGAGCAGTCACGAAAATGGTACTCCATGACGCCTGTATTCAGTTCG
+TGGACCGAAAAACAGAAGCTTTTTGAGATGTGCGAAAAAGGCGCAGGGTTACTGAAAGGG
+GCTATGGGGACGCCGGATGATGAGGAATATGGCGACCTGCTAGAGATGTGGGGGGACGCG
+TATATCGCGTGCAATGCCAGCGGTGAGCATGTAACAACCCCGGATATGTTCCTCCCGGTA
+GGCCTGATTAAGTCACGAAAATCATTAAAGCTGATTGCTTTAGGTACATGCTCGACGGAG
+CACTGGATGTATGCCCGGGCAGGGGATGATGACTCAAGGGAGCTGCTGCTGGAATTGTAT
+ACCAGTTGGTATGAGTACCCAGATAAAGCGCGGGCGCGGCTCCTGTCGATGGCAGAAAAA
+AACTCCGGCCTGAGGTTTGTGTTGCTCGAAGGTAAATCAAGGAAACTGGAGCGCTTTGCG
+GTCAAGCGGCCAGAAGAGATTGTCAACTGGCATGCCGGTAACTTAAAGGAAATCCCGACA
+ATGCTGAATGATCAATGGGCATGTCACATGGCAATGGTCAGTCAGAATGATAAGGTCTAC
+CTGACACCGGATTTGCTCGATGATGATGGTCTGCCTAATTTTAATGGAGTCACCAGGCAG
+GTGCCCGGAGAAGGTTATCAGCCAGTCAATGTCTATGAATTTGAAAGTGACTATTTTAAC
+GCGGTATACGATGCAGACGGGAAGAAAGTGGCACTTTGTCACTGGTATGATGTGACGGAT
+AATTCATATTCTGCTGAAGAACTCATAGGCAATATGCCGCATAACGCATTTAAATTTCTT
+CAGTATAGACTGGATAATATCGAGCAGGCTGAGGCATTTATCAAATACAGAAACCGGAAT
+TATCAGCCCCGCGAAAATGCAGACTGGCCTGAGCCACCTGAAGGAGTTAAGCGTTACGTC
+ATCAGAGCCCGAAGCTAGGTGAAAAATATTAAGGCAAAAGTTCAGTATGGAAATTGGTAA
+ATCATACTGAACAATTAATATGACATTAGGCATGACTATAAGTAGGTGCCTTATTGGATG
+GTACATCGTATAAAAAGTAACTTTTCTAATCTCACCCAGCACTCCGGGAATGATGCTAAC
+CTAAATCACGGGAGCAGTGCTGGATATTGGTCAATTTATAGTTCCTGTGGAATGTAAATG
+TAATTAAATGTTGCAATAAAGCGTGGTTGTGTTAAAAAGTAGGCTTCATTACCTAAGTTA
+AATTTTATAATGTATGCCAAAGAAGAATTTATACTCTGAAGAGATTGTGATTGCCAAAAA
+GCAACTCACTCAGCTTTCAACACTAAAAGATAAAGTCAGCCTGCTAACCCGTCAGTGGGA
+AGGTGATATTGGCGCCAATCTGCCTGGTTACACTGAGCTATTAGCTCATGTGGAAAGAAT
+TGAAAGGCAGATTCATGAACAAATTGGCAGCTGGAAAAAAACTCCTGCAATGTAAGATTC
+GCCTATCCATTCTGAAGCGGTGGTTTTGTTTAAGGGTAAAAAAATTCATTCCTTAATAGT
+TCTGTGACGCCGCTTTTAAATCTTGGATGTTTGACTCTAAATGTCTATCATTTAATTAAC
+AGTAATTATGATGTTGTCAGCCTTATTCCTGGCTGAATCTCAATATATTACCATACGACT
+TCATTTTGCTTATCTTCGGGTTCTCGAAGAATTCCGCCATGATTGTCCATAGCAGGAGGT
+TAGTATGGGTGTAGACATGAATTATGAGTTTCAGAAAAAAAGCCCTAAGGGATGGGACCG
+GGTTAACGATAATTTTTCAAACGACCGAAGCTATTTGCTTTATTCATGGTTGGGTCTGGA
+TGCCCGTAACACCTGGGGTGTTGCAGCGATCACTCCTCTCAGGGGATTACCCGATGACAT
+AGAACTTCAATGGGATGAGGATGGATGTGATGACTACTGGGGTGAGCATTCCCAAACGTG
+GTTACTATCCGACGAGATCCTTGCTTCAACCAGCCCGGTAGCCATTGAAGACGATGAACC
+GGGGTCGGTAGTTGCGGAGTTTTGTGCGGAGGTTCAGCGACTTCATGGGCTGCATGGGAC
+GGTAAGAATTGTTCTAGGCTTCACTGGTTAAACAAGGCTGGACTATCTAATGCCTCCAGA
+CAACGTAATCCTGACGTGTTCATCTACTGTAACCTGGTCGCCGGGGATATATCGCGGCCA
+CCCTGACACGTCATTTGCATTTTTGATGATAAACGAAGGGTAGCCGAACTGCTCGGCCGC
+AATATCGATATAAAAAATCATTTCACCGGCACTTACCTCACACCAGTAATGGCCGTGCCC
+GCCAGACTCATTGAAAATACCACCATCATCTGTTCCGTTCCCGCCTCGCACAGCTGCGGA
+CATACCTCTGCGGTGCGCAAATTCACAAACCAGCAGACTGGCGAACATGCATGTTCCTGT
+GGTGTCGCTTGTCCCATTGTCATTGAGGATATTTTTTAGTGATGAATAAGCATCAGTTGC
+GAGTGCCAGAACTGGAGTATCAACGGGAATAGAGGCCTGGTCAGTCATGAAAGAATGTCT
+CCGGTATGATGGAACGGCTAATTAAACAAGCAATGAGTTGATTCCGTTTTTGAGTACTTC
+ACTTTCAGGCAACCAGTACCCGGAACCACACACCCATGATTCGCCCGGGAAAATGAAACC
+TTCGCGGACCAGGAATACTCTAAAATTTGGCGGCAGTACATTTTCTATTTTTAGCATGTA
+TCCTTCCTGAATGGATAGATTTTTCAGCTCAGATAGAAGATTCGGTGAGACGATGAGCTG
+TTCGGTTTCAAGAAGTCCTTGTAGCTCATGTAACTCATCCAAGGCCTCCTGAAGGCGTTC
+GGGGATACAATTCAGGGAAGCCTCGAAATGTTGCTGCTCAGCAGCTTCTTCCATCCAGTC
+CCGAAACCAGCTGTATTCCTGAGCTGCCGCATCCCACTCTAGTGTCTCTTCTTCCGCTTC
+AGGATAGTTAATAGAGATCCATTCATGACGCCATTCTTCCTGTATATCAAACAGCAGTTC
+TTTAATGCTTCCCATAAACTATCCCCTTGTATATTTTGGAGTTCCCACCGGACTACATTA
+TACGATGATTTGTGGCTGCAAATGTTGGTGACGGTTATCAGTATCGACCAAGCGCCATTA
+ACTGGAAGCACACTTCCTCGGAAAGCTCTCCTTTTTTATTTGGGATATGTGAGGGAACAG
+CAGTTATCACATCAACTTCTACGCATAAATACCATGTGTCATCAGCATCACTCCACCAGG
+CGACAATACGATTATCCCAGGTGCGTAATTCGCGGTAGCAGCTGTATCCAGGTAAATTCT
+CGAACTCCATCTCTTGCATCCAGACTCTGCCATGGCCAAGGATCATGAGAGCCTCAAATA
+AAACATCCAATGAAATACTAATTTCCATAATCAACTTCCTTATTACTACATCCATATTAT
+TTATAATCACTGTGCGGGGTAATCCATTGTGCCACACAGTGATTAGTCAGATAACAGCCA
+CAACCACAATTGCCTAACGCAACTTTCCACTGTTTCCTAAGAACAAGTAATAACAAAATT
+TACAGAATCAAAAGATGATAATTTTTGCGATTTGTTCCGTCCGGCCGGTTTGATATACGT
+GGGAAGGCTGTTATTTAATTACATATATTATATCACATTTATATTTTCTGTCCCAAAATT
+CGCGAAAATAATTGTCACACTCCGTCTCCAGGATTTTTCGGATCTGGAAAAATATGAGGG
+CAAAAAAACACAATCTCACACGTTGTTTTAAAAGTATGCAAGAAATGAGAGGGATGTTAG
+AAATCGTTAACCTGTTGATTTCGTGAGAGGCAATGGAGAGATAGAGAGGGACTCATGAAC
+TTAAGAGCAAACCCACCACATTTAACATAATCCATCTTATACGCACTAAGTGTAGAGGCT
+CAATGCTAATGTCTATTTGTGGCTCATTAGGAATGTCCAGGCTATAGTTTTCAAACCTGT
+ATGCCTAGTCAACGACTCGCTTTTCCTGATGAGGAGTTTTCTATGGCTATACATGACGCC
+GGGATGTTCACCGTGAAAGAAATCAACCGCCTCAAAATTCTTCAGGATGTCGTTGAACGT
+AACCTGCGTCCTGGCCAGGCTGCCGAGATGCTCGGCATCACGCCACGTCATTGCAGCCGT
+CTGCTGAAGCGTTATCGCCAGTCCGGGCCGCTTGGTATGAACAACCAGAGTCGCGGTCGC
+ACTGGCAACCGCCTGTTGCCCACATCACTGACTGACCAGGCACTGAGTATCATACGAGAA
+CGCTACCGCGATTTTGGCCCCACGCTGGCCCGGGAAAAACTGGAGGAAGTTCACGGTCTG
+GTCCTGGGCAAGGAAACCATCAGACGCCTTATGATAAAAGCCGGACTCTGGATCCCCCGA
+AGACAACGCGCACCGAAAATTCATCAGCCCCGTTACCGGCGGCCCTGTACTGGCGAGCTT
+ATACAGATTGACGGCTGTGACCATCACTGGTTTGAAAACCGGGGTCGGCCTTGTACGGCA
+CTTGTATATGTCGACGATGCCACCAGTCGTCTGATGCACCTGCTGTTTGTTAAATCTGAG
+TCCACCTTTAGCTATTTTGAAGCGACCCGTGGCTATATCGAGAAATACGGTAAGCCCATG
+ATCCTTTACAGCGATAAAGCCAGCGTATTCAGAGTCAATAATAAGCACGCTACCACTGGT
+CCCGGTGAAACCCAGTTTGCCCGAGCCATGCGCTGCCTCAACATTACCCCGCTATGTGCG
+GAGACCAGCCAGGCAAAGGGCCGTGTGGAACGCGCCCACCTGACACTTCAGGACCGGCTG
+GTTAAGGAGCTCAGGCTTAAAGGGATCAGTACGATAGAAGCCGCGAATGCATTTGCTGAG
+GAATACATGGCGGATTATAACCGGCGCTTCGCCAAAGCCCCCCTGCATGATTTTAACGCA
+CATCGGCCGCTGGCATTAGACGATGACCTGGATGCGGAATTTACCTGGCGAGAGCCCCGT
+CGTGTATCAAAAAGTCTGACCGTACAATATGACAAAATGCTCTATCTGATTGAAGACAGC
+GAATACAGTAGAAGGGCTATCGGCAAGTATATTGATGTCTGGCACTATCCTGACGGACAT
+AAGGAACTGCGGTTGAATGGCGTGCTACTGCCCTACTCCACCTACGACCGATTGTCTGAA
+GTCGATCCTGTCGCGATTGTTGATAACAAAAGACTGGGCCATGTATTGGATGTTGCCCGC
+CAGGTCCAGAAAAAAAGGGACAATAATCGCTCCCAGTCGCTACCTTCAGGAGATGAGCCT
+TCCCGCAGACGACATGCTCCAGGCATCAACAAATCCCAGCGCTCGCTGAACGAAGATGAC
+CTGCTTGAAGCCATAATAAAGCTTCAAGGAAGCTCTGAGGCCATCTTTGGTAAAAGGTGA
+ACTTGTCGGAAACCTCGCACTCACTGACCAGCAGCGCTGTGTTGCAGTTAATGCAATCAA
+AGCCTGAAAAAAATTCTGAGAAATGCAAATAACTTCAATGATATTATATACAAAGAGAAA
+CGTCGGGTAGCCGGGGTAAAGTCCGGGTGTCACAGAACCCCGAACCGCTTCGCGGTGACT
+TCTTACCACAAACCAAGTCTATGTAAAATTTATTGCGTAGATATGAATCTAATCAGAGCC
+TTAAATTTAAAGATGGTAAATTATGTATATGACTGGTCAAGAAATAAACGATAAAAAGAA
+AGAGTATCTTGAATTACTAGATCGAGAAGAGAATGAACAGATTTATCAAACATACCTTGA
+AGAAAATACAATGTTCATACCAAGAGAATTCGAGCAAAACCATGGAATTCACTTCAGTAC
+GGTATTTAGAAAGTTGCCTCTATCAAGCGATTATAAACCTGATTTCGTATATTTATCAAA
+AAGCTCGGATAACTGGAATGTAGTATTAGTTGAAATTGAAAAACCATCGTCGAAATATTT
+TAAAAACAACTCTACAACTTTTCATGCAGACTTCAATCTTGCTTTGCAGCAAATGAACAC
+ATGGAGGGCTTGGTTTGATGATGAATCAAACAGAAATCACTTTAAAAACAATATATTGCA
+GGGATTTATAGAACCGGCACATATGGGGAGAAATCCATTTAATTTCAAGTATGTCCTTGT
+TCATGGTCGTAGATCAGAATATGAAAATAATACACAGAAAACTGCACTAATCAGAGGGCA
+ACAGCGAAGTGACTTCTCAATAATTTCATTTGATAGTTTGGCTGAAAATATAGAGAAAAA
+ATATAAGTTATATGTTGGAGTGAAAAAAAATAGTCACTATGAATTAATATCAAAAGAATT
+TGTTGATGAAGGGATATTTTCATGGATGAACATAGATTTTTTAGCAATTACACAAAGTAT
+ATATGATGATGCAATCGCAAAATCAGATAGTTGGCATCACTATATAATTAAAGAAAATGG
+AACCGTCAAAACAATGGATTATGCTCTCCCTCGAATTAAAATAATTTGAGAGTAGTAAAA
+AAAATAGGTAATGACTCCAACTTATTGATAGTGTTTTATGTTCAGATAATGCCCGATGAC
+TTTGTCATGCAGCTCCACCGAT
+>NODE_13_length_9382_cov_42.6014':NODE_7_length_1329_cov_85.8474';
+ATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAATA
+AGTTGGAGTCATTACCTATTTTTTTTACTACTCTCAAATTATTTTAATTCGAGGGAGAGC
+ATAATCCATTGTTTTGACGGTTCCATTTTCTTTAATTATATAGTGATGCCAACTATCTGA
+TTTTGCGATTGCATCATCATATATACTTTGTGTAATTGCTAAAAAATCTATGTTCATCCA
+TGAAAATATCCCTTCATCAACAAATTCTTTTGATATTAATTCATAGTGACTATTTTTTTT
+CACTCCAACATATAACTTATATTTTTTCTCTATATTTTCAGCCAAACTATCAAATGAAAT
+TATTGAGAAGTCACTTCGCTGTTGCCCTCTGATTAGTGCAGTTTTCTGTGTATTATTTTC
+ATATTCTGATCTACGACCATGAACAAGGACATACTTGAAATTAAATGGATTTCTCCCCAT
+ATGTGCCGGTTCTATAAATCCCTGCAATATATTGTTTTTAAAGTGATTTCTGTTTGATTC
+ATCATCAAACCAAGCCCTCCATGTGTTCATTTGCTGCAAAGCAAGATTGAAGTCTGCATG
+AAAAGTTGTAGAGTTGTTTTTAAAATATTTCGACGATGGTTTTTCAATTTCAACTAATAC
+TACATTCCAGTTATCCGAGCTTTTTGATAAATATACGAAATCAGGTTTATAATCGCTTGA
+TAGAGGCAACTTTCTAAATACCGTACTGAAGTGAATTCCATGGTTTTGCTCGAATTCTCT
+TGGTATGAACATTGTATTTTCTTCAAGGTATGTTTGATAAATCTGTTCATTCTCTTCTCG
+ATCTAGTAATTCAAGATACTCTTTCTTTTTATCGTTTATTTCTTGACCAGTCATATACAT
+AATTTACCATCTTTAAATTTAAGGCTCTGATTAGATTCATATCTACGCAATAAATTTTAC
+ATAGACTTGGTTTGTGGTAAGAAGTCACCGCGAAGCGGTTCGGGGTTCTGTGACACCCGG
+ACTTTACCCCGGCTACCCGACGTTTCTCTTTGTATATAATATCATTGAAGTTATTTGCAT
+TTCTCAGAATTTTTTTCAGGCTTTGATTGCATTAACTGCAACACAGCGCTGCTGGTCAGT
+GAGTGCGAGGTTTCCGACAAGTTCACCTTTTACCAAAGATGGCCTCAGAGCTTCCTTGAA
+GCTTTATTATGGCTTCAAGCAGGTCATCTTCGTTCAGCGAGCGCTGGGATTTGTTGATGC
+CTGGAGCATGTCGTCTGCGGGAAGGCTCATCTCCTGAAGGTAGCGACTGGGAGCGATTAT
+TGTCCCTTTTTTTCTGGACCTGGCGGGCAACATCCAATACATGGCCCAGTCTTTTGTTAT
+CAACAATCGCGACAGGATCGACTTCAGACAATCGGTCGTAGGTGGAGTAGGGCAGTAGCA
+CGCCATTCAACCGCAGTTCCTTATGTCCGTCAGGATAGTGCCAGACATCAATATACTTGC
+CGATAGCCCTTCTACTGTATTCGCTGTCTTCAATCAGATAGAGCATTTTGTCATATTGTA
+CGGTCAGACTTTTTGATACACGACGGGGCTCTCGCCAGGTAAATTCCGCATCCAGGTCAT
+CGTCTAATGCCAGCGGCCGATGTGCGTTAAAATCATGCAGGGGGGCTTTGGCGAAGCGCC
+GGTTATAATCCGCCATGTATTCCTCAGCAAATGCATTCGCGGCTTCTATCGTACTGATCC
+CTTTAAGCCTGAGCTCCTTAACCAGCCGGTCCTGAAGTGTCAGGTGGGCGCGTTCCACAC
+GGCCCTTTGCCTGGCTGGTCTCCGCACATAGCGGGGTAATGTTGAGGCAGCGCATGGCTC
+GGGCAAACTGGGTTTCACCGGGACCAGTGGTAGCGTGCTTATTATTGACTCTGAATACGC
+TGGCTTTATCGCTGTAAAGGATCATGGGCTTACCGTATTTCTCGATATAGCCACGGGTCG
+CTTCAAAATAGCTAAAGGTGGACTCAGATTTAACAAACAGCAGGTGCATCAGACGACTGG
+TGGCATCGTCGACATATACAAGTGCCGTACAAGGCCGACCCCGGTTTTCAAACCAGTGAT
+GGTCACAGCCGTCAATCTGTATAAGCTCGCCAGTACAGGGCCGCCGGTAACGGGGCTGAT
+GAATTTTCGGTGCGCGTTGTCTTCGGGGGATCCAGAGTCCGGCTTTTATCATAAGGCGTC
+TGATGGTTTCCTTGCCCAGGACCAGACCGTGAACTTCCTCCAGTTTTTCCCGGGCCAGCG
+TGGGGCCAAAATCGCGGTAGCGTTCTCGTATGATACTCAGTGCCTGGTCAGTCAGTGATG
+TGGGCAACAGGCGGTTGCCAGTGCGACCGCGACTCTGGTTGTTCATACCAAGCGGCCCGG
+ACTGGCGATAACGCTTCAGCAGACGGCTGCAATGACGTGGCGTGATGCCGAGCATCTCGG
+CAGCCTGGCCAGGACGCAGGTTACGTTCAACGACATCCTGAAGAATTTTGAGGCGGTTGA
+TTTCTTTCACGGTGAACATCCCGGCGTCATGTATAGCCATAGAAAACTCCTCATCAGGAA
+AAGCGAGTCGTTGACTAGGCATACAGGTTTGAAAACTATAGCCTGGACATTCCTAATGAG
+CCACAAATAGACATTAGCATTGAGCCTCTACACTTAGTGCGTATAAGATGGATTATGTTA
+AATGTGGTGGGTTTGCTCTTAAGTTCATGAGTCCCTCTCTATCTCTCCATTGCCTCTCAC
+GAAATCAACAGGTTAACGATTTCTAACATCCCTCTCATTTCTTGCATACTTTTAAAACAA
+CGTGTGAGATTGTGTTTTTTTGCCCTCATATTTTTCCAGATCCGAAAAATCCTGGAGACG
+GAGTGTGACAATTATTTTCGCGAATTTTGGGACAGAAAATATAAATGTGATATAATATAT
+GTAATTAAATAACAGCCTTCCCACGTATATCAAACCGGCCGGACGGAACAAATCGCAAAA
+ATTATCATCTTTTGATTCTGTAAATTTTGTTATTACTTGTTCTTAGGAAACAGTGGAAAG
+TTGCGTTAGGCAATTGTGGTTGTGGCTGTTATCTGACTAATCACTGTGTGGCACAATGGA
+TTACCCCGCACAGTGATTATAAATAATATGGATGTAGTAATAAGGAAGTTGATTATGGAA
+ATTAGTATTTCATTGGATGTTTTATTTGAGGCTCTCATGATCCTTGGCCATGGCAGAGTC
+TGGATGCAAGAGATGGAGTTCGAGAATTTACCTGGATACAGCTGCTACCGCGAATTACGC
+ACCTGGGATAATCGTATTGTCGCCTGGTGGAGTGATGCTGATGACACATGGTATTTATGC
+GTAGAAGTTGATGTGATAACTGCTGTTCCCTCACATATCCCAAATAAAAAAGGAGAGCTT
+TCCGAGGAAGTGTGCTTCCAGTTAATGGCGCTTGGTCGATACTGATAACCGTCACCAACA
+TTTGCAGCCACAAATCATCGTATAATGTAGTCCGGTGGGAACTCCAAAATATACAAGGGG
+ATAGTTTATGGGAAGCATTAAAGAACTGCTGTTTGATATACAGGAAGAATGGCGTCATGA
+ATGGATCTCTATTAACTATCCTGAAGCGGAAGAAGAGACACTAGAGTGGGATGCGGCAGC
+TCAGGAATACAGCTGGTTTCGGGACTGGATGGAAGAAGCTGCTGAGCAGCAACATTTCGA
+GGCTTCCCTGAATTGTATCCCCGAACGCCTTCAGGAGGCCTTGGATGAGTTACATGAGCT
+ACAAGGACTTCTTGAAACCGAACAGCTCATCGTCTCACCGAATCTTCTATCTGAGCTGAA
+AAATCTATCCATTCAGGAAGGATACATGCTAAAAATAGAAAATGTACTGCCGCCAAATTT
+TAGAGTATTCCTGGTCCGCGAAGGTTTCATTTTCCCGGGCGAATCATGGGTGTGTGGTTC
+CGGGTACTGGTTGCCTGAAAGTGAAGTACTCAAAAACGGAATCAACTCATTGCTTGTTTA
+ATTAGCCGTTCCATCATACCGGAGACATTCTTTCATGACTGACCAGGCCTCTATTCCCGT
+TGATACTCCAGTTCTGGCACTCGCAACTGATGCTTATTCATCACTAAAAAATATCCTCAA
+TGACAATGGGACAAGCGACACCACAGGAACATGCATGTTCGCCAGTCTGCTGGTTTGTGA
+ATTTGCGCACCGCAGAGGTATGTCCGCAGCTGTGCGAGGCGGGAACGGAACAGATGATGG
+TGGTATTTTCAATGAGTCTGGCGGGCACGGCCATTACTGGTGTGAGGTAAGTGCCGGTGA
+AATGATTTTTTATATCGATATTGCGGCCGAGCAGTTCGGCTACCCTTCGTTTATCATCAA
+AAATGCAAATGACGTGTCAGGGTGGCCGCGATATATCCCCGGCGACCAGGTTACAGTAGA
+TGAACACGTCAGGATTACGTTGTCTGGAGGCATTAGATAGTCCAGCCTTGTTTAACCAGT
+GAAGCCTAGAACAATTCTTACCGTCCCATGCAGCCCATGAAGTCGCTGAACCTCCGCACA
+AAACTCCGCAACTACCGACCCCGGTTCATCGTCTTCAATGGCTACCGGGCTGGTTGAAGC
+AAGGATCTCGTCGGATAGTAACCACGTTTGGGAATGCTCACCCCAGTAGTCATCACATCC
+ATCCTCATCCCATTGAAGTTCTATGTCATCGGGTAATCCCCTGAGAGGAGTGATCGCTGC
+AACACCCCAGGTGTTACGGGCATCCAGACCCAACCATGAATAAAGCAAATAGCTTCGGTC
+GTTTGAAAAATTATCGTTAACCCGGTCCCATCCCTTAGGGCTTTTTTTCTGAAACTCATA
+ATTCATGTCTACACCCATACTAACCTCCTGCTATGGACAATCATGGCGGAATTCTTCGAG
+AACCCGAAGATAAGCAAAATGAAGTCGTATGGTAATATATTGAGATTCAGCCAGGAATAA
+GGCTGACAACATCATAATTACTGTTAATTAAATGATAGACATTTAGAGTCAAACATCCAA
+GATTTAAAAGCGGCGTCACAGAACTATTAAGGAATGAATTTTTTTACCCTTAAACAAAAC
+CACCGCTTCAGAATGGATAGGCGAATCTTACATTGCAGGAGTTTTTTTCCAGCTGCCAAT
+TTGTTCATGAATCTGCCTTTCAATTCTTTCCACATGAGCTAATAGCTCAGTGTAACCAGG
+CAGATTGGCGCCAATATCACCTTCCCACTGACGGGTTAGCAGGCTGACTTTATCTTTTAG
+TGTTGAAAGCTGAGTGAGTTGCTTTTTGGCAATCACAATCTCTTCAGAGTATAAATTCTT
+CTTTGGCATACATTATAAAATTTAACTTAGGTAATGAAGCCTACTTTTTAACACAACCAC
+GCTTTATTGCAACATTTAATTACATTTACATTCCACAGGAACTATAAATTGACCAATATC
+CAGCACTGCTCCCGTGATTTAGGTTAGCATCATTCCCGGAGTGCTGGGTGAGATTAGAAA
+AGTTACTTTTTATACGATGTACCATCCAATAAGGCACCTACTTATAGTCATGCCTAATGT
+CATATTAATTGTTCAGTATGATTTACCAATTTCCATACTGAACTTTTGCCTTAATATTTT
+TCACCTAGCTTCGGGCTCTGATGACGTAACGCTTAACTCCTTCAGGTGGCTCAGGCCAGT
+CTGCATTTTCGCGGGGCTGATAATTCCGGTTTCTGTATTTGATAAATGCCTCAGCCTGCT
+CGATATTATCCAGTCTATACTGAAGAAATTTAAATGCGTTATGCGGCATATTGCCTATGA
+GTTCTTCAGCAGAATATGAATTATCCGTCACATCATACCAGTGACAAAGTGCCACTTTCT
+TCCCGTCTGCATCGTATACCGCGTTAAAATAGTCACTTTCAAATTCATAGACATTGACTG
+GCTGATAACCTTCTCCGGGCACCTGCCTGGTGACTCCATTAAAATTAGGCAGACCATCAT
+CATCGAGCAAATCCGGTGTCAGGTAGACCTTATCATTCTGACTGACCATTGCCATGTGAC
+ATGCCCATTGATCATTCAGCATTGTCGGGATTTCCTTTAAGTTACCGGCATGCCAGTTGA
+CAATCTCTTCTGGCCGCTTGACCGCAAAGCGCTCCAGTTTCCTTGATTTACCTTCGAGCA
+ACACAAACCTCAGGCCGGAGTTTTTTTCTGCCATCGACAGGAGCCGCGCCCGCGCTTTAT
+CTGGGTACTCATACCAACTGGTATACAATTCCAGCAGCAGCTCCCTTGAGTCATCATCCC
+CTGCCCGGGCATACATCCAGTGCTCCGTCGAGCATGTACCTAAAGCAATCAGCTTTAATG
+ATTTTCGTGACTTAATCAGGCCTACCGGGAGGAACATATCCGGGGTTGTTACATGCTCAC
+CGCTGGCATTGCACGCGATATACGCGTCCCCCCACATCTCTAGCAGGTCGCCATATTCCT
+CATCATCCGGCGTCCCCATAGCCCCTTTCAGTAACCCTGCGCCTTTTTCGCACATCTCAA
+AAAGCTTCTGTTTTTCGGTCCACGAACTGAATACAGGCGTCATGGAGTACCATTTTCGTG
+ACTGCTCCTCATCTTCCCAAAGAGTAATTTCGGATGCCGAACGCTCCGGCATAGATACCC
+AGGATCTGCCGGTTTCCCGAATGTTTCGTTTCCCGGTTGCATAGACAACACGATGGACCC
+ACGCATGGGCTTCCAGTCTGTTGTCACACTCATAGGGTTTAGGCGCGATAAATGCGACGT
+AATTCCCTGACGAGTTAACCCCGGCCCGAAGAAGTTGCGAGCCGGACGCAGCGACGTGCT
+CCTGAATGACCGATACCATTTCGCTTGCACCCTGAGTGAGCCTGTAGAGCTGATTCAGCA
+GTGCCTGGCGCCCTTTTTCGGTACTCATCCCGACAGCGAGGGAAACCCCACGGTTGCCGG
+TCTTCCATGAAGCAATACACTGGTGAATCAGTTCCTGGATATTCCCCGGCAGGTGCATCC
+CCGAATCCTGCATTGCAGCCAGCAGATATTGCCGGTGCGGCAGTTCGTTTTCTCGCTCCT
+GTTCCAGGAATTTGATCGCGGCCTTAAAAAAGCGAATATAAAAAAGGTGGTTACTCCGGA
+ATTTGCGTTGCTGGATAAACCGGGTCAGCTCCTCCGGGCCCACTGCATCAAGGCACAAAT
+AAGCAAGTTCAGCTTCTCCACGCCGCCACGGGCTATATGCAGAGACGTTTACCTTACAGT
+TAAACATCTTATCTGTACTGAATCGCTTCACCGCCACATCAACGGCCAGAGTATCTCCCT
+GACGATACACAACCGCAGCAGAGACATTATCCTCAGGGTCAGCGATGAAGGAGTACCCTG
+AATAGCCGCTGTCCTCTTTAACGGCACCAGGTGCTGTTCTGGGGGTCATAAGCTCACGCC
+AGTTGCAGAGCAGCCGCGAGCCCGGTTGAATATAGGAGTTTTTTTCACTAATAAATTCAT
+CGAGCGTCTGCGAGTCTGGTGATGCCAGCAGCCCTGTGCCGTCTTCATCGTGCAGAAAAT
+GGAAGTACCGTTCCTGGAAGCTCAGATTCAAGAAATTCGCCTTTTCATGCTGGGGATAGA
+ACTGACCAAAGAGAGCCAGTCGCTGGTCAAGACCAAACAGCATGATAAGCAGACGTCGGT
+AATGCAGAGCCATCAGGTCATGGGCTTTGAGACGATCGGTATAAGCCACATCTTCAAATT
+TGATGGTGGTACCGTCAAACCCTCGGAAGTGGCCCTGCTGCTCATCTTCAGAGGGAAATA
+ACCGGGACGCCCCAAGATGGCTCTCCACCGGGGAATAGATCTGTTTGATATTTTGCCCGT
+TGCGGACCATCAGAAACACGATGCTGTTCTTTTCGTTGTTTTCAGCATTCGCCCAGGTAT
+CACCATAGTCAATAAATCTGCGGGTAGTGACCATGACAAGTACGCAGCGCTCAGTCGGGA
+AAATTTGCTCCACCAGCCCCTGGTTATCTTTTAGCGCCTTGAGGAATGCGGAAAGACTCC
+TGAAATCAAAATGTTCGTCGATATCGCTCCAGGCAGAAAACTCCTCATCCACGACGAGTT
+TCTTCTGACACAGCGTCAACGGGATGCTGCTGTCTGCTGGCTCGCCTTCCGCAACATCAA
+CTACCGTCACGTTTTTGCCGACGAATAATTCCAGCGTGAGAACACCTGCCTGAATTTTGC
+TGGCTTGCTCAATGCCCTCCTGCGTTCCGGCCAGCTTGGCAGCGGCCAGCTCCGCATAAT
+ACGGATGCATTTTCTCCAGCGCCCGGGTGATGGCGCCGGTACGCGACGTAATAATGTTAG
+CTACGGCACCGGCAATCTTGCCTTCCCGTTCCGCAACTTTCGCCATCAGAGAAACCTGAG
+CCTCTGAAATCCCCTGAGAAAGGGCATTCTGCACTGTACCCAGCGCCATGGTGACTGCAA
+CATCTTCTGCATTCCTGACGGCTGGAAGCATTCTGTCCTCAGTTGCCCCCCCCTTTTTAC
+TGGCCTCTTCGTCTTCGACCCTTTTAATAGCCAGTTCCCGGAGTGCAGAGGGATCTTGCA
+GAGTTTCCGTAAGACGCATTTGCAGGTCAGCGACCTCATCCTGAATGCCTTTGAGCTCCG
+ACTGACGGATAATTTCATGGTCGGGCTGATATTCAAACAACGCGAGGAAATCGGCCGTCA
+GAAACCGATGCTCATTCAGTCTCTTGTCTTTCGTTGATTTTGAACCGTTCTCAGCGACGA
+TTTCAACGCTTACCCATTCCCCGTAATGCCGGGGGTGAGCGCGAAGGATGACGGTATGCA
+GATTGTTATCCACGTACCGCAACGAGTTAATGAGGAGAGTGTCCCCGGCCACAATCGCCT
+CAGCCGGAATATCGACGAGCGCAGACCAATACTGCCCTGCCAGCAGAGAATGAAATCGTT
+CAAGGCGATCGATATTATTTTTACTGACCAGGTCCCCCATAAACTATACCTTCCGAATTT
+GTTTGTTATAAACATCATACCATATTGGCTGTTCACCCAAATAACCTGGCATGCGGAAAC
+AGGTGATTCATTTAAAACAGAGCCTGTCCATTTTAAATGGTGGAATCCAGCAAATTAAAT
+ACAGCCATTATCAAACGAGTTGAGGATTGAAGCATGTATTGCAGGAGTATGGATTTAATT
+GCCCATTAAGCCACGCGCCTTTAAAGACATAGACCTAATGAGCGTTTTGTATTATAAATC
+TCACGCAAATCTATGTTATTTATTTGGCTGAACTATTTCCCAGTATCTTTCATAAACACT
+GAACTCTGAGAGATCCCCTCATAATTTCCCCAAAACGTAACCATGTGTGAATAGATTTTG
+AGTAAGCAGGGTTGCAGCCACG
+>NODE_14_length_85_cov_140.75:NODE_39_length_146_cov_169.507';
+GGTGATGCTGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGGC
+TTCTGTTTCTATCAGCTGTCCCTCC
+>NODE_14_length_85_cov_140.75':NODE_22_length_78_cov_98',NODE_24_length_52213_cov_42.1417';
+GGAGGGACAGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACT
+AAATCAGTAAGTTGGCAGCATCACC
+>NODE_15_length_1977_cov_41.2532:NODE_30_length_81_cov_86';
+ATGGGTTCATGTGCAGCTCCATCAGCAAAAGGGGATGATAAGTTTATCACCACCGACTAT
+TTGCAACAGTGCCATATGGGGCAAATGGTGGTCACCATCCTGTCGGCTGTGGCACAGGCT
+GAACGCCGGAGGATCCTAGAACGCACGAATGAGGGCCGACAGGAAGCAAAGCTGAAAGGA
+ATCAAATTTGGCCGCAGGCGTACCGTGGACAGGAACGTCGTGCTGACGCTTCATCAGAAG
+GGCACTGGTGCAACGGAAATTGCTCATCAGCTCAGTATTGCCCGCTCCACGGTTTATAAA
+ATTCTTGAAGACGAAAGGGCCTCGTGATACGCCTATTTTTATAGGTTAATGTCATGATAA
+TAATGGTTTCTTAGACGTCAGGTGGCACTTTTCGGGGAAATGTGCGCGGAACCCCTATTT
+GTTTATTTTTCTAAATACATTCAAATATGTATCCGCTCATGAGACAATAACCCTGGTAAA
+TGCTTCAATAATATTGAAAAAGGAAGAGTATGAGTATTCAACATTTTCGTGTCGCCCTTA
+TTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAG
+TAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACA
+GCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTA
+AAGTTCTGCTATGTGGTGCGGTATTATCCCGTGTTGACGCCGGGCAAGAGCAACTCGGTC
+GCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATC
+TTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACA
+CTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGC
+ACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCA
+TACCAAACGACGAGCGTGACACCACGATGCCTGCAGCAATGGCAACAACGTTGCGCAAAC
+TATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGG
+CGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTG
+ATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATG
+GTAAGCCCTCCCGTATCGTAGTTATCTACACGACGGGGAGTCAGGCAACTATGGATGAAC
+GAAATAGACAGATCGCTGAGATAGGTGCCTCACTGATTAAGCATTGGTAACTGTCAGACC
+AAGTTTACTCATATATACTTTAGATTGATTTAAAACTTCATTTTTAATTTAAAAGGATCT
+AGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCC
+ACTGAGCGTCAGACCCCTTATGGCAGAGCAGGGAAAGGAATTGCCGGGCTATGTGCAACG
+GGAATTTGAAGAATTTCTCCAATGCGGGCGGCTGGAGCATGGCTTTCTACGGGTTCGCTG
+CGAGTCTTGCCACGCCGAGCACCTGGTCGCTTTCAGCTGTAAGCGTCGCGGTTTCTGCCC
+GAGCTGTGGGGCGCGGCGGATGGCCGAAAGTGCCGCCTTGCTGGTTGATGAAGTACTGCC
+TGAACAACCCATGCGTCAGTGGGTGTTGAGCTTCCCGTTTCAGCTGCGTTTCCTGTTTGG
+GGTCGTTTGCGGGAAGGGGCGGAATCCTACGCTAAGGCTTTGGCCAGCGATATTCTCCGG
+TGAGATTGATGTGTTCCCAGGGGATAGGAGAAGTCGCTTGATATGGCACTGTTGCAAATA
+GTCGGTGGTGATAAACTTATCATCCCCTTTTGCTGATGGAGCTGCACATGAACCCAT
+>NODE_15_length_1977_cov_41.2532':NODE_30_length_81_cov_86';
+ATGGGTTCATGTGCAGCTCCATCAGCAAAAGGGGATGATAAGTTTATCACCACCGACTAT
+TTGCAACAGTGCCATATCAAGCGACTTCTCCTATCCCCTGGGAACACATCAATCTCACCG
+GAGAATATCGCTGGCCAAAGCCTTAGCGTAGGATTCCGCCCCTTCCCGCAAACGACCCCA
+AACAGGAAACGCAGCTGAAACGGGAAGCTCAACACCCACTGACGCATGGGTTGTTCAGGC
+AGTACTTCATCAACCAGCAAGGCGGCACTTTCGGCCATCCGCCGCGCCCCACAGCTCGGG
+CAGAAACCGCGACGCTTACAGCTGAAAGCGACCAGGTGCTCGGCGTGGCAAGACTCGCAG
+CGAACCCGTAGAAAGCCATGCTCCAGCCGCCCGCATTGGAGAAATTCTTCAAATTCCCGT
+TGCACATAGCCCGGCAATTCCTTTCCCTGCTCTGCCATAAGGGGTCTGACGCTCAGTGGA
+ACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGA
+TCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGT
+CTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTT
+CATCCATAGTTGCCTGACTCCCCGTCGTGTAGATAACTACGATACGGGAGGGCTTACCAT
+CTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAG
+CAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCT
+CCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTT
+TGCGCAACGTTGTTGCCATTGCTGCAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGG
+CTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCA
+AAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGT
+TATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGAT
+GCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGCGAC
+CGAGTTGCTCTTGCCCGGCGTCAACACGGGATAATACCGCACCACATAGCAGAACTTTAA
+AAGTGCTCATCATTGGAAAACGTTCTTCGGGGCGAAAACTCTCAAGGATCTTACCGCTGT
+TGAGATCCAGTTCGATGTAACCCACTCGTGCACCCAACTGATCTTCAGCATCTTTTACTT
+TCACCAGCGTTTCTGGGTGAGCAAAAACAGGAAGGCAAAATGCCGCAAAAAAGGGAATAA
+GGGCGACACGAAAATGTTGAATACTCATACTCTTCCTTTTTCAATATTATTGAAGCATTT
+ACCAGGGTTATTGTCTCATGAGCGGATACATATTTGAATGTATTTAGAAAAATAAACAAA
+TAGGGGTTCCGCGCACATTTCCCCGAAAAGTGCCACCTGACGTCTAAGAAACCATTATTA
+TCATGACATTAACCTATAAAAATAGGCGTATCACGAGGCCCTTTCGTCTTCAAGAATTTT
+ATAAACCGTGGAGCGGGCAATACTGAGCTGATGAGCAATTTCCGTTGCACCAGTGCCCTT
+CTGATGAAGCGTCAGCACGACGTTCCTGTCCACGGTACGCCTGCGGCCAAATTTGATTCC
+TTTCAGCTTTGCTTCCTGTCGGCCCTCATTCGTGCGTTCTAGGATCCTCCGGCGTTCAGC
+CTGTGCCACAGCCGACAGGATGGTGACCACCATTTGCCCCATATGGCACTGTTGCAAATA
+GTCGGTGGTGATAAACTTATCATCCCCTTTTGCTGATGGAGCTGCACATGAACCCAT
+>NODE_16_length_35628_cov_42.0221:NODE_7_length_1329_cov_85.8474;
+ATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAATA
+AGTTGGAGTCATTACCCAAATTTAATTCCGCCGCCAGCCATGTTCGGCAAGCTTAAAATA
+AATTCATTCTATTTTCCGGGTGCCATTTTTAGTTATTAGAGTAATTTCCAAAATATTTCG
+AGTCGGGTTGTTTGGGGCAAAGTCCGTATTGATATAATAAGCTCACATACCTGGAAGGAG
+TTTTTTATGAATAAGCCTCTGGTTAGCTTCGCGGAGTTATCCGGCAATGCTATTAATGTT
+GCGCGTCAGTCTGTTATCGATATGGAAATGGACGCAACCCGGGAAAAGATTGGAAAGGCT
+CGTTCGTTATTCCACTCAGGTATTCATCGTGCCGTGAATGGCTATCCGCTGATTCAGTCT
+GCGGCTAACCAGCTGGCTGTCATTAAGCGACTCCTTGGCGACACGAAGTACCTCGATGCC
+TGTATTACCGAGAATCTTTGTATGTTCTCGCCAGAGGGTTATCTGTACCTGTTTATGCAA
+CGCCGCTTCATTAATGAACCCGTGGCCTGATGGACGGGACCTGAACATTATTCCATTTAA
+AAGGTGACATTATGAAACCATTCGGACTTGCCGGAAAACCCCAGCCTGAGCCCTGCGGCT
+GTTGCTGGTACCACCCGGAAGATTGTCGCTACGCTGCCGCGAAGCCGCTATATCGCCGCA
+GCCAGCGTAAGGCTGAGCGCCAGCGTCAGCGTGCGTCTATTACCCGCGCCCTGGCCGAAT
+AACGCCAGCCGTAAAGACTGCTCATGGCGGATACCTCACCCTGTTATCTGGCGGCAGTAT
+CCGCTGTGAGTGCTTATGCTAACCTACGTCTCCACGTCGTTTAATGATGTATCCCGATAT
+TACCGGAGTAAAGATGAAACTCAGTCAGCTGGAGGTGGGGATGACCGTCTGGTCACTCTC
+CCGGACCAAAATGGGAAACACCACCATTAAGACGGTGACTCTTCATTCTGTCGTCATCAA
+GGAAGTACACGATAATCACGTGATTGCCAGCTGGAATGGCAATGCACCGCGTCGTTTCGG
+GGAAACGGCTATCACTGGTTGGAAAAAGGAAAAGCCACTGCTGATCCGCGACCGTTCCGG
+AAGTGCCCGACTGGCGACGCGGGAAGAAAAGGCACGAATTCTGGATACAAAATAGCGCCC
+GCCCATCGTATCGGTCTGCTGTTCTGGCCGTTTCCTCCCCACAGAACCGGAGGGAACCAA
+AGCCGCTTACTGCATCCCACCTTCTTGCTGTCATTTCCCTCTTTTTTTAACCGTTTTTTT
+CCAGCCTTTAACCGACAAAACCACTCCTGCTCACCTGGTATGATCAGCTTGCGTCTTACC
+ATTATTTTTCAGAGAGAGGAGAGGGTACATGAATCAAACAGAAACGGGCCCGTCCGGATT
+TACCGAAACAACGGTCGATGAAGAACGCATAGCCATCAGGGTAATGATTGGTGATGTGGT
+CGGCCGCTACCGTAAGCAGGTGCCGCCTGATCGCGTCCAGAAAGCTACTTTTGAAGTGAA
+CGGCGGGCTGCTCATGGCGCTGTTACTGGCTCTGCTGATGCTGGTCTGTATTATTCAGCG
+TCTGGCAACTGGCGACCGCCTAATGAGCTTTACCGGAGAGCCTGACGTCCGGGATATTCA
+GTTTACCCTGATGCTGGTCATCGAGTTCGCACTTGGCATGGTTGTCTGGTTTCTGATTGC
+AACGGGGGAGTTTTCCCGCCCCTGGCTCTACCGCCTTACTCCGGCAAAACCCGTCTGGCT
+TTTTGATGAAGTGGAGGATGCAGACCTGGTACTGCTTTCCGGCAATCCCTTTATCAAACG
+CTGGCTTCACAAGGAAATCTTGAAAATCAGGAGGCTGACGTATACCCGCCTCGATGAGGA
+ACTGGAGAAAATCGCCCCATTACCCGGACAGCCTCCGGCACAGTAGTGTTCGTGCTCACC
+GTTTGTCACTGATCGCTGGTACGAAAACGGACTGATTACAGCCGGAAAGAAGCGGGGGAA
+CAGGCGAGCTGGCGTCGTTGAGTGTTGAGATTCGAATCCGTCTGTTTAATCAGTTATTAC
+GTCAGACACCTGCTGTTACAGCCTGCGAAGCAGCAAAACCTGAAATACTTACTTATTAAA
+TATTTAGGAGAACGATCTGTTCGTTTAAAAGGGGCGGGGTGGTATAATAACCTCGGTGCT
+GGAGGCTTTTGCCCCAGCCAGCAGATTCACTGTTTGACTGTGGTAAAAAGCAGAAAGCCC
+CGAGTAATTTTTTCAAATTAACCCGAGGCCCCTGTATGCTAGTCACATTCAGAGTAGCCT
+CTTACCCGCTTAAATGCAAGGAGAAGAAGGCCATGAAACTGCCGAACCAACCCGTTGTTT
+TGTGCGTATTGATAGTATGTCTTACGCTGTTGATATTCACCTGGCTTACGCGCAATTCGC
+TCTGCGAACTGAGGCTGAAAGACGGTACACGGGAAGTGTCGGCTGTGATGGACTACGAAT
+CCGGTAAGTAGCTGAAAGAGGGGGGGCGACCCCCCTCATTTCAGAATGTGGGCCAGCAAG
+CTAATGGCACCTTTAGAAAAGGGTTTCTCCGGTCGGGGAAACCCTTTTTTCCTTTCTATC
+GTCGGCTAAACCCTTGTTAGTTTGTACATGCAGGAAATAGCTACCCGCCGCCTTGTCGAA
+TTTCAAGTTTTCTGCTTTTCGACGACACGGCGCAATTTCCGTACCTGGCTGGCCGTGGAG
+AGAGTACCGGTCCGTGGATGACACGAACTGGCCTTATCATCGGGCTGTAGCTCATAGGAC
+ATAGCCAGTGCCGTCAATGCTTCTTCGGCTTCCTGAAGCGATTTAATGGCCGTTTGGCGC
+ATCTCTGTGCGGTGTTCAATCATGGTAATGTTTGTCCTCGTTGCACAGTTCCTTTTAGAT
+GCAAGCTCAACGCCTGCATTAAAATTCATGCCGTCTTTTTTGGCTTCGGTGGCTCGCTGG
+GAGGCGATATGGTCGGTAATCTGCGGGTGCCTTCGATTACAGCCGTATCATTTGTGGTCT
+GCCGGGAAAGCTTCATCGGATACTCCTTTGCCCGGAGCCGCCGGGGCGGGGGGGGTGTTC
+ACACCTTGTGTTTGCTGCAACGGCATTTTTTCAGGCAACCGGGAAAGTAACTTTTTCGAC
+ATATTCCTGCTTTATGTACCCGCTTTTCACACTAAAGTGAAATTTGCCCTCCTTAGCGAG
+AATTTAAAACGGACGGATCGCGTACTATAACCCCCGGAAAAAAAGTTACTTTTTTTTCGC
+CTCAGGTTATTAGGAAATGAATCGAACCTGGTATTGTTGTTTTGTAGCGAACAAACACCC
+TAAACGAAAACTAAAAGGAAGGCACCATGTCCACTGTCGAAAATGATGTAAAAACCGCTA
+ACAACGATATCAGCCTGCGCACCTACCTGGAGCGTACCGGTAACGGCGCACGCAAAAGCA
+ATGGTCTAGTCATTAACCCGGCAGTGGTCGAAGAGGAAGAGGGGTTTAACACCCGTACTG
+CTGGCATTGGGGAGAGTTACTACTCATTACCTGACGTGGTAGCCCACCTGAACAGCCTGA
+AAGAGTCCTACAAGATCGATCCTTTAAGCGTACAAGCTATTGTCGTACAGATTCTGAATG
+GCCGTCCGGTCCTGCGCCAGGGAGCATGCCGTATCCGTGCCGTCGCGATGGCAAACATCG
+AGCTGGCAGATGAAGGGCGTGAATTGATCACGTTAATTCGATGCGAGGAGTTTCGCGGTA
+GCCGCGCCAGTGCCGAGCAGTTTACGCTGGACGGTAACTCAAATCTGGCTCTGTCTGTCG
+TAGCTGAGGCGCTCTCCATCAAACGGATGGTTGAAGACGCGGAAGAACCCAAAACGTTCG
+CTGAACTGGCGAAGCGTCGCGGTAAAACCGAACAGCACCTGCGTCAGATGGTTCGCGTCC
+TGGATCTGCCTGAAGCCCTCCAGGCCATGTTGGTGAAGGGTGAAGTGAGTATGTATGTCG
+CGCTGGATGAATACCTTTACAGCGGCGATGAAGCGGTCAACAACATCACCAAAGCCATTG
+ATGTTTATGGTAAGGCGACGGCCAAAACCCTGAAATTCGTCAAAGCTGGCAACATTGATG
+CAGCGATGAAGCCGAAAGCAGCCATCGTGCCGGACGCAAATGCGACCCCCCCGGAAACCA
+CCGTGACTGAACAAACGTCCGGCGAAGGTACTAACGATGAGACCACCCCACCGCAGCTGG
+TGGACGGGAGTGCGGGCACTAACCCGGAGCCGACCCCGGAAAGGACCCCGGCACCGCAGA
+TGAAAGACCCGGTCAAAACGCCAGAGCCTAAAGCTGTGTCGGTCTCCAGCGTACTGAACA
+AAAAGACCGTGACGACGATTGCGGACACGGCAATCCCGCTGTTTTCGCGTATTGCGGAAG
+AAGCTAAACAACGGGCCGCTAAGAACCTCAGCGACGATACTTACACTCTGGTGCTGACCA
+ATGACGAGATGAATGCCATTTGTGAAGCTCACGGCGATCTGACGCAGTACCTGCGTAAAC
+ATGCTGAAAAGCAGAACAAGGGCCAGGCATGATTTCCTGACTGACCCCGCCACCCGGTAG
+GGTCGGTTACCACCACTGGTCAAGGAGAAACAGGGCAATGAAGAATACCGCAATCAACAT
+CAGCACGAAGAAACCATTGCAGACAGTTAAGGACCCGGTGACCCGGGTCAGCATTCATTG
+TACGGCTAAGGATGAGAAGGGCGCAGACGTGGAAGTAAATATTCTCGACCTGGAACAGCA
+CCACACCACCAACGAAATCAAATTGACGTTTGGCGGTTCCCCTTCCCAGGCGCTGACAAT
+GCTCAGCAGAGTGATGGTCGTGCTGCAACAGCAGGCGGCCGAAGAACTGCAACGGAATTC
+CTGCTCCCGTTTGCAGTGAACACCGAAAGGAGCAATGGCACGACGTTATGGATAGAACAT
+GGATTTATAATTTTAAAGGACTCAGTGCTGGCACTAATTATGTTAAAGCGATTAATCTCT
+GCGAGTGAATGTGTAGCTACTAGAATTTGTTGGTCTGGCAAAAAACTCCCTAATAACGCA
+CCACCTATGGAAGCTAGTTAATAAAATCTGCTACCTATTTACATAATTCCACATGCGTCC
+AATTTTTAAGATTGTCGGTTAATTTAAAAAATTTTCAGTGTAGGTTATTAGCCAGCAGCC
+CGGGTTTTATATAATACCAAAAACATAGGAGGTATTATGAAAACCAATCTGGCTTATGCA
+TCTAATTGTTCTGACTCTCTTTACTCCTTTATTTATCCTGCACTGCAACAACGCTCTGGA
+ACCGAGAATGAAAGTCTCTATCAGCAGGCTATTTCCGCCTGCCATACTCCGAAATAAAAA
+ATGAAAATGGGCGGTTACTACGCTGGCCCCTGGCAGATGCTGTTTAACGCATGGTGTCAC
+AACCGTGTACCCAACATTGCCGTACTGCCGGTATTGGCCCAGCAGTGTTTCTCCTCTTTG
+CAATGCGAAGAGCTGATCGCCAACTGGCACTAATCACATTATGCCCTGCTGGTGGATACT
+GGCAGGACTGGAGCACCTATAAATGTATAAATATGACAGGAACCGGCAGACGTTCAACTT
+GATCAATGCGCTTCAGCCGGTCTATCGCAACAATGGTGGCGGTTTGTTTGAGTTCGACCG
+CAGGAAGCAACATGAAACAGCAGATCTGATCTTCGAGGCACTGACTTTCTCCCCAACGCC
+CGAACTGGAGCTGGCGAAATTTGTCCGTCTCAAATCAGTGCGCCGGATTGCACAGTTTGA
+TGACGGGGAAGTACGTTATGGGGTTCACGTGGAACTAGACGAAGCTGTTAATATTAATTC
+CTTCCGCATTTTTAAGGATGATAATACAGGCGGGTTTGATTTTTATTTGTTTTCTGTTTT
+AGGTAATAATGCAGAGCTTGTCCAGATTAATCTGGATGCCAGCAATATTCATTTGCAGGA
+CATTTTTGAACGGTCTACCGGTTTGTGTTTGTCCTACTGATGAATTTATTAAATATTTCA
+CATCAGGTTGTTAGCCACGAGGCTGAATATGAAATAATAAGAAAAACAATGAGGTGAAAT
+ATGAAAACTTTAAATATTCAGGTTAATGACATCGCAGCAATTAGCGCACTTGGCGGCTCA
+ATGTTGGCGGATATTATCGCCGCGCAATATAAAGTGATTGATGATACCAAAGACGCATCT
+GAAATGGCCATGCCGTGCATTGCTTACGGGCAGATCCCCGCAAACATCGGCCCGGGCGTC
+TTTATCAATCGCGTGTACAGCATGGACAGCCAGTCACTGAGTGCCAGCCAGCGTTACGAG
+CTCTTTAACGGACTTGCAACCCAGGCGTTTACCTTCTTTTTCCAGTCGGGCTGGTATGGC
+GCATTCCGTGTTGTGTCTTTCCGTGATAACGGTCCTGCCGGACTCCTTAATATCGGCATT
+GTCCATGACAAGGTGTTAAACGAATTTTGCGATGATTTTCCACGGGCTAATGTCAGCGAA
+ACTGGCTTCAACTGCGGCATGACGTTTGACCAGATCCGGATGTTTATTTCGGACCTGGCC
+TATCAGATGCCTTTGTACAACAACCAAGACCACTTCGTTAAACTCGCCAAACACCTCGCG
+GCCTGACACCCCTAGCCAGGCTCCGGCCTGGCGATTATGAAGGAAATTCTTATGAGCGAT
+TTATTCAGCAGCGAATCACCGGTAACACTGGCTCAGGCACGCACTGTCGCCGCTGGGTAC
+CAGAACGTCTTTATCGAAAACCTCCAGCCAGCAGGCCATTTCCAGATTGTCATCCGTGAT
+CATCGCGACCACGACAGCCAGCTGGTCTGGCGAAACTGGAATTATGAATCCGGTGCCAAT
+GATGCGCTCAATAGCTACCTGCAAAGCCATGGGCTGAAGGCCAGTTGATTAGCACAAGAA
+CCCGGTAACACCGGGTTTCTTTTTTGTGGGCTCAGCACTCAGAGCTGGCATACGGAAAAA
+GGATCATTGGGCTGTCCGGGGCCCGCAGCTGGTGGTGTAAGCCTGGCCTCATGCAGATGG
+TTTAGCCGGGGGCGGTGATGATGCTGGGAACTAAAAAGAGATCTGGCATCCGGAAAGAAA
+TCTTCGGTACCTCATGGCCTGCGTGGTGGATATGTCTGGCTGACGACTGCGGTGTCGTCT
+GTGACGGACTCGCTCCATAATAATTTGCGGTCGGGAGAAAAGGGGCGTGTTAACAAAATT
+TAAGAACAAGGGACTTTAATATAAATACCGAGTCCATTAACGATGACGCACAGGAGTTTT
+GTGATGTTACTCAATATTGCATTAATCCTCTATGTTGCTGTTTGTCTTTACCTCTGTCTC
+CGTAATAAAAAGGCACTTTACCGTTTCCAGGGCGGAGGGCGTCAGTTTACGCAGTCCAGT
+AAGAGTGGAGCGAACACAGGCGAAAGTGGTTTCTTCTTAATCTCCGGCTACTCAGACACT
+GGCGTTGGGGGCGACAGTGGGGACGCTGGTGGCGGATGTGGGGGCGGTGGTGATTGATAC
+AGGGTGCAGGCACCCGATTGTCGGGGGGCTATCGACAGGGGGTAAAGTTGACGGATTTTT
+TCGTAATGGTTTTGCGTCCGTGGTTCTGGCTGGTGGATGGTGAAGTCAGAGGATCTGGTT
+TTAATCAAGACGGATAGAAAGTAACTTTACGGAATCTGTCATACGCAACCGGAAAGAAAA
+TCTCACGCAGGGCAGCAAAGGCACGCCAGAGTGGATTTGCAGATTCGGACGGGAAAGCCT
+ATTTTTCATGCACTGAACCTATTTGGGCTGGAACGGAACCTGGTATAGTAGACTCATACA
+AAGGAGGGCATATGAATACTTTTCTTTACGTGCTGGTGGGCTGGATTATCGTTCTATATC
+TGGTTAATAAAGTCCGCGAAAAGTACAGCAAACCGAAAACAGTTAATATCCTAGTGAAAC
+GCAATGGCGTTTATCAAGAAGTGGAAGCCGTAGTGATGCCTCGAAGCCATAATAGCGATG
+TGGGTACAGGTAAGACCGGCAATGAAGCCGCCCCACAATGGTTGAATAAAGAGGATGATA
+TTTCTGAACTGGAGTACTACAGTGGCGGGTCACTCTTGAAGGCTGCAAGAGATTTTGAAG
+CTCAACAAATGGAGCAAAAATTCTAGCCACACTATCAGTGTCCACGATTGGGAACTGATC
+GTGAAACCCTTTACTTTCAGATTCAATAAAGTCGGATGCGAGGAGTTGATTAATGACAAC
+GGCAAACGTAACCACCACTACTTACCGTTCCGATGACATCGTGCCTTTTCGTCGGCCGCA
+GGGAGATCTGGATAATCGCTATATGCCGCAGGCTTACGCTCTGGTGCGGAGCTGGGCCAG
+CAAACCTGCGGAGTACGGTGCAGGAGTTCTGGCTACCTACAGACAGCCGGTAGTCAATCT
+CGGGTATAAGATAAAAGGGACTCGCGTTGTTTTAATTCTTGTCCCTATCGAATGTGAGCC
+GGTTGGCGTAAAAATGACTGACGCCGCTTTATGGCCGTCTCTATCGATTGGGGAGGCCAT
+GCGAATTATGCAGGAAGCGTGGCAAAATATTCCGGAGTTGAATCCATAAAAAACCCCGCA
+TTTGCAGGGTTTTTTTTACTTTGCCGATCTGAACATTTTACTCAGTATAAGCCGAGAAAA
+GCGCAAAAGGTTATAGGTAATACGCTGCTCCAGCCGCATGGTTGTTTTGTATCGAGTGGT
+AACGTTGTGGATATGGTTCAAATCAGTATAAAGGCCCGGAGGCTTTCTCTTTAGCTTCAG
+CTCTCCACGGATAAAACTTACTGCTTCAGGCTTGAATACATTTAACTGGCGCCTCTCAGT
+GACTTTCCGAACGAACTCCTCCATACCCATGCAAAGCCAGTCTGGCTTCTCACCTTCAAA
+CTTGCAGGGGCCGTTAATGATGACAACATTGATACACTCCAGCTCGCTGGCGCGTAACGT
+GGACTGAATGGCCCTTATGTGCCCGTAGTTCTGCCTGAACGGGTTTTGTAACTTTAGTGT
+CCCTGACGATTTCCATTTTCGCCAGTGGCTCTCCTCCAGCTTCCCATAGAGCTTTCCTGC
+ATAGTTCTTCTGCTCGATGACGTAGAGTCCATGAGAGGCGATAAGAACGTGATCAATCTG
+CGTGGTGCCGGTGGCATTGACCGGCAGCGTTAAGTCGCTCAGAAGCCCTTCTGCATCATC
+AGGCAGGTATATTTCAATCTGTCTGGCTGTCCTGCGTTCAGCAATGGCCGACGATACAAA
+TCCCATCAGGCAGTAAAGCACAATGAGTACTAGGACAATAATGCTGATTCCTATCACTCG
+CCACACCATCAAAATTGCATCCATCTTATCTCACCGTCGGATAGCTGGTGGCCTGAACAG
+AATCAAGTATCCGAGAGGTTGTTCCTGCCAGCGTTTCGACGTTAGTCGACAGACTCATTA
+ACATCCCGAGCGCGGAGCGAAGCGACCGTTGTGGCTCGTTGTACGTCTTGAAGATAGTGG
+TTGAGTACATTTGGGACAGGCGTGAACGGACTTCGACAGGTGTCAGGTCACCGTCGATGA
+GTCCGTACCGGATCGCCTGCTGCGTTGTCCATACCCTGCCGGAATACAGTGCGACAGCAT
+CAGCCTCCGGACGGCTTAATAATTTCTTACCCCTGCCTTGCTCAACGTCCGCAATGAATT
+GTTCGTGCATTGCATCCAGGATTTGCTTCTGCATAAAATCGCGGGTGGCATCAGAAAGTG
+GATGATAGGGGTCGAGTGCATCTTTAAACTCCCCGGCGGTGAGTGGCTCATTTTTAACGC
+CGACAGTATCCATAACGCGAGACAGGTTCCAGTGATCCATTCGGACACCGATCGAACCGG
+TCAGAGCGCTACTGTCTGCATAAATGGCGTCAGCAGGGGACACAGCGTAGTAGCATGCTG
+ACGCACAAATTCCTTTGACGCTGACGATAATAGGCTTGTAGCTGTTTTCCATATCAGAAA
+TGAAATGCCCACTCCCGGCGGAGAGAACGTCCAGCGTATTACGTTTCGACAGTTCGGCAT
+TGCTATCGGCCTGCGAACGTGAAGCACTGTGATCACTCGTGTTACGGGGCTTGCTTGTGG
+ATTCGGCATGTGAAACCCGTTCAATCTTCTGCTGGTGGCTTCGTAGTGCATTAATCTGGC
+GGTAAATAATAATCGCGTCTGAAGGACCGCCGCCACCTGACTCAGCTTCAATAATGACGG
+CTTTGGCATGTGGGTTGTTGTACGCTTTCGCCAGTGCTGTGGCTATCACAGATCCATCGC
+CGACCTCAGAACCGGTACCCATTTCTCCCGAGATACGCACGACGGCGATATGATCCATTC
+GTCCTTCGGATTCCTGATACTTATCGTAAATATTAAAGGCCGAAACCCCTGCGGCGGCTA
+ATGCCAGCAGTGAAATAACCACTTTTGACGTGGTATGGATTCGGAACATTTTATAGAAAC
+GGTCAGCGTTCTCATCAAGCGATTCTTTGATATTGGCAGGTGACTTCTTATTATTACGTT
+TAAACATCTGACCACCTTATTACATAAGTTTTTGAAAGTTAGACCACAAACGGTTGAGTG
+CAATTCCCAATATCAACAATGCGACAGGGGGGAACAGTTGAGCGATATTGTTAAAAAGTG
+ACATATTAGGCATTGATAGGTATATAAAGGTTAATGCACCAATTATCCAGAAGGCCCTGA
+ACCAGATTCTGTAAAACTGAACAGTTACATTACCGAAAACGTAACGTTTTAATTTCCACT
+GATACATGCCATCAGCGAGCATAGCAATTAGGTATGGTGAAAACAAAATCAGCCAACCGA
+GTATCAGATTCCAGCGGAAAATGGACTGATAAATCAGCAGGGGTAGATTTTTTGCCACAG
+TGTAGTTTACTGATGTCATCTTTTCGGCAACGTAATTCATTCCACGTGCAGGTGTCGATG
+TGTCCGGGATCAGTATCGTATTCAGATAGTCGATCAGCTTATAGTCATTAATCAGGGTGG
+ATAAAGTAGCCTCACTATTTGCAATAACAGATAACCACCGGTCATTAGAAATAAGGCTAC
+GACTGGCGTTCACCTCCTGAGTGATTTGTTGCTTTAGCTCGTCGGTGTTCTGGAACCCCA
+GACTATAAATAAGATAAAGCATCATCCCTAGTAAAAGCAGTCCCCTGATGAATATTGCAC
+GAGCAGAATTATCCGCAGCCATTTGCGTCCCTCCACTCCTTGAATAAGTCTAATCGTTTG
+CTATGGTCACGATAGTGACTGCGCCAGATTGTCGGCACACCCAGCAACCAGTGGTATTGC
+TGCGGGATTATCTGGTTGATCAGGCTGTACTCTGCCAGTTCCTTATGCTCCGGACTTTTC
+CAGTGAATTTGGCCGGGTTCAGGAACATAGACACAAGATTTTTCCTTTGCAGCCTGACGA
+CTAAACTCGACAAAATTAATCCCCCACGGGGTCCAGTGCCGGTATTTCCCGGTAATCGTC
+GTATTAAATATCGGGAGCGTCAGCATAGTGTCTGCATAGGTGGAAATGACCTTTTTGCAC
+ACACAAGGGCTATCAATTTGCTCCCGGTTGAGGTGCGTCAGCAGCGCCCGATCCATGATG
+TGATTGAACATGTTGGCATACTGACCGGACGGGTCGGGCAGACGGTCAATTGCCGAGATA
+AGTTTAAATTTGATCCGAGAGAGAAACGCCGAATCTTCTATTGTGAGAATGTGACTTAAT
+GTGGTTTCAGGGTGAATGAGCGGCTTGTTGCGTTGCACCTGTTTAAACGTGATGCTATTA
+GGCAGCGTAATAAACGCAGATGCAGCATTTGTAAAATTGACAAAATAAGGCAATAAATAA
+CTCCCCAGCATTTTGGCATTTTTTTCGACGAGGCTGCGGCGCTCTTCGGAGTTGTCGAAA
+GTTATACGAAAGCTATTAAATGTACGTCGACCATTTTCGCTCGCCAGCAGAGACTGGACC
+CATTCATCACATGGGCCTTGTGCTACGGTCCAGTAACTCGTTTCATGGTCACCGTATTCA
+TTGCTGGTGGACAGTTCGCCTTGCAGCAGAAAAAGCTCGGAAAGGATGATCGCCATCGCT
+GATAAAGACTCAGCATCGTTGTCATGGCAAAATTGCCCCACACATTTCAAAGCACCTTTT
+TCTATCCCCGCCAGTCGGTTACGGACATCCTGCGATTCGGTAAACTTCAACCCTAATGAT
+TGCATACGCCGCTTAACGAGCGAGCGGCTTTTACTTACTTTCAGAGATGCACTGAAAATT
+TGATTTTGTGTCAGAGTAATTTGCTCATCCATCAATGCAATTTCCTTAGATATTTATTTA
+AATAGCTTAAACCCACATTCTGGCGCAAAGTTACTTTTCCGGCGGGTTTCAGGAACATCT
+CCAGTAACGTCGTATTGGGTTTCATCGCTTTTTCACTTACGGCAATCGGGATCTGCCCGA
+CAACTTTACGACCATCCTGAAGTCTGGCCACAATATGGAATTTGGGGACCTGGCCCAAAA
+GCTCTTTTGGAATACTTTCTTCCAGCGTTGTTTGCTTTCTTTCTGATATTGACCCAGAGA
+AGTTATTATGCGGCAAAGTGGTTTCAGATCCTGTCGTATACGTGACCATATTTGTACTAA
+TTGGACTCTTACCAAAGTTTTCTACGACCAGCGTTTGTGTTGGTGTGTCGTTTACCCGCA
+GGCTAATGTAGTTGTTACATAGACCTGTAATACGGTTTGCCGTCTCAGCGTTCGCTGCTG
+CAATAAAGTCGGAAATAGTTTGCGTGCAGATAAATAATGCAATTTGAGCGGCACGACCCT
+GTGCGAGTAAGTTTATCATTGAATTGTTTATGGCAGAGTGTGCTTCGTCGACGAAAATAC
+TGATTCTTGAATGGGAAGACATATCACCATCGTCAGCGTTATAACGACTACCCGCACAAG
+ACGTAAGATCTGACATTATCAACTGCGAAATGGCCCGGGCTGATTCCGGGTTGGAAAGGC
+CATCGAGCGAGATATACAGAACTCCGCCGGTACTGAACATCCCATCTGAAGTGACTATTT
+CACGCGAAGTGAGTGTATTAGGAGACGGCGAAAGCAATTCATTCAGTGGTTGTTCAGTCA
+GTCGACTAAATAGCGGCATAATACCCGCCGTCATTTTAGACATGTGTTCAGGATCAGACA
+TGGAGTAATCCACTAACCGACCGACGGTATCAATCCATTCAATGGGCTCGGCGCCTTCAT
+AATTAAGAAAATGGGCATTAAACCATTCTGTCAGGCGCTTAAATCGAACCTGAAGAGTGT
+CATTCGAAGCGTATTTCACCTTTTCCATCCAGACATCAGGCCCGTAGTGTCGTGCAAAGC
+AGCATTCCATTACTTTTATCGTTAGGTTCACAACAGACATATGGCTTTTCATGTTTTTGT
+GGATGAGATATATCGACGGTTTTTTATCCGTGTAAGACAGACCAGTGATCACCGTTGAGA
+TGAGAGCTTCGGCATATTGCACGAATGGGTTAACTTCCCCGGGAACCGAAACCAGACTAA
+GAAGTCGTGAGGTGAGGTCCGAAACATTTGTGTAAGCATTGCATACATCAATACACACCG
+ATGAAGACGGCTGGGCTGGGTGAAATTTATAAAATGGCAACCCCAGTTCTGACGCTTCAT
+CCATCAGTGACTGTCGCCACTCAGCGTCATTCTTCGGGTCAATAACCACAATGACATGGC
+CCAAATGCAGCATGCTGATGCTCAGTAAGCGCTGAAGTACCGTTTTACCGGTACCGACGT
+TTCCGGTAATGAGGGTATGTCCGAACCAGTTATCTTCGGTCACAAAAATGGGTGCCCGCC
+GGTCAACAGCAAAGATGGCGTTATTGCCCCCCATGGATCTGGCCATTGTTTCAAAATGTC
+GCGCTATAGGGCTTAGAACAAATGGCAGGGCTATCTCTCTTTTGTCACTTGAGAGATTAG
+CAATTTGATATGCGCGGTCTGCATGCTCGGGACCCCATTCAAAGCCGTTACAAAAGTAGG
+TTTTTCTATCCGGTACTGGTCGGTTATTTTTTTTATACTCTTGTACCAGCTGGCGATACT
+TTCGCTCGTTCGAGAAAAAGTTACTTTTATTGATCGTCCTGAGCGACTTGAGGCTAATAA
+ACATTATCTGGCGCTGAAATACGCGCCAGTGTGCCATCAAATAGGGGTGTGCCGTTTTAC
+AACGGTACAAACAAACCAAAAGCAGGAAAACAGCGGTATAAAGAATGATAGGGGCAATAT
+TCACCCCATCTGAACGAAAGCCCATAACCAGCATTATGACGGCGCAAATTAAAAGCACTG
+AGGCACTTCTGTACTCCAGTATCGGCCTGTAAAAGTTTTCCTGAGCGTGCAGGTTGGTTC
+TTTTTGATTTTGTCATTACAGATTCCCGACCTCTTTTAGCTTGTTAATAATTAACTCAAT
+ATCGACCTTTGCCCGGTCTGATGCGGCGACCAGAGTTGGTATGTTGAATGCAATGCATTT
+TGTATTGACTACGGCACCGGATGTGACCTGGTACTGAGGAAGTTGGTTAAAAAGCTCAGG
+CGCATTTAGCTGCGTTCCGTACTTTTCAATACATGACTGCGTCAGATAAAAGGTGTTCTG
+GGTCAAAACCATGAACCGGTTTTTCCTCTTTCTTTTGAACGACCCAGATAACTTCGTCAG
+AATTTGGTGGAGCATGGTGGCAATCTCGACATATTCGAGTTCTGTGACTTCACCGTCGTT
+TAACAGGGTGAATTCTTCCACCGCCTCTTTCTCTTCAGCGCCTGGTGGTTCAATGGAAAT
+AGGAGCCTTAACTGTGGTAGAGGAGGTTGGATTTTTAACCTCTTTAACAGGGGAGGGTTC
+CTGCGTTTTTTCATGCTTCTTCTCAGCATGGGTGCTTACAGCAAAGAGTCGAGCCAATGC
+CGGAGAAAGATGACTCGCTTTCTCCACGGCGGCTACCGTTTCTCGGACATCCTCTGCTGG
+TTCAGGACTTGTTAGTATTGTTTCTTTTCCGGTTGCATCGGGTGCTGGTGGCTTAATGGC
+ACCCTCTGAGTAATCCAAATCACCGGGCGCAACGGACAGGGCCGTTTCACGAGGTAATTG
+GGCAAAATCGCTGCTCTGCGGATCAGTGGCGGGGTATTCTGCCTCAGTACTGTCAGAGGC
+AATTAAATCAGAATATGCCTCACCATCGCTATCAAGGGTCTCTTCCAGCAAATGACCATA
+TTGCTCATACTCAGTAGCGATGACGGAATCCGGTTCGGAGTGGGCGTTAGTCTGTTCAGC
+TACCGAGCTGGCCTCTTCAGCCACAGGTGCATTCAGTCGTGGTTGGGGGAGTTCAAGCGG
+TGTTTGTGGAGGCGAAGCAGCTTCGTTTACTGATGGAGCTTCAGGGATATCCAACGGTTG
+GTACATTGACGTATCAAATAGTGATTTCAGCGATGACGTGTTTCGTGGTTCCGATGTGCT
+TACTTGCATACCGGCGCAGTTATCCCCCAGCTGTATCAGGCGTAGATTGTTTACATCACG
+GACTATCCACATACCATCTAGAGACCCATCACGGTATGTCAACTGGAAAAATGGCCCATT
+ACAAAATGCCGCCTCATCTATACCCGGGATTAACGCAATCGCAGCATCGAGATCCAGGTA
+AGGTACGGAATCAATATTAATGACGGCATGATGGGGCAGTGGGGCGCTCAACAGCATTTC
+ATGAAGTTGTTCAACCAGATGAATCTGGCTCCGGTCGTCATGCTCTTCTACCTGTTCTGG
+CTCATCCGCGTTTACCGTTTCGGCAGTATCAATTGCCGTAACAACTTGCGTTTCAAAAAT
+CTCGTTTGAGATATCCGCGCCAGACTCTTCCAAACTATCCGTAATGGATTCAGTATTTTC
+ACTGCTAATAATATTGTTACTGTCGGCATCAGGGCCGTTTACGAGCTGAAGTCCATACTG
+TGGGGTATTCTCAATGGCGTCATTGACAGTGTCCGTTACTCTGGTAACAGACTCACGACC
+CGGGACCGGCCTTCTGTATTCCGTTACAGTTTTCTGCTCATCAATATAGATGAAATCTTT
+ATTCGCATTAACGCTGAACAGACCAGGAACTGAATCCGGGATTTTATATGAATCAAAAAT
+TAACCCGATCCAACGCAGTTTTAAGAGGTTATAAAATTCCAGCTTACCAATACCGTTCCG
+GAAGATGCTTGCAATTTCATTTTCCGAATATGTCCCGGGAATAAAGTAATGAACCACACG
+TTCATCGTCGTAAGGTTCAACATAACCCCGTTGCACCAGAGATTCGACAAGTACTGTTTT
+GCCTGCATCTCCCTGCGGGAAGTTGAACTTATGGGCTGCAAAATCACTCAGTACAAAGTC
+GAGAAAGGCGTTTTCATTGAGGTAAACTTCACCGTTTACAATAATGATGTGCATGGGTTT
+AGTTTTATAGTTATTAATATTAATGCTAGTAAAGTTATGCTTAATGGTACCTATTGCCCT
+AGCCGCAGCATCATTCGAACGAAGACCCATTATCGGGTCCCTCAACACATTAAGATCAGT
+ACCTGTAGAGTAATAATCAGAAGTTCTTACACATTTTGATAAAAAGTCATTGCCGTCGTT
+ATAGACATTAAGTGCCGTAACCATTTTTGCATAGACACGCTCCTTTTTGACTCGGTCAAG
+GAATGACATACAGACAGGATCTAAAATCCTCTCAAGAAATACGCTGGACCATATATTATG
+TTGGTTATGAATACGTTTTCGCCAATGTATTTCATATTCAACAACATTGTTTTCTCGTGC
+CCAGTCAAGAAGGCTTTGCGAGCTTGGCGCCCATGTTAATGTTTCACTCAAGTTGAGACT
+AACTATATCAAGGTCATATACCTTCCCTGCATCATGTACTAGGCCGCAGATAAAAGCGGC
+ATACAGATAAACTTTTCGGCGAACCACTTCTTCATCCTGATAGCCAATCGGACGTAATTC
+AGAGTGATTGGCATTTTTTAAAGAGATCATCGCCACTTCCAGGCTGTGAGACAACAATCC
+TCCAATACCATTATGGTGATGATTCTCTGACGCAGGAAGTAAATGAATCCAGCGGATGTA
+TTCAATCAATGGTTTTAACACCAGATTAGTGAAGGTATAGGCATCCTCCCGAATGTCTCC
+ATCACTTATTGCCAGCATCATAGAAATAGAGTGCAGCTTGTCTCTGTACAACGAAAGAAT
+AGACTGCTCATTAAATGTCTGTATCCCCGCAGGCCTGGTTGGGTATTCAATGAATTTCAG
+GACTTCAGGATTCGGGTGGTCCGGCACAGTGTATTTCTGCTCTCCTATAATCTGAGCAAA
+TGGCGAGAAGTTCGCTGCATCCTTCATCATTAACTCAGATACATCATTCTCCCTTCTGGA
+GAAAATGCCAAAAACTCGTTGCATACTTAAGAAGAGTGCCCTGAAATTCATCAAATAATC
+CTTACCGGCGTTTACCAGACAGTTCCGCAGCAATATATGCTTGCACGCTTTTATACTGCT
+TTACCTTTTCGATGAACTCATCAGGACTGTAAGCACCTTTTGCGCGGCGGGAAACGTTAA
+GTGTTTTCTTGACCCGTTCGATATACATATTAAGGCTCCGGATAATATTGTGGGCCATAA
+CGTTGTAATCGCTAACCGGTAATTGACCCAGAGAGTTGAATTTGTGCATCTGTGTCAGAA
+GGTTGTTCATTTCAAAGATGTGCTTATAAAAGCGCATCGTGTTTTGATTGTTGAAGTTTA
+ACTGTACAGGTTCAAATCTGAACGGTGAAAACTCAGTTGATGAGAAGAACGGATCGCTTT
+CATCGATATGGATGGTGGCAATGTGGCGCTCCAGATTGTTCTTCATTAGATTATTTTCTT
+CGTGCAATTCATTGAACCAGTCTTGAATTGCCTGCACTAGTTCGGGGTGCTTAACTGCAT
+TGACCGTTCTGAATAAGGATGAAATGGCAATACTGACATCATCAAACCCTCTTATTACGG
+AACGATTACGTGCCGTGAGAAATCGGTTAAAGTCTGGCGTGCCTGGGGTAATAGTTACTG
+TAGCCATGCCGTAATGTTCATTTTTACTTTGCACGACCCTACGGCTATTATCGGACGCAT
+GAGGGGAGCGGGTATTTACGTCAGGTACCTTATGCTCGCTTTCATTCATTGTTACATCGG
+TCATTGTGCCACCTCTGATTTTGAGTATTGACGGACTTTTCGTCCCAGTTCGATATATGC
+AGCATGGTAGAACTCAAGTAATTCTCTGTAGGGTTCCAGTAATCCCTCCGTTTTTTCAAT
+CATTTCATATTCCCAGCTGGCATGATTAACAAAGCAGCTTTTCGTATATTTTCCACTTTT
+CATCGGTGAAATCCGTTTCGACATATGACTAGGTGGCCTGTTTTTATACGGGCTAAACTG
+ATGCCAGGTAATGGTGACTTTCCTGGCATTACCAATTAGCTCAACTTTTGGTGCATATGA
+ACCCAGATACTCCTTCTTTAGAGTTTTGCTATCCCTGGGTAAATTCCTCTCAATGTGATT
+CCGTTCTTTCCACTCGATCCAATAATTGGTGATCAGTTCTTCAGCCTCTTCTCGAAGAAC
+ATCGATTTGTGAGCGCAATAAAGTACGTGAAATCTCCAATGACTTTAATAGCTTCGATTT
+AGACATGGGGCCTCCTGATGTGAAATCACTATACCGAAGTGATTTTCAATTTTTTTTCAC
+GAACGGGACTTTTTTCTGTGAATTTTTTAGGGAATTTTGCATGGCAAATTTAAGAATGGA
+GGAAGCACTGAGAGTGAGTGACATCAGATGTAAACGGGAACGGCCAAAAGGTCCGCATTT
+TATCGTGGAAGAAAAGTAACTTTTCCAGCAATGCTTATTGCTGAGATCGTGATCTGAAAA
+GAACTGTTTTACCTACTAAGTTATACATCTATCTAGTGCCACTTTTTAAAGGAAAGTGAC
+CCTATGATTTTGACGCATAGTGCCACTTTTAAAAAAAGTGACCCTATGTCGTGATTACAT
+AGGGTCACTTTTCATCAAGAAGTGACCCTATGTCGATGGTGCATAGGGCCACTTTTCAGC
+AAAAAGTGACCCTATGTAGTAGTCATGTTAAACAATCGAAAAAATAATCATGCTTACGCG
+CATTTTTCCCTAAGGTTATTGCTACTTAATGCCGATAACGACTCAGGCTTTGAGGTTTTT
+TTATACGGTTCACATTTCGTTAGCAAGGTCAGGGTTTTTTGATAAAATTCTGGTTAGTTT
+GGTTAAAAAGTGTTACAAGTAAGGGTAATGGCTGAAAGGTTAGTTTTAAGGTTCAAAGCG
+GCAGTATTAAAATTCCAAAAGTTACTTTTCATCCTTCAGAATCCAGACCTTAATTTCATG
+TAGAAGATTCGTACAATTGTATTGGCGCAAGGACAATCCGCACATGTCAGAATCAGATAA
+CATCACGCGTAATTTACTCGGTAAACTATTACGTACCGAGATTTCGATTATTCGTAGTTA
+CCGTGCCTTCTTAATGTTATTGCCTCTTCATGGATCTTCTAAGTATCAAACTGGATCACC
+ACTCCTCCAACGCCGACTATTTGGTAATGGATTTGGAGCTATGATTGATAATGCATTTGA
+AGTTGAAACTCGGCCAGGAAGCTTCCTCGTTCCTCGTTCTTTAAGTAAAGAGATCTCTTG
+GGACAAATTCTTTGTAGCTGTAGTTGATGGCGACACTAACGTCATTCGAGAATATGACAG
+TGAAGATACTGACTTCGGCATTTACAATGAAGGTGAAAAAGTAACTTTGCTCAGCGGGCA
+GGAGGAATTTTATAATCCGAGAAAAATTCAGCAACTACGTTCTAAGTGTGTAGACATTCA
+AAATGATTACTTAATGCAAGTTTTCTTTATGTCAATGCTTGCACCTGAGTTTGTTAGTAT
+CTTTTTTGGATTAAAACCTGCCACCGTTGAAGCAATAAAAGATGTCGGGATGTCATCACT
+TAAATTAATTAATGATGTCGTTCTCTTTCCACGAACAATTCCCTTTACGCCAGGTCTGGG
+GGATGACAGTGCTACGCTAAAATCAAAGGTATTTGCTTGGGCATACGAAATATCTGCCGA
+TATTCGTTTGGGTAAAATTAGTGACGATTTAATGGAATTACTGCGTTACGACACTATGTT
+TACATGCCACCGTCAGGATGTGTTCAATACTTTGGCAAATAAAGTGCTCTTGAAGGATTA
+TTGAATATGGCTAAAGTCGATCAAACTAAAGCTAACATGTTATTGAGCGCTACAAAAACG
+ATGTCTCTTGGTGCCAATAAAAACTCCATAAGGATACTCTATGGAAATCATGTTGCCGAA
+AATATAGACTTCAGGTCTGAACCTCAACAAAACTTTAAAAAAGGGATTCGTGGGTGGAGT
+CGCCGCACGGATAACCGCAGGGCTTTTTCTGCGGTTATTGATGTCGCTGTAAACTATTTC
+GGTTTTGATCCTATTCACCCGGAATCCAGTTTTCGAAATATTGACTTCAACCGCATCATG
+AGTGTGCTGCATAACCTTGGATATTTCGTCTGCGCTCCTGAGGTAAATAAAATCATTGAG
+ATTCTAACGTCAATGAAAGAAATCGAGGAGCTTGAAACTTGTGCGAAATGTAAGCGCCCT
+TATATTGTCCCGTATACCAATGATACTCATTGTCCTCGATGCAGATTGTCGTCCACGTCA
+TCGGCAATAGCACGGTATTCCCAGGAAGAGTTAGATTAGCTGTTATTTTATGTGAGTGAT
+TTAAGTAGAGGTCAAAATTCCCAGGGATGTTTCTTCGTTAACTACAAAATTTCTTTACTT
+ACTTCACTGCAAAATAGACTACATGTTGCTGTTTTCTTCAGACAGCTTCCGGCCTAACGT
+AACTGAAACGATTATGCTAATATTATTTTCAACCGTAGTTGCTCATTACCCAGTCAATTC
+TGCCTAACTTTTCTCTGCATAAGTATGACTAACATGAAATGGCATTTTTTAGGTCAATGC
+TGCATATGATATAAACACATTAAACCGTTTTCTTGCCAAATAATATATCCTCAGTTTTTT
+TAATTTATCGAAAATTCCCGATTCGAAAATCAATCGAATGCGGCGCTCATCTAGAAATTT
+TTAAAAGTATCGTCTGGAATTGAATTCAGATTCAATTAACTATGCTGATAACTATTTTCC
+CACCTTTTTAGCTCCCATACCTTCCCTGCACACAGAAGTTCAACAGCCCTTTCAGGGTCT
+TTCTAGTAGTCACATTTATGACTTTTTAACGTTTGAAATCTACCCCGTTACCGAGCTCAT
+GAAGTTTTTTTCTATGCCATCATACCTCTATTCCATGAGGAGATCGGTAAATGACTCGAT
+TAACGTTAATACCTTCAAAGATGTTAGTGCTGCTGTCTTTGTTTATTACTGGGGTCCATG
+CAAATGAAGAGCAGGCCCTTATCAAAGACACTCCCTTTGTATCAGGACAGGCCTTCAAGA
+AAGGCTTTTTCTGGTATGACGACCCGACAAGGAAAACTGAGGAAGAAATTACAGAGACCA
+AGCCTCCTGTTGCATCTTCGACCCAGCCAGAACAAGAAGAAAAGATTGAGCTTAATTCAA
+AGTGGCTAAAGGACAATATGCCTCAGCTTTTGACTAAGGCTATGGATAATCCGACCCCTG
+AAAATTTATCGAGATTTTATACAGCACAACGTTTAATGCTGGATATCGGTACGCGGTTTT
+CGGATAAATCGAAAGATTATTTCCTTAAAAATCCAATGATGTCTGAAAAACGCAGGCAAC
+CGGTTGAAAAGGTAGCGCTCGATGCACATCGTACGGTGGTCGAGAAAAATCAGCAGTCGG
+TTATGAAAGATATTTTCACTAAATCCGGGCTGTTTTTCTTTTTCCAGAGTACTTGTCAGT
+TCTGCCACGAAGAAAGTCAAATACTCCAGTTTATGGAGAATTACTATTCTGTCGACATTC
+TTCCTGTCAGCATGGACGGCAGACCACTACAGAATGGGTTGTTCCAGGATTTCTCTGTAC
+CTAATGCGCAGATTATTGATCAATTTAAAATCCGTGAAGTTCCAACTATTTTCCTTGTCT
+CAAAAGATGGGTCATCAGCGCAACGAATAAGCGAAGGCATGATCACTGCTGAGGAGCTCA
+AGAATACTATTATTCTGGCTGCAAAAGGCATGAAGCTGATTGATGATGCCTCTTTCCAGT
+CCACTTTAGATATTAAGCGCCAATATACCATTGGCGAGGATGGCGTAATTACTGTGAATA
+AATCAGAAATGGACTCTGACCCGTTCTTATTGCAACGAATAATGGATAAGAAACTGGAAG
+GGTACGATATGCCAACGGCGGACCCAGTGAACTATCTGAATGTGGGTGGAAGTTTAGGAG
+GTGCATATGCGCGCTGATTTCCATGTTTGTGCAAAAAAGTTACTTTTATCGTTAGCCGTT
+TGCACGGCGATGATTGCGCCAAATGCCGTTGCCGATAACGCCATGCGTAATATTTTCAAT
+GGCATGATGACGACTACGAGCCCAGCTAGTTTTGAAACGGCCACCCGTACCGGAGTGGTT
+GGCGGCTCATTTTCCTACCGCACGACAAACGTGAATACCAATTTAGTGTCAATGTCTTTT
+CCCAAAGCTTCCGTAGGCTGCAACGGAATCGATGTTTTCCTTGGTTCCTTCAGTATGATT
+AACGGAGATCAGCTGGTTCAGGTTGCTCGCGGTATTGCACAGGGGGCTGCAATTTATGCA
+TTCAATGTCGCGGTATCGGCAATCTGTGCTGACTGTGCTGCGACTATTAACGATATCCAG
+AATAAATTGCAGGCGCTGAATAAATTTGCCAAAGATTCATGCAACGCTACTTATTCGTTT
+CTTACTGAAAATGTTGGTCCACCTAGCCAGTTTGCGAATGCTGTCAGTTCCGGCCCTGCT
+TCAATGCTTGGCACTCTTAATGGACTGTTGCCTGATTTTGGTTCATCAATGACAAAGTCG
+CCGGAAACCGTGACTTCCCAGGTAAAAGCAAAAGACCCTGAAGAGTTTGCTGAAAAATTC
+AGTGGAAACCTTTTCTATATGTCATTTATGGACATCGATAAAGGGTCAATGAATATCGGT
+GGCGTGACTGAGCTATCTGGCTACAGACTTGCTGAGCAGCTGATGTCGCTTGTCGGTACT
+GTAATTATCAACTGGGACGCTAAAGGTGAAAAAGCGGGGATGGAAGTTCGCCCGTCGACG
+ATGACGGTATCGGATTTCATCATGGGCCCACCGGCTGGTGGTTCCATAAAAATGCTCAAA
+TGTTCGCCTGCCCCCGATCCAGCTTCAGCTAGAAAGTCGCAATGCCTGGTTATGTCTGAA
+GTGACGGATGGTGGTTTCAAAGGTTTGAAGGATACAATCTCGGACCTCCTTATTCAGGTT
+CAGACAAAGGCAATTAGTGATGTCAGGATCTCTGATGATGAATTACGCATTATTTCTTAT
+ATTGGCATCCCAACTATTCTTGATTCACTTCAGACGTTTGATGTCCCTGAAGGCTACGCC
+TATATCCAGGATATCAGTGCGATAGCGGCCACCAGCCTTGTTATTAACATGCTTCGGCAA
+GTTGAAGCAAAGATCAGCGCTATGAATATACCCAGCGAATCTCTTTCCGGGCGGCGGCAG
+GACCTGACTAGGTTATCTGAAAACCTGACCAATCAGGTAAAAGCTGCCTATGAGCTAACC
+CGTAGCCAGGTGGGCAACAGCTCTGACGTCATTTCTGCATGGGATGATCGCCGATTAAAG
+AGAAAAGCGTTCATGGAAAGTCTTCGTGGCACAGGTAACTGAGGTCTGATATGGATTACA
+ACATCTATACAGTTGGCGATATTGAATTTGTGTGGTCCGCCCTGAACGGGATTGCCCTGA
+TTTTCTCACAATACACCGGTGTAAAAGCATTTCTAACGACGGCAGCGGTACTGGCTGGAG
+CCAGCCTGTTTTATAAAACGTGGCTTTGGCTGTTGAACCCGACAAAAGCAGAAGTGCCGA
+TATTTTCATGGATTCTTGGGCTGATTCTATTTTCGATGGCAATTGTTCGTGTGGATGTGA
+CGATTGAATCAGTTAAGTCTGGTGAAGTGAGAAATGTCGATGGCATTCCTATTTTTATTG
+CGGCGATGGGAACTGTCACCACGAACCTTAGCCAGGGCTTACTCAAAGACTACAAAACGG
+CATTTGATCCACTGGCGCCGATCGACTTTGCCGCAACGACGCTTGATGATGACATTACTC
+TTGGTCCGATGATTCGTTTCGTTAAATTCTTACAATGGGGTGGTGACAGCCAGGGCTATT
+GTTCTGCGTTTCCCGAACCAGCCAGCGGGTTAGGTGCGATGAATGTGTGCGCGACAGTAC
+AATCACTGGCCTATAACTGTCTCAAGGGAACCCAAAACTCAAGCGCAAAAATTGCTGGGA
+AAGAAACCATTTTTAACGATATTTTCTCTGCAAATATCGTGGATAGCATGGAACGCATTA
+ATCAGGCGATGAAAGGTTCGCTGAAGAACGCCTCTGCCAACATTGTCGGTGTGAATAGCT
+CAAAGTCTGCTACTTGTGAAGAGGTCTGGTCGACCGTTAAACAGGTAACGAGCACCCCAG
+AGGCTCGGCAGACGATTGCATTGATTGGGCAAACAAACGGTATCCTTGCTCCAGATGAGG
+CGGGAGGTGCAGCATCAGGAGCGAGCTTCACGGATGTAATGGCGTCGGCGAATGGCATGT
+ACGGCAAAGCTATTGGTGCTTATGACGCGACGCTTAGTTTGTTCATCATGAATGAACTCC
+GTAATGGTGCCAGCAAGTACAAAACCCCACTCGGGCTGGCCTCGGATATGCAGTTGTTTG
+AGGCATCATTAAAGCGTACGAATACCATGGCATCTCAGGGGCAGCTCTGGCTGCAATTGT
+CCGGTGCAGCCATCGCGTTTCTTGAGATGTTTGCGTACATGGTTGCCCCATTTGCATTGC
+TCATGCTTTTGGCTCTCGGGGGAAATGGTGTGGCCGCTGCTGCAAAATATCTCCAGCTTA
+TTCTTTTCGTAAATATGTGGCCTATTACTGCGGTTATGGTGAATGCCTACGTGAAGAAAG
+TGGCGACCGCAGATCTTGATACATGGAGCACATTGAATAGTCAGAGTAACGCGGTGACAT
+GGATGGGTTTGCCAGGGCTTGCCGAAACATACAGCTCTTATTTATCAGTAGCATCAGCAC
+TCTATGCTCTTATCCCTGTATTGACGCTGTTCCTGATGACGCAATCCATTCATCCAATGA
+TGAACGCGATGAAAGGAGTCACACCACCAGCGCCAGTGGACTCCAGCCACCTCACGCCGA
+AAGTGTGGGATGCGCCAAACAGCGGAAAATCATCGTTTGGGGATGTGAATCGTACCGCGC
+TGACAAGCACCGGCCAAGGATTCAGTGGTGGCGGGGCCATGGACTCCAGTAATTTCCGAC
+TCGGTACGTGGAATGCCGGTTCAAGTATCGCGTCAAGCCAGGGGCAAGGGGCAGCATTTA
+CCTCTTCAGCCATGAGCGCAGCAAGTAACACATTCCAGCAGGCCTTCAACCAGATGAGTG
+AAGTTGGCCGAACGGGGCAATCAGGCCAGCAATTTACCTCCAACCTGCAAAGCTTGAAAT
+CATTTACTGACCAGGCCGGTGCAAACATCGCGAATAGCGTAGGGGCGAAGCATGGAATTA
+ATTCGCAGCAATTAGCTGGCGTGGTGTCAAATCTTCTGCTCAATGGCAGTTTGGGACTTG
+GTGGTGAAGAAAAACTTGGAAAAGGAGGAGGAGGAGGTCTCGCTCAGAAAGTAATGGATA
+GCCTAGGAATAAAAGCGGAGGGGCAAGTTGGATCAGGGATCACGAAAAGTAATTCTGGGA
+ATGAAAGTCTCTTAACTGATTTGAGTAAAGCTATTACGACTCAATTGACTGAAAACTCAG
+GACTGACTGACCAAATGACTAAAGCGGCTGCTCAGATAAACAGTGATCAGTTTGCACAGA
+CCAATGCATTCAAAGAAGCTGCAACAAAAATGAACCAGTCCACACAGACAATGGCCGAAA
+ACTTGTCGACGTCACTTTCAACGAACGCCAGCGCCAATACTGGCATGACACTCGACTCAA
+GACAGGCTATCAACCTGGACAGATTCTCCGATTCTATCCGTAATAAAAACTTTAGCGATG
+AAGATGTGCGTAATTTTGCACGGAAAAATGGTCTTGATGAGAATGCCTTTATGGAGAAGT
+TCAATTCCTATAATGACACATTTAAGGCCAGCACTCAGTTGGGTTCACAACTCCAACGTA
+CAGATGCGCTGGTGGCAACGACACGTGACTTTAGTGAGCAAAAAATAGCGATTGATACTG
+CCCGAGGTGAAACGGCTGAGAGCAATAAACAGGATCTGCGTGAAACTTCCAGCCTGCTTA
+AAGGGCTGGTTGCTGACTTTGGCGGTAACGCTCAACAGATGCTGCCGATTACTAATCAGC
+TTGACCGAATCACTGGTGATGCCTCGGGTATTAACACGATTGCACAGGCGCAGGATCGCA
+CCCCAGAACATGTAAATACGTCCAGCGTAATGAGCGCTGATCGTGTTGCTGACGTGGGGC
+AAAGTATGGATGCTCAGGCAAAAGCCGGGCTGGTACAAAACCAACAAAATGCTAACCAGC
+ATGTTGGTGGACAAACTGAGTCTGGTGTAACTCCGTACAATGTGGACAAGATCAGCAAAG
+AAGATATTCAGGGCATTCATCAAGGTAATGTAAATAAATCCTATAGCGAAGAGAACCAGA
+ATGTGCTCTCGTCATTGGAGAAGAATACCCCTGTTGTGACGAATGAAACTGTGGGAAGAG
+TTCAGGGGGCTGGGGTGGACGTTCAGCACGCCAACCAAACTTTCGACCAGTTACAGGCTG
+GTTCGGGCGGTAAGCATGCGACTTCGGGCATGGGTACTATCAGCGACAAACTGAATAATA
+TGTACGGAGATAACCAGATACGCGGTATATCAGGCAACCTCCCGAATTATTTTGGCAGGA
+TTGCAAATGATCCTACCAAAAAGCCGGATGACAAACGTGCGGAACTGGCCGCACAAGCTG
+TGTTTACCTATGGCGCCAGTACAATGGCAACCGGCGCTGAGAAAGAACAACTGAAAGCGG
+ATACTCAAAATATCCTCTCCGAACTGAGTCACTATAACGTTCGCTGGGGGATGAACGATC
+TCCAGAATATCCATGAAGGTTTCAACATGCATAACAAGGCTTCAGGTTCTCTTGACTCAG
+TTGTGAGGGCGAATCTTGGGGAAGGTGGTTCTGGCGGCGGGCTCGTTGGGCAACGAACCC
+AAACCACGACGGATCTCCTTGTTGGTAATAAAATTGAGTCCAATACAGAACGTGGTGTTA
+TTGGTAGTACGCTTTTATCGGGGCAGGAGAGTGTTGCCAGAGGACTTGACGTTATCGGAG
+CTAAACCTGTAAACGACATGCTCTCAGGTATGGGTATCCTGACCACCCCTTCATCTTTGG
+CAAACGATGCTTCGAATCCACAAAATATGCCGAGCTCGCTATTGGGCAAGGTTGGAAATC
+ACCTGCAAATGTCAGATGGTGTTAGCGAGGTGACCAGCAGGTATAAGGATATGGGGGGGG
+ATGGGATCAAGGCGTATGAGACTGCATCACAAAACTCAGAACGTGCGATTCGTCAGCAAC
+TGACCGATGATCCACGTTTTGGGCCGGATAAAGCAGATGCATTCGTGAGCTTTATGAAGT
+CAAACCTGAATAATACAAATGAACCATATCAGTCGAGAATTGAGAAAGCTAAAAGCTGGC
+TGAATGAAAATAAGAAGTAAAAGTAAGTAGTAGCTGATAAAGGCCGTACTCTCTTTTGAG
+TACGGTCTTTTTTTGCTTGCATCACCCTGATTCAAATTTCCTCACCAAATACAGGTCACC
+CGGCACACTAAGAAAATGTGCATTTCTTCTGTTCAAAATGAAAATTGAGAGAAAAGTAAC
+TTTTCTGAATCGACTGATGCTTTAGTGCCTAGGCTATAGCGCATCAGAGGCTTTGGTTGT
+ATGGAGGGTGTGGAAAAGTTACTTTTTCAATAAAAGCGGGTCATCAGCACATTATATCTG
+GCTATCAGGTCCGTTAGATCCTTTTCATTAACCCCGGTGTAATAATCTGTACGAAACAGG
+TGCGGGTACTCTGGAGGAACAGGGTCGCATCGTCATCAAGGCAGATAAAGGCTTTTACTT
+TGTGTCTGGTGACGAAGTCCTCACATTCAGCTGCACGGACTCCTATACTTCCTGAGGGGA
+GATACAGGGATGGGGTTGCTCCAATTACCCTGTCTCTGTATGGCGAGCGGAAAAGTGACT
+TTAGGTAAGTGATACTGCCGCACTCTCTCCATGAGCTTGATATAACGATGAACATTGAAG
+GACTCGCGTCAAGTAACCTCTCAATCAAATGCATCCTCTCGAACGATTCATTCTGACATT
+TGTGGACTACACCATCAAAATCCAGGAAAAGAACAACATGGATTGATGGCAAAGGACCCC
+ATAATCCAGCGGTTATTTCTTCATGAGACAATATCCCATCCACGTCTTTATTTTTGGGCA
+GCTGCGGTGAACTGCATAAATTGAACAGGAATTTATAAATTGACTGGAGCATCGTTAACC
+TTTTTCTCAGGACGTTTTCATTCTCTAAGAGCCGCATTGTTTATGGCTACGAAACAACTA
+ATAAAAAATTGGAGAGTAGGGTCGTATTTTATTCAGGAAGATTTTTTACAATATGCCCGT
+TGTACTGGGGCTTAGGTTGCGTCCACTGATATAATTCGTCCATTCCATTTCGGCGCTGAA
+TCCGGCGATTGTATTTGATCATGAAGTTGAAGATATACGTCGCCCGGACCTTAGGGGTTT
+TGCTGTTGTAATCGGCAATCCCTTCAAATACGTTACCCTTCCGGTCAACAATCTTCCGGT
+AAAGCCACCAGGTGCCCACCCAGAAACTGGCACAGGCGTCATAGGCCAGCACCCGCCACG
+TAACAGACGGAAAATGGTCGCGTATTTCTGGCAGGTTGGACGAATTGATCTGCATAGGCC
+CAATATCATAAGTGCCATTTTTATTACGGCTGAACGTCCCGACTTTTCCGCCCTCATTAT
+CAAAAAGCGTAAAGACCAACTCCGCATCAATCCCGAAAAAACGGGAGGCATCGGTAATGC
+ACTGCGTGTAGATCTCAACAGGAACGGGAATAGGTTTCACATCGTCTACTGGTGGTATAA
+ACACGAGATAATCTCCGCTGGAATTACGTTCTGGATATTCTCCCATATCGTCGTCAAAAT
+TTTTTTTGCTATAGGGGGGAATTTTTCCCCTTAAGCGAATTAGGCAGATTTTTTCGCATG
+ATAGTATTAACACTCCATTAAAGGAGCTGAAATGAATAAGACTATCAAGGCATCATTATT
+TTTACTGGCATCCTGTACGGCCTTGAGTATGAATGCCCAGACAGCGAACACTGACGTGCT
+TCCCGATGCTGCACTGAAGAAATTAAGAGAAGTGGGCTTGTCTATCGAGCATATTGAACC
+ATCGCCGGTAAAAGATATTTATACCGTCATTTCAAGAGAGGGCGTGAGCTACGTCAGCAA
+AGATGGCGATTACATTTTCACCGGGAGCTTGTTTCATGTGAACGGGAAAGATGTGGAGAA
+CACAACTGAGCAGGCTATTCTGAAAGGTGTCAGGGAGTTCGCCACTAAAACAAAATCCAT
+CGAATATAAGTCGGCGAATGAAAAATACCGTCTGGCAGTGTTTACGGATATTACATGCGG
+CTTTTGCCAGAAATTGCATCAAGATCTTCAATCCTATCTCGACGCCGGGATCTCAATCAA
+ATTCCTCGCCTTTCCACGTGCAGGTCTCAACTCCGTTGTCGCGGGGAATATGGCAAAAAT
+ATGGTGTGCGGCAAAACCTAATGATGCACTGGATGCCGCAATGAGCCCGACATCAACCAT
+TCCGGAAGGACGGCCTGACGAGGCCTGCCTCGATACCATCAAATCGCATTTCCAGGTAGC
+TTCAACTATTCCGCTTCAGGGTACGCCAACGATGGTAACGCTGTCGGGGAAACCTCAGCT
+ATTCACCGGTTGGATGAGCCCGGAAAATCTGGTGACCCGCATGGGTGCCGAACAAAAGTG
+ACTTTCCACGACTGCAAGAGGTGTTTATGAAATCTGCAATACTGACAACGTTAATGCTGG
+TGGCGGTTGGTTCTCAACCCGTCTTTGCTGCCAAATGCCAGTTCGGGGCCTGCGACGCCG
+ACACTGTGGCCAGCAGTGAGAGTCTGGTATCTGCTGCTCAGACAGATAAAGACGCAGTTT
+TAAAAAAACTCAATGATGCGACATCCCGCAGCGACGTGATGTCGAAACGGTTTGAGTCGT
+ATCTGAGCAATGACAGGTTAAAGGTGAACACCGACAGTACCAAGAAAGGCCCTAGCAATG
+AAATCGCTAAGCCGAGGGATGAGTTGGCGCCGGTAAGGCAGCTGAAAGCCATTCGCCCCG
+AGCTGGTACAAACACCCATCTTCCAGCCCATTGTTGCGTTCTATGAACGTCTGGCCTGAG
+TGCGTCGCTGGGGGTTAGAAGATGTCGCTTTGGCTCAGCATTGTCACCCGGGCAACGGGA
+TTGCCGGATAAGCGGTATTTAAATGATCCGGTGATCCTCCGTTATTACCAACAAAAGATC
+CAAAAGGCTCCTTACGCCCTGGTGGGATGGACTCTCTGTTTCATGGCAACCATTGGTGTG
+TCGCTGGGACTGGATCTTTCCAACCAGATGTTACTTCTCGTTCTGCTGATATTGATCTTT
+CTGATGGTGGTGCTCCAGGGGCGGTACCAGTTCATGCATCCGGAAAGATGTATCAATGCC
+AAATTTTACCAAACGGTGCTGGACGATGCGTCAGTCTCAGATATTCAGAAAGCTCAGTTT
+GAATATCTCTTCGTGACCAAAGTGGATGAGCTGACCATCGGTGATCTGTACCGACTCTAT
+GATTTCAACAGAGGAGGCCGGTAAAGACGTGGCATGCAGGTGAGAAAAGTTAATTTGTGG
+TTGGTCGTTACAGTGCCGGTCATCAGTTCCAGGGGACCGAGGCGACGTAGTTTCCGGAGC
+GCAGCGGGGCATCCAGATTCCCGGTCAAAGCGTCAATCATTGCGGAATACGCCACGCTGT
+CCGATGGGATCGGCGCATTGCTCTGCATACTGACTTTTAGCACCTGCTGTGCATTTTTTC
+CCGCAGGGTAGACTTCCACATCAAGACGACGCCAGAAATGTCTTTGTGATACCGTCTCTG
+TTCCTACGATCCCACTGACCGGCTTATAGTCATAGTCCGTCTCAGTTTGCCCGTGCTTAT
+CTTTTCGCGTTGTTTTCTTCTCGATAACATATCCGGTTATTCCCGTCACCGGTAGTTCAC
+TGTATTGCAGATTCTCCTGGGTCTTGCTGTAACTGAATCTGAGAATATATTCGGGCTGAT
+GGCTGGAAATATTAAACCCCTTACCCGTTAATCCGCTCGCAAACCGGGCTGCAAACATTC
+GCGACTGAATACTGTCATCCGGAGCAACAATTTCAAATTTCTTGCTGCCTACCGGGCGAG
+GCAGTAAATCGTACGCATCAACGTCATTTCCAAAATGATAACCGCATCCACATAAGAACG
+TTGTGGCTGTTAGTAAGAAAAATTGCCGTAACATTCTAAATCCTCCAAAAAGGGTTCTTT
+AATGAATAATTCCGATTTACCGTGCCAGTATAATCGAACGCAGGCTGATAACTAACAAGT
+TGAAATGCGTAAAGGTGGCTATGATTAAATTAAATTATTTAAAACCCGTGGCGTCTGTTT
+TAATTTCTGCGGTGATTGCGACGGCTGGCTCTGTGTATATTACGTCGAAATATCTAAAAC
+CCGATGTACCGGGTAACGACGAAATAGGACGAGTGGCTGCTTCCTATCTGGTAAAAAATC
+CCCAGTATCTTCTCGAAGCAGGTAAGGCGCTAGAAAAAGAAAATACTAACGCTTCCCTTG
+AGCGGATTATCCCCTACGCACCGGCACTCTTCGAGACCAAAGAGACACCCAATATCGGAC
+CTGATAATGCGGCCGTCGCTGTTATTGAGTTTTTCGACTACCAGTGTCATTTCTGTATGC
+AGGTAGCGCCGGTTGTTGAATCTGTGTTGAGCCAAAGCACTGATGTAAAGTTCTTCTTTA
+AAGAATTTCCGATCTTCGCTGGCTCAAAACCTGTTTCCGCAATGGGGGCGGCGACAGGCC
+TGCATGTGTATCAGACATTCGGTGCGGAAGCGTATCGTAAGTATCACAACAATCTGATGA
+CCAGTGCGTATGTATTCTTCAACAACCAGCGTGCGTTTACACTCAATGATTTAGACATGG
+TTGTGAATAAATCCGGGTTCAACAGCTCATTCGGCGATCGGGAGAAAAGCCGCTATGAGA
+ACGTTATCTCCGGAAACATGCAGCTGGGGGAAGCTCTCGGGATTAACGGTACGCCAGGGT
+TCATTATTATGAACATGCAAAAACCCGACGCTGCAACGACGTCATTCATCCCGGGCGCTG
+TTGACGAGGCCACCCTGAAATACGCAATCCAGAAGGCCCGTGGAGGCTAAAGTTACTTTT
+CCTTCCGAAACTGGCCATGCCGGGTAACACCGGCATGAACGTCAGGCTTTGACGACAAGT
+AACTCATTCCAGCGAGTGGTATACCGTGGGGACAGCATGGCCTGCTTCCCCCGGAAATCC
+TGATGAATCCCTTCGCAAGCCAGAAACAGAGAGCCTCGATGCTCTTTGTTAAACCGATCC
+ATCACCTTCATCAGTGCTTCACTGCCTCGCCTGGCGGGACGTTCATCGAACAGGGATAGC
+TGCTCAGTGCCATCGGTCATTGACGAAAGCATCACGCCCGCCTTCGCATAATCTATGCCG
+GGTTTGTAGATTCGGGTCAGTATGGCGCCTGCCGCACTGACCAGGTCGCGGGTGTCCTGC
+GTCGCAGTAAGCGGCTCAATACCGCAGCTGCTGTACCGGGCTTCAGCTCTGGCAAACGGG
+CTGCTCTGGATAAACACGGTGATTTGGCGAGTCCAGGAGCCATCGTTTCGAAGCTGTTCA
+GCGGCACGGCCGGTAAAGAATGACACTGCCTCATGCATCTTGCTGAATGTATTAAGGCGC
+TGGCCAAAGCTCCGCGAGACGATAATTTGTTGTCTGACAGGAGGGGATTCATGCAACCGG
+AAACAGGACTCGCCATGCAGCTCCCGCCAGGTACGTTCCATTTCAACACCGAATGCCTTT
+CGTAAAAACCGCACATCGCTGTCATAAAAGTCGCAGGCCGTGATGATCCCGTACGCAGTC
+AGCCGCTCACTGATTTTGCGGCCAATGCCCCAGATTTCCCGGGTACTGATGAGACTCAGC
+AGTTTTTTAATTCGGAATGGGTCTGTAAGGACGACCACACCACCAGTTGCTGCCCATCGC
+TTACTGGCGTAGGTGCATAATTTTGCGAGCGTTTTCGTGGTCGATACTCCAATCCCGCAG
+GTGAGCGAAAGATTGTGTAGCAGCGTTCGTCTGATCAGGCATCCGTACTCTTCAAAATCT
+ACTATTTTGTCCATGTTTTTCAGTAGCATGAAGCTTTCATCCACGCTGTAACGATCGGTA
+TCCTCGGCAAACCCCTCCAGCGTTTCATGAAACCGGTTGGAATAATCTTCGTACAACGTA
+AAGTTGGAGCTCCGTACCGCAATATGATGCTGCTCAATCAGATCCCGGCATTTGAAGATA
+GGCATCCCGCGTTTGAGCCCTGTATTTTTGGCGAGCCTGTTCATGGCGATAATGGTGGCA
+TCGTTGTTGCTCGCGATGATGAGCGGGGATTTGGCAAGTTTGGGGTCCATGGCGCATTCA
+AATGCCGCGTAGGCTCCATTGATATCAACGTGCATGTACATGAGGAAACTGATTCAACGC
+AAAGGTGACAACGCCCCAGATTTCAAGAGTGTCCGGGTTAACAGGTATCGGCTTGAAGGC
+GGGGTTGGAGGGCATCAACATCAGTTTCGGGAAGGTCTGCAAAATCTTCACGGTAAACTC
+GCCGTCAACCAGCGCAACGACGATTGAGCCGTGCTCCGCAGTCAGTGACCGATCCACAAC
+CAGTATGGCGCCGTCGTTTATTCCGGCGTCTACCATGCTGAGACCTGAGGCCCTGACAAA
+GAAAGTCGCGGGGCGATTACGAACCACAAAATCATGTAAATTCAGCTCATTGTCTTCGTG
+TCCGGCGCACGGACTCATCACCCCGCAACTCAGTAGGTCACTGAAAAAAGGGGTTGTATC
+ACGAGGAGGGGATGCAAAACGTTCAGGGAATACAGACATGAGCACACTCGGATTCAATAC
+TGGATATTTAACCAGTATCACCAGATAAAGAGAAAAGATCAAATTTCAATGGCTCAGCAT
+TCGGGAAAGATATCCCGGCACTAAGCCGTAATTTATGTAACGGTATGATATGGTTCAGCG
+GATTTTCATTCACGAACATGACAACAGGAATTCCCTATGGCTATCGATACCGACGATACC
+GATCCGGTAGACGCAGAGGCGTGCGAGAAGTACCTGGCACAGTTACGGGAACTGGAGGCA
+TACAGGGCGTACCGAACGACAGCTGCGATTGACTGGTTCTTTGACCAGGCTACCCGGGCC
+ATTCACGGTGAGTTGTGGCTAGCCGCCTGTACGACTTTCCTGAACGGGATTGAGACCTCA
+CTGATGGTGACGATGAAGCTGAAGGCGTCGCAGGCACAACCGCAGGCACCAACACCGCTG
+GTGGACTTAAGCGATATGGCCACACTCAGTAATGCTCTGCTAAGAAGGGCTCACCAGGCC
+GGTATGCCGGTGACACTGCTGGCCTTTCCCGACGAGCAGGATCTGCTGACCAAGATTGCG
+GACGGCGCCCCGAAACTACCCTATGCGGAAATCGTGAGGGTTCGGCACAATTTATGTCAC
+GGGAACATCCTGGAGCACATCATCACTGCGAGTGACGGTATGGGGGAGCCAGTCCGGTTA
+TTCACACCTGAATGTATGCGTGATCTGGCGCAGACGCTGTCGGCAGTCTCGAAAGTATGG
+ATTGCAGGCCTGCATCAATATTGGTGTGATAACAATTTATCTATGCCTTGAAAATTCCTG
+ACGGATTTTGTTCCCGGTGTCATTTGTACGCCGGGATGAAAAATGATGCTTCACAACAGG
+AATTAGCTGTTTATTGCTTAGAAAGATTTGTGATATAAAAATTATGTTTTGAACTTGATG
+ATAGTAATGGAGAAACATATGAAAATTAAAAACATTGTATTGGCAGGAATAATTTCATTG
+GTATTTTCTGTTCATGCCAGCGATAAGCAGAATATAAAAAGGGACCCAATACCTTATTTA
+GGGTACGACGCAGTTACTTCAAACATGTGCATAGATGCTGGTGGTTTAACTGATCCAGTG
+GAGATGAGAAAGAAAGCTACTGAAACATTACTAATGATTCTTCACAAACAACCAGGTGAT
+AAACTATCTAAACAATCAGAAGATACAATAGAAGCATTTGTTACACGAACAAGATCCTCT
+TCAGATGACATATCTAAATGCCAGTTCAGTGCTGATGAATCCCCTAATGATTTTTATCAA
+AATCATTAAGTTAAGGTAGATACACATCTTGTCATATGATCAAATGGT
+>NODE_16_length_35628_cov_42.0221':NODE_18_length_78_cov_102;
+ACCATTTGATCATATGACAAGATGTGTATCTACCTTAACTTAATGATTTTGATAAAAATC
+ATTAGGGGATTCATCAGCACTGAACTGGCATTTAGATATGTCATCTGAAGAGGATCTTGT
+TCGTGTAACAAATGCTTCTATTGTATCTTCTGATTGTTTAGATAGTTTATCACCTGGTTG
+TTTGTGAAGAATCATTAGTAATGTTTCAGTAGCTTTCTTTCTCATCTCCACTGGATCAGT
+TAAACCACCAGCATCTATGCACATGTTTGAAGTAACTGCGTCGTACCCTAAATAAGGTAT
+TGGGTCCCTTTTTATATTCTGCTTATCGCTGGCATGAACAGAAAATACCAATGAAATTAT
+TCCTGCCAATACAATGTTTTTAATTTTCATATGTTTCTCCATTACTATCATCAAGTTCAA
+AACATAATTTTTATATCACAAATCTTTCTAAGCAATAAACAGCTAATTCCTGTTGTGAAG
+CATCATTTTTCATCCCGGCGTACAAATGACACCGGGAACAAAATCCGTCAGGAATTTTCA
+AGGCATAGATAAATTGTTATCACACCAATATTGATGCAGGCCTGCAATCCATACTTTCGA
+GACTGCCGACAGCGTCTGCGCCAGATCACGCATACATTCAGGTGTGAATAACCGGACTGG
+CTCCCCCATACCGTCACTCGCAGTGATGATGTGCTCCAGGATGTTCCCGTGACATAAATT
+GTGCCGAACCCTCACGATTTCCGCATAGGGTAGTTTCGGGGCGCCGTCCGCAATCTTGGT
+CAGCAGATCCTGCTCGTCGGGAAAGGCCAGCAGTGTCACCGGCATACCGGCCTGGTGAGC
+CCTTCTTAGCAGAGCATTACTGAGTGTGGCCATATCGCTTAAGTCCACCAGCGGTGTTGG
+TGCCTGCGGTTGTGCCTGCGACGCCTTCAGCTTCATCGTCACCATCAGTGAGGTCTCAAT
+CCCGTTCAGGAAAGTCGTACAGGCGGCTAGCCACAACTCACCGTGAATGGCCCGGGTAGC
+CTGGTCAAAGAACCAGTCAATCGCAGCTGTCGTTCGGTACGCCCTGTATGCCTCCAGTTC
+CCGTAACTGTGCCAGGTACTTCTCGCACGCCTCTGCGTCTACCGGATCGGTATCGTCGGT
+ATCGATAGCCATAGGGAATTCCTGTTGTCATGTTCGTGAATGAAAATCCGCTGAACCATA
+TCATACCGTTACATAAATTACGGCTTAGTGCCGGGATATCTTTCCCGAATGCTGAGCCAT
+TGAAATTTGATCTTTTCTCTTTATCTGGTGATACTGGTTAAATATCCAGTATTGAATCCG
+AGTGTGCTCATGTCTGTATTCCCTGAACGTTTTGCATCCCCTCCTCGTGATACAACCCCT
+TTTTTCAGTGACCTACTGAGTTGCGGGGTGATGAGTCCGTGCGCCGGACACGAAGACAAT
+GAGCTGAATTTACATGATTTTGTGGTTCGTAATCGCCCCGCGACTTTCTTTGTCAGGGCC
+TCAGGTCTCAGCATGGTAGACGCCGGAATAAACGACGGCGCCATACTGGTTGTGGATCGG
+TCACTGACTGCGGAGCACGGCTCAATCGTCGTTGCGCTGGTTGACGGCGAGTTTACCGTG
+AAGATTTTGCAGACCTTCCCGAAACTGATGTTGATGCCCTCCAACCCCGCCTTCAAGCCG
+ATACCTGTTAACCCGGACACTCTTGAAATCTGGGGCGTTGTCACCTTTGCGTTGAATCAG
+TTTCCTCATGTACATGCACGTTGATATCAATGGAGCCTACGCGGCATTTGAATGCGCCAT
+GGACCCCAAACTTGCCAAATCCCCGCTCATCATCGCGAGCAACAACGATGCCACCATTAT
+CGCCATGAACAGGCTCGCCAAAAATACAGGGCTCAAACGCGGGATGCCTATCTTCAAATG
+CCGGGATCTGATTGAGCAGCATCATATTGCGGTACGGAGCTCCAACTTTACGTTGTACGA
+AGATTATTCCAACCGGTTTCATGAAACGCTGGAGGGGTTTGCCGAGGATACCGATCGTTA
+CAGCGTGGATGAAAGCTTCATGCTACTGAAAAACATGGACAAAATAGTAGATTTTGAAGA
+GTACGGATGCCTGATCAGACGAACGCTGCTACACAATCTTTCGCTCACCTGCGGGATTGG
+AGTATCGACCACGAAAACGCTCGCAAAATTATGCACCTACGCCAGTAAGCGATGGGCAGC
+AACTGGTGGTGTGGTCGTCCTTACAGACCCATTCCGAATTAAAAAACTGCTGAGTCTCAT
+CAGTACCCGGGAAATCTGGGGCATTGGCCGCAAAATCAGTGAGCGGCTGACTGCGTACGG
+GATCATCACGGCCTGCGACTTTTATGACAGCGATGTGCGGTTTTTACGAAAGGCATTCGG
+TGTTGAAATGGAACGTACCTGGCGGGAGCTGCATGGCGAGTCCTGTTTCCGGTTGCATGA
+ATCCCCTCCTGTCAGACAACAAATTATCGTCTCGCGGAGCTTTGGCCAGCGCCTTAATAC
+ATTCAGCAAGATGCATGAGGCAGTGTCATTCTTTACCGGCCGTGCCGCTGAACAGCTTCG
+AAACGATGGCTCCTGGACTCGCCAAATCACCGTGTTTATCCAGAGCAGCCCGTTTGCCAG
+AGCTGAAGCCCGGTACAGCAGCTGCGGTATTGAGCCGCTTACTGCGACGCAGGACACCCG
+CGACCTGGTCAGTGCGGCAGGCGCCATACTGACCCGAATCTACAAACCCGGCATAGATTA
+TGCGAAGGCGGGCGTGATGCTTTCGTCAATGACCGATGGCACTGAGCAGCTATCCCTGTT
+CGATGAACGTCCCGCCAGGCGAGGCAGTGAAGCACTGATGAAGGTGATGGATCGGTTTAA
+CAAAGAGCATCGAGGCTCTCTGTTTCTGGCTTGCGAAGGGATTCATCAGGATTTCCGGGG
+GAAGCAGGCCATGCTGTCCCCACGGTATACCACTCGCTGGAATGAGTTACTTGTCGTCAA
+AGCCTGACGTTCATGCCGGTGTTACCCGGCATGGCCAGTTTCGGAAGGAAAAGTAACTTT
+AGCCTCCACGGGCCTTCTGGATTGCGTATTTCAGGGTGGCCTCGTCAACAGCGCCCGGGA
+TGAATGACGTCGTTGCAGCGTCGGGTTTTTGCATGTTCATAATAATGAACCCTGGCGTAC
+CGTTAATCCCGAGAGCTTCCCCCAGCTGCATGTTTCCGGAGATAACGTTCTCATAGCGGC
+TTTTCTCCCGATCGCCGAATGAGCTGTTGAACCCGGATTTATTCACAACCATGTCTAAAT
+CATTGAGTGTAAACGCACGCTGGTTGTTGAAGAATACATACGCACTGGTCATCAGATTGT
+TGTGATACTTACGATACGCTTCCGCACCGAATGTCTGATACACATGCAGGCCTGTCGCCG
+CCCCCATTGCGGAAACAGGTTTTGAGCCAGCGAAGATCGGAAATTCTTTAAAGAAGAACT
+TTACATCAGTGCTTTGGCTCAACACAGATTCAACAACCGGCGCTACCTGCATACAGAAAT
+GACACTGGTAGTCGAAAAACTCAATAACAGCGACGGCCGCATTATCAGGTCCGATATTGG
+GTGTCTCTTTGGTCTCGAAGAGTGCCGGTGCGTAGGGGATAATCCGCTCAAGGGAAGCGT
+TAGTATTTTCTTTTTCTAGCGCCTTACCTGCTTCGAGAAGATACTGGGGATTTTTTACCA
+GATAGGAAGCAGCCACTCGTCCTATTTCGTCGTTACCCGGTACATCGGGTTTTAGATATT
+TCGACGTAATATACACAGAGCCAGCCGTCGCAATCACCGCAGAAATTAAAACAGACGCCA
+CGGGTTTTAAATAATTTAATTTAATCATAGCCACCTTTACGCATTTCAACTTGTTAGTTA
+TCAGCCTGCGTTCGATTATACTGGCACGGTAAATCGGAATTATTCATTAAAGAACCCTTT
+TTGGAGGATTTAGAATGTTACGGCAATTTTTCTTACTAACAGCCACAACGTTCTTATGTG
+GATGCGGTTATCATTTTGGAAATGACGTTGATGCGTACGATTTACTGCCTCGCCCGGTAG
+GCAGCAAGAAATTTGAAATTGTTGCTCCGGATGACAGTATTCAGTCGCGAATGTTTGCAG
+CCCGGTTTGCGAGCGGATTAACGGGTAAGGGGTTTAATATTTCCAGCCATCAGCCCGAAT
+ATATTCTCAGATTCAGTTACAGCAAGACCCAGGAGAATCTGCAATACAGTGAACTACCGG
+TGACGGGAATAACCGGATATGTTATCGAGAAGAAAACAACGCGAAAAGATAAGCACGGGC
+AAACTGAGACGGACTATGACTATAAGCCGGTCAGTGGGATCGTAGGAACAGAGACGGTAT
+CACAAAGACATTTCTGGCGTCGTCTTGATGTGGAAGTCTACCCTGCGGGAAAAAATGCAC
+AGCAGGTGCTAAAAGTCAGTATGCAGAGCAATGCGCCGATCCCATCGGACAGCGTGGCGT
+ATTCCGCAATGATTGACGCTTTGACCGGGAATCTGGATGCCCCGCTGCGCTCCGGAAACT
+ACGTCGCCTCGGTCCCCTGGAACTGATGACCGGCACTGTAACGACCAACCACAAATTAAC
+TTTTCTCACCTGCATGCCACGTCTTTACCGGCCTCCTCTGTTGAAATCATAGAGTCGGTA
+CAGATCACCGATGGTCAGCTCATCCACTTTGGTCACGAAGAGATATTCAAACTGAGCTTT
+CTGAATATCTGAGACTGACGCATCGTCCAGCACCGTTTGGTAAAATTTGGCATTGATACA
+TCTTTCCGGATGCATGAACTGGTACCGCCCCTGGAGCACCACCATCAGAAAGATCAATAT
+CAGCAGAACGAGAAGTAACATCTGGTTGGAAAGATCCAGTCCCAGCGACACACCAATGGT
+TGCCATGAAACAGAGAGTCCATCCCACCAGGGCGTAAGGAGCCTTTTGGATCTTTTGTTG
+GTAATAACGGAGGATCACCGGATCATTTAAATACCGCTTATCCGGCAATCCCGTTGCCCG
+GGTGACAATGCTGAGCCAAAGCGACATCTTCTAACCCCCAGCGACGCACTCAGGCCAGAC
+GTTCATAGAACGCAACAATGGGCTGGAAGATGGGTGTTTGTACCAGCTCGGGGCGAATGG
+CTTTCAGCTGCCTTACCGGCGCCAACTCATCCCTCGGCTTAGCGATTTCATTGCTAGGGC
+CTTTCTTGGTACTGTCGGTGTTCACCTTTAACCTGTCATTGCTCAGATACGACTCAAACC
+GTTTCGACATCACGTCGCTGCGGGATGTCGCATCATTGAGTTTTTTTAAAACTGCGTCTT
+TATCTGTCTGAGCAGCAGATACCAGACTCTCACTGCTGGCCACAGTGTCGGCGTCGCAGG
+CCCCGAACTGGCATTTGGCAGCAAAGACGGGTTGAGAACCAACCGCCACCAGCATTAACG
+TTGTCAGTATTGCAGATTTCATAAACACCTCTTGCAGTCGTGGAAAGTCACTTTTGTTCG
+GCACCCATGCGGGTCACCAGATTTTCCGGGCTCATCCAACCGGTGAATAGCTGAGGTTTC
+CCCGACAGCGTTACCATCGTTGGCGTACCCTGAAGCGGAATAGTTGAAGCTACCTGGAAA
+TGCGATTTGATGGTATCGAGGCAGGCCTCGTCAGGCCGTCCTTCCGGAATGGTTGATGTC
+GGGCTCATTGCGGCATCCAGTGCATCATTAGGTTTTGCCGCACACCATATTTTTGCCATA
+TTCCCCGCGACAACGGAGTTGAGACCTGCACGTGGAAAGGCGAGGAATTTGATTGAGATC
+CCGGCGTCGAGATAGGATTGAAGATCTTGATGCAATTTCTGGCAAAAGCCGCATGTAATA
+TCCGTAAACACTGCCAGACGGTATTTTTCATTCGCCGACTTATATTCGATGGATTTTGTT
+TTAGTGGCGAACTCCCTGACACCTTTCAGAATAGCCTGCTCAGTTGTGTTCTCCACATCT
+TTCCCGTTCACATGAAACAAGCTCCCGGTGAAAATGTAATCGCCATCTTTGCTGACGTAG
+CTCACGCCCTCTCTTGAAATGACGGTATAAATATCTTTTACCGGCGATGGTTCAATATGC
+TCGATAGACAAGCCCACTTCTCTTAATTTCTTCAGTGCAGCATCGGGAAGCACGTCAGTG
+TTCGCTGTCTGGGCATTCATACTCAAGGCCGTACAGGATGCCAGTAAAAATAATGATGCC
+TTGATAGTCTTATTCATTTCAGCTCCTTTAATGGAGTGTTAATACTATCATGCGAAAAAA
+TCTGCCTAATTCGCTTAAGGGGAAAAATTCCCCCCTATAGCAAAAAAAATTTTGACGACG
+ATATGGGAGAATATCCAGAACGTAATTCCAGCGGAGATTATCTCGTGTTTATACCACCAG
+TAGACGATGTGAAACCTATTCCCGTTCCTGTTGAGATCTACACGCAGTGCATTACCGATG
+CCTCCCGTTTTTTCGGGATTGATGCGGAGTTGGTCTTTACGCTTTTTGATAATGAGGGCG
+GAAAAGTCGGGACGTTCAGCCGTAATAAAAATGGCACTTATGATATTGGGCCTATGCAGA
+TCAATTCGTCCAACCTGCCAGAAATACGCGACCATTTTCCGTCTGTTACGTGGCGGGTGC
+TGGCCTATGACGCCTGTGCCAGTTTCTGGGTGGGCACCTGGTGGCTTTACCGGAAGATTG
+TTGACCGGAAGGGTAACGTATTTGAAGGGATTGCCGATTACAACAGCAAAACCCCTAAGG
+TCCGGGCGACGTATATCTTCAACTTCATGATCAAATACAATCGCCGGATTCAGCGCCGAA
+ATGGAATGGACGAATTATATCAGTGGACGCAACCTAAGCCCCAGTACAACGGGCATATTG
+TAAAAAATCTTCCTGAATAAAATACGACCCTACTCTCCAATTTTTTATTAGTTGTTTCGT
+AGCCATAAACAATGCGGCTCTTAGAGAATGAAAACGTCCTGAGAAAAAGGTTAACGATGC
+TCCAGTCAATTTATAAATTCCTGTTCAATTTATGCAGTTCACCGCAGCTGCCCAAAAATA
+AAGACGTGGATGGGATATTGTCTCATGAAGAAATAACCGCTGGATTATGGGGTCCTTTGC
+CATCAATCCATGTTGTTCTTTTCCTGGATTTTGATGGTGTAGTCCACAAATGTCAGAATG
+AATCGTTCGAGAGGATGCATTTGATTGAGAGGTTACTTGACGCGAGTCCTTCAATGTTCA
+TCGTTATATCAAGCTCATGGAGAGAGTGCGGCAGTATCACTTACCTAAAGTCACTTTTCC
+GCTCGCCATACAGAGACAGGGTAATTGGAGCAACCCCATCCCTGTATCTCCCCTCAGGAA
+GTATAGGAGTCCGTGCAGCTGAATGTGAGGACTTCGTCACCAGACACAAAGTAAAAGCCT
+TTATCTGCCTTGATGACGATGCGACCCTGTTCCTCCAGAGTACCCGCACCTGTTTCGTAC
+AGATTATTACACCGGGGTTAATGAAAAGGATCTAACGGACCTGATAGCCAGATATAATGT
+GCTGATGACCCGCTTTTATTGAAAAAGTAACTTTTCCACACCCTCCATACAACCAAAGCC
+TCTGATGCGCTATAGCCTAGGCACTAAAGCATCAGTCGATTCAGAAAAGTTACTTTTCTC
+TCAATTTTCATTTTGAACAGAAGAAATGCACATTTTCTTAGTGTGCCGGGTGACCTGTAT
+TTGGTGAGGAAATTTGAATCAGGGTGATGCAAGCAAAAAAAGACCGTACTCAAAAGAGAG
+TACGGCCTTTATCAGCTACTACTTACTTTTACTTCTTATTTTCATTCAGCCAGCTTTTAG
+CTTTCTCAATTCTCGACTGATATGGTTCATTTGTATTATTCAGGTTTGACTTCATAAAGC
+TCACGAATGCATCTGCTTTATCCGGCCCAAAACGTGGATCATCGGTCAGTTGCTGACGAA
+TCGCACGTTCTGAGTTTTGTGATGCAGTCTCATACGCCTTGATCCCATCCCCCCCCATAT
+CCTTATACCTGCTGGTCACCTCGCTAACACCATCTGACATTTGCAGGTGATTTCCAACCT
+TGCCCAATAGCGAGCTCGGCATATTTTGTGGATTCGAAGCATCGTTTGCCAAAGATGAAG
+GGGTGGTCAGGATACCCATACCTGAGAGCATGTCGTTTACAGGTTTAGCTCCGATAACGT
+CAAGTCCTCTGGCAACACTCTCCTGCCCCGATAAAAGCGTACTACCAATAACACCACGTT
+CTGTATTGGACTCAATTTTATTACCAACAAGGAGATCCGTCGTGGTTTGGGTTCGTTGCC
+CAACGAGCCCGCCGCCAGAACCACCTTCCCCAAGATTCGCCCTCACAACTGAGTCAAGAG
+AACCTGAAGCCTTGTTATGCATGTTGAAACCTTCATGGATATTCTGGAGATCGTTCATCC
+CCCAGCGAACGTTATAGTGACTCAGTTCGGAGAGGATATTTTGAGTATCCGCTTTCAGTT
+GTTCTTTCTCAGCGCCGGTTGCCATTGTACTGGCGCCATAGGTAAACACAGCTTGTGCGG
+CCAGTTCCGCACGTTTGTCATCCGGCTTTTTGGTAGGATCATTTGCAATCCTGCCAAAAT
+AATTCGGGAGGTTGCCTGATATACCGCGTATCTGGTTATCTCCGTACATATTATTCAGTT
+TGTCGCTGATAGTACCCATGCCCGAAGTCGCATGCTTACCGCCCGAACCAGCCTGTAACT
+GGTCGAAAGTTTGGTTGGCGTGCTGAACGTCCACCCCAGCCCCCTGAACTCTTCCCACAG
+TTTCATTCGTCACAACAGGGGTATTCTTCTCCAATGACGAGAGCACATTCTGGTTCTCTT
+CGCTATAGGATTTATTTACATTACCTTGATGAATGCCCTGAATATCTTCTTTGCTGATCT
+TGTCCACATTGTACGGAGTTACACCAGACTCAGTTTGTCCACCAACATGCTGGTTAGCAT
+TTTGTTGGTTTTGTACCAGCCCGGCTTTTGCCTGAGCATCCATACTTTGCCCCACGTCAG
+CAACACGATCAGCGCTCATTACGCTGGACGTATTTACATGTTCTGGGGTGCGATCCTGCG
+CCTGTGCAATCGTGTTAATACCCGAGGCATCACCAGTGATTCGGTCAAGCTGATTAGTAA
+TCGGCAGCATCTGTTGAGCGTTACCGCCAAAGTCAGCAACCAGCCCTTTAAGCAGGCTGG
+AAGTTTCACGCAGATCCTGTTTATTGCTCTCAGCCGTTTCACCTCGGGCAGTATCAATCG
+CTATTTTTTGCTCACTAAAGTCACGTGTCGTTGCCACCAGCGCATCTGTACGTTGGAGTT
+GTGAACCCAACTGAGTGCTGGCCTTAAATGTGTCATTATAGGAATTGAACTTCTCCATAA
+AGGCATTCTCATCAAGACCATTTTTCCGTGCAAAATTACGCACATCTTCATCGCTAAAGT
+TTTTATTACGGATAGAATCGGAGAATCTGTCCAGGTTGATAGCCTGTCTTGAGTCGAGTG
+TCATGCCAGTATTGGCGCTGGCGTTCGTTGAAAGTGACGTCGACAAGTTTTCGGCCATTG
+TCTGTGTGGACTGGTTCATTTTTGTTGCAGCTTCTTTGAATGCATTGGTCTGTGCAAACT
+GATCACTGTTTATCTGAGCAGCCGCTTTAGTCATTTGGTCAGTCAGTCCTGAGTTTTCAG
+TCAATTGAGTCGTAATAGCTTTACTCAAATCAGTTAAGAGACTTTCATTCCCAGAATTAC
+TTTTCGTGATCCCTGATCCAACTTGCCCCTCCGCTTTTATTCCTAGGCTATCCATTACTT
+TCTGAGCGAGACCTCCTCCTCCTCCTTTTCCAAGTTTTTCTTCACCACCAAGTCCCAAAC
+TGCCATTGAGCAGAAGATTTGACACCACGCCAGCTAATTGCTGCGAATTAATTCCATGCT
+TCGCCCCTACGCTATTCGCGATGTTTGCACCGGCCTGGTCAGTAAATGATTTCAAGCTTT
+GCAGGTTGGAGGTAAATTGCTGGCCTGATTGCCCCGTTCGGCCAACTTCACTCATCTGGT
+TGAAGGCCTGCTGGAATGTGTTACTTGCTGCGCTCATGGCTGAAGAGGTAAATGCTGCCC
+CTTGCCCCTGGCTTGACGCGATACTTGAACCGGCATTCCACGTACCGAGTCGGAAATTAC
+TGGAGTCCATGGCCCCGCCACCACTGAATCCTTGGCCGGTGCTTGTCAGCGCGGTACGAT
+TCACATCCCCAAACGATGATTTTCCGCTGTTTGGCGCATCCCACACTTTCGGCGTGAGGT
+GGCTGGAGTCCACTGGCGCTGGTGGTGTGACTCCTTTCATCGCGTTCATCATTGGATGAA
+TGGATTGCGTCATCAGGAACAGCGTCAATACAGGGATAAGAGCATAGAGTGCTGATGCTA
+CTGATAAATAAGAGCTGTATGTTTCGGCAAGCCCTGGCAAACCCATCCATGTCACCGCGT
+TACTCTGACTATTCAATGTGCTCCATGTATCAAGATCTGCGGTCGCCACTTTCTTCACGT
+AGGCATTCACCATAACCGCAGTAATAGGCCACATATTTACGAAAAGAATAAGCTGGAGAT
+ATTTTGCAGCAGCGGCCACACCATTTCCCCCGAGAGCCAAAAGCATGAGCAATGCAAATG
+GGGCAACCATGTACGCAAACATCTCAAGAAACGCGATGGCTGCACCGGACAATTGCAGCC
+AGAGCTGCCCCTGAGATGCCATGGTATTCGTACGCTTTAATGATGCCTCAAACAACTGCA
+TATCCGAGGCCAGCCCGAGTGGGGTTTTGTACTTGCTGGCACCATTACGGAGTTCATTCA
+TGATGAACAAACTAAGCGTCGCGTCATAAGCACCAATAGCTTTGCCGTACATGCCATTCG
+CCGACGCCATTACATCCGTGAAGCTCGCTCCTGATGCTGCACCTCCCGCCTCATCTGGAG
+CAAGGATACCGTTTGTTTGCCCAATCAATGCAATCGTCTGCCGAGCCTCTGGGGTGCTCG
+TTACCTGTTTAACGGTCGACCAGACCTCTTCACAAGTAGCAGACTTTGAGCTATTCACAC
+CGACAATGTTGGCAGAGGCGTTCTTCAGCGAACCTTTCATCGCCTGATTAATGCGTTCCA
+TGCTATCCACGATATTTGCAGAGAAAATATCGTTAAAAATGGTTTCTTTCCCAGCAATTT
+TTGCGCTTGAGTTTTGGGTTCCCTTGAGACAGTTATAGGCCAGTGATTGTACTGTCGCGC
+ACACATTCATCGCACCTAACCCGCTGGCTGGTTCGGGAAACGCAGAACAATAGCCCTGGC
+TGTCACCACCCCATTGTAAGAATTTAACGAAACGAATCATCGGACCAAGAGTAATGTCAT
+CATCAAGCGTCGTTGCGGCAAAGTCGATCGGCGCCAGTGGATCAAATGCCGTTTTGTAGT
+CTTTGAGTAAGCCCTGGCTAAGGTTCGTGGTGACAGTTCCCATCGCCGCAATAAAAATAG
+GAATGCCATCGACATTTCTCACTTCACCAGACTTAACTGATTCAATCGTCACATCCACAC
+GAACAATTGCCATCGAAAATAGAATCAGCCCAAGAATCCATGAAAATATCGGCACTTCTG
+CTTTTGTCGGGTTCAACAGCCAAAGCCACGTTTTATAAAACAGGCTGGCTCCAGCCAGTA
+CCGCTGCCGTCGTTAGAAATGCTTTTACACCGGTGTATTGTGAGAAAATCAGGGCAATCC
+CGTTCAGGGCGGACCACACAAATTCAATATCGCCAACTGTATAGATGTTGTAATCCATAT
+CAGACCTCAGTTACCTGTGCCACGAAGACTTTCCATGAACGCTTTTCTCTTTAATCGGCG
+ATCATCCCATGCAGAAATGACGTCAGAGCTGTTGCCCACCTGGCTACGGGTTAGCTCATA
+GGCAGCTTTTACCTGATTGGTCAGGTTTTCAGATAACCTAGTCAGGTCCTGCCGCCGCCC
+GGAAAGAGATTCGCTGGGTATATTCATAGCGCTGATCTTTGCTTCAACTTGCCGAAGCAT
+GTTAATAACAAGGCTGGTGGCCGCTATCGCACTGATATCCTGGATATAGGCGTAGCCTTC
+AGGGACATCAAACGTCTGAAGTGAATCAAGAATAGTTGGGATGCCAATATAAGAAATAAT
+GCGTAATTCATCATCAGAGATCCTGACATCACTAATTGCCTTTGTCTGAACCTGAATAAG
+GAGGTCCGAGATTGTATCCTTCAAACCTTTGAAACCACCATCCGTCACTTCAGACATAAC
+CAGGCATTGCGACTTTCTAGCTGAAGCTGGATCGGGGGCAGGCGAACATTTGAGCATTTT
+TATGGAACCACCAGCCGGTGGGCCCATGATGAAATCCGATACCGTCATCGTCGACGGGCG
+AACTTCCATCCCCGCTTTTTCACCTTTAGCGTCCCAGTTGATAATTACAGTACCGACAAG
+CGACATCAGCTGCTCAGCAAGTCTGTAGCCAGATAGCTCAGTCACGCCACCGATATTCAT
+TGACCCTTTATCGATGTCCATAAATGACATATAGAAAAGGTTTCCACTGAATTTTTCAGC
+AAACTCTTCAGGGTCTTTTGCTTTTACCTGGGAAGTCACGGTTTCCGGCGACTTTGTCAT
+TGATGAACCAAAATCAGGCAACAGTCCATTAAGAGTGCCAAGCATTGAAGCAGGGCCGGA
+ACTGACAGCATTCGCAAACTGGCTAGGTGGACCAACATTTTCAGTAAGAAACGAATAAGT
+AGCGTTGCATGAATCTTTGGCAAATTTATTCAGCGCCTGCAATTTATTCTGGATATCGTT
+AATAGTCGCAGCACAGTCAGCACAGATTGCCGATACCGCGACATTGAATGCATAAATTGC
+AGCCCCCTGTGCAATACCGCGAGCAACCTGAACCAGCTGATCTCCGTTAATCATACTGAA
+GGAACCAAGGAAAACATCGATTCCGTTGCAGCCTACGGAAGCTTTGGGAAAAGACATTGA
+CACTAAATTGGTATTCACGTTTGTCGTGCGGTAGGAAAATGAGCCGCCAACCACTCCGGT
+ACGGGTGGCCGTTTCAAAACTAGCTGGGCTCGTAGTCGTCATCATGCCATTGAAAATATT
+ACGCATGGCGTTATCGGCAACGGCATTTGGCGCAATCATCGCCGTGCAAACGGCTAACGA
+TAAAAGTAACTTTTTTGCACAAACATGGAAATCAGCGCGCATATGCACCTCCTAAACTTC
+CACCCACATTCAGATAGTTCACTGGGTCCGCCGTTGGCATATCGTACCCTTCCAGTTTCT
+TATCCATTATTCGTTGCAATAAGAACGGGTCAGAGTCCATTTCTGATTTATTCACAGTAA
+TTACGCCATCCTCGCCAATGGTATATTGGCGCTTAATATCTAAAGTGGACTGGAAAGAGG
+CATCATCAATCAGCTTCATGCCTTTTGCAGCCAGAATAATAGTATTCTTGAGCTCCTCAG
+CAGTGATCATGCCTTCGCTTATTCGTTGCGCTGATGACCCATCTTTTGAGACAAGGAAAA
+TAGTTGGAACTTCACGGATTTTAAATTGATCAATAATCTGCGCATTAGGTACAGAGAAAT
+CCTGGAACAACCCATTCTGTAGTGGTCTGCCGTCCATGCTGACAGGAAGAATGTCGACAG
+AATAGTAATTCTCCATAAACTGGAGTATTTGACTTTCTTCGTGGCAGAACTGACAAGTAC
+TCTGGAAAAAGAAAAACAGCCCGGATTTAGTGAAAATATCTTTCATAACCGACTGCTGAT
+TTTTCTCGACCACCGTACGATGTGCATCGAGCGCTACCTTTTCAACCGGTTGCCTGCGTT
+TTTCAGACATCATTGGATTTTTAAGGAAATAATCTTTCGATTTATCCGAAAACCGCGTAC
+CGATATCCAGCATTAAACGTTGTGCTGTATAAAATCTCGATAAATTTTCAGGGGTCGGAT
+TATCCATAGCCTTAGTCAAAAGCTGAGGCATATTGTCCTTTAGCCACTTTGAATTAAGCT
+CAATCTTTTCTTCTTGTTCTGGCTGGGTCGAAGATGCAACAGGAGGCTTGGTCTCTGTAA
+TTTCTTCCTCAGTTTTCCTTGTCGGGTCGTCATACCAGAAAAAGCCTTTCTTGAAGGCCT
+GTCCTGATACAAAGGGAGTGTCTTTGATAAGGGCCTGCTCTTCATTTGCATGGACCCCAG
+TAATAAACAAAGACAGCAGCACTAACATCTTTGAAGGTATTAACGTTAATCGAGTCATTT
+ACCGATCTCCTCATGGAATAGAGGTATGATGGCATAGAAAAAAACTTCATGAGCTCGGTA
+ACGGGGTAGATTTCAAACGTTAAAAAGTCATAAATGTGACTACTAGAAAGACCCTGAAAG
+GGCTGTTGAACTTCTGTGTGCAGGGAAGGTATGGGAGCTAAAAAGGTGGGAAAATAGTTA
+TCAGCATAGTTAATTGAATCTGAATTCAATTCCAGACGATACTTTTAAAAATTTCTAGAT
+GAGCGCCGCATTCGATTGATTTTCGAATCGGGAATTTTCGATAAATTAAAAAAACTGAGG
+ATATATTATTTGGCAAGAAAACGGTTTAATGTGTTTATATCATATGCAGCATTGACCTAA
+AAAATGCCATTTCATGTTAGTCATACTTATGCAGAGAAAAGTTAGGCAGAATTGACTGGG
+TAATGAGCAACTACGGTTGAAAATAATATTAGCATAATCGTTTCAGTTACGTTAGGCCGG
+AAGCTGTCTGAAGAAAACAGCAACATGTAGTCTATTTTGCAGTGAAGTAAGTAAAGAAAT
+TTTGTAGTTAACGAAGAAACATCCCTGGGAATTTTGACCTCTACTTAAATCACTCACATA
+AAATAACAGCTAATCTAACTCTTCCTGGGAATACCGTGCTATTGCCGATGACGTGGACGA
+CAATCTGCATCGAGGACAATGAGTATCATTGGTATACGGGACAATATAAGGGCGCTTACA
+TTTCGCACAAGTTTCAAGCTCCTCGATTTCTTTCATTGACGTTAGAATCTCAATGATTTT
+ATTTACCTCAGGAGCGCAGACGAAATATCCAAGGTTATGCAGCACACTCATGATGCGGTT
+GAAGTCAATATTTCGAAAACTGGATTCCGGGTGAATAGGATCAAAACCGAAATAGTTTAC
+AGCGACATCAATAACCGCAGAAAAAGCCCTGCGGTTATCCGTGCGGCGACTCCACCCACG
+AATCCCTTTTTTAAAGTTTTGTTGAGGTTCAGACCTGAAGTCTATATTTTCGGCAACATG
+ATTTCCATAGAGTATCCTTATGGAGTTTTTATTGGCACCAAGAGACATCGTTTTTGTAGC
+GCTCAATAACATGTTAGCTTTAGTTTGATCGACTTTAGCCATATTCAATAATCCTTCAAG
+AGCACTTTATTTGCCAAAGTATTGAACACATCCTGACGGTGGCATGTAAACATAGTGTCG
+TAACGCAGTAATTCCATTAAATCGTCACTAATTTTACCCAAACGAATATCGGCAGATATT
+TCGTATGCCCAAGCAAATACCTTTGATTTTAGCGTAGCACTGTCATCCCCCAGACCTGGC
+GTAAAGGGAATTGTTCGTGGAAAGAGAACGACATCATTAATTAATTTAAGTGATGACATC
+CCGACATCTTTTATTGCTTCAACGGTGGCAGGTTTTAATCCAAAAAAGATACTAACAAAC
+TCAGGTGCAAGCATTGACATAAAGAAAACTTGCATTAAGTAATCATTTTGAATGTCTACA
+CACTTAGAACGTAGTTGCTGAATTTTTCTCGGATTATAAAATTCCTCCTGCCCGCTGAGC
+AAAGTTACTTTTTCACCTTCATTGTAAATGCCGAAGTCAGTATCTTCACTGTCATATTCT
+CGAATGACGTTAGTGTCGCCATCAACTACAGCTACAAAGAATTTGTCCCAAGAGATCTCT
+TTACTTAAAGAACGAGGAACGAGGAAGCTTCCTGGCCGAGTTTCAACTTCAAATGCATTA
+TCAATCATAGCTCCAAATCCATTACCAAATAGTCGGCGTTGGAGGAGTGGTGATCCAGTT
+TGATACTTAGAAGATCCATGAAGAGGCAATAACATTAAGAAGGCACGGTAACTACGAATA
+ATCGAAATCTCGGTACGTAATAGTTTACCGAGTAAATTACGCGTGATGTTATCTGATTCT
+GACATGTGCGGATTGTCCTTGCGCCAATACAATTGTACGAATCTTCTACATGAAATTAAG
+GTCTGGATTCTGAAGGATGAAAAGTAACTTTTGGAATTTTAATACTGCCGCTTTGAACCT
+TAAAACTAACCTTTCAGCCATTACCCTTACTTGTAACACTTTTTAACCAAACTAACCAGA
+ATTTTATCAAAAAACCCTGACCTTGCTAACGAAATGTGAACCGTATAAAAAAACCTCAAA
+GCCTGAGTCGTTATCGGCATTAAGTAGCAATAACCTTAGGGAAAAATGCGCGTAAGCATG
+ATTATTTTTTCGATTGTTTAACATGACTACTACATAGGGTCACTTTTTGCTGAAAAGTGG
+CCCTATGCACCATCGACATAGGGTCACTTCTTGATGAAAAGTGACCCTATGTAATCACGA
+CATAGGGTCACTTTTTTTAAAAGTGGCACTATGCGTCAAAATCATAGGGTCACTTTCCTT
+TAAAAAGTGGCACTAGATAGATGTATAACTTAGTAGGTAAAACAGTTCTTTTCAGATCAC
+GATCTCAGCAATAAGCATTGCTGGAAAAGTTACTTTTCTTCCACGATAAAATGCGGACCT
+TTTGGCCGTTCCCGTTTACATCTGATGTCACTCACTCTCAGTGCTTCCTCCATTCTTAAA
+TTTGCCATGCAAAATTCCCTAAAAAATTCACAGAAAAAAGTCCCGTTCGTGAAAAAAAAT
+TGAAAATCACTTCGGTATAGTGATTTCACATCAGGAGGCCCCATGTCTAAATCGAAGCTA
+TTAAAGTCATTGGAGATTTCACGTACTTTATTGCGCTCACAAATCGATGTTCTTCGAGAA
+GAGGCTGAAGAACTGATCACCAATTATTGGATCGAGTGGAAAGAACGGAATCACATTGAG
+AGGAATTTACCCAGGGATAGCAAAACTCTAAAGAAGGAGTATCTGGGTTCATATGCACCA
+AAAGTTGAGCTAATTGGTAATGCCAGGAAAGTCACCATTACCTGGCATCAGTTTAGCCCG
+TATAAAAACAGGCCACCTAGTCATATGTCGAAACGGATTTCACCGATGAAAAGTGGAAAA
+TATACGAAAAGCTGCTTTGTTAATCATGCCAGCTGGGAATATGAAATGATTGAAAAAACG
+GAGGGATTACTGGAACCCTACAGAGAATTACTTGAGTTCTACCATGCTGCATATATCGAA
+CTGGGACGAAAAGTCCGTCAATACTCAAAATCAGAGGTGGCACAATGACCGATGTAACAA
+TGAATGAAAGCGAGCATAAGGTACCTGACGTAAATACCCGCTCCCCTCATGCGTCCGATA
+ATAGCCGTAGGGTCGTGCAAAGTAAAAATGAACATTACGGCATGGCTACAGTAACTATTA
+CCCCAGGCACGCCAGACTTTAACCGATTTCTCACGGCACGTAATCGTTCCGTAATAAGAG
+GGTTTGATGATGTCAGTATTGCCATTTCATCCTTATTCAGAACGGTCAATGCAGTTAAGC
+ACCCCGAACTAGTGCAGGCAATTCAAGACTGGTTCAATGAATTGCACGAAGAAAATAATC
+TAATGAAGAACAATCTGGAGCGCCACATTGCCACCATCCATATCGATGAAAGCGATCCGT
+TCTTCTCATCAACTGAGTTTTCACCGTTCAGATTTGAACCTGTACAGTTAAACTTCAACA
+ATCAAAACACGATGCGCTTTTATAAGCACATCTTTGAAATGAACAACCTTCTGACACAGA
+TGCACAAATTCAACTCTCTGGGTCAATTACCGGTTAGCGATTACAACGTTATGGCCCACA
+ATATTATCCGGAGCCTTAATATGTATATCGAACGGGTCAAGAAAACACTTAACGTTTCCC
+GCCGCGCAAAAGGTGCTTACAGTCCTGATGAGTTCATCGAAAAGGTAAAGCAGTATAAAA
+GCGTGCAAGCATATATTGCTGCGGAACTGTCTGGTAAACGCCGGTAAGGATTATTTGATG
+AATTTCAGGGCACTCTTCTTAAGTATGCAACGAGTTTTTGGCATTTTCTCCAGAAGGGAG
+AATGATGTATCTGAGTTAATGATGAAGGATGCAGCGAACTTCTCGCCATTTGCTCAGATT
+ATAGGAGAGCAGAAATACACTGTGCCGGACCACCCGAATCCTGAAGTCCTGAAATTCATT
+GAATACCCAACCAGGCCTGCGGGGATACAGACATTTAATGAGCAGTCTATTCTTTCGTTG
+TACAGAGACAAGCTGCACTCTATTTCTATGATGCTGGCAATAAGTGATGGAGACATTCGG
+GAGGATGCCTATACCTTCACTAATCTGGTGTTAAAACCATTGATTGAATACATCCGCTGG
+ATTCATTTACTTCCTGCGTCAGAGAATCATCACCATAATGGTATTGGAGGATTGTTGTCT
+CACAGCCTGGAAGTGGCGATGATCTCTTTAAAAAATGCCAATCACTCTGAATTACGTCCG
+ATTGGCTATCAGGATGAAGAAGTGGTTCGCCGAAAAGTTTATCTGTATGCCGCTTTTATC
+TGCGGCCTAGTACATGATGCAGGGAAGGTATATGACCTTGATATAGTTAGTCTCAACTTG
+AGTGAAACATTAACATGGGCGCCAAGCTCGCAAAGCCTTCTTGACTGGGCACGAGAAAAC
+AATGTTGTTGAATATGAAATACATTGGCGAAAACGTATTCATAACCAACATAATATATGG
+TCCAGCGTATTTCTTGAGAGGATTTTAGATCCTGTCTGTATGTCATTCCTTGACCGAGTC
+AAAAAGGAGCGTGTCTATGCAAAAATGGTTACGGCACTTAATGTCTATAACGACGGCAAT
+GACTTTTTATCAAAATGTGTAAGAACTTCTGATTATTACTCTACAGGTACTGATCTTAAT
+GTGTTGAGGGACCCGATAATGGGTCTTCGTTCGAATGATGCTGCGGCTAGGGCAATAGGT
+ACCATTAAGCATAACTTTACTAGCATTAATATTAATAACTATAAAACTAAACCCATGCAC
+ATCATTATTGTAAACGGTGAAGTTTACCTCAATGAAAACGCCTTTCTCGACTTTGTACTG
+AGTGATTTTGCAGCCCATAAGTTCAACTTCCCGCAGGGAGATGCAGGCAAAACAGTACTT
+GTCGAATCTCTGGTGCAACGGGGTTATGTTGAACCTTACGACGATGAACGTGTGGTTCAT
+TACTTTATTCCCGGGACATATTCGGAAAATGAAATTGCAAGCATCTTCCGGAACGGTATT
+GGTAAGCTGGAATTTTATAACCTCTTAAAACTGCGTTGGATCGGGTTAATTTTTGATTCA
+TATAAAATCCCGGATTCAGTTCCTGGTCTGTTCAGCGTTAATGCGAATAAAGATTTCATC
+TATATTGATGAGCAGAAAACTGTAACGGAATACAGAAGGCCGGTCCCGGGTCGTGAGTCT
+GTTACCAGAGTAACGGACACTGTCAATGACGCCATTGAGAATACCCCACAGTATGGACTT
+CAGCTCGTAAACGGCCCTGATGCCGACAGTAACAATATTATTAGCAGTGAAAATACTGAA
+TCCATTACGGATAGTTTGGAAGAGTCTGGCGCGGATATCTCAAACGAGATTTTTGAAACG
+CAAGTTGTTACGGCAATTGATACTGCCGAAACGGTAAACGCGGATGAGCCAGAACAGGTA
+GAAGAGCATGACGACCGGAGCCAGATTCATCTGGTTGAACAACTTCATGAAATGCTGTTG
+AGCGCCCCACTGCCCCATCATGCCGTCATTAATATTGATTCCGTACCTTACCTGGATCTC
+GATGCTGCGATTGCGTTAATCCCGGGTATAGATGAGGCGGCATTTTGTAATGGGCCATTT
+TTCCAGTTGACATACCGTGATGGGTCTCTAGATGGTATGTGGATAGTCCGTGATGTAAAC
+AATCTACGCCTGATACAGCTGGGGGATAACTGCGCCGGTATGCAAGTAAGCACATCGGAA
+CCACGAAACACGTCATCGCTGAAATCACTATTTGATACGTCAATGTACCAACCGTTGGAT
+ATCCCTGAAGCTCCATCAGTAAACGAAGCTGCTTCGCCTCCACAAACACCGCTTGAACTC
+CCCCAACCACGACTGAATGCACCTGTGGCTGAAGAGGCCAGCTCGGTAGCTGAACAGACT
+AACGCCCACTCCGAACCGGATTCCGTCATCGCTACTGAGTATGAGCAATATGGTCATTTG
+CTGGAAGAGACCCTTGATAGCGATGGTGAGGCATATTCTGATTTAATTGCCTCTGACAGT
+ACTGAGGCAGAATACCCCGCCACTGATCCGCAGAGCAGCGATTTTGCCCAATTACCTCGT
+GAAACGGCCCTGTCCGTTGCGCCCGGTGATTTGGATTACTCAGAGGGTGCCATTAAGCCA
+CCAGCACCCGATGCAACCGGAAAAGAAACAATACTAACAAGTCCTGAACCAGCAGAGGAT
+GTCCGAGAAACGGTAGCCGCCGTGGAGAAAGCGAGTCATCTTTCTCCGGCATTGGCTCGA
+CTCTTTGCTGTAAGCACCCATGCTGAGAAGAAGCATGAAAAAACGCAGGAACCCTCCCCT
+GTTAAAGAGGTTAAAAATCCAACCTCCTCTACCACAGTTAAGGCTCCTATTTCCATTGAA
+CCACCAGGCGCTGAAGAGAAAGAGGCGGTGGAAGAATTCACCCTGTTAAACGACGGTGAA
+GTCACAGAACTCGAATATGTCGAGATTGCCACCATGCTCCACCAAATTCTGACGAAGTTA
+TCTGGGTCGTTCAAAAGAAAGAGGAAAAACCGGTTCATGGTTTTGACCCAGAACACCTTT
+TATCTGACGCAGTCATGTATTGAAAAGTACGGAACGCAGCTAAATGCGCCTGAGCTTTTT
+AACCAACTTCCTCAGTACCAGGTCACATCCGGTGCCGTAGTCAATACAAAATGCATTGCA
+TTCAACATACCAACTCTGGTCGCCGCATCAGACCGGGCAAAGGTCGATATTGAGTTAATT
+ATTAACAAGCTAAAAGAGGTCGGGAATCTGTAATGACAAAATCAAAAAGAACCAACCTGC
+ACGCTCAGGAAAACTTTTACAGGCCGATACTGGAGTACAGAAGTGCCTCAGTGCTTTTAA
+TTTGCGCCGTCATAATGCTGGTTATGGGCTTTCGTTCAGATGGGGTGAATATTGCCCCTA
+TCATTCTTTATACCGCTGTTTTCCTGCTTTTGGTTTGTTTGTACCGTTGTAAAACGGCAC
+ACCCCTATTTGATGGCACACTGGCGCGTATTTCAGCGCCAGATAATGTTTATTAGCCTCA
+AGTCGCTCAGGACGATCAATAAAAGTAACTTTTTCTCGAACGAGCGAAAGTATCGCCAGC
+TGGTACAAGAGTATAAAAAAAATAACCGACCAGTACCGGATAGAAAAACCTACTTTTGTA
+ACGGCTTTGAATGGGGTCCCGAGCATGCAGACCGCGCATATCAAATTGCTAATCTCTCAA
+GTGACAAAAGAGAGATAGCCCTGCCATTTGTTCTAAGCCCTATAGCGCGACATTTTGAAA
+CAATGGCCAGATCCATGGGGGGCAATAACGCCATCTTTGCTGTTGACCGGCGGGCACCCA
+TTTTTGTGACCGAAGATAACTGGTTCGGACATACCCTCATTACCGGAAACGTCGGTACCG
+GTAAAACGGTACTTCAGCGCTTACTGAGCATCAGCATGCTGCATTTGGGCCATGTCATTG
+TGGTTATTGACCCGAAGAATGACGCTGAGTGGCGACAGTCACTGATGGATGAAGCGTCAG
+AACTGGGGTTGCCATTTTATAAATTTCACCCAGCCCAGCCGTCTTCATCGGTGTGTATTG
+ATGTATGCAATGCTTACACAAATGTTTCGGACCTCACCTCACGACTTCTTAGTCTGGTTT
+CGGTTCCCGGGGAAGTTAACCCATTCGTGCAATATGCCGAAGCTCTCATCTCAACGGTGA
+TCACTGGTCTGTCTTACACGGATAAAAAACCGTCGATATATCTCATCCACAAAAACATGA
+AAAGCCATATGTCTGTTGTGAACCTAACGATAAAAGTAATGGAATGCTGCTTTGCACGAC
+ACTACGGGCCTGATGTCTGGATGGAAAAGGTGAAATACGCTTCGAATGACACTCTTCAGG
+TTCGATTTAAGCGCCTGACAGAATGGTTTAATGCCCATTTTCTTAATTATGAAGGCGCCG
+AGCCCATTGAATGGATTGATACCGTCGGTCGGTTAGTGGATTACTCCATGTCTGATCCTG
+AACACATGTCTAAAATGACGGCGGGTATTATGCCGCTATTTAGTCGACTGACTGAACAAC
+CACTGAATGAATTGCTTTCGCCGTCTCCTAATACACTCACTTCGCGTGAAATAGTCACTT
+CAGATGGGATGTTCAGTACCGGCGGAGTTCTGTATATCTCGCTCGATGGCCTTTCCAACC
+CGGAATCAGCCCGGGCCATTTCGCAGTTGATAATGTCAGATCTTACGTCTTGTGCGGGTA
+GTCGTTATAACGCTGACGATGGTGATATGTCTTCCCATTCAAGAATCAGTATTTTCGTCG
+ACGAAGCACACTCTGCCATAAACAATTCAATGATAAACTTACTCGCACAGGGTCGTGCCG
+CTCAAATTGCATTATTTATCTGCACGCAAACTATTTCCGACTTTATTGCAGCAGCGAACG
+CTGAGACGGCAAACCGTATTACAGGTCTATGTAACAACTACATTAGCCTGCGGGTAAACG
+ACACACCAACACAAACGCTGGTCGTAGAAAACTTTGGTAAGAGTCCAATTAGTACAAATA
+TGGTCACGTATACGACAGGATCTGAAACCACTTTGCCGCATAATAACTTCTCTGGGTCAA
+TATCAGAAAGAAAGCAAACAACGCTGGAAGAAAGTATTCCAAAAGAGCTTTTGGGCCAGG
+TCCCCAAATTCCATATTGTGGCCAGACTTCAGGATGGTCGTAAAGTTGTCGGGCAGATCC
+CGATTGCCGTAAGTGAAAAAGCGATGAAACCCAATACGACGTTACTGGAGATGTTCCTGA
+AACCCGCCGGAAAAGTAACTTTGCGCCAGAATGTGGGTTTAAGCTATTTAAATAAATATC
+TAAGGAAATTGCATTGATGGATGAGCAAATTACTCTGACACAAAATCAAATTTTCAGTGC
+ATCTCTGAAAGTAAGTAAAAGCCGCTCGCTCGTTAAGCGGCGTATGCAATCATTAGGGTT
+GAAGTTTACCGAATCGCAGGATGTCCGTAACCGACTGGCGGGGATAGAAAAAGGTGCTTT
+GAAATGTGTGGGGCAATTTTGCCATGACAACGATGCTGAGTCTTTATCAGCGATGGCGAT
+CATCCTTTCCGAGCTTTTTCTGCTGCAAGGCGAACTGTCCACCAGCAATGAATACGGTGA
+CCATGAAACGAGTTACTGGACCGTAGCACAAGGCCCATGTGATGAATGGGTCCAGTCTCT
+GCTGGCGAGCGAAAATGGTCGACGTACATTTAATAGCTTTCGTATAACTTTCGACAACTC
+CGAAGAGCGCCGCAGCCTCGTCGAAAAAAATGCCAAAATGCTGGGGAGTTATTTATTGCC
+TTATTTTGTCAATTTTACAAATGCTGCATCTGCGTTTATTACGCTGCCTAATAGCATCAC
+GTTTAAACAGGTGCAACGCAACAAGCCGCTCATTCACCCTGAAACCACATTAAGTCACAT
+TCTCACAATAGAAGATTCGGCGTTTCTCTCTCGGATCAAATTTAAACTTATCTCGGCAAT
+TGACCGTCTGCCCGACCCGTCCGGTCAGTATGCCAACATGTTCAATCACATCATGGATCG
+GGCGCTGCTGACGCACCTCAACCGGGAGCAAATTGATAGCCCTTGTGTGTGCAAAAAGGT
+CATTTCCACCTATGCAGACACTATGCTGACGCTCCCGATATTTAATACGACGATTACCGG
+GAAATACCGGCACTGGACCCCGTGGGGGATTAATTTTGTCGAGTTTAGTCGTCAGGCTGC
+AAAGGAAAAATCTTGTGTCTATGTTCCTGAACCCGGCCAAATTCACTGGAAAAGTCCGGA
+GCATAAGGAACTGGCAGAGTACAGCCTGATCAACCAGATAATCCCGCAGCAATACCACTG
+GTTGCTGGGTGTGCCGACAATCTGGCGCAGTCACTATCGTGACCATAGCAAACGATTAGA
+CTTATTCAAGGAGTGGAGGGACGCAAATGGCTGCGGATAATTCTGCTCGTGCAATATTCA
+TCAGGGGACTGCTTTTACTAGGGATGATGCTTTATCTTATTTATAGTCTGGGGTTCCAGA
+ACACCGACGAGCTAAAGCAACAAATCACTCAGGAGGTGAACGCCAGTCGTAGCCTTATTT
+CTAATGACCGGTGGTTATCTGTTATTGCAAATAGTGAGGCTACTTTATCCACCCTGATTA
+ATGACTATAAGCTGATCGACTATCTGAATACGATACTGATCCCGGACACATCGACACCTG
+CACGTGGAATGAATTACGTTGCCGAAAAGATGACATCAGTAAACTACACTGTGGCAAAAA
+ATCTACCCCTGCTGATTTATCAGTCCATTTTCCGCTGGAATCTGATACTCGGTTGGCTGA
+TTTTGTTTTCACCATACCTAATTGCTATGCTCGCTGATGGCATGTATCAGTGGAAATTAA
+AACGTTACGTTTTCGGTAATGTAACTGTTCAGTTTTACAGAATCTGGTTCAGGGCCTTCT
+GGATAATTGGTGCATTAACCTTTATATACCTATCAATGCCTAATATGTCACTTTTTAACA
+ATATCGCTCAACTGTTCCCCCCTGTCGCATTGTTGATATTGGGAATTGCACTCAACCGTT
+TGTGGTCTAACTTTCAAAAACTTATGTAATAAGGTGGTCAGATGTTTAAACGTAATAATA
+AGAAGTCACCTGCCAATATCAAAGAATCGCTTGATGAGAACGCTGACCGTTTCTATAAAA
+TGTTCCGAATCCATACCACGTCAAAAGTGGTTATTTCACTGCTGGCATTAGCCGCCGCAG
+GGGTTTCGGCCTTTAATATTTACGATAAGTATCAGGAATCCGAAGGACGAATGGATCATA
+TCGCCGTCGTGCGTATCTCGGGAGAAATGGGTACCGGTTCTGAGGTCGGCGATGGATCTG
+TGATAGCCACAGCACTGGCGAAAGCGTACAACAACCCACATGCCAAAGCCGTCATTATTG
+AAGCTGAGTCAGGTGGCGGCGGTCCTTCAGACGCGATTATTATTTACCGCCAGATTAATG
+CACTACGAAGCCACCAGCAGAAGATTGAACGGGTTTCACATGCCGAATCCACAAGCAAGC
+CCCGTAACACGAGTGATCACAGTGCTTCACGTTCGCAGGCCGATAGCAATGCCGAACTGT
+CGAAACGTAATACGCTGGACGTTCTCTCCGCCGGGAGTGGGCATTTCATTTCTGATATGG
+AAAACAGCTACAAGCCTATTATCGTCAGCGTCAAAGGAATTTGTGCGTCAGCATGCTACT
+ACGCTGTGTCCCCTGCTGACGCCATTTATGCAGACAGTAGCGCTCTGACCGGTTCGATCG
+GTGTCCGAATGGATCACTGGAACCTGTCTCGCGTTATGGATACTGTCGGCGTTAAAAATG
+AGCCACTCACCGCCGGGGAGTTTAAAGATGCACTCGACCCCTATCATCCACTTTCTGATG
+CCACCCGCGATTTTATGCAGAAGCAAATCCTGGATGCAATGCACGAACAATTCATTGCGG
+ACGTTGAGCAAGGCAGGGGTAAGAAATTATTAAGCCGTCCGGAGGCTGATGCTGTCGCAC
+TGTATTCCGGCAGGGTATGGACAACGCAGCAGGCGATCCGGTACGGACTCATCGACGGTG
+ACCTGACACCTGTCGAAGTCCGTTCACGCCTGTCCCAAATGTACTCAACCACTATCTTCA
+AGACGTACAACGAGCCACAACGGTCGCTTCGCTCCGCGCTCGGGATGTTAATGAGTCTGT
+CGACTAACGTCGAAACGCTGGCAGGAACAACCTCTCGGATACTTGATTCTGTTCAGGCCA
+CCAGCTATCCGACGGTGAGATAAGATGGATGCAATTTTGATGGTGTGGCGAGTGATAGGA
+ATCAGCATTATTGTCCTAGTACTCATTGTGCTTTACTGCCTGATGGGATTTGTATCGTCG
+GCCATTGCTGAACGCAGGACAGCCAGACAGATTGAAATATACCTGCCTGATGATGCAGAA
+GGGCTTCTGAGCGACTTAACGCTGCCGGTCAATGCCACCGGCACCACGCAGATTGATCAC
+GTTCTTATCGCCTCTCATGGACTCTACGTCATCGAGCAGAAGAACTATGCAGGAAAGCTC
+TATGGGAAGCTGGAGGAGAGCCACTGGCGAAAATGGAAATCGTCAGGGACACTAAAGTTA
+CAAAACCCGTTCAGGCAGAACTACGGGCACATAAGGGCCATTCAGTCCACGTTACGCGCC
+AGCGAGCTGGAGTGTATCAATGTTGTCATCATTAACGGCCCCTGCAAGTTTGAAGGTGAG
+AAGCCAGACTGGCTTTGCATGGGTATGGAGGAGTTCGTTCGGAAAGTCACTGAGAGGCGC
+CAGTTAAATGTATTCAAGCCTGAAGCAGTAAGTTTTATCCGTGGAGAGCTGAAGCTAAAG
+AGAAAGCCTCCGGGCCTTTATACTGATTTGAACCATATCCACAACGTTACCACTCGATAC
+AAAACAACCATGCGGCTGGAGCAGCGTATTACCTATAACCTTTTGCGCTTTTCTCGGCTT
+ATACTGAGTAAAATGTTCAGATCGGCAAAGTAAAAAAAACCCTGCAAATGCGGGGTTTTT
+TATGGATTCAACTCCGGAATATTTTGCCACGCTTCCTGCATAATTCGCATGGCCTCCCCA
+ATCGATAGAGACGGCCATAAAGCGGCGTCAGTCATTTTTACGCCAACCGGCTCACATTCG
+ATAGGGACAAGAATTAAAACAACGCGAGTCCCTTTTATCTTATACCCGAGATTGACTACC
+GGCTGTCTGTAGGTAGCCAGAACTCCTGCACCGTACTCCGCAGGTTTGCTGGCCCAGCTC
+CGCACCAGAGCGTAAGCCTGCGGCATATAGCGATTATCCAGATCTCCCTGCGGCCGACGA
+AAAGGCACGATGTCATCGGAACGGTAAGTAGTGGTGGTTACGTTTGCCGTTGTCATTAAT
+CAACTCCTCGCATCCGACTTTATTGAATCTGAAAGTAAAGGGTTTCACGATCAGTTCCCA
+ATCGTGGACACTGATAGTGTGGCTAGAATTTTTGCTCCATTTGTTGAGCTTCAAAATCTC
+TTGCAGCCTTCAAGAGTGACCCGCCACTGTAGTACTCCAGTTCAGAAATATCATCCTCTT
+TATTCAACCATTGTGGGGCGGCTTCATTGCCGGTCTTACCTGTACCCACATCGCTATTAT
+GGCTTCGAGGCATCACTACGGCTTCCACTTCTTGATAAACGCCATTGCGTTTCACTAGGA
+TATTAACTGTTTTCGGTTTGCTGTACTTTTCGCGGACTTTATTAACCAGATATAGAACGA
+TAATCCAGCCCACCAGCACGTAAAGAAAAGTATTCATATGCCCTCCTTTGTATGAGTCTA
+CTATACCAGGTTCCGTTCCAGCCCAAATAGGTTCAGTGCATGAAAAATAGGCTTTCCCGT
+CCGAATCTGCAAATCCACTCTGGCGTGCCTTTGCTGCCCTGCGTGAGATTTTCTTTCCGG
+TTGCGTATGACAGATTCCGTAAAGTTACTTTCTATCCGTCTTGATTAAAACCAGATCCTC
+TGACTTCACCATCCACCAGCCAGAACCACGGACGCAAAACCATTACGAAAAAATCCGTCA
+ACTTTACCCCCTGTCGATAGCCCCCCGACAATCGGGTGCCTGCACCCTGTATCAATCACC
+ACCGCCCCCACATCCGCCACCAGCGTCCCCACTGTCGCCCCCAACGCCAGTGTCTGAGTA
+GCCGGAGATTAAGAAGAAACCACTTTCGCCTGTGTTCGCTCCACTCTTACTGGACTGCGT
+AAACTGACGCCCTCCGCCCTGGAAACGGTAAAGTGCCTTTTTATTACGGAGACAGAGGTA
+AAGACAAACAGCAACATAGAGGATTAATGCAATATTGAGTAACATCACAAAACTCCTGTG
+CGTCATCGTTAATGGACTCGGTATTTATATTAAAGTCCCTTGTTCTTAAATTTTGTTAAC
+ACGCCCCTTTTCTCCCGACCGCAAATTATTATGGAGCGAGTCCGTCACAGACGACACCGC
+AGTCGTCAGCCAGACATATCCACCACGCAGGCCATGAGGTACCGAAGATTTCTTTCCGGA
+TGCCAGATCTCTTTTTAGTTCCCAGCATCATCACCGCCCCCGGCTAAACCATCTGCATGA
+GGCCAGGCTTACACCACCAGCTGCGGGCCCCGGACAGCCCAATGATCCTTTTTCCGTATG
+CCAGCTCTGAGTGCTGAGCCCACAAAAAAGAAACCCGGTGTTACCGGGTTCTTGTGCTAA
+TCAACTGGCCTTCAGCCCATGGCTTTGCAGGTAGCTATTGAGCGCATCATTGGCACCGGA
+TTCATAATTCCAGTTTCGCCAGACCAGCTGGCTGTCGTGGTCGCGATGATCACGGATGAC
+AATCTGGAAATGGCCTGCTGGCTGGAGGTTTTCGATAAAGACGTTCTGGTACCCAGCGGC
+GACAGTGCGTGCCTGAGCCAGTGTTACCGGTGATTCGCTGCTGAATAAATCGCTCATAAG
+AATTTCCTTCATAATCGCCAGGCCGGAGCCTGGCTAGGGGTGTCAGGCCGCGAGGTGTTT
+GGCGAGTTTAACGAAGTGGTCTTGGTTGTTGTACAAAGGCATCTGATAGGCCAGGTCCGA
+AATAAACATCCGGATCTGGTCAAACGTCATGCCGCAGTTGAAGCCAGTTTCGCTGACATT
+AGCCCGTGGAAAATCATCGCAAAATTCGTTTAACACCTTGTCATGGACAATGCCGATATT
+AAGGAGTCCGGCAGGACCGTTATCACGGAAAGACACAACACGGAATGCGCCATACCAGCC
+CGACTGGAAAAAGAAGGTAAACGCCTGGGTTGCAAGTCCGTTAAAGAGCTCGTAACGCTG
+GCTGGCACTCAGTGACTGGCTGTCCATGCTGTACACGCGATTGATAAAGACGCCCGGGCC
+GATGTTTGCGGGGATCTGCCCGTAAGCAATGCACGGCATGGCCATTTCAGATGCGTCTTT
+GGTATCATCAATCACTTTATATTGCGCGGCGATAATATCCGCCAACATTGAGCCGCCAAG
+TGCGCTAATTGCTGCGATGTCATTAACCTGAATATTTAAAGTTTTCATATTTCACCTCAT
+TGTTTTTCTTATTATTTCATATTCAGCCTCGTGGCTAACAACCTGATGTGAAATATTTAA
+TAAATTCATCAGTAGGACAAACACAAACCGGTAGACCGTTCAAAAATGTCCTGCAAATGA
+ATATTGCTGGCATCCAGATTAATCTGGACAAGCTCTGCATTATTACCTAAAACAGAAAAC
+AAATAAAAATCAAACCCGCCTGTATTATCATCCTTAAAAATGCGGAAGGAATTAATATTA
+ACAGCTTCGTCTAGTTCCACGTGAACCCCATAACGTACTTCCCCGTCATCAAACTGTGCA
+ATCCGGCGCACTGATTTGAGACGGACAAATTTCGCCAGCTCCAGTTCGGGCGTTGGGGAG
+AAAGTCAGTGCCTCGAAGATCAGATCTGCTGTTTCATGTTGCTTCCTGCGGTCGAACTCA
+AACAAACCGCCACCATTGTTGCGATAGACCGGCTGAAGCGCATTGATCAAGTTGAACGTC
+TGCCGGTTCCTGTCATATTTATACATTTATAGGTGCTCCAGTCCTGCCAGTATCCACCAG
+CAGGGCATAATGTGATTAGTGCCAGTTGGCGATCAGCTCTTCGCATTGCAAAGAGGAGAA
+ACACTGCTGGGCCAATACCGGCAGTACGGCAATGTTGGGTACACGGTTGTGACACCATGC
+GTTAAACAGCATCTGCCAGGGGCCAGCGTAGTAACCGCCCATTTTCATTTTTTATTTCGG
+AGTATGGCAGGCGGAAATAGCCTGCTGATAGAGACTTTCATTCTCGGTTCCAGAGCGTTG
+TTGCAGTGCAGGATAAATAAAGGAGTAAAGAGAGTCAGAACAATTAGATGCATAAGCCAG
+ATTGGTTTTCATAATACCTCCTATGTTTTTGGTATTATATAAAACCCGGGCTGCTGGCTA
+ATAACCTACACTGAAAATTTTTTAAATTAACCGACAATCTTAAAAATTGGACGCATGTGG
+AATTATGTAAATAGGTAGCAGATTTTATTAACTAGCTTCCATAGGTGGTGCGTTATTAGG
+GAGTTTTTTGCCAGACCAACAAATTCTAGTAGCTACACATTCACTCGCAGAGATTAATCG
+CTTTAACATAATTAGTGCCAGCACTGAGTCCTTTAAAATTATAAATCCATGTTCTATCCA
+TAACGTCGTGCCATTGCTCCTTTCGGTGTTCACTGCAAACGGGAGCAGGAATTCCGTTGC
+AGTTCTTCGGCCGCCTGCTGTTGCAGCACGACCATCACTCTGCTGAGCATTGTCAGCGCC
+TGGGAAGGGGAACCGCCAAACGTCAATTTGATTTCGTTGGTGGTGTGGTGCTGTTCCAGG
+TCGAGAATATTTACTTCCACGTCTGCGCCCTTCTCATCCTTAGCCGTACAATGAATGCTG
+ACCCGGGTCACCGGGTCCTTAACTGTCTGCAATGGTTTCTTCGTGCTGATGTTGATTGCG
+GTATTCTTCATTGCCCTGTTTCTCCTTGACCAGTGGTGGTAACCGACCCTACCGGGTGGC
+GGGGTCAGTCAGGAAATCATGCCTGGCCCTTGTTCTGCTTTTCAGCATGTTTACGCAGGT
+ACTGCGTCAGATCGCCGTGAGCTTCACAAATGGCATTCATCTCGTCATTGGTCAGCACCA
+GAGTGTAAGTATCGTCGCTGAGGTTCTTAGCGGCCCGTTGTTTAGCTTCTTCCGCAATAC
+GCGAAAACAGCGGGATTGCCGTGTCCGCAATCGTCGTCACGGTCTTTTTGTTCAGTACGC
+TGGAGACCGACACAGCTTTAGGCTCTGGCGTTTTGACCGGGTCTTTCATCTGCGGTGCCG
+GGGTCCTTTCCGGGGTCGGCTCCGGGTTAGTGCCCGCACTCCCGTCCACCAGCTGCGGTG
+GGGTGGTCTCATCGTTAGTACCTTCGCCGGACGTTTGTTCAGTCACGGTGGTTTCCGGGG
+GGGTCGCATTTGCGTCCGGCACGATGGCTGCTTTCGGCTTCATCGCTGCATCAATGTTGC
+CAGCTTTGACGAATTTCAGGGTTTTGGCCGTCGCCTTACCATAAACATCAATGGCTTTGG
+TGATGTTGTTGACCGCTTCATCGCCGCTGTAAAGGTATTCATCCAGCGCGACATACATAC
+TCACTTCACCCTTCACCAACATGGCCTGGAGGGCTTCAGGCAGATCCAGGACGCGAACCA
+TCTGACGCAGGTGCTGTTCGGTTTTACCGCGACGCTTCGCCAGTTCAGCGAACGTTTTGG
+GTTCTTCCGCGTCTTCAACCATCCGTTTGATGGAGAGCGCCTCAGCTACGACAGACAGAG
+CCAGATTTGAGTTACCGTCCAGCGTAAACTGCTCGGCACTGGCGCGGCTACCGCGAAACT
+CCTCGCATCGAATTAACGTGATCAATTCACGCCCTTCATCTGCCAGCTCGATGTTTGCCA
+TCGCGACGGCACGGATACGGCATGCTCCCTGGCGCAGGACCGGACGGCCATTCAGAATCT
+GTACGACAATAGCTTGTACGCTTAAAGGATCGATCTTGTAGGACTCTTTCAGGCTGTTCA
+GGTGGGCTACCACGTCAGGTAATGAGTAGTAACTCTCCCCAATGCCAGCAGTACGGGTGT
+TAAACCCCTCTTCCTCTTCGACCACTGCCGGGTTAATGACTAGACCATTGCTTTTGCGTG
+CGCCGTTACCGGTACGCTCCAGGTAGGTGCGCAGGCTGATATCGTTGTTAGCGGTTTTTA
+CATCATTTTCGACAGTGGACATGGTGCCTTCCTTTTAGTTTTCGTTTAGGGTGTTTGTTC
+GCTACAAAACAACAATACCAGGTTCGATTCATTTCCTAATAACCTGAGGCGAAAAAAAAG
+TAACTTTTTTTCCGGGGGTTATAGTACGCGATCCGTCCGTTTTAAATTCTCGCTAAGGAG
+GGCAAATTTCACTTTAGTGTGAAAAGCGGGTACATAAAGCAGGAATATGTCGAAAAAGTT
+ACTTTCCCGGTTGCCTGAAAAAATGCCGTTGCAGCAAACACAAGGTGTGAACACCCCCCC
+CGCCCCGGCGGCTCCGGGCAAAGGAGTATCCGATGAAGCTTTCCCGGCAGACCACAAATG
+ATACGGCTGTAATCGAAGGCACCCGCAGATTACCGACCATATCGCCTCCCAGCGAGCCAC
+CGAAGCCAAAAAAGACGGCATGAATTTTAATGCAGGCGTTGAGCTTGCATCTAAAAGGAA
+CTGTGCAACGAGGACAAACATTACCATGATTGAACACCGCACAGAGATGCGCCAAACGGC
+CATTAAATCGCTTCAGGAAGCCGAAGAAGCATTGACGGCACTGGCTATGTCCTATGAGCT
+ACAGCCCGATGATAAGGCCAGTTCGTGTCATCCACGGACCGGTACTCTCTCCACGGCCAG
+CCAGGTACGGAAATTGCGCCGTGTCGTCGAAAAGCAGAAAACTTGAAATTCGACAAGGCG
+GCGGGTAGCTATTTCCTGCATGTACAAACTAACAAGGGTTTAGCCGACGATAGAAAGGAA
+AAAAGGGTTTCCCCGACCGGAGAAACCCTTTTCTAAAGGTGCCATTAGCTTGCTGGCCCA
+CATTCTGAAATGAGGGGGGTCGCCCCCCCTCTTTCAGCTACTTACCGGATTCGTAGTCCA
+TCACAGCCGACACTTCCCGTGTACCGTCTTTCAGCCTCAGTTCGCAGAGCGAATTGCGCG
+TAAGCCAGGTGAATATCAACAGCGTAAGACATACTATCAATACGCACAAAACAACGGGTT
+GGTTCGGCAGTTTCATGGCCTTCTTCTCCTTGCATTTAAGCGGGTAAGAGGCTACTCTGA
+ATGTGACTAGCATACAGGGGCCTCGGGTTAATTTGAAAAAATTACTCGGGGCTTTCTGCT
+TTTTACCACAGTCAAACAGTGAATCTGCTGGCTGGGGCAAAAGCCTCCAGCACCGAGGTT
+ATTATACCACCCCGCCCCTTTTAAACGAACAGATCGTTCTCCTAAATATTTAATAAGTAA
+GTATTTCAGGTTTTGCTGCTTCGCAGGCTGTAACAGCAGGTGTCTGACGTAATAACTGAT
+TAAACAGACGGATTCGAATCTCAACACTCAACGACGCCAGCTCGCCTGTTCCCCCGCTTC
+TTTCCGGCTGTAATCAGTCCGTTTTCGTACCAGCGATCAGTGACAAACGGTGAGCACGAA
+CACTACTGTGCCGGAGGCTGTCCGGGTAATGGGGCGATTTTCTCCAGTTCCTCATCGAGG
+CGGGTATACGTCAGCCTCCTGATTTTCAAGATTTCCTTGTGAAGCCAGCGTTTGATAAAG
+GGATTGCCGGAAAGCAGTACCAGGTCTGCATCCTCCACTTCATCAAAAAGCCAGACGGGT
+TTTGCCGGAGTAAGGCGGTAGAGCCAGGGGCGGGAAAACTCCCCCGTTGCAATCAGAAAC
+CAGACAACCATGCCAAGTGCGAACTCGATGACCAGCATCAGGGTAAACTGAATATCCCGG
+ACGTCAGGCTCTCCGGTAAAGCTCATTAGGCGGTCGCCAGTTGCCAGACGCTGAATAATA
+CAGACCAGCATCAGCAGAGCCAGTAACAGCGCCATGAGCAGCCCGCCGTTCACTTCAAAA
+GTAGCTTTCTGGACGCGATCAGGCGGCACCTGCTTACGGTAGCGGCCGACCACATCACCA
+ATCATTACCCTGATGGCTATGCGTTCTTCATCGACCGTTGTTTCGGTAAATCCGGACGGG
+CCCGTTTCTGTTTGATTCATGTACCCTCTCCTCTCTCTGAAAAATAATGGTAAGACGCAA
+GCTGATCATACCAGGTGAGCAGGAGTGGTTTTGTCGGTTAAAGGCTGGAAAAAAACGGTT
+AAAAAAAGAGGGAAATGACAGCAAGAAGGTGGGATGCAGTAAGCGGCTTTGGTTCCCTCC
+GGTTCTGTGGGGAGGAAACGGCCAGAACAGCAGACCGATACGATGGGCGGGCGCTATTTT
+GTATCCAGAATTCGTGCCTTTTCTTCCCGCGTCGCCAGTCGGGCACTTCCGGAACGGTCG
+CGGATCAGCAGTGGCTTTTCCTTTTTCCAACCAGTGATAGCCGTTTCCCCGAAACGACGC
+GGTGCATTGCCATTCCAGCTGGCAATCACGTGATTATCGTGTACTTCCTTGATGACGACA
+GAATGAAGAGTCACCGTCTTAATGGTGGTGTTTCCCATTTTGGTCCGGGAGAGTGACCAG
+ACGGTCATCCCCACCTCCAGCTGACTGAGTTTCATCTTTACTCCGGTAATATCGGGATAC
+ATCATTAAACGACGTGGAGACGTAGGTTAGCATAAGCACTCACAGCGGATACTGCCGCCA
+GATAACAGGGTGAGGTATCCGCCATGAGCAGTCTTTACGGCTGGCGTTATTCGGCCAGGG
+CGCGGGTAATAGACGCACGCTGACGCTGGCGCTCAGCCTTACGCTGGCTGCGGCGATATA
+GCGGCTTCGCGGCAGCGTAGCGACAATCTTCCGGGTGGTACCAGCAACAGCCGCAGGGCT
+CAGGCTGGGGTTTTCCGGCAAGTCCGAATGGTTTCATAATGTCACCTTTTAAATGGAATA
+ATGTTCAGGTCCCGTCCATCAGGCCACGGGTTCATTAATGAAGCGGCGTTGCATAAACAG
+GTACAGATAACCCTCTGGCGAGAACATACAAAGATTCTCGGTAATACAGGCATCGAGGTA
+CTTCGTGTCGCCAAGGAGTCGCTTAATGACAGCCAGCTGGTTAGCCGCAGACTGAATCAG
+CGGATAGCCATTCACGGCACGATGAATACCTGAGTGGAATAACGAACGAGCCTTTCCAAT
+CTTTTCCCGGGTTGCGTCCATTTCCATATCGATAACAGACTGACGCGCAACATTAATAGC
+ATTGCCGGATAACTCCGCGAAGCTAACCAGAGGCTTATTCATAAAAAACTCCTTCCAGGT
+ATGTGAGCTTATTATATCAATACGGACTTTGCCCCAAACAACCCGACTCGAAATATTTTG
+GAAATTACTCTAATAACTAAAAATGGCACCCGGAAAATAGAATGAATTTATTTTAAGCTT
+GCCGAACATGGCTGGCGGCGGAATTAAATTTGGGTAATGACTCCAACTTATTGATAGTGT
+TTTATGTTCAGATAATGCCCGATGACTTTGTCATGCAGCTCCACCGAT
+>NODE_17_length_219_cov_42.2394:NODE_38_length_237_cov_132.244;
+ATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAATA
+AGTTGGAGTCATTACCCCCCGGACGAGTGGGAATCCATGGTAGGGATTTTTACCGAAATG
+GAAGAACACTATTAGGGGGCACCTCAGAAAACGGAATCTATGGTCACTCCCGTTTTTGCA
+ACACCGATTTTGACGACAAGTTGGCTTGCTTGAATCTAT
+>NODE_17_length_219_cov_42.2394':NODE_18_length_78_cov_102;
+ATAGATTCAAGCAAGCCAACTTGTCGTCAAAATCGGTGTTGCAAAAACGGGAGTGACCAT
+AGATTCCGTTTTCTGAGGTGCCCCCTAATAGTGTTCTTCCATTTCGGTAAAAATCCCTAC
+CATGGATTCCCACTCGTCCGGGGGGTAATGACTCCAACTTATTGATAGTGTTTTATGTTC
+AGATAATGCCCGATGACTTTGTCATGCAGCTCCACCGAT
+>NODE_18_length_78_cov_102:NODE_41_length_366_cov_169.284';
+GGGTAATGACTCCAACTTATTGATAGTGTTTTATGTTCAGATAATGCCCGATGACTTTGT
+CATGCAGCTCCACCGATT
+>NODE_18_length_78_cov_102':NODE_16_length_35628_cov_42.0221,NODE_17_length_219_cov_42.2394;
+AATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAAT
+AAGTTGGAGTCATTACCC
+>NODE_19_length_1805_cov_40.386:NODE_37_length_78_cov_92;
+GGAGGGACAGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACT
+AAATCAGTAAGTTGGCACCATTACCCGGGAAGAGGGGGAAAATCTAGTGTGACAAACTAC
+CCTCAGGATAGGATGACAAATTGCCCTCAATTCTGGCTCCACTACCGGTTACAGCCAAAA
+AACCATGAGTAAGCGCAGGATGCCAGGGAGGGAACAGCAAAACTGTGACAAATCACCCTC
+AACCTTCCAGATCAAATGTGACGAACCACCCTTAAATCTGTGACAAATCACCCTCAACCT
+TCCAGATCAAATGTGACGAACCACCCTTAAATCTGTGACAGATAACCCTCAACCTTCCAG
+ATCAAATGTGACGAACCACCCTTAAATCTGTGACAGATAACCCTCAACTATTCAATCGTC
+ATGGAGGTTATATCACGGAAGGAAAATACGATATGCGTCGTCTGGCGGCCTTTCTTTTTC
+TCGATGTAAGAAAGGCGCATTGGTGTCCGGCTGTTGATCTCGTCAACACTTGCCTTCAGG
+AAACGGCGGCGAAAGTCCGGCATACGCTGGTAACTTTGAGGTAGCTGGTAGCGTTCCATG
+ATCCAGTCGATTTTCAGGGACACGACACCTGAGCCATCAGGTTTACGGTACTGGCACAGA
+GATTCGTATAAACGCATGGCGTACGGATTGGTAATCTCTTTTGTTTCACTGAGCCGGAAC
+TGCGTAAACCGGTTCTGTAACCCGATGAAGAAGGGAATCAGATATGGGTTGATATGTACG
+CTGTAAAGCCCTCTTGATGGGCTGTGCGCACGTTTAATAAACCAGGGAAAGGATTCATAC
+CCTTTTTCATCGCCGGCATCCTCTTCAGGGCGATAGAAAACCACTTCCTTACCCGCAAAA
+CCTTTTAAAGCCTGTCGTATATCCTTACTGGCTTCAGCGGAGGTCAACCCGAATGTTTCA
+GCGTATTTAGCAACGTGAATTTCGCAGATGCCGTCATGTTCCTGCAGGGAGCCGTCGGAT
+TTTCTGATCTGGTGAACGAACAGATACAGCAGACGCTTTTGATCCCTGGAGAGACTATAT
+GCCGCCTCAGTCAGCTCATTTGACTGGACAATCCGCGGGCTATTTTTACGTTTTTTATGG
+TTTATAACCGCTATTTCCGCCATGACAGGTCCATGTGAAGTGTGACAGACTTTAAGATTG
+TCACACTTCATAAAACAGAGTCAACAGGGATGGATAACTTTGTGAAAAGCAACGCTTCCT
+GAGGGCAATTTGTCACAGGGTTAAGGGCAACTTGTCACAGAAAGGGCGGCTATTTGAGGG
+TGATTTGTCACACTGAAAGGGCGTTTTGTCACAGATCCCTCTCTGGAACCCGCATGGATA
+AAGGCCTGTGGGCATTCTAAAAATAAAGATCTAACAACTATTTAAAAAGATCTTATAAAA
+ATATCCCCGTGGATAAGTGGATAACCCCTAGGGGAGGTGATTTTGCAGGCATTGAGCGTA
+TGCAGAATTTATGAGTACTGTTCCATGGTGCTTCCTCGCTCACTCGGGGCTTCGCCCTGT
+CGCTCGGCTGCGGCGAGCACTGCTGGCTCGATTATATCTGTGGCCAGAAGTTAGACATAC
+AGCCTATTAATTACGTGATGAGCGGCAGGGAAAAACACCAAAAGCCTCCCCCATTACCCC
+GGAACAAATTGAAATCCGTGAGCTCAGGAAAAAGCTACAACGTATTGAAGGTAATGACTC
+CAACTTATTGATAGTGTTTTATGTTCAGATAATGCCCGATGACTTTGTCATGCAGCTCCA
+CCGAT
+>NODE_19_length_1805_cov_40.386':NODE_39_length_146_cov_169.507';
+ATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAATA
+AGTTGGAGTCATTACCTTCAATACGTTGTAGCTTTTTCCTGAGCTCACGGATTTCAATTT
+GTTCCGGGGTAATGGGGGAGGCTTTTGGTGTTTTTCCCTGCCGCTCATCACGTAATTAAT
+AGGCTGTATGTCTAACTTCTGGCCACAGATATAATCGAGCCAGCAGTGCTCGCCGCAGCC
+GAGCGACAGGGCGAAGCCCCGAGTGAGCGAGGAAGCACCATGGAACAGTACTCATAAATT
+CTGCATACGCTCAATGCCTGCAAAATCACCTCCCCTAGGGGTTATCCACTTATCCACGGG
+GATATTTTTATAAGATCTTTTTAAATAGTTGTTAGATCTTTATTTTTAGAATGCCCACAG
+GCCTTTATCCATGCGGGTTCCAGAGAGGGATCTGTGACAAAACGCCCTTTCAGTGTGACA
+AATCACCCTCAAATAGCCGCCCTTTCTGTGACAAGTTGCCCTTAACCCTGTGACAAATTG
+CCCTCAGGAAGCGTTGCTTTTCACAAAGTTATCCATCCCTGTTGACTCTGTTTTATGAAG
+TGTGACAATCTTAAAGTCTGTCACACTTCACATGGACCTGTCATGGCGGAAATAGCGGTT
+ATAAACCATAAAAAACGTAAAAATAGCCCGCGGATTGTCCAGTCAAATGAGCTGACTGAG
+GCGGCATATAGTCTCTCCAGGGATCAAAAGCGTCTGCTGTATCTGTTCGTTCACCAGATC
+AGAAAATCCGACGGCTCCCTGCAGGAACATGACGGCATCTGCGAAATTCACGTTGCTAAA
+TACGCTGAAACATTCGGGTTGACCTCCGCTGAAGCCAGTAAGGATATACGACAGGCTTTA
+AAAGGTTTTGCGGGTAAGGAAGTGGTTTTCTATCGCCCTGAAGAGGATGCCGGCGATGAA
+AAAGGGTATGAATCCTTTCCCTGGTTTATTAAACGTGCGCACAGCCCATCAAGAGGGCTT
+TACAGCGTACATATCAACCCATATCTGATTCCCTTCTTCATCGGGTTACAGAACCGGTTT
+ACGCAGTTCCGGCTCAGTGAAACAAAAGAGATTACCAATCCGTACGCCATGCGTTTATAC
+GAATCTCTGTGCCAGTACCGTAAACCTGATGGCTCAGGTGTCGTGTCCCTGAAAATCGAC
+TGGATCATGGAACGCTACCAGCTACCTCAAAGTTACCAGCGTATGCCGGACTTTCGCCGC
+CGTTTCCTGAAGGCAAGTGTTGACGAGATCAACAGCCGGACACCAATGCGCCTTTCTTAC
+ATCGAGAAAAAGAAAGGCCGCCAGACGACGCATATCGTATTTTCCTTCCGTGATATAACC
+TCCATGACGATTGAATAGTTGAGGGTTATCTGTCACAGATTTAAGGGTGGTTCGTCACAT
+TTGATCTGGAAGGTTGAGGGTTATCTGTCACAGATTTAAGGGTGGTTCGTCACATTTGAT
+CTGGAAGGTTGAGGGTGATTTGTCACAGATTTAAGGGTGGTTCGTCACATTTGATCTGGA
+AGGTTGAGGGTGATTTGTCACAGTTTTGCTGTTCCCTCCCTGGCATCCTGCGCTTACTCA
+TGGTTTTTTGGCTGTAACCGGTAGTGGAGCCAGAATTGAGGGCAATTTGTCATCCTATCC
+TGAGGGTAGTTTGTCACACTAGATTTTCCCCCTCTTCCCGGGTAATGGTGCCAACTTACT
+GATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGGCTTCTGTTTCTATCAGCTGTC
+CCTCC
+>NODE_20_length_5859_cov_41.9915:NODE_7_length_1329_cov_85.8474';
+GCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACTAAATCAGTA
+AGTTGGCAGCATCACCCATTATCTTGATTATATTATTGATAATAATAAAAACCTTATCCC
+TATCCAAGAAGTGATGCCTATCATTGGTTGGAATGAACTTGAAAAAATTAGCCTTGAATA
+CATTACTGGTAAGGTAAACGCCATTGTCAGCAAATTGATCCAAGAGAACCAACTTAAAGC
+TTATGATGATGATGTGCTTAAAAACTTACTCAATGGCTGGTTTATGCATATCGCAATACA
+TGCGAAAAACCTAAAAGAGCTTGCCGATAAAAAAGGCCAATTTATTGCTATTTACCGCGG
+CTTTTTATTGAGCTTGAAAGATAAATAAAATAGATAGGTTTTATTTGAAGCTAAATCTTC
+TTTATCGTAAAAAATGCCCTCTTGGGTTATCAAGAGGGTCATTATATTTCGCGGAATAAC
+ATCATTTGGTGACGAAATAACTAAGCACTTGTCTCCTGTTTACTCCCCTGAGCTTGAGGG
+GTTAACATGAAGGTCATCGATAGCAGGATAATAATACAGTAAAACGCTAAACCAATAATC
+CAAATCCAGCCATCCCAAATTGGTAGTGAATGATTATAAATAACAGCAAACAGTAATGGG
+CCAATAACACCGGTTGCATTGGTAAGGCTCACCAATAATCCCTGTAAAGCACCTTGCTGA
+TGACTCTTTGTTTGGATAGACATCACTCCCTGTAATGCAGGTAAAGCGATCCCACCACCA
+GCCAATAAAATTAAAACAGGGAAAACTAACCAACCTTCAGATATAAACGCTAAAAAGGCA
+AATGCACTACTATCTGCAATAAATCCGAGCAGTACTGCCGTTTTTTCGCCCCATTTAGTG
+GCTATTCTTCCTGCCACAAAGGCTTGGAATACTGAGTGTAAAAGACCAAGACCCGCTAAT
+GAAAAGCCAACCATCATGCTATTCCATCCAAAACGATTTTCGGTAAATAGCACCCACACC
+GTTGCGGGAATTTGGCCTATCAATTGCGCTGAAAAATAAATAATCAACAAAATGGGCATC
+GTTTTAAATAAAGTGATGTATACCGAATTCGATTGCGTCTCAACCCCTACTTCGGTATCT
+GTATTATCACGTGTATTTTTGGTTTCACGGAACCAAAACATAACCACAAGGAAAGCGACA
+ATATTTAGCAACGCAGCGATAAAAAAGGGACTATGCGGTGAAATCTCTCCTGCAAAACCA
+CCAATAATAGGCCCCGCTATTAAACCAAGCCCAAAACTTGCCCCTAACCAACCGAACCAC
+TTCACGCGTTGAGAAGCTGAGGTGGTATCGGCAATGACCGATGCCGCGACAGCCCCAGTA
+GCTCCTGTGATCCCTGAAAGCAAACGGCCTAAATACAGCATCCAAAGCGCACTTGAAAAA
+GCCAGCAATAAGTAATCCAGCGATGCGCCTATTAATGACAACAACAGCACTGGGCGCCGA
+CCAAATCGGTCAGACATTTTTCCAAGCCAAGGAGCAAAGATAACCTGCATTAACGCATAA
+AGTGCAAGCAATACGCCAAAGTGGTTAGCGATATCTTCCGAAGCAATAAATTCACGTAAT
+AACGTTGGCAAGACTGGCATGATAAGGCCAATCCCCATGGCATCGAGTAACGTAATTACC
+AATGCGATCTTTGTCGAACTATTCATTTCACTTTTCTCTATCACTGATAGGGAGTGGTAA
+AATAACTCTATCAATGATAGAGTGTCAACAAAAATTAGGAATTAATGATGTCTAGATTAG
+ATAAAAGTAAAGTGATTAACAGCGCATTAGAGCTGCTTAATGAGGTCGGAATCGAAGGTT
+TAACAACCCGTAAACTCGCCCAGAAGCTAGGTGTAGAGCAGCCTACATTGTATTGGCATG
+TAAAAAATAAGCGGGCTTTGCTCGACGCCTTAGCCATTGAGATGTTAGATAGGCACCATA
+CTCACTTTTGCCCTTTAGAAGGGGAAAGCTGGCAAGATTTTTTACGTAATAACGCTAAAA
+GTTTTAGATGTGCTTTACTAAGTCATCGCGATGGAGCAAAAGTACATTTAGGTACACGGC
+CTACAGAAAAACAGTATGAAACTCTCGAAAATCAATTAGCCTTTTTATGCCAACAAGGTT
+TTTCACTAGAGAATGCATTATATGCACTCAGCGCTGTGGGGCATTTTACTTTAGGTTGCG
+TATTGGAAGATCAAGAGCATCAAGTCGCTAAAGAAGAAAGGGAAACACCTACTACTGATA
+GTATGCCGCCATTATTACGACAAGCTATCGAATTATTTGATCACCAAGGTGCAGAGCCAG
+CCTTCTTATTCGGCCTTGAATTGATCATATGCGGATTAGAAAAACAACTTAAATGTGAAA
+GTGGGTCTTAAAAGCAGCATAACCTTTTTCCGTGATGGTAACTTCACGGTAACCAAGATG
+TCGAGTTAACCACCCTTTAGATTCATAAAGCGAAAATAATGCGGCTCCAACGTACCCACC
+TAAATGGAAACGGCGTTCACTCCAATCTAAACACGCACAACAGATTTTACGTGAATGTTT
+GGAAGGAACGTCAATTCCCATTTCATGAAAATATTGAATACCACTTAATGTGATCATTGA
+ACCATTTTCAGTGATCCATTGCTGTTGACAAAGGGAATCATAGATCTTAACGGCAACTTC
+GCCAGCTAAATGATCATAGCAAGTACGTGCTTTTCGTAAATGCACTGGCGTGGAAACTCT
+GGCATGTACGCCATGGTTTAAGGAGATCCCCATCATACTTTCCATCAATTCAGCAATATC
+TTTTCCTGCTAGCCGAAAATAACGATGCTTGCCTTGAGCTACTACTGTGATTAGCTGGCA
+ATCTAATAATTTAGATAAATGACTGCTCGCCGTTGAAGCTGATATATTCGCCACAGAACT
+TAGCTCAGTGGCCGTCCAAGCTCGCCCATCCATCAAAGCACTGAGTATTTTAACTCGTGA
+AATGTCAGACATAGCCGCCCCTATCGCGGCTATTGAGGACTCAAAGGTAACCTCTTTTCG
+TATTAAATTAGCCATCGCAAGTTCACTTTATTGCCCAAGGGAGCGTAACAGATGCAGCCA
+TACTATCATTGTCCGTTATTAATATCAGTTGGTTAGCATGGTCACTGTATTGCACTAAAA
+TATTAATGTTATTCTCCGCCAATACTCGTGCTATTTCGCCAAGTTCCCCCGGTTTTTCCT
+GTTTTAACTTACGAATTAATGGTGTCCGGATCGCAAGTACTAACAGTCCAGCTTGCTCTA
+GCGCTATTTTAGCTTCCTTTCCTTGTTCAACAAGAAAATGAGCATGGCATTCATCACCAA
+CCGTAAATATCCCTCCCCCTTCCAATCCAATACCTTTATTACCTAATGTTTTTCCTAGTA
+ATGCTAATTGTCCTATTTGATTATCTAAAACAACGTGAACATCAAACATTATCCTTGTCC
+TTTTTAAATGAATATTCGCGAGTAATATGAGCAATACTAATTTTGTAAAAATCAAATATT
+GACTCTCGCCCTTCTTGTTGAGCTTTCGCATGTAAAACATGATTTTTCCATTGCAGAACT
+GCGTATTCGTTTTCCCACCAAGATAGCGATAACATTTTTCCTTCTGTAGCTAGACTTTGA
+AAACGTTCAATTGAAATAAAACCAGCTACATGACTTAATAGTGGTCTTAACTCCTCAGCT
+AAAGTCAAATAGCGAGTTTGTTGGTCGGGTTGTATTTGCACCTCAAATATTACAGCAATC
+ATATTTTTCTCCGTTATTAATCAACAAACAGAGTAATCCACCCGAAAATTAACACTTCGA
+TAAGCAACGAAATATAGAAAGGTCATGCTGCTGTTTTATGTTGTATATCACACTTCTTTA
+AATTGCTCGGCCTGCGCTTATCATGTTCTCCTTCTCTTATAATTTTGTTTATTATTTATA
+CTTTTTTATTTTTTGCTATCACCGAAAATAGTGCGGATCCCGCATGGTATTTAGGTTTAC
+CCATCATTAAATACCATTGTTGTTATTTTAATCTTTTTAATATTTCATGATTAAGATCAC
+ACTAAAATTATGACCCTATTAACTAAAAGTTATGGATACCCTAATAAAACTCATTGTTAA
+AAATTAGTTAACCAAAGTAACTTCATTTTTCACTATTGTTAAATTGTTATAGTGAAAATT
+CTGGTAAACTAATAGAGGTAAAAAAATGATCCTAGATGCCAGTTATACATTATTAGTCGC
+ATGTATCGCGCTACTCATAGGAATGTTTGTCGTAAAATTTACCCCGTTCCTACAAAAAAA
+CCACATACCAGAAGCCGTCGTTGGTGGCTTTATTGTTGCAATTGTTCTGTTAATTATTGA
+TAAAACATCAGGTTATTCGTTTACTTTTGATGCTTCATTGCAAAGTTTATTAATGCTCAC
+ATTCTTTTCCTCTATCGGGCTAAGTTCTGACTTTTCTCGACTGATTAAAGGAGGAAAGCC
+GTTAGTTCTATTAACTATTGCAGTAACGATCCTAATCGCCATCAAAATACTGTCGGCATG
+AGTATGGCTGTCATGATGAATGAAAGTCCATTTATTGGCTTAATTGCAGGTTCAATTACT
+CTAACAGGTGGTCATGGTAATGCCGGAGCATGGGGCCCTATTCTCGCTGATAAATATGGT
+GTAACAGGCGCCGTTGAATTAGCGATGGCTTGTGCAACACTTGGATTAGTGTTGGGTGGT
+TTAGTTGGCGGCCCTGTTGCCCGTCATCTTTTGAAAAAGGTCTCTATTCCTAAAACAACC
+GAGCAAGAGCGCGACACTATCGTTGAAGCTTTTGAGCAACCAAGCGTCAAAAGAAAAATC
+AATGCAAATAACGTTATTGAAACCATTTCAATGCTGATTATCTGTATTGTTGTTGGTGGC
+TATATCAGTGCATTGTTTAAAGATACTTTTCTGCAACTGCCTACTTTTGTCTGGTGTTTA
+TTTGTCGGTATTATTATCCGTAATACACTGACTCATGTATTTAAACACGAAGTGTTTGAG
+CCGACCGTCGATGTATTAGGTAGCGTTGCTTTATCGCTTTTCTTGGCAATGGCGTTAATG
+TCATTAAAATTTGGTCAATTGGCAAGCATGGCAGGGCCAGTATTAATTATCATTGCTGTA
+CAAACTGTTGTCATGGTGCTATTTGCCTGCTTTGTCACCTTCAAAATGATGGGCAAAGAT
+TATGATGCTGTCGTGATCAGCGCGGGTCACTGTGGCTTTGGTATGGGAGCAACACCAACA
+GCAATTGCGAATATGCAAACAGTCACAAAAGCATTTGGACCATCACATAAAGCTTTCCTT
+GTCGTTCCTATGGTCGGTGCCTTTATTGTTGATATTTCAAACAGTATCTTAATTAAAATA
+TTTATTGAAATTGGTACATACTTTACCTAATAGCTACACACTACTCGGCGTACTTCTCCT
+AACAATTTATTATAGGGCAGTATGCCGAGCCGCTTTCTTACCCCGTATATTCCCCTAGTC
+AATCTATTTAGCTTGCACGTTTACGAATTAATTCTCGTGACAACTAAACCAAAATTTGAA
+TTATGACGAGTATATCTGATTATTTATACTTTATTCGTTAGAATAGTCCGTAGAAATAAA
+TAATCAGTAGGCTACATGGAATGAAATTAAGACATCTCGATATCTTTTATGCTGTAATGA
+CTTGTGGTTCCTTAACGCGTGCGGCTGAAGTTTTACATATTTCTCAACCCGCGGCGAGTA
+AAGCACTCAAACATGCTGAGCACTGAGAGATCCCCTCATAATTTCCCCAAAACGTAACCA
+TGTGTGAATAGATTTTGAGTAAGCAGGGTTGCAGCCACG
+>NODE_20_length_5859_cov_41.9915':NODE_22_length_78_cov_98;
+CGTGGCTGCAACCCTGCTTACTCAAAATCTATTCACACATGGTTACGTTTTGGGGAAATT
+ATGAGGGGATCTCTCAGTGCTCAGCATGTTTGAGTGCTTTACTCGCCGCGGGTTGAGAAA
+TATGTAAAACTTCAGCCGCACGCGTTAAGGAACCACAAGTCATTACAGCATAAAAGATAT
+CGAGATGTCTTAATTTCATTCCATGTAGCCTACTGATTATTTATTTCTACGGACTATTCT
+AACGAATAAAGTATAAATAATCAGATATACTCGTCATAATTCAAATTTTGGTTTAGTTGT
+CACGAGAATTAATTCGTAAACGTGCAAGCTAAATAGATTGACTAGGGGAATATACGGGGT
+AAGAAAGCGGCTCGGCATACTGCCCTATAATAAATTGTTAGGAGAAGTACGCCGAGTAGT
+GTGTAGCTATTAGGTAAAGTATGTACCAATTTCAATAAATATTTTAATTAAGATACTGTT
+TGAAATATCAACAATAAAGGCACCGACCATAGGAACGACAAGGAAAGCTTTATGTGATGG
+TCCAAATGCTTTTGTGACTGTTTGCATATTCGCAATTGCTGTTGGTGTTGCTCCCATACC
+AAAGCCACAGTGACCCGCGCTGATCACGACAGCATCATAATCTTTGCCCATCATTTTGAA
+GGTGACAAAGCAGGCAAATAGCACCATGACAACAGTTTGTACAGCAATGATAATTAATAC
+TGGCCCTGCCATGCTTGCCAATTGACCAAATTTTAATGACATTAACGCCATTGCCAAGAA
+AAGCGATAAAGCAACGCTACCTAATACATCGACGGTCGGCTCAAACACTTCGTGTTTAAA
+TACATGAGTCAGTGTATTACGGATAATAATACCGACAAATAAACACCAGACAAAAGTAGG
+CAGTTGCAGAAAAGTATCTTTAAACAATGCACTGATATAGCCACCAACAACAATACAGAT
+AATCAGCATTGAAATGGTTTCAATAACGTTATTTGCATTGATTTTTCTTTTGACGCTTGG
+TTGCTCAAAAGCTTCAACGATAGTGTCGCGCTCTTGCTCGGTTGTTTTAGGAATAGAGAC
+CTTTTTCAAAAGATGACGGGCAACAGGGCCGCCAACTAAACCACCCAACACTAATCCAAG
+TGTTGCACAAGCCATCGCTAATTCAACGGCGCCTGTTACACCATATTTATCAGCGAGAAT
+AGGGCCCCATGCTCCGGCATTACCATGACCACCTGTTAGAGTAATTGAACCTGCAATTAA
+GCCAATAAATGGACTTTCATTCATCATGACAGCCATACTCATGCCGACAGTATTTTGATG
+GCGATTAGGATCGTTACTGCAATAGTTAATAGAACTAACGGCTTTCCTCCTTTAATCAGT
+CGAGAAAAGTCAGAACTTAGCCCGATAGAGGAAAAGAATGTGAGCATTAATAAACTTTGC
+AATGAAGCATCAAAAGTAAACGAATAACCTGATGTTTTATCAATAATTAACAGAACAATT
+GCAACAATAAAGCCACCAACGACGGCTTCTGGTATGTGGTTTTTTTGTAGGAACGGGGTA
+AATTTTACGACAAACATTCCTATGAGTAGCGCGATACATGCGACTAATAATGTATAACTG
+GCATCTAGGATCATTTTTTTACCTCTATTAGTTTACCAGAATTTTCACTATAACAATTTA
+ACAATAGTGAAAAATGAAGTTACTTTGGTTAACTAATTTTTAACAATGAGTTTTATTAGG
+GTATCCATAACTTTTAGTTAATAGGGTCATAATTTTAGTGTGATCTTAATCATGAAATAT
+TAAAAAGATTAAAATAACAACAATGGTATTTAATGATGGGTAAACCTAAATACCATGCGG
+GATCCGCACTATTTTCGGTGATAGCAAAAAATAAAAAAGTATAAATAATAAACAAAATTA
+TAAGAGAAGGAGAACATGATAAGCGCAGGCCGAGCAATTTAAAGAAGTGTGATATACAAC
+ATAAAACAGCAGCATGACCTTTCTATATTTCGTTGCTTATCGAAGTGTTAATTTTCGGGT
+GGATTACTCTGTTTGTTGATTAATAACGGAGAAAAATATGATTGCTGTAATATTTGAGGT
+GCAAATACAACCCGACCAACAAACTCGCTATTTGACTTTAGCTGAGGAGTTAAGACCACT
+ATTAAGTCATGTAGCTGGTTTTATTTCAATTGAACGTTTTCAAAGTCTAGCTACAGAAGG
+AAAAATGTTATCGCTATCTTGGTGGGAAAACGAATACGCAGTTCTGCAATGGAAAAATCA
+TGTTTTACATGCGAAAGCTCAACAAGAAGGGCGAGAGTCAATATTTGATTTTTACAAAAT
+TAGTATTGCTCATATTACTCGCGAATATTCATTTAAAAAGGACAAGGATAATGTTTGATG
+TTCACGTTGTTTTAGATAATCAAATAGGACAATTAGCATTACTAGGAAAAACATTAGGTA
+ATAAAGGTATTGGATTGGAAGGGGGAGGGATATTTACGGTTGGTGATGAATGCCATGCTC
+ATTTTCTTGTTGAACAAGGAAAGGAAGCTAAAATAGCGCTAGAGCAAGCTGGACTGTTAG
+TACTTGCGATCCGGACACCATTAATTCGTAAGTTAAAACAGGAAAAACCGGGGGAACTTG
+GCGAAATAGCACGAGTATTGGCGGAGAATAACATTAATATTTTAGTGCAATACAGTGACC
+ATGCTAACCAACTGATATTAATAACGGACAATGATAGTATGGCTGCATCTGTTACGCTCC
+CTTGGGCAATAAAGTGAACTTGCGATGGCTAATTTAATACGAAAAGAGGTTACCTTTGAG
+TCCTCAATAGCCGCGATAGGGGCGGCTATGTCTGACATTTCACGAGTTAAAATACTCAGT
+GCTTTGATGGATGGGCGAGCTTGGACGGCCACTGAGCTAAGTTCTGTGGCGAATATATCA
+GCTTCAACGGCGAGCAGTCATTTATCTAAATTATTAGATTGCCAGCTAATCACAGTAGTA
+GCTCAAGGCAAGCATCGTTATTTTCGGCTAGCAGGAAAAGATATTGCTGAATTGATGGAA
+AGTATGATGGGGATCTCCTTAAACCATGGCGTACATGCCAGAGTTTCCACGCCAGTGCAT
+TTACGAAAAGCACGTACTTGCTATGATCATTTAGCTGGCGAAGTTGCCGTTAAGATCTAT
+GATTCCCTTTGTCAACAGCAATGGATCACTGAAAATGGTTCAATGATCACATTAAGTGGT
+ATTCAATATTTTCATGAAATGGGAATTGACGTTCCTTCCAAACATTCACGTAAAATCTGT
+TGTGCGTGTTTAGATTGGAGTGAACGCCGTTTCCATTTAGGTGGGTACGTTGGAGCCGCA
+TTATTTTCGCTTTATGAATCTAAAGGGTGGTTAACTCGACATCTTGGTTACCGTGAAGTT
+ACCATCACGGAAAAAGGTTATGCTGCTTTTAAGACCCACTTTCACATTTAAGTTGTTTTT
+CTAATCCGCATATGATCAATTCAAGGCCGAATAAGAAGGCTGGCTCTGCACCTTGGTGAT
+CAAATAATTCGATAGCTTGTCGTAATAATGGCGGCATACTATCAGTAGTAGGTGTTTCCC
+TTTCTTCTTTAGCGACTTGATGCTCTTGATCTTCCAATACGCAACCTAAAGTAAAATGCC
+CCACAGCGCTGAGTGCATATAATGCATTCTCTAGTGAAAAACCTTGTTGGCATAAAAAGG
+CTAATTGATTTTCGAGAGTTTCATACTGTTTTTCTGTAGGCCGTGTACCTAAATGTACTT
+TTGCTCCATCGCGATGACTTAGTAAAGCACATCTAAAACTTTTAGCGTTATTACGTAAAA
+AATCTTGCCAGCTTTCCCCTTCTAAAGGGCAAAAGTGAGTATGGTGCCTATCTAACATCT
+CAATGGCTAAGGCGTCGAGCAAAGCCCGCTTATTTTTTACATGCCAATACAATGTAGGCT
+GCTCTACACCTAGCTTCTGGGCGAGTTTACGGGTTGTTAAACCTTCGATTCCGACCTCAT
+TAAGCAGCTCTAATGCGCTGTTAATCACTTTACTTTTATCTAATCTAGACATCATTAATT
+CCTAATTTTTGTTGACACTCTATCATTGATAGAGTTATTTTACCACTCCCTATCAGTGAT
+AGAGAAAAGTGAAATGAATAGTTCGACAAAGATCGCATTGGTAATTACGTTACTCGATGC
+CATGGGGATTGGCCTTATCATGCCAGTCTTGCCAACGTTATTACGTGAATTTATTGCTTC
+GGAAGATATCGCTAACCACTTTGGCGTATTGCTTGCACTTTATGCGTTAATGCAGGTTAT
+CTTTGCTCCTTGGCTTGGAAAAATGTCTGACCGATTTGGTCGGCGCCCAGTGCTGTTGTT
+GTCATTAATAGGCGCATCGCTGGATTACTTATTGCTGGCTTTTTCAAGTGCGCTTTGGAT
+GCTGTATTTAGGCCGTTTGCTTTCAGGGATCACAGGAGCTACTGGGGCTGTCGCGGCATC
+GGTCATTGCCGATACCACCTCAGCTTCTCAACGCGTGAAGTGGTTCGGTTGGTTAGGGGC
+AAGTTTTGGGCTTGGTTTAATAGCGGGGCCTATTATTGGTGGTTTTGCAGGAGAGATTTC
+ACCGCATAGTCCCTTTTTTATCGCTGCGTTGCTAAATATTGTCGCTTTCCTTGTGGTTAT
+GTTTTGGTTCCGTGAAACCAAAAATACACGTGATAATACAGATACCGAAGTAGGGGTTGA
+GACGCAATCGAATTCGGTATACATCACTTTATTTAAAACGATGCCCATTTTGTTGATTAT
+TTATTTTTCAGCGCAATTGATAGGCCAAATTCCCGCAACGGTGTGGGTGCTATTTACCGA
+AAATCGTTTTGGATGGAATAGCATGATGGTTGGCTTTTCATTAGCGGGTCTTGGTCTTTT
+ACACTCAGTATTCCAAGCCTTTGTGGCAGGAAGAATAGCCACTAAATGGGGCGAAAAAAC
+GGCAGTACTGCTCGGATTTATTGCAGATAGTAGTGCATTTGCCTTTTTAGCGTTTATATC
+TGAAGGTTGGTTAGTTTTCCCTGTTTTAATTTTATTGGCTGGTGGTGGGATCGCTTTACC
+TGCATTACAGGGAGTGATGTCTATCCAAACAAAGAGTCATCAGCAAGGTGCTTTACAGGG
+ATTATTGGTGAGCCTTACCAATGCAACCGGTGTTATTGGCCCATTACTGTTTGCTGTTAT
+TTATAATCATTCACTACCAATTTGGGATGGCTGGATTTGGATTATTGGTTTAGCGTTTTA
+CTGTATTATTATCCTGCTATCGATGACCTTCATGTTAACCCCTCAAGCTCAGGGGAGTAA
+ACAGGAGACAAGTGCTTAGTTATTTCGTCACCAAATGATGTTATTCCGCGAAATATAATG
+ACCCTCTTGATAACCCAAGAGGGCATTTTTTACGATAAAGAAGATTTAGCTTCAAATAAA
+ACCTATCTATTTTATTTATCTTTCAAGCTCAATAAAAAGCCGCGGTAAATAGCAATAAAT
+TGGCCTTTTTTATCGGCAAGCTCTTTTAGGTTTTTCGCATGTATTGCGATATGCATAAAC
+CAGCCATTGAGTAAGTTTTTAAGCACATCATCATCATAAGCTTTAAGTTGGTTCTCTTGG
+ATCAATTTGCTGACAATGGCGTTTACCTTACCAGTAATGTATTCAAGGCTAATTTTTTCA
+AGTTCATTCCAACCAATGATAGGCATCACTTCTTGGATAGGGATAAGGTTTTTATTATTA
+TCAATAATATAATCAAGATAATGGGTGATGCTGCCAACTTACTGATTTAGTGTATGATGG
+TGTTTTTGAGGTGCTCCAGTGGCTTCTGTTTCTATCAGC
+>NODE_21_length_1646_cov_41.9885:NODE_32_length_86_cov_81.3333';
+GCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACTAAATCAGTA
+AGTTGGCAGCATCACCCGACGCACTTTGCGCCGAATAAATACCTGTGACGGAAGATCACT
+TCGCAGAATAAATAAATCCTGGTGTCCCTGTTGATACCGGGAAGCCCTGGGCCAACTTTT
+GGCGAAAATGAGACGTTGATCGGCACGTAAGAGGTTCCAACTTTCACCATAATGAAATAA
+GATCACTACCGGGCGTATTTTTTGAGTTATCGAGATTTTCAGGAGCTAAGGAAGCTAAAA
+TGGAGAAAAAAATCACTGGATATACCACCGTTGATATATCCCAATGGCATCGTAAAGAAC
+ATTTTGAGGCATTTCAGTCAGTTGCTCAATGTACCTATAACCAGACCGTTCAGCTGGATA
+TTACGGCCTTTTTAAAGACCGTAAAGAAAAATAAGCACAAGTTTTATCCGGCCTTTATTC
+ACATTCTTGCCCGCCTGATGAATGCTCATCCGGAATTCCGTATGGCAATGAAAGACGGTG
+AGCTGGTGATATGGGATAGTGTTCACCCTTGTTACACCGTTTTCCATGAGCAAACTGAAA
+CGTTTTCATCGCTCTGGAGTGAATACCACGACGATTTCCGGCAGTTTCTACACATATATT
+CGCAAGATGTGGCGTGTTACGGTGAAAACCTGGCCTATTTCCCTAAAGGGTTTATTGAGA
+ATATGTTTTTCGTCTCAGCCAATCCCTGGGTGAGTTTCACCAGTTTTGATTTAAACGTGG
+CCAATATGGACAACTTCTTCGCCCCCGTTTTCACCATGGGCAAATATTATACGCAAGGCG
+ACAAGGTGCTGATGCCGCTGGCGATTCAGGTTCATCATGCCGTTTGTGATGGCTTCCATG
+TCGGCAGAATGCTTAATGAATTACAACAGTACTGCGATGAGTGGCAGGGCGGGGCGTAAT
+TTTTTTAAGGCAGTTATTGGTGCCCTTAAACGCCTGGTTGCTACGCCTGAATAAGTGATA
+ATAAGCGGATGAATGGCAGAAATTCGAAAGCAAATTCGACCCGGTCGTCGGTTCAGGGCA
+GGGTCGTTAAATAGCCGCTTATGTCTATTGCTGGTTTACCGGTTTATTGACTACCGGAAG
+CAGTGTGACCGTGTGCTTCTCAAATGCCTGAGGCCAGTTTGCTCAGGCTCTCCCCGTGGA
+GGTAATAATTGACGATATGATCATTTATTCTGCCTCCCAGAGCCTGATAAAAACGGTTAG
+CGCCGGGGTTGGATTTTTCAGCGTTCCAGCTAAGGCTAAGGCATTCCTGTTCAAGCGCAA
+GCCGGGCTATAAAGCGCATTATCGCTTTACCCGTGCCCTTATTTCGATCGCACTGAGAAA
+CATACAGCTCTTTAATATGCAGCTGACCGCTGTATCGGGGCGAGGGATAAAGAATATTGC
+AACATGCCAGGCCAGTAATGTTATTGCCGCAGCGCGCTCTGATCACCAGGGTACCGGAAA
+GCCGGTTGAATAACTTTTTACAGAGATAATCCTTCATCAACGCTTCCTGAATGATACCTT
+CGCCATAATAGGGGTCGTCTCAGAAAACGGAATCTATGGTCACTCCCGTTTTTGCAACAC
+CGATTTTGACGACAAGTTGGCTTGCT
+>NODE_21_length_1646_cov_41.9885':NODE_22_length_78_cov_98;
+AGCAAGCCAACTTGTCGTCAAAATCGGTGTTGCAAAAACGGGAGTGACCATAGATTCCGT
+TTTCTGAGACGACCCCTATTATGGCGAAGGTATCATTCAGGAAGCGTTGATGAAGGATTA
+TCTCTGTAAAAAGTTATTCAACCGGCTTTCCGGTACCCTGGTGATCAGAGCGCGCTGCGG
+CAATAACATTACTGGCCTGGCATGTTGCAATATTCTTTATCCCTCGCCCCGATACAGCGG
+TCAGCTGCATATTAAAGAGCTGTATGTTTCTCAGTGCGATCGAAATAAGGGCACGGGTAA
+AGCGATAATGCGCTTTATAGCCCGGCTTGCGCTTGAACAGGAATGCCTTAGCCTTAGCTG
+GAACGCTGAAAAATCCAACCCCGGCGCTAACCGTTTTTATCAGGCTCTGGGAGGCAGAAT
+AAATGATCATATCGTCAATTATTACCTCCACGGGGAGAGCCTGAGCAAACTGGCCTCAGG
+CATTTGAGAAGCACACGGTCACACTGCTTCCGGTAGTCAATAAACCGGTAAACCAGCAAT
+AGACATAAGCGGCTATTTAACGACCCTGCCCTGAACCGACGACCGGGTCGAATTTGCTTT
+CGAATTTCTGCCATTCATCCGCTTATTATCACTTATTCAGGCGTAGCAACCAGGCGTTTA
+AGGGCACCAATAACTGCCTTAAAAAAATTACGCCCCGCCCTGCCACTCATCGCAGTACTG
+TTGTAATTCATTAAGCATTCTGCCGACATGGAAGCCATCACAAACGGCATGATGAACCTG
+AATCGCCAGCGGCATCAGCACCTTGTCGCCTTGCGTATAATATTTGCCCATGGTGAAAAC
+GGGGGCGAAGAAGTTGTCCATATTGGCCACGTTTAAATCAAAACTGGTGAAACTCACCCA
+GGGATTGGCTGAGACGAAAAACATATTCTCAATAAACCCTTTAGGGAAATAGGCCAGGTT
+TTCACCGTAACACGCCACATCTTGCGAATATATGTGTAGAAACTGCCGGAAATCGTCGTG
+GTATTCACTCCAGAGCGATGAAAACGTTTCAGTTTGCTCATGGAAAACGGTGTAACAAGG
+GTGAACACTATCCCATATCACCAGCTCACCGTCTTTCATTGCCATACGGAATTCCGGATG
+AGCATTCATCAGGCGGGCAAGAATGTGAATAAAGGCCGGATAAAACTTGTGCTTATTTTT
+CTTTACGGTCTTTAAAAAGGCCGTAATATCCAGCTGAACGGTCTGGTTATAGGTACATTG
+AGCAACTGACTGAAATGCCTCAAAATGTTCTTTACGATGCCATTGGGATATATCAACGGT
+GGTATATCCAGTGATTTTTTTCTCCATTTTAGCTTCCTTAGCTCCTGAAAATCTCGATAA
+CTCAAAAAATACGCCCGGTAGTGATCTTATTTCATTATGGTGAAAGTTGGAACCTCTTAC
+GTGCCGATCAACGTCTCATTTTCGCCAAAAGTTGGCCCAGGGCTTCCCGGTATCAACAGG
+GACACCAGGATTTATTTATTCTGCGAAGTGATCTTCCGTCACAGGTATTTATTCGGCGCA
+AAGTGCGTCGGGTGATGCTGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTG
+CTCCAGTGGCTTCTGTTTCTATCAGC
+>NODE_22_length_78_cov_98:NODE_14_length_85_cov_140.75;
+GGGTGATGCTGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGG
+CTTCTGTTTCTATCAGCT
+>NODE_22_length_78_cov_98':NODE_20_length_5859_cov_41.9915,NODE_21_length_1646_cov_41.9885;
+AGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACTAAATCAGT
+AAGTTGGCAGCATCACCC
+>NODE_23_length_1411_cov_42.084:NODE_26_length_130_cov_84.9811;
+TCTGGCGATTAAGGGGGTTAAATTCCATGGGACACGCCCAGCTTTCCTCCATGGTCTGGC
+GATTAAGGGGGTTAAATCCCACGGTACCCGGCCAGCTTCCCGCCATGCTCTGGCGATTAA
+GGGGGTTAAATGCCAGGATACGCGACCAGCATTCCCCATGGTCTGGCGAATAAGGGAGTT
+AAATACCACGGTACCTGACCAGAATGACCCCATGTCCTGGCGATTAAAGGGTTAAATGCC
+ACGCTACGCGACCAGCCTCCCCATGGCCTGGCGATTAAGGGGGTTAAATGCCACGGTACC
+CGACCAGCTTGCCTCCATGGTCTGGCGATTATGGGGGTTAAATCCCACGGTACCCGACCA
+GCAGGCACCGTGGTCATTGGCTAAAGGGGAAATTGCCTCGGCTTGCAGACAGGACAACGT
+GACGCCCTAGCGGTTAAGTGGGTTTAATACGACGGTACACAATAAGTATCCCACCAGAAT
+CTGTCTATTGAGTGGATTAGATTAAAAGATATTCGGCCTGGATCTCGACTTAGAATGACG
+AAATATTTGGCAAAAAAATAGGGTATTCGGCAAATCCTGTTGTTAAGACATCCCGAATAC
+CCAAAAAATATTTGGCAATCAATATGAATTGCCCATACCCACAATTGACAATAAGAGAGT
+TTTTTGGCAATTCGTATAATTAGGCCAATTCATCCGTGTCGTCTATTGCACTAACGAAGT
+ATTCCGTGCGGTAGTCATCTCCCCCCCTCAACTAGACTGAAGGTGATCCATCTTTTGCAA
+GCGTACGGTCACCTGACATGCTGTCCGCTCGTACAGGAATTGTCATGCATTCTTTAATGG
+TATCTGCTTCAGCCACGTGTCCAGTACACTGGTTTTCAAATCCAGCAACTACTACATACG
+CATCCGGGTCGAGCCTTTTAAGCTGGTCTATAAGCTCTTTTACTTTTATGGGTTACCTCT
+ACGTTTTTGTATATTTTATCACGCTGAACGGAAGGGCGAATAACTGTAGTGAAACAAAAA
+AAGTTTTGGCCGGAAAACCTTTTAGACTGGCTTTCCTTTAGCAAAGAACTGGTGAATAGG
+GGAGCAATTCCGCGCTACGCAACCAGCATCCCATCGTGTACAGACGAGTAAGTGGTTAAA
+TGGCCTGGTACCCGGCAATAATCCCTCCATGGTCTGCCGATTAAGGGGTTAAATGCCACA
+GTACCCGACCAGCTTCCCCCCATGGTCTGGCGATTAAGGGGGTTAAATACCACGGGACAC
+GACCAGCTTTCCTCCATGGTCTGGCGATTAAGGGGGTTAAATGCCACGGTACGCAACCAG
+CTTTCCTCCATGGTCTGGCGATTAAGGGGGTTAAATGCCACGGGACACGACCAGCTTTCC
+TCCATGGTCTGGCGATTAAGGGGGTTAAATT
+>NODE_23_length_1411_cov_42.084':NODE_26_length_130_cov_84.9811';
+AATTTAACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGTCGTGTCCCGTGGCATTTA
+ACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGTTGCGTACCGTGGCATTTAACCCCC
+TTAATCGCCAGACCATGGAGGAAAGCTGGTCGTGTCCCGTGGTATTTAACCCCCTTAATC
+GCCAGACCATGGGGGGAAGCTGGTCGGGTACTGTGGCATTTAACCCCTTAATCGGCAGAC
+CATGGAGGGATTATTGCCGGGTACCAGGCCATTTAACCACTTACTCGTCTGTACACGATG
+GGATGCTGGTTGCGTAGCGCGGAATTGCTCCCCTATTCACCAGTTCTTTGCTAAAGGAAA
+GCCAGTCTAAAAGGTTTTCCGGCCAAAACTTTTTTTGTTTCACTACAGTTATTCGCCCTT
+CCGTTCAGCGTGATAAAATATACAAAAACGTAGAGGTAACCCATAAAAGTAAAAGAGCTT
+ATAGACCAGCTTAAAAGGCTCGACCCGGATGCGTATGTAGTAGTTGCTGGATTTGAAAAC
+CAGTGTACTGGACACGTGGCTGAAGCAGATACCATTAAAGAATGCATGACAATTCCTGTA
+CGAGCGGACAGCATGTCAGGTGACCGTACGCTTGCAAAAGATGGATCACCTTCAGTCTAG
+TTGAGGGGGGGAGATGACTACCGCACGGAATACTTCGTTAGTGCAATAGACGACACGGAT
+GAATTGGCCTAATTATACGAATTGCCAAAAAACTCTCTTATTGTCAATTGTGGGTATGGG
+CAATTCATATTGATTGCCAAATATTTTTTGGGTATTCGGGATGTCTTAACAACAGGATTT
+GCCGAATACCCTATTTTTTTGCCAAATATTTCGTCATTCTAAGTCGAGATCCAGGCCGAA
+TATCTTTTAATCTAATCCACTCAATAGACAGATTCTGGTGGGATACTTATTGTGTACCGT
+CGTATTAAACCCACTTAACCGCTAGGGCGTCACGTTGTCCTGTCTGCAAGCCGAGGCAAT
+TTCCCCTTTAGCCAATGACCACGGTGCCTGCTGGTCGGGTACCGTGGGATTTAACCCCCA
+TAATCGCCAGACCATGGAGGCAAGCTGGTCGGGTACCGTGGCATTTAACCCCCTTAATCG
+CCAGGCCATGGGGAGGCTGGTCGCGTAGCGTGGCATTTAACCCTTTAATCGCCAGGACAT
+GGGGTCATTCTGGTCAGGTACCGTGGTATTTAACTCCCTTATTCGCCAGACCATGGGGAA
+TGCTGGTCGCGTATCCTGGCATTTAACCCCCTTAATCGCCAGAGCATGGCGGGAAGCTGG
+CCGGGTACCGTGGGATTTAACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGGCGTGT
+CCCATGGAATTTAACCCCCTTAATCGCCAGA
+>NODE_24_length_52213_cov_42.1417:NODE_14_length_85_cov_140.75;
+TCTGGCGATTAAGGGGGTTAAATTCCATGGGACACGCCCAGCTTTCCTCCATGGTCTGGC
+GATTAAGGGGGTTAAATGCCACGGTACGCAACCAGCTTCCCTCCATGGTCTGGCGATTAA
+GGGGGCTCAATGCCACGGTACCCTACCAACTTTCTACCATGGTCAGTCGATTCAAGTGGT
+TAAATTTCGTTATTGAATAAGCTTAAAATGGTTTCTTATTCCAACCAGAAAGTTAGATGG
+TTAAGTTATTATGGAGATAAGACCTGATCTTACTTGTTTTTTGGTTGTTTTAACAAACCA
+TTCACCTTAATAATATCTACGCATCGCATAACAGTTGCATTCTCAAATCTAATTAACGTA
+TAGTTTATACAACCATCATCTAGATATTAGATCCAATTATTTCAAGGACTTAAAAGAAAA
+AACGACAAATTCATCTATATAATGGTTATTTATTATAACCGTAAAAATGATGTTTGTATC
+TGCCATACAAAAACCACACCCCCTTGGTTGGTTCTTGTACCCAAAACATAATACCTGCTC
+TGATTAACTTCACAGCAAAAGCCTGGTAGGGAGAATAATTCTGGAGTAAATTTCATCATA
+TTCATTCACCTTCAAAAGAAGAATGACAAAGGCATCGAATTTCATGTATGACGGTTTGAG
+AGGACTTAATCCGAGCTAGATATTCTTAACCCGGGCTATTATTTCGGGGGAGGGCAGGCA
+ATGACAGCTAACAACTATTTACTTCAAAGACGTACTGGATACCTCAGTCAAAACAAAATG
+AGGTAACCAGTAACTTAAAACGTCAGGCAGCTGATTTGCTCGCAACTTCCTGTTCGTACA
+GAATCTCAATTGCTTCGCCGTAAGAGCAATCAAGTCGGCTTTGGATTTCCCATAGTTTTC
+CACGATCGGTGCTGTCAGTCGTAAAGCAAAGCTCCATTTTTCTATCTACATAGAGGCGAC
+ATATCTCCTGGAAATTTTCGAATCGTACGAGCATCTCGGAAAATGCACGCTTTACCGTTC
+GAATATTTTTCATACGCTCATATTCCGCATCAGTTGTGGAGAAGTAGTTGTTCACCTTCA
+TGGCTTCAATACTTTCCTTTTCCTGCTTCATGATGATCTTCCACGGCGAGTTAGCCGTTA
+GTGCGCGACCAACCGATGAGGTGAAGTAATCTTCAAAGGATTGAGTAATACAAATACCGG
+CACAGTTCGTTTTCCTGAATCGGCGCCAAGCGGCCTCAAGGAAAGAGGAGAAAAATTGAT
+TTGAATGATTACTGGAACCTGAAGCATTGTCCGGACGGATATACTCCCATGCCTCATCAA
+GTATGAACAACCGGCGGCGTCCGTCTTTCTTGATAAACATTGCATGCTGAGCGGCCTGAA
+TAATCGACATCAGAACGACAGTCTGAAGGTGTGGGGTCCCCTTCAATTCTTCAAGTTCCA
+GAACAATAAACCGGCTATCAAAATTTATTGGCGGGAGATTTTCTGTAAAGCGATTCCCAT
+AAATCCCTCCTTCACACCATTGCCCCAACTGGTCACCGATATCTTTAATACGCTTATCTT
+CATGGTTAGAACAGCGTCGCGCAAATCCAGTAATAGAGCCTGTACGTCCAACTTTGCGTG
+ATTCGTTATATTCTTCACTAATCAGTTGCAGCATGACCGATTGTTGAAAATCGTCAATAT
+TTCCTTTTTCAGATGCCATTATTTTTAACTGGTTTAGAACCATAATGGTCTGGGCTACTT
+TATCCTTATCATCATCATGATTATTTGAATCGTCATTAAAGACAGGTGCTTCATCAAAAA
+CACGCTCTCCAACAGTCACATCAGTCAAAAATGCGAATGGATTTAGCGTAAAATCAGGCT
+TTTTCCCAAAGTCTATAAACTGACTATTAGTATATTGTTCCGAAATACCTTGGTATGAGC
+GTCCGACATCAACTACGAAAATCTGGGCTCCATCAGGGTCAAATGCATCATAAGAATTGT
+TTTTGAATCCCTCAAAAGTATCTCGATAATGGATCAGATTATTAGAACGCGGACCTGCGC
+CTAGATAATTATTAATGATGTATGCGACCCAGAATGATTTACCAGCACCAGACGTTGCAC
+CAACGACCATGTTATAGCTGGCAGAAGTCTTGAAGATATCCAGCCCCAACAGCTGTCCTT
+CTCGTGAGACAAGGTTAAGTACGGGTCTGTCCGTATTACCTTTCCAAGGACCAAATATGG
+GGGTCATGTGCGCAGCACCAGTATTACTCACGACCTCAAAACGATCCAGTTCTAGTATTG
+TCTTTGGGTCATTACACATCGGCAGGCTTGAAACAAATGAGGGAAATACTATGTACGAGT
+CATCAGCAACATTAACACGACTTTCCAGATAAAATGATTTTAACTGGTCTGCGGCAGACT
+GAACATCAACTGCTGAATTCCCCATTACAGTAAATGTCAGATAACTGTGTAGGAGGCGAG
+CCCCATCTTCCAGTTCGCGTGTTATCGTCATGTAATCATTATCCATATCCTTTAATCTTG
+GACAAAACGTCAAAACTGTTGGAATACTGGCTTGTTTGTTAGTAATTGCCTTATATCTGA
+CGTTTTCTCTTGATAATTTTAAAGGATCGGCGAAATGGACAGTCTGGGTTATCATGAAAG
+GGCTAAAGATCGTTTTACGTCCATTCAACCAATTAACTACAAGTTCATACATGCAGCCAA
+AGTTTACAAATTCTGGAAACTTCACTACTGATAATTGTTTGAAATAACGATGCTCAGAAA
+TATCATTGCTCTGCGTTGTAGATGAGAAATGATTCTCTGTCACTGTATATTTTCGACCCG
+GTACATTGATCTGCTCGTTTAGGCGTCTCATGGTGCTAGCTTCAACATGACCTTCAGACC
+AACGCGATGTTTTTCCCGGATGCAATAACTTATCCATGCAATAAAGCCAATTTTCAGCAC
+CAACTTTGTGTGGGAAAAGGCCTACTGTATTCAACTTACTGATTAAGTCAGAGTAAAGCG
+CATCAATGCGACTCTTTTCTATTTCAGAAGGAAGTGCTGACTTCAATGGAATTGAAAAGG
+AAATCCAGACCTGAAAATCTCGAAGCATCAATTTATCGTGGTCCGGCTTCAAAGGTTCAT
+TCAGGCTTCGGTCATAATAATCCAGTTGATATGCAGTGAGTAAATCCCCCTTAAGCTTAT
+CATGACCTTCCATTCGACCACCACGAACGGCAGACCAGGCACTTAAGTGCAAGATCAAGT
+CTGGCAGCGCAGTTAATGAGGTCTGACAGATGGTGTCAGTTGGGAAGTCCATTTTAAATA
+ATTCAGTTAACACATCCTGCTGATTATCAAAGACACCGGGCGACGGACTACAGATAAACA
+TAAAACCGAGTCGGTTTCCGTCAAGTAGAAAATAATGTGTACCCGGAATCTGATCATACA
+CGGGAATAAATCCACCTAACTGATGACGGCTTAATTCTTTATTATAGACGTTAGCTGATC
+TCATTCGTGACCTCAGAGTTGTCTCACAATACCGTTTGACGAAACTGCTTTCGTTGCTCG
+CTGTTGCTGTTGCATATTTTCACGAGCCGCATCCTGGACTTCCAAAGGAACAATTCGTGC
+CGGATTTGATGTTGAATTTTTGCCCGCAATCCAAGTTTGCGGTTTGACATTCACATAAAC
+AAAGCCAGGCAGATTTAGCGCGTCATTATCATCCGTATATGGTGCAAAGGTGATTCTCAT
+GACGCGGCCTTGCTGAAGCACAGCAAGAGGCTCTGGTGCAACGACTGCCTGTTTGTAGCC
+TTGTGTACGGTATTGCTGTACCTGCCCAGAGCTGAGCGTAGGGTTTACTGGCTGTCCATT
+GTTAATGGAATAAAGGTCTTTACTTGCATTGATATCAGAATTTGGTGCTACATAGCGCGG
+TGCAGGCGCGGGAGTAACAACCTGAGTTGTTTTTTTCACGACTTCAGCAGACGGATGCAA
+AAAGGGGTTAACGGATGACCCATTTGAGTTGTAACTCGTTGTCATCCGTACATTAGAATT
+AACAGGATTCCCGCTGATTGGCCGTGGTCCAATTGTTGAAGTTGGCGCCCCCATTTTTAA
+TGTCTGATCATACATCACCGGGAGCTGTCCAACCGGTTTTACTTCCGTCGTTGTGTATGT
+CACTGGCTTATTAACAAGTACAGACGACTTGGGGTACTGCACTGCGCCAGGCGGCGTTAG
+TTGGGCAGGGTACTGGCTGTCATTGACAGCCGATTTCCCCTTTCCCGAATTAGCCTCTTC
+CTCCCCAAGGCCGGAGAGATCATCACGATTGTTCGTCAGTTCCATAACTTCACGCGGGCC
+TTTACAAATAACTCCTTTTTCAATTCCCGGGCATTCAGATTCTGCGCTGCCAATAGTACA
+ACCCGCCAGGTATGAAGATGAACCAACAACCAGAGCGCTGAAAATAACTTTTTTAATGTT
+CATTTCATTACCTTAATTAGTATCAAATGGGTTTTTGAGTAAGGGTTCGACACTTTGTTT
+TAACCAGTAATCAAAATCTTTCGGTATGCCATTACCAGCGAGTCCATCCTGTCTTACAAC
+TGAGGGGACTCCCTGTAATTTATAAATGCCAGCCAGCATTAATGACGCGACTAACGGTTC
+AGCCGGACATGCTTCTGCCTCTTCTTTCGTCAGGAGTCGTTTTTCTATATCGGCCTTATT
+ACCCATAAGCCAACGCAAGATATCAAGATCATTCACTTTGCCTTTTTCTTTACTGCACCA
+TAATTGACGCAATTCCTGCTTTGGCTCGCCGGGGGAGGGGATTAAAACTATATCGACCCG
+ATACTTTTCGCGTTCATCATAGAATTTCTTTATTAAATCCTGACAACCGTCACAATCAAG
+CGTAATAAATATTGCCGCTTGACGTTTGAGTTTTGGGTTTCCTAAAGGTATCGATGCCAC
+AGTTTCAAGAGGGAAAGGGGCGTCGTCTAAATTAATAAAGAACGACTTTCGTATATCCTC
+TACTGATAACACTGACTTTCTCTGAAGAATGTCCATGACGCTCCCCCCCGTGATTGTATA
+CCGTCCGTCAGTGGTCACCGCCATCAACTGAGAACGTTCATCCTGGAACAAATAAAGACC
+GCCAGTAGGGATGTAAATAGCATCTTTAGGCTTATAGCTTTTCATTTTCGCCAATACACC
+GTCTAAAGGTTTCGTTGATACTCCACCTTCTTTTGCCTTTTCCATTAACGCAGCGGCATC
+ACGATTGTTTAATACATTTTCAACAGCCAGAGTAAGCGGCGGGCACGCTGAGGTAATGGA
+AATCAGCAGAGACAAAAGTAACTTTTTCAATTATCGAATCTCACTTTCTTTAGGTTCGCC
+TGGAAGAGATTGTACCTCACCAAAACTTCCACCAAGGTCGATATAAGAGACTATTTCAAC
+ATTCTCTGGAATAGTTACTGCCAAGGATGCATCAATAACCAAATAGCCACGTTCACGGTA
+AACCTTCATTAATGCCTTAAAATAATTTTCAAAGTTAGTTTTGGATTGCTGCGAATCCAA
+CACCGGATTTTGCTTATTAAATACTTTTCTTAAAGTTTGCATATCCAGCACGGCAATCTG
+GTAGGCCGGTTGCGACATTGCTTTGAAGTTGTCATATACAAAACGTCCACCCTTGTATCC
+ATAGATCACGATAAGAACTGCCAGGCCTGCGACCATCAGATACTTAAGAGTTTTCTCGAT
+ATCGATCTCTAAAGTTACTTTTTTGGTAGTACGTATACCCCCAACCGGTTTAGCCGCGTC
+GATATTTAAGCTATCAGCAGACTCACTCTTTTTTGGTGATTCATTGTCGTTGTTATTTTC
+CATAATTATTCTCAGCGGCTTGTCAGGTTTGTAGGTATTGTCGCCCCTTTTTGAACGACA
+AAAGTAATTGGGCGCCCTGGGCTAATTTCTACAATTGGCCACTGCTGCTCAGCTATTGAC
+GTATAGTAGTCCACAAGACGGTTTAGACCCCCCTGAGCTGCACCGGCTCCGGCCAGCGCT
+CCTAATGCACCTATGTTTGGCGATTGGTATTGTGCCGTAGAGTTTGGATCTATATTAAGC
+GAAGACACCTTTGATGGACTCAGACTCCCCGCCAATGCTGACAGCCCTCCTGCAAACGCA
+GAACCTGCAATCGCATTTCCATTTCTGCTTATCAGATTCCCACGAATGCCATTTTTCCCG
+TCATTTTCACTAACCGCATAAGCTTCCACTATTACGTCGAATGCTTTTCCTTTCGAGTTG
+ACACACGATATGGAGGTTGCCCTAATGTACGCACGCTGAGATGCCAGATCCCCCACAGCA
+GAACCCAATAAATTACAATCACGCAAATCCATCGTGTAATTGTTAGGCATGATGATGTCT
+TTTTTAATGCGCATGGTAACCGGCATCGGTTCTGCTTTAGAGGACAAACTCGTTGGAGCT
+TCCAGCCCGGTAATTAGCACCCCAGTAATAATTGACGTCGCTGGAAGAAACATTTCATCC
+TTACGGGCCGCATGACGAGCTTTACTATCAACAGGTGCAGTCCCATCGCCGCGAATAGTT
+CGCGTTGGGGCCTTTTCACTTCCCGCAACAACCTCGCGCCCCTCTCTGATCCGGTTCTCT
+GATATCGGCATCACCTGAATGACACCATCAGTGCCGTTTGTCTTAATTGAACTCTGTGTT
+ATTGTCCGCATTGGACTGTTTCGGGTCGGAGATATAGGTGCGTATCCAGAACTAACCCCG
+TTCACCGCTGCATTTGGATTAAGCTGGTATGGCTTTGCTGGGGCTTGTTCATTGACGTTG
+TTGCGTGGTCCGCCTGCATCGAGATTGCGATTACCATTTCTTGAGGTCTGCATTTCAGTC
+AACTGCGTAGTGAGTTGCTGAACTTGCGAAGCAAGACTGGCTATCTGTGCTTTGTTTTCT
+TGCTGAGCCTTTTCAGCTTTGTCACGGTCAGCCTTGGCAGCGTTCTGGTCAATACGGTTC
+TGCCTTACCATTTCGTTATAAGTCTTCTGGCTTTCCTCATTACTCAGCTTGTTCATTTGT
+GAATCATCAATAAGGAATCCAGTTTGCATATCTTTTTTCTGGGTTTTCTTCTCTTTTTTA
+ACTGGTGTGGTAAAGATTGATTGACTGATGACAACAATCAATACCATCAATGCAGCACCA
+ATTACTGAGATTCTGACAGTTTTATTTTCCCAGGCCTTTTTAATGTCCATTATTAACTCC
+ATTCTTTGGTTGCTGGAATCGCTTAACTTTCAAATTCCGCTCGTATTCTGTCATCTGAGG
+CACGATATAAGGTTCACCAGCCCTAGGCCATTTATCTCCAACCGTCAAACCTGATTTATC
+AGACTCATCATGAATAAATTTCGAACCATTATTTTGCGTGCCCAATTCTTTTATTACATT
+AACTTCATGCCGACCGACAGACTCGGTTGAACTTCCAACAAATTTATCCGCAAGCGTTGG
+GTCGCTTATAACAATCGTGCTTTTCTCAAAGGCATCATCAACGATCTCACCCTGTCGGTG
+GACATCAGGAAATATATTCACGGTGCCTTTCGGGATATACTTAGTTTGGTAGTAATAACT
+GGTACCCAAAAAGACAACTAAACCAAACGAGATCACTGTAAGAAAAGTAGCTTTTCTCAT
+ATTATCTTTTAATCAGGCTTGGGCGCGTAGTAACACGAGTCTGACGCTCTTTAAATAATT
+TATCCCGCACAATATAAAGTTCGGTCTCTTCCCCGGGCTGAAGGAATGCTTTATCGAATA
+GAGCGCTTGCAACCACGCCTTCAGTTATACATTGCTGATCAGCCACTACCTGTCCGTAAG
+GCTTATCATTCTTAACAAGAACGACATCTATCAATTCCCGAGATCCCACCAGTCTTTGAC
+CTAACTTGGCGTACATATTGAAATTACATGGGGACTGCTCTGAGCTTGGTATGCGTGACA
+AGCGGTCTTCTTGTAAACTGAAACCAGAAGGAACCTCACCCAGTGCAACCGGAGTCAACA
+AATCAATGATCCGCTGTTTATGGTCATCCTGCCGAGGGTCTGAAGGAGTCAACTCTTCTG
+ATTGTGAGCGTGCCAGCATCTCATCATAATTTTGTTTATCAAGAGAAGTTTCTCGTTTTG
+CCTGCATTGTCGGGCTCAAAGAAGTTGTTACTGAAATCATGGCCCCTGGTACATCCAGTG
+GAACCAGTGTCAGGTTATAAGTAGATTCAGGAACTGAATCTTCTGAAAGCATAATTCCTA
+TAGGCTTATCTGTATTTGTTGAAATAAAAACATCCCCGCCATTAACGAAAATACTGGCTT
+CATCAGCTGGCGTTGAAGTACTTACAGATGCATTTTTAAATGAAGTCGAAATTCTGTTTT
+GCAGCCCCCGAGAAACCGGGAGTACAATATTGCCACCAGGCGGAACGTTTACTCGTTGTA
+CTTCTTTATAGCGATTACGTGCTTCAACATAAAGTTCATCTGCCTTTGAAGGGGACCCGG
+TACTTTGTGCATTTTGTTGAGGTTCTTTCCCTGCTGGTCTTCCGTAACTATCAAAATTTC
+CTGATTTAACCTGTTGCTGGTAACCAGCTAGAGTAGGGTTATTTGACAACGCCCCGGTTA
+TTTCATTGACTGCGGGAGAAGCACTGCTTGCAGGTGAAAGACTTGGCAGAGCAGTTGTCG
+GTTTTGTTGCTTGTACGGTCTCAGTCGTAGTGCCAGTGTCTTTAATTATCGCATTTTTCA
+CACCGTTCTGAAATTCATCGGCCCCGACAGGCATAACTACCGGATTATTTACTGTCGCCG
+GTAACTGATAGTCTTCAGCAAATACCACATTCGAAGTTGCCAGCAAAATCACTGCTGTAA
+TCGCGGTGCAGTGAAAAACCTTTTTTGAAGTCATAATTAGTTACCTATTGACGGCGGCGG
+ATTATCGAGTGTTGCCAGTTGTTCTTTGCCGTTGATTGTAATTTTCTTAATATTTGGTGT
+ACCTGAATACTGGTTCACATAGGCTATGCGCGGTCGTCCATTTTTCATTCCCAGGACCCA
+TTCAAACGTCCATTTGGATGATTCAGTTTTGTCCGGAACATTAATCAAACGAGTTGACTT
+TGTTCCCCAGACATAGACCATGTCATTTTTGGTGTCGTAATACATATCGATCGGCTTAAA
+TGACTGCTCTACACCACGAGCCTGCATTATATTGGTTTGCTGCTGTAGTGATTCCCGGGT
+CTTTGCCTGTAAATCCGGAGAAAGCGCATCCAATATAGTTGTTGTAACAAAACCGATGTT
+TGTTGGGTTTATGTTTCCAATCAAAGTACTAAAGAATAAGGCCCACTGCGTTTTATATGA
+TTCTGAGGCTTTATTTCCAACAACTTTGACTTCTTCCGTCATATTTGGCGGTAGCACTAT
+AGTCACAGGATCAGTGAGAAATTGATTTTTTACAACCAGAACCCCAATAATGATCATTGC
+AACTGTATTCACACGTAGGAGTTTTTCGTCGCGTTTAATCAATGCACTATATGTAATTCC
+AATTTCAGAACCTTCAATTTCTTTACTAAAGCGTGCTTTTGAATCCAGAAAACTTCCTTT
+TACTTCTTCACCTCCTTTTTGCGAAGTCTCATCCTTGTTATCAAAATCGCCATTACTGGA
+ATTTTTAATGAATGGAATTTTTAACCTGCTGAGAAGTTTCATTCTTAGCTCCATCAAGAA
+TAGAGGTTTCTGATAAATGGATCGGTAAAGTAACGACTACTAAACACCGATTTTCCAGGA
+AAAAAGCCGTACCACCACAGTTTGTGTTTTAGTTTTCCTCTAATCCCTTCCTCTGCTGCT
+TTCTTATATGCAAACCAGAACACCACCGCCACAACTACCGAAGTTATAAAGAAATCAAAA
+ATATTACCGCTCGCGATAGTCACGAATGTTATACCCAATTGCTTTGCATCCCAGAATAGA
+ATTAGTAACGGCATATTTATTCTGTATGGAAAGCGATATGTATGTGGCGGTATCTCGTAC
+TGGCTTGTCATAAAAACTCCAGAGAGGGGGAATATCCCCCTCATTGTTATTGTTCTAACA
+AATCACAGAGGAATACCAGCATCCAGGAACGAGCTGATAATTTTTTCACCGTTTGCCATA
+ACCAGCATCATTAATGCTGATACCAGCGCCAAACCAAGGTTAGGTTTTACAACGCCGAAA
+TAAGCCACCGAGAACAACATGCCGCACGCGATGATTTTACCCGGCGCACCAGTCAAGGCT
+TCGCTCATGTAGGCCCAGATATCGCCGAAGGCTCCATCATCGGAACCCGCGTACGCAAAA
+CTGCAATTTGCTAAAACCAAGAGAATAAACAAAGGCACTTTTGCATGTTTGGACTTCAAA
+AATGCAAAAGCGTTAGTTTTTCCTCTTTCAACGTTAGTATTCAATGTCAGTTCCATAATT
+ACTCCGTGTTGATTTGAATTCACGAAAACGCATTGGCATAATACTTTTTATTTTTCTTTC
+ATTTTTCTGTTAACCACCTTTTTTTTGACTTAATTGCGCTTGGTGTTTTTTTAGCCATCG
+AATGTCAGAAAAGAATCCCGCATGTAATCGGATTAAAGAAGGTGCGTTTAATTAACATGC
+CAAATAGGGAAGAGGGGCATCGTCTGCCCCTTTACCATTTTTATGGCATTCATCCAGCCA
+GATATTTAACAAAGGACACGGTAAGGATGACATTCCAAAAGTCACTTTTCCCCCATTGAT
+GCGAGTGCTTTTCACCCACAAGGATTATGTATCCCCCATTCATACAAATGCTTTTCAATG
+AAAGCCACCTCTGCGGAGCACATTCATACGAATGCTGTTCGATGAAAGCAAAACTGCGGA
+GCTCATTCATTCAAATGCTGATTGGGGAATGCGCGTCTGCGGTGCCCATTCATTCAAATG
+CTTATCGTAAAAGTCACTTCTTCTGAATCCATTCATGCAAATGCTTTTCAAACAAAGACA
+CCTATCAGGGACTCATTCATGCAAATGCTTTCCAACCAAAGGCAACTTACACTTCCCCAT
+TCATTCAAATGCTTTCCGACCAAAGGCAACTTGCATTCTCCTATTCGTGCAAATGCTTTT
+CGAACAAAGGCACCTTACACTGTCCCTTGCGAGCCCTGCTTCCCGACCAAAAGCAACTTT
+CACCGCAGCATTCATACAAATGCTTTTTTCAAAAGGCACTTTTCTGCCGCCATTGAAGCA
+AATGCTTTTATACAAAAGGCACTTTTCTGCCGCCATTGGAGCAAATGCTTTTATACAAAA
+GGCACTTTTTTGCTCTCCATTGAAACAAATGCCTTTCATCTCCTTGATATCCAATTTGAG
+TAATTTTCATTTATTATCAGAATGTTATGTTATTTCTCTAGGTCCTTCATTGGCCTGCAT
+ATTCATAAAATGCCGTCGACCAGGCTCATATCCCAGTCGTTTGCAGGCGTTAAGGAACTG
+TAAATACGCCGAGTGGCACAAGGAGTATAGGGATTTGCGTTTAAAGCCCAATACAACACG
+ATGGAGGGTAGTGTAGTTAAAGGCATATGTATGAATGAGTCTTATTAAACTAGCAAAATG
+AATAGGTTACGTTGTCTCAACTAGCAAGCATGATTTTTTCTGAAAAGCATTCGAACGAAT
+ACCAGAAGAACCCGGGTATCAGAAATGATAGGAAGTTTGGAAACAGGGAAGGGTGTTCAA
+ATCCGGAGAAACATTAAAAAGCATTTGGATGAATGCCCATACTCCTCATTACATCCAAAG
+TAACTTTTGTGCGTACTATACCCGGAGCATCAACTGTGTTTTGCCAGAGCAAGTTTTGGA
+CTTCTTTTAAAAATCTGGAACTGGATATCTCTACCTTTCTTAACCTCTTGATATTCAAGA
+TATCCTATTGATTTTAACTCCAGCATCGCCTTCCTGATGATCTGGTTTTGAGTTCGTACA
+GGAGTCGTCAACAGAAGTCGCTCACGCAAACGCTTCATGCTTACGAATAACGTACCGGCA
+GGCATCGCCTCAAAATATATGTACAGGCTTTGTGCTGCCTCTTTTTTAGCGAGAACCGAA
+AGCACCTGCAAACTAAGTAAGGTTTTATGATCATACCGGTAAAGCTCCCACATTGAGGGA
+TCGCCCACCAACTCTACGGTGTCCTTCTTAGGATCAATCACTGCTTTCTGCACAAGGTGC
+GTGACAGTAAAACGTTCAGTTTTTGAATCACGGAAAGAAATCACAACGGAAGCTAGGTTT
+GCTAGCGCCTCCTGAAATCGTGAGCGAGTTCGCTTGTTTATGTTTGTAGAACTGATACCA
+CACATTTTTGCAAACTCATTGAATGACAATGTGATTTTATCGGAAGCGAAACCATATTTG
+CTGAACGCCATTATGCAACCGAGCCAACACTTAAAATCGGTTGACATCGAAAGCTTAAGA
+CCAGTGATCCGAATGTCATCGTATCCTTCTGAACGGGCCAGCTCCATGCTCGACAACTCA
+TCAGAAGCGTCAACCTCAAAATTTCTGTATCGCTTCTCTTTAGTTCCCACCGGGGTAAAA
+ACACTTAAGCGCAGTAAAGCAATGGGTTGGACCGATTTCGAAGAGTTTGGACTCAGTTGA
+TAAGTCTTCCCTGTCTCCGTGTTGGTCACATCAAAAGGATGTGTTACCTCATTGTTATCA
+CTCATTTAAATTTACCCACCATGGTTTATCCCTTGATACATTTAGATGTGAATAGATTAT
+TCGTGCAAATGCTTTTCTCGCATTAAACTAAATGCCTTTTCAATTCAAGTAAATGCTTTT
+CTTATTCAATCAAATGCTTTTTACATGCACCTGAATGCCTGATCATGCTTATTCCATAAT
+AAAATCAGTCATTTACGGAACCTGTGATCTTTTTTGTACTCTCTTGATCTCTCTTGATCT
+AAAGAATTGATCTAACTTGTGGAAAACGTGGATAAATTCCGTCTGTTAACCAACTCTGAC
+CTAAAAAGTTCAGGTTCGGACTCTAGCCAAGTAGGGAATGCAGCCGGAAGAAGTATCAAT
+CAATCTTAAGCTTTTAAGATATATTAATTTCAAACCATTCAGATTTAAAAATTTCAAATT
+AAAATGGCCTAATTCCTTCATAACTAAAATTACAGTCAAGCACCGAATTAATTGTTTTTT
+GCTTTTGGGTTATTTGAAACTGAGTCAATTAATGTATCATGTAATAAAAAGGAGGTTATA
+TGAATCACTGCGACTATCAGATTATTGAGATCAGTCCTAAAGCACTTTTTATCGAATCTG
+GATTCAATCCACGTGAAGCGGTAATTGGTGAACTTTGTTATGAACAGGAACCAGTAAAAT
+CGACCATTGTTTCTATTAAACAAGCCTATAAAGAGGGCAGACGAGTCGATTTAATTAAGG
+TTGTTAAGAAAGACTCCAATTACGTTGTAAGGCAGGGGCATTGCCGTTACAGAGCACTAT
+CTCTTGCTCTTGCGGAAGGAGCTGATATTCAGCTCATTTCAGTAGTTGTTATGAACTATA
+AGAATAAAAGTGAAGAATACCTGGAGAACCTTGATGGGAATAGGAATAACGGTCTTAATC
+CCGTAGCCTTAGCTTATGCACTGGCAGAGGCGCTGAAGCTTGGCTCTACCGTTGAATCCC
+TTGCTATGCGCTATCAACGGTCTAGCACTGCTATTCGTAACCAGCTTAAAATCCTTGATA
+TGCCTTTAGAACTACAACGTTTAATCAGTCTAAACCTGATTAAAAAAACACTCGCGATTG
+AGATCATGTTGAAGTATTCCAATGACCATGCAAAAGTCCTTGCACATTTGGAATCGTGTT
+CTCTTTTAGTACCATCAACTGAACCAGAACCTGTTTTATCTAAGACATCAAGCGTTCAAA
+CATCATCAAACGATGAGAAACTAGATAACCCGGAAACACTCCCTGTTCATGTTATTCCTA
+AGGAAGTTAAAACAAAATCCATCACTCGCAGTTCATTGGGTATTAAACGGCTTTCTCATA
+AAAAAACTGAACGCTTAAAAACTGAATTTATCGGGCTGATTGATACTGTACGGCCAGCAC
+TAAACGACAGTAATAAACTCACCGAATTAATTTTCGACGGACAACATTCCAATTTATTTA
+CGAACATCAGCAGCACTTCCATCACAAAGACAACGGAAAGTGTAAAGATCACTCTAGATG
+AAGCAAAACTCCAGCTTTTATTAAGCCTTCTGAATGATGAAAATACTGCTATCATCATTC
+CAAAATCTAAGGTTACAGAACTGCATGAAATTCGTGACCTGTTAACAAGTGAGTAGAATG
+CTAAGGACCGTTTATGGACAAGATTGCACAGTTTACTGTAATTAATACTTATAACGATCT
+ACTTATTACAAAAGGCACACTCGATCGCAACATTGAAGAGATCAAGGCTGGAAAGCGTTT
+TGATCATTTTGAAGAAGGGCACGATCAATACGTACAGAAGGTAACTGACGCTTTACAGCT
+CGTGGAGGCTCGACTGGAGAACCTTAAAAAATGAAACATTCTCTTTTTTTTACTCAGGAT
+GGTTATTTACTGCCATCATCCGTAAAGCCTATCTACGGTAAAGATGGACACTATTACGCC
+GTTATCACCCGTGAGTGCTTTGAATGCGGAGGGACTGGAAAGATTGCGAACGCCGTCTGT
+GTGACATGCAATGGCTCCAAAACGTCTCCAGCCACAGAGGAAAAGCTGGTACTGAAAGAG
+TGCATTGAATTCCTTGAAACTATCCCGGAACTTCGCTGCAATCCCGATCTTGAAGCCTGG
+AAACGTAGGCACAGCGAGCAGTTAGCATTGCTGCAAGCTGACAATTCTAAGTTTGCAGCA
+AGCATTGCACAGCAGTTAAACAACAATCTCTTTTTAACAGTCCGTCAGTTGGAGTCTTTC
+TACTCGACATACCAGCCTGTTTCTGAAGCTTTTTCAGAAAACGCCGGTTTTCCAATTGAA
+CATTCTTTCAACATTGGTGATGTAGTTAGTTTTGATATTATTTTTACAGAAGTGCGAGCT
+GCGTTTTCAAAAGGTTCTCATAGCTATTTTTTTACTTTTACAGGCAAAAAGCAGAATGAT
+GGATTCGCGTTGACTGGTAATGTTCAGGATCACGTTTTATTGGGGCATAGCTATCATCTT
+TCGGGAAAAGTGAGAAAGATCCACTACTTTGACTCAGTGCCCTACGCATTACTGACTGTG
+TTTAAATTAACAGCATAGCCTGGTGTCTAGTGACCGGAACTCCCAAATACAGGCCGTTTT
+TACATTAGCCACCGGCTTTCTGCACTGTCGTGCCGACTCACTCACGTCAAATCTGTTGCT
+CACGCATCGGGTTTTTACCCGGTTTTACACTCCGAAAATAAGCCGATTTATTTTAAATTC
+AACACCCGTTATTAACTAATCTTTTAAATTAAAAATGATAATCTTATTAATTATATTTTT
+TAATTTTTTGTCTCTTCTTAACATATAGGTTAAGGAGATTTTGTTAAAACGGAGTGATAT
+ATGCAAAATGATCTTGGACTTGGGTTCATCCGCAAGTCAGCAAGAACGTCAGCAAAAATT
+ATTTCCCGAAAAGTTACTTTTCCGCTCGATGACTTGGATAATGCAAAGCTAACGCTAACT
+GGCCTACAGTGTCATCCATCCTGCCGTTTTCCATTTTACCAGCTGTCTATGCTTATCCAT
+AACCAACTCGCTGAGCACGGCGTCATTTCTGCCGATGAAAACGCACCGTTCACTGTATCC
+ATAAGCATTCACGAGTGGCTGAGTCGTGCCAGAGTGGCATTTATTGATTATCACGGTCTT
+CGTAATAGCGATAAGACGGTCATGATCACACGCGCTCATCTGGAAGAATTGCTTACTTAC
+TTGTCTACGACATTGGCTGTTTATGTCCCGTATTCAAAGAAGCGACTAAACTTCAGCTTC
+CTGACGTCCTTCACTCTGGTCAAAACATCGCAGTCTTATACGTTAACGTTCCCTGGGGTA
+CTTCGTCCGTTCCTGATGTTGCTGGGGGGATTAATTCAGGAATTTATGACGGAAAAATTA
+TTGAAGCGACGGAATGCCCAGTTTGTCATCTTTGATTATTTGCGAAAGTCCCGGCGCCAT
+TCACACAAAATTACCGATATCGTGAATGATCTTCAGTTGCATACAGTGAACGTACGAATC
+ATGAATGTCCTTACCCAACTTGCAGATCAGGGGTTCATATCGTTTATATGCGAAGGTAAG
+AGAGGGGAGCGATCAATTGAAGAGCTTCAGTTTATTCCCTATGCCAGCCGTGACCATTCC
+GAAGTGCTGAGCTTCGAGGAATGGATAAGCCCGATCGACTAACTACTGATCGCCGCTCAA
+CGAAGGACGGCCAGAATTTCTATTTCCTTCTTACGCGACTTTGATTGACTGCCGACAGAC
+CGATAAGCGTTGTGAGTATGAATATCAAAACCGCGTTCTTCATAGAGCTCCAGCGTAAAG
+GGAGTCATGCTGTTGGATATGGCCACTGAGGCCCCTTTACGATTAGCATCCACCAGCATA
+TCCGCCAGTTTAACATGTGCGCTCTTATCGAACGGTATACCATCATAGCTTACAAAGCTG
+GTTTTACTGATTTTGTCATATGGCGGATCGCAATATATTTGGTCACCACCACCTGCAAAC
+TCCAGCGTCTGACCAAAATCTGCGGTTTTCAATTCAACGCTCGAAAGCCTGAATGAGAGG
+TAATCAACCTTCTGGATATCCAGACTGAACTGGTATCGCTTTCCCCATGGAACTGAGAAC
+TTTCGCTTCAGGTTGTAACGACACAGACCGTTATATCCGAGTCGATTCATCGCGTAGAAA
+ATGGCTGCTCGTTGTAGCGGGGCATCATCAAAACTGGTGCTGTTAAAGGTATTACGCAGC
+ACGTAGTAATCCTCTTCTTCAAAATGCCTTTCCGCCAGCAGCTGCACTTCTCTGATGAAT
+GCCGGTTTATTTCGCTGTATGTTGCGGTACAGATTGATTAGGTCCGGGTTGCTGTCTGCT
+AGGAGAGCCTCGGTGGCAAACATGTTCAGAAACACGGCGCCACCGCCGATAAACGGTTCA
+ACCCAGCGTCGGCTCTTATCATGTGGGAAGTGCTTACTGAGGAACGGCATCAGTTTGGTT
+TTACCCCCCGCCCATTTGATGATTGGTGTATGTTTTCGCAACGAGTCTTCTCCGTTCAGC
+TTTATCGGTATGCCACACTTATGGTACCGAAAGGCGGATTGCTACCAATAAGGTATGAGC
+AGGAAAAAACGTGGCTTTTGTTAACGAGATTGTCATTTCGACACATTTTTTAATTTTTTT
+TCACTTCTCAGAAAAAAGTTTATCCTTTACGAATTAACCATAACCATCTGTTTTATTTGA
+GTTATTTTTTCTTTTTGTTCTGATCGCCAGAACAATTTTCCTCGTTCAATTCGGAATAGA
+CCCAAAAAGTACCTTTTTAACGAAAAAGTGAGATTTTTTTTTCCGGTAGTATTCACGCAC
+AGATGAAAGGTATGACAAAAAAGAATTCAACGGAGTATCTATGAGTGATCTGATGACTGA
+TTCCCAACAGCAAACTAACTCACGGGTCTTTAAATCCCCACTCGTGTCTTTTTCAACAGT
+GACCGGTTCCGGCCGATTCGTCAGTGGTATGAAGCAGTTCCGCGACGCGAACCCTGACCT
+TTGTAATGAAGTCACTGAACAGAAAGCATGGGCTATCAGCCCAACCGTGGTTCAAATCAC
+GGAAGGATTCAACTCCCGTGAGATGGGAATGGGGGAAGCTTATTACCAGTTGCCAGAAGT
+CGCCGATCATCTCAATAACATCAAGAATGCGTACATCCGGGGTGATTACGTAGACCCTAT
+CCGCGTTCTGATCAAAGACGGCATTCCGTACGTTCGCCAGGGACATTGCCGTTTAAAGGC
+TGCTTTGATGGCTGTGGCAGAAGGGCATTCTAACCTCACCATTCTTTGCATCGAGATGAA
+AGCCGATGAGATCAGCTGCGAATTGACAACGATTGACGGAAACCGTGGCCTGGCTCTTTC
+TCCTGTGGCTTTGGGTGAATCCTACCGACGTCTTCAGGCGCTGGGTGGATGGTCGCTTGA
+CCGTATTGCCGAACGTGAGGGAAAAAGTAATACCACAATTGCTGCTCTTATTCGTTTAAC
+CGGCTGCTGTGTCTATCTCAAAAAACTGATCCATGCCGATGCCATTTCCTATGTAGCAGT
+CCTGTCCCTTATCGATGAGTTCGGTGAAACGGAAGCTGTTGCGCGGATCGAAAAGATGAT
+CGCAGACCTTGAAAAGGCTGATTCAAGCGGTATCCAGATTAAGAAAACGCCACGCGGGCA
+GATCCGTGTTGTCCCTTCCGATTTTAAACCCGCACGTGTTCCACCAGTTCTCGCTACAAA
+AGCCGTCGAAGGGGTCAAACTCATTACGACGAGTCTATTGCAGAAACTCGGTGATATCGA
+GTTGCCGGAGGTGACCGACTCCAGCGAAGATGAAGAAATTACCTTTACGCTGAACCGGAG
+CATGCTGGAGATGCTCAAGAACCTGCAAAGTGAGATTACGGAATCAGAAAACAAGCAGCT
+TCGCCGGGCCGAAAATCGGCAAGCCCGATTGAAAGGGGAAAAAGTGACTTACAAAACCAA
+GAAAAACGATAAAAATGGCGGAGAACCGCAATCCGAAACACCCCCAGCACAGGCTTAAAT
+GAATTATTTCAGAGTGTGAGAAGACTACAATAAGAAGTACGATATTTTAGAGCGAGCCAC
+CCAGGCTCTCCCCCCGTTGCCCCTACTATGTAGGGGTTTTTTTGTCCTGTCTCCGGCCCG
+TTTCTTCTGATTAAAACCACATCTGTCTTTCTGACTTTCCGCAGTGTTAATTTCTCCATT
+TTCATGTCAGCCAACCTATTAGCTTTTTGTTCAAGGTTGTTATCCTGGTATCAGATAAAC
+CCTTCAAAAAGGACTGGTGCTATGTCTGCTGTTGAATCTGATTCCCTGCCAATGGGTGCC
+CCTGGGAGTTCTCTGGTTGCTTATATGCCTCATACTGGCCTCCTTATTAACGACGATAAC
+TTCCTGCCCGAAATGCGGGAAGAGCTCGATGTCATTAACAGGCAGGTCGAATCATATAAC
+GATGAGCTTAGCTTACTGAGGTCCATGTCCGCTCAGTTCCTGAAATGCGGGAATCAGAAG
+CTCTATTCATACCTCTCCGGATACAATCATCTCATTTCAGAAGCGGATGCCAGCTACGCA
+GAAAACGCGCTGCGTTCAGAATACTGGAAGAGGGTCATGGCCCTGACCGATGTACTGTCT
+GTGATGTCTGACGAAAAGAAGAAAGAATGGGATAAGCAGTTTACTGCTGACCGTTACCAC
+CTTCCTCCTCAGGAGATCCCTGATTTTACACTCGATGCTGTTGTTACCACGGTTGTCGCG
+TTGCTCAATGACCGGCATCAGTTCATTAAAGATCGTGTCTATGCCGTCTTTCAGTCATTA
+AGCCGTCAACACAAAACCAATAAAGCATTTGGCTTCTCTACTCGCATGATCACCTCCGGC
+GTATGTGAAGGCGTGAAAGACAAATGGGTAAAACTGAAGGTTGAGTTTAAAGAATCCGGC
+CTCATGCCACTTTCGGAGTTGCGGGTGATCTGTTCTTATTTCCGGGGCGAAACAGTTAAA
+CCGGTCTATGACACGAAAAAAATGGTTGAGAATATGGTTGGTCATGTTGGATTCAGAAAC
+TGGATCAGCCTGGATGGCAACAGTATTCGTTTTCGGGTCTACAAAAACGGATCGATGCAC
+ATTGATGTGCATCCTGATATCGCCGAACGGCTTAACAACATTCTTGCTGCCATCGTCCCT
+CTGGCTCTGCCTGCTGAACGCGTGGCCCATACCAAAGCGACGTTGCAGGAGTTCCCGGCA
+CTGAAACGCTGCATCGATTTTCATTCACGGATGCAGCTTGCAGAGCTGGATTTTACCCAG
+AATGAAAAGGAATGGTCCAGCTGGACATCGCTCGGCTATGCCGGTGAGAACGCTGATAAA
+ACGCGGCAGGTGAACGCGGATGTTCTGCGATTTCTCGGTGCCCGAGTGACAAGCTACCAT
+GTGACGTTTGATTATGACCCGACCGAAGTGATGCGCTTCATCGGACATATGGGCGCCATG
+CCTGATATTAAATCCCACCAGTTTTATCCGTCGTCGGCGCGACTCAGTGAATACGTCGCA
+TCCATTATTGCGGCCGGGGAGGGGGAACGGCTGCTGGAGCCCAATATTGGGCACGGGGAT
+TTGCTTCAATGTTTCCCGAAAAGTGTCAACGTAACCGGCATCGAACTGGATACACTGAAT
+TGTCTGGTCTCCCGGGCTAAAGGTTACGAGACCACGGAAGCCGATTTTCTGGCCTGGTCG
+GCGGCGAATCAGATTCAGAAATTTGATTGCGTGGTGATGAACCCTCCTTTTGCTGACAAC
+CGGGCTAAGCTGCATCTGCTGGCCGCTGCGTCTCATCTGGTTCCCGGCGGGCGTTTAGCT
+GCCGTCCTGCCTCTGTCCCTTCAGGGGATCGATAACCTGCTGGGCGAGGGGTTCAGGACC
+GAGTGGATGGATACCTTCGATAATGAGTTTGACAACACTGCCGTCTCCGTCCGCGTTCTG
+TATGCAGAACGCTTTTAACTGAAGGAAAGACTATGTCCAAAAGTTCGCCTGTCTTGCCTG
+AGGACCGTGATGATATTGAGTTTGTGATGGATGATTTCCAGCGGAGCCTGGGGAAAAGTA
+AACCAGTACGTGAAGTGCAATTTCTGGGAGAGTCACAGCAAAGTGAAGAATCTGCGAACT
+CTGCCGATTCGCCCTGGTTTGAAAGCTAATCTATTCTGATGGCGCCGTGCTGATTTAAAA
+TGACTCCCCGGCAGTGAGCGGGGAGTTATTACAACTTTTACCTGTACTGAACAACAGTTC
+CGGCTAAGGTACAAACGGGTATGAAGAGCTGGACATCAACATGATGCCAGTAAGGCAGCG
+GCACCCTGTACCCTCCCTTACGATGATGGACAATCATCGCCTGTTGCTGACATTTCACCT
+CATTTAATCGTCCTAATTTCTGCTTTTCCTATTTCTTCTCAAGAGAAAAGTTACTTTTCT
+TCCACCGTAATCAGCCCTGTTGAAGTTGCCTTAACTTTCGTTTTGTTCTGACCCGACAAC
+ATTGCTATCACGGCAACATTTAAAAGTTTTATGCCGTGAAATACCCCGGCTAACCAGCAA
+GCCCAGGTGAAAAGATTTCGTAAAATAGGGGCAAATACATCCCGGGAGTATCACATGCGT
+AAAATTCTGACAGGCTGTATCATTGCCACGGCCATAGCTTCAGTTTATCCGGCGGCGGCT
+CAGATTTTCAGCTATTCGTATACTGACACCAATCAGCTGGCAAAGACGCTTAAGCCTGCC
+ACGCAGAGCTACCTTAATCCGGCAAGCACAATGACCCTGAATCTGATCTCCGGCCTTGAC
+CGATACGAACGAGTGAGTGTGACCAGGGACAGTGACAAAAAGGTCATGTATTCCGCAGTG
+ACAGGAAAGATAAGCGTCGCAGATCGCATTGTTGCCGCAGACGGCACGGAATATTACGGA
+AAGGACTTGGCGTTACCCGCACTCGGTGAAGGGGCCTTCACCGTCATCAACGATACTCTG
+GATCTCCAGCAGGCTGTCGTCAGCTCTTCAACGTATCATTTCACAATCGACACTACAGCG
+CCAAAGTATACCAGCATCTACCCGAGCCAGAACGCAGGCTATGAAATGGTCCTGAGTGGC
+CCAGTTTGGGGGCTTGGGCGCGGAGGATCTGGCCAGTTTTCCATCTTTGCTGATGGAGTT
+GATGATGCGAATGGCATAGACAAGATCCGTCTGGTCATCAAGCGCGGAAATGGCACAGTC
+GTGTCCGACAACACACTCAGTTACGATACGGCGGCAAAACGTGCCTTTTACCCCTGGATC
+AAGGACTCGGTCACTCAACCCGGTATGCCCACCAGCGATCTCAATGAAGAATTTACCTTC
+AATTTTATCATCACAGATAAAGCCGGAAACACGCTGAATATTCCGCCGCAGCGCTTTTTA
+TTTGATGACCAGATAGGTGAATACACCCCCTTTGCGGTTCATGACTCACGCGTCAGTACG
+AGTGTGGTCCCGGGGATCTCTTCAGGGTACGTCCCGTTTGTTCGGGGGCTATCTGTACTC
+GAAAACCCATACCGTATGGTCATCCGTATCCCCCGAACCAACTGGAAGCCATACCGTAAC
+GGCGGCATCACCATTCTTAACAATTATGGCGGTGCTAAGGTTATTTCAGAAGACACGACC
+TATGTGTACGTCGAGGTGAAGCTTCCCCAGGGCGCTCTGGATATAAACTACTATCGCCCA
+GTGAACACGTACCAATGGTCCGGAGGCGATCTGACTCAATACGCCTCCTGGCTGAACTGG
+GACCCGGCTTCGGTAAAAAGTCCTGCATGGGGGAGTCCGGCGATTGAGCGACAGATGTCC
+GATGGTACCTGGTTTAACAGCGTCAATTGGAAATACTTCAAGGCTTCAGATATGCCGGTG
+AACCTGACCCAGATCCGTTTCAATGTGCAGGCAAGGCCCTACGACCAAAAAATTACTGGC
+GGTGCCACCTGCAACATCCCTGCCGGGTCAACGTCGTGTACCGTCGCCCTGACACAGGCG
+ATTACAAACGGCACCACCGGCTATCTGCATAGTGGTTATGAGGTACGTTCCACAACAGAA
+TCCACCTTCTTCATGCCTATCTGGGAAAACGTCGTCTGGCATACGCTGGGGCCTTCGGTC
+ACTGGCTATGACTACAATGATACGACCAACATCCTTCAGGTTTACATCAACCAGCCGGGA
+GACGGATCGTATTTCGATACCGTTAAACTGAGCCGGGTGTGGCTGTCCGACAAATCCCGC
+AATAACGCGGATATCAATGTGACCGGAACACTAACGGGGCGTAACACAGCAACCGGGAAT
+TATACATACGAGTTCAACCTGAAACTAATCCCGGAGGGCAGCTATAACGTGCAGCTCAAC
+GCCCAGGATTCGTTCAACAATACGGGTAGTCTGGACTATAAGACTGTGACGGTCGATAAC
+ACGCCGCCGTCCATCAGTATCAGCTACGAAACCAAACCTATCACCAGCAGTGTAACGGTG
+TATGGACTGGAGAACATTCGTATTCAGCTCGCAGATACCCTGACCAAGCCCTCTTTAACG
+CGAATGACGCTTCGCGGTGGCCCGGTATCTGATGCTGTTGAGTTGTCGTGGGTAAACCTC
+GGAAATAATCTTTATGCCCCGAATTACCCGAAGATCTTTCCTTCACTTAACGACGGCGAA
+ACTTACACGCTTACCGTGCAGGCCAAAGACGAGATGAACAACGTTAAAGAAAGCGCCGTC
+GAATTTAGTTACTTGCCGAACAACCTGGTTCGTCTGGAAAACCTTAAGACCATCTCCGTT
+AGTACCGCGCTGAAAACGTCCGATGACACACCGCTGGCGGTTCTTTATGCCAGCCAGCTG
+CGTAAGAAGGACGGGTCTATCGCAACCGGGAAACAGGACGCGATACTGACGGTGCGTAAG
+GATGCAGCCTTCGGCGTCACGGTGAATGGGGTTTCCGCAGCTCCTGGGGAGAGCAAAAAT
+GTTCAGTTGGATCTGGGTCTGGGTGACAGCCGCAGCTTCCCTATTTTTCCTTCGACTTCC
+GGCGTCGTTGGAACTTCTGAATTTATGCTGAATATAGAGGAACTGAAGTAAAAGCAGGGT
+AGGGTGGCCAAGTCCGGGCCACTTCTTTCTGTTGTTGTCGCCGCAATGATGATTATCCAG
+ATTCCGGTCACAGGGTTATTCACCGTTTTTGTGGATAACCTTCCGTCCCATCAGTAAAAC
+TGCGAATGACACAGGCCTGCCACTCGCTGCGGGTTTGCTCATAAAACTACCCGTCAGCGT
+GGATCAACATATCATTCACCCGGTATAGTGGATACCCTTCATCCGGCACGCGATTCCTGC
+GGCCAGCGCCTGTCATGGTGATGGATGCAGGGCCACCAGCTGCAAACACAGGTTCAGCCT
+GGGATTACACTATACCGGGCGACGTTAACCTAATTCGCGGCCATGATGTCAAACAGCGAC
+GGACTGGCGGGGTGCGTTTAACTACTGTGGCTATAAACAGACTGGTCTTCCCATGACTCA
+CTCTCATTTTCTAGGGGACCGGTGATCCACTTTGCGGAGCGTGAGGCTCGGGAGCGAAAA
+GCCCATGCCTCGTCAGGACCGATAGTGACGCTTTCCTCCGTCATTGAGGCGTTTTTTGGC
+ATTCGCTTTACGCCGGTACAGAATGACGGTAACTTTTCTAAGGCAGCGGATGATTACAAA
+CGCAGTCTCTCAAAACTCGTACAAAATGGAGCCCCAAAAGAATGAAAATTAGCACGGGCA
+TGATGAAAAGCAATGCACCGCTCATCATTCTGATTTGTTTAATGATCGCTTTTTCCGCCT
+ATGTTAAATCATGGTCATTGTTATACACCTTGCTGGCGGCATCAGTCTCACTCACAGTCA
+TGATCTCACTGCCTTTTATCGTTTCGCCTCTACAGCACTCAAAATTTATAGCCTTACGAA
+TTTTGCGTTTACTGGTTATTACGCTTTGGACGATTGGCCTTGTCGGCGTCTTCTTTTCAG
+TTGTTGAACGCCTTGTATGGGTTAATGCGGACAGCTATCCGGCATGGCTGGCGAAGGAAC
+TGGATTCTCCGGCCATCACGGATGGTGAAAATTTTATTAAAGCAACAGAGTCTTTTGAGA
+AGATCTGCGGGAAAAATAAAGGCTATCTTAGCGTTGTCACCAAGCATAACGGCATATTTA
+TGCGCTGCGATGATAGCTTGTCTTTCGACTCCTGGTGGAAGGGTGTCTACCGGCTTAAAA
+CCCCTGAGACTCGATGATATATTTCTTTAATGCTGCGACTGAATGGTCATCTTTTAGTTA
+AGACCTTTACGACGATATCCGCCCCTCCACTGTACCGGGTGCTGCTCCCCCATCAGCTAC
+TGGTACGCGCTTTAAGTCGCTCCACTAAACCGGGTTAAACTTTCACTTCAGCATCATCAC
+GTTAACAGGGTTGTACACCATTCGCTATCCACTATACCGGGTACGGTTTCCTAACCGTGA
+CGTCATGCTATCCGGAAAGATGACACTGCCACGATCCACTATACCGGGTAAACCTTTCCA
+CCCAGTACCACCACATTCCCGGTAACCGATTAGCAGTAGTTCTCATCCACTATACCGGGT
+ACGGATCACATTTCTGTGACTCCACTGTACCGGGTATAGATCACATTTTTGGTGAAAAAA
+CACACTAAATATTCAGTGTAAGGCTGAAGAGGAGGGGCTGCATCGTAATTTTAGGCCTGA
+CACTACCCGGTGTAGTGGAGATCCATTGTACCGGGTAAAGCAGAGTGGAAAGGAGAAGAA
+TGTCCACTATACCGGGTAACGCAGCCACCCACGCGGCAGGCAGGTGCATTATCCGGCATC
+GGTCATGGCTTCATGTTTCTCTTTAGAATATTCAGTACGTAATCGCCGTTTTCTTTGTCT
+ATGGAGTATTCCAGAAAACCGATCTCTTTAAGCTGGCCCAGCGCCTTTTTAACCGTGGCA
+TTCTGGTTACCGAGGTGTGATGACAGTTGGAGTCGTCCACGAAGCCGATCGAATCCGATG
+CGGTAAAAGGTGCTCGGCAGCTCAGCCAGATACAGGTACAGGGCCTGTGCGGACTCCTTA
+CGGGCCAGTTTTTGCAATGTCTTCAGGTAGAGTCGGGTTTTACCGTCGACGCGATACAGC
+GTATTGAGCTTCGAATTTGGCTTGATGATGATTTTTCCCGTGGAACTGTCGTAATACGTC
+GATTCCACCAGGTGCATGTTTATCGTTATCTGATCATCTGTACCGGGTATTTTCTTAATA
+AATGAAATGTTGGTCCGGGCTATACGCGTCAGCGAAGCATCAAAGCGCTCTTTCAGTTGT
+TTATCAATGCGCTTGGTATCAAACCCACAAAATTTTGCAAACTCCGGAAAATTCAGCTCC
+AGCTGACCTTCTGAATCAAGCGGCCGGTTAGACAACGCATAAACGATCCCACACCATGAT
+TTGAAATCGGTATCCATATCGAGACGCGGCCCGTAGATTTGGATCTGGCTGTAACCTTCA
+CCCTCTACAATAGATAACCTTGATAGCGGCTCAGTGGCATCGATATGATGGCTCTTCCTC
+CCCCCCTTGTCCGTAGATTTCAAAGTCGGCACAAACACACCTAGGCGGAGTAAAACTTTC
+GGTTGAATGGTCTGTTTTAATGTGGGAAAGAGTTGTATAACTTCCCCTGAATCTTTTAGG
+GACTCTTCAATGACGAGAGATAACTTGTTGTTATTACTTGACATATTGGGAGATCCGTTT
+TGTGCATAAGATCTACATCCTACCCGCTATAGTGTATCGAATCTACCCGGTATAGTGGAT
+TATGCGCCCGGTACAGTGGATGGATTACCCGACATAGTGTATTTCTCCCCCTGTACAGTG
+GATGCTGATCCGCTGAGAGGCCCGATATCACTGGGCTGCGAGGATCGTTATTCCTTTTTG
+ATCTGCTATTGATCCTCTATTGATCTTTATTATTATTCTATCCTGTTGATAACTATGCTC
+TGTCACGTATTGAATCATCACGATCAAAATGTGAGTAAATTCCGATCCGTTCTAAAAACA
+TCAGAAGCACACTTCAACCCTTACAGAAAAAGTTACTTTCGTTAAGCCGCCAGTACTACC
+GACGGCCCATTCTCATTACTTCAGCTCATCGATCTGGATCATGAACTCGGATGTACCCAC
+TTTGCCGTTTTCAGCAGGGTATATAGGTACTAAAAGGTTATCACCGAGCCCCATATCAAT
+TTTCACCTCTACAGATTCACCAAGCGCGGCCTGCACGCCGTTGAACTTAATACCGAAGGC
+AGCGTCTTTACGTACCGTTAGCGTCGCACTCTGGACGTTTTTGCAATCTCACCGTTGGAC
+TTACGCAACACGTTGGTTGACAGATAAGCAAGAGGCTCATTTAACGACGTTTTGAGTGCT
+GAACTGACGGATAAGGTTCGCAGGTTATGCAACTGCACTAGGTTATTCGGGAGGTAGCTG
+AATTTCTGGGTATAAGTTTTGCTGTTCGACTGACTGTCGGAGACCGTCACGCTAAGCGCA
+TAGTTTTCGGAAGGCTCGAATGAGGGGAACAGCCTTGGATATTCTGGCGCATAAACGTTC
+GTGCCAGCAGGTGACCACGTGAGCTCAACGTTATCTGCCGTTGGCCCTCCGGTTATCTGA
+AGACGGGTGATCCGGGGTGTTGTCAGGTTATCCGCCAGAGCTATACGGATATTCTCCAGC
+CCGTATACCACCGTACTAGGGCAGGATCATTTCAACGTAGGTATAGGTGCTGTCCGTCGC
+AATCTCGGTCGGGGAAGAATACAGGTTATAGAATAGCAGGCCGCCCTCGGCATATGACCG
+GTAGTTGGACTTTGGCACGCGATATACAAGATGAATCGGATTCTCATTAACGGTCATCCC
+AGCTGAATAGGCCGGATATCCGGAAACCCCTGGCACCACGCTGGCGGAGCTTTGCGGATC
+TCGGACCGCCCAGATAGTTATCATATCGAAAGAGCTGCAACGGAAGGGTTCGGGTGTTTC
+CTGCGTTGTCATAAATGACTACCTTGGCCGTGAAATCTTCATCCAGATTGCTGTCGGGAA
+TACCCGCGCCTTTGACCGAGTTTTTTGAGTAAGTGTGATACATCTTCTGACCAGTCACGT
+CGTACTGAACAGACTGCCGTTACTGTGATAGACATAAAACATACCTTTCTCGATGCCATT
+TACGTCCGTGACATTGGTTGAGGTAAAATCAAACTGCCCCGTGGCCTCCAGCCCCATTTT
+CCAGACGCTACCCGCAGTTGATCCATAGGCGGCGTTGCCTGTGAGGGCATTACCAGACAG
+CGGTGTGGTGTCTACCAGCCAGTTGTAGCTGTAGGTGGCTACAACGGACTGATTCAGATC
+CAGAATACTGACCTGCACAACCGACCTGCCTTCGCCAAGCACCGGTAAAGTTACTTTTTT
+TCCGTAAAATTCGCTGCCATCTCCGGCCTTCAGACGGTCGGATACGCTGGTGCGCGTAGT
+AGTGGTGTTCAGCAGTTGCGTGCCGGTGGCGCTGGTGATTTTGACATTCACATAACGGTC
+AAGACCGGCAATGAGCGTCAGGGTTACCGGTGAGGCCGGATTCAGCAACAGCCGGGTTGA
+GGGGGCGTGAACTTCAATACCATTGGTATCTGTGAAGATGGATTCATAAATTTGAGCAGA
+TGCCGGAACTGAGACTCCGAGCATAGCCATAGCCAAAGCTATAGCCTGATTTTTCATTCA
+GTATTCCCCTTTTAGTTGTTGCTATTTTAAACGTCTGCCCTGCGGATTTTTCCGTTAAGG
+GGGGGATTTCTGGGGAATTAATCAGCCTAAAACGGACATTGGGATGGGGTATTTCCCGCA
+GGCCTGCCGATTAAATCTGGCAAAAAGCACACAAACGGACGATGTTTTACTGAACAATTA
+CCCCTCTTAGCGCCCGGGCGAAGAAAACGATTCAGGTAAAATTTTCTGGCCAACCAGGAG
+AACCGAAATGAAATTTTGCCGACGTCCGTTGATTGTCGCCGTCTATACGGCACTGCTGTT
+CCCGCTTTACAGCCAGGCTCAGCTTTACAACTATTCGTATACCGACACACGCGGCACGAA
+AGTGAATGCTGAACCCACCAGAGAGTATCTCAACCCGGGCAGCGCAATTACGCTGAATCT
+GATATCTGGTCTCGACCGCTACGAGCGCGTTACCGTGACACGTTCATCCGATAATGTGCA
+GATGTTCCAGAGTGTCACCGGCCTGGTGACAGTGGCCGACAGGATCACTGCCGCTGATGG
+TAGTGAGTACTACGGCAAGTCCATGACACTGCCGGTACTGGGCGAGGGTACTTTTTCTCT
+TAAATCCGAAACACTCGACAATAAGTCGAATGTCGTGGCGACAACCAGCTACTCTTTCAG
+CATCGATATCACTCCTCCCGTTCTACCAGATCCGATGCAGTGGATCAGGGCTGGTTTTCA
+GTACGGAAGTCTGGATATTTTCGGCGACAGGACCGCAACCCAGGCCATTTCGTTATCGAA
+CGTCTCTGATGCGAGGTCAGGACTGGATAAAGCGGAGTGGTTTGCTATTGACAGCAGCGG
+TGTCCGCCGGACTGTAAATGCTCAGCTGAATGCACTCACGGGGGTGGTCCAGGCACTGGC
+GGCGGTGGCGGCAGGAAGCACGGTTGCGCCCGTCAGTCCGGCATATTACACCGTAGGTTT
+TCGGGTTTATGACAAAGCCGGGAACTGGACAGAAACATCACATCGCTCTGGTATTGATCG
+TACAATACCCAGCTACATTCAACATCAGGTGCGGAATGCGAAAACAGGCGTCTGGGAAGA
+TTATGTTCCTGGCATGACTATTTTCGAGAACCCAGTCAAATTCAGGTACAAACGCCTTAA
+ATCGGACTCAACCAATTTTAACGGGACAGACTTCGGCTGGGTCGATCAGATTACCAACTC
+CGACAATACCTATTTTTATACTGAAGCCACGGTGAGCTACCCGGAAACCTATATGTACTA
+CGAGCTTCATACTAAAGCGGGCCTTAACGTCAACCTCCAGTACAAAACGCTGAAATTTAC
+TCCGGGTAACGGCGTGGCTGAAGCCCCCCGCTATTTGTCAGGGCAGTACCATTTCAGAGA
+TGCTAATACATGGACTTCGAGTGACATCGTCAGGTTTACCGGGCCGGATTGCGTAGATTT
+GGGTCGTGTAAACGTTGAACCGCGCTCTTATGTGCAAACTGCTACTATCGTCGGCATTGG
+CAGTTGCAATGTTTCAGTGGGTGAGAGCAGTTGCCAGGTCAGCATGAATTACTGTAAGAC
+GAGCGGGAAAGGCTATGTTCCGTACCAAATTCATATCAGAGGGACCGGTTCATACGCAAA
+TCTCGGCGGACTACAGTCGCATTTCTACACCTACTGGGATATGAACGCCCCGGTTATCAA
+CAGTATCGTCTCCAGCCCACTGGATAAAACGGTGGTAATGCTGGTGACGGACAGTGACGT
+AACTAACGACTGGACCAATTATATGTGGGCCACCAATATCTTTAACCTCACACTGAAGGA
+CACCAGTAATAAAGTCTCTACCTTGTCGCCGAAAAACGTTACGGTCCTGAACTACCAGCT
+GAAACAAGTGACGTTTGATTACAGCGCGTTACCCTCCGGGAAATACACTGCAACGGGTGC
+CGCGACGGACACCTACAACAACACGGCAGAACTGACGCTATCGAATACCATCCTGCATGA
+CGTCACGCCGCCTGTTGTCGATATCAGTTTTGAGGGAAAGCAGGCTGACGGAGCACTGGT
+CAAAGGGCTGGAAAATCTGGTGATCACACTGGCCGACGATATGACAAAAGCTTCCCTGAA
+AAGCATCACGCTGAGCGGCGGACCCACTTCTGACAAAGTCAGTGTGGGCTGGTACAGCCA
+GGGAACTGATAAATACGGGCTGAACTACCCGCGTATCTTCCCCGCGACAGATGATGCGGA
+TTCCTACCAGCTTACTGCGGTTGCGGTAGATGAAGCCGGTAATACCACGACAAAGGTCAG
+CCGGTTCCGTTATGTACCGAACAACCTGATTGAATTTAACACTCTCAAAACGCTGGCCGT
+GGGTATGGGGCTGAAGACATCAGATAACCAGCCGCTGGCGTATCTGCGTACCAATAGCAT
+CCGGAAAAAAGATGGTTCGCTGATCACTGGAGCACAAACCGGCACGCTGACGGTCCGCAA
+AGATGCGGCCTTTGCGGTTAGTATGAATGGGGTGGCCGTCGTACCCGGGGATTCGAAAGA
+CATCACGATAGATTTCGGGCAGGGTGATGGCGTCCTGATCCCCATCTTCCCGGCCACCAG
+CGGCAATGTCGGTGAATCAAGCTTCATGATCGAGCTGCCGCAAATCCAGTAACTGCCTCC
+GAACCGGCCCCGTATTACGGGGCTTTTTCATAGTGTCTTAACGTAATCAGAAAGAAACGA
+AACAGGCTGATTTAGTCGCATGTCAGAACTTGCTGAGAAACCTCTTATCACGCGTGTAGC
+TCCCCTGGAGAGGATTTATTATTGCGCTTCCCGGGCAGAGGGTCTGAAGCCAGATCGCCA
+TGAAATTCGAATGCAGAGCCAGTTTTTGCTGCTTGGCGTCATCTGGTTACCACCTGCACT
+CGCTATGGCAGAACTGGAACGCCTGCTGAAGGGATATGACGCTGACCACAGCCGGTTACT
+GGAAAACGTCCTGGAGACTGCCCACCAGCAATTCCTGAAGTTCTGTGAGCCGCAGAAGAG
+AGAAGGGGGGGGCGTAGAAAACCACGTAGAATGTCCCCGACAGGACGACGCACTTCAGTG
+TTTACGGTTTATGTCAACGCGGTATGCGCTGGCCGTTGATCTGTGTGCCGCGTATGTGTG
+CAGCAGGTATGGACGTTAGTGCATTTCATGATTTACGGGCGGGCGCACCGGTTACTTCTT
+CTCTTCCAGCGAGGCAAGGCTGCTCATTTCTTTCATACCCAGACGAGCGGCTACGCCCAT
+GGCGGTGGCTTCGAGTTCGGCCTTGCCGTGTGAGACGATATTCACCATGGATTCCTGAAT
+GAGTTGGTTGGTGAAGGCCAGATTGACCGGCAAGTTATTGATTACGCTTAACAGCGACTG
+ATAGGCTTCGTCAAGCTCACGCTTTCCAGCCTTGCCTTTTACCGCCAGCAAACGCAGCAC
+TTCCAGCTTTTCATGCAATTTCGCCATTTCACGCTCAGCGGCTTCCCGGATCTGCCGTTC
+GTATCGTTCGCGTGTCGACTCAATATAGCCAATCTCCGGCTGCCGCTCATAATCGCCGCG
+AATCAGGCTGTTAATGGTACACGGCACGCCGTCACTCATTCCGAACGATGTGATCATCGT
+GGCCCACTGCGCCGGAGACAGACTGACTTGCAGGAGCGGTGAGCGGCGTCGGCCTTCCGC
+CAGTCGATGACGGATCACACCGTCGCGTTCAATCTGCTCTGATTCACTGAAGGTCATCGT
+GACTACCTCTTTATGACTGAGGTCGGAGGCATAAAGGCGCTGTCCCGTCGTGGACGTGCG
+GCTTACTGATACCAGTCCGTAAGCCGAGTGGCGGGTGATCACCTCTCCCATCTCGTTTTC
+AGTCACCGTCGGTATTACTGTGTTTTTCATCGTCATGCCCTACAAAGAATTAAAAATGAC
+AGCGTCTGGCGTAAATCAGATGCGGAACCGGAATGTCTGGGAACTTTTCCCACGTCACTC
+GCTGAATTGTACGCCTGCTGCAATTGGTGGCGAGTTTCCCACTTATAGGCCGCTTCCCGC
+ACGACACGAGCCACGATATTTTTACCCTTCATTACTCTAGTTCTCCGGCGCAGCCAGCCA
+TCTTACTCACTTCCGTGCGTATGTCAGCGAATAATGACCAGGTCAGGACCAAAACTGAAT
+CCATCGCCCATCCGGTCGGAATGCTTGGATACATATGATTTCCCGTATTTCTCCAGGTCT
+TGCAAACTGGATCTTGCCAAGTTCCATGAATACTCATGCCCCCAGATTTCCCCATCCCGA
+TCAGCAAATCGTGCGGGTTTATAGTTGGCCTTGAGCAGAGCATAGACCTGTTCGAGAGTG
+GGTAATACCGGGCTGGTCTTCCCGTCATTTGCGTTAGCGTTCGTCATTATTATGTACTCA
+GTCGAGTTATTGTGTGGGGATGGTTGCACGCGAACTGTGCCGCCTCCCGTTGTACGGAAG
+ACCTGTCGGCGCTCATGCAGCACGGAATTAGAATGCTTGCAGGCACGTTACGCTTCCTGA
+AAATCTTCTCCCATTCCGGCGCTTAGGAAGCGCGTATTCGCCGTCAAATCGGTAAATCCC
+GACCTTAGAGCATGGGCCGTCGTTTTTAACTAATTCCCAGATGAAGTCGGCACGGTCACT
+GAAATAGCCTGGACCTTCGTCAAAGGATGAAAATTCACTATGCACAACGCACAGATCGCC
+GTGCTGGCCGTTGATAAAAACGAAGTGACCTTTATGCTTTTCGCCTAGCTTCGCGTCGAG
+GTGTCCGAACGTTTGATACATTACGGAGGCTTGATGTTCTGCACCTGCCATTCCAAGTAA
+TTCGCGCAATTCACTCCTCCTTCACGCTAACGCCATAGTCGGCCAGCGCCTCTTTATCCG
+CTTTACCGCGAGCATTCCAGCGTCGAAGTACGCCATCGTTAATTTTCGGTGGTAGTGTGG
+CAACATCGCCCATCTGCCTGACTCCTGTTCTGAATAATTTTACCCGGGGCCAAAATACCG
+CTGGGCAGTTTGCCTGGTTACACCCCAGGCACCAACAGGGACGGGCTGTTATAAGAAAAG
+CGATCTACAGGAGCATCTTCAAATCTGTGGCTCGGTGCATCCGGTGTCAGAACCAGGCCG
+TCATGTGCCGCGTGAATGTGCAGCAGTGAATCACTGCCCGTATCAATGTGCAGCGTCGGT
+ACACCACGGTCGATCTCCAAAATGAGGCCGAAACACGTGGTGCCGGTTTCATTCGTCACT
+TCGCACTGAACGTTTTTATTTTCTGCTAACACCTTCACCTGGTAGGGCTGACAGTCTTCT
+TCTGGGATCTCGGCTTCACCCAGTTGCCAGTCCTGCAAAGTCAGTCTCATTTCTGAAGAG
+GTGGTATGGGATTCCGGCGTCAGCAGTGCATAAACCTGCTGGCGGAACTGCTCGCTCATC
+TCTGGAGTCAGGGCATCGGTCTCTCCGTTGAAATGCTCTTCCCAGCCATCATGATCAGCG
+TGCATCCAGACGTTTTGCGTCACCGACGGCAGTGAGGCGTCAGGGTGTACGATGAGATAC
+GGAGAGCTTTCTTTGGTTTCCAGATAGCGGACGGGCTGGCCATTCTGCAACGCGCCTTCA
+GCAGCCGTACCATCGGTCTCCGGTAGTGCGATTTCAGTGACATTACCGCCACAATGCTCT
+GCCACAACACGCCCCAGATCTTCCATCAGGGCGCGATGTTTTTCTGGGGAATCCAGCTCG
+CCCAGTAATTCTGGTTTTACCAGTAATGCAGTAATAATTGTTGCCAGTTCACGCGTCGAA
+ATTAATTTAGCCATGATAGTCCCCTTTTCTCTGATGAATTAATTCTACCAGTTCTAGTTT
+GCTGGCTAATAACCTGAAAGAAAGTTTTTTAAAATATACTCGCCCCATAAGTTAGGGGCG
+AAAAATGGGGGTAAATAATAATGACGGATTTTGAATTAATAAATCAGTAGGCGGCTTTCA
+ATAATAATCCAGGGCGTCCGTAGGTATACTGGTCAGAGGGCGAAATACTGAAATCATGAT
+TAAGGGAGTCGGTTGAAAGAACCAGACCACCGTGAGCTGCCCGGATGTGCAGAACTGAAG
+GATCAGTGTCACCCGCATTAACGTGGACAGAGGGAACTCCATTTTCAATCAAGAGTGTCA
+GGGCCATCACCAGACGGGAATCTGTATCTTTTACTGCCAGCATGGCATGACCACCGAGCG
+CCATTGTGACGTTAAACTCTGCTGAAGAATCGGTCTGCTCAACATCGTCGGTGCTGTACT
+CACACATCCGTACCACCTGTACTGGCAGATTAGCATGGCTGGTTTCTTCCTGAAGGAGCA
+GACGCTGGAGGGTGTAGCGGCGTACAGCGCACTCTTTGTGGGTCGGCAGTTCATCAGGGC
+TTTCTTCGACACTGCCTTTGATATGGTCAAGCCAGCCATCCCGGGCATGATGACGCCAGA
+CGTTATCTGTGAGGGAGTGCATGTCCTGGCCAGGAGAGACAACAATATAAGGGGTTTCAT
+CTGGAGATGTCAGGTAATCGGCCTGGCTGTCTTCATCGCGTACCTCAGGCATGATCACGC
+CGTCAATTTGACCGCCGCAATGTTTCGCCACCAGCTCGCCGATGTCCTGCATAAATGCTT
+TATGCGTGGCTGGTGTTTTTAATTCATTCAATAATGCTGGTTGCACCAGTAATCCACAAA
+CAATTTCCGCAAGCTCGGCAGGTAACAAATATTTTGGCATGGTTAGTTCTCCTCTTTTTG
+AATGAGAACACTCTAGCATTTTGACTTACTTTTCTAATAAGTTGACGACAGGTATTTTTT
+TAAAAAAATATCCCCTGAATTTATATTAAAAGCAAGACTGCATTAATCCTGGAAAAGTAA
+CTTTTCTCAGGGCTTCACGGGAGGGCATTACCCGTTATGCCCTCACCACAACTGAATCAC
+TTGAACAAAAACGTGTAGATGTCCATTTCAACAGCTACCTGAACGCCGGTGTTCTTTGAC
+CCAGGCAGTTCCCGAAAGCCTCTAACCGTCTGGGAGTGCGCCAGCGATACCTGCGGATGA
+GACGGGTTTTGTAGACGGGGACGAGCGATACAGCCGGAAGACGAACAGGCTCTGGTGTTT
+CAGCTTGCGAGTGCCGCGATCCTGAGGCACCAGTAGATGCCTGCGTTTTCCAGATTAAAG
+CGGCATCACGCCGCTGTGCCACCCCCCGGAACTGCGTTAGACCGTGCGTGTTATACATGT
+CAGCCATATGGACTGTTTCGGCAACCGGAAGTAAAGCATCATTAAGGTGACGGACAGGCA
+TTCCCTGAGCCGTATCACGCTGCTGTTATACCTTAAAACGGATAAATACTTAAGCATCGC
+TACTCAAATGAGTGAAAAGCAATCACTTTTATTGTGATGCAATAAATGCCTCATTAGGAT
+TTGTTTCGTTTTTTGTAAACAGATAATTCTGAAAATACCCTCCATTAAAATTGAATCCTG
+CATATATAAATCATCTCAATCATCCTTCCTGATTTATTTTCAAAAAACGTTCGTTCAGGT
+TATTAGCCAGCGAGGCCAATCTGTCATTATTACTTCAGACCAAACCTGAGGAATCAAAAA
+TGGATAAATACTTTGACCGTAGCGGAATGGCAATCGATAACGCTAAGATTAAGTGTATTG
+ATTCAGTAAAAGGCACCGGGGAATATATTTACCGTGTTACTTGCAATAAATGCAATGGAC
+GTGGCGAACGCAATCACTTTTATAAGAGCCGCTGTATTGCCTGTAATGCCACTGGCTATA
+GCCTGGTCACTACCCGTACCTGTTACACCCTGACTGCACTGTATCGCATATACCCAGAAG
+CTGCTCGCAAGATCTCAGCCGCTCAGGCAGCAGAGCGTCAACGTGCTGTTCAATCAAAGA
+CTTCCGCGTTCAACCTCTGGTGTCAGAACCACCAAGAACTGGTGGACGCCATCACGCAGC
+AAGACGGCGAGAACAGTTTTTTGAACAGCCTGAAGTCGACGTTATCACGCAAATTTCCAT
+TAAGTGATAAACAACTGACGGTCGCAGCCAGAATCCTCGGGATGTAATAAATTAGATTCA
+GGCTTTTTTAATTCTTATTTATTTAAACTCATTTCGTTACGGAGGAAAATATGATCCATT
+CATTTAAAGACAGGCGATTGGAAAAGTTTTTCCGTAATGGAAAATCCACGGCAGGCATTC
+CTGCTGAACTGATTAATGCGATTTCATGCAGACTGGAAACGTTAAATAATGTTAAAAACG
+AACGCGAATTGTTATCTGGTAGTTTGCGGTACGAACGCTTAAGAATGACCGCAAACCGGT
+ATTCTTCCATTCGAGTTAATTCAAAATATCGGCTATTCTTTGAGTGGAACGATGGCGTAC
+ATAACGTCCACCTGTCGGCGCATGATTATAAATCGCTCATCCATTAAGGTAAAAAATGAA
+ACTTTTCGGTATTTCATCCCGGGATTCAGGCATGGATGCGATGTTTTATATTCAGGCCAG
+CACAAAACAACAGGCAAGCTTCATATTTGACTTCCTCGCCACCCGGCTGTATGCGCATTG
+CCAGCTTATTGAACCTCTGAATGAAACCATCATTCCCTCCTTAAGTCGGACGACGCTTTC
+ATTACAGCCCTGGTCCCAGAACTCCCAGACCCGGACGAGTGAGATGCAGATGGTTACGCA
+CGGTCTGACACTCTCCGGGGCAGTGATGGTGGAGCACTCCCGCCAGATCGTCGACTTCTG
+CGATAACCTGGGTCTTCGCCTTGATGCTCCCACCGGAAAACCCGGTTGGACAGAACTGAT
+CAATGCCGACTGCGAACAACTCAATTCCCCGCGTCTATACCCCGTCCTGATCCAACCGGG
+CACTGAAGGACAGTTTCAGATTTATGTTCCAGCTCCGGCTGTCATTGACGCCGATACGGT
+CATTGCCAGTGTGATCGACGAGTGTTTTAGCGATGTTACCTCGTACTGCTTGGCCGGTAC
+GCCGTTTCCAATGACGGAGAAACCAGTGATCCGCATGGAGGCACACCTTAGTGACGCACA
+TACCCGGGTTTTTGAGCTGACATTCATCAGCTATAACCTGGCGCTCTCTGCCACGGTCTA
+TGACAAAAACCTGCGCCAGGTACTGATGTTATGTGAAGACTTTGGCGTCACTCTTCAGGG
+GCGAGCCGGTGCATCCTGTCATGCCTATATGCGTAACGAGTACCGACGTCTTGCTCATGT
+CGGCGTCTACTCACGCTCCGGGGCTGAAAATGATGTTCGCGCCTACAGCTCAGATAAAGA
+GGAAACCCTGATCCGCCAGTTGATGACTCAGGCGACAGCGGGGAGCGCGTTGATTCCGGC
+GCGGCACGGAAAGCAATTTAACGGCGTGCTGATGAATGCCAACCCGTCATCAGCCACCAC
+TGGCTTTATCTACCTGTCACCGGAATTTCCGCAAGGGCAGTTTATGATGACGGCGGAAGT
+TGTGAAATCCAGTTGCACGCCACGGGGGATCAGCTACATCGAAACGGTGGACGGATACCG
+TTTTATTGTGACGGCATATGACACGAAGGCGATGCATTCCCTGACCGAATTTCTTGCTGT
+TAACGAGGACTATTTTACCCCTTATCGCTGGGAGTAGCGCCATCGTGCCGGACGACTAAG
+GAGGGCATCCGGGAAAGGCGATTTTACGCTAGGTGCGGGGCGTTGAATCTGCGGTAAAAC
+AGACCGGTTCTATTTTAATACCCGATCACCGTAGCCAGCTGCTGCCCAGGTAGGATGTAA
+GAGCAGACCGGTATAAACGATACGGGATCAAGGCAGGGCAACCGGGAAAAGTAACTTTTC
+AGCCAGACCATGCCTTCACAGGAATTGGCGTAATTCTCCGGCGGGGCATTATCAGTTTTT
+TTAATAAACTGTCCGGGCAATGGATGCCCGGTAATTCAGCGCCCTGCCAATTTGCACATT
+AAATACCCTGATTAATAATAATTAAAATAGGCCGAGTCAGTTTAAATAATTAATATTCAT
+TCCATATGAAAGAAACTTCAATGAATGAAAAAAAATCACTTCTTACTTATTAGCCAGAGA
+GCCGACTTTGGTAAAATATCCCTACAGCAACCCAACTGACGGTCGAGGTTAATAGTATGG
+AATCCGAACAGCTCATTACTAAAATTACTCAGACACTGAAACGCCCCGACGGCTCTGAAG
+TACGTATTGTGGTGGAGCAGGCATTCGGCAGTGGCCTCACGCCTTCGCTGGGTGTATATG
+TCCTGCGTCGCCCGACCACTGCCAACAACTGGCAGTTGTGCAAAACCGCACCGCACAAGG
+ACTGGCGCACTATGTCGGTGGATGAATACCAGAAACACGGGCGTTCGGAAATGCTTCGGT
+ACGTCTCCATCGGCGAAATCCTTCGCCTGAGCGCCGCGATCGGCAAACCAATGAGCTACG
+TTGATACCTGTCCGGGTTTACAGGGCTGATGCTGTTTTTTACACGTAGCAGAACTGACAA
+ATTTAAAAATTGAAGGCGGAGAAAAATGATGATTAACTAACAGGGCATCGCTGTAAATAC
+CCCAGACTTAAGCCGACTGTATATTATCTCAGGCCGCATGATGTTTGATGATGAGGAAGA
+GGTGATGCTGGTCGAAGCGGACTCCTGCGGTGAAGCTGAAGCGGCATTCCAGCAACATAT
+CGACGAAGGTGTAGCGCACTTGGATCAGGTGCTTGTTATTTCGTCTGCGTCCCTACAATC
+ACTGTTACCAGACAGGCTCATTGCTTCCTCCCTGACACATACCGTATAACCAAATCTTTC
+CCGTCTAATAAATTCCGCCCTTGTGGCGGTTTTTTGTTTTCCCGTATATTTATTTTACAC
+CGTATCCAGAATAAAAGTTGGATTATTAAATATGGCGCTGTCTGCTCTATAAAAATTTCG
+AACATATTTCATTATTGGTTATTAGGTGCAGGTATCTGTTTTGATATTATCTATTCACAG
+ACAGCAATCACATTTAATTAAATAAGGAGTTATGCAATGGCGAACAATTACACTCAGGCA
+TCCTTCACAATTCTCTGTTCACAGGAACAGGCACAGATGGCACTGGACGCGATTGCGTAT
+GTTACAGACACGGATGTGGCGGAAGGTGAACACTTGCTGTCTAAACCGGTTTCAGAGTGT
+TCCCTCACTGAATTGCTTGTCCTGGGTATTATTCAGAACCACCCGGAGTGCGATCCGTTT
+GAGCCGACTTTTGGTCAGTCGGAGTCACCAGAAAACAATTACGAGCTGGAACTCAAAGCG
+GAAATCACCGGTAAAGGCCTGGCAATCTGCCATGATGAAAGCATTAACCTCGACCACGCT
+ATCGCGGTAACAACTGCCGTGTTGTCGGTGTTTAACCTGCCTGAGATGGTCACAATCAAT
+GCCGCTTTCGTCTGCGACCGACCACGCGAAAACGAGTTCGGCGGTGCGACTATTGTGGTG
+ACTAAAGATACACACCACTACGAAGAAGGCTTTAATTTTTCTCGCCTGATGAACGAAGCT
+CATGATGCCGGTGTTCAGTATGCGTTGGTGAAAGTGAACCAGTACAACCACGAATACACA
+TACACTCAATGCTATCTGATGAGCTGCAAAAAATCAGAATCGGCTTATGACGTTGCACGC
+CACCGCCTGGCCTCTGACGAGAGCACGCCCGACAATCCTGGTGAGGATGGAGTTATCATT
+CTCAGCGAAGAAGACAATACCAGCATGGCGCTTCACAGCGTCACTGAATTGATGCCCGTC
+GTGTACGAAAGCCTGAGCAAATTACTGCCTTCACTTGACGAATTGTGCCCCGTGACTGCC
+TGATAATCCCTGATTGCCACCGGAACAGCCGGTGGCATGGAGAGCTGAAAATGACCAATA
+AAATCCTGATTTTGTCCGCTAGCTGCATCAATGAATTTGCGAGTGATGTCCCGCAAAGCG
+TCTTCTTTTCCATTGATACGTCGCTGGCTAAGCGTATCCGTGAACTGGCGGCATACGTGA
+AAGAAAATGATTTGTACGCCGCCGAGTTTTTCTTCTATGACTGCCACTGGTCCGAAACAT
+TGGAAGAGGACATTGAGGTTCTCATGTCGCAGGCTGCGTTTATTGAAAGTGACAGCAGCG
+GACAGGAAACGATGCTCCGGGACGTAATGCCCTCCTGCCGCACGGAAACAACTTCCATCC
+GGGTCATGAAAGAATCATTTCATCTGACGGCTGTACCCCGTCATTGCGGCGATGACATGA
+TGCTCAATACGCCCCTAATTCCGTTGGCAGAGCTGGAATCAAATGCGACGGTTTTAATTA
+CCCAGCAGTATTCGTGAGAGCGTGGAGAATATAATATATTTATTGCCGCGTAATTTTATT
+TGTTCAGTGTTATTTAATTAAATTGGCATGATTTCAATTTAACTATTTTTAGCTTCACAT
+ATTGCGCTGAAGATATTAAATGGATTTAATAAATATCGCGACAATACAGCGAAAGCCAAA
+TTCAGGAAATAATATGTATATCGAAATGAAAGAAACATTCCTTGAATTACCCTCAGAAAT
+TCAATTTTCTGAGGCGGCTAACGCTGCCATTCTGACGCAGGATAAATGGGGCGATGTCTG
+GCAGACACTGAAGACCGATGCGGATCTGAATTATACTGATGCCGGTGAGCCGGTCAGTCT
+CGCTTCGCGCGTGACGACGGCAACCAGTGCCATTTATCATGCGATTACCGAAGGCTGGAC
+CATGTGCGTCGGCTACAGCGGCGGGAAAGACTCTCACTCGCTACTGCACTTGTTCCTTAT
+GGCCTTGATCCGTGCAGTACGAAACGGGTCGAACGTCAGCCAGCACCACTTCATTCAGAT
+GTCTGACACCCTGATTGAAAACCCTGAGATGCATCATCAGGCCACGCAGGTTCTCAGCCA
+GCTCAGAGCCTTTATTGCCGAACAAGAACTGCCTTTGACCGTCCTTGTGGCCCGCCCGTC
+CATGACCCAGAGCTGGGTCGGACGCATTCTGACCGGGCGTGGACTTCCAACCTGGACAAA
+TTCTTCTACGCGTCAATGCGCTACAGATCTAAAGCGTTCTCCACTGCGCCAGGCCAAAGC
+CCGTTATCTGAAAAATGCACCTGCTTCTGTCCGCAACAAAGTGTGCCTGATGCTGGGTTC
+CCGCGATGATGAGAGCGCCCGTCGGGCAGACAACATCCTAAGAATGGGCGGGCAGGCGGA
+CAGCGTCTCGCTCACGGAGCACGGCGGCGAACTGTACCCGGTGAAAGAGTGGCGGGCACA
+GGATATCTGGTCATTTCTGATGGCCTGTGGTTCTCTGGCGCGATTTCCGCTGCCAAGCTT
+TTTGCCGGACAACTTCAGCCTCGCCACGCTTTACAAAGACGCGACCGGGGAATGTATCTG
+GACGCCGGAGAAATCCACTGTCCGGTCTTCTGCCTGCGGCGCTCGCTATGGATGCTCGCT
+ATGCTGCGCCGTCGGCATTGATCACTCGATGGAAACCTTACTCCGCACTGACCCTGAGAA
+GTACGGCTACCAGGCTGGTCTCAACCGCCTTCAGCGTTTCCTGACCAAAATTCAGTACGA
+CTGGAGCCTTCGGGATTATATCGGACGCAAAGTGTTTGAGGGCGGGTATGTGCGTCTTCA
+GCCCAATGTGTTCTCGTCGTCCCTGACCGAAAGACTGTTCCATATCTGTTGCAGCCTCGA
+TTACGTGGAGGCTCAGCGGGCCGCAGCGGTGCATGAAAAGTTACTTTCAGGCGAGATCGA
+AGATACCGCGCATAACCGCCGCATGTCGGAGCCGCAGTTTCGACTGGTGCAGGAGGCTAA
+CGTGCTGCATATCGACTTTCTCTGGTCACTGCATTGCTTTAACCCGCGCCCATTTCGTGC
+CATTGAACTTTACCGCCAGGTGTGGGAAGGGGGGGCACTGGATCTTCTCGACGATGAGCC
+AGCTATGCAACCAGTACCCCGCACGCCGATGCCAGCACCACGCTGGATGAAGTTGCCGGA
+AGGCCGTATCGGGACGTCATTTGACGGGCTGTCCGATCCGTCATCCGAAATAGCCTATTT
+TGACGGTCGGGAGGATGAGCGAGCTTCCCGCAGTCTGATGAGTAGCGGGGAAGGCCTGAA
+CATCGTTGCATTCGAAGAAGAGGATGAGCTGACGGTCGATGAAGACACGGCATCCTGGAT
+TATCTGGCATGAATATGACGGATTACGCCAGCGTGTGTCTGACGGTGAGTTTACCCCTGT
+GGCGGCGGCACAGTACCTGCTTAGATACGGCGCCGTCCGAATTTCGCGGGGGAAAGGTGC
+GGTGTACCATCGACTCGCTCAACGCGGGCAGGCCTATTCACGTCTTGGCATTAACGACCA
+GACGCCGCTGCCGTCTCTGCTCGCCAGCCGCCGTTTCAAGATCCTGACCGACAGCGATTA
+TCGCTTGCTCGTAGCCCGCAAACTGCGGGGGCAGCGGCAGAAACTGCGCTTCTGGTGCTG
+TGTTGCGGCCTGTGTGGCACTGCACACCTACAACAAAACCCCTCTGGGGGGGTGGATAAC
+GACGCAACTGGAGACAGAACAACAGCTACATCTGGCCCGGACGGGAGACGAACTGAAGGC
+AAGGACTCTTGACGCTGTCCTGACCCTCTGTAACCTGCGGATTTCGTCACAGCAACCGGA
+AGAACGTCTGTATTACCGGGCCGTAAGAAAACGCTTTCTGGAGACATTAGCCGGGTGTAT
+TTCGCCGGAGCGCGAAGGAACCTTACGGGAAGTCATCTGGGAGCTGCGGATGTTATCCGG
+CCCCCAGTCTTCGAAAAAGACGGGGTTCCGGCATGTGGATGAATGCCGGGAGAGGACGGC
+GGCGTTGTTAAGGCCTCTGTTGAAACGTATGGTCCGCCTGCTGGCGTGAGCCCACCAGCA
+AAATCAGACATACGTGCAAAAAACGTGAAAATAGCCCCGTTAACGGAAAAAGCGCCGAAT
+GGTGTGTGTTGTAATGAGCGCAGGTGCGGAATTCGTTAAAGGGACTGTTTTGAAAAGTAA
+CTTTTACATCAGACTAATAATAACCATTTTTTTATAAGTAAGGACTGATATATGACCGAT
+ATTAAGGAGAAACAAAATCACTTTAGTAAATTAAAGTGTATTGCAATTTCCTGGCATTTT
+AATAAACCTACTGGGAAGGAGCACCTTCTTTTATTTGTTGCCATTGTGGCATGGATTTTC
+CCAGGACTGGTGTTTTTCAAACATTCTCTATGGGGCGGACTCCTGTTCTTTTTTTTTGTT
+GCAGGTAGTTATGCATTCCTGGCTTTTCCTCATTTTACTCATCGGAAGAAAATCTGGAAG
+GAAAGGCTTGACCAGTCGCTGAAAGAGTATCAGCCGCTTGATCTGCAAGCCTGGGCGTAT
+TTTAAGGACCGCGTTAGAGAGGAAGGCATGACTTATAAAGCCTGTGAGTCATGGATGAGT
+ACTGAGGCTAGTGCATTATATAAAAGCCCCAAACAAGAATGGTCATTTCTCGACAGCACT
+TCGGTTGGAGAAAATGATAAGTCACAACCCGATTAACAGATTCACTAATTATTGAAAACG
+AACATTTAAATTTAATCAAAAACCGCCCTGATCACAGGGCTAATTATTCAGAGGATTGCA
+CTATGCCTATTCAAGAAAAAACCACCGTTTTCGTTTTTAATGCCTGTCATGCTGACAAGG
+CTGCTGCTGCCAGCGCCAATGCACTGCACAGCCTGGAAGTTGAATACCCAATGACCCTGA
+ATGATTTGTCATTGCTGTGTGAGTCCGTCGCTAAAGCGTTGGATGTACCCGGCGGAGTGA
+AATATGAAATTACGACTGAGCCGGTAGTGGATGGGGAATACGATTAATTTTGGGGGAGAA
+CACCACTTTATCAGGTAGGGGGGCAGTTGCCCGTTCCCGTAAAACTACCGACAGTTTCGG
+TATGCCTGGCTGATAAAGAGGGATAGGCCTCTCAATGTGTGAACCATGTGTGAAAGGAGT
+CAGCACAGTGAAGACACGTGGAATGCTTTTTAATGATGAAATGGTCCGGGCAATTCTGGC
+AGATCAGAAAACACAGACGCGGCGGATTATAAAGCCTCAATATAGTTCGGATGAATGGTC
+TATAAGGCCTGCGCAAACACCGCGACATCGCGGGCACACGCATGACTGGTGGCTTCCAAC
+AGGGACCCAGCCATACTCGGCGCTTCGGCCTTGTCCGTACGGCGTAGTTGGCGACCGCAT
+TACGGTCCGTGAGGCGTTTTCATTGCTCGGGAATGAAGATGCGTGCGCGGTGGACTGGAA
+TGACAACATCGTGATGGACAGGACTGAAGCAGCCCGCATTTACCGGGCGAGCTGCGAACA
+GCGGTCGGGGGATTATGGGCTGTGGTCGATCCCTGATGAGGCCGACTGGAAGCCTCGTAC
+CGAAAATATGAAGTTCGAAGGTGCGTGGACACCTTCAATCCATATGCCTCGCTGGGCCAG
+CCGTATTGCACTGGAAATTACCGATTTGCGGGTAGAGCGGTTAAATACCATCAGCGAGGA
+AGATGCCAAAGCTGAAGGCGCACCAACAGAATGTTGTGTTCTTGGCGATAAGCACTTTCT
+TGGCTTCCGCAGCCTCTGGAAAAACACGTACGGCGAGGACAGTTGGCAGGCCAACCCGTG
+GGTCTGGGTCGTCAACTTTAAGCGTATTACCGGGGAGGTCGTATGAATAATGAGATGAGT
+TCGCTGGGTACGCAAAAGGCCGAGGGCCCTTTTGTCCTCCTGACGTTGGTCGGAGAGGGT
+TTTATCTTCGACGAGCGGCATGAAATCGTCAGAATTAATGGAAGACCAAAGCAGATTGGG
+GTAAAGCGGAATTACTTTGAATCTGATCTGGGAGAAGGTAAAGCGAAATACTGGACACTG
+GATATTAATGAGGCCCATGTATTTCCCACTCTGGATGCCGCGACCGAACAGCTATGCAAA
+TTAAGCCGACCACACCTGATTAAAATTCGAAAACTAATTCAGGAAAATAAATAAAAAATC
+GTCTTAATATGGTTGGGAGGTCCGGTGAAAGTTCTAAATAACAAAGGCGCAGTAATCGAA
+TTACCCAATTTTTCAGAACTCCTCCCGAAGGTTGAATCTGATGATGGGCGATTTTCAAAA
+CCAAAAAATAAAATATCCAAAGAGCAACGAGCCGAACTGCGTTTGAAATTTGGCGGTCGG
+TGTGCCTACTGCGGCTGTCCTTTGCCGGAAAAAGGCTGGCATGCCGATCATGTTGAACCG
+GTGAGGCGGGATTTTGAAATGGTCAGAGCCCCCGCTGGAAGTCGAGTGACACACCGGGCT
+CGAAGTACCGGTAAGGTCATGCACCCTGAACTGCATGCAATCGAAAATCTTTTTCCGGCT
+TGCGCCCCCTGCAATCTCTTTAAAGGTGCATTAAGTGTTGAAGGCATGAGGAAAGAAATA
+AGCCGCCAGGTAGAACGCGCCAGGGCATACAGCGTCAACTTCAGAACCGCAGAGCGATTT
+GGGTTAATTGAAGTCACGGAAAAGCCGGTTGTCTTCTGGTTCGAAATACATCAGGCGACG
+GCACAATAATTGAAGGCTTAATAAACGAGGAGAATACCGATGTTTTTGCACCTTGTACCA
+AAAATCCTGCATCCGATGGGAAATCTTTGCACGCTGGATTCCGTAAGCGTCCCGGAACTG
+TCGCTACGCCTGACTGGTAATGACCTTGTTGCGATGCGCCCTTATCCCAACAAGCAATAC
+CTGGTGGGGATGCTGAAGGGGCGTAGGGCGCTGAATGGATTTTTGGTCAAAAGTCCCCGT
+GCGTTTGAAGAGTTTACGATGGTGTCCGTCTGGAATATCGAAGGATTCGGCAAAATAACG
+CACACCCTGAAGACTTTTGTCGAAGATACAGATTATGACCTGGTTTCCCATGACGTGCTG
+CTGGCGCAAGGGAGCTACCGAGCACAAGCGTCTGAACAGTGTCGTGTTCACCCTGTTTAT
+AAAAACATTGCGCCGGTACACATCGAACCGAAGATGGAATCACTGCTGTCGACCGAACCC
+AATTTCGAGAACGATGTCTGTGAAACCCATTCGTGGGGGATGCTGGTGCGTTCGCGGGAT
+GAGGGGTTTAAGGCAATGACGATGCCTTCCGCACGCCTCCAGGAGTCGGTAGCGCTGCGG
+GGGGATCGCCAGCCACAATTGGAACAGGCCATCGTTATTACCGGGTGAGCGAAGGTCAGC
+CTGATGTCGTTGCTCAGGCTGACAGATATCTCAATGGATATATATGACATGACTGAAAAA
+GAGGTTCGAATGGACGAAGATAAGGTACTGAGTTTCATAAACAGCGGGGACGGCGACGCC
+GGAGATCTCCTTGATGATGCAATGCCGACTGCCGCACGTCGATTCTACCGACTGACTCAG
+TCGATGCACACATTGCTGGGGGAAGTCAGAGAGCATTTTCCTGATGCTATGTTTTATTCC
+GCTAACGGCAAGGTGAGCCTACTGCTTGGGAGTAGTCATAACAAGCATGACCAGCCAATG
+CAGGAAATGGTGGCTGTTTCTGCGACGCAACTTCATATCGAAGGTGGTGACTGGTAGGCC
+TGTCGGTGTAAATCGCGAAAACGCGAAAAATTTTAGAGACGTGTCCTATATGTCGAATAC
+ATACTGAAGGTGGATGATTCCTTTCTTCATCCTGAAGGATATTAGTTTAGTAACTCGATT
+CAGTATAATAAATTTAAACCCCATCCATTCAATTACCTGCAAGGACATGAATATGGATAA
+GTATCTGGCGCTGGACAGGGCACTCAACGAAATTCTTACCCCAGTTCCTACGCCGTTCTC
+GACATTATTTGCCGGAGAGATCAAAGCAGAGTGTCACCGGATTGCAGCCGGGGAAAGCAA
+TCCGCAACCGTCGCATATTCTTGATCGCCGTTTGCTGGCGCTGTGTAAAGCAGGTCAAAT
+TAATTATACAACCGGAAAAGGGTGGCTTAAATGAGATGGTGCCATTTTGCCACAAACTTG
+AGGAAAAACTCATGACAAGCAATCGCTGCCGTGAAATTAAAACGCCACCAGAGCATATTA
+TTGCGGATTACATTCTTCGCTTTATGAAGAACAATAAAGAGGCAAAACTCTACGAAGCCA
+TGAGCCGCCTTGAAAGTAAAATCAATCTCTTTGTAGCTGACGGTCATGATGAACTACACA
+TCCGGGCATTGTTAAATCAGGCCGCACATAGCCATACCAAAGAATCATTGAAACAGGCCT
+GTGAACGGATTTGTAATTAAATTTTTTGTGTTAAATTCTGTCTGTAGTTGCCTCGCCACA
+GGCATCCTGACCGACACTCTGCCACCGAAAGAGGGACGCAATTCTAGTGAAATTTATCCT
+TATGTTTTTCATTTTAGCCATTCTGATCTGGGGTTTTACAGGTCTGACTTTTAAAGATGC
+CATTCTGTTTACATCCGTCGGCCTGAGCATTTCGGTTGTGGCTTTGTCTGCGCTGCTTGT
+GGTAGCTCTGACATTTGTCATGGCTGCAATGTATGCGGCTCATGAACTGGGATCGCTTGG
+TAAAATGATTATCTCTCAGGTCGTTCTGGTTGGATTCTGGAACCTGATTTTTTCTGTTAT
+CCCGGACGGAAAATTAATTTCGTTTTTTGGCGTTAATGTCTGGCAATCTGGTTCATATCT
+AGTTTACTTCATGACGGTGTTGGTAGCTGTTTTCGCAGCGTATATCGCGCTCCAGAAGCA
+GCGATAGTTCTTTTCCTGATGTAGTGCATAAGCCTTCCCTTTCGGAAGGCTTTTTTCTGC
+CTTTAGCGCGGAGTGTTTTTAAACTGAGTCCGGCTGCACTCCATTTAAATTTAATTCAGT
+CCTATCTAATAAATCGCTTATTTTTTCATTCTGGGTTATTAGCCAGACGAGACAGTTTGT
+TATATTTGAATTACATCAACCGAGGGCGAGAAAAATGCAGATTAATAAAGTTATGTCTTT
+ACTTGATATTCTTACCAGCTGGCTCGAAGACAATATTAATATGGAGTCTGACCTGTTTTT
+CGATAACGATGTAGACAATACCACCTCAGAGTCCCTGTATCCCGCTGTGGAAAAAGCTAA
+CGCTGTATTGAGCAAACTGGCGTCACTGTCGTCAGAGACGATTCAGGCGACGCGTCAGCG
+TTTGCAGGACGCGGTAGAAGGCAAAGGGGAGGTTTCAACTGCTGACGTCAAAGAGTTGCT
+ACTGGCCACCCGATATCTGATGCTGACTACGGATGGAGAATAAGTTTATGACCACATTAA
+CATTCGAAATTGCTGGGGTAAAAAAGCTCCTCGAAGAACTCCGCTCGGCGGAACGGTTCA
+ATGCAACCATTGAACAGCTTTTTGAACCGTCAAATTACCCCGGCGGTACTCCTCTCAACG
+AAGAGGGCAAAACAGAAGTGGAAATGAACCAGACGGGGGGAATTTTCTGGCCATCATCCA
+AACACATTGACCCGGCCCGCCTGACTCCACAGATCCTTCTGGTAAAAGATCATGGCGTCT
+ATCTGATTACCAATGCATCTCTGGATGGAACCCCTGTTTCCCGTGATACGGTTGTCTATG
+CCCGTGGGATGAATCCGTCTGTTGATGATGAATGGTATGACGAGGCAGAGGAGGCATTGG
+GCGGCGATGATAGTTCGGTCTCTATCCCGGTGGCGTGGTTTGAACTCGCTCTTAAAAAGA
+AATTTAATGCTTTTAGTATCAAAGTATCCCCCACAAAAATCACTCTGGTGAATGGATAAC
+CACGGCACAGGCTGGCTATCTCGCTTAAACAGTCCGTCCCTGATCTATTAACAGGGCGGA
+CCTTATTTAAGACACAGGACACTAAAAATGGTTATTGACGCTGAGAATTCGGAAATGCAT
+CAAGTACGTGATTTTATCGCTGCAAACTGGAGCCTGTTTACTTCGCACATCCGCGAGAAA
+AGCATGACTGATGAACAGGCCGAAGAGGAAGCTCAACGCATTTTTGTTGTTGTCGGAGGG
+GGAAGAGTAAAGGCATTTGCCTCGCTCAGGGATTCAGCCAGGTGCTGGATATGCACGTTA
+TTTTCAGGTCTGTCCGCTAATCTGTCAGCCGGACAGCCCTCGTTATAAAAGGAACATTAT
+GGCAGACACAAAACGTCCCAGCTCCCCGCTTACACAGGCCCAAATCTATGTGCTACGTCG
+CCTGGCATCCGGAACGACATGCAAGTTTTTTTGACTTTCCCGCGCGGAACCCAATTCACT
+GATTTGTGCCCTGCATAAGAATAACTTGCCGCCGGACATATCGTCGGTGGAAAAGTTACT
+TTTCTATATTTCGATTGTGTTCTACAGCATCGTTCTTTTCCTGAGTTCAGGAAGTGACAG
+GCCATAGGCACCTCGAAAATACTCTCGTCATTGCCTCCCTGATGTGTCTTTTTTCTTGTC
+AAAATAGGCCCGTTACCGAAAAAAAATTGGCATCTGATATGGTGTAATGCTGGTGTCATT
+TCACCCCAGAAGGATAGCTCCTGATGAAATTGTTCTACAGCAAACCTGTTCGCTTTATCG
+TCATTATCTGCGTATTTCTCCTCGGCGTTGATAACCTGAGCGATATGTTCGTCGATATCT
+CCCGACCAGTATTCTACGGCGGTCTCGCTGCACTCCTGGCCGCTGCCGTCGTTATTGCCC
+GCGTTGATTACAACAAGAACGCGGAAAAAAAGGCCAGCCAGGTCCATTAACCTTTATTCA
+GCCACCTTACGGTGGCTTCTTTTTTATTAACAAGGACTGACTCATGCATAACCTTGAAAT
+CTCTACCATAGCCATTTTCAGTGCCCAGTATAAAAATATCGAAGAGGCCGAGAACGCCGG
+GGCCTTATATTCCGTCGATATCGAATATCCGATGACTCTGAATGACCTGTCGCTGCTGTG
+TGAATCTGTAGCAAAAGCCGTTGGCGTCCCTAATGGGGTGAAGTACCAGTTTGTCACCCA
+GCCGCAACCGGAAGAAAGTGATTATTAACGCGTATAGCGCCTGACTGAACAGGAGAGGAA
+TAATGGGCCATGTCGATTATACCCGGACACTCCGGGTCCAGCTTTACGATGCCAGCCGCT
+TTCATGATGGTGCGACGGCGGAACAGGCTGGTGAACTGCACACCGTCGCATTCAGTAAAC
+CCGCGATTGCCGATGATATTCAGAAAATTGTCGATACCACTGCCGAGGTGCTCGGTAAAC
+GGTACAGCGTTAACGTATTCTCGAACTGAGCGCCAGTGAAGGAGGTATTCAGAAAACCTC
+CTTCTTTCTATATTTTATATCAAAAACCGTCAAATTTAAGATGCCGCCGTTCATCGCCAT
+CTGCACCTGACCCTGACTATTAATATCCGCCAGCAGAGCATGTAACGTTCCCCACGCTTC
+GCCATTGGCTTTTTGCCAGTACATTTTCACCCGCTCTGTTTGAGGATTAACGGTATACGC
+CTGTACGGTCAGCGTCGGATCTGAGAGTGCGCAATCATCAGCGGCAACAGCAAACAAGGG
+AAGTAAGGTGAGGGCGAGAAAAATCCGTTTGAGATTCAAGGTGATCATTCCTTTACCAAT
+GAGTAGCTGATGCGCCATTATAGGTCCTGGATGTGGGATTTTTTTATCCTGTTAGCGACC
+TTGACGAGTACCAAAAAGCGCGAAGTTCAACTATTGTTCTGTGGTGTTCTGTTGCGTGTT
+GACGGCAAAATTTTGCTGGCGTAACATGCGCGCACGATCACTCTAAGAGGACATTCGCCT
+TGGACACACCCAGTAGATACTGGCTCACTATCCTGTCATCCAGGATCAACTCCTAAGGCT
+ATCCCTTTTTGCTGATAGCCTTAGCGGTTGTCAGCGACCTCAATTTTTCCCGTCGCGCTG
+AGTCAGGCTGTTTAATGGTCTGAAACCCAATTTGTTTCTGTGTGCCCACCGAACTGTCCG
+ATATTTTAAGCATTGGGAGTCCCGGTCATGCTGAGCGCATTTCAACTGGAAAATAACCGA
+CTGACCCGGCTGGAAGTCGAAGAGTCACAACCCCTTGTAAATGCAGTATGGATTGATCTT
+GTCGAACCGGACGACGACGAGCGACTGCGCTTACAATCTGAACTTGGCCAGAGCCTGGCA
+ACCCGCCCGGAACTGGAAGACATCGAAGCATCGGCACGTTTCTTTGAAGACGACGACGGC
+CTGCATATTCACTCCTTCTTCTTCTTTGAAGATGCGGAAGATCACGCCGGTAACTCCACT
+GTGGCATTTACCATCCGTGATGGTCGTCTGTTTACTCTGCGTGAGCGTGAACTGCCCGCT
+TTTCGTCTGTATCGTATGCGTGCCCGTAGCCAGTCGATGGTAGACGGTAACGCCTACGAG
+TTGCTGCTGGATCTGTTCGAAACCAAAATCGAACAGTTGGCAGATGAAATTGAAAATATC
+TATAGCGACCTGGAGCAGTTGAGCCGGGTGATTATGGAAGGGCATCAGGGCGATGAGTAC
+GACGAGGCGCTCTCCACTCTGGCGGAACTGGAAGATATCGGCTGGAAAGTTCGCCTGTGT
+CTGATGGATACCCAGCGCGCGCTCAACTTCCTGGTGCGTAAAGCGCGTTTACCGGGTGGG
+CAACTGGAGCAGGCGCGTGAAATCCTGCGAGATATCGAATCCCTGCTGCCGCATAACGAA
+TCCCTGTTCCAGAAGGTGAACTTCCTGATGCAGGCGGCAATGGGTTTTATCAACATCGAG
+CAGAACCGCATCATCAAAATCTTCTCGGTGGTATCCGTGGTATTCCTGCCGCCGACGCTC
+GTTGCTTCCAGCTATGGCATGAACTTTGAGTTTATGCCAGAACTGAAGTGGAGGTTCGGC
+TACCCTGCCGCGATTATCTTTATGATCCTCGCGGGCCTGGCACCGTATCTGTACTTTAAG
+CGGAAGAACTGGTTGTAATATGAGTGCCGGATAAAGCTATTTTTTTATCCGGCTTATTTC
+TAAAAATTGTCTTTTTTAAAGTCATGCGGATTGAAAACTCTCTCTATTTTATTTTCGGTG
+ATGCTGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGGCTTCT
+GTTTCTATCAGCT
+>NODE_24_length_52213_cov_42.1417':NODE_26_length_130_cov_84.9811';
+AGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCATCATACACTAAATCAGT
+AAGTTGGCAGCATCACCGAAAATAAAATAGAGAGAGTTTTCAATCCGCATGACTTTAAAA
+AAGACAATTTTTAGAAATAAGCCGGATAAAAAAATAGCTTTATCCGGCACTCATATTACA
+ACCAGTTCTTCCGCTTAAAGTACAGATACGGTGCCAGGCCCGCGAGGATCATAAAGATAA
+TCGCGGCAGGGTAGCCGAACCTCCACTTCAGTTCTGGCATAAACTCAAAGTTCATGCCAT
+AGCTGGAAGCAACGAGCGTCGGCGGCAGGAATACCACGGATACCACCGAGAAGATTTTGA
+TGATGCGGTTCTGCTCGATGTTGATAAAACCCATTGCCGCCTGCATCAGGAAGTTCACCT
+TCTGGAACAGGGATTCGTTATGCGGCAGCAGGGATTCGATATCTCGCAGGATTTCACGCG
+CCTGCTCCAGTTGCCCACCCGGTAAACGCGCTTTACGCACCAGGAAGTTGAGCGCGCGCT
+GGGTATCCATCAGACACAGGCGAACTTTCCAGCCGATATCTTCCAGTTCCGCCAGAGTGG
+AGAGCGCCTCGTCGTACTCATCGCCCTGATGCCCTTCCATAATCACCCGGCTCAACTGCT
+CCAGGTCGCTATAGATATTTTCAATTTCATCTGCCAACTGTTCGATTTTGGTTTCGAACA
+GATCCAGCAGCAACTCGTAGGCGTTACCGTCTACCATCGACTGGCTACGGGCACGCATAC
+GATACAGACGAAAAGCGGGCAGTTCACGCTCACGCAGAGTAAACAGACGACCATCACGGA
+TGGTAAATGCCACAGTGGAGTTACCGGCGTGATCTTCCGCATCTTCAAAGAAGAAGAAGG
+AGTGAATATGCAGGCCGTCGTCGTCTTCAAAGAAACGTGCCGATGCTTCGATGTCTTCCA
+GTTCCGGGCGGGTTGCCAGGCTCTGGCCAAGTTCAGATTGTAAGCGCAGTCGCTCGTCGT
+CGTCCGGTTCGACAAGATCAATCCATACTGCATTTACAAGGGGTTGTGACTCTTCGACTT
+CCAGCCGGGTCAGTCGGTTATTTTCCAGTTGAAATGCGCTCAGCATGACCGGGACTCCCA
+ATGCTTAAAATATCGGACAGTTCGGTGGGCACACAGAAACAAATTGGGTTTCAGACCATT
+AAACAGCCTGACTCAGCGCGACGGGAAAAATTGAGGTCGCTGACAACCGCTAAGGCTATC
+AGCAAAAAGGGATAGCCTTAGGAGTTGATCCTGGATGACAGGATAGTGAGCCAGTATCTA
+CTGGGTGTGTCCAAGGCGAATGTCCTCTTAGAGTGATCGTGCGCGCATGTTACGCCAGCA
+AAATTTTGCCGTCAACACGCAACAGAACACCACAGAACAATAGTTGAACTTCGCGCTTTT
+TGGTACTCGTCAAGGTCGCTAACAGGATAAAAAAATCCCACATCCAGGACCTATAATGGC
+GCATCAGCTACTCATTGGTAAAGGAATGATCACCTTGAATCTCAAACGGATTTTTCTCGC
+CCTCACCTTACTTCCCTTGTTTGCTGTTGCCGCTGATGATTGCGCACTCTCAGATCCGAC
+GCTGACCGTACAGGCGTATACCGTTAATCCTCAAACAGAGCGGGTGAAAATGTACTGGCA
+AAAAGCCAATGGCGAAGCGTGGGGAACGTTACATGCTCTGCTGGCGGATATTAATAGTCA
+GGGTCAGGTGCAGATGGCGATGAACGGCGGCATCTTAAATTTGACGGTTTTTGATATAAA
+ATATAGAAAGAAGGAGGTTTTCTGAATACCTCCTTCACTGGCGCTCAGTTCGAGAATACG
+TTAACGCTGTACCGTTTACCGAGCACCTCGGCAGTGGTATCGACAATTTTCTGAATATCA
+TCGGCAATCGCGGGTTTACTGAATGCGACGGTGTGCAGTTCACCAGCCTGTTCCGCCGTC
+GCACCATCATGAAAGCGGCTGGCATCGTAAAGCTGGACCCGGAGTGTCCGGGTATAATCG
+ACATGGCCCATTATTCCTCTCCTGTTCAGTCAGGCGCTATACGCGTTAATAATCACTTTC
+TTCCGGTTGCGGCTGGGTGACAAACTGGTACTTCACCCCATTAGGGACGCCAACGGCTTT
+TGCTACAGATTCACACAGCAGCGACAGGTCATTCAGAGTCATCGGATATTCGATATCGAC
+GGAATATAAGGCCCCGGCGTTCTCGGCCTCTTCGATATTTTTATACTGGGCACTGAAAAT
+GGCTATGGTAGAGATTTCAAGGTTATGCATGAGTCAGTCCTTGTTAATAAAAAAGAAGCC
+ACCGTAAGGTGGCTGAATAAAGGTTAATGGACCTGGCTGGCCTTTTTTTCCGCGTTCTTG
+TTGTAATCAACGCGGGCAATAACGACGGCAGCGGCCAGGAGTGCAGCGAGACCGCCGTAG
+AATACTGGTCGGGAGATATCGACGAACATATCGCTCAGGTTATCAACGCCGAGGAGAAAT
+ACGCAGATAATGACGATAAAGCGAACAGGTTTGCTGTAGAACAATTTCATCAGGAGCTAT
+CCTTCTGGGGTGAAATGACACCAGCATTACACCATATCAGATGCCAATTTTTTTTCGGTA
+ACGGGCCTATTTTGACAAGAAAAAAGACACATCAGGGAGGCAATGACGAGAGTATTTTCG
+AGGTGCCTATGGCCTGTCACTTCCTGAACTCAGGAAAAGAACGATGCTGTAGAACACAAT
+CGAAATATAGAAAAGTAACTTTTCCACCGACGATATGTCCGGCGGCAAGTTATTCTTATG
+CAGGGCACAAATCAGTGAATTGGGTTCCGCGCGGGAAAGTCAAAAAAACTTGCATGTCGT
+TCCGGATGCCAGGCGACGTAGCACATAGATTTGGGCCTGTGTAAGCGGGGAGCTGGGACG
+TTTTGTGTCTGCCATAATGTTCCTTTTATAACGAGGGCTGTCCGGCTGACAGATTAGCGG
+ACAGACCTGAAAATAACGTGCATATCCAGCACCTGGCTGAATCCCTGAGCGAGGCAAATG
+CCTTTACTCTTCCCCCTCCGACAACAACAAAAATGCGTTGAGCTTCCTCTTCGGCCTGTT
+CATCAGTCATGCTTTTCTCGCGGATGTGCGAAGTAAACAGGCTCCAGTTTGCAGCGATAA
+AATCACGTACTTGATGCATTTCCGAATTCTCAGCGTCAATAACCATTTTTAGTGTCCTGT
+GTCTTAAATAAGGTCCGCCCTGTTAATAGATCAGGGACGGACTGTTTAAGCGAGATAGCC
+AGCCTGTGCCGTGGTTATCCATTCACCAGAGTGATTTTTGTGGGGGATACTTTGATACTA
+AAAGCATTAAATTTCTTTTTAAGAGCGAGTTCAAACCACGCCACCGGGATAGAGACCGAA
+CTATCATCGCCGCCCAATGCCTCCTCTGCCTCGTCATACCATTCATCATCAACAGACGGA
+TTCATCCCACGGGCATAGACAACCGTATCACGGGAAACAGGGGTTCCATCCAGAGATGCA
+TTGGTAATCAGATAGACGCCATGATCTTTTACCAGAAGGATCTGTGGAGTCAGGCGGGCC
+GGGTCAATGTGTTTGGATGATGGCCAGAAAATTCCCCCCGTCTGGTTCATTTCCACTTCT
+GTTTTGCCCTCTTCGTTGAGAGGAGTACCGCCGGGGTAATTTGACGGTTCAAAAAGCTGT
+TCAATGGTTGCATTGAACCGTTCCGCCGAGCGGAGTTCTTCGAGGAGCTTTTTTACCCCA
+GCAATTTCGAATGTTAATGTGGTCATAAACTTATTCTCCATCCGTAGTCAGCATCAGATA
+TCGGGTGGCCAGTAGCAACTCTTTGACGTCAGCAGTTGAAACCTCCCCTTTGCCTTCTAC
+CGCGTCCTGCAAACGCTGACGCGTCGCCTGAATCGTCTCTGACGACAGTGACGCCAGTTT
+GCTCAATACAGCGTTAGCTTTTTCCACAGCGGGATACAGGGACTCTGAGGTGGTATTGTC
+TACATCGTTATCGAAAAACAGGTCAGACTCCATATTAATATTGTCTTCGAGCCAGCTGGT
+AAGAATATCAAGTAAAGACATAACTTTATTAATCTGCATTTTTCTCGCCCTCGGTTGATG
+TAATTCAAATATAACAAACTGTCTCGTCTGGCTAATAACCCAGAATGAAAAAATAAGCGA
+TTTATTAGATAGGACTGAATTAAATTTAAATGGAGTGCAGCCGGACTCAGTTTAAAAACA
+CTCCGCGCTAAAGGCAGAAAAAAGCCTTCCGAAAGGGAAGGCTTATGCACTACATCAGGA
+AAAGAACTATCGCTGCTTCTGGAGCGCGATATACGCTGCGAAAACAGCTACCAACACCGT
+CATGAAGTAAACTAGATATGAACCAGATTGCCAGACATTAACGCCAAAAAACGAAATTAA
+TTTTCCGTCCGGGATAACAGAAAAAATCAGGTTCCAGAATCCAACCAGAACGACCTGAGA
+GATAATCATTTTACCAAGCGATCCCAGTTCATGAGCCGCATACATTGCAGCCATGACAAA
+TGTCAGAGCTACCACAAGCAGCGCAGACAAAGCCACAACCGAAATGCTCAGGCCGACGGA
+TGTAAACAGAATGGCATCTTTAAAAGTCAGACCTGTAAAACCCCAGATCAGAATGGCTAA
+AATGAAAAACATAAGGATAAATTTCACTAGAATTGCGTCCCTCTTTCGGTGGCAGAGTGT
+CGGTCAGGATGCCTGTGGCGAGGCAACTACAGACAGAATTTAACACAAAAAATTTAATTA
+CAAATCCGTTCACAGGCCTGTTTCAATGATTCTTTGGTATGGCTATGTGCGGCCTGATTT
+AACAATGCCCGGATGTGTAGTTCATCATGACCGTCAGCTACAAAGAGATTGATTTTACTT
+TCAAGGCGGCTCATGGCTTCGTAGAGTTTTGCCTCTTTATTGTTCTTCATAAAGCGAAGA
+ATGTAATCCGCAATAATATGCTCTGGTGGCGTTTTAATTTCACGGCAGCGATTGCTTGTC
+ATGAGTTTTTCCTCAAGTTTGTGGCAAAATGGCACCATCTCATTTAAGCCACCCTTTTCC
+GGTTGTATAATTAATTTGACCTGCTTTACACAGCGCCAGCAAACGGCGATCAAGAATATG
+CGACGGTTGCGGATTGCTTTCCCCGGCTGCAATCCGGTGACACTCTGCTTTGATCTCTCC
+GGCAAATAATGTCGAGAACGGCGTAGGAACTGGGGTAAGAATTTCGTTGAGTGCCCTGTC
+CAGCGCCAGATACTTATCCATATTCATGTCCTTGCAGGTAATTGAATGGATGGGGTTTAA
+ATTTATTATACTGAATCGAGTTACTAAACTAATATCCTTCAGGATGAAGAAAGGAATCAT
+CCACCTTCAGTATGTATTCGACATATAGGACACGTCTCTAAAATTTTTCGCGTTTTCGCG
+ATTTACACCGACAGGCCTACCAGTCACCACCTTCGATATGAAGTTGCGTCGCAGAAACAG
+CCACCATTTCCTGCATTGGCTGGTCATGCTTGTTATGACTACTCCCAAGCAGTAGGCTCA
+CCTTGCCGTTAGCGGAATAAAACATAGCATCAGGAAAATGCTCTCTGACTTCCCCCAGCA
+ATGTGTGCATCGACTGAGTCAGTCGGTAGAATCGACGTGCGGCAGTCGGCATTGCATCAT
+CAAGGAGATCTCCGGCGTCGCCGTCCCCGCTGTTTATGAAACTCAGTACCTTATCTTCGT
+CCATTCGAACCTCTTTTTCAGTCATGTCATATATATCCATTGAGATATCTGTCAGCCTGA
+GCAACGACATCAGGCTGACCTTCGCTCACCCGGTAATAACGATGGCCTGTTCCAATTGTG
+GCTGGCGATCCCCCCGCAGCGCTACCGACTCCTGGAGGCGTGCGGAAGGCATCGTCATTG
+CCTTAAACCCCTCATCCCGCGAACGCACCAGCATCCCCCACGAATGGGTTTCACAGACAT
+CGTTCTCGAAATTGGGTTCGGTCGACAGCAGTGATTCCATCTTCGGTTCGATGTGTACCG
+GCGCAATGTTTTTATAAACAGGGTGAACACGACACTGTTCAGACGCTTGTGCTCGGTAGC
+TCCCTTGCGCCAGCAGCACGTCATGGGAAACCAGGTCATAATCTGTATCTTCGACAAAAG
+TCTTCAGGGTGTGCGTTATTTTGCCGAATCCTTCGATATTCCAGACGGACACCATCGTAA
+ACTCTTCAAACGCACGGGGACTTTTGACCAAAAATCCATTCAGCGCCCTACGCCCCTTCA
+GCATCCCCACCAGGTATTGCTTGTTGGGATAAGGGCGCATCGCAACAAGGTCATTACCAG
+TCAGGCGTAGCGACAGTTCCGGGACGCTTACGGAATCCAGCGTGCAAAGATTTCCCATCG
+GATGCAGGATTTTTGGTACAAGGTGCAAAAACATCGGTATTCTCCTCGTTTATTAAGCCT
+TCAATTATTGTGCCGTCGCCTGATGTATTTCGAACCAGAAGACAACCGGCTTTTCCGTGA
+CTTCAATTAACCCAAATCGCTCTGCGGTTCTGAAGTTGACGCTGTATGCCCTGGCGCGTT
+CTACCTGGCGGCTTATTTCTTTCCTCATGCCTTCAACACTTAATGCACCTTTAAAGAGAT
+TGCAGGGGGCGCAAGCCGGAAAAAGATTTTCGATTGCATGCAGTTCAGGGTGCATGACCT
+TACCGGTACTTCGAGCCCGGTGTGTCACTCGACTTCCAGCGGGGGCTCTGACCATTTCAA
+AATCCCGCCTCACCGGTTCAACATGATCGGCATGCCAGCCTTTTTCCGGCAAAGGACAGC
+CGCAGTAGGCACACCGACCGCCAAATTTCAAACGCAGTTCGGCTCGTTGCTCTTTGGATA
+TTTTATTTTTTGGTTTTGAAAATCGCCCATCATCAGATTCAACCTTCGGGAGGAGTTCTG
+AAAAATTGGGTAATTCGATTACTGCGCCTTTGTTATTTAGAACTTTCACCGGACCTCCCA
+ACCATATTAAGACGATTTTTTATTTATTTTCCTGAATTAGTTTTCGAATTTTAATCAGGT
+GTGGTCGGCTTAATTTGCATAGCTGTTCGGTCGCGGCATCCAGAGTGGGAAATACATGGG
+CCTCATTAATATCCAGTGTCCAGTATTTCGCTTTACCTTCTCCCAGATCAGATTCAAAGT
+AATTCCGCTTTACCCCAATCTGCTTTGGTCTTCCATTAATTCTGACGATTTCATGCCGCT
+CGTCGAAGATAAAACCCTCTCCGACCAACGTCAGGAGGACAAAAGGGCCCTCGGCCTTTT
+GCGTACCCAGCGAACTCATCTCATTATTCATACGACCTCCCCGGTAATACGCTTAAAGTT
+GACGACCCAGACCCACGGGTTGGCCTGCCAACTGTCCTCGCCGTACGTGTTTTTCCAGAG
+GCTGCGGAAGCCAAGAAAGTGCTTATCGCCAAGAACACAACATTCTGTTGGTGCGCCTTC
+AGCTTTGGCATCTTCCTCGCTGATGGTATTTAACCGCTCTACCCGCAAATCGGTAATTTC
+CAGTGCAATACGGCTGGCCCAGCGAGGCATATGGATTGAAGGTGTCCACGCACCTTCGAA
+CTTCATATTTTCGGTACGAGGCTTCCAGTCGGCCTCATCAGGGATCGACCACAGCCCATA
+ATCCCCCGACCGCTGTTCGCAGCTCGCCCGGTAAATGCGGGCTGCTTCAGTCCTGTCCAT
+CACGATGTTGTCATTCCAGTCCACCGCGCACGCATCTTCATTCCCGAGCAATGAAAACGC
+CTCACGGACCGTAATGCGGTCGCCAACTACGCCGTACGGACAAGGCCGAAGCGCCGAGTA
+TGGCTGGGTCCCTGTTGGAAGCCACCAGTCATGCGTGTGCCCGCGATGTCGCGGTGTTTG
+CGCAGGCCTTATAGACCATTCATCCGAACTATATTGAGGCTTTATAATCCGCCGCGTCTG
+TGTTTTCTGATCTGCCAGAATTGCCCGGACCATTTCATCATTAAAAAGCATTCCACGTGT
+CTTCACTGTGCTGACTCCTTTCACACATGGTTCACACATTGAGAGGCCTATCCCTCTTTA
+TCAGCCAGGCATACCGAAACTGTCGGTAGTTTTACGGGAACGGGCAACTGCCCCCCTACC
+TGATAAAGTGGTGTTCTCCCCCAAAATTAATCGTATTCCCCATCCACTACCGGCTCAGTC
+GTAATTTCATATTTCACTCCGCCGGGTACATCCAACGCTTTAGCGACGGACTCACACAGC
+AATGACAAATCATTCAGGGTCATTGGGTATTCAACTTCCAGGCTGTGCAGTGCATTGGCG
+CTGGCAGCAGCAGCCTTGTCAGCATGACAGGCATTAAAAACGAAAACGGTGGTTTTTTCT
+TGAATAGGCATAGTGCAATCCTCTGAATAATTAGCCCTGTGATCAGGGCGGTTTTTGATT
+AAATTTAAATGTTCGTTTTCAATAATTAGTGAATCTGTTAATCGGGTTGTGACTTATCAT
+TTTCTCCAACCGAAGTGCTGTCGAGAAATGACCATTCTTGTTTGGGGCTTTTATATAATG
+CACTAGCCTCAGTACTCATCCATGACTCACAGGCTTTATAAGTCATGCCTTCCTCTCTAA
+CGCGGTCCTTAAAATACGCCCAGGCTTGCAGATCAAGCGGCTGATACTCTTTCAGCGACT
+GGTCAAGCCTTTCCTTCCAGATTTTCTTCCGATGAGTAAAATGAGGAAAAGCCAGGAATG
+CATAACTACCTGCAACAAAAAAAAAGAACAGGAGTCCGCCCCATAGAGAATGTTTGAAAA
+ACACCAGTCCTGGGAAAATCCATGCCACAATGGCAACAAATAAAAGAAGGTGCTCCTTCC
+CAGTAGGTTTATTAAAATGCCAGGAAATTGCAATACACTTTAATTTACTAAAGTGATTTT
+GTTTCTCCTTAATATCGGTCATATATCAGTCCTTACTTATAAAAAAATGGTTATTATTAG
+TCTGATGTAAAAGTTACTTTTCAAAACAGTCCCTTTAACGAATTCCGCACCTGCGCTCAT
+TACAACACACACCATTCGGCGCTTTTTCCGTTAACGGGGCTATTTTCACGTTTTTTGCAC
+GTATGTCTGATTTTGCTGGTGGGCTCACGCCAGCAGGCGGACCATACGTTTCAACAGAGG
+CCTTAACAACGCCGCCGTCCTCTCCCGGCATTCATCCACATGCCGGAACCCCGTCTTTTT
+CGAAGACTGGGGGCCGGATAACATCCGCAGCTCCCAGATGACTTCCCGTAAGGTTCCTTC
+GCGCTCCGGCGAAATACACCCGGCTAATGTCTCCAGAAAGCGTTTTCTTACGGCCCGGTA
+ATACAGACGTTCTTCCGGTTGCTGTGACGAAATCCGCAGGTTACAGAGGGTCAGGACAGC
+GTCAAGAGTCCTTGCCTTCAGTTCGTCTCCCGTCCGGGCCAGATGTAGCTGTTGTTCTGT
+CTCCAGTTGCGTCGTTATCCACCCCCCCAGAGGGGTTTTGTTGTAGGTGTGCAGTGCCAC
+ACAGGCCGCAACACAGCACCAGAAGCGCAGTTTCTGCCGCTGCCCCCGCAGTTTGCGGGC
+TACGAGCAAGCGATAATCGCTGTCGGTCAGGATCTTGAAACGGCGGCTGGCGAGCAGAGA
+CGGCAGCGGCGTCTGGTCGTTAATGCCAAGACGTGAATAGGCCTGCCCGCGTTGAGCGAG
+TCGATGGTACACCGCACCTTTCCCCCGCGAAATTCGGACGGCGCCGTATCTAAGCAGGTA
+CTGTGCCGCCGCCACAGGGGTAAACTCACCGTCAGACACACGCTGGCGTAATCCGTCATA
+TTCATGCCAGATAATCCAGGATGCCGTGTCTTCATCGACCGTCAGCTCATCCTCTTCTTC
+GAATGCAACGATGTTCAGGCCTTCCCCGCTACTCATCAGACTGCGGGAAGCTCGCTCATC
+CTCCCGACCGTCAAAATAGGCTATTTCGGATGACGGATCGGACAGCCCGTCAAATGACGT
+CCCGATACGGCCTTCCGGCAACTTCATCCAGCGTGGTGCTGGCATCGGCGTGCGGGGTAC
+TGGTTGCATAGCTGGCTCATCGTCGAGAAGATCCAGTGCCCCCCCTTCCCACACCTGGCG
+GTAAAGTTCAATGGCACGAAATGGGCGCGGGTTAAAGCAATGCAGTGACCAGAGAAAGTC
+GATATGCAGCACGTTAGCCTCCTGCACCAGTCGAAACTGCGGCTCCGACATGCGGCGGTT
+ATGCGCGGTATCTTCGATCTCGCCTGAAAGTAACTTTTCATGCACCGCTGCGGCCCGCTG
+AGCCTCCACGTAATCGAGGCTGCAACAGATATGGAACAGTCTTTCGGTCAGGGACGACGA
+GAACACATTGGGCTGAAGACGCACATACCCGCCCTCAAACACTTTGCGTCCGATATAATC
+CCGAAGGCTCCAGTCGTACTGAATTTTGGTCAGGAAACGCTGAAGGCGGTTGAGACCAGC
+CTGGTAGCCGTACTTCTCAGGGTCAGTGCGGAGTAAGGTTTCCATCGAGTGATCAATGCC
+GACGGCGCAGCATAGCGAGCATCCATAGCGAGCGCCGCAGGCAGAAGACCGGACAGTGGA
+TTTCTCCGGCGTCCAGATACATTCCCCGGTCGCGTCTTTGTAAAGCGTGGCGAGGCTGAA
+GTTGTCCGGCAAAAAGCTTGGCAGCGGAAATCGCGCCAGAGAACCACAGGCCATCAGAAA
+TGACCAGATATCCTGTGCCCGCCACTCTTTCACCGGGTACAGTTCGCCGCCGTGCTCCGT
+GAGCGAGACGCTGTCCGCCTGCCCGCCCATTCTTAGGATGTTGTCTGCCCGACGGGCGCT
+CTCATCATCGCGGGAACCCAGCATCAGGCACACTTTGTTGCGGACAGAAGCAGGTGCATT
+TTTCAGATAACGGGCTTTGGCCTGGCGCAGTGGAGAACGCTTTAGATCTGTAGCGCATTG
+ACGCGTAGAAGAATTTGTCCAGGTTGGAAGTCCACGCCCGGTCAGAATGCGTCCGACCCA
+GCTCTGGGTCATGGACGGGCGGGCCACAAGGACGGTCAAAGGCAGTTCTTGTTCGGCAAT
+AAAGGCTCTGAGCTGGCTGAGAACCTGCGTGGCCTGATGATGCATCTCAGGGTTTTCAAT
+CAGGGTGTCAGACATCTGAATGAAGTGGTGCTGGCTGACGTTCGACCCGTTTCGTACTGC
+ACGGATCAAGGCCATAAGGAACAAGTGCAGTAGCGAGTGAGAGTCTTTCCCGCCGCTGTA
+GCCGACGCACATGGTCCAGCCTTCGGTAATCGCATGATAAATGGCACTGGTTGCCGTCGT
+CACGCGCGAAGCGAGACTGACCGGCTCACCGGCATCAGTATAATTCAGATCCGCATCGGT
+CTTCAGTGTCTGCCAGACATCGCCCCATTTATCCTGCGTCAGAATGGCAGCGTTAGCCGC
+CTCAGAAAATTGAATTTCTGAGGGTAATTCAAGGAATGTTTCTTTCATTTCGATATACAT
+ATTATTTCCTGAATTTGGCTTTCGCTGTATTGTCGCGATATTTATTAAATCCATTTAATA
+TCTTCAGCGCAATATGTGAAGCTAAAAATAGTTAAATTGAAATCATGCCAATTTAATTAA
+ATAACACTGAACAAATAAAATTACGCGGCAATAAATATATTATATTCTCCACGCTCTCAC
+GAATACTGCTGGGTAATTAAAACCGTCGCATTTGATTCCAGCTCTGCCAACGGAATTAGG
+GGCGTATTGAGCATCATGTCATCGCCGCAATGACGGGGTACAGCCGTCAGATGAAATGAT
+TCTTTCATGACCCGGATGGAAGTTGTTTCCGTGCGGCAGGAGGGCATTACGTCCCGGAGC
+ATCGTTTCCTGTCCGCTGCTGTCACTTTCAATAAACGCAGCCTGCGACATGAGAACCTCA
+ATGTCCTCTTCCAATGTTTCGGACCAGTGGCAGTCATAGAAGAAAAACTCGGCGGCGTAC
+AAATCATTTTCTTTCACGTATGCCGCCAGTTCACGGATACGCTTAGCCAGCGACGTATCA
+ATGGAAAAGAAGACGCTTTGCGGGACATCACTCGCAAATTCATTGATGCAGCTAGCGGAC
+AAAATCAGGATTTTATTGGTCATTTTCAGCTCTCCATGCCACCGGCTGTTCCGGTGGCAA
+TCAGGGATTATCAGGCAGTCACGGGGCACAATTCGTCAAGTGAAGGCAGTAATTTGCTCA
+GGCTTTCGTACACGACGGGCATCAATTCAGTGACGCTGTGAAGCGCCATGCTGGTATTGT
+CTTCTTCGCTGAGAATGATAACTCCATCCTCACCAGGATTGTCGGGCGTGCTCTCGTCAG
+AGGCCAGGCGGTGGCGTGCAACGTCATAAGCCGATTCTGATTTTTTGCAGCTCATCAGAT
+AGCATTGAGTGTATGTGTATTCGTGGTTGTACTGGTTCACTTTCACCAACGCATACTGAA
+CACCGGCATCATGAGCTTCGTTCATCAGGCGAGAAAAATTAAAGCCTTCTTCGTAGTGGT
+GTGTATCTTTAGTCACCACAATAGTCGCACCGCCGAACTCGTTTTCGCGTGGTCGGTCGC
+AGACGAAAGCGGCATTGATTGTGACCATCTCAGGCAGGTTAAACACCGACAACACGGCAG
+TTGTTACCGCGATAGCGTGGTCGAGGTTAATGCTTTCATCATGGCAGATTGCCAGGCCTT
+TACCGGTGATTTCCGCTTTGAGTTCCAGCTCGTAATTGTTTTCTGGTGACTCCGACTGAC
+CAAAAGTCGGCTCAAACGGATCGCACTCCGGGTGGTTCTGAATAATACCCAGGACAAGCA
+ATTCAGTGAGGGAACACTCTGAAACCGGTTTAGACAGCAAGTGTTCACCTTCCGCCACAT
+CCGTGTCTGTAACATACGCAATCGCGTCCAGTGCCATCTGTGCCTGTTCCTGTGAACAGA
+GAATTGTGAAGGATGCCTGAGTGTAATTGTTCGCCATTGCATAACTCCTTATTTAATTAA
+ATGTGATTGCTGTCTGTGAATAGATAATATCAAAACAGATACCTGCACCTAATAACCAAT
+AATGAAATATGTTCGAAATTTTTATAGAGCAGACAGCGCCATATTTAATAATCCAACTTT
+TATTCTGGATACGGTGTAAAATAAATATACGGGAAAACAAAAAACCGCCACAAGGGCGGA
+ATTTATTAGACGGGAAAGATTTGGTTATACGGTATGTGTCAGGGAGGAAGCAATGAGCCT
+GTCTGGTAACAGTGATTGTAGGGACGCAGACGAAATAACAAGCACCTGATCCAAGTGCGC
+TACACCTTCGTCGATATGTTGCTGGAATGCCGCTTCAGCTTCACCGCAGGAGTCCGCTTC
+GACCAGCATCACCTCTTCCTCATCATCAAACATCATGCGGCCTGAGATAATATACAGTCG
+GCTTAAGTCTGGGGTATTTACAGCGATGCCCTGTTAGTTAATCATCATTTTTCTCCGCCT
+TCAATTTTTAAATTTGTCAGTTCTGCTACGTGTAAAAAACAGCATCAGCCCTGTAAACCC
+GGACAGGTATCAACGTAGCTCATTGGTTTGCCGATCGCGGCGCTCAGGCGAAGGATTTCG
+CCGATGGAGACGTACCGAAGCATTTCCGAACGCCCGTGTTTCTGGTATTCATCCACCGAC
+ATAGTGCGCCAGTCCTTGTGCGGTGCGGTTTTGCACAACTGCCAGTTGTTGGCAGTGGTC
+GGGCGACGCAGGACATATACACCCAGCGAAGGCGTGAGGCCACTGCCGAATGCCTGCTCC
+ACCACAATACGTACTTCAGAGCCGTCGGGGCGTTTCAGTGTCTGAGTAATTTTAGTAATG
+AGCTGTTCGGATTCCATACTATTAACCTCGACCGTCAGTTGGGTTGCTGTAGGGATATTT
+TACCAAAGTCGGCTCTCTGGCTAATAAGTAAGAAGTGATTTTTTTTCATTCATTGAAGTT
+TCTTTCATATGGAATGAATATTAATTATTTAAACTGACTCGGCCTATTTTAATTATTATT
+AATCAGGGTATTTAATGTGCAAATTGGCAGGGCGCTGAATTACCGGGCATCCATTGCCCG
+GACAGTTTATTAAAAAAACTGATAATGCCCCGCCGGAGAATTACGCCAATTCCTGTGAAG
+GCATGGTCTGGCTGAAAAGTTACTTTTCCCGGTTGCCCTGCCTTGATCCCGTATCGTTTA
+TACCGGTCTGCTCTTACATCCTACCTGGGCAGCAGCTGGCTACGGTGATCGGGTATTAAA
+ATAGAACCGGTCTGTTTTACCGCAGATTCAACGCCCCGCACCTAGCGTAAAATCGCCTTT
+CCCGGATGCCCTCCTTAGTCGTCCGGCACGATGGCGCTACTCCCAGCGATAAGGGGTAAA
+ATAGTCCTCGTTAACAGCAAGAAATTCGGTCAGGGAATGCATCGCCTTCGTGTCATATGC
+CGTCACAATAAAACGGTATCCGTCCACCGTTTCGATGTAGCTGATCCCCCGTGGCGTGCA
+ACTGGATTTCACAACTTCCGCCGTCATCATAAACTGCCCTTGCGGAAATTCCGGTGACAG
+GTAGATAAAGCCAGTGGTGGCTGATGACGGGTTGGCATTCATCAGCACGCCGTTAAATTG
+CTTTCCGTGCCGCGCCGGAATCAACGCGCTCCCCGCTGTCGCCTGAGTCATCAACTGGCG
+GATCAGGGTTTCCTCTTTATCTGAGCTGTAGGCGCGAACATCATTTTCAGCCCCGGAGCG
+TGAGTAGACGCCGACATGAGCAAGACGTCGGTACTCGTTACGCATATAGGCATGACAGGA
+TGCACCGGCTCGCCCCTGAAGAGTGACGCCAAAGTCTTCACATAACATCAGTACCTGGCG
+CAGGTTTTTGTCATAGACCGTGGCAGAGAGCGCCAGGTTATAGCTGATGAATGTCAGCTC
+AAAAACCCGGGTATGTGCGTCACTAAGGTGTGCCTCCATGCGGATCACTGGTTTCTCCGT
+CATTGGAAACGGCGTACCGGCCAAGCAGTACGAGGTAACATCGCTAAAACACTCGTCGAT
+CACACTGGCAATGACCGTATCGGCGTCAATGACAGCCGGAGCTGGAACATAAATCTGAAA
+CTGTCCTTCAGTGCCCGGTTGGATCAGGACGGGGTATAGACGCGGGGAATTGAGTTGTTC
+GCAGTCGGCATTGATCAGTTCTGTCCAACCGGGTTTTCCGGTGGGAGCATCAAGGCGAAG
+ACCCAGGTTATCGCAGAAGTCGACGATCTGGCGGGAGTGCTCCACCATCACTGCCCCGGA
+GAGTGTCAGACCGTGCGTAACCATCTGCATCTCACTCGTCCGGGTCTGGGAGTTCTGGGA
+CCAGGGCTGTAATGAAAGCGTCGTCCGACTTAAGGAGGGAATGATGGTTTCATTCAGAGG
+TTCAATAAGCTGGCAATGCGCATACAGCCGGGTGGCGAGGAAGTCAAATATGAAGCTTGC
+CTGTTGTTTTGTGCTGGCCTGAATATAAAACATCGCATCCATGCCTGAATCCCGGGATGA
+AATACCGAAAAGTTTCATTTTTTACCTTAATGGATGAGCGATTTATAATCATGCGCCGAC
+AGGTGGACGTTATGTACGCCATCGTTCCACTCAAAGAATAGCCGATATTTTGAATTAACT
+CGAATGGAAGAATACCGGTTTGCGGTCATTCTTAAGCGTTCGTACCGCAAACTACCAGAT
+AACAATTCGCGTTCGTTTTTAACATTATTTAACGTTTCCAGTCTGCATGAAATCGCATTA
+ATCAGTTCAGCAGGAATGCCTGCCGTGGATTTTCCATTACGGAAAAACTTTTCCAATCGC
+CTGTCTTTAAATGAATGGATCATATTTTCCTCCGTAACGAAATGAGTTTAAATAAATAAG
+AATTAAAAAAGCCTGAATCTAATTTATTACATCCCGAGGATTCTGGCTGCGACCGTCAGT
+TGTTTATCACTTAATGGAAATTTGCGTGATAACGTCGACTTCAGGCTGTTCAAAAAACTG
+TTCTCGCCGTCTTGCTGCGTGATGGCGTCCACCAGTTCTTGGTGGTTCTGACACCAGAGG
+TTGAACGCGGAAGTCTTTGATTGAACAGCACGTTGACGCTCTGCTGCCTGAGCGGCTGAG
+ATCTTGCGAGCAGCTTCTGGGTATATGCGATACAGTGCAGTCAGGGTGTAACAGGTACGG
+GTAGTGACCAGGCTATAGCCAGTGGCATTACAGGCAATACAGCGGCTCTTATAAAAGTGA
+TTGCGTTCGCCACGTCCATTGCATTTATTGCAAGTAACACGGTAAATATATTCCCCGGTG
+CCTTTTACTGAATCAATACACTTAATCTTAGCGTTATCGATTGCCATTCCGCTACGGTCA
+AAGTATTTATCCATTTTTGATTCCTCAGGTTTGGTCTGAAGTAATAATGACAGATTGGCC
+TCGCTGGCTAATAACCTGAACGAACGTTTTTTGAAAATAAATCAGGAAGGATGATTGAGA
+TGATTTATATATGCAGGATTCAATTTTAATGGAGGGTATTTTCAGAATTATCTGTTTACA
+AAAAACGAAACAAATCCTAATGAGGCATTTATTGCATCACAATAAAAGTGATTGCTTTTC
+ACTCATTTGAGTAGCGATGCTTAAGTATTTATCCGTTTTAAGGTATAACAGCAGCGTGAT
+ACGGCTCAGGGAATGCCTGTCCGTCACCTTAATGATGCTTTACTTCCGGTTGCCGAAACA
+GTCCATATGGCTGACATGTATAACACGCACGGTCTAACGCAGTTCCGGGGGGTGGCACAG
+CGGCGTGATGCCGCTTTAATCTGGAAAACGCAGGCATCTACTGGTGCCTCAGGATCGCGG
+CACTCGCAAGCTGAAACACCAGAGCCTGTTCGTCTTCCGGCTGTATCGCTCGTCCCCGTC
+TACAAAACCCGTCTCATCCGCAGGTATCGCTGGCGCACTCCCAGACGGTTAGAGGCTTTC
+GGGAACTGCCTGGGTCAAAGAACACCGGCGTTCAGGTAGCTGTTGAAATGGACATCTACA
+CGTTTTTGTTCAAGTGATTCAGTTGTGGTGAGGGCATAACGGGTAATGCCCTCCCGTGAA
+GCCCTGAGAAAAGTTACTTTTCCAGGATTAATGCAGTCTTGCTTTTAATATAAATTCAGG
+GGATATTTTTTTAAAAAAATACCTGTCGTCAACTTATTAGAAAAGTAAGTCAAAATGCTA
+GAGTGTTCTCATTCAAAAAGAGGAGAACTAACCATGCCAAAATATTTGTTACCTGCCGAG
+CTTGCGGAAATTGTTTGTGGATTACTGGTGCAACCAGCATTATTGAATGAATTAAAAACA
+CCAGCCACGCATAAAGCATTTATGCAGGACATCGGCGAGCTGGTGGCGAAACATTGCGGC
+GGTCAAATTGACGGCGTGATCATGCCTGAGGTACGCGATGAAGACAGCCAGGCCGATTAC
+CTGACATCTCCAGATGAAACCCCTTATATTGTTGTCTCTCCTGGCCAGGACATGCACTCC
+CTCACAGATAACGTCTGGCGTCATCATGCCCGGGATGGCTGGCTTGACCATATCAAAGGC
+AGTGTCGAAGAAAGCCCTGATGAACTGCCGACCCACAAAGAGTGCGCTGTACGCCGCTAC
+ACCCTCCAGCGTCTGCTCCTTCAGGAAGAAACCAGCCATGCTAATCTGCCAGTACAGGTG
+GTACGGATGTGTGAGTACAGCACCGACGATGTTGAGCAGACCGATTCTTCAGCAGAGTTT
+AACGTCACAATGGCGCTCGGTGGTCATGCCATGCTGGCAGTAAAAGATACAGATTCCCGT
+CTGGTGATGGCCCTGACACTCTTGATTGAAAATGGAGTTCCCTCTGTCCACGTTAATGCG
+GGTGACACTGATCCTTCAGTTCTGCACATCCGGGCAGCTCACGGTGGTCTGGTTCTTTCA
+ACCGACTCCCTTAATCATGATTTCAGTATTTCGCCCTCTGACCAGTATACCTACGGACGC
+CCTGGATTATTATTGAAAGCCGCCTACTGATTTATTAATTCAAAATCCGTCATTATTATT
+TACCCCCATTTTTCGCCCCTAACTTATGGGGCGAGTATATTTTAAAAAACTTTCTTTCAG
+GTTATTAGCCAGCAAACTAGAACTGGTAGAATTAATTCATCAGAGAAAAGGGGACTATCA
+TGGCTAAATTAATTTCGACGCGTGAACTGGCAACAATTATTACTGCATTACTGGTAAAAC
+CAGAATTACTGGGCGAGCTGGATTCCCCAGAAAAACATCGCGCCCTGATGGAAGATCTGG
+GGCGTGTTGTGGCAGAGCATTGTGGCGGTAATGTCACTGAAATCGCACTACCGGAGACCG
+ATGGTACGGCTGCTGAAGGCGCGTTGCAGAATGGCCAGCCCGTCCGCTATCTGGAAACCA
+AAGAAAGCTCTCCGTATCTCATCGTACACCCTGACGCCTCACTGCCGTCGGTGACGCAAA
+ACGTCTGGATGCACGCTGATCATGATGGCTGGGAAGAGCATTTCAACGGAGAGACCGATG
+CCCTGACTCCAGAGATGAGCGAGCAGTTCCGCCAGCAGGTTTATGCACTGCTGACGCCGG
+AATCCCATACCACCTCTTCAGAAATGAGACTGACTTTGCAGGACTGGCAACTGGGTGAAG
+CCGAGATCCCAGAAGAAGACTGTCAGCCCTACCAGGTGAAGGTGTTAGCAGAAAATAAAA
+ACGTTCAGTGCGAAGTGACGAATGAAACCGGCACCACGTGTTTCGGCCTCATTTTGGAGA
+TCGACCGTGGTGTACCGACGCTGCACATTGATACGGGCAGTGATTCACTGCTGCACATTC
+ACGCGGCACATGACGGCCTGGTTCTGACACCGGATGCACCGAGCCACAGATTTGAAGATG
+CTCCTGTAGATCGCTTTTCTTATAACAGCCCGTCCCTGTTGGTGCCTGGGGTGTAACCAG
+GCAAACTGCCCAGCGGTATTTTGGCCCCGGGTAAAATTATTCAGAACAGGAGTCAGGCAG
+ATGGGCGATGTTGCCACACTACCACCGAAAATTAACGATGGCGTACTTCGACGCTGGAAT
+GCTCGCGGTAAAGCGGATAAAGAGGCGCTGGCCGACTATGGCGTTAGCGTGAAGGAGGAG
+TGAATTGCGCGAATTACTTGGAATGGCAGGTGCAGAACATCAAGCCTCCGTAATGTATCA
+AACGTTCGGACACCTCGACGCGAAGCTAGGCGAAAAGCATAAAGGTCACTTCGTTTTTAT
+CAACGGCCAGCACGGCGATCTGTGCGTTGTGCATAGTGAATTTTCATCCTTTGACGAAGG
+TCCAGGCTATTTCAGTGACCGTGCCGACTTCATCTGGGAATTAGTTAAAAACGACGGCCC
+ATGCTCTAAGGTCGGGATTTACCGATTTGACGGCGAATACGCGCTTCCTAAGCGCCGGAA
+TGGGAGAAGATTTTCAGGAAGCGTAACGTGCCTGCAAGCATTCTAATTCCGTGCTGCATG
+AGCGCCGACAGGTCTTCCGTACAACGGGAGGCGGCACAGTTCGCGTGCAACCATCCCCAC
+ACAATAACTCGACTGAGTACATAATAATGACGAACGCTAACGCAAATGACGGGAAGACCA
+GCCCGGTATTACCCACTCTCGAACAGGTCTATGCTCTGCTCAAGGCCAACTATAAACCCG
+CACGATTTGCTGATCGGGATGGGGAAATCTGGGGGCATGAGTATTCATGGAACTTGGCAA
+GATCCAGTTTGCAAGACCTGGAGAAATACGGGAAATCATATGTATCCAAGCATTCCGACC
+GGATGGGCGATGGATTCAGTTTTGGTCCTGACCTGGTCATTATTCGCTGACATACGCACG
+GAAGTGAGTAAGATGGCTGGCTGCGCCGGAGAACTAGAGTAATGAAGGGTAAAAATATCG
+TGGCTCGTGTCGTGCGGGAAGCGGCCTATAAGTGGGAAACTCGCCACCAATTGCAGCAGG
+CGTACAATTCAGCGAGTGACGTGGGAAAAGTTCCCAGACATTCCGGTTCCGCATCTGATT
+TACGCCAGACGCTGTCATTTTTAATTCTTTGTAGGGCATGACGATGAAAAACACAGTAAT
+ACCGACGGTGACTGAAAACGAGATGGGAGAGGTGATCACCCGCCACTCGGCTTACGGACT
+GGTATCAGTAAGCCGCACGTCCACGACGGGACAGCGCCTTTATGCCTCCGACCTCAGTCA
+TAAAGAGGTAGTCACGATGACCTTCAGTGAATCAGAGCAGATTGAACGCGACGGTGTGAT
+CCGTCATCGACTGGCGGAAGGCCGACGCCGCTCACCGCTCCTGCAAGTCAGTCTGTCTCC
+GGCGCAGTGGGCCACGATGATCACATCGTTCGGAATGAGTGACGGCGTGCCGTGTACCAT
+TAACAGCCTGATTCGCGGCGATTATGAGCGGCAGCCGGAGATTGGCTATATTGAGTCGAC
+ACGCGAACGATACGAACGGCAGATCCGGGAAGCCGCTGAGCGTGAAATGGCGAAATTGCA
+TGAAAAGCTGGAAGTGCTGCGTTTGCTGGCGGTAAAAGGCAAGGCTGGAAAGCGTGAGCT
+TGACGAAGCCTATCAGTCGCTGTTAAGCGTAATCAATAACTTGCCGGTCAATCTGGCCTT
+CACCAACCAACTCATTCAGGAATCCATGGTGAATATCGTCTCACACGGCAAGGCCGAACT
+CGAAGCCACCGCCATGGGCGTAGCCGCTCGTCTGGGTATGAAAGAAATGAGCAGCCTTGC
+CTCGCTGGAAGAGAAGAAGTAACCGGTGCGCCCGCCCGTAAATCATGAAATGCACTAACG
+TCCATACCTGCTGCACACATACGCGGCACACAGATCAACGGCCAGCGCATACCGCGTTGA
+CATAAACCGTAAACACTGAAGTGCGTCGTCCTGTCGGGGACATTCTACGTGGTTTTCTAC
+GCCCCCCCCTTCTCTCTTCTGCGGCTCACAGAACTTCAGGAATTGCTGGTGGGCAGTCTC
+CAGGACGTTTTCCAGTAACCGGCTGTGGTCAGCGTCATATCCCTTCAGCAGGCGTTCCAG
+TTCTGCCATAGCGAGTGCAGGTGGTAACCAGATGACGCCAAGCAGCAAAAACTGGCTCTG
+CATTCGAATTTCATGGCGATCTGGCTTCAGACCCTCTGCCCGGGAAGCGCAATAATAAAT
+CCTCTCCAGGGGAGCTACACGCGTGATAAGAGGTTTCTCAGCAAGTTCTGACATGCGACT
+AAATCAGCCTGTTTCGTTTCTTTCTGATTACGTTAAGACACTATGAAAAAGCCCCGTAAT
+ACGGGGCCGGTTCGGAGGCAGTTACTGGATTTGCGGCAGCTCGATCATGAAGCTTGATTC
+ACCGACATTGCCGCTGGTGGCCGGGAAGATGGGGATCAGGACGCCATCACCCTGCCCGAA
+ATCTATCGTGATGTCTTTCGAATCCCCGGGTACGACGGCCACCCCATTCATACTAACCGC
+AAAGGCCGCATCTTTGCGGACCGTCAGCGTGCCGGTTTGTGCTCCAGTGATCAGCGAACC
+ATCTTTTTTCCGGATGCTATTGGTACGCAGATACGCCAGCGGCTGGTTATCTGATGTCTT
+CAGCCCCATACCCACGGCCAGCGTTTTGAGAGTGTTAAATTCAATCAGGTTGTTCGGTAC
+ATAACGGAACCGGCTGACCTTTGTCGTGGTATTACCGGCTTCATCTACCGCAACCGCAGT
+AAGCTGGTAGGAATCCGCATCATCTGTCGCGGGGAAGATACGCGGGTAGTTCAGCCCGTA
+TTTATCAGTTCCCTGGCTGTACCAGCCCACACTGACTTTGTCAGAAGTGGGTCCGCCGCT
+CAGCGTGATGCTTTTCAGGGAAGCTTTTGTCATATCGTCGGCCAGTGTGATCACCAGATT
+TTCCAGCCCTTTGACCAGTGCTCCGTCAGCCTGCTTTCCCTCAAAACTGATATCGACAAC
+AGGCGGCGTGACGTCATGCAGGATGGTATTCGATAGCGTCAGTTCTGCCGTGTTGTTGTA
+GGTGTCCGTCGCGGCACCCGTTGCAGTGTATTTCCCGGAGGGTAACGCGCTGTAATCAAA
+CGTCACTTGTTTCAGCTGGTAGTTCAGGACCGTAACGTTTTTCGGCGACAAGGTAGAGAC
+TTTATTACTGGTGTCCTTCAGTGTGAGGTTAAAGATATTGGTGGCCCACATATAATTGGT
+CCAGTCGTTAGTTACGTCACTGTCCGTCACCAGCATTACCACCGTTTTATCCAGTGGGCT
+GGAGACGATACTGTTGATAACCGGGGCGTTCATATCCCAGTAGGTGTAGAAATGCGACTG
+TAGTCCGCCGAGATTTGCGTATGAACCGGTCCCTCTGATATGAATTTGGTACGGAACATA
+GCCTTTCCCGCTCGTCTTACAGTAATTCATGCTGACCTGGCAACTGCTCTCACCCACTGA
+AACATTGCAACTGCCAATGCCGACGATAGTAGCAGTTTGCACATAAGAGCGCGGTTCAAC
+GTTTACACGACCCAAATCTACGCAATCCGGCCCGGTAAACCTGACGATGTCACTCGAAGT
+CCATGTATTAGCATCTCTGAAATGGTACTGCCCTGACAAATAGCGGGGGGCTTCAGCCAC
+GCCGTTACCCGGAGTAAATTTCAGCGTTTTGTACTGGAGGTTGACGTTAAGGCCCGCTTT
+AGTATGAAGCTCGTAGTACATATAGGTTTCCGGGTAGCTCACCGTGGCTTCAGTATAAAA
+ATAGGTATTGTCGGAGTTGGTAATCTGATCGACCCAGCCGAAGTCTGTCCCGTTAAAATT
+GGTTGAGTCCGATTTAAGGCGTTTGTACCTGAATTTGACTGGGTTCTCGAAAATAGTCAT
+GCCAGGAACATAATCTTCCCAGACGCCTGTTTTCGCATTCCGCACCTGATGTTGAATGTA
+GCTGGGTATTGTACGATCAATACCAGAGCGATGTGATGTTTCTGTCCAGTTCCCGGCTTT
+GTCATAAACCCGAAAACCTACGGTGTAATATGCCGGACTGACGGGCGCAACCGTGCTTCC
+TGCCGCCACCGCCGCCAGTGCCTGGACCACCCCCGTGAGTGCATTCAGCTGAGCATTTAC
+AGTCCGGCGGACACCGCTGCTGTCAATAGCAAACCACTCCGCTTTATCCAGTCCTGACCT
+CGCATCAGAGACGTTCGATAACGAAATGGCCTGGGTTGCGGTCCTGTCGCCGAAAATATC
+CAGACTTCCGTACTGAAAACCAGCCCTGATCCACTGCATCGGATCTGGTAGAACGGGAGG
+AGTGATATCGATGCTGAAAGAGTAGCTGGTTGTCGCCACGACATTCGACTTATTGTCGAG
+TGTTTCGGATTTAAGAGAAAAAGTACCCTCGCCCAGTACCGGCAGTGTCATGGACTTGCC
+GTAGTACTCACTACCATCAGCGGCAGTGATCCTGTCGGCCACTGTCACCAGGCCGGTGAC
+ACTCTGGAACATCTGCACATTATCGGATGAACGTGTCACGGTAACGCGCTCGTAGCGGTC
+GAGACCAGATATCAGATTCAGCGTAATTGCGCTGCCCGGGTTGAGATACTCTCTGGTGGG
+TTCAGCATTCACTTTCGTGCCGCGTGTGTCGGTATACGAATAGTTGTAAAGCTGAGCCTG
+GCTGTAAAGCGGGAACAGCAGTGCCGTATAGACGGCGACAATCAACGGACGTCGGCAAAA
+TTTCATTTCGGTTCTCCTGGTTGGCCAGAAAATTTTACCTGAATCGTTTTCTTCGCCCGG
+GCGCTAAGAGGGGTAATTGTTCAGTAAAACATCGTCCGTTTGTGTGCTTTTTGCCAGATT
+TAATCGGCAGGCCTGCGGGAAATACCCCATCCCAATGTCCGTTTTAGGCTGATTAATTCC
+CCAGAAATCCCCCCCTTAACGGAAAAATCCGCAGGGCAGACGTTTAAAATAGCAACAACT
+AAAAGGGGAATACTGAATGAAAAATCAGGCTATAGCTTTGGCTATGGCTATGCTCGGAGT
+CTCAGTTCCGGCATCTGCTCAAATTTATGAATCCATCTTCACAGATACCAATGGTATTGA
+AGTTCACGCCCCCTCAACCCGGCTGTTGCTGAATCCGGCCTCACCGGTAACCCTGACGCT
+CATTGCCGGTCTTGACCGTTATGTGAATGTCAAAATCACCAGCGCCACCGGCACGCAACT
+GCTGAACACCACTACTACGCGCACCAGCGTATCCGACCGTCTGAAGGCCGGAGATGGCAG
+CGAATTTTACGGAAAAAAAGTAACTTTACCGGTGCTTGGCGAAGGCAGGTCGGTTGTGCA
+GGTCAGTATTCTGGATCTGAATCAGTCCGTTGTAGCCACCTACAGCTACAACTGGCTGGT
+AGACACCACACCGCTGTCTGGTAATGCCCTCACAGGCAACGCCGCCTATGGATCAACTGC
+GGGTAGCGTCTGGAAAATGGGGCTGGAGGCCACGGGGCAGTTTGATTTTACCTCAACCAA
+TGTCACGGACGTAAATGGCATCGAGAAAGGTATGTTTTATGTCTATCACAGTAACGGCAG
+TCTGTTCAGTACGACGTGACTGGTCAGAAGATGTATCACACTTACTCAAAAAACTCGGTC
+AAAGGCGCGGGTATTCCCGACAGCAATCTGGATGAAGATTTCACGGCCAAGGTAGTCATT
+TATGACAACGCAGGAAACACCCGAACCCTTCCGTTGCAGCTCTTTCGATATGATAACTAT
+CTGGGCGGTCCGAGATCCGCAAAGCTCCGCCAGCGTGGTGCCAGGGGTTTCCGGATATCC
+GGCCTATTCAGCTGGGATGACCGTTAATGAGAATCCGATTCATCTTGTATATCGCGTGCC
+AAAGTCCAACTACCGGTCATATGCCGAGGGCGGCCTGCTATTCTATAACCTGTATTCTTC
+CCCGACCGAGATTGCGACGGACAGCACCTATACCTACGTTGAAATGATCCTGCCCTAGTA
+CGGTGGTATACGGGCTGGAGAATATCCGTATAGCTCTGGCGGATAACCTGACAACACCCC
+GGATCACCCGTCTTCAGATAACCGGAGGGCCAACGGCAGATAACGTTGAGCTCACGTGGT
+CACCTGCTGGCACGAACGTTTATGCGCCAGAATATCCAAGGCTGTTCCCCTCATTCGAGC
+CTTCCGAAAACTATGCGCTTAGCGTGACGGTCTCCGACAGTCAGTCGAACAGCAAAACTT
+ATACCCAGAAATTCAGCTACCTCCCGAATAACCTAGTGCAGTTGCATAACCTGCGAACCT
+TATCCGTCAGTTCAGCACTCAAAACGTCGTTAAATGAGCCTCTTGCTTATCTGTCAACCA
+ACGTGTTGCGTAAGTCCAACGGTGAGATTGCAAAAACGTCCAGAGTGCGACGCTAACGGT
+ACGTAAAGACGCTGCCTTCGGTATTAAGTTCAACGGCGTGCAGGCCGCGCTTGGTGAATC
+TGTAGAGGTGAAAATTGATATGGGGCTCGGTGATAACCTTTTAGTACCTATATACCCTGC
+TGAAAACGGCAAAGTGGGTACATCCGAGTTCATGATCCAGATCGATGAGCTGAAGTAATG
+AGAATGGGCCGTCGGTAGTACTGGCGGCTTAACGAAAGTAACTTTTTCTGTAAGGGTTGA
+AGTGTGCTTCTGATGTTTTTAGAACGGATCGGAATTTACTCACATTTTGATCGTGATGAT
+TCAATACGTGACAGAGCATAGTTATCAACAGGATAGAATAATAATAAAGATCAATAGAGG
+ATCAATAGCAGATCAAAAAGGAATAACGATCCTCGCAGCCCAGTGATATCGGGCCTCTCA
+GCGGATCAGCATCCACTGTACAGGGGGAGAAATACACTATGTCGGGTAATCCATCCACTG
+TACCGGGCGCATAATCCACTATACCGGGTAGATTCGATACACTATAGCGGGTAGGATGTA
+GATCTTATGCACAAAACGGATCTCCCAATATGTCAAGTAATAACAACAAGTTATCTCTCG
+TCATTGAAGAGTCCCTAAAAGATTCAGGGGAAGTTATACAACTCTTTCCCACATTAAAAC
+AGACCATTCAACCGAAAGTTTTACTCCGCCTAGGTGTGTTTGTGCCGACTTTGAAATCTA
+CGGACAAGGGGGGGAGGAAGAGCCATCATATCGATGCCACTGAGCCGCTATCAAGGTTAT
+CTATTGTAGAGGGTGAAGGTTACAGCCAGATCCAAATCTACGGGCCGCGTCTCGATATGG
+ATACCGATTTCAAATCATGGTGTGGGATCGTTTATGCGTTGTCTAACCGGCCGCTTGATT
+CAGAAGGTCAGCTGGAGCTGAATTTTCCGGAGTTTGCAAAATTTTGTGGGTTTGATACCA
+AGCGCATTGATAAACAACTGAAAGAGCGCTTTGATGCTTCGCTGACGCGTATAGCCCGGA
+CCAACATTTCATTTATTAAGAAAATACCCGGTACAGATGATCAGATAACGATAAACATGC
+ACCTGGTGGAATCGACGTATTACGACAGTTCCACGGGAAAAATCATCATCAAGCCAAATT
+CGAAGCTCAATACGCTGTATCGCGTCGACGGTAAAACCCGACTCTACCTGAAGACATTGC
+AAAAACTGGCCCGTAAGGAGTCCGCACAGGCCCTGTACCTGTATCTGGCTGAGCTGCCGA
+GCACCTTTTACCGCATCGGATTCGATCGGCTTCGTGGACGACTCCAACTGTCATCACACC
+TCGGTAACCAGAATGCCACGGTTAAAAAGGCGCTGGGCCAGCTTAAAGAGATCGGTTTTC
+TGGAATACTCCATAGACAAAGAAAACGGCGATTACGTACTGAATATTCTAAAGAGAAACA
+TGAAGCCATGACCGATGCCGGATAATGCACCTGCCTGCCGCGTGGGTGGCTGCGTTACCC
+GGTATAGTGGACATTCTTCTCCTTTCCACTCTGCTTTACCCGGTACAATGGATCTCCACT
+ACACCGGGTAGTGTCAGGCCTAAAATTACGATGCAGCCCCTCCTCTTCAGCCTTACACTG
+AATATTTAGTGTGTTTTTTCACCAAAAATGTGATCTATACCCGGTACAGTGGAGTCACAG
+AAATGTGATCCGTACCCGGTATAGTGGATGAGAACTACTGCTAATCGGTTACCGGGAATG
+TGGTGGTACTGGGTGGAAAGGTTTACCCGGTATAGTGGATCGTGGCAGTGTCATCTTTCC
+GGATAGCATGACGTCACGGTTAGGAAACCGTACCCGGTATAGTGGATAGCGAATGGTGTA
+CAACCCTGTTAACGTGATGATGCTGAAGTGAAAGTTTAACCCGGTTTAGTGGAGCGACTT
+AAAGCGCGTACCAGTAGCTGATGGGGGAGCAGCACCCGGTACAGTGGAGGGGCGGATATC
+GTCGTAAAGGTCTTAACTAAAAGATGACCATTCAGTCGCAGCATTAAAGAAATATATCAT
+CGAGTCTCAGGGGTTTTAAGCCGGTAGACACCCTTCCACCAGGAGTCGAAAGACAAGCTA
+TCATCGCAGCGCATAAATATGCCGTTATGCTTGGTGACAACGCTAAGATAGCCTTTATTT
+TTCCCGCAGATCTTCTCAAAAGACTCTGTTGCTTTAATAAAATTTTCACCATCCGTGATG
+GCCGGAGAATCCAGTTCCTTCGCCAGCCATGCCGGATAGCTGTCCGCATTAACCCATACA
+AGGCGTTCAACAACTGAAAAGAAGACGCCGACAAGGCCAATCGTCCAAAGCGTAATAACC
+AGTAAACGCAAAATTCGTAAGGCTATAAATTTTGAGTGCTGTAGAGGCGAAACGATAAAA
+GGCAGTGAGATCATGACTGTGAGTGAGACTGATGCCGCCAGCAAGGTGTATAACAATGAC
+CATGATTTAACATAGGCGGAAAAAGCGATCATTAAACAAATCAGAATGATGAGCGGTGCA
+TTGCTTTTCATCATGCCCGTGCTAATTTTCATTCTTTTGGGGCTCCATTTTGTACGAGTT
+TTGAGAGACTGCGTTTGTAATCATCCGCTGCCTTAGAAAAGTTACCGTCATTCTGTACCG
+GCGTAAAGCGAATGCCAAAAAACGCCTCAATGACGGAGGAAAGCGTCACTATCGGTCCTG
+ACGAGGCATGGGCTTTTCGCTCCCGAGCCTCACGCTCCGCAAAGTGGATCACCGGTCCCC
+TAGAAAATGAGAGTGAGTCATGGGAAGACCAGTCTGTTTATAGCCACAGTAGTTAAACGC
+ACCCCGCCAGTCCGTCGCTGTTTGACATCATGGCCGCGAATTAGGTTAACGTCGCCCGGT
+ATAGTGTAATCCCAGGCTGAACCTGTGTTTGCAGCTGGTGGCCCTGCATCCATCACCATG
+ACAGGCGCTGGCCGCAGGAATCGCGTGCCGGATGAAGGGTATCCACTATACCGGGTGAAT
+GATATGTTGATCCACGCTGACGGGTAGTTTTATGAGCAAACCCGCAGCGAGTGGCAGGCC
+TGTGTCATTCGCAGTTTTACTGATGGGACGGAAGGTTATCCACAAAAACGGTGAATAACC
+CTGTGACCGGAATCTGGATAATCATCATTGCGGCGACAACAACAGAAAGAAGTGGCCCGG
+ACTTGGCCACCCTACCCTGCTTTTACTTCAGTTCCTCTATATTCAGCATAAATTCAGAAG
+TTCCAACGACGCCGGAAGTCGAAGGAAAAATAGGGAAGCTGCGGCTGTCACCCAGACCCA
+GATCCAACTGAACATTTTTGCTCTCCCCAGGAGCTGCGGAAACCCCATTCACCGTGACGC
+CGAAGGCTGCATCCTTACGCACCGTCAGTATCGCGTCCTGTTTCCCGGTTGCGATAGACC
+CGTCCTTCTTACGCAGCTGGCTGGCATAAAGAACCGCCAGCGGTGTGTCATCGGACGTTT
+TCAGCGCGGTACTAACGGAGATGGTCTTAAGGTTTTCCAGACGAACCAGGTTGTTCGGCA
+AGTAACTAAATTCGACGGCGCTTTCTTTAACGTTGTTCATCTCGTCTTTGGCCTGCACGG
+TAAGCGTGTAAGTTTCGCCGTCGTTAAGTGAAGGAAAGATCTTCGGGTAATTCGGGGCAT
+AAAGATTATTTCCGAGGTTTACCCACGACAACTCAACAGCATCAGATACCGGGCCACCGC
+GAAGCGTCATTCGCGTTAAAGAGGGCTTGGTCAGGGTATCTGCGAGCTGAATACGAATGT
+TCTCCAGTCCATACACCGTTACACTGCTGGTGATAGGTTTGGTTTCGTAGCTGATACTGA
+TGGACGGCGGCGTGTTATCGACCGTCACAGTCTTATAGTCCAGACTACCCGTATTGTTGA
+ACGAATCCTGGGCGTTGAGCTGCACGTTATAGCTGCCCTCCGGGATTAGTTTCAGGTTGA
+ACTCGTATGTATAATTCCCGGTTGCTGTGTTACGCCCCGTTAGTGTTCCGGTCACATTGA
+TATCCGCGTTATTGCGGGATTTGTCGGACAGCCACACCCGGCTCAGTTTAACGGTATCGA
+AATACGATCCGTCTCCCGGCTGGTTGATGTAAACCTGAAGGATGTTGGTCGTATCATTGT
+AGTCATAGCCAGTGACCGAAGGCCCCAGCGTATGCCAGACGACGTTTTCCCAGATAGGCA
+TGAAGAAGGTGGATTCTGTTGTGGAACGTACCTCATAACCACTATGCAGATAGCCGGTGG
+TGCCGTTTGTAATCGCCTGTGTCAGGGCGACGGTACACGACGTTGACCCGGCAGGGATGT
+TGCAGGTGGCACCGCCAGTAATTTTTTGGTCGTAGGGCCTTGCCTGCACATTGAAACGGA
+TCTGGGTCAGGTTCACCGGCATATCTGAAGCCTTGAAGTATTTCCAATTGACGCTGTTAA
+ACCAGGTACCATCGGACATCTGTCGCTCAATCGCCGGACTCCCCCATGCAGGACTTTTTA
+CCGAAGCCGGGTCCCAGTTCAGCCAGGAGGCGTATTGAGTCAGATCGCCTCCGGACCATT
+GGTACGTGTTCACTGGGCGATAGTAGTTTATATCCAGAGCGCCCTGGGGAAGCTTCACCT
+CGACGTACACATAGGTCGTGTCTTCTGAAATAACCTTAGCACCGCCATAATTGTTAAGAA
+TGGTGATGCCGCCGTTACGGTATGGCTTCCAGTTGGTTCGGGGGATACGGATGACCATAC
+GGTATGGGTTTTCGAGTACAGATAGCCCCCGAACAAACGGGACGTACCCTGAAGAGATCC
+CCGGGACCACACTCGTACTGACGCGTGAGTCATGAACCGCAAAGGGGGTGTATTCACCTA
+TCTGGTCATCAAATAAAAAGCGCTGCGGCGGAATATTCAGCGTGTTTCCGGCTTTATCTG
+TGATGATAAAATTGAAGGTAAATTCTTCATTGAGATCGCTGGTGGGCATACCGGGTTGAG
+TGACCGAGTCCTTGATCCAGGGGTAAAAGGCACGTTTTGCCGCCGTATCGTAACTGAGTG
+TGTTGTCGGACACGACTGTGCCATTTCCGCGCTTGATGACCAGACGGATCTTGTCTATGC
+CATTCGCATCATCAACTCCATCAGCAAAGATGGAAAACTGGCCAGATCCTCCGCGCCCAA
+GCCCCCAAACTGGGCCACTCAGGACCATTTCATAGCCTGCGTTCTGGCTCGGGTAGATGC
+TGGTATACTTTGGCGCTGTAGTGTCGATTGTGAAATGATACGTTGAAGAGCTGACGACAG
+CCTGCTGGAGATCCAGAGTATCGTTGATGACGGTGAAGGCCCCTTCACCGAGTGCGGGTA
+ACGCCAAGTCCTTTCCGTAATATTCCGTGCCGTCTGCGGCAACAATGCGATCTGCGACGC
+TTATCTTTCCTGTCACTGCGGAATACATGACCTTTTTGTCACTGTCCCTGGTCACACTCA
+CTCGTTCGTATCGGTCAAGGCCGGAGATCAGATTCAGGGTCATTGTGCTTGCCGGATTAA
+GGTAGCTCTGCGTGGCAGGCTTAAGCGTCTTTGCCAGCTGATTGGTGTCAGTATACGAAT
+AGCTGAAAATCTGAGCCGCCGCCGGATAAACTGAAGCTATGGCCGTGGCAATGATACAGC
+CTGTCAGAATTTTACGCATGTGATACTCCCGGGATGTATTTGCCCCTATTTTACGAAATC
+TTTTCACCTGGGCTTGCTGGTTAGCCGGGGTATTTCACGGCATAAAACTTTTAAATGTTG
+CCGTGATAGCAATGTTGTCGGGTCAGAACAAAACGAAAGTTAAGGCAACTTCAACAGGGC
+TGATTACGGTGGAAGAAAAGTAACTTTTCTCTTGAGAAGAAATAGGAAAAGCAGAAATTA
+GGACGATTAAATGAGGTGAAATGTCAGCAACAGGCGATGATTGTCCATCATCGTAAGGGA
+GGGTACAGGGTGCCGCTGCCTTACTGGCATCATGTTGATGTCCAGCTCTTCATACCCGTT
+TGTACCTTAGCCGGAACTGTTGTTCAGTACAGGTAAAAGTTGTAATAACTCCCCGCTCAC
+TGCCGGGGAGTCATTTTAAATCAGCACGGCGCCATCAGAATAGATTAGCTTTCAAACCAG
+GGCGAATCGGCAGAGTTCGCAGATTCTTCACTTTGCTGTGACTCTCCCAGAAATTGCACT
+TCACGTACTGGTTTACTTTTCCCCAGGCTCCGCTGGAAATCATCCATCACAAACTCAATA
+TCATCACGGTCCTCAGGCAAGACAGGCGAACTTTTGGACATAGTCTTTCCTTCAGTTAAA
+AGCGTTCTGCATACAGAACGCGGACGGAGACGGCAGTGTTGTCAAACTCATTATCGAAGG
+TATCCATCCACTCGGTCCTGAACCCCTCGCCCAGCAGGTTATCGATCCCCTGAAGGGACA
+GAGGCAGGACGGCAGCTAAACGCCCGCCGGGAACCAGATGAGACGCAGCGGCCAGCAGAT
+GCAGCTTAGCCCGGTTGTCAGCAAAAGGAGGGTTCATCACCACGCAATCAAATTTCTGAA
+TCTGATTCGCCGCCGACCAGGCCAGAAAATCGGCTTCCGTGGTCTCGTAACCTTTAGCCC
+GGGAGACCAGACAATTCAGTGTATCCAGTTCGATGCCGGTTACGTTGACACTTTTCGGGA
+AACATTGAAGCAAATCCCCGTGCCCAATATTGGGCTCCAGCAGCCGTTCCCCCTCCCCGG
+CCGCAATAATGGATGCGACGTATTCACTGAGTCGCGCCGACGACGGATAAAACTGGTGGG
+ATTTAATATCAGGCATGGCGCCCATATGTCCGATGAAGCGCATCACTTCGGTCGGGTCAT
+AATCAAACGTCACATGGTAGCTTGTCACTCGGGCACCGAGAAATCGCAGAACATCCGCGT
+TCACCTGCCGCGTTTTATCAGCGTTCTCACCGGCATAGCCGAGCGATGTCCAGCTGGACC
+ATTCCTTTTCATTCTGGGTAAAATCCAGCTCTGCAAGCTGCATCCGTGAATGAAAATCGA
+TGCAGCGTTTCAGTGCCGGGAACTCCTGCAACGTCGCTTTGGTATGGGCCACGCGTTCAG
+CAGGCAGAGCCAGAGGGACGATGGCAGCAAGAATGTTGTTAAGCCGTTCGGCGATATCAG
+GATGCACATCAATGTGCATCGATCCGTTTTTGTAGACCCGAAAACGAATACTGTTGCCAT
+CCAGGCTGATCCAGTTTCTGAATCCAACATGACCAACCATATTCTCAACCATTTTTTTCG
+TGTCATAGACCGGTTTAACTGTTTCGCCCCGGAAATAAGAACAGATCACCCGCAACTCCG
+AAAGTGGCATGAGGCCGGATTCTTTAAACTCAACCTTCAGTTTTACCCATTTGTCTTTCA
+CGCCTTCACATACGCCGGAGGTGATCATGCGAGTAGAGAAGCCAAATGCTTTATTGGTTT
+TGTGTTGACGGCTTAATGACTGAAAGACGGCATAGACACGATCTTTAATGAACTGATGCC
+GGTCATTGAGCAACGCGACAACCGTGGTAACAACAGCATCGAGTGTAAAATCAGGGATCT
+CCTGAGGAGGAAGGTGGTAACGGTCAGCAGTAAACTGCTTATCCCATTCTTTCTTCTTTT
+CGTCAGACATCACAGACAGTACATCGGTCAGGGCCATGACCCTCTTCCAGTATTCTGAAC
+GCAGCGCGTTTTCTGCGTAGCTGGCATCCGCTTCTGAAATGAGATGATTGTATCCGGAGA
+GGTATGAATAGAGCTTCTGATTCCCGCATTTCAGGAACTGAGCGGACATGGACCTCAGTA
+AGCTAAGCTCATCGTTATATGATTCGACCTGCCTGTTAATGACATCGAGCTCTTCCCGCA
+TTTCGGGCAGGAAGTTATCGTCGTTAATAAGGAGGCCAGTATGAGGCATATAAGCAACCA
+GAGAACTCCCAGGGGCACCCATTGGCAGGGAATCAGATTCAACAGCAGACATAGCACCAG
+TCCTTTTTGAAGGGTTTATCTGATACCAGGATAACAACCTTGAACAAAAAGCTAATAGGT
+TGGCTGACATGAAAATGGAGAAATTAACACTGCGGAAAGTCAGAAAGACAGATGTGGTTT
+TAATCAGAAGAAACGGGCCGGAGACAGGACAAAAAAACCCCTACATAGTAGGGGCAACGG
+GGGGAGAGCCTGGGTGGCTCGCTCTAAAATATCGTACTTCTTATTGTAGTCTTCTCACAC
+TCTGAAATAATTCATTTAAGCCTGTGCTGGGGGTGTTTCGGATTGCGGTTCTCCGCCATT
+TTTATCGTTTTTCTTGGTTTTGTAAGTCACTTTTTCCCCTTTCAATCGGGCTTGCCGATT
+TTCGGCCCGGCGAAGCTGCTTGTTTTCTGATTCCGTAATCTCACTTTGCAGGTTCTTGAG
+CATCTCCAGCATGCTCCGGTTCAGCGTAAAGGTAATTTCTTCATCTTCGCTGGAGTCGGT
+CACCTCCGGCAACTCGATATCACCGAGTTTCTGCAATAGACTCGTCGTAATGAGTTTGAC
+CCCTTCGACGGCTTTTGTAGCGAGAACTGGTGGAACACGTGCGGGTTTAAAATCGGAAGG
+GACAACACGGATCTGCCCGCGTGGCGTTTTCTTAATCTGGATACCGCTTGAATCAGCCTT
+TTCAAGGTCTGCGATCATCTTTTCGATCCGCGCAACAGCTTCCGTTTCACCGAACTCATC
+GATAAGGGACAGGACTGCTACATAGGAAATGGCATCGGCATGGATCAGTTTTTTGAGATA
+GACACAGCAGCCGGTTAAACGAATAAGAGCAGCAATTGTGGTATTACTTTTTCCCTCACG
+TTCGGCAATACGGTCAAGCGACCATCCACCCAGCGCCTGAAGACGTCGGTAGGATTCACC
+CAAAGCCACAGGAGAAAGAGCCAGGCCACGGTTTCCGTCAATCGTTGTCAATTCGCAGCT
+GATCTCATCGGCTTTCATCTCGATGCAAAGAATGGTGAGGTTAGAATGCCCTTCTGCCAC
+AGCCATCAAAGCAGCCTTTAAACGGCAATGTCCCTGGCGAACGTACGGAATGCCGTCTTT
+GATCAGAACGCGGATAGGGTCTACGTAATCACCCCGGATGTACGCATTCTTGATGTTATT
+GAGATGATCGGCGACTTCTGGCAACTGGTAATAAGCTTCCCCCATTCCCATCTCACGGGA
+GTTGAATCCTTCCGTGATTTGAACCACGGTTGGGCTGATAGCCCATGCTTTCTGTTCAGT
+GACTTCATTACAAAGGTCAGGGTTCGCGTCGCGGAACTGCTTCATACCACTGACGAATCG
+GCCGGAACCGGTCACTGTTGAAAAAGACACGAGTGGGGATTTAAAGACCCGTGAGTTAGT
+TTGCTGTTGGGAATCAGTCATCAGATCACTCATAGATACTCCGTTGAATTCTTTTTTGTC
+ATACCTTTCATCTGTGCGTGAATACTACCGGAAAAAAAAATCTCACTTTTTCGTTAAAAA
+GGTACTTTTTGGGTCTATTCCGAATTGAACGAGGAAAATTGTTCTGGCGATCAGAACAAA
+AAGAAAAAATAACTCAAATAAAACAGATGGTTATGGTTAATTCGTAAAGGATAAACTTTT
+TTCTGAGAAGTGAAAAAAAATTAAAAAATGTGTCGAAATGACAATCTCGTTAACAAAAGC
+CACGTTTTTTCCTGCTCATACCTTATTGGTAGCAATCCGCCTTTCGGTACCATAAGTGTG
+GCATACCGATAAAGCTGAACGGAGAAGACTCGTTGCGAAAACATACACCAATCATCAAAT
+GGGCGGGGGGTAAAACCAAACTGATGCCGTTCCTCAGTAAGCACTTCCCACATGATAAGA
+GCCGACGCTGGGTTGAACCGTTTATCGGCGGTGGCGCCGTGTTTCTGAACATGTTTGCCA
+CCGAGGCTCTCCTAGCAGACAGCAACCCGGACCTAATCAATCTGTACCGCAACATACAGC
+GAAATAAACCGGCATTCATCAGAGAAGTGCAGCTGCTGGCGGAAAGGCATTTTGAAGAAG
+AGGATTACTACGTGCTGCGTAATACCTTTAACAGCACCAGTTTTGATGATGCCCCGCTAC
+AACGAGCAGCCATTTTCTACGCGATGAATCGACTCGGATATAACGGTCTGTGTCGTTACA
+ACCTGAAGCGAAAGTTCTCAGTTCCATGGGGAAAGCGATACCAGTTCAGTCTGGATATCC
+AGAAGGTTGATTACCTCTCATTCAGGCTTTCGAGCGTTGAATTGAAAACCGCAGATTTTG
+GTCAGACGCTGGAGTTTGCAGGTGGTGGTGACCAAATATATTGCGATCCGCCATATGACA
+AAATCAGTAAAACCAGCTTTGTAAGCTATGATGGTATACCGTTCGATAAGAGCGCACATG
+TTAAACTGGCGGATATGCTGGTGGATGCTAATCGTAAAGGGGCCTCAGTGGCCATATCCA
+ACAGCATGACTCCCTTTACGCTGGAGCTCTATGAAGAACGCGGTTTTGATATTCATACTC
+ACAACGCTTATCGGTCTGTCGGCAGTCAATCAAAGTCGCGTAAGAAGGAAATAGAAATTC
+TGGCCGTCCTTCGTTGAGCGGCGATCAGTAGTTAGTCGATCGGGCTTATCCATTCCTCGA
+AGCTCAGCACTTCGGAATGGTCACGGCTGGCATAGGGAATAAACTGAAGCTCTTCAATTG
+ATCGCTCCCCTCTCTTACCTTCGCATATAAACGATATGAACCCCTGATCTGCAAGTTGGG
+TAAGGACATTCATGATTCGTACGTTCACTGTATGCAACTGAAGATCATTCACGATATCGG
+TAATTTTGTGTGAATGGCGCCGGGACTTTCGCAAATAATCAAAGATGACAAACTGGGCAT
+TCCGTCGCTTCAATAATTTTTCCGTCATAAATTCCTGAATTAATCCCCCCAGCAACATCA
+GGAACGGACGAAGTACCCCAGGGAACGTTAACGTATAAGACTGCGATGTTTTGACCAGAG
+TGAAGGACGTCAGGAAGCTGAAGTTTAGTCGCTTCTTTGAATACGGGACATAAACAGCCA
+ATGTCGTAGACAAGTAAGTAAGCAATTCTTCCAGATGAGCGCGTGTGATCATGACCGTCT
+TATCGCTATTACGAAGACCGTGATAATCAATAAATGCCACTCTGGCACGACTCAGCCACT
+CGTGAATGCTTATGGATACAGTGAACGGTGCGTTTTCATCGGCAGAAATGACGCCGTGCT
+CAGCGAGTTGGTTATGGATAAGCATAGACAGCTGGTAAAATGGAAAACGGCAGGATGGAT
+GACACTGTAGGCCAGTTAGCGTTAGCTTTGCATTATCCAAGTCATCGAGCGGAAAAGTAA
+CTTTTCGGGAAATAATTTTTGCTGACGTTCTTGCTGACTTGCGGATGAACCCAAGTCCAA
+GATCATTTTGCATATATCACTCCGTTTTAACAAAATCTCCTTAACCTATATGTTAAGAAG
+AGACAAAAAATTAAAAAATATAATTAATAAGATTATCATTTTTAATTTAAAAGATTAGTT
+AATAACGGGTGTTGAATTTAAAATAAATCGGCTTATTTTCGGAGTGTAAAACCGGGTAAA
+AACCCGATGCGTGAGCAACAGATTTGACGTGAGTGAGTCGGCACGACAGTGCAGAAAGCC
+GGTGGCTAATGTAAAAACGGCCTGTATTTGGGAGTTCCGGTCACTAGACACCAGGCTATG
+CTGTTAATTTAAACACAGTCAGTAATGCGTAGGGCACTGAGTCAAAGTAGTGGATCTTTC
+TCACTTTTCCCGAAAGATGATAGCTATGCCCCAATAAAACGTGATCCTGAACATTACCAG
+TCAACGCGAATCCATCATTCTGCTTTTTGCCTGTAAAAGTAAAAAAATAGCTATGAGAAC
+CTTTTGAAAACGCAGCTCGCACTTCTGTAAAAATAATATCAAAACTAACTACATCACCAA
+TGTTGAAAGAATGTTCAATTGGAAAACCGGCGTTTTCTGAAAAAGCTTCAGAAACAGGCT
+GGTATGTCGAGTAGAAAGACTCCAACTGACGGACTGTTAAAAAGAGATTGTTGTTTAACT
+GCTGTGCAATGCTTGCTGCAAACTTAGAATTGTCAGCTTGCAGCAATGCTAACTGCTCGC
+TGTGCCTACGTTTCCAGGCTTCAAGATCGGGATTGCAGCGAAGTTCCGGGATAGTTTCAA
+GGAATTCAATGCACTCTTTCAGTACCAGCTTTTCCTCTGTGGCTGGAGACGTTTTGGAGC
+CATTGCATGTCACACAGACGGCGTTCGCAATCTTTCCAGTCCCTCCGCATTCAAAGCACT
+CACGGGTGATAACGGCGTAATAGTGTCCATCTTTACCGTAGATAGGCTTTACGGATGATG
+GCAGTAAATAACCATCCTGAGTAAAAAAAAGAGAATGTTTCATTTTTTAAGGTTCTCCAG
+TCGAGCCTCCACGAGCTGTAAAGCGTCAGTTACCTTCTGTACGTATTGATCGTGCCCTTC
+TTCAAAATGATCAAAACGCTTTCCAGCCTTGATCTCTTCAATGTTGCGATCGAGTGTGCC
+TTTTGTAATAAGTAGATCGTTATAAGTATTAATTACAGTAAACTGTGCAATCTTGTCCAT
+AAACGGTCCTTAGCATTCTACTCACTTGTTAACAGGTCACGAATTTCATGCAGTTCTGTA
+ACCTTAGATTTTGGAATGATGATAGCAGTATTTTCATCATTCAGAAGGCTTAATAAAAGC
+TGGAGTTTTGCTTCATCTAGAGTGATCTTTACACTTTCCGTTGTCTTTGTGATGGAAGTG
+CTGCTGATGTTCGTAAATAAATTGGAATGTTGTCCGTCGAAAATTAATTCGGTGAGTTTA
+TTACTGTCGTTTAGTGCTGGCCGTACAGTATCAATCAGCCCGATAAATTCAGTTTTTAAG
+CGTTCAGTTTTTTTATGAGAAAGCCGTTTAATACCCAATGAACTGCGAGTGATGGATTTT
+GTTTTAACTTCCTTAGGAATAACATGAACAGGGAGTGTTTCCGGGTTATCTAGTTTCTCA
+TCGTTTGATGATGTTTGAACGCTTGATGTCTTAGATAAAACAGGTTCTGGTTCAGTTGAT
+GGTACTAAAAGAGAACACGATTCCAAATGTGCAAGGACTTTTGCATGGTCATTGGAATAC
+TTCAACATGATCTCAATCGCGAGTGTTTTTTTAATCAGGTTTAGACTGATTAAACGTTGT
+AGTTCTAAAGGCATATCAAGGATTTTAAGCTGGTTACGAATAGCAGTGCTAGACCGTTGA
+TAGCGCATAGCAAGGGATTCAACGGTAGAGCCAAGCTTCAGCGCCTCTGCCAGTGCATAA
+GCTAAGGCTACGGGATTAAGACCGTTATTCCTATTCCCATCAAGGTTCTCCAGGTATTCT
+TCACTTTTATTCTTATAGTTCATAACAACTACTGAAATGAGCTGAATATCAGCTCCTTCC
+GCAAGAGCAAGAGATAGTGCTCTGTAACGGCAATGCCCCTGCCTTACAACGTAATTGGAG
+TCTTTCTTAACAACCTTAATTAAATCGACTCGTCTGCCCTCTTTATAGGCTTGTTTAATA
+GAAACAATGGTCGATTTTACTGGTTCCTGTTCATAACAAAGTTCACCAATTACCGCTTCA
+CGTGGATTGAATCCAGATTCGATAAAAAGTGCTTTAGGACTGATCTCAATAATCTGATAG
+TCGCAGTGATTCATATAACCTCCTTTTTATTACATGATACATTAATTGACTCAGTTTCAA
+ATAACCCAAAAGCAAAAAACAATTAATTCGGTGCTTGACTGTAATTTTAGTTATGAAGGA
+ATTAGGCCATTTTAATTTGAAATTTTTAAATCTGAATGGTTTGAAATTAATATATCTTAA
+AAGCTTAAGATTGATTGATACTTCTTCCGGCTGCATTCCCTACTTGGCTAGAGTCCGAAC
+CTGAACTTTTTAGGTCAGAGTTGGTTAACAGACGGAATTTATCCACGTTTTCCACAAGTT
+AGATCAATTCTTTAGATCAAGAGAGATCAAGAGAGTACAAAAAAGATCACAGGTTCCGTA
+AATGACTGATTTTATTATGGAATAAGCATGATCAGGCATTCAGGTGCATGTAAAAAGCAT
+TTGATTGAATAAGAAAAGCATTTACTTGAATTGAAAAGGCATTTAGTTTAATGCGAGAAA
+AGCATTTGCACGAATAATCTATTCACATCTAAATGTATCAAGGGATAAACCATGGTGGGT
+AAATTTAAATGAGTGATAACAATGAGGTAACACATCCTTTTGATGTGACCAACACGGAGA
+CAGGGAAGACTTATCAACTGAGTCCAAACTCTTCGAAATCGGTCCAACCCATTGCTTTAC
+TGCGCTTAAGTGTTTTTACCCCGGTGGGAACTAAAGAGAAGCGATACAGAAATTTTGAGG
+TTGACGCTTCTGATGAGTTGTCGAGCATGGAGCTGGCCCGTTCAGAAGGATACGATGACA
+TTCGGATCACTGGTCTTAAGCTTTCGATGTCAACCGATTTTAAGTGTTGGCTCGGTTGCA
+TAATGGCGTTCAGCAAATATGGTTTCGCTTCCGATAAAATCACATTGTCATTCAATGAGT
+TTGCAAAAATGTGTGGTATCAGTTCTACAAACATAAACAAGCGAACTCGCTCACGATTTC
+AGGAGGCGCTAGCAAACCTAGCTTCCGTTGTGATTTCTTTCCGTGATTCAAAAACTGAAC
+GTTTTACTGTCACGCACCTTGTGCAGAAAGCAGTGATTGATCCTAAGAAGGACACCGTAG
+AGTTGGTGGGCGATCCCTCAATGTGGGAGCTTTACCGGTATGATCATAAAACCTTACTTA
+GTTTGCAGGTGCTTTCGGTTCTCGCTAAAAAAGAGGCAGCACAAAGCCTGTACATATATT
+TTGAGGCGATGCCTGCCGGTACGTTATTCGTAAGCATGAAGCGTTTGCGTGAGCGACTTC
+TGTTGACGACTCCTGTACGAACTCAAAACCAGATCATCAGGAAGGCGATGCTGGAGTTAA
+AATCAATAGGATATCTTGAATATCAAGAGGTTAAGAAAGGTAGAGATATCCAGTTCCAGA
+TTTTTAAAAGAAGTCCAAAACTTGCTCTGGCAAAACACAGTTGATGCTCCGGGTATAGTA
+CGCACAAAAGTTACTTTGGATGTAATGAGGAGTATGGGCATTCATCCAAATGCTTTTTAA
+TGTTTCTCCGGATTTGAACACCCTTCCCTGTTTCCAAACTTCCTATCATTTCTGATACCC
+GGGTTCTTCTGGTATTCGTTCGAATGCTTTTCAGAAAAAATCATGCTTGCTAGTTGAGAC
+AACGTAACCTATTCATTTTGCTAGTTTAATAAGACTCATTCATACATATGCCTTTAACTA
+CACTACCCTCCATCGTGTTGTATTGGGCTTTAAACGCAAATCCCTATACTCCTTGTGCCA
+CTCGGCGTATTTACAGTTCCTTAACGCCTGCAAACGACTGGGATATGAGCCTGGTCGACG
+GCATTTTATGAATATGCAGGCCAATGAAGGACCTAGAGAAATAACATAACATTCTGATAA
+TAAATGAAAATTACTCAAATTGGATATCAAGGAGATGAAAGGCATTTGTTTCAATGGAGA
+GCAAAAAAGTGCCTTTTGTATAAAAGCATTTGCTCCAATGGCGGCAGAAAAGTGCCTTTT
+GTATAAAAGCATTTGCTTCAATGGCGGCAGAAAAGTGCCTTTTGAAAAAAGCATTTGTAT
+GAATGCTGCGGTGAAAGTTGCTTTTGGTCGGGAAGCAGGGCTCGCAAGGGACAGTGTAAG
+GTGCCTTTGTTCGAAAAGCATTTGCACGAATAGGAGAATGCAAGTTGCCTTTGGTCGGAA
+AGCATTTGAATGAATGGGGAAGTGTAAGTTGCCTTTGGTTGGAAAGCATTTGCATGAATG
+AGTCCCTGATAGGTGTCTTTGTTTGAAAAGCATTTGCATGAATGGATTCAGAAGAAGTGA
+CTTTTACGATAAGCATTTGAATGAATGGGCACCGCAGACGCGCATTCCCCAATCAGCATT
+TGAATGAATGAGCTCCGCAGTTTTGCTTTCATCGAACAGCATTCGTATGAATGTGCTCCG
+CAGAGGTGGCTTTCATTGAAAAGCATTTGTATGAATGGGGGATACATAATCCTTGTGGGT
+GAAAAGCACTCGCATCAATGGGGGAAAAGTGACTTTTGGAATGTCATCCTTACCGTGTCC
+TTTGTTAAATATCTGGCTGGATGAATGCCATAAAAATGGTAAAGGGGCAGACGATGCCCC
+TCTTCCCTATTTGGCATGTTAATTAAACGCACCTTCTTTAATCCGATTACATGCGGGATT
+CTTTTCTGACATTCGATGGCTAAAAAAACACCAAGCGCAATTAAGTCAAAAAAAAGGTGG
+TTAACAGAAAAATGAAAGAAAAATAAAAAGTATTATGCCAATGCGTTTTCGTGAATTCAA
+ATCAACACGGAGTAATTATGGAACTGACATTGAATACTAACGTTGAAAGAGGAAAAACTA
+ACGCTTTTGCATTTTTGAAGTCCAAACATGCAAAAGTGCCTTTGTTTATTCTCTTGGTTT
+TAGCAAATTGCAGTTTTGCGTACGCGGGTTCCGATGATGGAGCCTTCGGCGATATCTGGG
+CCTACATGAGCGAAGCCTTGACTGGTGCGCCGGGTAAAATCATCGCGTGCGGCATGTTGT
+TCTCGGTGGCTTATTTCGGCGTTGTAAAACCTAACCTTGGTTTGGCGCTGGTATCAGCAT
+TAATGATGCTGGTTATGGCAAACGGTGAAAAAATTATCAGCTCGTTCCTGGATGCTGGTA
+TTCCTCTGTGATTTGTTAGAACAATAACAATGAGGGGGATATTCCCCCTCTCTGGAGTTT
+TTATGACAAGCCAGTACGAGATACCGCCACATACATATCGCTTTCCATACAGAATAAATA
+TGCCGTTACTAATTCTATTCTGGGATGCAAAGCAATTGGGTATAACATTCGTGACTATCG
+CGAGCGGTAATATTTTTGATTTCTTTATAACTTCGGTAGTTGTGGCGGTGGTGTTCTGGT
+TTGCATATAAGAAAGCAGCAGAGGAAGGGATTAGAGGAAAACTAAAACACAAACTGTGGT
+GGTACGGCTTTTTTCCTGGAAAATCGGTGTTTAGTAGTCGTTACTTTACCGATCCATTTA
+TCAGAAACCTCTATTCTTGATGGAGCTAAGAATGAAACTTCTCAGCAGGTTAAAAATTCC
+ATTCATTAAAAATTCCAGTAATGGCGATTTTGATAACAAGGATGAGACTTCGCAAAAAGG
+AGGTGAAGAAGTAAAAGGAAGTTTTCTGGATTCAAAAGCACGCTTTAGTAAAGAAATTGA
+AGGTTCTGAAATTGGAATTACATATAGTGCATTGATTAAACGCGACGAAAAACTCCTACG
+TGTGAATACAGTTGCAATGATCATTATTGGGGTTCTGGTTGTAAAAAATCAATTTCTCAC
+TGATCCTGTGACTATAGTGCTACCGCCAAATATGACGGAAGAAGTCAAAGTTGTTGGAAA
+TAAAGCCTCAGAATCATATAAAACGCAGTGGGCCTTATTCTTTAGTACTTTGATTGGAAA
+CATAAACCCAACAAACATCGGTTTTGTTACAACAACTATATTGGATGCGCTTTCTCCGGA
+TTTACAGGCAAAGACCCGGGAATCACTACAGCAGCAAACCAATATAATGCAGGCTCGTGG
+TGTAGAGCAGTCATTTAAGCCGATCGATATGTATTACGACACCAAAAATGACATGGTCTA
+TGTCTGGGGAACAAAGTCAACTCGTTTGATTAATGTTCCGGACAAAACTGAATCATCCAA
+ATGGACGTTTGAATGGGTCCTGGGAATGAAAAATGGACGACCGCGCATAGCCTATGTGAA
+CCAGTATTCAGGTACACCAAATATTAAGAAAATTACAATCAACGGCAAAGAACAACTGGC
+AACACTCGATAATCCGCCGCCGTCAATAGGTAACTAATTATGACTTCAAAAAAGGTTTTT
+CACTGCACCGCGATTACAGCAGTGATTTTGCTGGCAACTTCGAATGTGGTATTTGCTGAA
+GACTATCAGTTACCGGCGACAGTAAATAATCCGGTAGTTATGCCTGTCGGGGCCGATGAA
+TTTCAGAACGGTGTGAAAAATGCGATAATTAAAGACACTGGCACTACGACTGAGACCGTA
+CAAGCAACAAAACCGACAACTGCTCTGCCAAGTCTTTCACCTGCAAGCAGTGCTTCTCCC
+GCAGTCAATGAAATAACCGGGGCGTTGTCAAATAACCCTACTCTAGCTGGTTACCAGCAA
+CAGGTTAAATCAGGAAATTTTGATAGTTACGGAAGACCAGCAGGGAAAGAACCTCAACAA
+AATGCACAAAGTACCGGGTCCCCTTCAAAGGCAGATGAACTTTATGTTGAAGCACGTAAT
+CGCTATAAAGAAGTACAACGAGTAAACGTTCCGCCTGGTGGCAATATTGTACTCCCGGTT
+TCTCGGGGGCTGCAAAACAGAATTTCGACTTCATTTAAAAATGCATCTGTAAGTACTTCA
+ACGCCAGCTGATGAAGCCAGTATTTTCGTTAATGGCGGGGATGTTTTTATTTCAACAAAT
+ACAGATAAGCCTATAGGAATTATGCTTTCAGAAGATTCAGTTCCTGAATCTACTTATAAC
+CTGACACTGGTTCCACTGGATGTACCAGGGGCCATGATTTCAGTAACAACTTCTTTGAGC
+CCGACAATGCAGGCAAAACGAGAAACTTCTCTTGATAAACAAAATTATGATGAGATGCTG
+GCACGCTCACAATCAGAAGAGTTGACTCCTTCAGACCCTCGGCAGGATGACCATAAACAG
+CGGATCATTGATTTGTTGACTCCGGTTGCACTGGGTGAGGTTCCTTCTGGTTTCAGTTTA
+CAAGAAGACCGCTTGTCACGCATACCAAGCTCAGAGCAGTCCCCATGTAATTTCAATATG
+TACGCCAAGTTAGGTCAAAGACTGGTGGGATCTCGGGAATTGATAGATGTCGTTCTTGTT
+AAGAATGATAAGCCTTACGGACAGGTAGTGGCTGATCAGCAATGTATAACTGAAGGCGTG
+GTTGCAAGCGCTCTATTCGATAAAGCATTCCTTCAGCCCGGGGAAGAGACCGAACTTTAT
+ATTGTGCGGGATAAATTATTTAAAGAGCGTCAGACTCGTGTTACTACGCGCCCAAGCCTG
+ATTAAAAGATAATATGAGAAAAGCTACTTTTCTTACAGTGATCTCGTTTGGTTTAGTTGT
+CTTTTTGGGTACCAGTTATTACTACCAAACTAAGTATATCCCGAAAGGCACCGTGAATAT
+ATTTCCTGATGTCCACCGACAGGGTGAGATCGTTGATGATGCCTTTGAGAAAAGCACGAT
+TGTTATAAGCGACCCAACGCTTGCGGATAAATTTGTTGGAAGTTCAACCGAGTCTGTCGG
+TCGGCATGAAGTTAATGTAATAAAAGAATTGGGCACGCAAAATAATGGTTCGAAATTTAT
+TCATGATGAGTCTGATAAATCAGGTTTGACGGTTGGAGATAAATGGCCTAGGGCTGGTGA
+ACCTTATATCGTGCCTCAGATGACAGAATACGAGCGGAATTTGAAAGTTAAGCGATTCCA
+GCAACCAAAGAATGGAGTTAATAATGGACATTAAAAAGGCCTGGGAAAATAAAACTGTCA
+GAATCTCAGTAATTGGTGCTGCATTGATGGTATTGATTGTTGTCATCAGTCAATCAATCT
+TTACCACACCAGTTAAAAAAGAGAAGAAAACCCAGAAAAAAGATATGCAAACTGGATTCC
+TTATTGATGATTCACAAATGAACAAGCTGAGTAATGAGGAAAGCCAGAAGACTTATAACG
+AAATGGTAAGGCAGAACCGTATTGACCAGAACGCTGCCAAGGCTGACCGTGACAAAGCTG
+AAAAGGCTCAGCAAGAAAACAAAGCACAGATAGCCAGTCTTGCTTCGCAAGTTCAGCAAC
+TCACTACGCAGTTGACTGAAATGCAGACCTCAAGAAATGGTAATCGCAATCTCGATGCAG
+GCGGACCACGCAACAACGTCAATGAACAAGCCCCAGCAAAGCCATACCAGCTTAATCCAA
+ATGCAGCGGTGAACGGGGTTAGTTCTGGATACGCACCTATATCTCCGACCCGAAACAGTC
+CAATGCGGACAATAACACAGAGTTCAATTAAGACAAACGGCACTGATGGTGTCATTCAGG
+TGATGCCGATATCAGAGAACCGGATCAGAGAGGGGCGCGAGGTTGTTGCGGGAAGTGAAA
+AGGCCCCAACGCGAACTATTCGCGGCGATGGGACTGCACCTGTTGATAGTAAAGCTCGTC
+ATGCGGCCCGTAAGGATGAAATGTTTCTTCCAGCGACGTCAATTATTACTGGGGTGCTAA
+TTACCGGGCTGGAAGCTCCAACGAGTTTGTCCTCTAAAGCAGAACCGATGCCGGTTACCA
+TGCGCATTAAAAAAGACATCATCATGCCTAACAATTACACGATGGATTTGCGTGATTGTA
+ATTTATTGGGTTCTGCTGTGGGGGATCTGGCATCTCAGCGTGCGTACATTAGGGCAACCT
+CCATATCGTGTGTCAACTCGAAAGGAAAAGCATTCGACGTAATAGTGGAAGCTTATGCGG
+TTAGTGAAAATGACGGGAAAAATGGCATTCGTGGGAATCTGATAAGCAGAAATGGAAATG
+CGATTGCAGGTTCTGCGTTTGCAGGAGGGCTGTCAGCATTGGCGGGGAGTCTGAGTCCAT
+CAAAGGTGTCTTCGCTTAATATAGATCCAAACTCTACGGCACAATACCAATCGCCAAACA
+TAGGTGCATTAGGAGCGCTGGCCGGAGCCGGTGCAGCTCAGGGGGGTCTAAACCGTCTTG
+TGGACTACTATACGTCAATAGCTGAGCAGCAGTGGCCAATTGTAGAAATTAGCCCAGGGC
+GCCCAATTACTTTTGTCGTTCAAAAAGGGGCGACAATACCTACAAACCTGACAAGCCGCT
+GAGAATAATTATGGAAAATAACAACGACAATGAATCACCAAAAAAGAGTGAGTCTGCTGA
+TAGCTTAAATATCGACGCGGCTAAACCGGTTGGGGGTATACGTACTACCAAAAAAGTAAC
+TTTAGAGATCGATATCGAGAAAACTCTTAAGTATCTGATGGTCGCAGGCCTGGCAGTTCT
+TATCGTGATCTATGGATACAAGGGTGGACGTTTTGTATATGACAACTTCAAAGCAATGTC
+GCAACCGGCCTACCAGATTGCCGTGCTGGATATGCAAACTTTAAGAAAAGTATTTAATAA
+GCAAAATCCGGTGTTGGATTCGCAGCAATCCAAAACTAACTTTGAAAATTATTTTAAGGC
+ATTAATGAAGGTTTACCGTGAACGTGGCTATTTGGTTATTGATGCATCCTTGGCAGTAAC
+TATTCCAGAGAATGTTGAAATAGTCTCTTATATCGACCTTGGTGGAAGTTTTGGTGAGGT
+ACAATCTCTTCCAGGCGAACCTAAAGAAAGTGAGATTCGATAATTGAAAAAGTTACTTTT
+GTCTCTGCTGATTTCCATTACCTCAGCGTGCCCGCCGCTTACTCTGGCTGTTGAAAATGT
+ATTAAACAATCGTGATGCCGCTGCGTTAATGGAAAAGGCAAAAGAAGGTGGAGTATCAAC
+GAAACCTTTAGACGGTGTATTGGCGAAAATGAAAAGCTATAAGCCTAAAGATGCTATTTA
+CATCCCTACTGGCGGTCTTTATTTGTTCCAGGATGAACGTTCTCAGTTGATGGCGGTGAC
+CACTGACGGACGGTATACAATCACGGGGGGGAGCGTCATGGACATTCTTCAGAGAAAGTC
+AGTGTTATCAGTAGAGGATATACGAAAGTCGTTCTTTATTAATTTAGACGACGCCCCTTT
+CCCTCTTGAAACTGTGGCATCGATACCTTTAGGAAACCCAAAACTCAAACGTCAAGCGGC
+AATATTTATTACGCTTGATTGTGACGGTTGTCAGGATTTAATAAAGAAATTCTATGATGA
+ACGCGAAAAGTATCGGGTCGATATAGTTTTAATCCCCTCCCCCGGCGAGCCAAAGCAGGA
+ATTGCGTCAATTATGGTGCAGTAAAGAAAAAGGCAAAGTGAATGATCTTGATATCTTGCG
+TTGGCTTATGGGTAATAAGGCCGATATAGAAAAACGACTCCTGACGAAAGAAGAGGCAGA
+AGCATGTCCGGCTGAACCGTTAGTCGCGTCATTAATGCTGGCTGGCATTTATAAATTACA
+GGGAGTCCCCTCAGTTGTAAGACAGGATGGACTCGCTGGTAATGGCATACCGAAAGATTT
+TGATTACTGGTTAAAACAAAGTGTCGAACCCTTACTCAAAAACCCATTTGATACTAATTA
+AGGTAATGAAATGAACATTAAAAAAGTTATTTTCAGCGCTCTGGTTGTTGGTTCATCTTC
+ATACCTGGCGGGTTGTACTATTGGCAGCGCAGAATCTGAATGCCCGGGAATTGAAAAAGG
+AGTTATTTGTAAAGGCCCGCGTGAAGTTATGGAACTGACGAACAATCGTGATGATCTCTC
+CGGCCTTGGGGAGGAAGAGGCTAATTCGGGAAAGGGGAAATCGGCTGTCAATGACAGCCA
+GTACCCTGCCCAACTAACGCCGCCTGGCGCAGTGCAGTACCCCAAGTCGTCTGTACTTGT
+TAATAAGCCAGTGACATACACAACGACGGAAGTAAAACCGGTTGGACAGCTCCCGGTGAT
+GTATGATCAGACATTAAAAATGGGGGCGCCAACTTCAACAATTGGACCACGGCCAATCAG
+CGGGAATCCTGTTAATTCTAATGTACGGATGACAACGAGTTACAACTCAAATGGGTCATC
+CGTTAACCCCTTTTTGCATCCGTCTGCTGAAGTCGTGAAAAAAACAACTCAGGTTGTTAC
+TCCCGCGCCTGCACCGCGCTATGTAGCACCAAATTCTGATATCAATGCAAGTAAAGACCT
+TTATTCCATTAACAATGGACAGCCAGTAAACCCTACGCTCAGCTCTGGGCAGGTACAGCA
+ATACCGTACACAAGGCTACAAACAGGCAGTCGTTGCACCAGAGCCTCTTGCTGTGCTTCA
+GCAAGGCCGCGTCATGAGAATCACCTTTGCACCATATACGGATGATAATGACGCGCTAAA
+TCTGCCTGGCTTTGTTTATGTGAATGTCAAACCGCAAACTTGGATTGCGGGCAAAAATTC
+AACATCAAATCCGGCACGAATTGTTCCTTTGGAAGTCCAGGATGCGGCTCGTGAAAATAT
+GCAACAGCAACAGCGAGCAACGAAAGCAGTTTCGTCAAACGGTATTGTGAGACAACTCTG
+AGGTCACGAATGAGATCAGCTAACGTCTATAATAAAGAATTAAGCCGTCATCAGTTAGGT
+GGATTTATTCCCGTGTATGATCAGATTCCGGGTACACATTATTTTCTACTTGACGGAAAC
+CGACTCGGTTTTATGTTTATCTGTAGTCCGTCGCCCGGTGTCTTTGATAATCAGCAGGAT
+GTGTTAACTGAATTATTTAAAATGGACTTCCCAACTGACACCATCTGTCAGACCTCATTA
+ACTGCGCTGCCAGACTTGATCTTGCACTTAAGTGCCTGGTCTGCCGTTCGTGGTGGTCGA
+ATGGAAGGTCATGATAAGCTTAAGGGGGATTTACTCACTGCATATCAACTGGATTATTAT
+GACCGAAGCCTGAATGAACCTTTGAAGCCGGACCACGATAAATTGATGCTTCGAGATTTT
+CAGGTCTGGATTTCCTTTTCAATTCCATTGAAGTCAGCACTTCCTTCTGAAATAGAAAAG
+AGTCGCATTGATGCGCTTTACTCTGACTTAATCAGTAAGTTGAATACAGTAGGCCTTTTC
+CCACACAAAGTTGGTGCTGAAAATTGGCTTTATTGCATGGATAAGTTATTGCATCCGGGA
+AAAACATCGCGTTGGTCTGAAGGTCATGTTGAAGCTAGCACCATGAGACGCCTAAACGAG
+CAGATCAATGTACCGGGTCGAAAATATACAGTGACAGAGAATCATTTCTCATCTACAACG
+CAGAGCAATGATATTTCTGAGCATCGTTATTTCAAACAATTATCAGTAGTGAAGTTTCCA
+GAATTTGTAAACTTTGGCTGCATGTATGAACTTGTAGTTAATTGGTTGAATGGACGTAAA
+ACGATCTTTAGCCCTTTCATGATAACCCAGACTGTCCATTTCGCCGATCCTTTAAAATTA
+TCAAGAGAAAACGTCAGATATAAGGCAATTACTAACAAACAAGCCAGTATTCCAACAGTT
+TTGACGTTTTGTCCAAGATTAAAGGATATGGATAATGATTACATGACGATAACACGCGAA
+CTGGAAGATGGGGCTCGCCTCCTACACAGTTATCTGACATTTACTGTAATGGGGAATTCA
+GCAGTTGATGTTCAGTCTGCCGCAGACCAGTTAAAATCATTTTATCTGGAAAGTCGTGTT
+AATGTTGCTGATGACTCGTACATAGTATTTCCCTCATTTGTTTCAAGCCTGCCGATGTGT
+AATGACCCAAAGACAATACTAGAACTGGATCGTTTTGAGGTCGTGAGTAATACTGGTGCT
+GCGCACATGACCCCCATATTTGGTCCTTGGAAAGGTAATACGGACAGACCCGTACTTAAC
+CTTGTCTCACGAGAAGGACAGCTGTTGGGGCTGGATATCTTCAAGACTTCTGCCAGCTAT
+AACATGGTCGTTGGTGCAACGTCTGGTGCTGGTAAATCATTCTGGGTCGCATACATCATT
+AATAATTATCTAGGCGCAGGTCCGCGTTCTAATAATCTGATCCATTATCGAGATACTTTT
+GAGGGATTCAAAAACAATTCTTATGATGCATTTGACCCTGATGGAGCCCAGATTTTCGTA
+GTTGATGTCGGACGCTCATACCAAGGTATTTCGGAACAATATACTAATAGTCAGTTTATA
+GACTTTGGGAAAAAGCCTGATTTTACGCTAAATCCATTCGCATTTTTGACTGATGTGACT
+GTTGGAGAGCGTGTTTTTGATGAAGCACCTGTCTTTAATGACGATTCAAATAATCATGAT
+GATGATAAGGATAAAGTAGCCCAGACCATTATGGTTCTAAACCAGTTAAAAATAATGGCA
+TCTGAAAAAGGAAATATTGACGATTTTCAACAATCGGTCATGCTGCAACTGATTAGTGAA
+GAATATAACGAATCACGCAAAGTTGGACGTACAGGCTCTATTACTGGATTTGCGCGACGC
+TGTTCTAACCATGAAGATAAGCGTATTAAAGATATCGGTGACCAGTTGGGGCAATGGTGT
+GAAGGAGGGATTTATGGGAATCGCTTTACAGAAAATCTCCCGCCAATAAATTTTGATAGC
+CGGTTTATTGTTCTGGAACTTGAAGAATTGAAGGGGACCCCACACCTTCAGACTGTCGTT
+CTGATGTCGATTATTCAGGCCGCTCAGCATGCAATGTTTATCAAGAAAGACGGACGCCGC
+CGGTTGTTCATACTTGATGAGGCATGGGAGTATATCCGTCCGGACAATGCTTCAGGTTCC
+AGTAATCATTCAAATCAATTTTTCTCCTCTTTCCTTGAGGCCGCTTGGCGCCGATTCAGG
+AAAACGAACTGTGCCGGTATTTGTATTACTCAATCCTTTGAAGATTACTTCACCTCATCG
+GTTGGTCGCGCACTAACGGCTAACTCGCCGTGGAAGATCATCATGAAGCAGGAAAAGGAA
+AGTATTGAAGCCATGAAGGTGAACAACTACTTCTCCACAACTGATGCGGAATATGAGCGT
+ATGAAAAATATTCGAACGGTAAAGCGTGCATTTTCCGAGATGCTCGTACGATTCGAAAAT
+TTCCAGGAGATATGTCGCCTCTATGTAGATAGAAAAATGGAGCTTTGCTTTACGACTGAC
+AGCACCGATCGTGGAAAACTATGGGAAATCCAAAGCCGACTTGATTGCTCTTACGGCGAA
+GCAATTGAGATTCTGTACGAACAGGAAGTTGCGAGCAAATCAGCTGCCTGACGTTTTAAG
+TTACTGGTTACCTCATTTTGTTTTGACTGAGGTATCCAGTACGTCTTTGAAGTAAATAGT
+TGTTAGCTGTCATTGCCTGCCCTCCCCCGAAATAATAGCCCGGGTTAAGAATATCTAGCT
+CGGATTAAGTCCTCTCAAACCGTCATACATGAAATTCGATGCCTTTGTCATTCTTCTTTT
+GAAGGTGAATGAATATGATGAAATTTACTCCAGAATTATTCTCCCTACCAGGCTTTTGCT
+GTGAAGTTAATCAGAGCAGGTATTATGTTTTGGGTACAAGAACCAACCAAGGGGGTGTGG
+TTTTTGTATGGCAGATACAAACATCATTTTTACGGTTATAATAAATAACCATTATATAGA
+TGAATTTGTCGTTTTTTCTTTTAAGTCCTTGAAATAATTGGATCTAATATCTAGATGATG
+GTTGTATAAACTATACGTTAATTAGATTTGAGAATGCAACTGTTATGCGATGCGTAGATA
+TTATTAAGGTGAATGGTTTGTTAAAACAACCAAAAAACAAGTAAGATCAGGTCTTATCTC
+CATAATAACTTAACCATCTAACTTTCTGGTTGGAATAAGAAACCATTTTAAGCTTATTCA
+ATAACGAAATTTAACCACTTGAATCGACTGACCATGGTAGAAAGTTGGTAGGGTACCGTG
+GCATTGAGCCCCCTTAATCGCCAGACCATGGAGGGAAGCTGGTTGCGTACCGTGGCATTT
+AACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGGCGTGTCCCATGGAATTTAACCCC
+CTTAATCGCCAGA
+>NODE_25_length_15938_cov_42.5346:NODE_7_length_1329_cov_85.8474;
+AGCAAGCCAACTTGTCGTCAAAATCGGTGTTGCAAAAACGGGAGTGACCATAGATTCCGT
+TTTCTGAGACGACCCCTTATTGGCAGTACCGTCAGTTCGGATATCTCCCGCGACAACCCA
+GAAAAAACCGGCAGACTCATCGCTCACGCGTTACTGACGGGGGCCTCGATTGAGGATGCC
+TGTCGCTTTGCCTCAGAGGCTCAGCAGTTCGATACCGCTCTATCGGGACTGGCTTACCAG
+GTAGCCGTGGCCATGAAATTTGTTGCCGGTGATTCTGCGGCCGTAAGGAATGAAGGCCAT
+CCGGTCATTACACTTTCCGACTCCTTCCGTCTTATGAGAAAAGCAAATATTAACACCCTG
+ACGGCCACACAGAACAACCGGAAATGATGAGCACAAATCGATATGGATGCCGATATTAAG
+AACGATGATTATGTTGACTGTCTCATTGAGCAGGTAACCGTATAGCGGACTGGAACACGA
+ATGCTGATGCTCTACACCAGGCCTGCGGCGCCTTCGTAGATGCACCGCATTCAAAACAAA
+CGACAGGTGATAATTTATGAAGTTGACAAAAATGATGGCGACCTTGTTCCTGCTTATTCC
+CTTGACATCTTTTTCGCAGGAATTGGGCCAGCGAATATCACAGGATGACAGTGCAGAACT
+GGCGAATAAGGCAGGTACAGCTTTGACAGAGATGCTTTTGCTAAAAGTTCAGCAATTGCC
+ACAGGTGAAAAAGAACAGTGGAATGGACCTTGCGGCTGCAAATGACGCTGTTGCTTCCTT
+ACTCAGCAAAGAGTTTTTCATTTTTAAACCAGTTGATGAAATCAGCATAAAAACCTCTGC
+TCAAAAATTAAAAGAGCTGAATGATGATGCCGACGCACTTGCTAAGGGGTACACCATCAT
+TCAACCAGATGATGTCGGAAGCTCCTACATTTCGTATAAGGTGACGTCCAGCTCTCGAAC
+CTGCTTCATTCGCCTTTCAAAGGATCTGTCATCGTCATTAAATACCAGAATTGTAACTGT
+GAATAGCATGGAGTGTTCGAACCCATAAACCACGTTGACCGGCTAATTCACTTTACGGGG
+TAAATGAGTTGTGAAACCCATTTTATTTTCACCCTCAATTACAGAAATTCAAGCCGAATA
+GAGACTGTAATGATTATTATCCTTGGTGTTCTGCTTTTATTGTCTCTTTTCTTCAATATC
+TGGTTTTGGGATCACTATATGCGTGTCATTCCGTTATCAGCGGATAAAAGTAGCATGTTT
+GCTATCGCCTCCAGCTGTGAAAACCCTCGGTGGGTGCAAGAAGTTGAGAGCCGTGGGGGG
+ATGACCCGTAAGGAATGGGCTGACTTTGTGGATCGAAATTTTAACCCTCCTAAATAGAGT
+AAATTCCGATTGGCATTGTTGCAGGAATTATGGTGCCGCAGCTTATTGGGTGTTTGTCAA
+TTGCCGGGAAGTATTCGCTGGCATATCACTTAAACGGGAGTAGTAAGTGAGAGAACCTCG
+TCCACGCCATACATTACAGGTAGTCTGTGTCCCGTCTCTGAATATACAGGATCTGGGGCT
+AACCAGTTTTCATAGCTGGCTCTTATCAAAAGGCTATGACACGACCAATGCCAGGAACAA
+CCGTACTTGCTGGGCAAGGGAAGGTGGCTGGCACCTGAAGCGATGCAGACATCTGGCAAC
+GGGCGAAGATCATTTCTGGTTTATCGCATTCAACGGTACCGGCGGCGACATTTTTCCTGT
+GAAAACCCAGCAGGACTACCGTGCTGCCTACCGCAAGCTTGAAGCGTATGGATATGCACC
+GGCCGTTATTGAACAATTGAACACAGGCGTTGCCTATAATCTTGCTTATTCACGGACACC
+GTTAAAACGCCCTGAGAGCGCCACCAGCGAACTGAAGCGAAAACCTGACGTGAATATTCA
+GGGTGAGCCTTGCGAACGCTTTGTGACCGAACGGAGCAGCGCAGCGCAGAATAAATTCAA
+AACCCTGCTCATTGAGAACTTCGCCGGTCGGTGTGCAGTCACTGGATGGGTTAATGGTGG
+TGTGCTGGTGGCGGCTCATATCGAGCATGGGACGCGCTACAACCCTTCGAACGGCATCCT
+GTTGACGCCGACAATGCACGCGTTGTTTGACGCGGATCTGATGGGTATAGACCCTTCAAC
+ACTCACCGTTCATTTTAAACCGGGCATCGAGGCGGGAGAGCTGTTTGAAGGAAAAACGCT
+CAATCCGTTGGTGTATGATCTGGATACCGACCGGCTGGCTGCTCGCTGGGCTGACTTTAT
+AGGTGCCGAGTGATTGATGGGAAATTCAGCCTATAACCGATGGCAGTGTTTTCGGGATGG
+ACACCACTTACTGATGGGGGCTGGCTGCACGCCACCTTTATATTGAAATCCAACAGAGTT
+GATACAACAAATGCAAAATTGCCTTTCGGGATATTTAAAAGCGACCATTGTTATTTTATC
+TGCGGGCCTGACAGGTTGCGACCTGGCAAATGGGACTGCGGAAAGTGGAGTGTATCAGAA
+ATACACGAATGGACCTTTCAAGGAACCGACTATCGTGATGAGTCCGGGCTGGCGGATGGA
+TGACCACGGCAGGGAAGCACTAATATTCGGGAGCAGCCACTGCCCGGATGTAAACGGCAA
+TAATACGTCTGAGGGCGGCTGCGTCCTCATTGAGGAGCACTCTGCGACTGTCGCGGTCAC
+TGTTGTTGATGCGACAAATCAGTCCCGTCGCCAGGAAACCTGGACGATTGAACGTAAAAA
+GGATCGAGTTATAGTGAAGCGCCCGGATAACAGTTTTGTGATGCCCTGGGGAAAATAGCC
+AAGATACAAGATGACCACAAAAATGAATAAGCCGCAATGTTGTTTTGTGTGTTGAACGTC
+CTGATGGAGCCTTTGACATTTACACTGGCCGTTTTATACAGTTCCACCAAATTGACAACA
+GTAGAAGAAAAATTGTTGAAATAAGTGATCCTGACCTGGTGGGGATGACTTATTCAATCC
+CGATGGTTTTTAACGGAGGGAAGTTCAGTGGTCAAGGGGTTACCTGTCTCTCGCTCCCCG
+CAGTAACATTAATAAAAGTAACTTTTCCTTCCCGAACTTATCAGGAGGGGCAGGAACAAA
+TCACAATGTCGAGCCCGGACCTGGCACTATTTTCTGAAGATGTCCGGAAAAACTGCGCCG
+GTACGTGTGTTCTTACCGGCGTTCGAGGCAGACAAAGAACTGAGGCTGCGCACATAAAAC
+CCCGTCATGCTGGTGGTGAGCCGGATGTGACAAACGGGATTCTACTGCGAAGTGACATCA
+ATACCCTCTTTGACAATTGGCACTTTTCGATCGACCCTGATTCAATGAAAGCCCGTTTCA
+GCCCGGATGTGCTCTCCGTCGATAAAGACTTACTACAACTGGAAGGCAAGCAAATTGATT
+TTTCCCGCCTGCAAATGCCTATCAATATTGAACACCTTCGACATCACTGGAACAAATTTT
+TTAACCGTCATGTCAATCCAGTCATAAAGAATGCGCTAAATAAAAAAATCAACAATTATG
+AAAAACGGCCAGTTAGCAGCAACATACATTATTAGGCTACGTTAGCCTAATGGCATTCTG
+AAAGTCTGCCCAATTAGACTGAAGTTCAATAAGAAGGAATGAAAATGAACTTGAAAAGTA
+TTGTTCCGAAGGCTGCTGGCCTTGCTGCATGGATTGTAGGAATCATTTATAGTGGTTTTG
+CTCTTTCTGTTCTGTGGGGGGGGTTTTGTGCCTCTCGGTGTGGTGCCGATCACAACTCCA
+TGGGCTATTGGAATTTACTGCTTGGCAGGCATAATAAGAGGCAATAGAGTAAAAATCCCG
+AAAGAACAAGATATGCCATGTACGCTTCAATTAACGATGATATATGTCGGCATCACCTTT
+TTCCTAATTGTCGGTTATATCTGCCATCAAATAACTTAGAACTGATTTAGAATTGAATTT
+GATAAAGCTTACTACAAAGTAGTTTTGTCAATGTTCAACCTGTTTATCAAACCTACGGTG
+ACTTTTTATGACTGGGAATGGTATCAATACTGTACGCATAAACAACGAAGTGAAACACAT
+CTCAGAGTTAGATCCGGAGATCTCTTTTTCTTGAATGGAATAAACTGAAAAGTGAAAATA
+ACGAACTGTATCGCTGCATAAAGGAAGCAAATTCTGGTTGGCGTGGTTTTGTCCTTCGTT
+TAATAGGGGTTTATCTACCTGATGGCAAAACAATTGTCATTAAACCCTAGATTATTTGAA
+TATTCCTAAACATAGGCTTAATAAGAAAAGCCACTGAAAAGTGGCTTTTGAACTGAGCTG
+TTCGCGATTTTAATTTCAACTTAGATGAGGAAATCATCCAGTGTTTTACCGGCTTCAAGT
+TGTTCGGCCAGTGCTTTAGGGGTACGCCCCTGGCCAGTCCAGGTTTTCGTTTCACCATTA
+ACATCAGTGTATTTATATTTCGCAGGGCGCGGTTCGCGAACTTTTTTAGGTGCTCCGGAC
+TTTGCAGAGAAAGAACTCAGTAACTCTTCAGGGTCAATTCCATCTTCAAGCATTAATTGA
+CGCAGGGATTCAATCTTCTCCAGACGCGCTTTCAGCTCAGCTTCTTTTGAAGATTCTTCC
+TGACGTCGTTCTTCAACAACAACGCTTAATTTTTCCAGCAGTTCTTCAAGGATCTCTAAC
+GGCAGTTCACGGCCCTGCGCACGAAGAGTACGAATGTTGTTTAATGATTTGAGTGCTTCG
+GACATATGACCTCACTAAGAGTAATAAATAAAATCAATAGAATACTTTGCGATATTACAC
+TCTTTTATTATTTTGAGCCAGCTAGACGCGTAAGATTTTCTGGGCGCATGATATCAATCA
+TTGGTACCTAAAGACATTAACCACCCCGCGTATGGAAACAAATGCATTATCACTTGCCAG
+TTCCTCTGTAGTGCCAACTCCGCAAGATTAGATAAAATCGCCGTCTGTCTCATGCGATTA
+TTACTTTCGGTTACTGGAGAGACCTTTTAATATTGATTTTCTTCCTCTTGATTTCTTAGT
+TGTTTGTCCTTTTCGTTAATATGGAAAGGGTCGTATGTGTTGGTATTATATGCGTTCTTA
+ACGTTTGCTGCCCACTGTTCAATGCGGAGCATCATTGCATATGTTGCTGCGGCATCAAGA
+TCCAGTTGTTCAGAGTGTTCAGGGAGCAGAATTTTACAATATTCCAGTTCATGAGCCACA
+GCTCCGAGCCGTTCATAAAGTGAAGATAGTTGCGTTATGGAATCATCAGTGCGGTTCATG
+AATAGCGCCGACTTCCAATAATATATTGAGCAAGTTTGATGTTAAGACATACCATGTTGC
+TTGATAGTTGCCGCATCATACGGGATTCGCTACGAATTAAATAGGATTCAAGTAGTCCAG
+AATATTCCCCTGACGTTACAACCGTCAACTGGGCAATGTGATTATTTAATTTGCTTGCCC
+CTGCCAGGATATCATCCTCCGTCGCCTCGATATAAACGGGGGAGGCAGCGATAACATAAT
+CATCGAAAGGTCTTGCTGCCATCAATGTCTCAATAGATTTCGCCGTCCTTTCTTTCCCGA
+ATGTATTTGTTAATTCCCGCCACCATTGTCGGTGACTGAACGGTAAATCATGAAAGGTGG
+CTTCATAAGCGTCCACGAGGTCACGACTATTCAAAAAACCCAACCCGGCCGAGATCACCC
+ACAACTCCAGGTTCTCAGTTGTCCGTAATATCTCTTTTGCCGTTGACCAGTGATTACCGG
+CATAGAGCGACAGGGCCGGTACCGGTGAAGCACTTTGCGACCGTTTAATCGTTGCTGCCC
+AGCTGGACATTGCCTCTTCTGGTGTCTGTCCAGACCGGATACTCAGTTCTGGCATGGAGC
+CGCACTGGCTGTGCTTACCTTTGGTACAGGACGTTATTAGGTGTGTAATTCGCGACGCCG
+CCATTTTGTAGCCCTCAGCCAAATGTGTGTAATCACTGTCTAACTATCGTAACAGCCCCT
+CATCCGCCATAACGACAAAGAGGAAGCCCTAAACGTAAACGACTACCCCATTATACATTT
+AGTCATGCCTTTACTAATAACTAGTTACCAAAATAAACACCCCAGATGTGACACCGTCAC
+GTTTTTCGGCTTTATTTAGTTCATTTTGTGTACTATGGGATTTAATTCGGGGTAAATCCC
+ATCGTACACATAGCCCCCCTCATAGTGTAATTGCGGATAAAAACCTTATTAATCAGTCAT
+ATAGCTCAATGGTTGTGCATTCAGGGAATGCGATCGCCACTTAACGGGTTGCGGGTTGTT
+GGTCACCCGACATCTGTGTGCTAATCTTTTTCATCTTTAGTCATTAGTAAAGGCGTTACT
+ATAAATGACGCTACGAGAATTTTTTTAACTAGAGAGGTGGATAGGCCAGTGAAAATCTCT
+CAGCCAAAACAGTGGGAAAAGGATCGTGAAATGAGCATGAATTCGCAGCCGGAACTGAAG
+TTGAGTACCCGTACCGAACAACTCGCCAGTAGTCGTGATGCCGCTATGCAAAAATTTCTG
+GACGGCATGACGCTGATTGCCGAAGCCTCAGCAATTTGCGGGTTTTCACTGTTTAACAGC
+AAAATTATGGCCCCTAATGCTTTTGGCCTTCCTGCGTCCCTGGCCGCAAGCATCGAGGAA
+GGGCGACAGCAAATAGACCGTAAGACATGGAACAATCTTTTTGAAGAAACGGGTATTGAC
+CGATTCTGGAATCACAACCAGCGGGCGGAGTTCCGTGAGTCTCTCCGGAACGCTCCGCCA
+ATTGCGTCGTTAACCGTAATCCGCAGTACATTGCGCCAGGCAGTTGCCATGCGCAGCATT
+ACGCTTGCTGAAGGGTTTGTTGATCTGCTATGCCAGCTTGATCGCCGGTATAAAACTAAT
+GCCTAGCAATTTGTGATGCCAAAAAAACTGGTACTACGCGGCATTTTTCCCGACTCGAAC
+ATGATGAGATATAATGGCTTTTCTCAGGATAATCTCTTCTATTTAAACGACTTTGAGAAT
+GTCGTTTGCATCTGCTCCAATGCAGCAACACCGCCTGTCGGCAGTGGAATGAACATGTAC
+GATCGGCTTGCTGTCTTACGGAAAACCGATTTCACGGGTGACATTACCGACCCGAAGGGC
+TGGAAGTTCCGATTGTTCGGAAATGGTAACGTCCATATCTCAGTTGAGTGTGAAAGCCTG
+CATAACGCACTGAATGACCTGATTAGCATTTATTTTGCCAACCAGATCCCGGCCAAAGGA
+TAAGAATGATGACTGACAATGTAAATTTGATGAACGGGGATGAACAAACTGCGTCCAGTT
+TAAGTGAAGAGACTTCAAAAACGCCCCCTCTAAGCCCCGAGTTACTGAAGAATTCCCCTT
+ACTCGTCAATAGCTAAGGTTAAATATTTCACCGAGATTGAACAAATCTGCCTCGATAAGA
+GCATCAGCACCGAAAACCTCGACCAGTTTTTCAAAGCCCACTGGCTGCGGGATAAAATGG
+GGGGGTCTTTTGCCCGGGCTCAGGAGATGCTGGCGGCCTACAAGCAATACGTGGACGAGG
+TGCCCGAGGAAGCACGCGCGATTGAAATCCCTGACCAGATTAAAGATGCATTCAGTGATT
+TTACTGCGTTTATCACCTGGTACTTCCGCTTAAGCTATACGGCTATCCAGAGTGATAGCG
+TGAAAATTGCGAAGGCAGAAATTACTCAGTTACGGCAGCGGAATGCTGAAATTCTGGAAG
+AACTGTCACAGTCGAAAGAACAGGCTACAGTCCTGAATAACGAAAAAGTTAACCTGATTA
+ACCTGCTGGAGCAGCAGCGTGAACTCTCCAGTAAATTAGAAGATTCACTTCAGGAAGCAG
+AAGAAACTCTGGCAGGAACTCAAAGTGAATTACAGCATGCCCAAAACGAGATCCAGCTTT
+TACAGCAGACAGTAGGGACACTGAACCAGCAACTGAGTGAGCGCAAACAGGAACTGGCCT
+CGCAGCAGGAGTATCAGAAGCAGCTGAATGATGAGAATAAAGCGCAGCAGGTAGAGCTGA
+CAGCCCTCAAAAGCCAGAATGATCACTTACAACGGACCGTGTCTGATTTAAAAGTCAGTG
+TCAGTCAGCTTGAACAGGACCTTTCCTCAGTACAGACCCATTCCTCTGAATTGAGCTCAT
+CTTTAGCCGAAAAGGACACGACCCTGACGCTCGTGCGGTCGGAGCTCTCAACAGCTAAAG
+GGGAGAATGACCAACTACGAGCTGAAGCACAACGCTTAGCTGATGAGAGCCTGGTTGCCA
+AAAAAGTGCAAACAGATCAGACAGAAGAGCTTCAACAGCTCAGGAATCAGATGATTTCCA
+TGGAAGCGACACTCAATGCGGAAAAGACCATTGCCGAGTCTTTACGAGGAACAATCAAGC
+AGCTTACCGAAGCTATGACCGGCGCAGTTGCCATCAAACCTAAATCCTCTGGGGCATCAA
+AACCGCGAAACAAAAAGACGACATAACTGCTCCCGCCAGGAATTTGCAATAGACTTAAAT
+TCCTGGCGTCCACAGGCTCTTTATCCCGTTCGCAGGAGTTTACGTCCTTCCGACAGCATT
+AGGCTGATTTTCCCCGAATCACTGATCTCAATAGCATCAACCAGGCTAGTGATCCCGCCA
+ACAGCTTGCTGTTGTGAAATAGCTCCCAGTTTGTAGTCATCGAGTACTGCCGCCAAAAAC
+GCCTTCAGTTTAACCTGCTCACTCATCGAAAGTATGTACGCCATTTTTAGCCCAATTTTA
+AGGTTGTGATTCGGGTTAATTTTATCGTCTAGCTTCCGGGAAATGAGGGAGTTCCTGGTA
+TTCAGTCTTCTCCGTAGCATCCCAGTGCCACCATCCATAGGCCCCATATTCCTGGTTGTA
+ATACGCCTTCTTAAGTTCCTTTCGCGCAAGATAGGCAGGTGTCGACATCCCGAAAACTTC
+CATCGGGAACGGCTTATCACTTCGTGTATCCAGTAAATAAAAATCTGGGAAAACATCGCT
+CGCACTGGCGTCATACCGCATAGGCTTAACATAGTGCCGGTGTTCGGCATCAAGTTTACG
+GGACACTATCGCTTCGTAGGAGGAGTCCAGAGGTATCCAGTTATCACTCACCAGCATAAG
+CACTATCTGATGAGCTCGTGCAGAGATACCTCTACTGGTCACCGATACGGGAGATGTAAG
+AGCAAAAACAACAACTTTGCCCCCATTTTTCCAGGCGGCATATTCCAGAGGGAATCGCCG
+CTTCACGCTATCCCAGTGCCCGTCTGAGTTAAAGAAGGTAAGGGGCATACCGCCGAAGTT
+ACGCATAGGTAGAAACTTCAGCGGCTTCTCATGCTTTTCTGCGTCATAGCGCGGCAGTAC
+TGATAGCAGCAGCAGTCGTTTGTCGCTCAGTTCCGCCGACGACAGCAGTTGAACCTGCTC
+ACTGGCCACTTTGCTTTTAGAGTCCGCCACCCCGATAAAAAGATGGTCGCCAATACATGC
+TCTACCCGATCTAATCTGCTTTGCGGCTTCCAACATCCGGTATCGAACCAGCGAATCATT
+TCGCTTCCCGGCCATATTCGGATACCAGACATTAAGACCGGCTTCAGTCCACAACAAACT
+CAGAAGTCCGGAGAGGGTCATTGAAGCCTGGCCACCTTCAGGTCGCTGGATTTGGGGCAG
+GGAAGGAACCTCAGACTTTTCCGGCGGATCTTTCTCCGTCATGCCTATTCCAAGGCGGAT
+TGACATGGTCCCCTCATTGTTGATGCGTACAACATTGCTGGCATAACCCTTTAACCCTGT
+ATGCCTGGCATCAAGGTCGAAAAACACACACGATGGATCATGCTCAGTGCCTGTATTTGC
+AGCCTTAATCAGGATGAACGTATCACTGTTTGGTAGTGAGCGGACGTAGAGACGCTTTGC
+GCCTTTTCCCCGACATCCGCAGCTGATCACAGATTTCTGCCCGGACGTGTGGTGTGCTTT
+CTTCAGGGCCGACTGCCATCCCTTTACATACTCATCCTGTGTCTGAAATTCAGCCGAGTA
+TCGTTTCGTGTTTGGTTCGTCATCGTAAGCAATAAAAACTGCAAACTTCTGGCCCATGGG
+ACCTCCTGAAATTTAAAAATACTAATAGCCTAGCCATATCAATACTTCTTGCGCGTTGTA
+CTCTTCCCTCTCACCCAACTCGGAAAAAAATACGTCTATGTCGCTGGCTACGACGCCATG
+TTTTGCAAGCTCTTGCAGAGCTCTCTGTTTTGAAATGGTGAGGTCTTCTGCTGAATCAAA
+ATACGTCATCATTACCTCCTGATGAAGGAGTTGACTGAAGCAGGCCTTTCTCTCCCTGCC
+CAGGTTTTTTTCTGTGTAAAAGTTACAATATTAGTGAAATAAACCATTACGTTAACCTGC
+AAAATCACACAGAAGAATTACTATGATGCCGCTTCAAACTCTCCCTTGAGACGAGCCGCA
+ACGGCGATCTCAATACGGCTTCGAAGCAAACTGGCCACGGCCGCAAATACGTCGACGATG
+ACCGAATTGCCGAACTGGCGATAGGCCTGGGTATCAGAGACTGGAATGCGAAAAGTAACT
+TTTCCCGGTTGCTCGAATCCCATAAGGCGGGCACATTCTCGCGGGGTTAAACGGCGCGGG
+CGCCTTGCCATATTTACAGGATCATTAAAGTCCTTTTCGCCTATGCTGTGATCCCATCCA
+CGGTCTAGCAAAATTTCAGAGCCATCACGATAGTACCGTGCGCTGAGTGTTCTGCAAACA
+ACTGATTTATCAAGTGGATTTACCAGTCCGAAGCCAAATCCATTACCTTTTGCCTGGTGC
+TTTTTAGCGTAGTTATAAAGGTACTCCCAGAGCTTTGGAGAAAGGATGTAACGGCTATCG
+ACCTCAGCGTCCAGCAGCTCCCCAAGGGTTGGCCGTCGTGAAGGATAAAGAGCCGATACA
+CCACTTAACGAAAAGCCATCATGGAGCTTCAGATCGCGCCTGAATCCAACCAACACGATA
+CGTTCCCGGTGCTGAGGCCTGAAGTTCTTACCGTCAATTATTTTGGGGTCCTTTGATCCG
+TGAGCATCGCAGTCGGCAACATCGTAGCCAAGTTCATCAAGCGCTTTCATGATGATGCGG
+AACGTATTTCCCTTATCGTGGCTCTTCAGATTTTTTACGTTCTCAAGAACGAAAATGGCA
+GGCTGTTTGGCTCGGATGATCCGGGCGACATCAAAAAAAAGGGTCCCCTGGGTGTCGCAT
+TCAAAGCCGTGTTTTCGGCCCAAAGAGTTCTTTTTGCTGACACCGGCAATACTGAACGGT
+TGGCATGGGAAACCTGCGAGCAAAACATCATGGTCTGGGATGGATGCATCGATAGAAGCA
+TAGGCCTGGTCATCCGAAACATCGGGAAGATTACTGAGTGTAATGTCCCGGATATCTGAG
+TTGAAATAGTGCTCAGTCTCGTCACAGTACCAGTTTGCACTGTATGTCCGGCGGGAGAAC
+TGATTCCATTCGCTTGTAAACACGCATTTCCCGCCAATGGCGTCAAAACCACTCCGGAGG
+CCACCGATCCCAGCAAACAAGTCAATAAAACGGAAAAATTTCTGGTCATAGTCTGCTGGG
+CGTGAGGGGAGCAACGATCGAAGATAATGATATTCTTCCTGGGTTATTCGACATTCATTA
+ACTGAACCTTTGATCTGGCGAATAAGTGATGCCCTCGACCAGTCGCTGCCGGTTGCAGCA
+TTAAGTTGCGCAGCCAAATCTTTTACGTCATAGATACTTGCAACCTGCACCAGTAATTTA
+TGGATAGAGGAAGGCGTCTCATCATTAAGCAATGCTGTTATTGCAGGCTCAGTTCTATCG
+TTGTACATCCTTACTCCATGAAATGTGATTAATTTAGGACCTCAGACTACCACGCGGTGA
+AAATTCAATTTTTTGTTAAAGGCCTTTATTTTCATCTCCTGAATTAAAATTTTTAATCCA
+CTCAAATTGCCTCCGTTAACGGAAAATCGCCGAGTTTCTAATTGGTACAATAAGCGCGTC
+AAATCACACGACTTATTTGTTACTACGAACCATCTAATTCAGGGAGAACGTATGACTCTG
+TTGAAAAAGTTACTTTTGCCGACATTAATCGTCCTTTTCCCGGCGGCAACTCTGGCTGCC
+CAATCGTCATTTGAAGCGAAAGTGGTAAAAATTATCGACGGGGACACAATCACCGCGCTC
+GATGGTCAGAATACAAGCATCAAAATCCGCTTGTACGGTATTGATGCCCCCGAAAGTAAG
+CAGGCCTTTGGACAAAAGTCTAAACAAGCGTTGAGCGCCGCGATTGCTGCACAGAATATT
+ACGGTAATAGACCACGGACCTGATATTTACGGCAGGATGCTGGGAACCATTTGGCTTGAT
+GGTTATGACATAAACGCCTCAATGGTAGACAGCGGCTATGCATGGGTATACCGGTTTGAC
+GGTAATGCCATCGTCCCAAACTATCTGAAATTCGAAGCTTCAGCTCAGAAAGCAGTTAAA
+GGCCTCTGGGTAGATCCTAATCCCGTTGCCCCCTGGGAGTGGCGCCAGCAAAACCAGAAA
+CCTCAAAAGACGAAAAGCAGGGGGTGACCGCGATGACAAGACAGCATCCTTTATTGAAAA
+TTGCGCTTAATAGCGATGGACATCTTTCGTGGCCAATTTTACCAGGAGAGACTCACCGCT
+GCCCAACGTGTCTGCGACACGTTACTACGGGCCCGGATGGGGATTTGGTGCATTCGATGG
+AGGAGGGCGGCAACGTCTGCATACCTTCAGCTTCTGTTGTTATTTCAAAGGCAATTATTG
+AAATGCTCAGCGCAGGCGAACGTCTCTATGTTAATCCAATCAAGAATGGGAATAAAACCC
+TAGCACCGTCATTTATCTTTCTGCATACAGACCAGCAACTCCGCCCATTTATCAATTCGG
+ATTATCAGCCAGCCGGTGCCAGCTGGAGAAGTGATAAAGGTTTCAGGCTTGGCCTTTTCT
+TTATGAATGAGCGAGCCTCTAAAATTAATAAAGACCAGTTTGATTTTATTGCAGTAATAG
+ACCCATTGACCTTTCAGTCAGAATTTGATGCGACATGGTCCCGTGGTGAATTTGATGACC
+CTCTAAAGGCATTACGGTATTCAATTGTTTCTGAAAACTTGTCTTCCGTCTGGGTGAAAT
+GGCCCGTAAAAAACCTGCAACCGAGGAAAGAAACGGTGATGGCCGATTACTGGTATGACT
+ATTATTCACCTCATTCCCCAGCTCAGCAGGCTGCTTGCACAGCAACGGTGACTGGAATAG
+ATGGGAATGTATCCGGCGAAACTATTTACATGCTCCAGATCGCTTTAGAGCGGTCGACAG
+TTGAGTACCAGCTTGTAAAATCGCTAGGGGTCATATTGCTACTGGATAATACAGGAAATT
+TGGTATCGGAGGCGCAGCCGCACTTTGATATAATCATCAAGGCATGCATATCGGGCGTCA
+GAGACTTTGTTCTTCAGAATCCTCGGACGCTGGGTTTTGAAAACAAGGTTGCATAGTTAT
+AAAAAATCTTGCCGTTCTCAAGGCATCATTAAAAATTAAAATGAGGTATACATGGTACAA
+GTACTCAACACCACTGGTTTGAATTATCAACTTGAAAAAACAATCACTGAAGCTGAGGAA
+AGGATAATTCTCATTAGCCCATACCTTAAGCTTAGTAATCGCATTAAAGAGCTGATCGAA
+GATAAAAATAGACTAAAAGTTGACATCAGAATAGTTTATGGGAAATCAGAACTAAACTCT
+AAAGAATATGAATGGTTAACAAACCTGCCTTTTGTACGCCTTAGTTTTTGTAAAAACCTC
+CATGCAAAATTATATGCCAATGAAAATCAATGTATTGTGTGCAGTCTAAACCTTTATGAT
+TTTAGTCAGATTAATAACCATGAAATTGGAGTGTTAATTATTAAGGAGCAGGAGAAGGAT
+GCATACACTTCATCGTTAAATGAAGCTCAGCGACTGATCAGAATCAGCACAGATAACATT
+CAGCCACTAACAACAGATAAAGAAACAACAGGTTCAAAAGAAAGTGAAAAAACTAATAAA
+GAGTCATCCGACTTCACTTCAGCCTTTCATGAAGAACCATTAACAAATCAAAATGGATTG
+ATTACTGATTTAAATACAAATTCAAAACTCACTTCGACAAATCTAGCAAAAAATCATAAA
+ACTGATTTGTTATCTCTATATAAAAAATTAATCGAAGCTGGATATCTCATGGACGTAGAA
+GGAAAATACATATTGACTGATGCTGGCATAGCGGCAGGGGCAGAAGCCAAGCCAAATCGA
+TATAAAAAAGGAGAAAACTATTTTCTGTGGCCTGATAACCTAGCATTATGATTTTACATC
+ACGTACTGTGTCCCTGCGTAGCCATGAGGGACATAGAAGGGTCAATGAAAAATAGCTTGT
+TTAGTACTGATTCGAATACTGGGGTCACCTTTACCATCTCGCCTCACGGCCAGGGATGTA
+AACTGTCTGTAGAGCCTGAATATCGTCGCAAAGGAACACAAAATTACGATGGCTGGTTCC
+CTCGATATTACACTAAGCCACAATACGCTAAAGCAGCATTGACACGGTTTCTTGGGGAAC
+CTGTTAATTGGTTGGATTGTAATGACCATAATTAGGGCTTTCAGACAGTTAGCCAACAAA
+AAAATCTTTAACTCACCAACAATATTGAGAATTACCAAATGGAAAATCTGGATGTTGTAT
+CAGCGGTAGATTTTTACTTAGAAAAAGCATTTTATTTATTTGGATTCATAATGTTAGGTA
+TGGCATGGCTTACTTTTCGTGCTGGTTCAACTTATCAGCATTTTAAAAATGCTGATAAGT
+TAGTCAGTGAAGGTAGAGGCTCAGTTTCAAGCGGTAAAGAGCCTGAAATGATCCGGCGGC
+TTAAGTTCCAAACATTGATCTGGTACATTGCTAATTGTGTGGTGTTAGCATTATCCACTA
+TTGCTTTTGGGTATTTATTTTATCTTCTACACAGTTAATCAAACAATGAGAGATTTTTAT
+TTTCTATAATCAGGTACATATTTATTTTCTTGGAGATATTGATGAACGAAAACAATCCAC
+TTCTGCAATCTGAACTGCTGTTTTGAATACGTTAGTGGAGGTAATGCCTATGGTATTAGA
+TATCATGACTGTTTTGGCCTTTGCGTTTTTGGTTCTGTATAAAATAGCTTCACGAATCAT
+TTCTATGTCTGGTGGTGCGATAAGGTTCTGATTTTCAGAACCTTTTTTTAAAGTTTACTA
+GAGTAGATTTCATTTTGAATAAACGTAAGATACTCCTCACTTTGACTGCCTTTCCTAAAT
+TTTTTCTGTCCTTCAAAATCTATATCAGGTATGAAATGTATTAACTGGCTATCTTGGTAA
+AGTGAAAGAACGGAATTTTGATTGAGCACCTTAGAGTCCATTAATTGATAAACTGATTCA
+ATACATGCACCTATAAGAACATCACACAATTGCACGCTTGGGCTTTCTTTCGAATCAATT
+TGATAGACTTTTTTAAGGTTTAGAGGGAATGAGATAGTTGCTATCTCGGAATGTTTAAAC
+TCTCCTTCCTTATCACAATTGATCAAAAAGTTAAGGCGTTCATTGTAAGTTAGCAGATTT
+TTAGAACGATCATGCTCAATTGCATACTCTCCAGAGGACATCATTTCCGTGCGAGAAATT
+AATGCATTTAAAATAGTAAATGAGGCATCAGTGCTAATTCCATCAGTCATGATGGCATCA
+ATGCAATCTGGGTGGTTAAATGCCAAAGGACCAAAAAACTCTTTTAACCTTTGCCAATCA
+AGCCTCCTTATTTTGCTTATTAGCAAACTCACTGAATCTAATGTTTTTTCTTTCATAGCA
+TTTTGAAACTGAAGCAGAACACTGATGAATCCCCTAATGATTTTTATCAAAATCATTAAG
+TTAAGGTAGATACACATCTTGTCATATGATCAAATGGT
+>NODE_25_length_15938_cov_42.5346':NODE_32_length_86_cov_81.3333';
+ACCATTTGATCATATGACAAGATGTGTATCTACCTTAACTTAATGATTTTGATAAAAATC
+ATTAGGGGATTCATCAGTGTTCTGCTTCAGTTTCAAAATGCTATGAAAGAAAAAACATTA
+GATTCAGTGAGTTTGCTAATAAGCAAAATAAGGAGGCTTGATTGGCAAAGGTTAAAAGAG
+TTTTTTGGTCCTTTGGCATTTAACCACCCAGATTGCATTGATGCCATCATGACTGATGGA
+ATTAGCACTGATGCCTCATTTACTATTTTAAATGCATTAATTTCTCGCACGGAAATGATG
+TCCTCTGGAGAGTATGCAATTGAGCATGATCGTTCTAAAAATCTGCTAACTTACAATGAA
+CGCCTTAACTTTTTGATCAATTGTGATAAGGAAGGAGAGTTTAAACATTCCGAGATAGCA
+ACTATCTCATTCCCTCTAAACCTTAAAAAAGTCTATCAAATTGATTCGAAAGAAAGCCCA
+AGCGTGCAATTGTGTGATGTTCTTATAGGTGCATGTATTGAATCAGTTTATCAATTAATG
+GACTCTAAGGTGCTCAATCAAAATTCCGTTCTTTCACTTTACCAAGATAGCCAGTTAATA
+CATTTCATACCTGATATAGATTTTGAAGGACAGAAAAAATTTAGGAAAGGCAGTCAAAGT
+GAGGAGTATCTTACGTTTATTCAAAATGAAATCTACTCTAGTAAACTTTAAAAAAAGGTT
+CTGAAAATCAGAACCTTATCGCACCACCAGACATAGAAATGATTCGTGAAGCTATTTTAT
+ACAGAACCAAAAACGCAAAGGCCAAAACAGTCATGATATCTAATACCATAGGCATTACCT
+CCACTAACGTATTCAAAACAGCAGTTCAGATTGCAGAAGTGGATTGTTTTCGTTCATCAA
+TATCTCCAAGAAAATAAATATGTACCTGATTATAGAAAATAAAAATCTCTCATTGTTTGA
+TTAACTGTGTAGAAGATAAAATAAATACCCAAAAGCAATAGTGGATAATGCTAACACCAC
+ACAATTAGCAATGTACCAGATCAATGTTTGGAACTTAAGCCGCCGGATCATTTCAGGCTC
+TTTACCGCTTGAAACTGAGCCTCTACCTTCACTGACTAACTTATCAGCATTTTTAAAATG
+CTGATAAGTTGAACCAGCACGAAAAGTAAGCCATGCCATACCTAACATTATGAATCCAAA
+TAAATAAAATGCTTTTTCTAAGTAAAAATCTACCGCTGATACAACATCCAGATTTTCCAT
+TTGGTAATTCTCAATATTGTTGGTGAGTTAAAGATTTTTTTGTTGGCTAACTGTCTGAAA
+GCCCTAATTATGGTCATTACAATCCAACCAATTAACAGGTTCCCCAAGAAACCGTGTCAA
+TGCTGCTTTAGCGTATTGTGGCTTAGTGTAATATCGAGGGAACCAGCCATCGTAATTTTG
+TGTTCCTTTGCGACGATATTCAGGCTCTACAGACAGTTTACATCCCTGGCCGTGAGGCGA
+GATGGTAAAGGTGACCCCAGTATTCGAATCAGTACTAAACAAGCTATTTTTCATTGACCC
+TTCTATGTCCCTCATGGCTACGCAGGGACACAGTACGTGATGTAAAATCATAATGCTAGG
+TTATCAGGCCACAGAAAATAGTTTTCTCCTTTTTTATATCGATTTGGCTTGGCTTCTGCC
+CCTGCCGCTATGCCAGCATCAGTCAATATGTATTTTCCTTCTACGTCCATGAGATATCCA
+GCTTCGATTAATTTTTTATATAGAGATAACAAATCAGTTTTATGATTTTTTGCTAGATTT
+GTCGAAGTGAGTTTTGAATTTGTATTTAAATCAGTAATCAATCCATTTTGATTTGTTAAT
+GGTTCTTCATGAAAGGCTGAAGTGAAGTCGGATGACTCTTTATTAGTTTTTTCACTTTCT
+TTTGAACCTGTTGTTTCTTTATCTGTTGTTAGTGGCTGAATGTTATCTGTGCTGATTCTG
+ATCAGTCGCTGAGCTTCATTTAACGATGAAGTGTATGCATCCTTCTCCTGCTCCTTAATA
+ATTAACACTCCAATTTCATGGTTATTAATCTGACTAAAATCATAAAGGTTTAGACTGCAC
+ACAATACATTGATTTTCATTGGCATATAATTTTGCATGGAGGTTTTTACAAAAACTAAGG
+CGTACAAAAGGCAGGTTTGTTAACCATTCATATTCTTTAGAGTTTAGTTCTGATTTCCCA
+TAAACTATTCTGATGTCAACTTTTAGTCTATTTTTATCTTCGATCAGCTCTTTAATGCGA
+TTACTAAGCTTAAGGTATGGGCTAATGAGAATTATCCTTTCCTCAGCTTCAGTGATTGTT
+TTTTCAAGTTGATAATTCAAACCAGTGGTGTTGAGTACTTGTACCATGTATACCTCATTT
+TAATTTTTAATGATGCCTTGAGAACGGCAAGATTTTTTATAACTATGCAACCTTGTTTTC
+AAAACCCAGCGTCCGAGGATTCTGAAGAACAAAGTCTCTGACGCCCGATATGCATGCCTT
+GATGATTATATCAAAGTGCGGCTGCGCCTCCGATACCAAATTTCCTGTATTATCCAGTAG
+CAATATGACCCCTAGCGATTTTACAAGCTGGTACTCAACTGTCGACCGCTCTAAAGCGAT
+CTGGAGCATGTAAATAGTTTCGCCGGATACATTCCCATCTATTCCAGTCACCGTTGCTGT
+GCAAGCAGCCTGCTGAGCTGGGGAATGAGGTGAATAATAGTCATACCAGTAATCGGCCAT
+CACCGTTTCTTTCCTCGGTTGCAGGTTTTTTACGGGCCATTTCACCCAGACGGAAGACAA
+GTTTTCAGAAACAATTGAATACCGTAATGCCTTTAGAGGGTCATCAAATTCACCACGGGA
+CCATGTCGCATCAAATTCTGACTGAAAGGTCAATGGGTCTATTACTGCAATAAAATCAAA
+CTGGTCTTTATTAATTTTAGAGGCTCGCTCATTCATAAAGAAAAGGCCAAGCCTGAAACC
+TTTATCACTTCTCCAGCTGGCACCGGCTGGCTGATAATCCGAATTGATAAATGGGCGGAG
+TTGCTGGTCTGTATGCAGAAAGATAAATGACGGTGCTAGGGTTTTATTCCCATTCTTGAT
+TGGATTAACATAGAGACGTTCGCCTGCGCTGAGCATTTCAATAATTGCCTTTGAAATAAC
+AACAGAAGCTGAAGGTATGCAGACGTTGCCGCCCTCCTCCATCGAATGCACCAAATCCCC
+ATCCGGGCCCGTAGTAACGTGTCGCAGACACGTTGGGCAGCGGTGAGTCTCTCCTGGTAA
+AATTGGCCACGAAAGATGTCCATCGCTATTAAGCGCAATTTTCAATAAAGGATGCTGTCT
+TGTCATCGCGGTCACCCCCTGCTTTTCGTCTTTTGAGGTTTCTGGTTTTGCTGGCGCCAC
+TCCCAGGGGGCAACGGGATTAGGATCTACCCAGAGGCCTTTAACTGCTTTCTGAGCTGAA
+GCTTCGAATTTCAGATAGTTTGGGACGATGGCATTACCGTCAAACCGGTATACCCATGCA
+TAGCCGCTGTCTACCATTGAGGCGTTTATGTCATAACCATCAAGCCAAATGGTTCCCAGC
+ATCCTGCCGTAAATATCAGGTCCGTGGTCTATTACCGTAATATTCTGTGCAGCAATCGCG
+GCGCTCAACGCTTGTTTAGACTTTTGTCCAAAGGCCTGCTTACTTTCGGGGGCATCAATA
+CCGTACAAGCGGATTTTGATGCTTGTATTCTGACCATCGAGCGCGGTGATTGTGTCCCCG
+TCGATAATTTTTACCACTTTCGCTTCAAATGACGATTGGGCAGCCAGAGTTGCCGCCGGG
+AAAAGGACGATTAATGTCGGCAAAAGTAACTTTTTCAACAGAGTCATACGTTCTCCCTGA
+ATTAGATGGTTCGTAGTAACAAATAAGTCGTGTGATTTGACGCGCTTATTGTACCAATTA
+GAAACTCGGCGATTTTCCGTTAACGGAGGCAATTTGAGTGGATTAAAAATTTTAATTCAG
+GAGATGAAAATAAAGGCCTTTAACAAAAAATTGAATTTTCACCGCGTGGTAGTCTGAGGT
+CCTAAATTAATCACATTTCATGGAGTAAGGATGTACAACGATAGAACTGAGCCTGCAATA
+ACAGCATTGCTTAATGATGAGACGCCTTCCTCTATCCATAAATTACTGGTGCAGGTTGCA
+AGTATCTATGACGTAAAAGATTTGGCTGCGCAACTTAATGCTGCAACCGGCAGCGACTGG
+TCGAGGGCATCACTTATTCGCCAGATCAAAGGTTCAGTTAATGAATGTCGAATAACCCAG
+GAAGAATATCATTATCTTCGATCGTTGCTCCCCTCACGCCCAGCAGACTATGACCAGAAA
+TTTTTCCGTTTTATTGACTTGTTTGCTGGGATCGGTGGCCTCCGGAGTGGTTTTGACGCC
+ATTGGCGGGAAATGCGTGTTTACAAGCGAATGGAATCAGTTCTCCCGCCGGACATACAGT
+GCAAACTGGTACTGTGACGAGACTGAGCACTATTTCAACTCAGATATCCGGGACATTACA
+CTCAGTAATCTTCCCGATGTTTCGGATGACCAGGCCTATGCTTCTATCGATGCATCCATC
+CCAGACCATGATGTTTTGCTCGCAGGTTTCCCATGCCAACCGTTCAGTATTGCCGGTGTC
+AGCAAAAAGAACTCTTTGGGCCGAAAACACGGCTTTGAATGCGACACCCAGGGGACCCTT
+TTTTTTGATGTCGCCCGGATCATCCGAGCCAAACAGCCTGCCATTTTCGTTCTTGAGAAC
+GTAAAAAATCTGAAGAGCCACGATAAGGGAAATACGTTCCGCATCATCATGAAAGCGCTT
+GATGAACTTGGCTACGATGTTGCCGACTGCGATGCTCACGGATCAAAGGACCCCAAAATA
+ATTGACGGTAAGAACTTCAGGCCTCAGCACCGGGAACGTATCGTGTTGGTTGGATTCAGG
+CGCGATCTGAAGCTCCATGATGGCTTTTCGTTAAGTGGTGTATCGGCTCTTTATCCTTCA
+CGACGGCCAACCCTTGGGGAGCTGCTGGACGCTGAGGTCGATAGCCGTTACATCCTTTCT
+CCAAAGCTCTGGGAGTACCTTTATAACTACGCTAAAAAGCACCAGGCAAAAGGTAATGGA
+TTTGGCTTCGGACTGGTAAATCCACTTGATAAATCAGTTGTTTGCAGAACACTCAGCGCA
+CGGTACTATCGTGATGGCTCTGAAATTTTGCTAGACCGTGGATGGGATCACAGCATAGGC
+GAAAAGGACTTTAATGATCCTGTAAATATGGCAAGGCGCCCGCGCCGTTTAACCCCGCGA
+GAATGTGCCCGCCTTATGGGATTCGAGCAACCGGGAAAAGTTACTTTTCGCATTCCAGTC
+TCTGATACCCAGGCCTATCGCCAGTTCGGCAATTCGGTCATCGTCGACGTATTTGCGGCC
+GTGGCCAGTTTGCTTCGAAGCCGTATTGAGATCGCCGTTGCGGCTCGTCTCAAGGGAGAG
+TTTGAAGCGGCATCATAGTAATTCTTCTGTGTGATTTTGCAGGTTAACGTAATGGTTTAT
+TTCACTAATATTGTAACTTTTACACAGAAAAAAACCTGGGCAGGGAGAGAAAGGCCTGCT
+TCAGTCAACTCCTTCATCAGGAGGTAATGATGACGTATTTTGATTCAGCAGAAGACCTCA
+CCATTTCAAAACAGAGAGCTCTGCAAGAGCTTGCAAAACATGGCGTCGTAGCCAGCGACA
+TAGACGTATTTTTTTCCGAGTTGGGTGAGAGGGAAGAGTACAACGCGCAAGAAGTATTGA
+TATGGCTAGGCTATTAGTATTTTTAAATTTCAGGAGGTCCCATGGGCCAGAAGTTTGCAG
+TTTTTATTGCTTACGATGACGAACCAAACACGAAACGATACTCGGCTGAATTTCAGACAC
+AGGATGAGTATGTAAAGGGATGGCAGTCGGCCCTGAAGAAAGCACACCACACGTCCGGGC
+AGAAATCTGTGATCAGCTGCGGATGTCGGGGAAAAGGCGCAAAGCGTCTCTACGTCCGCT
+CACTACCAAACAGTGATACGTTCATCCTGATTAAGGCTGCAAATACAGGCACTGAGCATG
+ATCCATCGTGTGTGTTTTTCGACCTTGATGCCAGGCATACAGGGTTAAAGGGTTATGCCA
+GCAATGTTGTACGCATCAACAATGAGGGGACCATGTCAATCCGCCTTGGAATAGGCATGA
+CGGAGAAAGATCCGCCGGAAAAGTCTGAGGTTCCTTCCCTGCCCCAAATCCAGCGACCTG
+AAGGTGGCCAGGCTTCAATGACCCTCTCCGGACTTCTGAGTTTGTTGTGGACTGAAGCCG
+GTCTTAATGTCTGGTATCCGAATATGGCCGGGAAGCGAAATGATTCGCTGGTTCGATACC
+GGATGTTGGAAGCCGCAAAGCAGATTAGATCGGGTAGAGCATGTATTGGCGACCATCTTT
+TTATCGGGGTGGCGGACTCTAAAAGCAAAGTGGCCAGTGAGCAGGTTCAACTGCTGTCGT
+CGGCGGAACTGAGCGACAAACGACTGCTGCTGCTATCAGTACTGCCGCGCTATGACGCAG
+AAAAGCATGAGAAGCCGCTGAAGTTTCTACCTATGCGTAACTTCGGCGGTATGCCCCTTA
+CCTTCTTTAACTCAGACGGGCACTGGGATAGCGTGAAGCGGCGATTCCCTCTGGAATATG
+CCGCCTGGAAAAATGGGGGCAAAGTTGTTGTTTTTGCTCTTACATCTCCCGTATCGGTGA
+CCAGTAGAGGTATCTCTGCACGAGCTCATCAGATAGTGCTTATGCTGGTGAGTGATAACT
+GGATACCTCTGGACTCCTCCTACGAAGCGATAGTGTCCCGTAAACTTGATGCCGAACACC
+GGCACTATGTTAAGCCTATGCGGTATGACGCCAGTGCGAGCGATGTTTTCCCAGATTTTT
+ATTTACTGGATACACGAAGTGATAAGCCGTTCCCGATGGAAGTTTTCGGGATGTCGACAC
+CTGCCTATCTTGCGCGAAAGGAACTTAAGAAGGCGTATTACAACCAGGAATATGGGGCCT
+ATGGATGGTGGCACTGGGATGCTACGGAGAAGACTGAATACCAGGAACTCCCTCATTTCC
+CGGAAGCTAGACGATAAAATTAACCCGAATCACAACCTTAAAATTGGGCTAAAAATGGCG
+TACATACTTTCGATGAGTGAGCAGGTTAAACTGAAGGCGTTTTTGGCGGCAGTACTCGAT
+GACTACAAACTGGGAGCTATTTCACAACAGCAAGCTGTTGGCGGGATCACTAGCCTGGTT
+GATGCTATTGAGATCAGTGATTCGGGGAAAATCAGCCTAATGCTGTCGGAAGGACGTAAA
+CTCCTGCGAACGGGATAAAGAGCCTGTGGACGCCAGGAATTTAAGTCTATTGCAAATTCC
+TGGCGGGAGCAGTTATGTCGTCTTTTTGTTTCGCGGTTTTGATGCCCCAGAGGATTTAGG
+TTTGATGGCAACTGCGCCGGTCATAGCTTCGGTAAGCTGCTTGATTGTTCCTCGTAAAGA
+CTCGGCAATGGTCTTTTCCGCATTGAGTGTCGCTTCCATGGAAATCATCTGATTCCTGAG
+CTGTTGAAGCTCTTCTGTCTGATCTGTTTGCACTTTTTTGGCAACCAGGCTCTCATCAGC
+TAAGCGTTGTGCTTCAGCTCGTAGTTGGTCATTCTCCCCTTTAGCTGTTGAGAGCTCCGA
+CCGCACGAGCGTCAGGGTCGTGTCCTTTTCGGCTAAAGATGAGCTCAATTCAGAGGAATG
+GGTCTGTACTGAGGAAAGGTCCTGTTCAAGCTGACTGACACTGACTTTTAAATCAGACAC
+GGTCCGTTGTAAGTGATCATTCTGGCTTTTGAGGGCTGTCAGCTCTACCTGCTGCGCTTT
+ATTCTCATCATTCAGCTGCTTCTGATACTCCTGCTGCGAGGCCAGTTCCTGTTTGCGCTC
+ACTCAGTTGCTGGTTCAGTGTCCCTACTGTCTGCTGTAAAAGCTGGATCTCGTTTTGGGC
+ATGCTGTAATTCACTTTGAGTTCCTGCCAGAGTTTCTTCTGCTTCCTGAAGTGAATCTTC
+TAATTTACTGGAGAGTTCACGCTGCTGCTCCAGCAGGTTAATCAGGTTAACTTTTTCGTT
+ATTCAGGACTGTAGCCTGTTCTTTCGACTGTGACAGTTCTTCCAGAATTTCAGCATTCCG
+CTGCCGTAACTGAGTAATTTCTGCCTTCGCAATTTTCACGCTATCACTCTGGATAGCCGT
+ATAGCTTAAGCGGAAGTACCAGGTGATAAACGCAGTAAAATCACTGAATGCATCTTTAAT
+CTGGTCAGGGATTTCAATCGCGCGTGCTTCCTCGGGCACCTCGTCCACGTATTGCTTGTA
+GGCCGCCAGCATCTCCTGAGCCCGGGCAAAAGACCCCCCCATTTTATCCCGCAGCCAGTG
+GGCTTTGAAAAACTGGTCGAGGTTTTCGGTGCTGATGCTCTTATCGAGGCAGATTTGTTC
+AATCTCGGTGAAATATTTAACCTTAGCTATTGACGAGTAAGGGGAATTCTTCAGTAACTC
+GGGGCTTAGAGGGGGCGTTTTTGAAGTCTCTTCACTTAAACTGGACGCAGTTTGTTCATC
+CCCGTTCATCAAATTTACATTGTCAGTCATCATTCTTATCCTTTGGCCGGGATCTGGTTG
+GCAAAATAAATGCTAATCAGGTCATTCAGTGCGTTATGCAGGCTTTCACACTCAACTGAG
+ATATGGACGTTACCATTTCCGAACAATCGGAACTTCCAGCCCTTCGGGTCGGTAATGTCA
+CCCGTGAAATCGGTTTTCCGTAAGACAGCAAGCCGATCGTACATGTTCATTCCACTGCCG
+ACAGGCGGTGTTGCTGCATTGGAGCAGATGCAAACGACATTCTCAAAGTCGTTTAAATAG
+AAGAGATTATCCTGAGAAAAGCCATTATATCTCATCATGTTCGAGTCGGGAAAAATGCCG
+CGTAGTACCAGTTTTTTTGGCATCACAAATTGCTAGGCATTAGTTTTATACCGGCGATCA
+AGCTGGCATAGCAGATCAACAAACCCTTCAGCAAGCGTAATGCTGCGCATGGCAACTGCC
+TGGCGCAATGTACTGCGGATTACGGTTAACGACGCAATTGGCGGAGCGTTCCGGAGAGAC
+TCACGGAACTCCGCCCGCTGGTTGTGATTCCAGAATCGGTCAATACCCGTTTCTTCAAAA
+AGATTGTTCCATGTCTTACGGTCTATTTGCTGTCGCCCTTCCTCGATGCTTGCGGCCAGG
+GACGCAGGAAGGCCAAAAGCATTAGGGGCCATAATTTTGCTGTTAAACAGTGAAAACCCG
+CAAATTGCTGAGGCTTCGGCAATCAGCGTCATGCCGTCCAGAAATTTTTGCATAGCGGCA
+TCACGACTACTGGCGAGTTGTTCGGTACGGGTACTCAACTTCAGTTCCGGCTGCGAATTC
+ATGCTCATTTCACGATCCTTTTCCCACTGTTTTGGCTGAGAGATTTTCACTGGCCTATCC
+ACCTCTCTAGTTAAAAAAATTCTCGTAGCGTCATTTATAGTAACGCCTTTACTAATGACT
+AAAGATGAAAAAGATTAGCACACAGATGTCGGGTGACCAACAACCCGCAACCCGTTAAGT
+GGCGATCGCATTCCCTGAATGCACAACCATTGAGCTATATGACTGATTAATAAGGTTTTT
+ATCCGCAATTACACTATGAGGGGGGCTATGTGTACGATGGGATTTACCCCGAATTAAATC
+CCATAGTACACAAAATGAACTAAATAAAGCCGAAAAACGTGACGGTGTCACATCTGGGGT
+GTTTATTTTGGTAACTAGTTATTAGTAAAGGCATGACTAAATGTATAATGGGGTAGTCGT
+TTACGTTTAGGGCTTCCTCTTTGTCGTTATGGCGGATGAGGGGCTGTTACGATAGTTAGA
+CAGTGATTACACACATTTGGCTGAGGGCTACAAAATGGCGGCGTCGCGAATTACACACCT
+AATAACGTCCTGTACCAAAGGTAAGCACAGCCAGTGCGGCTCCATGCCAGAACTGAGTAT
+CCGGTCTGGACAGACACCAGAAGAGGCAATGTCCAGCTGGGCAGCAACGATTAAACGGTC
+GCAAAGTGCTTCACCGGTACCGGCCCTGTCGCTCTATGCCGGTAATCACTGGTCAACGGC
+AAAAGAGATATTACGGACAACTGAGAACCTGGAGTTGTGGGTGATCTCGGCCGGGTTGGG
+TTTTTTGAATAGTCGTGACCTCGTGGACGCTTATGAAGCCACCTTTCATGATTTACCGTT
+CAGTCACCGACAATGGTGGCGGGAATTAACAAATACATTCGGGAAAGAAAGGACGGCGAA
+ATCTATTGAGACATTGATGGCAGCAAGACCTTTCGATGATTATGTTATCGCTGCCTCCCC
+CGTTTATATCGAGGCGACGGAGGATGATATCCTGGCAGGGGCAAGCAAATTAAATAATCA
+CATTGCCCAGTTGACGGTTGTAACGTCAGGGGAATATTCTGGACTACTTGAATCCTATTT
+AATTCGTAGCGAATCCCGTATGATGCGGCAACTATCAAGCAACATGGTATGTCTTAACAT
+CAAACTTGCTCAATATATTATTGGAAGTCGGCGCTATTCATGAACCGCACTGATGATTCC
+ATAACGCAACTATCTTCACTTTATGAACGGCTCGGAGCTGTGGCTCATGAACTGGAATAT
+TGTAAAATTCTGCTCCCTGAACACTCTGAACAACTGGATCTTGATGCCGCAGCAACATAT
+GCAATGATGCTCCGCATTGAACAGTGGGCAGCAAACGTTAAGAACGCATATAATACCAAC
+ACATACGACCCTTTCCATATTAACGAAAAGGACAAACAACTAAGAAATCAAGAGGAAGAA
+AATCAATATTAAAAGGTCTCTCCAGTAACCGAAAGTAATAATCGCATGAGACAGACGGCG
+ATTTTATCTAATCTTGCGGAGTTGGCACTACAGAGGAACTGGCAAGTGATAATGCATTTG
+TTTCCATACGCGGGGTGGTTAATGTCTTTAGGTACCAATGATTGATATCATGCGCCCAGA
+AAATCTTACGCGTCTAGCTGGCTCAAAATAATAAAAGAGTGTAATATCGCAAAGTATTCT
+ATTGATTTTATTTATTACTCTTAGTGAGGTCATATGTCCGAAGCACTCAAATCATTAAAC
+AACATTCGTACTCTTCGTGCGCAGGGCCGTGAACTGCCGTTAGAGATCCTTGAAGAACTG
+CTGGAAAAATTAAGCGTTGTTGTTGAAGAACGACGTCAGGAAGAATCTTCAAAAGAAGCT
+GAGCTGAAAGCGCGTCTGGAGAAGATTGAATCCCTGCGTCAATTAATGCTTGAAGATGGA
+ATTGACCCTGAAGAGTTACTGAGTTCTTTCTCTGCAAAGTCCGGAGCACCTAAAAAAGTT
+CGCGAACCGCGCCCTGCGAAATATAAATACACTGATGTTAATGGTGAAACGAAAACCTGG
+ACTGGCCAGGGGCGTACCCCTAAAGCACTGGCCGAACAACTTGAAGCCGGTAAAACACTG
+GATGATTTCCTCATCTAAGTTGAAATTAAAATCGCGAACAGCTCAGTTCAAAAGCCACTT
+TTCAGTGGCTTTTCTTATTAAGCCTATGTTTAGGAATATTCAAATAATCTAGGGTTTAAT
+GACAATTGTTTTGCCATCAGGTAGATAAACCCCTATTAAACGAAGGACAAAACCACGCCA
+ACCAGAATTTGCTTCCTTTATGCAGCGATACAGTTCGTTATTTTCACTTTTCAGTTTATT
+CCATTCAAGAAAAAGAGATCTCCGGATCTAACTCTGAGATGTGTTTCACTTCGTTGTTTA
+TGCGTACAGTATTGATACCATTCCCAGTCATAAAAAGTCACCGTAGGTTTGATAAACAGG
+TTGAACATTGACAAAACTACTTTGTAGTAAGCTTTATCAAATTCAATTCTAAATCAGTTC
+TAAGTTATTTGATGGCAGATATAACCGACAATTAGGAAAAAGGTGATGCCGACATATATC
+ATCGTTAATTGAAGCGTACATGGCATATCTTGTTCTTTCGGGATTTTTACTCTATTGCCT
+CTTATTATGCCTGCCAAGCAGTAAATTCCAATAGCCCATGGAGTTGTGATCGGCACCACA
+CCGAGAGGCACAAAACCCCCCCCACAGAACAGAAAGAGCAAAACCACTATAAATGATTCC
+TACAATCCATGCAGCAAGGCCAGCAGCCTTCGGAACAATACTTTTCAAGTTCATTTTCAT
+TCCTTCTTATTGAACTTCAGTCTAATTGGGCAGACTTTCAGAATGCCATTAGGCTAACGT
+AGCCTAATAATGTATGTTGCTGCTAACTGGCCGTTTTTCATAATTGTTGATTTTTTTATT
+TAGCGCATTCTTTATGACTGGATTGACATGACGGTTAAAAAATTTGTTCCAGTGATGTCG
+AAGGTGTTCAATATTGATAGGCATTTGCAGGCGGGAAAAATCAATTTGCTTGCCTTCCAG
+TTGTAGTAAGTCTTTATCGACGGAGAGCACATCCGGGCTGAAACGGGCTTTCATTGAATC
+AGGGTCGATCGAAAAGTGCCAATTGTCAAAGAGGGTATTGATGTCACTTCGCAGTAGAAT
+CCCGTTTGTCACATCCGGCTCACCACCAGCATGACGGGGTTTTATGTGCGCAGCCTCAGT
+TCTTTGTCTGCCTCGAACGCCGGTAAGAACACACGTACCGGCGCAGTTTTTCCGGACATC
+TTCAGAAAATAGTGCCAGGTCCGGGCTCGACATTGTGATTTGTTCCTGCCCCTCCTGATA
+AGTTCGGGAAGGAAAAGTTACTTTTATTAATGTTACTGCGGGGAGCGAGAGACAGGTAAC
+CCCTTGACCACTGAACTTCCCTCCGTTAAAAACCATCGGGATTGAATAAGTCATCCCCAC
+CAGGTCAGGATCACTTATTTCAACAATTTTTCTTCTACTGTTGTCAATTTGGTGGAACTG
+TATAAAACGGCCAGTGTAAATGTCAAAGGCTCCATCAGGACGTTCAACACACAAAACAAC
+ATTGCGGCTTATTCATTTTTGTGGTCATCTTGTATCTTGGCTATTTTCCCCAGGGCATCA
+CAAAACTGTTATCCGGGCGCTTCACTATAACTCGATCCTTTTTACGTTCAATCGTCCAGG
+TTTCCTGGCGACGGGACTGATTTGTCGCATCAACAACAGTGACCGCGACAGTCGCAGAGT
+GCTCCTCAATGAGGACGCAGCCGCCCTCAGACGTATTATTGCCGTTTACATCCGGGCAGT
+GGCTGCTCCCGAATATTAGTGCTTCCCTGCCGTGGTCATCCATCCGCCAGCCCGGACTCA
+TCACGATAGTCGGTTCCTTGAAAGGTCCATTCGTGTATTTCTGATACACTCCACTTTCCG
+CAGTCCCATTTGCCAGGTCGCAACCTGTCAGGCCCGCAGATAAAATAACAATGGTCGCTT
+TTAAATATCCCGAAAGGCAATTTTGCATTTGTTGTATCAACTCTGTTGGATTTCAATATA
+AAGGTGGCGTGCAGCCAGCCCCCATCAGTAAGTGGTGTCCATCCCGAAAACACTGCCATC
+GGTTATAGGCTGAATTTCCCATCAATCACTCGGCACCTATAAAGTCAGCCCAGCGAGCAG
+CCAGCCGGTCGGTATCCAGATCATACACCAACGGATTGAGCGTTTTTCCTTCAAACAGCT
+CTCCCGCCTCGATGCCCGGTTTAAAATGAACGGTGAGTGTTGAAGGGTCTATACCCATCA
+GATCCGCGTCAAACAACGCGTGCATTGTCGGCGTCAACAGGATGCCGTTCGAAGGGTTGT
+AGCGCGTCCCATGCTCGATATGAGCCGCCACCAGCACACCACCATTAACCCATCCAGTGA
+CTGCACACCGACCGGCGAAGTTCTCAATGAGCAGGGTTTTGAATTTATTCTGCGCTGCGC
+TGCTCCGTTCGGTCACAAAGCGTTCGCAAGGCTCACCCTGAATATTCACGTCAGGTTTTC
+GCTTCAGTTCGCTGGTGGCGCTCTCAGGGCGTTTTAACGGTGTCCGTGAATAAGCAAGAT
+TATAGGCAACGCCTGTGTTCAATTGTTCAATAACGGCCGGTGCATATCCATACGCTTCAA
+GCTTGCGGTAGGCAGCACGGTAGTCCTGCTGGGTTTTCACAGGAAAAATGTCGCCGCCGG
+TACCGTTGAATGCGATAAACCAGAAATGATCTTCGCCCGTTGCCAGATGTCTGCATCGCT
+TCAGGTGCCAGCCACCTTCCCTTGCCCAGCAAGTACGGTTGTTCCTGGCATTGGTCGTGT
+CATAGCCTTTTGATAAGAGCCAGCTATGAAAACTGGTTAGCCCCAGATCCTGTATATTCA
+GAGACGGGACACAGACTACCTGTAATGTATGGCGTGGACGAGGTTCTCTCACTTACTACT
+CCCGTTTAAGTGATATGCCAGCGAATACTTCCCGGCAATTGACAAACACCCAATAAGCTG
+CGGCACCATAATTCCTGCAACAATGCCAATCGGAATTTACTCTATTTAGGAGGGTTAAAA
+TTTCGATCCACAAAGTCAGCCCATTCCTTACGGGTCATCCCCCCACGGCTCTCAACTTCT
+TGCACCCACCGAGGGTTTTCACAGCTGGAGGCGATAGCAAACATGCTACTTTTATCCGCT
+GATAACGGAATGACACGCATATAGTGATCCCAAAACCAGATATTGAAGAAAAGAGACAAT
+AAAAGCAGAACACCAAGGATAATAATCATTACAGTCTCTATTCGGCTTGAATTTCTGTAA
+TTGAGGGTGAAAATAAAATGGGTTTCACAACTCATTTACCCCGTAAAGTGAATTAGCCGG
+TCAACGTGGTTTATGGGTTCGAACACTCCATGCTATTCACAGTTACAATTCTGGTATTTA
+ATGACGATGACAGATCCTTTGAAAGGCGAATGAAGCAGGTTCGAGAGCTGGACGTCACCT
+TATACGAAATGTAGGAGCTTCCGACATCATCTGGTTGAATGATGGTGTACCCCTTAGCAA
+GTGCGTCGGCATCATCATTCAGCTCTTTTAATTTTTGAGCAGAGGTTTTTATGCTGATTT
+CATCAACTGGTTTAAAAATGAAAAACTCTTTGCTGAGTAAGGAAGCAACAGCGTCATTTG
+CAGCCGCAAGGTCCATTCCACTGTTCTTTTTCACCTGTGGCAATTGCTGAACTTTTAGCA
+AAAGCATCTCTGTCAAAGCTGTACCTGCCTTATTCGCCAGTTCTGCACTGTCATCCTGTG
+ATATTCGCTGGCCCAATTCCTGCGAAAAAGATGTCAAGGGAATAAGCAGGAACAAGGTCG
+CCATCATTTTTGTCAACTTCATAAATTATCACCTGTCGTTTGTTTTGAATGCGGTGCATC
+TACGAAGGCGCCGCAGGCCTGGTGTAGAGCATCAGCATTCGTGTTCCAGTCCGCTATACG
+GTTACCTGCTCAATGAGACAGTCAACATAATCATCGTTCTTAATATCGGCATCCATATCG
+ATTTGTGCTCATCATTTCCGGTTGTTCTGTGTGGCCGTCAGGGTGTTAATATTTGCTTTT
+CTCATAAGACGGAAGGAGTCGGAAAGTGTAATGACCGGATGGCCTTCATTCCTTACGGCC
+GCAGAATCACCGGCAACAAATTTCATGGCCACGGCTACCTGGTAAGCCAGTCCCGATAGA
+GCGGTATCGAACTGCTGAGCCTCTGAGGCAAAGCGACAGGCATCCTCAATCGAGGCCCCC
+GTCAGTAACGCGTGAGCGATGAGTCTGCCGGTTTTTTCTGGGTTGTCGCGGGAGATATCC
+GAACTGACGGTACTGCCAATAAGGGGTCGTCTCAGAAAACGGAATCTATGGTCACTCCCG
+TTTTTGCAACACCGATTTTGACGACAAGTTGGCTTGCT
+>NODE_26_length_130_cov_84.9811:NODE_23_length_1411_cov_42.084,NODE_24_length_52213_cov_42.1417;
+CTGGCGATTAAGGGGGTTAAATGCCACGGGACACGACCAGCTTTCCTCCATGGTCTGGCG
+ATTAAGGGGGTTAAATTCCATGGGACACGCCCAGCTTTCCTCCATGGTCTGGCGATTAAG
+GGGGTTAAAT
+>NODE_26_length_130_cov_84.9811':NODE_23_length_1411_cov_42.084',NODE_6_length_50434_cov_42.3615';
+ATTTAACCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGGCGTGTCCCATGGAATTTAA
+CCCCCTTAATCGCCAGACCATGGAGGAAAGCTGGTCGTGTCCCGTGGCATTTAACCCCCT
+TAATCGCCAG
+>NODE_27_length_78_cov_99:NODE_8_length_346_cov_41.0595',NODE_9_length_4537_cov_41.0029';
+GGTAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATAAGACAAAAGGCTGCCTCATCGCT
+AACTTTGCAACAGTGCCC
+>NODE_27_length_78_cov_99':NODE_44_length_820_cov_167.058;
+GGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAGGCCTTACATT
+TCAAAAACTCTGCTTACC
+>NODE_28_length_79_cov_78:NODE_8_length_346_cov_41.0595,NODE_9_length_4537_cov_41.0029;
+GGTAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATAAGACAAAAGGCTGCCTCATCGCT
+AACTTTGCAACAGTGCCGG
+>NODE_28_length_79_cov_78':NODE_44_length_820_cov_167.058;
+CCGGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAGGCCTTACAT
+TTCAAAAACTCTGCTTACC
+>NODE_29_length_751_cov_85.3516:NODE_10_length_211_cov_46.2537',NODE_11_length_146_cov_38.8551';
+GCCTTTCCGTTTTACAGGTTCCTCAACAGGCCGGTGGGCCGTTAGTATCATCAATATCAG
+TATTCGCAAAACCAGATCAGTAATTCTTTAAACCGGTGTATTTCTGCCGTTATGCTACAT
+AAGTTTGCTGTCGTGCCGTTAGGGCCCAGGCTATTCTGGCCAGCTTGTTTGCCAGAGCAC
+AAGTGACGACAAAGTTGCTTTTCCGGCACAGTAAATCCCTGACCCAATCGGCCAATTTGC
+CAGACTGGTGTTCCAGTTTTTGTATGAATACCCTGGCACATTGAACCAACAAAGTTCGGA
+TCTTTTTATTACCTCGCTTACTAATTCCCAGCAATGTCGTCCTACCTCCCGTGCTGTACT
+GCCGAGGTACAAGCCCTGTTGCCGCCGCAAAGTCACGGCTGCTGGCGTACTGCTTCCCGT
+CGCCAATCTCAGTTGAAATAGTACTCGCTGTCAGTGTTCCGACGCAGGGAATGCTCAGCA
+AGCGCTGTCCAACCTCATCTTCGTCCAACTTTCGTTTCAACTGGGATTCCAAATCTTTAA
+TCTGCTCAACAAGATAGTGATAATGCTGTTGTAATTTCAGCAATAACTGGCTGAGGTAAA
+GAGGCAAACTATTATCCTCAAGAATGGTACTCAGTCGGCTAATAACGGCAGCTCCTCGGG
+GAACGCTAATGCCAAATTCCAGCAGAAAAGCATGCATTTGATTGGTTGTTTTTACCTTAT
+CCTGAACCAGGGATTCACGGACACGATGCAG
+>NODE_29_length_751_cov_85.3516':NODE_38_length_237_cov_132.244';
+CTGCATCGTGTCCGTGAATCCCTGGTTCAGGATAAGGTAAAAACAACCAATCAAATGCAT
+GCTTTTCTGCTGGAATTTGGCATTAGCGTTCCCCGAGGAGCTGCCGTTATTAGCCGACTG
+AGTACCATTCTTGAGGATAATAGTTTGCCTCTTTACCTCAGCCAGTTATTGCTGAAATTA
+CAACAGCATTATCACTATCTTGTTGAGCAGATTAAAGATTTGGAATCCCAGTTGAAACGA
+AAGTTGGACGAAGATGAGGTTGGACAGCGCTTGCTGAGCATTCCCTGCGTCGGAACACTG
+ACAGCGAGTACTATTTCAACTGAGATTGGCGACGGGAAGCAGTACGCCAGCAGCCGTGAC
+TTTGCGGCGGCAACAGGGCTTGTACCTCGGCAGTACAGCACGGGAGGTAGGACGACATTG
+CTGGGAATTAGTAAGCGAGGTAATAAAAAGATCCGAACTTTGTTGGTTCAATGTGCCAGG
+GTATTCATACAAAAACTGGAACACCAGTCTGGCAAATTGGCCGATTGGGTCAGGGATTTA
+CTGTGCCGGAAAAGCAACTTTGTCGTCACTTGTGCTCTGGCAAACAAGCTGGCCAGAATA
+GCCTGGGCCCTAACGGCACGACAGCAAACTTATGTAGCATAACGGCAGAAATACACCGGT
+TTAAAGAATTACTGATCTGGTTTTGCGAATACTGATATTGATGATACTAACGGCCCACCG
+GCCTGTTGAGGAACCTGTAAAACGGAAAGGC
+>NODE_30_length_81_cov_86:NODE_15_length_1977_cov_41.2532,NODE_15_length_1977_cov_41.2532';
+TTGAATGGGTTCATGTGCAGCTCCATCAGCAAAAGGGGATGATAAGTTTATCACCACCGA
+CTATTTGCAACAGTGCCATAT
+>NODE_30_length_81_cov_86':NODE_44_length_820_cov_167.058';
+ATATGGCACTGTTGCAAATAGTCGGTGGTGATAAACTTATCATCCCCTTTTGCTGATGGA
+GCTGCACATGAACCCATTCAA
+>NODE_31_length_78_cov_87:NODE_35_length_1394_cov_42.7001,NODE_36_length_2625_cov_42.3034;
+TTGAATGGGTTCATGTGCAGCTCCATCAGCAAAAGGGGATGATAAGTTTATCACCACCGA
+CTATTTGCAACAGTGCCC
+>NODE_31_length_78_cov_87':NODE_44_length_820_cov_167.058';
+GGGCACTGTTGCAAATAGTCGGTGGTGATAAACTTATCATCCCCTTTTGCTGATGGAGCT
+GCACATGAACCCATTCAA
+>NODE_32_length_86_cov_81.3333:NODE_21_length_1646_cov_41.9885',NODE_25_length_15938_cov_42.5346;
+ATAGATTCAAGCAAGCCAACTTGTCGTCAAAATCGGTGTTGCAAAAACGGGAGTGACCAT
+AGATTCCGTTTTCTGAGACGACCCCT
+>NODE_32_length_86_cov_81.3333':NODE_38_length_237_cov_132.244;
+AGGGGTCGTCTCAGAAAACGGAATCTATGGTCACTCCCGTTTTTGCAACACCGATTTTGA
+CGACAAGTTGGCTTGCTTGAATCTAT
+>NODE_33_length_106_cov_94.1379:NODE_34_length_1034_cov_43.0564',NODE_35_length_1394_cov_42.7001';
+TGTTGTGCAGCCAGCTCCTGACAGTTCAATATCAGAAGTGATCTGCACCAATCTCGACTA
+TGCTCAATACTCGTGTGCACCAAAGCGAGGTGAGCATGGCGACGGA
+>NODE_33_length_106_cov_94.1379':NODE_4_length_123_cov_119.957';
+TCCGTCGCCATGCTCACCTCGCTTTGGTGCACACGAGTATTGAGCATAGTCGAGATTGGT
+GCAGATCACTTCTGATATTGAACTGTCAGGAGCTGGCTGCACAACA
+>NODE_34_length_1034_cov_43.0564:NODE_33_length_106_cov_94.1379';
+TGTTGTGCAGCCAGCTCCTGACAGTTCAATATCAGAAGTGATCTGCACCAATCTCGACTA
+TGCTCAATACTCGTGTGGGCTCTGTTGCAAAAATCGTGAAGCTTGAGCATGCTTGGCGGA
+GATTGGACGGACGGAACGATGACGGATTTCAAGTGGCGCCATTTCCAGGGTGATGTGATC
+CTGTGGGCGGTGCGCTGGTATTGTCGCTATCCGATCAGCTATCGCGACCTTGAGGAAATG
+CTGGCGGAACGCGGCATTTCGGTCGACCATACGACGATCTATCGCTGGGTCCAGTGCTAC
+GCCCCGGAGATGGAGAAGCGGCTGCGCTGGTTCTGGCGGCGTGGCTTTGATCCGAGCTGG
+CGCCTGGATGAAACCTACGTCAAGGTGCGGGGCAAGTGGACCTACCTGTACCGGGCAGTC
+GACAAGCGGGGCGACACGATCGATTTCTACCTGTCGCCGACCCGCAGCGCCAAGGCAGCG
+AAGCGGTTCCTGGGCAAGGCCCTGCGAGGCCTGAAGCACTGGGAAAAGCCTGCCACGCTC
+AATACCGACAAAGCGCCGAGCTATGGTGCAGCGATCACCGAATTGAAGCGCGAAGGAAAG
+CTGGACCGGGAGACGGCCCACCGGCAGGTGAAGTATCTCAATAACGTGATCGAGGCCGAT
+CACGGAAAGCTCAAGATACTGATCAAGCCGGTGCGCGGTTTCAAATCGATCCCCACGGCC
+TATGCCACGATCAAGGGATTCGAAGTCATGCGAGCCCTGCGCAAAGGACAGGCTCGCCCC
+TGGTGCCTGCAGCCCGGCATCAGGGGCGAGGTGCGCCTTGTGGAGAGAGCTTTTGGCATT
+GGGCCCTCGGCGCTGACGGAGGCCATGGGCATGCTCAACCACCATTTCGCAGCAGCCGCC
+TGATCGGCGCAGAGCGACAGCCTACCTCTGACTGCCGCCAATCTTTGCAACAGAGCCTCC
+GTCGCCATGCTCACCTCGCTTTGGTGCACACGAGTATTGAGCATAGTCGAGATTGGTGCA
+GATCACTTCTGATA
+>NODE_34_length_1034_cov_43.0564':NODE_4_length_123_cov_119.957';
+TATCAGAAGTGATCTGCACCAATCTCGACTATGCTCAATACTCGTGTGCACCAAAGCGAG
+GTGAGCATGGCGACGGAGGCTCTGTTGCAAAGATTGGCGGCAGTCAGAGGTAGGCTGTCG
+CTCTGCGCCGATCAGGCGGCTGCTGCGAAATGGTGGTTGAGCATGCCCATGGCCTCCGTC
+AGCGCCGAGGGCCCAATGCCAAAAGCTCTCTCCACAAGGCGCACCTCGCCCCTGATGCCG
+GGCTGCAGGCACCAGGGGCGAGCCTGTCCTTTGCGCAGGGCTCGCATGACTTCGAATCCC
+TTGATCGTGGCATAGGCCGTGGGGATCGATTTGAAACCGCGCACCGGCTTGATCAGTATC
+TTGAGCTTTCCGTGATCGGCCTCGATCACGTTATTGAGATACTTCACCTGCCGGTGGGCC
+GTCTCCCGGTCCAGCTTTCCTTCGCGCTTCAATTCGGTGATCGCTGCACCATAGCTCGGC
+GCTTTGTCGGTATTGAGCGTGGCAGGCTTTTCCCAGTGCTTCAGGCCTCGCAGGGCCTTG
+CCCAGGAACCGCTTCGCTGCCTTGGCGCTGCGGGTCGGCGACAGGTAGAAATCGATCGTG
+TCGCCCCGCTTGTCGACTGCCCGGTACAGGTAGGTCCACTTGCCCCGCACCTTGACGTAG
+GTTTCATCCAGGCGCCAGCTCGGATCAAAGCCACGCCGCCAGAACCAGCGCAGCCGCTTC
+TCCATCTCCGGGGCGTAGCACTGGACCCAGCGATAGATCGTCGTATGGTCGACCGAAATG
+CCGCGTTCCGCCAGCATTTCCTCAAGGTCGCGATAGCTGATCGGATAGCGACAATACCAG
+CGCACCGCCCACAGGATCACATCACCCTGGAAATGGCGCCACTTGAAATCCGTCATCGTT
+CCGTCCGTCCAATCTCCGCCAAGCATGCTCAAGCTTCACGATTTTTGCAACAGAGCCCAC
+ACGAGTATTGAGCATAGTCGAGATTGGTGCAGATCACTTCTGATATTGAACTGTCAGGAG
+CTGGCTGCACAACA
+>NODE_35_length_1394_cov_42.7001:NODE_33_length_106_cov_94.1379';
+TGAATGGGTTCATGTGCAGCTCCATCAGCAAAAGGGGATGATAAGTTTATCACCACCGAC
+TATTTGCAACAGTGCCCATCGGCGTAGTAGTGGATGTGGTCGATGACAAAGCCGGTGCGG
+GTCAGCGTGCGCCGGAGGATCGGCAGAAAATCGACCAGGAACGAAGTAGCGCGTGTGACG
+ACGGCCGGTACGCCGACACGCGCCACGGCCTCGGCCCAGCGCGCGGCCGGCGGTTGGAGC
+AGGCCGTTGTGCACCGAACCGTGGTAGGTGCCGACCGCCAATGTGAGCCAGCGCTCTAGC
+TCGCGCAGCGTCAGGGCGGCCTTGTTTTCGGAATCGTAGTCGCCGCGCTGGTCAGGGTTG
+GAGAAGGTCGTTCCCGGCAGTTCGTCGTGAATCATCTGCATCGCCGTGCCGATGATCCGT
+TCCACGATGCCGCCATAGTGCGGCTGTCCCAGCGGGCGATAGTCCAGCCGGATGCCATGC
+TGCTCGCAACCCCGGCGCAGGGCCTCGCTCTTGAACTCGGCCGCGTTGTCTAGGTAGAGC
+AGCAAGGGCTTGCCGCTCATCTGCCAATCCATTTCCACGTTCAGTCCTTCCAGCCAAGGG
+CGCTTGTCGCAGGCGACATGCACGAGGCACAGGCCAACCGAAACGGCAGACGGCGCTTCC
+AGCGTGACGACCATGCCGAGCACGCAGCGGGTGAACACGTCGATGGCGAGGGTCAGGTAC
+GGGCGGCCAATAGGTTGCCGGTCGCGGTCATCGACCACGATCAGGTCGATGACCGTATGG
+TCTATCTGCACCTGCTCCAGCGGCGCGGTCACGGCAGGAGGCTCGCCGCCCACACCTTGT
+AGGTCACGAGCGGCATCCTGGCCTTCCCGCCGGCGGATGACCTTGCGCGGGTCAAGGCTA
+GCGATCCGTAAGGCCACGGTATTGCGCGCCGGCACTCGCAGTTTTTGAGCCTTGCACACC
+TGAGTGACTTCGCGGTGAAAGGCCGCTAGGCTGCGCTTCTGCTTGGTCAGGAACCGCTTT
+TGCAGTAGCTCGTGGATGACGCGCTCGACCGGTTCCGGCAAGCGCCCCTTACCTTTACCT
+CCACCGGACTGGCCGGGCACCAGATCCGTCACGAGGCCGCTGCCTTGCCGGGCACGCCGG
+ATCAGAACGTATACCTGGCGCCGAGACAAGCCCAGCGCCTGAGCCGCCATATCGGCCGCT
+TCGTGCCCGACCGTCTCCGACTGCGCCAACGGACTGATGATCTCCGCACGACGGCGCGCA
+CGCTCCCAAGCCTCATCAGGCAGAGTGGCCACGCCTTGTTCTGGAATCCGTGGGGTGTCC
+GTCGCCATGCTCACCTCGCTTTGGTGCACACGAGTATTGAGCATAGTCGAGATTGGTGCA
+GATCACTTCTGATA
+>NODE_35_length_1394_cov_42.7001':NODE_31_length_78_cov_87';
+TATCAGAAGTGATCTGCACCAATCTCGACTATGCTCAATACTCGTGTGCACCAAAGCGAG
+GTGAGCATGGCGACGGACACCCCACGGATTCCAGAACAAGGCGTGGCCACTCTGCCTGAT
+GAGGCTTGGGAGCGTGCGCGCCGTCGTGCGGAGATCATCAGTCCGTTGGCGCAGTCGGAG
+ACGGTCGGGCACGAAGCGGCCGATATGGCGGCTCAGGCGCTGGGCTTGTCTCGGCGCCAG
+GTATACGTTCTGATCCGGCGTGCCCGGCAAGGCAGCGGCCTCGTGACGGATCTGGTGCCC
+GGCCAGTCCGGTGGAGGTAAAGGTAAGGGGCGCTTGCCGGAACCGGTCGAGCGCGTCATC
+CACGAGCTACTGCAAAAGCGGTTCCTGACCAAGCAGAAGCGCAGCCTAGCGGCCTTTCAC
+CGCGAAGTCACTCAGGTGTGCAAGGCTCAAAAACTGCGAGTGCCGGCGCGCAATACCGTG
+GCCTTACGGATCGCTAGCCTTGACCCGCGCAAGGTCATCCGCCGGCGGGAAGGCCAGGAT
+GCCGCTCGTGACCTACAAGGTGTGGGCGGCGAGCCTCCTGCCGTGACCGCGCCGCTGGAG
+CAGGTGCAGATAGACCATACGGTCATCGACCTGATCGTGGTCGATGACCGCGACCGGCAA
+CCTATTGGCCGCCCGTACCTGACCCTCGCCATCGACGTGTTCACCCGCTGCGTGCTCGGC
+ATGGTCGTCACGCTGGAAGCGCCGTCTGCCGTTTCGGTTGGCCTGTGCCTCGTGCATGTC
+GCCTGCGACAAGCGCCCTTGGCTGGAAGGACTGAACGTGGAAATGGATTGGCAGATGAGC
+GGCAAGCCCTTGCTGCTCTACCTAGACAACGCGGCCGAGTTCAAGAGCGAGGCCCTGCGC
+CGGGGTTGCGAGCAGCATGGCATCCGGCTGGACTATCGCCCGCTGGGACAGCCGCACTAT
+GGCGGCATCGTGGAACGGATCATCGGCACGGCGATGCAGATGATTCACGACGAACTGCCG
+GGAACGACCTTCTCCAACCCTGACCAGCGCGGCGACTACGATTCCGAAAACAAGGCCGCC
+CTGACGCTGCGCGAGCTAGAGCGCTGGCTCACATTGGCGGTCGGCACCTACCACGGTTCG
+GTGCACAACGGCCTGCTCCAACCGCCGGCCGCGCGCTGGGCCGAGGCCGTGGCGCGTGTC
+GGCGTACCGGCCGTCGTCACACGCGCTACTTCGTTCCTGGTCGATTTTCTGCCGATCCTC
+CGGCGCACGCTGACCCGCACCGGCTTTGTCATCGACCACATCCACTACTACGCCGATGGG
+CACTGTTGCAAATAGTCGGTGGTGATAAACTTATCATCCCCTTTTGCTGATGGAGCTGCA
+CATGAACCCATTCA
+>NODE_36_length_2625_cov_42.3034:NODE_12_length_394_cov_88.6719';
+TGAATGGGTTCATGTGCAGCTCCATCAGCAAAAGGGGATGATAAGTTTATCACCACCGAC
+TATTTGCAACAGTGCCCGAGCGGGCGAGTGCCGAGGCGATCACCCGTGCTAACCGGCGCA
+TCTACGACGCCTTGGCCGAACCACTGGCGGACGCGCATCGCCGCCGCCTCGACGATCTGC
+TCAAGCGCCGGGACAACGGCAAGACGACCTGGTTGGCTTGGTTGCGCCAGTCTCCGGCCA
+AGCCAAATTCGCGGCATATGCTGGAACACATCGAACGCCTCAAGGCATGGCAGGCACTCG
+ATCTGCCTACCGGCATCGAGCGGCTGGTTCACCAGAACCGCCTGCTCAAGATTGCCCGCG
+AGGGCGGCCAGATGACACCCGCCGACCTGGCCAAATTCGAGCCGCAACGGCGCTACGCCA
+CTCTCGTGGCGCTGGCCACCGAGGGCATGGCCACCGTCACCGACGAAATCATCGACCTGC
+ACGACCGCATCCTGGGTAAGCTGTTTAACGCTGCCAAGAATAAGCATCAGCAGCAGTTCC
+AGGCGTCAGGCAAGGCCATCAACGCCAAGGTACGTCTGTACGGGCGCATCGGTCAGGCGC
+TGATCGACGCCAAGCAATCAGGCCGCGATGCGTTTGCCGCCATCGAGGCCGTCATGTCCT
+GGGATTCCTTTGCCGAGAGCGTCACCGAGGCGCAGAAGCTCGCGCAACCCGATGACTTCG
+ATTTCCTGCATCGCATCGGCGAGAGCTACGCCACCCTGCGCCGCTATGCACCGGAATTCC
+TTGCCGTGCTCAAGCTGCGGGCCGCGCCCGCCGCCAAAAACGTGCTTGATGCCATTGAGG
+TGCTGCGCGGCATGAACACCGACAACGCCCGCAAGCTGCCAGCCGATGCACCGACCGGCT
+TCATCAAGCCGCGCTGGCAGAAACTGGTGATGACCGACGCCGGCATCGACCGGCGCTACT
+ACGAACTGTGCGCGCTGTCCGAGTTGAAGAACTCCCTGCGCTCGGGCGACATCTGGGTGC
+AGGGTTCACGCCAGTTCAAGGACTTCGAGGACTACCTGGTACCGCCCGAGAAGTTCACCA
+GCCTCAAGCAGTCCAGCGAATTGCCGCTGGCCGTGGCCACCGACTGCGAACAATATCTGC
+ATGAGCGGCTGACGCTGCTGGAAGCACAACTTGCCACCGTCAACCGCATGGCGGCAGCCA
+ACGACCTGCCGGATGCCATCATCACCGAGTCGGGCTTGAAGATCACGCCGCTGGATGCGG
+CGGTGCCCGACACCGCGCAGGCGCTGATAGACCAGACAGCCATGGTCCTGCCGCACGTCA
+AGATCACCGAACTGCTGCTCGAAGTCGATGAGTGGACGGGCTTCACCCGGCACTTCACGC
+ACTTGAAATCGGGCGATCTGGCCAAGGACAAGAACCTGTTGTTGACCACGATCCTGGCCG
+ACGCGATCAACCTGGGCCTGACCAAGATGGCCGAGTCCTGCCCCGGCACGACCTACGCGA
+AGCTCGCTTGGCTGCAAGCCTGGCATACCCGCGACGAAACGTACTCGACAGCGTTGGCTG
+AACTGGTCAACGCTCAGTTTCGGCATCCCTTTGCCGGGCACTGGGGCGATGGCACCACAT
+CATCATCGGACGGACAGAATTTCCGAACCGCTAGCAAGGCAAAGAGCACGGGGCACATCA
+ACCCAAAATATGGCAGCAGCCCAGGACGGACTTTCTACACCCACATCTCCGACCAATACG
+CGCCATTCCACACCAAGGTGGTCAATGTCGGCCTGCGCGACTCAACCTACGTGCTCGACG
+GCCTGCTGTACCACGAATCCGACCTGCGGATCGAGGAGCACTACACCGACACGGCGGGCT
+TCACCGATCACGTCTTCGCCCTGATGCACCTCTTGGGCTTCCGCTTCGCGCCGCGCATCC
+GCGACCTGGGCGACACCAAGCTCTACATCCCGAAGGGCGATGCCGCCTATGACGCGCTCA
+AGCCGATGATCGGCGGCACGCTCAACATCAAGCACGTCCGCGCCCATTGGGACGAAATCC
+TGCGGCTGGCCACCTCGATCAAGCAGGGCACGGTGACGGCCTCGCTGATGCTCAGGAAAC
+TCGGCAGCTACCCGCGCCAGAACGGCTTGGCCGTCGCGCTGCGCGAGTTGGGCCGCATCG
+AGCGCACGCTGTTCATCCTCGACTGGCTGCAAAGCGTCGAGCTACGCCGCCGCGTGCATG
+CCGGGCTGAACAAGGGCGAGGCGCGCAATGCGCTGGCCCGTGCCGTGTTCTTCAACCGCC
+TTGGTGAAATCCGTGACCGCAGTTTCGAGCAGCAGCGCTACCGGGCCAGCGGCCTCAACC
+TGGTGACGGCGGCCATCGTGCTGTGGAACACGGTCTACCTGGAGCGTGCGGCGCATGCGT
+TGCGCGGCAATGGTCATGCCGTCGATGACTCGCTATTGCAGTACCTGTCGCCACTCGGCT
+GGGAGCACATCAACCTGACCGGTGATTACCTATGGCGCAGCAGCGCCAAGATCGGCGCGG
+GGAAGTTCAGGCCGCTACGGCCTCTGCAACCGGCTTAGCGTGCTTTATTTAATGAGATGG
+TCACTCCCTCCTTCCCGGTACTATGCTGAGGACAGGCTTTCATTC
+>NODE_36_length_2625_cov_42.3034':NODE_31_length_78_cov_87';
+GAATGAAAGCCTGTCCTCAGCATAGTACCGGGAAGGAGGGAGTGACCATCTCATTAAATA
+AAGCACGCTAAGCCGGTTGCAGAGGCCGTAGCGGCCTGAACTTCCCCGCGCCGATCTTGG
+CGCTGCTGCGCCATAGGTAATCACCGGTCAGGTTGATGTGCTCCCAGCCGAGTGGCGACA
+GGTACTGCAATAGCGAGTCATCGACGGCATGACCATTGCCGCGCAACGCATGCGCCGCAC
+GCTCCAGGTAGACCGTGTTCCACAGCACGATGGCCGCCGTCACCAGGTTGAGGCCGCTGG
+CCCGGTAGCGCTGCTGCTCGAAACTGCGGTCACGGATTTCACCAAGGCGGTTGAAGAACA
+CGGCACGGGCCAGCGCATTGCGCGCCTCGCCCTTGTTCAGCCCGGCATGCACGCGGCGGC
+GTAGCTCGACGCTTTGCAGCCAGTCGAGGATGAACAGCGTGCGCTCGATGCGGCCCAACT
+CGCGCAGCGCGACGGCCAAGCCGTTCTGGCGCGGGTAGCTGCCGAGTTTCCTGAGCATCA
+GCGAGGCCGTCACCGTGCCCTGCTTGATCGAGGTGGCCAGCCGCAGGATTTCGTCCCAAT
+GGGCGCGGACGTGCTTGATGTTGAGCGTGCCGCCGATCATCGGCTTGAGCGCGTCATAGG
+CGGCATCGCCCTTCGGGATGTAGAGCTTGGTGTCGCCCAGGTCGCGGATGCGCGGCGCGA
+AGCGGAAGCCCAAGAGGTGCATCAGGGCGAAGACGTGATCGGTGAAGCCCGCCGTGTCGG
+TGTAGTGCTCCTCGATCCGCAGGTCGGATTCGTGGTACAGCAGGCCGTCGAGCACGTAGG
+TTGAGTCGCGCAGGCCGACATTGACCACCTTGGTGTGGAATGGCGCGTATTGGTCGGAGA
+TGTGGGTGTAGAAAGTCCGTCCTGGGCTGCTGCCATATTTTGGGTTGATGTGCCCCGTGC
+TCTTTGCCTTGCTAGCGGTTCGGAAATTCTGTCCGTCCGATGATGATGTGGTGCCATCGC
+CCCAGTGCCCGGCAAAGGGATGCCGAAACTGAGCGTTGACCAGTTCAGCCAACGCTGTCG
+AGTACGTTTCGTCGCGGGTATGCCAGGCTTGCAGCCAAGCGAGCTTCGCGTAGGTCGTGC
+CGGGGCAGGACTCGGCCATCTTGGTCAGGCCCAGGTTGATCGCGTCGGCCAGGATCGTGG
+TCAACAACAGGTTCTTGTCCTTGGCCAGATCGCCCGATTTCAAGTGCGTGAAGTGCCGGG
+TGAAGCCCGTCCACTCATCGACTTCGAGCAGCAGTTCGGTGATCTTGACGTGCGGCAGGA
+CCATGGCTGTCTGGTCTATCAGCGCCTGCGCGGTGTCGGGCACCGCCGCATCCAGCGGCG
+TGATCTTCAAGCCCGACTCGGTGATGATGGCATCCGGCAGGTCGTTGGCTGCCGCCATGC
+GGTTGACGGTGGCAAGTTGTGCTTCCAGCAGCGTCAGCCGCTCATGCAGATATTGTTCGC
+AGTCGGTGGCCACGGCCAGCGGCAATTCGCTGGACTGCTTGAGGCTGGTGAACTTCTCGG
+GCGGTACCAGGTAGTCCTCGAAGTCCTTGAACTGGCGTGAACCCTGCACCCAGATGTCGC
+CCGAGCGCAGGGAGTTCTTCAACTCGGACAGCGCGCACAGTTCGTAGTAGCGCCGGTCGA
+TGCCGGCGTCGGTCATCACCAGTTTCTGCCAGCGCGGCTTGATGAAGCCGGTCGGTGCAT
+CGGCTGGCAGCTTGCGGGCGTTGTCGGTGTTCATGCCGCGCAGCACCTCAATGGCATCAA
+GCACGTTTTTGGCGGCGGGCGCGGCCCGCAGCTTGAGCACGGCAAGGAATTCCGGTGCAT
+AGCGGCGCAGGGTGGCGTAGCTCTCGCCGATGCGATGCAGGAAATCGAAGTCATCGGGTT
+GCGCGAGCTTCTGCGCCTCGGTGACGCTCTCGGCAAAGGAATCCCAGGACATGACGGCCT
+CGATGGCGGCAAACGCATCGCGGCCTGATTGCTTGGCGTCGATCAGCGCCTGACCGATGC
+GCCCGTACAGACGTACCTTGGCGTTGATGGCCTTGCCTGACGCCTGGAACTGCTGCTGAT
+GCTTATTCTTGGCAGCGTTAAACAGCTTACCCAGGATGCGGTCGTGCAGGTCGATGATTT
+CGTCGGTGACGGTGGCCATGCCCTCGGTGGCCAGCGCCACGAGAGTGGCGTAGCGCCGTT
+GCGGCTCGAATTTGGCCAGGTCGGCGGGTGTCATCTGGCCGCCCTCGCGGGCAATCTTGA
+GCAGGCGGTTCTGGTGAACCAGCCGCTCGATGCCGGTAGGCAGATCGAGTGCCTGCCATG
+CCTTGAGGCGTTCGATGTGTTCCAGCATATGCCGCGAATTTGGCTTGGCCGGAGACTGGC
+GCAACCAAGCCAACCAGGTCGTCTTGCCGTTGTCCCGGCGCTTGAGCAGATCGTCGAGGC
+GGCGGCGATGCGCGTCCGCCAGTGGTTCGGCCAAGGCGTCGTAGATGCGCCGGTTAGCAC
+GGGTGATCGCCTCGGCACTCGCCCGCTCGGGCACTGTTGCAAATAGTCGGTGGTGATAAA
+CTTATCATCCCCTTTTGCTGATGGAGCTGCACATGAACCCATTCA
+>NODE_37_length_78_cov_92:NODE_41_length_366_cov_169.284';
+AGGTAATGACTCCAACTTATTGATAGTGTTTTATGTTCAGATAATGCCCGATGACTTTGT
+CATGCAGCTCCACCGATT
+>NODE_37_length_78_cov_92':NODE_13_length_9382_cov_42.6014',NODE_19_length_1805_cov_40.386';
+AATCGGTGGAGCTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAAT
+AAGTTGGAGTCATTACCT
+>NODE_38_length_237_cov_132.244:NODE_29_length_751_cov_85.3516,NODE_3_length_5869_cov_43.038';
+CTCAGAAAACGGAATCTATGGTCACTCCCGTTTTTGCAACACCGATTTTGACGACAAGTT
+GGCTTGCTTGAATCTATCCGGCGTCTGAATGGGATTTTATTCCCGCGCCTTGATGAGTTC
+CGCGCCTGATGAACCTCCAGAAAATATACGGCTTCAATGAGCCTTTCCGTTTTACAGGTT
+CCTCAACAGGCCGGTGGGCCGTTAGTATCATCAATATCAGTATTCGCAAAACCAGAT
+>NODE_38_length_237_cov_132.244':NODE_17_length_219_cov_42.2394',NODE_32_length_86_cov_81.3333;
+ATCTGGTTTTGCGAATACTGATATTGATGATACTAACGGCCCACCGGCCTGTTGAGGAAC
+CTGTAAAACGGAAAGGCTCATTGAAGCCGTATATTTTCTGGAGGTTCATCAGGCGCGGAA
+CTCATCAAGGCGCGGGAATAAAATCCCATTCAGACGCCGGATAGATTCAAGCAAGCCAAC
+TTGTCGTCAAAATCGGTGTTGCAAAAACGGGAGTGACCATAGATTCCGTTTTCTGAG
+>NODE_39_length_146_cov_169.507:NODE_14_length_85_cov_140.75',NODE_19_length_1805_cov_40.386;
+AGAGCAGAGATAGCGCTGATGTCCGGCGGTGCTTTTGCCGTTACGCACCACCCCGTCAGT
+AGCTGAACAGGAGGGACAGCTGATAGAAACAGAAGCCACTGGAGCACCTCAAAAACACCA
+TCATACACTAAATCAGTAAGTTGGCA
+>NODE_39_length_146_cov_169.507':NODE_43_length_220_cov_211.224';
+TGCCAACTTACTGATTTAGTGTATGATGGTGTTTTTGAGGTGCTCCAGTGGCTTCTGTTT
+CTATCAGCTGTCCCTCCTGTTCAGCTACTGACGGGGTGGTGCGTAACGGCAAAAGCACCG
+CCGGACATCAGCGCTATCTCTGCTCT
+>NODE_40_length_164_cov_128.862:NODE_41_length_366_cov_169.284;
+AGGCCGCAGTCGGTAACCTCGCGCATACAGCCGGGCAGTGACGTCATCGTCTGCGCGGAA
+ATGGACGAACAGTGGGGATACGTCGGGGCTAAATCGCGCCAGCGCTGGCTGTTTTACGCG
+TATGACAGGCTCCGGAAGACGGTTGTTGCGCACGTATTCGGTGA
+>NODE_40_length_164_cov_128.862':NODE_42_length_172_cov_160.495;
+TCACCGAATACGTGCGCAACAACCGTCTTCCGGAGCCTGTCATACGCGTAAAACAGCCAG
+CGCTGGCGCGATTTAGCCCCGACGTATCCCCACTGTTCGTCCATTTCCGCGCAGACGATG
+ACGTCACTGCCCGGCTGTATGCGCGAGGTTACCGACTGCGGCCT
+>NODE_41_length_366_cov_169.284:NODE_18_length_78_cov_102',NODE_37_length_78_cov_92';
+GCTAAATCGCGCCAGCGCTGGCTGTTTTACGCGTATGACAGGCTCCGGAAGACGGTTGTT
+GCGCACGTATTCGGTGAACGCACTATGGCGACGCTGGGGCGTCTTATGAGCCTGCTGTCA
+CCCTTTGACGTGGTGATATGGATGACGGATGGCTGGCCGCTGTATGAATCCCGCCTGAAG
+GGAAAGCTGCACGTAATCAGCAAGCGATATACGCAGCGAATTGAGCGGCATAACCTGAAT
+CTGAGGCAGCACCTGGCACGGCTGGGACGGAAGTCGCTGTCGTTCTCAAAATCGGTGGAG
+CTGCATGACAAAGTCATCGGGCATTATCTGAACATAAAACACTATCAATAAGTTGGAGTC
+ATTACC
+>NODE_41_length_366_cov_169.284':NODE_40_length_164_cov_128.862',NODE_5_length_226_cov_46.5369;
+GGTAATGACTCCAACTTATTGATAGTGTTTTATGTTCAGATAATGCCCGATGACTTTGTC
+ATGCAGCTCCACCGATTTTGAGAACGACAGCGACTTCCGTCCCAGCCGTGCCAGGTGCTG
+CCTCAGATTCAGGTTATGCCGCTCAATTCGCTGCGTATATCGCTTGCTGATTACGTGCAG
+CTTTCCCTTCAGGCGGGATTCATACAGCGGCCAGCCATCCGTCATCCATATCACCACGTC
+AAAGGGTGACAGCAGGCTCATAAGACGCCCCAGCGTCGCCATAGTGCGTTCACCGAATAC
+GTGCGCAACAACCGTCTTCCGGAGCCTGTCATACGCGTAAAACAGCCAGCGCTGGCGCGA
+TTTAGC
+>NODE_42_length_172_cov_160.495:NODE_43_length_220_cov_211.224;
+CCCCACTGTTCGTCCATTTCCGCGCAGACGATGACGTCACTGCCCGGCTGTATGCGCGAG
+GTTACCGACTGCGGCCTGAGTTTTTTAAATGGCGGAAAATCGTGTTGAGGCCAACGCCCA
+TAATGCGGGCGGTTGCCCGGCATCCAACGCCATTCATGGCCATATCAATGAT
+>NODE_42_length_172_cov_160.495':NODE_2_length_9792_cov_41.771',NODE_40_length_164_cov_128.862;
+ATCATTGATATGGCCATGAATGGCGTTGGATGCCGGGCAACCGCCCGCATTATGGGCGTT
+GGCCTCAACACGATTTTCCGCCATTTAAAAAACTCAGGCCGCAGTCGGTAACCTCGCGCA
+TACAGCCGGGCAGTGACGTCATCGTCTGCGCGGAAATGGACGAACAGTGGGG
+>NODE_43_length_220_cov_211.224:NODE_39_length_146_cov_169.507,NODE_6_length_50434_cov_42.3615;
+AAAATCGTGTTGAGGCCAACGCCCATAATGCGGGCGGTTGCCCGGCATCCAACGCCATTC
+ATGGCCATATCAATGATTTTCTGGTGCGTACCGGGTTGAGAAGCGGTGTAAGTGAACTGC
+AGTTGCCATGTTTTACGGCAGTGAGAGCAGAGATAGCGCTGATGTCCGGCGGTGCTTTTG
+CCGTTACGCACCACCCCGTCAGTAGCTGAACAGGAGGGAC
+>NODE_43_length_220_cov_211.224':NODE_42_length_172_cov_160.495',NODE_5_length_226_cov_46.5369';
+GTCCCTCCTGTTCAGCTACTGACGGGGTGGTGCGTAACGGCAAAAGCACCGCCGGACATC
+AGCGCTATCTCTGCTCTCACTGCCGTAAAACATGGCAACTGCAGTTCACTTACACCGCTT
+CTCAACCCGGTACGCACCAGAAAATCATTGATATGGCCATGAATGGCGTTGGATGCCGGG
+CAACCGCCCGCATTATGGGCGTTGGCCTCAACACGATTTT
+>NODE_44_length_820_cov_167.058:NODE_30_length_81_cov_86,NODE_31_length_78_cov_87;
+GGCACTGTTGCAAAGTTAGCGATGAGGCAGCCTTTTGTCTTATTCAAAGGCCTTACATTT
+CAAAAACTCTGCTTACCAGGCGCATTTCGCCCAGGGGATCACCATAATAAAATGCTGAGG
+CCTGGCCTTTGCGTAGTGCACGCATCACCTCAATACCTTTGATGGTGGCGTAAGCCGTCT
+TCATGGATTTAAATCCCAGCGTGGCGCCGATTATCCGTTTCAGTTTGCCATGATCGCATT
+CAATCACGTTGTTCCGGTACTTAATCTGTCGGTGTTCAACGTCAGACGGGCACCGGCCTT
+CGCGTTTGAGCAGAGCAAGCGCGCGACCATAGGCGGGCGCTTTATCCGTGTTGATGAATC
+GCGGGATCTGCCACTTCTTCACGTTGTTGAGGATTTTACCCAGAAACCGGTATGCAGCTT
+TGCTGTTACGACGGGAGGAGAGATAAAAATCGACAGTGCGGCCCCGGCTGTCAACGGCCC
+GGTACAGATACGCCCAGCGGCCATTGACCTTCACGTAGGTTTCATCCATGTGCCACGGGC
+AAAGATCGGAAGGGTTACGCCAGTACCAGCGCAGCCGTTTTTCCATTTCAGGCGCATAAC
+GCTGAACCCAGCGGTAAATCGTGGAGTGATCGACATTCACTCCGCGTTCAGCCAGCATCT
+CCTGCAGCTCACGGTAACTGATGCCGTATTTGCAGTACCAGCGTACGGCCCACAGAATGA
+TGTCACGCTGAAAATGCCGGCCTTTGAATGGGTTCATGTGCAGCTCCATCAGCAAAAGGG
+GATGATAAGTTTATCACCACCGACTATTTGCAACAGTGCC
+>NODE_44_length_820_cov_167.058':NODE_27_length_78_cov_99,NODE_28_length_79_cov_78;
+GGCACTGTTGCAAATAGTCGGTGGTGATAAACTTATCATCCCCTTTTGCTGATGGAGCTG
+CACATGAACCCATTCAAAGGCCGGCATTTTCAGCGTGACATCATTCTGTGGGCCGTACGC
+TGGTACTGCAAATACGGCATCAGTTACCGTGAGCTGCAGGAGATGCTGGCTGAACGCGGA
+GTGAATGTCGATCACTCCACGATTTACCGCTGGGTTCAGCGTTATGCGCCTGAAATGGAA
+AAACGGCTGCGCTGGTACTGGCGTAACCCTTCCGATCTTTGCCCGTGGCACATGGATGAA
+ACCTACGTGAAGGTCAATGGCCGCTGGGCGTATCTGTACCGGGCCGTTGACAGCCGGGGC
+CGCACTGTCGATTTTTATCTCTCCTCCCGTCGTAACAGCAAAGCTGCATACCGGTTTCTG
+GGTAAAATCCTCAACAACGTGAAGAAGTGGCAGATCCCGCGATTCATCAACACGGATAAA
+GCGCCCGCCTATGGTCGCGCGCTTGCTCTGCTCAAACGCGAAGGCCGGTGCCCGTCTGAC
+GTTGAACACCGACAGATTAAGTACCGGAACAACGTGATTGAATGCGATCATGGCAAACTG
+AAACGGATAATCGGCGCCACGCTGGGATTTAAATCCATGAAGACGGCTTACGCCACCATC
+AAAGGTATTGAGGTGATGCGTGCACTACGCAAAGGCCAGGCCTCAGCATTTTATTATGGT
+GATCCCCTGGGCGAAATGCGCCTGGTAAGCAGAGTTTTTGAAATGTAAGGCCTTTGAATA
+AGACAAAAGGCTGCCTCATCGCTAACTTTGCAACAGTGCC
diff --git a/tests/test_plasmids.gfa b/tests/test_plasmids.gfa
new file mode 100644
index 0000000..ae42cfd
--- /dev/null
+++ b/tests/test_plasmids.gfa
@@ -0,0 +1,21 @@
+S	232	CCTTATACGAAGCCCAGGTTAATCCTGGGCTTTTTGTTGAATCTGATCATTGGTAGCAAACAGATCAGGATTGGTAATTTTGATGTTTTCCTGACAACTCCTGCAAAGCATCAGCCCAGCAAAAAGTTGTACATGTTCCGTTGATTCACAGAAGGCACATGGCTTAGGAAAAGAGATGATATTGGCTGAATTGACTAATTCTGTTGACATAAGAAGTAACCTTGGATTGTACATATTTATTTTTAATAAATTTCAATACTTTATACCTAATTTAGCCACTAAAATTTGTACATTATTGTATAATCCATGTGTACATATTATTTTTTATAATTTTCATTCACTTAGACCCAAAATAGTATTTATTTTTGTACAACACCATGTACAGAACAATAATCATATAAATCAAATTTTTAGCATAAAAAAGTCCATTAATTTTGTACACAATTCTGAAACTTAAAAATCTAAACTTTCATCAATTTTTTTCAT [...]
+S	277	TGAAACTTAAAAATCTAAACTTTCATCAATTTTTTTCATAATTTCAATAAATTAACCTTAATTTTAAGATATATTCTGAAATTTGGTTTGAAAGCTGTTTTTACATTATATTTCAATACTTTAAATCAAAAAATTGGATATTTTTTGAAAAACTCAATGAAAGTTTATTTTTTATTTAAAAACAACTAGTTATATTAGTTTTTATCCATTTTTTTGAAACAGTTTCTATATGATAAAAAAACCTATAAAAACCATATCTAGCAAAGGTTTGAGGGTTATCATCTTTAGATGCGTGGTGTGTGACAAAAAAATCCCGGCATGTGCCGGATTCTGGATTAGAAAATTGGCTAAAGTGACGTAGGACTGGTGCTTGGTTTTACATGGAAAAAAGTATTTATTTTCTGGTTTATAAAAACGTAAAAAGATCAGTTTTTGTTCATTCATCCAGGTTAAAAATTTCAACCTAAAACTTTAATTATGAAAAGC [...]
+S	280	GCCCTTGGTTTTCGCTTCGCTCAAACTCTATTGAACTTCGCTTTCGCTCAGTTCGTCGGGGCAATTTTTTGGTTAATACTTACGTGATTTTAAGAAAAAGCAAAAACAACTCGGAATTCGCTTCGCTCATAAAACTTTTTTACTCGCTACGCTCGGTCTAGGAACAAATTTCTGCATAAAACTTACGCTTTCTTAGGCTAAAAAGCCCCAAAAACTGTTTTTCAGAAAGGCTGAGAGGCAAATTTTATAAGTTCGCTCGTAGACACTCGCTCTATGAATCTATCTAGAATCAAAATCCCTCTTTATTTCGCGCTCATTTGCGTTTTTTGAGCTGTTTTCTGTTTTTCACTATAAGACCTATGTTTTTTACTTAAAGGCTCTTAAATCGCATTTGAATGCTTTCTGTGAAAATTTCCATAATTAAAATTTTAGTTTGAAATTTTTAATTTGGATGAACGGACAAAAAATGATTTTTTTACGTTTTTC [...]
+S	282	AGAAGCCACGCTTTTTAGGCTCTGGTTCAACATGCTCTGGAACAGGAATGCGCTTATTCTCTGGAGTAGTCAATCCGTCATGTTTAGGATCATCAATATTAGGTTCTGGCTGTACTTGAGCTACATTCGCTTGCGACTGTTCTTGATCGGTAAACGTAGTCATATTGGCTTTTGGTGCTTCTAGTAAGCGCTGCATGGCCTCGATCTGATCTTGATAAAACGATTCACGTTCTAGTGATTGATTTTCTCTAAACAGTGCTTGATTTAACTGTTTTTCCAGTATGTCAACTTGACGTTTTAATAGGTCAACTTCTGTCAAGTTTTGACTGTTAATTGATTGACTTTGATTGACATTAGTATCTTTCTTTTGTGGTTCCCCAAAAACTCTTATGGCTTCTGCGAAGTCAATTAATCCATCAGATCCTTTAGATAAATTTCCTTTGTTTATATGGGCATATATGGCTTGTCGTGAATATCCGTAAAGCT [...]
+S	283	AGAAGCCACGCTTTTTAGGCTCTGGTTCAACATGCTCTGGAACAGGAATGCGCTTATTCTCTGGAGTAGTCAATCCGTCATCTTTAGGTGGAACAACTATCACCTGCTCCTTCATTTCTACAATGGGAGCTGATTGAGGGAGTTCGGGTTCACTAGGCTCTTGGATCTCAGGTTTAGGTGCTTCCAGTAGACGTTGCATTGTCTCAATTTGATTTTGATAAAAGGATTCACGCTCTTTTGCATCATCAAGCTGATTTTGCAGCATGTTTATCTGTTGTCTAAGTAGTAAAACTTCTGTCGATATTGGACTGTCTATTTTTACAGATTCTTTTACATCCTGTTTTTTTGAAGGTTCACCAAAAACACGGATAGCCTCGGCTAGATCAATTTTATTATCAGAATTTTTACTTAAAATTCCTTTCTTTATGTTGTTGTAAATCGTTTGTCTATTGATATTGTAAAGCTTAGAAAGCTCAAGAACTGTAA [...]
+S	289	CACGTTCCACGCTTATTTATTGAGCAATGTTCCACGGTTTTATTTAGCCTAAGTTAACCATATGGAAGAAAAAAACGACTCCAGAAGCCACGCTTTTTAGGCTCTGGTTCAACATGCTCTGGAACAGGAATGCGCTTATTCTCTGGAGTAGTCAATCCGTCAT	LN:i:163	RC:i:14624
+S	297	AAAATTACCAATCCTGATCTGTTTGCTACCAATGATCAGATTCAACAAAAAGCCCAGGATTAACCTGGGCTTCGTATAAGGTGTATTATGTTAATTTTAGAAATTATTAAATGATTCCAAGATTTTCTAGCGACTTATAAGTAATTTCATTACGAATAGAACCAGACATTCCTTCTTTCATTTCTAAGTTGAGCGAAAAGGGGATTTTTTTTCCATTAGCTTGCTCCACCCAACCAGTCAACCAACCTACCTGTGGAGTAACATCCATTCCCCATCCACTTTTTGCATAAATCTTACTACCATTTACTTCTTTAATTAGAAGCATTTTTTTAACTTCTTCTTGAGTTTCTAATTTAAAAGGTAATCGGTTATGTGCAAGGTCATCGGCAAAATTAACTTCTTGTACTGGTGTAATTTTAAGGGGGCCAACTAACCAAAAATTATCGACCTGTGTTCCAATATTTGTATTTCCAAAATTAACCCGCT [...]
+S	333	AAAATTACCAATCCTGATCTGTTTGCTACCAATGATCAGATTCAACAAAAAGCCCAGGATTAACCTGGGCTTCGTATAAGGCGTATTATGTTAATTTTAATGGAACTTTATAATTAGACGTTGTTGTTGATATATAGCGAATGCCATCATGGTGGGCACTATATTTTATGTAGATTGAATACCCACAATCTAAATTACACCATTTTTCAGAGTACAGACTTTCTCTTACATCATCTGGGCTTCCCAATAGATCATGAATTTCAACCTTAGACATGTCAAAATTAAGTCCTTTAGGTAGAAGCTCTCTATATTTATTAAATCCTTCAACATTTTGATTATAAAAAAATATTGTTTGAAAAAATAAGTTTTTACCTAACATTGCTGTATTACTAAGATGATCTAAGCAACTAGCTTCATCTCGAAAAAGTAAACAAATACCTTTTTCTTCATTAGCTATATATAAAGTATCTTCATCTAAAGGTTCAT [...]
+S	6	GAAAAATTGCCCTTGGTTTTCGCTTCGCTCAAACTCTATTGAACTTCGCTTTCGCTCAGTTCGTCGGGGCAATTTTTTGGTTAATACTT	LN:i:89	RC:i:9779
+L	6	+	277	-	81M
+L	6	+	280	+	81M
+L	232	+	277	+	81M
+L	280	+	232	-	81M
+L	282	+	6	+	81M
+L	283	+	6	+	81M
+L	289	+	282	+	81M
+L	289	+	283	+	81M
+L	297	-	232	+	81M
+L	297	+	289	+	81M
+L	333	-	232	+	81M
+L	333	+	289	+	81M
diff --git a/tests/test_plasmids_separate_sequences.fasta b/tests/test_plasmids_separate_sequences.fasta
new file mode 100644
index 0000000..b9ca4d9
--- /dev/null
+++ b/tests/test_plasmids_separate_sequences.fasta
@@ -0,0 +1,18 @@
+>232
+CCTTATACGAAGCCCAGGTTAATCCTGGGCTTTTTGTTGAATCTGATCATTGGTAGCAAACAGATCAGGATTGGTAATTTTGATGTTTTCCTGACAACTCCTGCAAAGCATCAGCCCAGCAAAAAGTTGTACATGTTCCGTTGATTCACAGAAGGCACATGGCTTAGGAAAAGAGATGATATTGGCTGAATTGACTAATTCTGTTGACATAAGAAGTAACCTTGGATTGTACATATTTATTTTTAATAAATTTCAATACTTTATACCTAATTTAGCCACTAAAATTTGTACATTATTGTATAATCCATGTGTACATATTATTTTTTATAATTTTCATTCACTTAGACCCAAAATAGTATTTATTTTTGTACAACACCATGTACAGAACAATAATCATATAAATCAAATTTTTAGCATAAAAAAGTCCATTAATTTTGTACACAATTCTGAAACTTAAAAATCTAAACTTTCATCAATTTTTTTCATAATTTC [...]
+>277 extra text
+TGAAACTTAAAAATCTAAACTTTCATCAATTTTTTTCATAATTTCAATAAATTAACCTTAATTTTAAGATATATTCTGAAATTTGGTTTGAAAGCTGTTTTTACATTATATTTCAATACTTTAAATCAAAAAATTGGATATTTTTTGAAAAACTCAATGAAAGTTTATTTTTTATTTAAAAACAACTAGTTATATTAGTTTTTATCCATTTTTTTGAAACAGTTTCTATATGATAAAAAAACCTATAAAAACCATATCTAGCAAAGGTTTGAGGGTTATCATCTTTAGATGCGTGGTGTGTGACAAAAAAATCCCGGCATGTGCCGGATTCTGGATTAGAAAATTGGCTAAAGTGACGTAGGACTGGTGCTTGGTTTTACATGGAAAAAAGTATTTATTTTCTGGTTTATAAAAACGTAAAAAGATCAGTTTTTGTTCATTCATCCAGGTTAAAAATTTCAACCTAAAACTTTAATTATGAAAAGCTTCACA [...]
+>280 lots and lots of extra text
+GCCCTTGGTTTTCGCTTCGCTCAAACTCTATTGAACTTCGCTTTCGCTCAGTTCGTCGGGGCAATTTTTTGGTTAATACTTACGTGATTTTAAGAAAAAGCAAAAACAACTCGGAATTCGCTTCGCTCATAAAACTTTTTTACTCGCTACGCTCGGTCTAGGAACAAATTTCTGCATAAAACTTACGCTTTCTTAGGCTAAAAAGCCCCAAAAACTGTTTTTCAGAAAGGCTGAGAGGCAAATTTTATAAGTTCGCTCGTAGACACTCGCTCTATGAATCTATCTAGAATCAAAATCCCTCTTTATTTCGCGCTCATTTGCGTTTTTTGAGCTGTTTTCTGTTTTTCACTATAAGACCTATGTTTTTTACTTAAAGGCTCTTAAATCGCATTTGAATGCTTTCTGTGAAAATTTCCATAATTAAAATTTTAGTTTGAAATTTTTAATTTGGATGAACGGACAAAAAATGATTTTTTTACGTTTTTCTAAACC [...]
+>282
+AGAAGCCACGCTTTTTAGGCTCTGGTTCAACATGCTCTGGAACAGGAATGCGCTTATTCTCTGGAGTAGTCAATCCGTCATGTTTAGGATCATCAATATTAGGTTCTGGCTGTACTTGAGCTACATTCGCTTGCGACTGTTCTTGATCGGTAAACGTAGTCATATTGGCTTTTGGTGCTTCTAGTAAGCGCTGCATGGCCTCGATCTGATCTTGATAAAACGATTCACGTTCTAGTGATTGATTTTCTCTAAACAGTGCTTGATTTAACTGTTTTTCCAGTATGTCAACTTGACGTTTTAATAGGTCAACTTCTGTCAAGTTTTGACTGTTAATTGATTGACTTTGATTGACATTAGTATCTTTCTTTTGTGGTTCCCCAAAAACTCTTATGGCTTCTGCGAAGTCAATTAATCCATCAGATCCTTTAGATAAATTTCCTTTGTTTATATGGGCATATATGGCTTGTCGTGAATATCCGTAAAGCTTAGCCA [...]
+>283
+AGAAGCCACGCTTTTTAGGCTCTGGTTCAACATGCTCTGGAACAGGAATGCGCTTATTCTCTGGAGTAGTCAATCCGTCATCTTTAGGTGGAACAACTATCACCTGCTCCTTCATTTCTACAATGGGAGCTGATTGAGGGAGTTCGGGTTCACTAGGCTCTTGGATCTCAGGTTTAGGTGCTTCCAGTAGACGTTGCATTGTCTCAATTTGATTTTGATAAAAGGATTCACGCTCTTTTGCATCATCAAGCTGATTTTGCAGCATGTTTATCTGTTGTCTAAGTAGTAAAACTTCTGTCGATATTGGACTGTCTATTTTTACAGATTCTTTTACATCCTGTTTTTTTGAAGGTTCACCAAAAACACGGATAGCCTCGGCTAGATCAATTTTATTATCAGAATTTTTACTTAAAATTCCTTTCTTTATGTTGTTGTAAATCGTTTGTCTATTGATATTGTAAAGCTTAGAAAGCTCAAGAACTGTAAGGCTTT [...]
+>289
+CACGTTCCACGCTTATTTATTGAGCAATGTTCCACGGTTTTATTTAGCCTAAGTTAACCATATGGAAGAAAAAAACGACTCCAGAAGCCACGCTTTTTAGGCTCTGGTTCAACATGCTCTGGAACAGGAATGCGCTTATTCTCTGGAGTAGTCAATCCGTCAT
+>297
+AAAATTACCAATCCTGATCTGTTTGCTACCAATGATCAGATTCAACAAAAAGCCCAGGATTAACCTGGGCTTCGTATAAGGTGTATTATGTTAATTTTAGAAATTATTAAATGATTCCAAGATTTTCTAGCGACTTATAAGTAATTTCATTACGAATAGAACCAGACATTCCTTCTTTCATTTCTAAGTTGAGCGAAAAGGGGATTTTTTTTCCATTAGCTTGCTCCACCCAACCAGTCAACCAACCTACCTGTGGAGTAACATCCATTCCCCATCCACTTTTTGCATAAATCTTACTACCATTTACTTCTTTAATTAGAAGCATTTTTTTAACTTCTTCTTGAGTTTCTAATTTAAAAGGTAATCGGTTATGTGCAAGGTCATCGGCAAAATTAACTTCTTGTACTGGTGTAATTTTAAGGGGGCCAACTAACCAAAAATTATCGACCTGTGTTCCAATATTTGTATTTCCAAAATTAACCCGCTTTACTT [...]
+>333
+AAAATTACCAATCCTGATCTGTTTGCTACCAATGATCAGATTCAACAAAAAGCCCAGGATTAACCTGGGCTTCGTATAAGGCGTATTATGTTAATTTTAATGGAACTTTATAATTAGACGTTGTTGTTGATATATAGCGAATGCCATCATGGTGGGCACTATATTTTATGTAGATTGAATACCCACAATCTAAATTACACCATTTTTCAGAGTACAGACTTTCTCTTACATCATCTGGGCTTCCCAATAGATCATGAATTTCAACCTTAGACATGTCAAAATTAAGTCCTTTAGGTAGAAGCTCTCTATATTTATTAAATCCTTCAACATTTTGATTATAAAAAAATATTGTTTGAAAAAATAAGTTTTTACCTAACATTGCTGTATTACTAAGATGATCTAAGCAACTAGCTTCATCTCGAAAAAGTAAACAAATACCTTTTTCTTCATTAGCTATATATAAAGTATCTTCATCTAAAGGTTCATTATCCT [...]
+>6
+GAAAAATTGCCCTTGGTTTTCGCTTCGCTCAAACTCTATTGAACTTCGCTTTCGCTCAGTTCGTCGGGGCAATTTTTTGGTTAATACTT
diff --git a/tests/test_plasmids_separate_sequences.gfa b/tests/test_plasmids_separate_sequences.gfa
new file mode 100644
index 0000000..52af25e
--- /dev/null
+++ b/tests/test_plasmids_separate_sequences.gfa
@@ -0,0 +1,21 @@
+S	232	*	LN:i:528	KC:i:51170
+S	277	*	LN:i:893	KC:i:50561
+S	280	*	LN:i:895	KC:i:37634
+S	282	*	LN:i:1819	KC:i:106341
+S	283	*	LN:i:1854	KC:i:82138
+S	289	*	LN:i:163	KC:i:14624
+S	297	*	LN:i:4149	KC:i:248525
+S	333	*	LN:i:4399	KC:i:191002
+S	6	*	LN:i:89	KC:i:9779
+L	6	+	277	-	81M
+L	6	+	280	+	81M
+L	232	+	277	+	81M
+L	280	+	232	-	81M
+L	282	+	6	+	81M
+L	283	+	6	+	81M
+L	289	+	282	+	81M
+L	289	+	283	+	81M
+L	297	-	232	+	81M
+L	297	+	289	+	81M
+L	333	-	232	+	81M
+L	333	+	289	+	81M
diff --git a/tests/test_queries1.fasta b/tests/test_queries1.fasta
new file mode 100644
index 0000000..08b9aa2
--- /dev/null
+++ b/tests/test_queries1.fasta
@@ -0,0 +1,8 @@
+>test_query_exact
+CTCGCACTTGGGGAATCGCGCAGACCTCACCCGGTTTGCAGGCTTGCGCCGGGCGGTAGATGCGCCGCCAGGCGAAAAACAGCGCGACCAGCGCTGCGCC
+>test_query_one_mismatch
+CTCGCACTTGGGGAATCGCGCAGACCTCACCCGGTTTGCAGGCTTGCGCCGAGCGGTAGATGCGCCGCCAGGCGAAAAACAGCGCGACCAGCGCTGCGCC
+>test_query_one_insertion
+CTCGCACTTGGGGAATCGCGCAGACCTCACCCGGTTTGCAGGCTTGCGCCGGAGCGGTAGATGCGCCGCCAGGCGAAAAACAGCGCGACCAGCGCTGCGCC
+>test_query_one_deletion
+CTCGCACTTGGGGAATCGCGCAGACCTCACCCGGTTTGCAGGCTTGCGCCGGCGGTAGATGCGCCGCCAGGCGAAAAACAGCGCGACCAGCGCTGCGCC
\ No newline at end of file
diff --git a/tests/test_queries2.fasta b/tests/test_queries2.fasta
new file mode 100644
index 0000000..4b90f06
--- /dev/null
+++ b/tests/test_queries2.fasta
@@ -0,0 +1,267 @@
+>CCF76911 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:27:842:-1 gene:SL1344_P3_0001 transcript:CCF76911 description:"dihydropteroate synthase type-2 (dihydropteroate synthase type ii) (dhps) (dihydropteroate pyrophosphorylase type ii)"
+MNKSLIIFGIVNITSDSFSDGGRYLAPDAAIAQARKLMAEGADVIDLGPASSNPDAAPVS
+SDTEIARIAPVLDALKADGIPVSLDSYQPATQAYALSRGVAYLNDIRGFPDAAFYPQLAK
+SSAKLVVMHSVQDGQADRREAPAGDIMDHIAAFFDARIAALTGAGIKRNRLVLDPGMGFF
+LGAAPETSLSVLARFDELRLRFDLPVLLSVSRKSFLRALTGRGPGDVGAATLAAELAAAA
+GGADFIRTHEPRPLRDGLAVLAALKETARIR
+>CCF76912 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:851:1075:-1 gene:SL1344_P3_0002 transcript:CCF76912 description:"conserved hypothetical protein"
+YHEKYHAQKRLNNILKNCLLSAAAQLHRPLSWLCFQMYALLLLQLMDHRKQVTRLGIPFR
+PEHPYDTHARLLLL
+>CCF76913 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:1150:1998:-1 gene:SL1344_P3_0003 transcript:CCF76913 description:"replication protein c"
+MKPKNKHSLSHVRHDPAHCLAPGLFRALKRGERKRSKLDVTYDYGDGKRIEFSGPEPLGA
+DDLRILQGLVAMAGPNGLVLGPEPKTEGGRQLRLFLEPKWEAVTADAMVVKGSYRALAKE
+IGAEVDSGGALKHIQDCIERLWKVSIIAQNGRKRQGFRLLSEYASDEADGRLYVALNPLI
+AQAVMGGGQHVRISMDEVRALDSETARLLHQRLCGWIDPGKTGKASIDTLCGYVWPSEAS
+GSTMRKRRQRVREALPELVALGWTVTEFAAGKYDITRPKAAG
+>CCF76914 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:1988:2827:-1 gene:SL1344_P3_0004 transcript:CCF76914 description:"regulatory protein"
+MATHKPINILEAFAAAPPPLDYVLPNMVAGTVGALVSPGGAGKSMLALQLAAQIAGGPDL
+LEVGELPTGPVIYLPAEDPPTAIHHRLHALGAHLSAEERQAVADGLLIQPLIGSLPNIMA
+PEWFDGLKRAAEGRRLMVLDTLRRFHIEEENASGPMAQVIGRMEAIAADTGCSIVFLHHA
+SKGAAMMGAGDQQQASRGSSVLVDNIRWQSYLSSMTSAEAEEWGVDDDQRRFFVRFGVSK
+ANYGAPFADRWFRRHDGGVLKPAVLERQRKSKGVPRGEA
+>CCF76915 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:2857:3063:-1 gene:SL1344_P3_0005 transcript:CCF76915 description:"repressor protein"
+MKDQKDKQTGDLLASPDAVRQARYAERMKAKGMRQRKFWLTDDEYEALRECLEELRAAQG
+GGSDPASA
+>CCF76916 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:3065:3277:-1 gene:SL1344_P3_0006 transcript:CCF76916 description:"conserved hypothetical protein"
+MEYEKSASGSVYLIKSDKGYWLPGGFGYTSNKAEAGRFSVADMASLNLDGCTLSLFREDK
+PFGPGKFLGD
+>CCF76917 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:3338:5467:-1 gene:SL1344_P3_0008 transcript:CCF76917 description:"mobilization protein"
+MAIYHLTAKTGSRSGGQSARAKADYIQREGKYARDMDEVLHAESGHMPEFVERPADYWDA
+ADLYERANGRLFKEVEFALPVELTLDQQKALASEFAQHLTGAERLPYTLAIHAGGGENPH
+CHLMISERINDGIERPAAQWFKRYNGKTPEKGGAQKTEALKPKAWLEQTREAWADHANRA
+LERAGHDARIDHRTLEAQGIERLPGVHLGPNVVEMEGRGIRTDRADVALNIDTANAQIID
+LQEYREAIDHERNRQSEEIQRHQRVSGADRTAGPEHGDTGRRSPAGHEPDPAGQRGAGGG
+VAESPAPDRGGMGGAGQRVAGGSRRGEQRRAERPERVAGVALEAMANRDAGFHDAYGGAA
+DRIVALARPDATDNRGRLDLAALGGPMKNDRTLQAIGRQLKAMGCERFDIGVRDATTGQM
+MNREWSAAEVLQNTPWLKRMNAQGNDVYIRPAEQERHGLVLVDDLSEFDLDDMKAEGREP
+ALVVETSPKNYQAWVKVADAAGGELRGQIARTLASEYDADPASADSRHYGRLAGFTNRKD
+KHTTRAGYQPWVLLRESKGKTATAGPALVQQAGQQIEQAQRQQEKARRLASLELPERQLS
+RHRRTALDEYRSEMAGLVKRFGDDLSKCDFIAAQKLASRGRSAEEIGKAMAEASPALAER
+KPGHEADYIERTVSKVMGLPSVQLARAELARAPAPRQRGMDRGGPDFSM
+>CCF76918 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:4306:4719:-1 gene:SL1344_P3_0009 transcript:CCF76918 description:"mobilization protein"
+MNAIDRVKKSRGINELAEQIEPLAQSMATLADEARQVMSQTQQASEAQAAEWLKAQRQTG
+AAWVELAKELREVAAEVSSAAQSARSASRGWHWKLWLTVMLASMMPTVVLLIASLLLLDL
+TPLTTEDGSIWLRLVAR
+>CCF76919 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:5666:5950:1 gene:SL1344_P3_0011 transcript:CCF76919 description:"mobilization protein c"
+MVKGSNKAADRLAKLEEQRARINAEIQRVRAREQQQERKNETRRKVLVGAMILAKVNSSE
+WPEDRLMAAMDAYLERDHDRALFGLPPRQKDEPG
+>CCF76920 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:6504:7043:1 gene:SL1344_P3_0012 transcript:CCF76920 description:"putative transposase/recombinase"
+MPHVAARTASRDRDTGRYQSHRPEQTLLYQIVDEYYPAFAALMAEQGKELPGYVQREFEE
+FLQCGRLEHGFLRVRCESCHAEHLVAFSCKRRGFCPSCGARRMAESAALLVDEVLPEQPM
+RQWVLSFPFQLRFLFGVVCGKGRNPTLRLWPAIFSGEIDVFPGDRRSRLISSMTSVAPA
+>CCF76921 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:7015:7860:-1 gene:SL1344_P3_0013 transcript:CCF76921 description:"streptomycin 3''-kinase"
+MGLMFMPPVFPAHWHVSQPVLIADTFSSLVWKVSLPDGTPAIVKGLKPIEDIADELRGAD
+YLVWRNGRGAVRLLGRENNLMLLEYAGERMLSHIVAEHGDYQATEIAAELMAKLYAASEE
+PLPSALLPIRDRFAALFQRARDDQNAGCQTDYVHAAIIADQMMSNASELRGLHGDLHHEN
+IMFSSRGWLVIDPVGLVGEVGFGAANMFYDPADRDDLCLDPRRIAQMADAFSRALDVDPR
+RLLDQAYAYGCLSAAWNADGEEEQRDLAIAAAIKQVRQTSY
+>CCF76922 pep:novel plasmid:GCA_000210855.2:pRSF1010_SL1344:7851:8654:-1 gene:SL1344_P3_0014 transcript:CCF76922 description:"aminoglycoside phosphotransferase"
+MNRTNIFFGESHSDWLPVRGGESGDFVFRRGDGHAFAKIAPASRRGELAGERDRLIWLKG
+RGVACPEVINWQEEQEGACLVITAIPGVPAADLSGADLLKAWPSMGQQLGAVHSLSVDQC
+PFERRLSRMFGRAVDVVSRNAVNPDFLPDEDKSTPQLDLLARVERELPVRLDQERTDMVV
+CHGDPCMPNFMVDPKTLQCTGLIDLGRLGTADRYADLALMIANAEENWAAPDEAERAFAV
+LFNVLGIEAPDRERLAFYLRLDPLTWG
+>CCF76810 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:378:467:1 gene:SL1344_P2_0001 transcript:CCF76810 description:"regulator of repZ translation"
+MKPYQRFNPVQCINTRHNRSAISDSLWQV
+>CCF76811 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:455:1486:1 gene:SL1344_P2_0002 transcript:CCF76811 description:"replication initiation protein"
+MAGLKNTPYNAVHWSQLAPEEQIRFWEDYEAGRATTFLVEPERKRTKRRRGEHSTKPKCE
+NPSWYRPERYKALSGQLGHAYNRLVKKDPVTGEQSLRMHMSLHPFYVQKRTYVGRKYAFR
+PEKQRLLDAVWPVLVSFSDAGTHTVGMSVSRLAREISPKDSKGKVIPELEVTVSRLSRLL
+AEQVRFGVLGVSEETLWDRETRQRLPRYVWITPAGWQMLGVDMVKLHEQQQKRLRESEIR
+QQLIREGVLREDEDISVHAARKRWYLQRSQDALKHRRAKAAASKRARRLKKLPADQQIHE
+MAEYLRKRLPPDEAYFCSDDHLKRMAIRELRQLELTLAAPPPH
+>CCF76812 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:2395:2664:1 gene:SL1344_P2_0003 transcript:CCF76812 description:"conserved hypothetical plasmid protein"
+MAQVNMSLRIDAELKDAFMAAAKSMDRNGSQLIRDFMRQTVERQHNTWFRDQVAAGRQQL
+EHGDVLPHDMVESSAAAWRDEMSRKVAGK
+>CCF76813 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:2661:2942:1 gene:SL1344_P2_0004 transcript:CCF76813 description:"putative plasmid stabilisation protein"
+MMEIFWTMLASQDRKRIREYIAEQNLMAAIELDERIGYSASSLAGQPYKGRNGRVEGTRE
+LVIHPHFVLVYEVDSQWGKVYILRVLHTAQKWP
+>CCF76814 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:2982:3830:1 gene:SL1344_P2_0005 transcript:CCF76814 description:"conserved hypothetical plasmid protein"
+MNNDELATRRAQAIAEDRCFSKGRLRDEFRMKPAPGAEPVKWYKNTYGGRFAVYRIADCV
+PMREKRPLTSKQQLAGQRLSVLSRLNSTSGRMARQAYDWLSLAPLFLDTETTGLDNTAEA
+LEIGLTDAAGQVVFETRLKPTVAIGAQAAAVHGISEQALCGAPSWTDVARQLRHAIGDRP
+VIIFNARFDIRILKQTAAAHSDPADWLEELTVYCAMELAAGYYGATNRYGTISLACAASQ
+AGLTWEGQAHSAIADARMTAGVVNAIAAYHLELLQEQARLKI
+>CCF76815 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:3971:4420:1 gene:SL1344_P2_0006 transcript:CCF76815 description:"conserved hypothetical plasmid protein"
+MRLFLGGRCYTAEKLEKDYLAEVANYSNDRWEAPQRASRLAASVKRYKTSEMLRFIFATI
+AYDPDPDLTPLTVRRLCKALFGRTGSQWLVVEVFGEKGRQHRSADSNPEMVEKMAARYRH
+AAELHWSATLAEIERVKRLYQTKIKKSKK
+>CCF76816 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:4555:4788:1 gene:SL1344_P2_0007 transcript:CCF76816 description:"putative membrane protein"
+MSSRNSVHDFIMLLPALLLVGWLVLVIILMFRDDKCDKTYREGSFPEFICLHSDRSSLRE
+TDSERLIVKYTEIKSQK
+>CCF76817 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:4897:5166:-1 gene:SL1344_P2_0008 transcript:CCF76817 description:"conserved hypothetical plasmid protein"
+MMITGNGINTVTVNGKVKHITELDDITLCLEWTKLREENNRLYEINNQANRGWRGFILRL
+IGVNLPDKRTEFTQRLLLTRKISGSVMKK
+>CCF76818 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:5163:5657:-1 gene:SL1344_P2_0009 transcript:CCF76818 description:"putative membrane protein"
+MCDSEAEKILFILNKHERAYRRLIPVYIFLAIVLWILPILLIVYLYFCIVDNEFLRIGFC
+IAWTAYYFLSLFKYFVKYFFPLDREDLLKLMELAKDSPDAKQELLERLLSGKRMTGRDEM
+DIKRILKTKEALDNIRNFIDKQQLTNSDTPKKSTVPNEDKKGIR
+>CCF76819 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:5713:6315:-1 gene:SL1344_P2_0010 transcript:CCF76819 description:"conserved hypothetical plasmid protein"
+MGKNQEERKTPVIVVKKRRTFSLPSLSEKTDIIAPVFTEQTAESAPAGINSSAVETHIPE
+APARKKKKKRHRFPRPSHWTREYTHECVEKIKALFPHLRAEGGGFIPLKIGINNDISAFL
+AEHPETELTMDEWLCAVSCITSRRVYLQRTAVAGVPRYGLDGHPKGQVSDSEAQSAGRRL
+ATLEQKWLRMQAQQENISGQ
+>CCF76820 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:6669:8015:1 gene:SL1344_P2_0011 transcript:CCF76820 description:"conserved hypothetical plasmid protein"
+MPMILVKKNPRGKVIRELSSEEETAVKTVCGLKKPATMALHNLANDILREMREYDAWLQC
+DCIPGDSPAMNFAALKNNTGTLYLSSFNHEHAPECPMYRQLSGNEEETSSGASRHPVSTR
+INYRNFLPPDDSNSVIRLQARSAYHNGESSSVRKKRPRLARLLLSLIDDAGLNKLDSLAN
+PRIRTNYRECLDAIRQVTLQQEYIRGRSLSEIIHFRPGMSERSQERLMETLENSERHWPA
+RRKHMFFQIFMAQHICRDAVEIHWANGNIQVIRPVRGISINGEAQGGIRPPYWVILAFCR
+SADGRIICSEGYAHALYQLTCPVPVDSKLERNTLTALLNVASWLKRKPGTPELSLERPLF
+DTEVYVNGEKKYVLPDFIVTARAPDGKTARVVIETMGYEDSDYCARKSRQHTGMKQIGVL
+HTDPPKWLDNDHPPFEKHMYGVFMHLRY
+>CCF76821 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:8294:10174:1 gene:SL1344_P2_0012 transcript:CCF76821 description:"colicin Ib protein"
+MSDPVRITNPGAESLGYDSDGHEIMAVDIYVNPPRVDVFHGTPPAWSSFGNKTIWGGNEW
+VDDSPTRSDIEKRDKEITAYKNTLSVQQKENENKRTEAGKRLSAAIAAREKDENTLKTLR
+AGNADVADITRQEFRLLQAELREYGFRTEIAGYDALRLHTESRMLFADADSLRISPREAR
+SLIEQAEKRQKDAQNADKKAADMLAEYERRKGILDTRLSELEKNGGAALAVLDAQQARLL
+GQQTRNDRAISEARNKLSSVTESLKTARNALTRAEQQLTQQKNTPDGKTIVSPEKFPGRS
+STNHSIVVSGDPRFAGTIKITTSAVIDNRANLNYLLTHSGLDYKRNILNDRNPVVTEDVE
+GDKKIYNAEVAEWDKLRQRLLDARNKITSAESAVNSARNNVSARTNEQKHANDALNALLK
+EKENIRSQLADINQKIAEEKRKRDEINMIKDAIKLTSDFYRTIYDEFGKQASELAKELAS
+VSQGKQIKSVDDALNAFDKFRNNLNKKYSIQDRMAISKALEAINQVHMAENFKLFSKAFG
+FTGKVIDRYDVAVELQKAVKTDNWRPFFVKLESLAAGRAASAVTAWTFSVMLGTPVGILG
+FAIIMAAVSAFVNDKFIEQVNKLIGI
+>CCF76822 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:10192:10539:-1 gene:SL1344_P2_0013 transcript:CCF76822 description:"immunity protein for colicin Ib"
+MKLDISVKYLLKSLIPSLIILTVFYLGWKDSQENARMFYAFIGCIISAITFPFSMRIIQK
+MVIRFTGKEFWQKDFFTNPVGGSLTAIFELFCFVISVPVVAIYLIFIFCKALSGK
+>CCF76825 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:12400:12852:1 gene:SL1344_P2_0016 transcript:CCF76825 description:"conserved hypothetical plasmid protein"
+MTVPARKRKKESPMFFIENEGQAVAGTDYWQSVQAQAGYVYLSWNAGAARLLVPDAAKHL
+LREMRGAEYVIISKGALHGRDALELVFEDGSDAPFVIHMLSEQCDRLLPENNQGGGFVVT
+VWTRGGNQLRYPGKYRVVENLPDVSPWSEH
+>CCF76826 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:12854:13639:1 gene:SL1344_P2_0017 transcript:CCF76826 description:"resolvase"
+MQHLPAPIHHARDAAQLPVAIDYPAALALRQMSMVHDELPKYLLAPEVSALLHYVPDLRR
+KMLLATLWNTGARINEALALTRGDFSLAPPYPFVQLATLKQRTEKAARTAGRMPAGQQTH
+RLVPLSDAWYVSQLQTMVATLKIPMERRNKRTGRTEKARIWEVTDRTVRTWIGEAVAAAA
+ADGVTFSVPVTPHTFRHSYAMHMLYAGIPLKVLQSLMGHKSISSTEVYTKVFALDVAARH
+RVQFAMPEADAVALIKQLERR
+>CCF76827 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:13893:14096:1 gene:SL1344_P2_0018 transcript:CCF76827 description:"hypothetical plasmid protein"
+MIFQHDSSNKIDCSYHAVHIRPSALFMLCYLQSCGNLASSVDAILNEVSFIVNVTQVFGC
+QFQHSAK
+>CCF76828 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:14223:14855:1 gene:SL1344_P2_0019 transcript:CCF76828 description:"plasmid partition protein"
+MAWIVGFISQKGGVGKSTKARALAREASACGIKTKLADLDLEQATSAEWHRRRLSAGLSP
+VASVEVFSTAKQAIESAGDFDLLILDGPARASKGTSEIAKVADLIVQPTGASLDDLVPAI
+KVFNALVKEGIPRSKLVFALSRVGTEAEELDARAYISEAGYETLSGCLFEKPAYRKAMNS
+GLAVTETRYKGLNERADELIQALIDKIGEE
+>CCF76829 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:14855:15229:1 gene:SL1344_P2_0020 transcript:CCF76829 description:"conserved hypothetical protein"
+MADASKLRTKRTRSGLGVPPGPDEVATSLNAPEIAPAVAATDVQRQQADSSPVHHEPVVT
+QTVTEVYTRRDGRSARKTNRTLAFATRVTPAFDQEIRDIAEREGLKLVEVLEKAVEAYKE
+KQGY
+>CCF76830 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:15468:16442:1 gene:SL1344_P2_0021 transcript:CCF76830 description:"plasmid stability protein"
+MRIFCDDGSTNVKLAWFEGKTLKSAVSVNSFRHNWKVEGLGSSRTYNYLLDGRKYTYDPV
+SEDAISTTHIEYQYSDTNVLAVHHALLNSGIEPQEIDLTVTLPISEFYTADCQKNTLNIE
+RKIRNLMREVTLNKGGTFTIKSVEVMPESLPAVFTRLVADNVGQYEKSLVIDLGGTTLDV
+GVIVGQFEDVSAVHGNPDIGVSMVTKATLTALKMASSDTSPMIADELIKNRNNLDFVGQV
+VNEVSKLNLVLDTIDTAINKLGELVVDDLLQYRNVNRVYIVGGGAALIADAVRKAWNHLG
+EKVVLMDEPQTALVQAIARFKAEE
+>CCF76831 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:16446:16838:1 gene:SL1344_P2_0022 transcript:CCF76831 description:"plasmid stability protein"
+MYEGEERKKLSLYLHPEDSADCLALAEIETVPRKKRGELYRQALITGLIMHQLDERIPAV
+LTALFTRELNADEVISQIARITGWKPSSGDLKEVLKALGGLQSTVSPEHSQDDGEQARLK
+AARVKMQNLI
+>CCF76833 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:17236:17481:1 gene:SL1344_P2_0024 transcript:CCF76833 description:"conserved hypothetical plasmid protein"
+MLCPAYPQHFVHGSVDKIPGYPGRAGTLTGLHPMQVCRCRRPPHPVTFRRSSSTRCGFGA
+APAFVCGRPVTGAARPDGGRM
+>CCF76834 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:17495:18421:1 gene:SL1344_P2_0025 transcript:CCF76834 description:"conserved hypothetical plasmid protein"
+MPNWCSNRMHFSGEPAQIAEIKRLASGAVTPFYRRATNEGIQLFLAGSAGLLQTTEDVWF
+EPCPGLTAAGRGVVSPENIAFTRWLTHLQNGVLLDEQNCLMLHELWLQSGTGQRRWEGLP
+DDVRDTITALFTAKRGDWCGFWSNEDVSVWWNRLCDNVLPEKTMPFDLLTVLPTRLDVEV
+NGFNGGVLNGVPSAYHWYTEQYGVKWPCGYDLNISSQGDNFIQVDFDTPWCQPESDVIAE
+LSRRFSCTLEHWYAEQGCDFCGWQLYERGELVDVLWGELEWSSPTDDDELPEVTGPAWIV
+DKVAHYGG
+>CCF76836 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:18806:19489:1 gene:SL1344_P2_0027 transcript:CCF76836 description:"putative DNA methylase"
+MSRFVLGNCIDVMARIPDNAIDFILTDPPYLVGFRDRSGRTIAGDKTDEWLQPACNEMFR
+VLKKDALMVSFYGWNRVDRFMAAWKNAGFSVVGHLVFTKNYTSKAAYVGYRHECAYILAK
+GRPRLPQNPLPDVLGWKYSGNRHHPTEKPVTSLQPLIENFTHPNAIVLDPFAGSGSTCVA
+ALQSGRRYIGIELLEQYHRAGQQRLAAVQRAMQQGAANDDWFMPEAA
+>CCF76837 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:19490:19711:1 gene:SL1344_P2_0028 transcript:CCF76837 description:"conserved hypothetical plasmid protein"
+MNYAGHEKLRAEVAEVANAMCDLRTTMNEMEQRYSFNADTLPERLVRQTLFRANRLLMEA
+YTEILELEACFKD
+>CCF76838 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:19725:20159:1 gene:SL1344_P2_0029 transcript:CCF76838 description:"conserved hypothetical plasmid protein"
+MYGTCETLCRELAVKYPGDMPLMLVIWSPEEIQALADGMDISLSDHEIRTVLARLEDIPE
+DQRTESGISSGVAMEIINNVSENRQVTVPAELLASLIQTAEQALWKREWAARDHGLAVPE
+CVTRRQAVINQARTLLKNNRHEND
+>CCF76839 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:20205:20981:1 gene:SL1344_P2_0030 transcript:CCF76839 description:"conserved hypothetical plasmid protein"
+MNENTTLNALICRHARNLLLAQGWPEETDVDQRNPNHPGWISIYVLLDAPRLATLLINRH
+GGALPPLLASAIHKLTGTGAELVLSGSQWQSLPVLPADGTQVSFPYAGEWLAEDEIRAVL
+DAVRDAVRCVSYQVAEDTRRIRAALTTTGQTLLTRQTRRFRLVVKESDHPCWLDEDDENL
+PVVLDAILNRGARFSAVEMYLVSDCIEHILSSWLAWDVLRIPDEPPRRWFDRGVLREVVR
+EARNEIRSMADALAKIRK
+>CCF76840 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:20956:21426:1 gene:SL1344_P2_0031 transcript:CCF76840 description:"conserved hypothetical plasmid protein"
+MPWQKSGNDDTGGVNPRLFPAGPRTEHKGRRRRLRFTRPCRAWPCGFSVMWPPCRVRAVP
+CLHLSRAGRDARVRFAAAVTRSLLPVCRDFPVVHPLRFRGLTLQLPPAVCVRLRLPLRPV
+HPHLIARLLWRHGTARCRGICEQRRKTSCNMRNLSL
+>CCF76841 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:21399:21824:1 gene:SL1344_P2_0032 transcript:CCF76841 description:"conserved hypothetical plasmid protein"
+MQYAKPVTLNVEECDRLSFLPYLFGQDFLYAEASVYALAKQMMPEYEGGFWHFIRLPDGG
+GYMMPDGDRFHMVNGANWFDRTVSADAAGIILTSLVINRQLWLYHDSGDAGLTQLYRMRD
+AQLWRHIEFHPECNAIYAALD
+>CCF76842 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:21871:22293:1 gene:SL1344_P2_0033 transcript:CCF76842 description:"conserved hypothetical plasmid protein"
+MYCTVKEIIRDVLDTDVPDSECVFAVVLTRGDVRHIAQDWSLTDDELETVMQRLDDAFEY
+GADVSVVHGVVRELMEEKRASRQVTVPAVMLEKVLALAGSEMKRLYAVGSENGGDGDAFV
+REEREAMDVVLQALDGEHMS
+>CCF76844 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:23250:23777:1 gene:SL1344_P2_0035 transcript:CCF76844 description:"single-stranded DNA binding protein"
+MSARGINKVILVGRLGNDPEVRYIPNGGAVANLQVATSESWRDKQTGEMREQTEWHRVVL
+FGKLAEVAGEYLRKGAQVYIEGQLRTRSWEDNGITRYVTEILVKTTGTVQMLGRAPQQNA
+QAQPKPQQNGQPQSADATKKGGAKTKGRGRKAAQPEPQPQPPEGEDYGFSDDIPF
+>CCF76845 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:24121:26085:1 gene:SL1344_P2_0036 transcript:CCF76845 description:"ParB-like partition protein"
+MIMPVTKCEPETTRKASRKSVKTQETVLSALLAQTEEVSVPLASLIKSPLNVRTVPYSAE
+SVSELAESIKGVGLLQNLVVHTLPGDRYGVAAGGRRLAALNMLAERGIIPADWPVRVKVI
+PQELATAASMTENGHRRDMHPAEQIAGFRAMAQEGKTPAQIGDLLGYSPRHVQRMLKLAD
+LAPVILDALAEDRITTEHCQALALENDTARQVQVFEAACQSGWGGKPDVQTIRRLVTESE
+VAVAGNTKFRFVGADAFSPDELRTDLFSDDEGGYVDCVALDAALLEKLQAVAEHLREAEG
+WEWCAGRMEPVGECREDAGTYRSLPEPEAVLTEAEEERLNELMTRYDALENQCEESDLLE
+AEMKLMRCMAKVRAWTPEMRSGSGVVVSWCYGNVCVQRGVQLRSEDDVADDADRTEQVQE
+KASVEEISLPLLTKMSSERTLAVQAALMQQPDKSLALLAWTLCLNVFGSGAYSKPAQISL
+ECEHYSLTSDAPSGKEGAAFMALMAEKARLAALLPEGWSRDMTTFLSLSQEVLLSLLSFC
+TACSLNGVQTRECGHTSRSPLDSLESAIGFHMRDWWQPTKANFFGHLKKPQIIAALNEAG
+LSGAARDAEKMKKGDAAEHAEHHMKDNRWVPGWMCAPHPQTDATERTDNLADAA
+>CCF76846 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:26140:26574:1 gene:SL1344_P2_0037 transcript:CCF76846 description:"plasmid SOS inhibition protein"
+MKTELTLNALQSMNAQEYEDIRAAGSDMRRNLTHEVMREVDAPANWMMNGEYGSEFGGFF
+PVQVRFTPAHERFHLALCSPGDVSQLWMLVLVNCGGQPFAVVQVQHIFTPVAISHTLALA
+ATLDAQGYSVNDIIHILMAEGGQA
+>CCF76847 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:26625:27290:1 gene:SL1344_P2_0038 transcript:CCF76847 description:"plasmid SOS inhibition protein"
+MQAVAVTEQRRRQGRTLSAWPYASAFFRCLNGSRRISLTDLRFFAPALTKEEFHGNRLLW
+LAAVDKLIESFGEVCVLPLPSDAGHRLFPSVPFREGERRRQKTTLTEQKYSRQREREAER
+RELEYQTCFAQAQIDLAFHTPSTVGSWLSRWSGVVEEHDLETIFWGWCGRFPSLSSFDRF
+FWQEEPLWRLIFEAGEAGRGAPVQVRALEQWMIPNKLENAI
+>CCF76848 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:27290:27883:1 gene:SL1344_P2_0039 transcript:CCF76848 description:"conserved hypothetical plasmid protein"
+MKSDEQYQVPVWMRPLLPLLCNTGGNDPEELLNDTETTASANIVRYVLIVAVRSQIDLLQ
+LLYRKGLLRTEIPGGFSPEEAQELLDNLVRSHISKALSGERMAARDRNADLTWIRQQLVD
+AAWFVRATLEAHGMGVGNESPSAPPETMPDIQTRELVMLIKRLASSLKAVKPDSSVVREA
+QDWLCDRKLVDITDILR
+>CCF76849 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:27955:28425:1 gene:SL1344_P2_0040 transcript:CCF76849 description:"conserved hypothetical plasmid protein"
+MRRVLCTRRNKEVAGGSAFTRPCGAWPCGFSALWPQRRVRAVPCLHLSRAGRDARVRFAA
+AVTRSLLPVCRDFPVVHPLRFRGLTLQLPPAVCVRLRLPLRPVHPRLIARLLWRHGTARC
+RRTCDYGGFGNVCCCTCCIRWNLAQIQLWKHRRTLV
+>CCF76850 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:28331:28846:1 gene:SL1344_P2_0041 transcript:CCF76850 description:"anti-restriction protein"
+MEDSGMSVVAPAVYVGTWHKYNCGSIAGRWFDLTTFDDERDFFAACRALHQDEADPELMF
+QDYEGFPGNMASECHINWAWVEGFRQARDEGCEEAYRLWVEDTGETDFDTFRDAWWGEAD
+SEEAFAVEFASDTGLLADVPETVALYFDYEAYARDLFLDSFTFIDGHVFRR
+>CCF76851 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:29575:30009:1 gene:SL1344_P2_0042 transcript:CCF76851 description:"conserved hypothetical plasmid protein"
+MTVSSTISVFCRDGVFRTVYCHLHGEPTWNGRILHTHYATGQQAEALVEHGDIRCLGPRC
+DKPAGHTLQNPVDGVTAYYGRDSGFRMDSEAREYRSFREAIATESTEEVRFHYVFIDGYW
+KVMYRTPEGWKMKSLALALRRCPK
+>CCF76852 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:30103:30369:1 gene:SL1344_P2_0043 transcript:CCF76852 description:"conserved hypothetical plasmid protein"
+MRPSIIFATAEYVKRLREECLRENKPLHRHTRFRRQELAQDEINPDVLAMSGHIARRCSE
+RKRVRIPAMKVSEWGHLLRALEIERVCH
+>CCF76853 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:30311:31360:1 gene:SL1344_P2_0044 transcript:CCF76853 description:"putative transposase"
+KSANGVTCSARLKLSGSATDYPLPSACAGGRIRSDISPGGTVSKKKTTTTPTPHDAAFRS
+FLANPDVARDFLELHLPAEYRQLCDLSTLKLEPATFVEPDLHQYASDILWSVKTTGGEDG
+YVYTLIEHQSTENLYMPFRMLRYSVAAMQRHLEQHKTLPLVIPVLFYHGERSPYPYSMNW
+LDCFENPALAAKIYTKPFPLVDITVVDDNEIMNHRRMAALTLLMKHIRHRDMMELLDKLP
+QVMVEISDEQVRVLIHYIVNAGDSVSPEFMRALAERLPQHEDKLMTIAERLEQKGRQEGR
+MEGRMEGRMEGALEKALAIACQLQKMGMTPEQIKQATGLSDDELKKITH
+>CCF76854 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:32007:32342:1 gene:SL1344_P2_0045 transcript:CCF76854 description:"conserved hypothetical plasmid protein"
+MRFSLFSPVREWCASDHHMPLLCRRFSSVAPYAALPAHLTVCKATAPDGAAVSACLPPHC
+GLFSADGLSGGTYMTTSRFSRPGERCTSHKSFCRRRQKLLRLPPDNCPVTW
+>CCF76855 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:32467:33315:1 gene:SL1344_P2_0047 transcript:CCF76855 description:"conserved hypothetical plasmid protein"
+MNQTLPTADLNTAGTTDVIPSVAIDRIIAQRNEGIALFMQAMECLATARKILLDASGDIF
+LYGFEDCVTDSVRCMDKPEEAKKNITRLADRKIWDRLMTDTGMYTFMSSCQRDEWNSQLM
+SDTCPEITLDNVLATFRHLNASKMQTFEQGLIDVYRKLSWDYRTNNPCRLGKKIIIENLL
+YRWSNGRVTLDCSGREALDDLVRPFYLLEGRNVPDFRNSIGAQYGEFLGNGDNVGKLLEG
+EYFTVRGYQKGTVHIVFKRSDLVEKLNDIIARHYPGALPPRV
+>CCF76856 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:33401:33736:-1 gene:SL1344_P2_0047A transcript:CCF76856 description:"conserved hypothetical plasmid protein"
+MASKKFYSDDDIQLAKAALSELPDLTAQRKTLRDFLDAIRDDIIVLVRTKGYTLADVRDT
+LKNAGYEVGEKALRDIIREAESKKPSRRSSSKTAPKKTDSGRKDGIDMNNN
+>CCF76857 pep:novel plasmid:GCA_000210855.2:pCol1B9_SL1344:33969:34301:1 gene:SL1344_P2_0048 transcript:CCF76857 description:"relaxosome component"
+MSDKRQRSGSERRQKTILRAVRFSPDEDETICKNAEDSGLTVSAYIRNAALNKRINSRTD
+DAFLKELMRLGRMQKHLFVQGKRTGDKEYAEVLVAITELTNTLRKQLMEG
diff --git a/tests/test_query_paths.fasta b/tests/test_query_paths.fasta
new file mode 100644
index 0000000..24d1204
--- /dev/null
+++ b/tests/test_query_paths.fasta
@@ -0,0 +1,14 @@
+>query1 perfect match from 1+ to 4+
+CCAATGAAAAAGCTATGCACTTTGTACAGGGTGCCATCGGGTTTCTGAACTCTCAGATAGTGGGGATCCCGGGAAAGGGCCTATATTTGCGGTCCAACTTAGGCGTAAACCTCGATGCTACCTACTCAGACCCACCCCGCGCGGGGTAAATATGGCACTCATCCCAGCTGGTTCTTGGCGTTCTACGCAGCCACATGTTCATTAACAGTTGTCTGGTAGCACAAAAGTATTACCATGGTCCTAGAAGCCCGGCAGAGTTAGTTCGAACCTAATGCCACAAATGAGACAGGACGCCAATGGGTACCGGACATTAGGTCGAGCTCAGTTCGGTAACGGAGAGACCCTGCGGCGTACTTAATTATGCATATGAAACGCGCCCAAGTGACGCCAGGCAAGTCTCAGCAGGTTCCCGTGTTAGCTCGAGGGTAAACATACAAGCCGATTGAACATGGGTTGGGGGCTTCAAATCGTCGAGGACCCCACAGTACCTCG [...]
+>query2 same as query 1 but with 20 mismatches (2%)
+CCAATGAAAAAGCTATGCACATTGTACAGGGTGCCATCGGCTTTCTGAACTCTCAGATATTGGGGATCCCGGGAAAGGGCCTATTTTTGCGGTCCAACTTAGGCGTAAACCTCGATGCTACCTACTCAGACCCACCCCGCGCGGGGTAAATATGGCACTCATCCCAGCTGGTTCTTGGCGTTCTACGCAGCCACATGTTCATTAACAGTTGTCTGGTAGCACAAAAGTATTACCATGGTCCTAGAAGCACGGCAGAGTTAGTTCGAACCTAATGCCACAAATGAGACAGGACGCCACTGGGTACCGGACATTAGGTCGAGCTCAGTTCGGTAACGGAGAGACCCTGCGGCGTATTTAATTATGCATATGAAACGCGCCCAAGTGACGCCAGGCAGGTCTCAGCAGGTTCCCGTGTTAGCTCGAGGCTAAACATACAAGCCGATTGATCATGGGTTGGGGGCTTCAAATCGTCGAGGACCCCACAGTACCTCG [...]
+>query3 same as query 1 but with 20 insertions
+CCAATGAAAAAGCTATGCACTTTGTACAGGGTGCCATCGGGATTTCTGAACTCTCAGATAGTGGGGATCCCGGGAAAGGGCCTATATTTGCGGTCCAACTTAGGCGTAAAACCTCGATCGCTACCTACTCAGACCCACCCCGCGCGGGGTAAATGATGGCACTCATCCCTAGCTGGTTCTTGGCGTTCTACGCAGCCACATGGTTCATTAACAGTTGTCTGGTAGCACAAAAGTATTACCATGGTCCTAGAAGCCCTGGCAGAGTTAGTTCGAACCTAATGCCACAAATGAGACAGGACGCCAATGGGTACCGGACATTAGGTCGAGCTCAGTTCGGTAACGGCAGAGACCCTGCGGCGTACTTAATTATGCAATATGAAACGCGCCCAAGTGACGCTCAGGCAAGTCTCAGCAGGTTCCCGTGTTAGCTCGAGGGTAAACATACAAGCCGATTGAACATGGGTTGGGGGCTTCAAATCGTCGAGGACCCCA [...]
+>query4 same as query 1 but with 20 deletions
+CCAATGAAAAAGCTATGCACTTGTACAGGGTGCCATCGGGTTTCTGAACTCTCAGATAGTGGGGATCCCGGGAAAGGGCCTATATTTGCGGTCCAACTTAGGCGTAAACCTCATGCTACCTACTCAGACCCACCCCGCGCGGGGTAAATATGGCACCATCCCAGCTGGTTCTTGGCGTTCTACGCAGCCACATGTTCATTAACAGTTGTCTGGTAGCACAAAAGTATTACCATGGTCCTAGAAGCCCGGCAGAGTTAGTTCGACCTAATGCCACAAATGAGACAGGACCCAATGGGTACCGGACATTAGGTCGAGCTCAGTTCGTAACGGAGAGACCCTGCGGCGACTTAATTATGCATATGAAACGCGCCCAAGTGACGCCAGGCAAGTCTCAGCAGGTTCCCGTGTTAGCTCGAGGTAAACATACAAGCCGATTGAACATGGTTGGGGGCTTCAAATCGTCGAGGACCCCACGTACCTCGGAGACCAAGA [...]
+>query5 perfect match from 1+ to 4+ to 6+ to 7+
+CCAATGAAAAAGCTATGCACTTTGTACAGGGTGCCATCGGGTTTCTGAACTCTCAGATAGTGGGGATCCCGGGAAAGGGCCTATATTTGCGGTCCAACTTAGGCGTAAACCTCGATGCTACCTACTCAGACCCACCCCGCGCGGGGTAAATATGGCACTCATCCCAGCTGGTTCTTGGCGTTCTACGCAGCCACATGTTCATTAACAGTTGTCTGGTAGCACAAAAGTATTACCATGGTCCTAGAAGCCCGGCAGAGTTAGTTCGAACCTAATGCCACAAATGAGACAGGACGCCAATGGGTACCGGACATTAGGTCGAGCTCAGTTCGGTAACGGAGAGACCCTGCGGCGTACTTAATTATGCATATGAAACGCGCCCAAGTGACGCCAGGCAAGTCTCAGCAGGTTCCCGTGTTAGCTCGAGGGTAAACATACAAGCCGATTGAACATGGGTTGGGGGCTTCAAATCGTCGAGGACCCCACAGTACCTCG [...]
+>query6 matches 1000 bp of node 1+ with 1000 bp inserted in middle (500, 1000, 500)
+AGGTATCCTGAGCACGGTTGCGCGTCCGTATCAAGCTCCTCTTTATAGGCCCCGGTTTCTGTTGGTCGTAGAGCGCAGAACGGGTTGGGGGGATGTACGACAATATCGCTTAGTCACCTTTGGGCCACGGTCCGCTACCTTACAGGAATTGAGACCGTCCTTTAATTTCCCTTGCATATATGTTGCGTTTCTTCGACCTTTTAACCGCTCCCTTAGGAGAAAGACAGATAGCTTCTTACCCGTACTCCACCGTTGGCAGCACGATCGCATGTCCCACGTGAACCATTGGTAAACCCTGTGGCCTGTGAGCGACAAAAGCTTTAATGGGAAATTCGCGCCCATAACTTGGTCCGAATACGGGTCCTAGCAACGTTCGTCTGAGTTTGATCTATATAATACGGGCGGTATGTCTGCTTTGATCAACCTCCAATAGCTCGTATGATAGTGCACCCGCTGGTGATCACTCAATGATCTGGGCTCCCCGTTGCAACT [...]
+>query7 matches the end of 2+ and the start of 8+ (has a 2000 bp insert)
+TAACGCTCATCAGCTAACGAAAGAGTTAGAGGCTCGCTAAATCGCACTGTCGGGGTCCCTTGGGTATTTTACACTAGCGTCAGGTAGGCTAGCATGTGTCTTTCCTTCCAGGGGTATGCGGGTGCGTGGACAAATGAGCAGCATACGTATTTACTCGGCGTGCTTGGTCTCTCGTATTTCTCCTGGAGATCAAGGAAATGTTTCATGTCCAAGCGAAAAGCCGCTCTACGGAATGGATCTACGTTACTGCCTGCATAAGGAGACCGGTGTAGCCAAGGACGAAAGCGACCCTAGGTTCTAACCGTCGACTTTGGCGGAAAGGTTTCACTCAGGAAGCAGACACTGATTGACACGGTTTAGCAGAACGTTTGAGGACTAGGTCAAATTGAGTGGTTTAATATCGGCATGTCTGGCTTTAAAATTCAGTATAGTGCGCTGATCGGAGACGAATTAAAAACACGAGTTCCCAAAACCAGGCGGGCTCGCCACGTC [...]
diff --git a/tests/test_query_paths.gfa b/tests/test_query_paths.gfa
new file mode 100644
index 0000000..a53541a
--- /dev/null
+++ b/tests/test_query_paths.gfa
@@ -0,0 +1,15 @@
+S	1	GAGCCGAGGGGTAACCACGATGCCGCTAAGAACCTCTCGGTCGACGCAAGCGATTACACTCCTGTCACATCATAATCGTTTGCTATTCAGGGGTTGACCAACACCGGAAAACTTTTCACTTGAAGTATTGTATACGACAGGGTGCGTGTACCTACCAAACCTGTTTAAACTAAGTTCAGACTAGTTGGAAGTGTGTCTAGATCTTAGTTTTCGTCACTAGAGGGCCCACGCTTTATTTTTATGATCCATTGATCTCCCAGACGCTGCAAGATTTGCAACCAGGCAGACTTGGCGGTAGGTCCTAGTGCAGCGGGACTTTTTTTCTATAGTCCTTGAGAGGAGGAGTCGTCAGTCCAGATACCTTTGATGTCCTGATTGGAAGGACCGTTGGCCCCCCACCCTTAGGCAGTGTACTCAGTTCCATAAACGAGCTATTAGATATGAGGTCCGTAGATTGAAAAGGGTGACGGAATTCGCCCGAACGGGAA [...]
+S	2	GGTCCCCCCGAGCGGTGCAACCGATTAGGACCATGTAGAACATTAGTTATAAGTCTTCTTTTAAACACAATCTTCCTGCTCAGTGGTACATGGTTATCGTTATTGCTAGCCAGCCTGATAAGTAACACCACCACTGCGACCCTAATGCGCCCTTTCCACGAACACAGGGCTGTCCGATCCTATATTACGACTCCGGGAAGGGGTTCGCAAGTCGCACCCTAAACGATGTTGAAGGCTCAGGATGTACACGCACTAGTACAATACATACGTGTTCCGGCTCTTATCCTGCATCGGAAGCTCAATCATGCATCGCACCAGCGTGTTCGTGTCATCTAGGAGGGGCGCGTAGGATAAATAATTCAATTAAGATATCGTTATGCTAGTATACGCCTACCCGTCACCGGCCAACAGTGTGCAGATGGCGCCACGAGTTACTGGCCCTGATTTCTCCGCTTCTAATACCGCACACTGGGCAATACGAGCTCAAG [...]
+S	3	CTGGTACATTATGTGAACAATGTTCTGAAGAAAATTTGTGAAAGAAGGACGGGTCATCGCCTACTATTAGCAACAACGGTCGGCCACACCTTCCATTGTCGTGGCCACGCTCGGATTACACGGCAGAGGTGCTTGTGTTCCGACAGGCTAGCATATTATCCTAAGGCGTTACCCCAATCGTTTACCGTCGGATTTGCTATAGCCCCTGAACGCTACATGTACGAAACCATGTTATGTATGCACTAGGTCAACAATAGGACATAGCCTTGTAGTTAACACGTAGCCCGGTCGTATAAGTACAGTAGACCCTTCGCCGGCATCCTATTTATTAAGTTATTTCTACAGCAAAACGATCATATGCAGATCCGCAGTGGGCGGTAGACACACGTCCACCCGGCTGCTCTGTAACAGGGACTAAAGAGGTGATGATTATCGTGTGTGCCCCGTTATGGTCGTGTTCGATCAGAGCGCCCTTGCGAGCAGTCGTA [...]
+S	4	GACTAGCCGCTGGTAAACACACCATGACCCCGGCTCTCCATTGATGCCACGGCGATTGTTGGAGAGCCAGCAGCGACTGCAAACATCAGATCAGAGTAATACTAGCATGCGATAAGTCCCTAACTGACTATGGCCTTCTGTAGAGTCAACTTCACCACATATGCTGTCTCTGGCACGTGGATGGTTTAGAGGAATCAGATTCAAGTCTGGTTAACCATCAAACAGGTCTTGAGTCTAAAATTGTCGTCTCCTGCGTACGAGATGGAAATACTAGGTAACTACAGGGACTCCGACGTTATGTACGTTGCTCCGTCAGAGGCGCCATTCAGGATCACGTTACCGCGAAAAAAAGGGACCAGGAGCTCTTCTCCCCTGCGGTCACGTCTATAGAAATTACACCATTAACCCTCCTGAGAACCGGGAGGCGGGAATCCGTCACGTATGAGAAGGTATTTGCCCGATAATCAATACCCCAGGCTTCTAACTTT [...]
+S	5	TCTTATAAATTCTTTTTTCGTGGGGAGCAGCGGATCTTAATGGATGGCGCCAGCTGGTATGGAAGCTAATAGCGCCGGTGAGAGGGTAATCAGCCGTCTCCACCAACACAACGCTATCGGGTCATATTATAAGATTCCGCAATGGGACTACTTATAGGTTGCCTTAACGATATCCGCAACTTGCGATGTGCCTGCTATGCTTAAATACATACCTCGCCCAGTAGCTTTCCAATATGGGAACATCAATTGTACATCGGGCCGGGATAATCATGTCGTCACGGAACTTACTGTAAGAGTAATAATTCAAAAGAGATGTCGGTTTGCTAGTTCACGTAAAGGTGCCTCGCGCCACCTCTAAGTAAGTGAGCCGTCGAGACATTATCCCTGATTTTCTCACTACTATTAGTACTCACGGCGCAATACCACCACAGCCTTGTCTCGCCAGAATGCCGGTCAGCATATGGAAGAGCTCAAGGCAGGTCAATTCG [...]
+S	6	TCGCCTAGAATTACCTACCGGCGTCCACCATACCTTCGATATTCGCGCCCACTCTCCCATTAGTCGGCACAAGTGGATGTGTTGCGATTGCCCGCTAAGATATTCTAAGGCGTAACGCAGATGAATATTCTACAGAGTTGCCGTACGCGTTGAACACTTCACGGATGATAGGAATTTGCGTATAGAGCGGGTCATTGAAGGGTTATACACTCGTAGTTAACAACGGGCCCGGCTCTATCAGAACACGAGTGCCTTGAATAACATACTCATCACTAAACTTTCTCAACAGTCAATCGAGCAAGTCCATTACCAAGGAGTGCGATGCAGTTTTATTCTCTCGCCAGCACTGTAATAGGCACTAAAAGAGTGATGATAATCATGAGTGCTGAGCTAAGACGGCGTCGGTACATAGCGGTCTTACGGTCAGTCGTAATTCCTCACGAGTCCCGTCCAGTTGAGCGTATCACTCCCAATGTACAAGCAACCCG [...]
+S	7	TTTAAAACGACTACCAAATCCGCATGTTAGGGGATTTCTTATTAATTCTTTTATCGTGAGGAACAGCGGATCTTAATGGATGGCCGCAGGTGGTATGGAAGCTAATAGCGCGGGTGAGAGGGTAATCAGCCGTGTTCACCTACACAACGCTAACGGGCGATTCTATAAGATTCCGCATTGCGTCTACTTATAAGATGTCTCAACGGTATCCGCAACTTGTGAAGTGCCTACTATCCTTAAACGCATATCTCGCCCAGTAGCTTCCCAATATGTGAGCATCAATTGTTGTCCGGGCCGAGATAGTCATGTGCTCACGGAACTTACTGTATGAGTAGTGATTTGAAAGAGTTGTCAGTTTGCTGGTTCAGGTAAAGGTTCCTCACGCTACCTCAAAGTAAGAGAGCGGTCGTGACATTATCCGTGATTTTCTCACTACTATTAGTACTCACGACTCGATTCTGCCGCAGCCATGTTTCGCCAGAATGCCA [...]
+S	8	GCATGGAGGCAAACGCAGAACAATGGTTACTATTTCGATACGTGAAACATGTCCCACGGTAGCCCAAAGACTTAAGAGTCTATCACCCCTAGGGCCCTTTCCCGGATATAAACGCCAGGTTGAATCCGCATTTGGAGCTACGATGGATGAGTCTGGGTGGAGCGCGCCCCATTTATACCGTGAGTAGGGTCGACCAAGAACCGCAAGATGCGTCGGTGTACAAATAATTGTCAACAGACCGTCGTGTTTTGAAAATGGTACCAGCATCTTCGGGCGGTCTCAATCAAGCATGGATTACGGTGTTTACTCTGTCCTGCGGTTACCCATGGCCTGTAATCCAGCTCGAGTCAAGCCATTGCCTCTCTGGGACGCCGCATGAACTAATACGTATACTTTGCACGGGTTCACTGCGGTCCGTTCAGAGTCGACCAAGGACACAATCGAGCTCCCATCTGTATGCTCGACTAACTTGTACCCAACCCCCGGAG [...]
+L	1	+	4	+	0M
+L	2	+	4	+	0M
+L	1	+	3	+	0M
+L	4	+	5	+	0M
+L	4	+	6	+	0M
+L	6	+	7	+	0M
+L	6	+	8	+	0M
diff --git a/ui/aboutdialog.cpp b/ui/aboutdialog.cpp
new file mode 100644
index 0000000..a9d3e56
--- /dev/null
+++ b/ui/aboutdialog.cpp
@@ -0,0 +1,48 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "aboutdialog.h"
+#include "ui_aboutdialog.h"
+#include <QApplication>
+
+AboutDialog::AboutDialog(QWidget *parent) :
+    QDialog(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint),
+    ui(new Ui::AboutDialog)
+{
+    ui->setupUi(this);
+
+    QPixmap icon = *(ui->iconLabel->pixmap());
+    icon.setDevicePixelRatio(devicePixelRatio());
+    ui->iconLabel->setPixmap(icon);
+
+    //Make the word 'Bandage' a larger font size.
+    QFont font;
+    font.setPointSize(font.pointSize() * 2);
+    ui->titleLabel->setFont(font);
+
+    QString versionCopyrightText = "<html><head/><body><p>Version: " + QApplication::applicationVersion() + "</p><p>Copyright 2016 Ryan Wick</p><p><a href=\"http://rrwick.github.io/Bandage/\"><span style=\" text-decoration: underline; color:#0000ff;\">http://rrwick.github.io/Bandage/</span></a></p></body></html>";
+    ui->versionCopyrightLabel->setText(versionCopyrightText);
+
+    layout()->setSizeConstraint(QLayout::SetFixedSize);
+}
+
+
+AboutDialog::~AboutDialog()
+{
+    delete ui;
+}
diff --git a/ui/aboutdialog.h b/ui/aboutdialog.h
new file mode 100644
index 0000000..0ede33c
--- /dev/null
+++ b/ui/aboutdialog.h
@@ -0,0 +1,42 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef ABOUTDIALOG_H
+#define ABOUTDIALOG_H
+
+#include <QDialog>
+
+
+namespace Ui {
+class AboutDialog;
+}
+
+class AboutDialog : public QDialog
+{
+    Q_OBJECT
+    
+public:
+    explicit AboutDialog(QWidget *parent = 0);
+    ~AboutDialog();
+    
+private:
+    Ui::AboutDialog *ui;
+};
+
+
+#endif // ABOUTDIALOG_H
diff --git a/ui/aboutdialog.ui b/ui/aboutdialog.ui
new file mode 100644
index 0000000..40123f5
--- /dev/null
+++ b/ui/aboutdialog.ui
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AboutDialog</class>
+ <widget class="QDialog" name="AboutDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>527</width>
+    <height>510</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>About Bandage</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_3">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>12</number>
+     </property>
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QLabel" name="iconLabel">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>128</horstretch>
+           <verstretch>128</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>185</width>
+           <height>173</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>128</width>
+           <height>128</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="pixmap">
+          <pixmap resource="../images/images.qrc">:/icons/icon.png</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QLabel" name="titleLabel">
+         <property name="text">
+          <string>Bandage</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="versionCopyrightLabel">
+         <property name="minimumSize">
+          <size>
+           <width>300</width>
+           <height>0</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>300</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string><html><head/><body><p>Version: xxx</p><p>Copyright 2016 Ryan Wick</p><p><a href="http://rrwick.github.io/Bandage/"><span style=" text-decoration: underline; color:#0000ff;">http://rrwick.github.io/Bandage/</span></a></p></body></html></string>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+         <property name="openExternalLinks">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="aboutLabel">
+         <property name="minimumSize">
+          <size>
+           <width>300</width>
+           <height>0</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>300</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string><html><head/><body><p>Bandage 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 3 of the License, or (at your option) any later version.</p><p></p><p>Bandage 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 P [...]
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+         <property name="openExternalLinks">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../images/images.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>AboutDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>AboutDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/blasthitfiltersdialog.cpp b/ui/blasthitfiltersdialog.cpp
new file mode 100644
index 0000000..d219c4e
--- /dev/null
+++ b/ui/blasthitfiltersdialog.cpp
@@ -0,0 +1,151 @@
+#include "blasthitfiltersdialog.h"
+#include "ui_blasthitfiltersdialog.h"
+
+#include "../program/globals.h"
+#include "../program/settings.h"
+
+BlastHitFiltersDialog::BlastHitFiltersDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::BlastHitFiltersDialog)
+{
+    ui->setupUi(this);
+
+    setInfoTexts();
+
+    connect(ui->alignmentLengthCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->queryCoverageCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->identityCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->eValueCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->bitScoreCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+}
+
+BlastHitFiltersDialog::~BlastHitFiltersDialog()
+{
+    delete ui;
+}
+
+
+void BlastHitFiltersDialog::checkBoxesChanged()
+{
+    ui->alignmentLengthSpinBox->setEnabled(ui->alignmentLengthCheckBox->isChecked());
+
+    ui->queryCoverageSpinBox->setEnabled(ui->queryCoverageCheckBox->isChecked());
+
+    ui->identitySpinBox->setEnabled(ui->identityCheckBox->isChecked());
+
+    ui->eValueCoefficientSpinBox->setEnabled(ui->eValueCheckBox->isChecked());
+    ui->eValueExponentSpinBox->setEnabled(ui->eValueCheckBox->isChecked());
+
+    ui->bitScoreSpinBox->setEnabled(ui->bitScoreCheckBox->isChecked());
+}
+
+
+void setSpinBoxValMinAndMax(QSpinBox * spinBox, IntSetting setting)
+{
+    spinBox->setValue(setting.val);
+    spinBox->setMinimum(setting.min);
+    spinBox->setMaximum(setting.max);
+}
+
+void setSpinBoxValMinAndMax(QDoubleSpinBox * spinBox, FloatSetting setting)
+{
+    spinBox->setValue(setting.val);
+    spinBox->setMinimum(setting.min);
+    spinBox->setMaximum(setting.max);
+}
+
+void BlastHitFiltersDialog::setWidgetsFromSettings()
+{
+    ui->alignmentLengthCheckBox->setChecked(g_settings->blastAlignmentLengthFilter.on);
+    ui->queryCoverageCheckBox->setChecked(g_settings->blastQueryCoverageFilter.on);
+    ui->identityCheckBox->setChecked(g_settings->blastIdentityFilter.on);
+    ui->eValueCheckBox->setChecked(g_settings->blastEValueFilter.on);
+    ui->bitScoreCheckBox->setChecked(g_settings->blastBitScoreFilter.on);
+
+    setSpinBoxValMinAndMax(ui->alignmentLengthSpinBox, g_settings->blastAlignmentLengthFilter);
+    setSpinBoxValMinAndMax(ui->queryCoverageSpinBox, g_settings->blastQueryCoverageFilter);
+    setSpinBoxValMinAndMax(ui->identitySpinBox, g_settings->blastIdentityFilter);
+    setSpinBoxValMinAndMax(ui->bitScoreSpinBox, g_settings->blastBitScoreFilter);
+
+    ui->eValueCoefficientSpinBox->setValue(g_settings->blastEValueFilter.val.getCoefficient());
+    ui->eValueExponentSpinBox->setValue(g_settings->blastEValueFilter.val.getExponent());
+
+    checkBoxesChanged();
+}
+
+
+void BlastHitFiltersDialog::setSettingsFromWidgets()
+{
+    g_settings->blastAlignmentLengthFilter.on = ui->alignmentLengthCheckBox->isChecked();
+    g_settings->blastQueryCoverageFilter.on = ui->queryCoverageCheckBox->isChecked();
+    g_settings->blastIdentityFilter.on = ui->identityCheckBox->isChecked();
+    g_settings->blastEValueFilter.on = ui->eValueCheckBox->isChecked();
+    g_settings->blastBitScoreFilter.on = ui->bitScoreCheckBox->isChecked();
+
+    g_settings->blastAlignmentLengthFilter.val = ui->alignmentLengthSpinBox->value();
+    g_settings->blastQueryCoverageFilter.val = ui->queryCoverageSpinBox->value();
+    g_settings->blastIdentityFilter.val = ui->identitySpinBox->value();
+    g_settings->blastEValueFilter.val = SciNot(ui->eValueCoefficientSpinBox->value(), ui->eValueExponentSpinBox->value());
+    g_settings->blastBitScoreFilter.val = ui->bitScoreSpinBox->value();
+}
+
+
+QString BlastHitFiltersDialog::getFilterText()
+{
+    QString filterText;
+    if (g_settings->blastAlignmentLengthFilter.on)
+    {
+        if (filterText.length() > 0)
+            filterText += ", ";
+        filterText += "alignment length: " + QString::number(g_settings->blastAlignmentLengthFilter);
+    }
+    if (g_settings->blastQueryCoverageFilter.on)
+    {
+        if (filterText.length() > 0)
+            filterText += ", ";
+        filterText += "query coverage: " + QString::number(g_settings->blastQueryCoverageFilter) + "%";
+    }
+    if (g_settings->blastIdentityFilter.on)
+    {
+        if (filterText.length() > 0)
+            filterText += ", ";
+        filterText += "identity: " + QString::number(g_settings->blastIdentityFilter) + "%";
+    }
+    if (g_settings->blastEValueFilter.on)
+    {
+        if (filterText.length() > 0)
+            filterText += ", ";
+        filterText += "e-value: " + g_settings->blastEValueFilter.val.asString(true);
+    }
+    if (g_settings->blastBitScoreFilter.on)
+    {
+        if (filterText.length() > 0)
+            filterText += ", ";
+        filterText += "bit score: " + QString::number(g_settings->blastBitScoreFilter);
+    }
+
+    if (filterText == "")
+        filterText = "none";
+
+    return filterText;
+}
+
+
+void BlastHitFiltersDialog::setInfoTexts()
+{
+    ui->alignmentLengthInfoText->setInfoText("This filter will exclude any BLAST hits with an alignment length shorter than the "
+                                             "specified value.  I.e. only hits with an alignment length greater than or equal to "
+                                             "the value will be included in BLAST results.");
+    ui->queryCoverageInfoText->setInfoText("This filter will exclude any BLAST hits with a query coverage less than the "
+                                             "specified value.  I.e. only hits with a query coverage greater than or equal to "
+                                             "the value will be included in BLAST results.");
+    ui->identityInfoText->setInfoText("This filter will exclude any BLAST hits with an identity less than the "
+                                             "specified value.  I.e. only hits with an identity greater than or equal to "
+                                             "the value will be included in BLAST results.");
+    ui->eValueInfoText->setInfoText("This filter will exclude any BLAST hits with an e-value greater than the "
+                                             "specified value.  I.e. only hits with an e-value less than or equal to "
+                                             "the value will be included in BLAST results.");
+    ui->bitScoreInfoText->setInfoText("This filter will exclude any BLAST hits with a bit score length less than the "
+                                             "specified value.  I.e. only hits with a bit score greater than or equal to "
+                                             "the value will be included in BLAST results.");
+}
diff --git a/ui/blasthitfiltersdialog.h b/ui/blasthitfiltersdialog.h
new file mode 100644
index 0000000..ab22603
--- /dev/null
+++ b/ui/blasthitfiltersdialog.h
@@ -0,0 +1,32 @@
+#ifndef BLASTHITFILTERSDIALOG_H
+#define BLASTHITFILTERSDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class BlastHitFiltersDialog;
+}
+
+class BlastHitFiltersDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit BlastHitFiltersDialog(QWidget *parent = 0);
+    ~BlastHitFiltersDialog();
+
+    void setWidgetsFromSettings();
+    void setSettingsFromWidgets();
+
+    static QString getFilterText();
+
+private:
+    Ui::BlastHitFiltersDialog *ui;
+
+    void setInfoTexts();
+
+private slots:
+    void checkBoxesChanged();
+};
+
+#endif // BLASTHITFILTERSDIALOG_H
diff --git a/ui/blasthitfiltersdialog.ui b/ui/blasthitfiltersdialog.ui
new file mode 100644
index 0000000..3f977bf
--- /dev/null
+++ b/ui/blasthitfiltersdialog.ui
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BlastHitFiltersDialog</class>
+ <widget class="QDialog" name="BlastHitFiltersDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>334</width>
+    <height>323</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>BLAST hit filters</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="5" column="1">
+    <widget class="InfoTextWidget" name="eValueInfoText" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="InfoTextWidget" name="alignmentLengthInfoText" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="InfoTextWidget" name="queryCoverageInfoText" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="3">
+    <widget class="QWidget" name="widget" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QDoubleSpinBox" name="eValueCoefficientSpinBox">
+        <property name="alignment">
+         <set>Qt::AlignCenter</set>
+        </property>
+        <property name="maximum">
+         <double>9.990000000000000</double>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QSpinBox" name="eValueExponentSpinBox">
+        <property name="alignment">
+         <set>Qt::AlignCenter</set>
+        </property>
+        <property name="prefix">
+         <string>e</string>
+        </property>
+        <property name="minimum">
+         <number>-999</number>
+        </property>
+        <property name="maximum">
+         <number>1</number>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <widget class="InfoTextWidget" name="identityInfoText" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="1">
+    <widget class="InfoTextWidget" name="bitScoreInfoText" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="3">
+    <widget class="QDoubleSpinBox" name="identitySpinBox">
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="suffix">
+      <string>%</string>
+     </property>
+     <property name="maximum">
+      <double>100.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="2">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="2">
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="6" column="2">
+    <widget class="QCheckBox" name="bitScoreCheckBox">
+     <property name="text">
+      <string>Bit score:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="3">
+    <widget class="QSpinBox" name="alignmentLengthSpinBox">
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="maximum">
+      <number>1000000</number>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="4">
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="3" column="3">
+    <widget class="QDoubleSpinBox" name="queryCoverageSpinBox">
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="suffix">
+      <string>%</string>
+     </property>
+     <property name="maximum">
+      <double>100.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="2">
+    <widget class="QCheckBox" name="queryCoverageCheckBox">
+     <property name="text">
+      <string>Query coverage:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="2">
+    <widget class="QCheckBox" name="eValueCheckBox">
+     <property name="text">
+      <string>E-value:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2">
+    <widget class="QCheckBox" name="alignmentLengthCheckBox">
+     <property name="text">
+      <string>Alignment length:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="9" column="0" colspan="5">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="2">
+    <widget class="QCheckBox" name="identityCheckBox">
+     <property name="text">
+      <string>Identity:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" colspan="5">
+    <widget class="QLabel" name="filterDescriptionLabel">
+     <property name="text">
+      <string>Turn on one or more of these filters to exclude BLAST hits which fail to meet the defined threshold. To see the effects of changing these filters, it is necessary to rerun the BLAST search.</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="3">
+    <widget class="QDoubleSpinBox" name="bitScoreSpinBox">
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="decimals">
+      <number>1</number>
+     </property>
+     <property name="maximum">
+      <double>1000000.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>alignmentLengthCheckBox</tabstop>
+  <tabstop>alignmentLengthSpinBox</tabstop>
+  <tabstop>queryCoverageCheckBox</tabstop>
+  <tabstop>queryCoverageSpinBox</tabstop>
+  <tabstop>identityCheckBox</tabstop>
+  <tabstop>identitySpinBox</tabstop>
+  <tabstop>eValueCheckBox</tabstop>
+  <tabstop>eValueCoefficientSpinBox</tabstop>
+  <tabstop>eValueExponentSpinBox</tabstop>
+  <tabstop>bitScoreCheckBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>BlastHitFiltersDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>BlastHitFiltersDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/blastsearchdialog.cpp b/ui/blastsearchdialog.cpp
new file mode 100644
index 0000000..e8ef411
--- /dev/null
+++ b/ui/blastsearchdialog.cpp
@@ -0,0 +1,1052 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "blastsearchdialog.h"
+#include "ui_blastsearchdialog.h"
+
+#include <QFileDialog>
+#include <QFile>
+#include <QTextStream>
+#include <QString>
+#include "../blast/blasthit.h"
+#include "../blast/blastquery.h"
+#include <QStandardItemModel>
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include "../program/memory.h"
+#include "../graph/debruijnnode.h"
+#include <QMessageBox>
+#include <QDir>
+#include "enteroneblastquerydialog.h"
+#include "../graph/assemblygraph.h"
+#include "../blast/blastsearch.h"
+#include <QProcessEnvironment>
+#include <QMessageBox>
+#include <QThread>
+#include "../blast/buildblastdatabaseworker.h"
+#include "../blast/runblastsearchworker.h"
+#include "myprogressdialog.h"
+#include "colourbutton.h"
+#include <QSet>
+#include "tablewidgetitemname.h"
+#include "tablewidgetitemint.h"
+#include "tablewidgetitemdouble.h"
+#include "tablewidgetitemshown.h"
+#include <QCheckBox>
+#include "querypathspushbutton.h"
+#include "querypathsdialog.h"
+#include "blasthitfiltersdialog.h"
+
+BlastSearchDialog::BlastSearchDialog(QWidget *parent, QString autoQuery) :
+    QDialog(parent),
+    ui(new Ui::BlastSearchDialog),
+    m_makeblastdbCommand("makeblastdb"), m_blastnCommand("blastn"),
+    m_tblastnCommand("tblastn"), m_queryPathsDialog(0)
+{
+    ui->setupUi(this);
+
+    setWindowFlags(windowFlags() | Qt::Tool);
+
+    ui->blastHitsTableWidget->m_smallFirstColumn = true;
+    ui->blastQueriesTableWidget->m_smallFirstColumn = true;
+    ui->blastQueriesTableWidget->m_smallSecondColumn = true;
+
+    setFilterText();
+
+    //Load any previous parameters the user might have entered when previously using this dialog.
+    ui->parametersLineEdit->setText(g_settings->blastSearchParameters);
+
+    //If the dialog is given an autoQuery parameter, then it will
+    //carry out the entire process on its own.
+    if (autoQuery != "")
+    {
+        buildBlastDatabase(false);
+        clearAllQueries();
+        loadBlastQueriesFromFastaFile(autoQuery);
+        runBlastSearches(false);
+        QMetaObject::invokeMethod(this, "close", Qt::QueuedConnection);
+        return;
+    }
+
+    //Prepare the query and hits tables
+    ui->blastHitsTableWidget->setHorizontalHeaderLabels(QStringList() << "" << "Query\nname" << "Node\nname" <<
+                                                        "Percent\nidentity" << "Alignment\nlength" << "Query\ncover" << "Mis-\nmatches" <<
+                                                        "Gap\nopens" << "Query\nstart" << "Query\nend" << "Node\nstart" <<
+                                                        "Node\nend" <<"E-\nvalue" << "Bit\nscore");
+    QFont font = ui->blastQueriesTableWidget->horizontalHeader()->font();
+    font.setBold(true);
+    ui->blastQueriesTableWidget->horizontalHeader()->setFont(font);
+    ui->blastHitsTableWidget->horizontalHeader()->setFont(font);
+
+
+    //If a BLAST database already exists, move to step 2.
+    QFile databaseFile(g_blastSearch->m_tempDirectory + "all_nodes.fasta");
+    if (databaseFile.exists())
+        setUiStep(BLAST_DB_BUILT_BUT_NO_QUERIES);
+
+    //If there isn't a BLAST database, clear the entire temporary directory
+    //and move to step 1.
+    else
+    {
+        g_blastSearch->emptyTempDirectory();
+        setUiStep(BLAST_DB_NOT_YET_BUILT);
+    }
+
+    //If queries already exist, display them and move to step 3.
+    if (g_blastSearch->m_blastQueries.m_queries.size() > 0)
+    {
+        fillQueriesTable();
+        setUiStep(READY_FOR_BLAST_SEARCH);
+    }
+
+    //If results already exist, display them and move to step 4.
+    if (g_blastSearch->m_allHits.size() > 0)
+    {
+        fillHitsTable();
+        setUiStep(BLAST_SEARCH_COMPLETE);
+    }
+
+    //Call this function to disable rows in either table that are for queries
+    //the user has hidden.
+    queryShownChanged();
+
+    setInfoTexts();
+
+    connect(ui->buildBlastDatabaseButton, SIGNAL(clicked()), this, SLOT(buildBlastDatabaseInThread()));
+    connect(ui->loadQueriesFromFastaButton, SIGNAL(clicked()), this, SLOT(loadBlastQueriesFromFastaFileButtonClicked()));
+    connect(ui->enterQueryManuallyButton, SIGNAL(clicked()), this, SLOT(enterQueryManually()));
+    connect(ui->clearAllQueriesButton, SIGNAL(clicked()), this, SLOT(clearAllQueries()));
+    connect(ui->clearSelectedQueriesButton, SIGNAL(clicked(bool)), this, SLOT(clearSelectedQueries()));
+    connect(ui->runBlastSearchButton, SIGNAL(clicked()), this, SLOT(runBlastSearchesInThread()));
+    connect(ui->blastQueriesTableWidget, SIGNAL(cellChanged(int,int)), this, SLOT(queryCellChanged(int,int)));
+    connect(ui->blastQueriesTableWidget, SIGNAL(itemSelectionChanged()), this, SLOT(queryTableSelectionChanged()));
+    connect(ui->blastFiltersButton, SIGNAL(clicked(bool)), this, SLOT(openFiltersDialog()));
+}
+
+BlastSearchDialog::~BlastSearchDialog()
+{
+    delete ui;
+    deleteQueryPathsDialog();
+}
+
+
+
+void BlastSearchDialog::afterWindowShow()
+{
+    ui->blastQueriesTableWidget->resizeColumns();
+    ui->blastHitsTableWidget->resizeColumns();
+}
+
+void BlastSearchDialog::clearBlastHits()
+{
+    g_blastSearch->clearBlastHits();
+    deleteQueryPathsDialog();
+    ui->blastHitsTableWidget->clearContents();
+    while (ui->blastHitsTableWidget->rowCount() > 0)
+        ui->blastHitsTableWidget->removeRow(0);
+}
+
+void BlastSearchDialog::fillTablesAfterBlastSearch()
+{
+    if (g_blastSearch->m_allHits.empty())
+        QMessageBox::information(this, "No hits", "No BLAST hits were found for the given queries and parameters.");
+
+    fillQueriesTable();
+    fillHitsTable();
+}
+
+
+void BlastSearchDialog::fillQueriesTable()
+{
+    //Turn off table widget signals for this function so the
+    //queryCellChanged slot doesn't get called.
+    ui->blastQueriesTableWidget->blockSignals(true);
+    ui->blastQueriesTableWidget->setSortingEnabled(false);
+
+    ui->blastQueriesTableWidget->clearContents();
+
+    int queryCount = int(g_blastSearch->m_blastQueries.m_queries.size());
+    if (queryCount == 0)
+        return;
+
+    ui->blastQueriesTableWidget->setRowCount(queryCount);
+
+    for (int i = 0; i < queryCount; ++i)
+        makeQueryRow(i);
+
+    ui->blastQueriesTableWidget->resizeColumns();
+    ui->blastQueriesTableWidget->setSortingEnabled(true);
+
+    ui->blastQueriesTableWidget->setSortingEnabled(true);
+    ui->blastQueriesTableWidget->blockSignals(false);
+}
+
+void BlastSearchDialog::makeQueryRow(int row)
+{
+    if (row >= int(g_blastSearch->m_blastQueries.m_queries.size()))
+        return;
+
+    BlastQuery * query = g_blastSearch->m_blastQueries.m_queries[row];
+
+    TableWidgetItemName * name = new TableWidgetItemName(query);
+    name->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
+
+    QTableWidgetItem * type = new QTableWidgetItem(query->getTypeString());
+    type->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+    int queryLength = query->getLength();
+    TableWidgetItemInt * length = new TableWidgetItemInt(formatIntForDisplay(queryLength), queryLength);
+    length->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+    //If the search hasn't yet been run, some of the columns will just have
+    //a dash.
+    TableWidgetItemInt * hits;
+    TableWidgetItemDouble * percent;
+    QTableWidgetItem * paths;
+
+    QueryPathsPushButton * pathsButton = 0;
+    if (query->wasSearchedFor())
+    {
+        int hitCount = query->hitCount();
+        hits = new TableWidgetItemInt(formatIntForDisplay(hitCount), hitCount);
+        percent = new TableWidgetItemDouble(formatDoubleForDisplay(100.0 * query->fractionCoveredByHits(), 2) + "%", query->fractionCoveredByHits());
+
+        //The path count isn't displayed in the TableWidgetItem because it will
+        //be shown in a button which will bring up a separate dialog showing a
+        //table of the paths.
+        int pathCount = query->getPathCount();
+        paths = new TableWidgetItemInt("", pathCount);
+        paths->setFlags(Qt::ItemIsEnabled);
+        pathsButton = new QueryPathsPushButton(pathCount, query);
+        connect(pathsButton, SIGNAL(showPathsDialog(BlastQuery*)), this, SLOT(showPathsDialog(BlastQuery*)));
+    }
+    else
+    {
+        hits = new TableWidgetItemInt("-", 0);
+        percent = new TableWidgetItemDouble("-", 0.0);
+        paths = new QTableWidgetItem("-");
+    }
+
+    hits->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+    percent->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+    paths->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+    QTableWidgetItem * colour = new QTableWidgetItem(query->getColour().name());
+    ColourButton * colourButton = new ColourButton();
+    colourButton->setColour(query->getColour());
+    connect(colourButton, SIGNAL(colourChosen(QColor)), query, SLOT(setColour(QColor)));
+    connect(colourButton, SIGNAL(colourChosen(QColor)), this, SLOT(fillHitsTable()));
+
+    QWidget * showCheckBoxWidget = new QWidget;
+    QCheckBox * showCheckBox = new QCheckBox();
+    QHBoxLayout * layout = new QHBoxLayout(showCheckBoxWidget);
+    layout->addWidget(showCheckBox);
+    layout->setAlignment(Qt::AlignCenter);
+    layout->setContentsMargins(0, 0, 0, 0);
+    showCheckBoxWidget->setLayout(layout);
+    bool queryShown = query->isShown();
+    showCheckBox->setChecked(queryShown);
+    QTableWidgetItem * show = new TableWidgetItemShown(queryShown);
+    show->setFlags(Qt::ItemIsEnabled);
+    connect(showCheckBox, SIGNAL(toggled(bool)), query, SLOT(setShown(bool)));
+    connect(showCheckBox, SIGNAL(toggled(bool)), this, SLOT(queryShownChanged()));
+
+    ui->blastQueriesTableWidget->setCellWidget(row, 0, colourButton);
+    ui->blastQueriesTableWidget->setCellWidget(row, 1, showCheckBoxWidget);
+    ui->blastQueriesTableWidget->setItem(row, 0, colour);
+    ui->blastQueriesTableWidget->setItem(row, 1, show);
+    ui->blastQueriesTableWidget->setItem(row, 2, name);
+    ui->blastQueriesTableWidget->setItem(row, 3, type);
+    ui->blastQueriesTableWidget->setItem(row, 4, length);
+    ui->blastQueriesTableWidget->setItem(row, 5, hits);
+    ui->blastQueriesTableWidget->setItem(row, 6, percent);
+    ui->blastQueriesTableWidget->setItem(row, 7, paths);
+    if (pathsButton != 0)
+        ui->blastQueriesTableWidget->setCellWidget(row, 7, pathsButton);
+}
+
+
+void BlastSearchDialog::fillHitsTable()
+{
+    ui->blastHitsTableWidget->clearContents();
+    ui->blastHitsTableWidget->setSortingEnabled(false);
+
+    int hitCount = g_blastSearch->m_allHits.size();
+    ui->blastHitsTableWidget->setRowCount(hitCount);
+
+    if (hitCount == 0)
+        return;
+
+    for (int i = 0; i < hitCount; ++i)
+    {
+        BlastHit * hit = g_blastSearch->m_allHits[i].data();
+        BlastQuery * hitQuery = hit->m_query;
+
+        QTableWidgetItem * queryColour = new QTableWidgetItem(hitQuery->getColour().name());
+        queryColour->setFlags(Qt::ItemIsEnabled);
+        queryColour->setBackground(hitQuery->getColour());
+
+        QTableWidgetItem * queryName = new QTableWidgetItem(hitQuery->getName());
+        queryName->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        QTableWidgetItem * nodeName = new QTableWidgetItem(hit->m_node->getName());
+        nodeName->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemDouble * percentIdentity = new TableWidgetItemDouble(formatDoubleForDisplay(hit->m_percentIdentity, 2) + "%", hit->m_percentIdentity);
+        percentIdentity->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * alignmentLength = new TableWidgetItemInt(formatIntForDisplay(hit->m_alignmentLength), hit->m_alignmentLength);
+        alignmentLength->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        double queryCoverPercent = 100.0 * hit->getQueryCoverageFraction();
+        TableWidgetItemDouble * queryCover = new TableWidgetItemDouble(formatDoubleForDisplay(queryCoverPercent, 2) + "%", queryCoverPercent);
+        queryCover->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * numberMismatches = new TableWidgetItemInt(formatIntForDisplay(hit->m_numberMismatches), hit->m_numberMismatches);
+        numberMismatches->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * numberGapOpens = new TableWidgetItemInt(formatIntForDisplay(hit->m_numberGapOpens), hit->m_numberGapOpens);
+        numberGapOpens->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * queryStart = new TableWidgetItemInt(formatIntForDisplay(hit->m_queryStart), hit->m_queryStart);
+        queryStart->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * queryEnd = new TableWidgetItemInt(formatIntForDisplay(hit->m_queryEnd), hit->m_queryEnd);
+        queryEnd->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * nodeStart = new TableWidgetItemInt(formatIntForDisplay(hit->m_nodeStart), hit->m_nodeStart);
+        nodeStart->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemInt * nodeEnd = new TableWidgetItemInt(formatIntForDisplay(hit->m_nodeEnd), hit->m_nodeEnd);
+        nodeEnd->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemDouble * eValue = new TableWidgetItemDouble(hit->m_eValue.asString(false), hit->m_eValue.toDouble());
+        eValue->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        TableWidgetItemDouble * bitScore = new TableWidgetItemDouble(QString::number(hit->m_bitScore), hit->m_bitScore);
+        bitScore->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        ui->blastHitsTableWidget->setItem(i, 0, queryColour);
+        ui->blastHitsTableWidget->setItem(i, 1, queryName);
+        ui->blastHitsTableWidget->setItem(i, 2, nodeName);
+        ui->blastHitsTableWidget->setItem(i, 3, percentIdentity);
+        ui->blastHitsTableWidget->setItem(i, 4, alignmentLength);
+        ui->blastHitsTableWidget->setItem(i, 5, queryCover);
+        ui->blastHitsTableWidget->setItem(i, 6, numberMismatches);
+        ui->blastHitsTableWidget->setItem(i, 7, numberGapOpens);
+        ui->blastHitsTableWidget->setItem(i, 8, queryStart);
+        ui->blastHitsTableWidget->setItem(i, 9, queryEnd);
+        ui->blastHitsTableWidget->setItem(i, 10, nodeStart);
+        ui->blastHitsTableWidget->setItem(i, 11, nodeEnd);
+        ui->blastHitsTableWidget->setItem(i, 12, eValue);
+        ui->blastHitsTableWidget->setItem(i, 13, bitScore);
+    }
+
+    ui->blastHitsTableWidget->resizeColumns();
+    ui->blastHitsTableWidget->setEnabled(true);
+    ui->blastHitsTableWidget->setSortingEnabled(true);
+}
+
+void BlastSearchDialog::buildBlastDatabaseInThread()
+{
+    buildBlastDatabase(true);
+}
+
+void BlastSearchDialog::buildBlastDatabase(bool separateThread)
+{
+    setUiStep(BLAST_DB_BUILD_IN_PROGRESS);
+
+    if (!g_blastSearch->findProgram("makeblastdb", &m_makeblastdbCommand))
+    {
+        QMessageBox::warning(this, "Error", "The program makeblastdb was not found.  Please install NCBI BLAST to use this feature.");
+        setUiStep(BLAST_DB_NOT_YET_BUILT);
+        return;
+    }
+
+    QApplication::processEvents();
+
+    MyProgressDialog * progress = new MyProgressDialog(this, "Building BLAST database...", separateThread, "Cancel build", "Cancelling build...",
+                                                       "Clicking this button will stop the BLAST database from being "
+                                                       "built.");
+    progress->setWindowModality(Qt::WindowModal);
+    progress->show();
+
+    if (separateThread)
+    {
+        m_buildBlastDatabaseThread = new QThread;
+        BuildBlastDatabaseWorker * buildBlastDatabaseWorker = new BuildBlastDatabaseWorker(m_makeblastdbCommand);
+        buildBlastDatabaseWorker->moveToThread(m_buildBlastDatabaseThread);
+
+        connect(progress, SIGNAL(halt()), this, SLOT(buildBlastDatabaseCancelled()));
+        connect(m_buildBlastDatabaseThread, SIGNAL(started()), buildBlastDatabaseWorker, SLOT(buildBlastDatabase()));
+        connect(buildBlastDatabaseWorker, SIGNAL(finishedBuild(QString)), m_buildBlastDatabaseThread, SLOT(quit()));
+        connect(buildBlastDatabaseWorker, SIGNAL(finishedBuild(QString)), buildBlastDatabaseWorker, SLOT(deleteLater()));
+        connect(buildBlastDatabaseWorker, SIGNAL(finishedBuild(QString)), this, SLOT(blastDatabaseBuildFinished(QString)));
+        connect(m_buildBlastDatabaseThread, SIGNAL(finished()), m_buildBlastDatabaseThread, SLOT(deleteLater()));
+        connect(m_buildBlastDatabaseThread, SIGNAL(finished()), progress, SLOT(deleteLater()));
+
+        m_buildBlastDatabaseThread->start();
+    }
+    else
+    {
+        BuildBlastDatabaseWorker buildBlastDatabaseWorker(m_makeblastdbCommand);
+        buildBlastDatabaseWorker.buildBlastDatabase();
+        progress->close();
+        delete progress;
+        blastDatabaseBuildFinished(buildBlastDatabaseWorker.m_error);
+    }
+}
+
+
+
+void BlastSearchDialog::blastDatabaseBuildFinished(QString error)
+{
+    if (error != "")
+    {
+        QMessageBox::warning(this, "Error", error);
+        setUiStep(BLAST_DB_NOT_YET_BUILT);
+    }
+    else
+        setUiStep(BLAST_DB_BUILT_BUT_NO_QUERIES);
+}
+
+
+void BlastSearchDialog::buildBlastDatabaseCancelled()
+{
+    g_blastSearch->m_cancelBuildBlastDatabase = true;
+    if (g_blastSearch->m_makeblastdb != 0)
+        g_blastSearch->m_makeblastdb->kill();
+}
+
+void BlastSearchDialog::loadBlastQueriesFromFastaFileButtonClicked()
+{
+    QStringList fullFileNames = QFileDialog::getOpenFileNames(this, "Load queries FASTA", g_memory->rememberedPath);
+
+    if (fullFileNames.size() > 0) //User did not hit cancel
+    {
+        for (int i = 0; i < fullFileNames.size(); ++i)
+            loadBlastQueriesFromFastaFile(fullFileNames.at(i));
+    }
+}
+
+void BlastSearchDialog::loadBlastQueriesFromFastaFile(QString fullFileName)
+{
+    MyProgressDialog * progress = new MyProgressDialog(this, "Loading queries...", false);
+    progress->setWindowModality(Qt::WindowModal);
+    progress->show();
+
+    int queriesLoaded = g_blastSearch->loadBlastQueriesFromFastaFile(fullFileName);
+    if (queriesLoaded > 0)
+    {
+        clearBlastHits();
+        fillQueriesTable();
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+        setUiStep(READY_FOR_BLAST_SEARCH);
+    }
+
+    progress->close();
+    delete progress;
+
+    if (queriesLoaded == 0)
+        QMessageBox::information(this, "No queries loaded", "No queries could be loaded from the specified file.");
+}
+
+
+
+void BlastSearchDialog::enterQueryManually()
+{
+    EnterOneBlastQueryDialog enterOneBlastQueryDialog(this);
+
+    if (enterOneBlastQueryDialog.exec())
+    {
+        QString queryName = g_blastSearch->cleanQueryName(enterOneBlastQueryDialog.getName());
+        g_blastSearch->m_blastQueries.addQuery(new BlastQuery(queryName,
+                                                              enterOneBlastQueryDialog.getSequence()));
+        clearBlastHits();
+        fillQueriesTable();
+
+        setUiStep(READY_FOR_BLAST_SEARCH);
+    }
+}
+
+
+
+void BlastSearchDialog::clearAllQueries()
+{
+    g_blastSearch->m_blastQueries.clearAllQueries();
+    ui->blastQueriesTableWidget->clearContents();
+    ui->clearAllQueriesButton->setEnabled(false);
+
+    while (ui->blastQueriesTableWidget->rowCount() > 0)
+        ui->blastQueriesTableWidget->removeRow(0);
+
+    clearBlastHits();
+    setUiStep(BLAST_DB_BUILT_BUT_NO_QUERIES);
+    emit blastChanged();
+}
+
+
+void BlastSearchDialog::clearSelectedQueries()
+{
+    //Use the table selection to figure out which queries are to be removed.
+    //The table cell containing the query name also has a pointer to the
+    //actual query, and that's what we use.
+    std::vector<BlastQuery *> queriesToRemove;
+    QItemSelectionModel * select = ui->blastQueriesTableWidget->selectionModel();
+    QModelIndexList selection = select->selectedIndexes();
+    QSet<int> rowsWithSelectionSet;
+    for (int i = 0; i < selection.size(); ++i)
+        rowsWithSelectionSet.insert(selection[i].row());
+    for (QSet<int>::const_iterator i = rowsWithSelectionSet.constBegin(); i != rowsWithSelectionSet.constEnd(); ++i)
+    {
+        int row = *i;
+        QTableWidgetItem * tableWidgetItem = ui->blastQueriesTableWidget->item(row, 2);
+        TableWidgetItemName * queryNameItem = dynamic_cast<TableWidgetItemName *>(tableWidgetItem);
+        if (queryNameItem == 0)
+            continue;
+        BlastQuery * query = queryNameItem->getQuery();
+        queriesToRemove.push_back(query);
+    }
+
+    if (queriesToRemove.size() == g_blastSearch->m_blastQueries.m_queries.size())
+    {
+        clearAllQueries();
+        return;
+    }
+
+    g_blastSearch->clearSomeQueries(queriesToRemove);
+
+    fillQueriesTable();
+    fillHitsTable();
+    emit blastChanged();
+}
+
+void BlastSearchDialog::runBlastSearchesInThread()
+{
+    runBlastSearches(true);
+}
+
+
+void BlastSearchDialog::runBlastSearches(bool separateThread)
+{
+    setUiStep(BLAST_SEARCH_IN_PROGRESS);
+
+    if (!g_blastSearch->findProgram("blastn", &m_blastnCommand))
+    {
+        QMessageBox::warning(this, "Error", "The program blastn was not found.  Please install NCBI BLAST to use this feature.");
+        setUiStep(READY_FOR_BLAST_SEARCH);
+        return;
+    }
+    if (!g_blastSearch->findProgram("tblastn", &m_tblastnCommand))
+    {
+        QMessageBox::warning(this, "Error", "The program tblastn was not found.  Please install NCBI BLAST to use this feature.");
+        setUiStep(READY_FOR_BLAST_SEARCH);
+        return;
+    }
+
+    clearBlastHits();
+
+    MyProgressDialog * progress = new MyProgressDialog(this, "Running BLAST search...", separateThread, "Cancel search", "Cancelling search...",
+                                                       "Clicking this button will stop the BLAST search.");
+    progress->setWindowModality(Qt::WindowModal);
+    progress->show();
+
+    if (separateThread)
+    {
+        m_blastSearchThread = new QThread;
+        RunBlastSearchWorker * runBlastSearchWorker = new RunBlastSearchWorker(m_blastnCommand, m_tblastnCommand, ui->parametersLineEdit->text().simplified());
+        runBlastSearchWorker->moveToThread(m_blastSearchThread);
+
+        connect(progress, SIGNAL(halt()), this, SLOT(runBlastSearchCancelled()));
+        connect(m_blastSearchThread, SIGNAL(started()), runBlastSearchWorker, SLOT(runBlastSearch()));
+        connect(runBlastSearchWorker, SIGNAL(finishedSearch(QString)), m_blastSearchThread, SLOT(quit()));
+        connect(runBlastSearchWorker, SIGNAL(finishedSearch(QString)), runBlastSearchWorker, SLOT(deleteLater()));
+        connect(runBlastSearchWorker, SIGNAL(finishedSearch(QString)), this, SLOT(runBlastSearchFinished(QString)));
+        connect(m_blastSearchThread, SIGNAL(finished()), m_blastSearchThread, SLOT(deleteLater()));
+        connect(m_blastSearchThread, SIGNAL(finished()), progress, SLOT(deleteLater()));
+
+        m_blastSearchThread->start();
+    }
+    else
+    {
+        RunBlastSearchWorker runBlastSearchWorker(m_blastnCommand, m_tblastnCommand, ui->parametersLineEdit->text().simplified());;
+        runBlastSearchWorker.runBlastSearch();
+        progress->close();
+        delete progress;
+        runBlastSearchFinished(runBlastSearchWorker.m_error);
+    }
+}
+
+
+
+void BlastSearchDialog::runBlastSearchFinished(QString error)
+{
+    if (error != "")
+    {
+        QMessageBox::warning(this, "Error", error);
+        setUiStep(READY_FOR_BLAST_SEARCH);
+    }
+    else
+    {
+        fillTablesAfterBlastSearch();
+        g_settings->blastSearchParameters = ui->parametersLineEdit->text().simplified();
+        setUiStep(BLAST_SEARCH_COMPLETE);
+    }
+
+    emit blastChanged();
+}
+
+
+void BlastSearchDialog::runBlastSearchCancelled()
+{
+    g_blastSearch->m_cancelRunBlastSearch = true;
+    if (g_blastSearch->m_blast != 0)
+        g_blastSearch->m_blast->kill();
+}
+
+
+
+void BlastSearchDialog::queryCellChanged(int row, int column)
+{
+    //Suspend signals for this function, as it is might change
+    //the cell value again if the new name isn't unique.
+    ui->blastQueriesTableWidget->blockSignals(true);
+
+    //If a query name was changed, then we adjust that query name elsewhere.
+    if (column == 2)
+    {
+        QString newName = ui->blastQueriesTableWidget->item(row, column)->text();
+        BlastQuery * query = g_blastSearch->m_blastQueries.m_queries[row];
+
+        if (newName != query->getName())
+        {
+            QString uniqueName = g_blastSearch->m_blastQueries.renameQuery(query, newName);
+
+            //It's possible that the user gave the query a non-unique name, in which
+            //case we now have to adjust it.
+            if (uniqueName != newName)
+                ui->blastQueriesTableWidget->item(row, column)->setText(uniqueName);
+
+            //Resize the query table columns, as the name new might take up more or less space.
+            ui->blastQueriesTableWidget->resizeColumns();
+
+            //Rebuild the hits table, if necessary, to show the new name.
+            if (query->hasHits())
+                fillHitsTable();
+
+            emit blastChanged();
+        }
+    }
+
+    ui->blastQueriesTableWidget->blockSignals(false);
+}
+
+
+void BlastSearchDialog::queryTableSelectionChanged()
+{
+    //If there are any selected items, then the 'Clear selected' button
+    //should be enabled.
+    QItemSelectionModel * select = ui->blastQueriesTableWidget->selectionModel();
+    bool hasSelection = select->hasSelection();
+
+    ui->clearSelectedQueriesButton->setEnabled(hasSelection);
+}
+
+
+
+void BlastSearchDialog::setUiStep(BlastUiState blastUiState)
+{
+    QPixmap tick(":/icons/tick-128.png");
+    tick.setDevicePixelRatio(devicePixelRatio()); //This is a workaround for a Qt bug.  Can possibly remove in the future.  https://bugreports.qt.io/browse/QTBUG-46846
+
+    switch (blastUiState)
+    {
+    case BLAST_DB_NOT_YET_BUILT:
+        ui->step1Label->setEnabled(true);
+        ui->buildBlastDatabaseButton->setEnabled(true);
+        ui->step2Label->setEnabled(false);
+        ui->loadQueriesFromFastaButton->setEnabled(false);
+        ui->enterQueryManuallyButton->setEnabled(false);
+        ui->blastQueriesTableWidget->setEnabled(false);
+        ui->blastQueriesTableInfoText->setEnabled(false);
+        ui->step3Label->setEnabled(false);
+        ui->parametersLabel->setEnabled(false);
+        ui->parametersLineEdit->setEnabled(false);
+        ui->runBlastSearchButton->setEnabled(false);
+        ui->clearAllQueriesButton->setEnabled(false);
+        ui->clearSelectedQueriesButton->setEnabled(false);
+        ui->hitsLabel->setEnabled(false);
+        ui->step1TickLabel->setPixmap(QPixmap());
+        ui->step2TickLabel->setPixmap(QPixmap());
+        ui->step3TickLabel->setPixmap(QPixmap());
+        ui->buildBlastDatabaseInfoText->setEnabled(true);
+        ui->loadQueriesFromFastaInfoText->setEnabled(false);
+        ui->enterQueryManuallyInfoText->setEnabled(false);
+        ui->clearAllQueriesInfoText->setEnabled(false);
+        ui->clearSelectedQueriesInfoText->setEnabled(false);
+        ui->blastHitsTableWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(false);
+        ui->blastHitsTableInfoText->setEnabled(false);
+        break;
+
+    case BLAST_DB_BUILD_IN_PROGRESS:
+        ui->step1Label->setEnabled(true);
+        ui->buildBlastDatabaseButton->setEnabled(false);
+        ui->step2Label->setEnabled(false);
+        ui->loadQueriesFromFastaButton->setEnabled(false);
+        ui->enterQueryManuallyButton->setEnabled(false);
+        ui->blastQueriesTableWidget->setEnabled(false);
+        ui->blastQueriesTableInfoText->setEnabled(false);
+        ui->step3Label->setEnabled(false);
+        ui->parametersLabel->setEnabled(false);
+        ui->parametersLineEdit->setEnabled(false);
+        ui->runBlastSearchButton->setEnabled(false);
+        ui->clearAllQueriesButton->setEnabled(false);
+        ui->clearSelectedQueriesButton->setEnabled(false);
+        ui->hitsLabel->setEnabled(false);
+        ui->step1TickLabel->setPixmap(QPixmap());
+        ui->step2TickLabel->setPixmap(QPixmap());
+        ui->step3TickLabel->setPixmap(QPixmap());
+        ui->buildBlastDatabaseInfoText->setEnabled(false);
+        ui->loadQueriesFromFastaInfoText->setEnabled(false);
+        ui->enterQueryManuallyInfoText->setEnabled(false);
+        ui->clearAllQueriesInfoText->setEnabled(false);
+        ui->clearSelectedQueriesInfoText->setEnabled(false);
+        ui->blastHitsTableWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(false);
+        ui->blastHitsTableInfoText->setEnabled(false);
+        break;
+
+    case BLAST_DB_BUILT_BUT_NO_QUERIES:
+        ui->step1Label->setEnabled(true);
+        ui->buildBlastDatabaseButton->setEnabled(false);
+        ui->step2Label->setEnabled(true);
+        ui->loadQueriesFromFastaButton->setEnabled(true);
+        ui->enterQueryManuallyButton->setEnabled(true);
+        ui->blastQueriesTableWidget->setEnabled(true);
+        ui->blastQueriesTableInfoText->setEnabled(true);
+        ui->step3Label->setEnabled(false);
+        ui->parametersLabel->setEnabled(false);
+        ui->parametersLineEdit->setEnabled(false);
+        ui->runBlastSearchButton->setEnabled(false);
+        ui->clearAllQueriesButton->setEnabled(false);
+        ui->clearAllQueriesButton->setEnabled(false);
+        ui->hitsLabel->setEnabled(false);
+        ui->step1TickLabel->setPixmap(tick);
+        ui->step2TickLabel->setPixmap(QPixmap());
+        ui->step3TickLabel->setPixmap(QPixmap());
+        ui->buildBlastDatabaseInfoText->setEnabled(true);
+        ui->loadQueriesFromFastaInfoText->setEnabled(true);
+        ui->enterQueryManuallyInfoText->setEnabled(true);
+        ui->clearSelectedQueriesInfoText->setEnabled(false);
+        ui->clearSelectedQueriesInfoText->setEnabled(false);
+        ui->blastHitsTableWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(false);
+        ui->blastHitsTableInfoText->setEnabled(false);
+        break;
+
+    case READY_FOR_BLAST_SEARCH:
+        ui->step1Label->setEnabled(true);
+        ui->buildBlastDatabaseButton->setEnabled(false);
+        ui->step2Label->setEnabled(true);
+        ui->loadQueriesFromFastaButton->setEnabled(true);
+        ui->enterQueryManuallyButton->setEnabled(true);
+        ui->blastQueriesTableWidget->setEnabled(true);
+        ui->blastQueriesTableInfoText->setEnabled(true);
+        ui->step3Label->setEnabled(true);
+        ui->parametersLabel->setEnabled(true);
+        ui->parametersLineEdit->setEnabled(true);
+        ui->runBlastSearchButton->setEnabled(true);
+        ui->clearAllQueriesButton->setEnabled(true);
+        queryTableSelectionChanged();
+        ui->hitsLabel->setEnabled(false);
+        ui->step1TickLabel->setPixmap(tick);
+        ui->step2TickLabel->setPixmap(tick);
+        ui->step3TickLabel->setPixmap(QPixmap());
+        ui->buildBlastDatabaseInfoText->setEnabled(true);
+        ui->loadQueriesFromFastaInfoText->setEnabled(true);
+        ui->enterQueryManuallyInfoText->setEnabled(true);
+        ui->clearAllQueriesInfoText->setEnabled(true);
+        ui->clearSelectedQueriesInfoText->setEnabled(true);
+        ui->blastHitsTableWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(true);
+        ui->blastHitsTableInfoText->setEnabled(false);
+        break;
+
+    case BLAST_SEARCH_IN_PROGRESS:
+        ui->step1Label->setEnabled(true);
+        ui->buildBlastDatabaseButton->setEnabled(false);
+        ui->step2Label->setEnabled(true);
+        ui->loadQueriesFromFastaButton->setEnabled(true);
+        ui->enterQueryManuallyButton->setEnabled(true);
+        ui->blastQueriesTableWidget->setEnabled(true);
+        ui->blastQueriesTableInfoText->setEnabled(true);
+        ui->step3Label->setEnabled(true);
+        ui->parametersLabel->setEnabled(true);
+        ui->parametersLineEdit->setEnabled(true);
+        ui->runBlastSearchButton->setEnabled(false);
+        ui->clearAllQueriesButton->setEnabled(true);
+        queryTableSelectionChanged();
+        ui->hitsLabel->setEnabled(false);
+        ui->step1TickLabel->setPixmap(tick);
+        ui->step2TickLabel->setPixmap(tick);
+        ui->step3TickLabel->setPixmap(QPixmap());
+        ui->buildBlastDatabaseInfoText->setEnabled(true);
+        ui->loadQueriesFromFastaInfoText->setEnabled(true);
+        ui->enterQueryManuallyInfoText->setEnabled(true);
+        ui->clearAllQueriesInfoText->setEnabled(true);
+        ui->clearSelectedQueriesInfoText->setEnabled(true);
+        ui->blastHitsTableWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(true);
+        ui->blastHitsTableInfoText->setEnabled(false);
+        break;
+
+    case BLAST_SEARCH_COMPLETE:
+        ui->step1Label->setEnabled(true);
+        ui->buildBlastDatabaseButton->setEnabled(false);
+        ui->step2Label->setEnabled(true);
+        ui->loadQueriesFromFastaButton->setEnabled(true);
+        ui->enterQueryManuallyButton->setEnabled(true);
+        ui->blastQueriesTableWidget->setEnabled(true);
+        ui->blastQueriesTableInfoText->setEnabled(true);
+        ui->step3Label->setEnabled(true);
+        ui->parametersLabel->setEnabled(true);
+        ui->parametersLineEdit->setEnabled(true);
+        ui->runBlastSearchButton->setEnabled(true);
+        ui->clearAllQueriesButton->setEnabled(true);
+        queryTableSelectionChanged();
+        ui->hitsLabel->setEnabled(true);
+        ui->step1TickLabel->setPixmap(tick);
+        ui->step2TickLabel->setPixmap(tick);
+        ui->step3TickLabel->setPixmap(tick);
+        ui->buildBlastDatabaseInfoText->setEnabled(true);
+        ui->loadQueriesFromFastaInfoText->setEnabled(true);
+        ui->enterQueryManuallyInfoText->setEnabled(true);
+        ui->clearAllQueriesInfoText->setEnabled(true);
+        ui->clearSelectedQueriesInfoText->setEnabled(true);
+        ui->blastHitsTableWidget->setEnabled(true);
+        ui->blastSearchWidget->setEnabled(true);
+        ui->blastHitsTableInfoText->setEnabled(true);
+        break;
+    }
+}
+
+
+
+void BlastSearchDialog::setInfoTexts()
+{
+    QString settingsDialogTitle = "settings";
+#ifdef Q_OS_MAC
+    settingsDialogTitle = "preferences";
+#endif
+
+    ui->buildBlastDatabaseInfoText->setInfoText("This step runs makeblastdb on the contig sequences, "
+                                                "preparing them for a BLAST search.<br><br>"
+                                                "The database files generated are temporary and will "
+                                                "be deleted when Bandage is closed.");
+
+    ui->loadQueriesFromFastaInfoText->setInfoText("Click this button to load a FASTA file. Each "
+                                                  "sequence in the FASTA file will be a separate "
+                                                  "query.");
+
+    ui->enterQueryManuallyInfoText->setInfoText("Click this button to type or paste a single query sequence.");
+
+    ui->parametersInfoText->setInfoText("You may add additional blastn/tblastn parameters here, exactly as they "
+                                        "would be typed at the command line.");
+
+    ui->startBlastSearchInfoText->setInfoText("Click this to conduct search for the above "
+                                              "queries on the graph nodes.<br><br>"
+                                              "If no parameters were added above, this will run:<br>"
+                                              "blastn -query queries.fasta -db all_nodes.fasta -outfmt 6<br><br>"
+                                              "If, for example, '-evalue 0.01' was entered in the above "
+                                              "parameters field, then this will run:<br>"
+                                              "blastn -query queries.fasta -db all_nodes.fasta -outfmt 6 -evalue 0.01<br><br>"
+                                              "For protein queries, tblastn will be used instead of blastn.");
+
+    ui->clearSelectedQueriesInfoText->setInfoText("Click this button to remove any selected queries in the below list.");
+
+    ui->clearAllQueriesInfoText->setInfoText("Click this button to remove all queries in the below list.");
+
+    ui->blastQueriesTableInfoText->setInfoText("The BLAST queries are displayed in this table. Before a BLAST search "
+                                               "is run, some information about the queries is not yet available and "
+                                               "will show a dash.<br><br>"
+                                               "<b>Colour</b>: Each query is automatically assigned a colour which is used for the "
+                                               "'Blast hits (solid)' graph colour scheme. This colour can be changed by "
+                                               "clicking in the table cell.<br><br>"
+                                               "<b>Show</b>: if this box is ticked, the query's hits will be able to be viewed "
+                                               "on the graph. If this box is not ticked, the query's hits will be hidden "
+                                               "on the graph.<br><br>"
+                                               "<b>Query name</b>: If a query is loaded from a FASTA file, its name is the sequence "
+                                               "ID (the text between the '>' and the first space in the description line). "
+                                               "Query names are editable by double clicking in their table cell.<br><br>"
+                                               "<b>Type</b>: This is either 'nucl' for nucleotide sequences or 'prot' for protein "
+                                               "sequences. Nucleotide sequences will be searched for using blastn, while "
+                                               "protein sequences will be search for with tblastn. Both types can be used "
+                                               "simultaneously.<br><br>"
+                                               "<b>Length</b>: This is the length of the query, in bases (for nucleotide queries) "
+                                               "or amino acids (for protein queries).<br><br>"
+                                               "<b>Hits</b>: This is the number of BLAST hits acquired for the query.<br><br>"
+                                               "<b>Query cover</b>: This is the total fraction of the query captured by all of "
+                                               "the BLAST hits. However, the hits may not be proximal to each other. For "
+                                               "example, if the first half a query was found in one part of the graph and "
+                                               "the second half in a different part, this value would be 100%. This value "
+                                               "is equivalent to the 'qcovs' output option in BLAST.<br><br>"
+                                               "<b>Paths</b>: These are the number of possible paths through the graph which "
+                                               "represent the entire query.  If there is at least one path, you can click on "
+                                               "this button to view a table of the paths' properties.");
+
+    ui->blastHitsTableInfoText->setInfoText("The BLAST hits are displayed in this table after a BLAST search is run.<br><br>"
+                                            "<b>Query name</b>: This is the name of the BLAST query for the hit.<br><br>"
+                                            "<b>Node name</b>: This is the name of the graph node that the query matched.<br><br>"
+                                            "<b>Percent identity</b>: This is the sequence similarity over the length of the hit. "
+                                            "100% identity means that the query and node are identical over the length of the hit.<br><br>"
+                                            "<b>Alignment length</b>: This is the length of the alignment as measured against the "
+                                            "node. It is equal to node end minus node start plus one.<br><br>"
+                                            "<b>Query cover</b>: This is the fraction of the query covered by the hit. It is "
+                                            "equivalent to the 'qcovhsp' output option in BLAST.<br><br>"
+                                            "<b>Mismatches</b>: This is the number of locations (bases for nucleotide sequence, "
+                                            "amino acids for protein sequences) where the query and node sequences differ.<br><br>"
+                                            "<b>Gap opens</b>: This is the number of gaps in the alignment due to either insertions "
+                                            "or deletions.<br><br>"
+                                            "<b>Query start</b>: This is the position where the alignment starts relative to the query.<br><br>"
+                                            "<b>Query end</b>: This is the position where the alignment ends relative to the query.<br><br>"
+                                            "<b>Node start</b>: This is the position where the alignment starts relative to the node sequence.<br><br>"
+                                            "<b>Node end</b>: This is the position where the alignment ends relative to the node sequence.<br><br>"
+                                            "<b>E-value</b>: This is the BLAST-calculated expect value.<br><br>"
+                                            "<b>Bit score</b>: This is the BLAST-calculated bit score.");
+
+    ui->blastHitFiltersInfoText->setInfoText("Click the 'Set filters' button to open a dialog where you can set one or more BLAST hit "
+                                             "filters.<br><br>"
+                                             "These let you exclude BLAST hits using a threshold for alignment length, query coverage, "
+                                             "identity, e-value or bit score.");
+}
+
+
+
+//This function is called whenever a user changed the 'Show' tick box for a
+//query.  It does three things:
+// 1) Updates the 'shown' status of the TableWidgetItem so the table can be
+//    sorted by that column.
+// 2) Colours the QTableWidgetItems in the query table to match the query's
+//    'shown' status.
+// 3) Colours the QTableWidgetItems in the hits table to match the hit's query's
+//    'shown' status.
+void BlastSearchDialog::queryShownChanged()
+{
+    ui->blastQueriesTableWidget->blockSignals(true);
+
+    QTableWidgetItem tempItem;
+    QColor shownColour = tempItem.foreground().color();
+    QColor hiddenColour = QColor(150, 150, 150);
+
+    for (int i = 0; i < ui->blastQueriesTableWidget->rowCount(); ++i)
+    {
+        QString queryName = ui->blastQueriesTableWidget->item(i, 2)->text();
+        BlastQuery * query = g_blastSearch->m_blastQueries.getQueryFromName(queryName);
+        if (query == 0)
+            continue;
+        
+        QTableWidgetItem * item = ui->blastQueriesTableWidget->item(i, 1);
+        TableWidgetItemShown * shownItem = dynamic_cast<TableWidgetItemShown *>(item);
+
+        if (shownItem == 0)
+            continue;
+        shownItem->m_shown = query->isShown();
+
+        QColor colour = shownColour;
+        if (query->isHidden())
+            colour = hiddenColour;
+        ui->blastQueriesTableWidget->item(i, 2)->setForeground(colour);
+        ui->blastQueriesTableWidget->item(i, 3)->setForeground(colour);
+        ui->blastQueriesTableWidget->item(i, 4)->setForeground(colour);
+        ui->blastQueriesTableWidget->item(i, 5)->setForeground(colour);
+        ui->blastQueriesTableWidget->item(i, 6)->setForeground(colour);
+        ui->blastQueriesTableWidget->item(i, 7)->setForeground(colour);
+    }
+
+    for (int i = 0; i < ui->blastHitsTableWidget->rowCount(); ++i)
+    {
+        QString queryName = ui->blastHitsTableWidget->item(i, 1)->text();
+        BlastQuery * query = g_blastSearch->m_blastQueries.getQueryFromName(queryName);
+        if (query == 0)
+            continue;
+
+        QColor colour = shownColour;
+        if (query->isHidden())
+            colour = hiddenColour;
+
+        ui->blastHitsTableWidget->item(i, 1)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 2)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 3)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 4)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 5)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 6)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 7)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 8)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 9)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 10)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 11)->setForeground(colour);
+        ui->blastHitsTableWidget->item(i, 12)->setForeground(colour);
+    }
+
+    ui->blastQueriesTableWidget->blockSignals(false);
+    emit blastChanged();
+}
+
+
+
+void BlastSearchDialog::showPathsDialog(BlastQuery * query)
+{
+    deleteQueryPathsDialog();
+
+    m_queryPathsDialog = new QueryPathsDialog(this, query);
+
+    connect(m_queryPathsDialog, SIGNAL(selectionChanged()), this, SLOT(queryPathSelectionChangedSlot()));
+
+    m_queryPathsDialog->show();
+}
+
+void BlastSearchDialog::deleteQueryPathsDialog()
+{
+    if (m_queryPathsDialog != 0)
+        delete m_queryPathsDialog;
+    m_queryPathsDialog = 0;
+}
+
+void BlastSearchDialog::queryPathSelectionChangedSlot()
+{
+    emit queryPathSelectionChanged();
+}
+
+
+void BlastSearchDialog::openFiltersDialog()
+{
+    BlastHitFiltersDialog filtersDialog(this);
+    filtersDialog.setWidgetsFromSettings();
+
+    if (filtersDialog.exec()) //The user clicked OK
+    {
+        filtersDialog.setSettingsFromWidgets();
+        setFilterText();
+    }
+}
+
+void BlastSearchDialog::setFilterText()
+{
+    ui->blastHitFiltersLabel->setText("Current filters: " + BlastHitFiltersDialog::getFilterText());
+}
diff --git a/ui/blastsearchdialog.h b/ui/blastsearchdialog.h
new file mode 100644
index 0000000..60c913d
--- /dev/null
+++ b/ui/blastsearchdialog.h
@@ -0,0 +1,92 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef BLASTSEARCHDIALOG_H
+#define BLASTSEARCHDIALOG_H
+
+#include <QDialog>
+#include <QMap>
+#include <QThread>
+#include <QProcess>
+#include "../program/globals.h"
+
+class DeBruijnNode;
+class BlastQuery;
+class QueryPathsDialog;
+
+namespace Ui {
+class BlastSearchDialog;
+}
+
+class BlastSearchDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit BlastSearchDialog(QWidget *parent = 0, QString autoQuery = "");
+    ~BlastSearchDialog();
+
+private:
+    Ui::BlastSearchDialog *ui;
+    QMap<long long, DeBruijnNode*> * m_deBruijnGraphNodes;
+    QString m_makeblastdbCommand;
+    QString m_blastnCommand;
+    QString m_tblastnCommand;
+    QThread * m_buildBlastDatabaseThread;
+    QThread * m_blastSearchThread;
+    QueryPathsDialog * m_queryPathsDialog;
+
+    void setUiStep(BlastUiState blastUiState);
+    void clearBlastHits();
+    void setInfoTexts();
+    void loadBlastQueriesFromFastaFile(QString fullFileName);
+    void buildBlastDatabase(bool separateThread);
+    void runBlastSearches(bool separateThread);
+    void makeQueryRow(int row);
+    void deleteQueryPathsDialog();
+    void setFilterText();
+
+private slots:
+    void afterWindowShow();
+    void buildBlastDatabaseInThread();
+    void loadBlastQueriesFromFastaFileButtonClicked();
+    void enterQueryManually();
+    void clearAllQueries();
+    void clearSelectedQueries();
+    void runBlastSearchesInThread();
+    void fillTablesAfterBlastSearch();
+    void fillQueriesTable();
+    void fillHitsTable();
+    void blastDatabaseBuildFinished(QString error);
+    void runBlastSearchFinished(QString error);
+    void buildBlastDatabaseCancelled();
+    void runBlastSearchCancelled();
+    void queryCellChanged(int row, int column);
+    void queryTableSelectionChanged();
+    void queryShownChanged();
+    void showPathsDialog(BlastQuery * query);
+    void queryPathSelectionChangedSlot();
+    void openFiltersDialog();
+
+signals:
+    void blastChanged();
+    void queryPathSelectionChanged();
+};
+
+
+#endif // BLASTSEARCHDIALOG_H
diff --git a/ui/blastsearchdialog.ui b/ui/blastsearchdialog.ui
new file mode 100644
index 0000000..4917ff5
--- /dev/null
+++ b/ui/blastsearchdialog.ui
@@ -0,0 +1,807 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BlastSearchDialog</class>
+ <widget class="QDialog" name="BlastSearchDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1222</width>
+    <height>753</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>BLAST search</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0,0">
+   <item row="3" column="1">
+    <widget class="QLabel" name="step2Label">
+     <property name="text">
+      <string><html><head/><body><p><span style=" font-weight:600;">Step 2: </span>enter BLAST queries</p></body></html></string>
+     </property>
+    </widget>
+   </item>
+   <item row="12" column="2" rowspan="2">
+    <widget class="QWidget" name="blastHitsWidget" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_7">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="InfoTextWidget" name="blastHitsTableInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="MyTableWidget" name="blastHitsTableWidget">
+        <column>
+         <property name="text">
+          <string/>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Query name</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Node name</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Percent identity</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Alignment length</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Query cover</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Mismatches</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Gap opens</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Query start</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Query end</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Node start</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Node end</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>E-value</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Bit score</string>
+         </property>
+        </column>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QWidget" name="buildBlastDatabaseWidget" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="InfoTextWidget" name="buildBlastDatabaseInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="buildBlastDatabaseButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Build BLAST database</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="3" column="2">
+    <widget class="QWidget" name="blastQueriesWidget1" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_4">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="InfoTextWidget" name="loadQueriesFromFastaInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="loadQueriesFromFastaButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Load from FASTA file</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_7">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="InfoTextWidget" name="enterQueryManuallyInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="enterQueryManuallyButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Enter manually</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_9">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="InfoTextWidget" name="clearSelectedQueriesInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="clearSelectedQueriesButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Clear selected</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_8">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="InfoTextWidget" name="clearAllQueriesInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="clearAllQueriesButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Clear all</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="step2TickLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>32</width>
+       <height>32</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>32</width>
+       <height>32</height>
+      </size>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+     <property name="scaledContents">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLabel" name="step1Label">
+     <property name="font">
+      <font>
+       <weight>50</weight>
+       <bold>false</bold>
+      </font>
+     </property>
+     <property name="text">
+      <string><html><head/><body><p><span style=" font-weight:600;">Step 1: </span>build BLAST database</p></body></html></string>
+     </property>
+    </widget>
+   </item>
+   <item row="18" column="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="0">
+    <widget class="QLabel" name="step3TickLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>32</width>
+       <height>32</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>32</width>
+       <height>32</height>
+      </size>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+     <property name="scaledContents">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="3">
+    <widget class="Line" name="line_3">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="17" column="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="7" column="0" colspan="3">
+    <widget class="Line" name="line_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="8" column="1">
+    <widget class="QLabel" name="step3Label">
+     <property name="text">
+      <string><html><head/><body><p><span style=" font-weight:600;">Step 3:</span> run BLAST search</p></body></html></string>
+     </property>
+    </widget>
+   </item>
+   <item row="11" column="0" colspan="3">
+    <widget class="Line" name="line_4">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="12" column="1">
+    <widget class="QLabel" name="hitsLabel">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
+     <property name="text">
+      <string>Hits:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="QLabel" name="step1TickLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>32</width>
+       <height>32</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>32</width>
+       <height>32</height>
+      </size>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+     <property name="scaledContents">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="13" column="1">
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="4" column="2">
+    <widget class="QWidget" name="blastQueriesWidget2" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="InfoTextWidget" name="blastQueriesTableInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="MyTableWidget" name="blastQueriesTableWidget">
+        <column>
+         <property name="text">
+          <string/>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Show</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Query name</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Type</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Length</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Hits</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Query cover</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Paths</string>
+         </property>
+        </column>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="9" column="1">
+    <spacer name="verticalSpacer_3">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="8" column="2" rowspan="2">
+    <widget class="QWidget" name="blastSearchWidget" native="true">
+     <layout class="QGridLayout" name="gridLayout">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item row="1" column="0">
+       <widget class="InfoTextWidget" name="blastHitFiltersInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0">
+       <widget class="InfoTextWidget" name="parametersInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QPushButton" name="blastFiltersButton">
+        <property name="text">
+         <string>Set BLAST hit filters</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="2">
+       <widget class="QLabel" name="blastHitFiltersLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Current filters: none</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QLabel" name="parametersLabel">
+        <property name="text">
+         <string>Command line parameters:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2" colspan="2">
+       <widget class="QLineEdit" name="parametersLineEdit"/>
+      </item>
+      <item row="2" column="0">
+       <widget class="InfoTextWidget" name="startBlastSearchInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" colspan="3">
+       <widget class="QPushButton" name="runBlastSearchButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Run BLAST search</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>MyTableWidget</class>
+   <extends>QTableWidget</extends>
+   <header>mytablewidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>buildBlastDatabaseButton</tabstop>
+  <tabstop>loadQueriesFromFastaButton</tabstop>
+  <tabstop>enterQueryManuallyButton</tabstop>
+  <tabstop>clearSelectedQueriesButton</tabstop>
+  <tabstop>clearAllQueriesButton</tabstop>
+  <tabstop>blastQueriesTableWidget</tabstop>
+  <tabstop>parametersLineEdit</tabstop>
+  <tabstop>blastFiltersButton</tabstop>
+  <tabstop>runBlastSearchButton</tabstop>
+  <tabstop>blastHitsTableWidget</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>BlastSearchDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>603</x>
+     <y>748</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>BlastSearchDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>535</x>
+     <y>748</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/changenodedepthdialog.cpp b/ui/changenodedepthdialog.cpp
new file mode 100644
index 0000000..35325b5
--- /dev/null
+++ b/ui/changenodedepthdialog.cpp
@@ -0,0 +1,61 @@
+#include "changenodedepthdialog.h"
+#include "ui_changenodedepthdialog.h"
+
+
+#include "../program/globals.h"
+#include "../graph/debruijnnode.h"
+
+ChangeNodeDepthDialog::ChangeNodeDepthDialog(QWidget * parent,
+                                                     std::vector<DeBruijnNode *> * nodes,
+                                                     double oldDepth) :
+    QDialog(parent),
+    ui(new Ui::ChangeNodeDepthDialog)
+{
+    ui->setupUi(this);
+
+    ui->currentDepthLabel2->setText(formatDoubleForDisplay(oldDepth, 1));
+    ui->newDepthSpinBox->setValue(oldDepth);
+
+    //Display the node names.  If there are lots of nodes (more than 10), just
+    //display the first 10 and then an ellipsis.
+    QString nodeNames;
+    int numNodeNames = int(nodes->size());
+    if (numNodeNames > 10)
+        numNodeNames = 10;
+    for (int i = 0; i < numNodeNames; ++i)
+    {
+        nodeNames += (*nodes)[i]->getNameWithoutSign();
+        if (i < numNodeNames - 1)
+            nodeNames += ", ";
+    }
+    if (int(nodes->size()) > numNodeNames)
+        nodeNames += "...";
+
+    //Set the dialog text to be either singular or plural as appropriate.
+    if (nodes->size() == 1)
+    {
+        ui->nodeNameLabel1->setText("Node:");
+        ui->currentDepthLabel1->setText("Current depth:");
+        ui->infoLabel->setText("Enter a new depth. Both the node and its reverse complement will have their depth set to the new value.");
+    }
+    else
+    {
+        ui->nodeNameLabel1->setText("Nodes (" + formatIntForDisplay(int(nodes->size())) + "):");
+        ui->currentDepthLabel1->setText("Current mean depth:");
+        ui->infoLabel->setText("Enter a new depth. The nodes and their reverse complements will have their depths set to the new value.");
+    }
+
+    ui->nodeNameLabel2->setText(nodeNames);
+
+    ui->newDepthSpinBox->setFocus();
+}
+
+ChangeNodeDepthDialog::~ChangeNodeDepthDialog()
+{
+    delete ui;
+}
+
+double ChangeNodeDepthDialog::getNewDepth() const
+{
+    return ui->newDepthSpinBox->value();
+}
diff --git a/ui/changenodedepthdialog.h b/ui/changenodedepthdialog.h
new file mode 100644
index 0000000..0e77957
--- /dev/null
+++ b/ui/changenodedepthdialog.h
@@ -0,0 +1,28 @@
+#ifndef CHANGENODEDEPTHDIALOG_H
+#define CHANGENODEDEPTHDIALOG_H
+
+#include <QDialog>
+
+class DeBruijnNode;
+
+namespace Ui {
+class ChangeNodeDepthDialog;
+}
+
+class ChangeNodeDepthDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ChangeNodeDepthDialog(QWidget * parent,
+                                       std::vector<DeBruijnNode *> *nodes,
+                                       double oldDepth);
+    ~ChangeNodeDepthDialog();
+
+    double getNewDepth() const;
+
+private:
+    Ui::ChangeNodeDepthDialog *ui;
+};
+
+#endif // CHANGENODEDEPTHDIALOG_H
diff --git a/ui/changenodedepthdialog.ui b/ui/changenodedepthdialog.ui
new file mode 100644
index 0000000..ef4312e
--- /dev/null
+++ b/ui/changenodedepthdialog.ui
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ChangeNodeDepthDialog</class>
+ <widget class="QDialog" name="ChangeNodeDepthDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>367</width>
+    <height>235</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Change depth</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0" colspan="2">
+    <widget class="QLabel" name="infoLabel">
+     <property name="text">
+      <string>Enter a new depth. Both the node and its reverse complement will be have their depth set to the new value.</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2">
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>263</width>
+       <height>8</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="nodeNameLabel1">
+     <property name="text">
+      <string>Node:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="currentDepthLabel1">
+     <property name="text">
+      <string>Current depth:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="QLabel" name="currentDepthLabel2">
+     <property name="text">
+      <string>old_depth</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0">
+    <widget class="QLabel" name="newDepthLabel">
+     <property name="text">
+      <string>New depth:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <widget class="QDoubleSpinBox" name="newDepthSpinBox">
+     <property name="decimals">
+      <number>1</number>
+     </property>
+     <property name="minimum">
+      <double>0.100000000000000</double>
+     </property>
+     <property name="maximum">
+      <double>1000000.000000000000000</double>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="0" colspan="2">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>263</width>
+       <height>9</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="6" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QLabel" name="nodeNameLabel2">
+     <property name="text">
+      <string>node_names</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ChangeNodeDepthDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ChangeNodeDepthDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/changenodenamedialog.cpp b/ui/changenodenamedialog.cpp
new file mode 100644
index 0000000..e90e3ea
--- /dev/null
+++ b/ui/changenodenamedialog.cpp
@@ -0,0 +1,101 @@
+#include "changenodenamedialog.h"
+#include "ui_changenodenamedialog.h"
+
+#include "../program/globals.h"
+#include "../graph/assemblygraph.h"
+#include <QPushButton>
+
+ChangeNodeNameDialog::ChangeNodeNameDialog(QWidget * parent, QString oldName) :
+    QDialog(parent),
+    ui(new Ui::ChangeNodeNameDialog),
+    m_oldName(oldName)
+{
+    ui->setupUi(this);
+
+    ui->currentNodeNameLabel2->setText(m_oldName);
+    checkNodeNameValidity();
+    ui->newNodeNameLineEdit->setFocus();
+
+    connect(ui->newNodeNameLineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkNodeNameValidity()));
+}
+
+ChangeNodeNameDialog::~ChangeNodeNameDialog()
+{
+    delete ui;
+}
+
+
+QString ChangeNodeNameDialog::getNewName() const
+{
+    return ui->newNodeNameLineEdit->text();
+}
+
+
+void ChangeNodeNameDialog::checkNodeNameValidity()
+{
+    QString potentialName = ui->newNodeNameLineEdit->text();
+
+    //If the new name is blank, don't allow an accept but no need to show an
+    //error.
+    if (potentialName.length() == 0)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("");
+        return;
+    }
+
+    if (potentialName == m_oldName)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("Same as current");
+        return;
+    }
+
+    NodeNameStatus nodeNameStatus = g_assemblyGraph->checkNodeNameValidity(potentialName);
+
+    if (nodeNameStatus == NODE_NAME_OKAY)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
+        ui->errorLabel->setText("");
+        return;
+    }
+
+    else if (nodeNameStatus == NODE_NAME_TAKEN)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("Name already used");
+        return;
+    }
+
+    else if (nodeNameStatus == NODE_NAME_CONTAINS_TAB)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("Tab not allowed");
+        return;
+    }
+
+    else if (nodeNameStatus == NODE_NAME_CONTAINS_NEWLINE)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("Newline not allowed");
+        return;
+    }
+
+    else if (nodeNameStatus == NODE_NAME_CONTAINS_COMMA)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("Comma not allowed");
+        return;
+    }
+
+    else if (nodeNameStatus == NODE_NAME_CONTAINS_SPACE)
+    {
+        ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+        ui->errorLabel->setText("Space not allowed");
+        return;
+    }
+
+    //Catch any other error cases (shouldn't happen, but just in case)
+    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+    ui->errorLabel->setText("");
+}
diff --git a/ui/changenodenamedialog.h b/ui/changenodenamedialog.h
new file mode 100644
index 0000000..0af39c3
--- /dev/null
+++ b/ui/changenodenamedialog.h
@@ -0,0 +1,28 @@
+#ifndef CHANGENODENAMEDIALOG_H
+#define CHANGENODENAMEDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class ChangeNodeNameDialog;
+}
+
+class ChangeNodeNameDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ChangeNodeNameDialog(QWidget * parent, QString oldName);
+    ~ChangeNodeNameDialog();
+
+    QString getNewName() const;
+
+private:
+    Ui::ChangeNodeNameDialog *ui;
+    QString m_oldName;
+
+private slots:
+    void checkNodeNameValidity();
+};
+
+#endif // CHANGENODENAMEDIALOG_H
diff --git a/ui/changenodenamedialog.ui b/ui/changenodenamedialog.ui
new file mode 100644
index 0000000..5330786
--- /dev/null
+++ b/ui/changenodenamedialog.ui
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ChangeNodeNameDialog</class>
+ <widget class="QDialog" name="ChangeNodeNameDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>418</width>
+    <height>249</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Change node name</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="6" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QLabel" name="currentNodeNameLabel2">
+     <property name="text">
+      <string>old_name</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QLabel" name="currentNodeNameLabel1">
+     <property name="text">
+      <string>Current node name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="newNodeNameLabel">
+     <property name="text">
+      <string>New node name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="0">
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>40</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="3" column="1">
+    <widget class="QLineEdit" name="newNodeNameLineEdit"/>
+   </item>
+   <item row="0" column="0" colspan="2">
+    <widget class="QLabel" name="label_4">
+     <property name="text">
+      <string>Enter a new name for the node.  Both the node and its reverse complement will be renamed.  A '+' will be appended to the name of the positive node and a '-' will be appended to the name of the negative node.</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <widget class="QLabel" name="errorLabel">
+     <property name="text">
+      <string>error</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>newNodeNameLineEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ChangeNodeNameDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ChangeNodeNameDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/colourbutton.cpp b/ui/colourbutton.cpp
new file mode 100644
index 0000000..220e2a2
--- /dev/null
+++ b/ui/colourbutton.cpp
@@ -0,0 +1,47 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "colourbutton.h"
+#include <QColorDialog>
+
+ColourButton::ColourButton(QWidget * parent) :
+    QPushButton(parent)
+{
+    connect(this, SIGNAL(clicked(bool)), this, SLOT(chooseColour()));
+}
+
+
+void ColourButton::setColour(QColor newColour)
+{
+    m_colour = newColour;
+
+    const QString COLOR_STYLE("QPushButton { background-color : %1 }");
+    setStyleSheet(COLOR_STYLE.arg(m_colour.name()));
+}
+
+
+
+void ColourButton::chooseColour()
+{
+    QColor chosenColour = QColorDialog::getColor(m_colour, this, m_name, QColorDialog::ShowAlphaChannel);
+    if (chosenColour.isValid())
+    {
+        setColour(chosenColour);
+        emit colourChosen(chosenColour);
+    }
+}
diff --git a/ui/colourbutton.h b/ui/colourbutton.h
new file mode 100644
index 0000000..c521129
--- /dev/null
+++ b/ui/colourbutton.h
@@ -0,0 +1,45 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef COLOURBUTTON_H
+#define COLOURBUTTON_H
+
+#include <QPushButton>
+#include <QColor>
+#include <QString>
+
+class ColourButton : public QPushButton
+{
+    Q_OBJECT
+
+public:
+    ColourButton(QWidget * parent = 0);
+
+    QColor m_colour;
+    QString m_name;
+
+    void setColour(QColor newColour);
+
+signals:
+    void colourChosen(QColor colour);
+
+public slots:
+    void chooseColour();
+};
+
+#endif // COLOURBUTTON_H
diff --git a/ui/enteroneblastquerydialog.cpp b/ui/enteroneblastquerydialog.cpp
new file mode 100644
index 0000000..2877f23
--- /dev/null
+++ b/ui/enteroneblastquerydialog.cpp
@@ -0,0 +1,57 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "enteroneblastquerydialog.h"
+#include "ui_enteroneblastquerydialog.h"
+#include "../program/settings.h"
+#include "../program/globals.h"
+#include <QDialogButtonBox>
+#include <QPushButton>
+
+EnterOneBlastQueryDialog::EnterOneBlastQueryDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::EnterOneBlastQueryDialog)
+{
+    ui->setupUi(this);
+    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+    connect(ui->sequenceTextEdit, SIGNAL(textChanged()), this, SLOT(sequenceChanged()));
+}
+
+EnterOneBlastQueryDialog::~EnterOneBlastQueryDialog()
+{
+    delete ui;
+}
+
+QString EnterOneBlastQueryDialog::getName()
+{
+    QString name = ui->nameLineEdit->text().simplified();
+    if (name == "")
+        name = g_settings->unnamedQueryDefaultName;
+    return name;
+}
+
+QString EnterOneBlastQueryDialog::getSequence()
+{
+    return ui->sequenceTextEdit->toPlainText().simplified().replace(" ", "");
+}
+
+void EnterOneBlastQueryDialog::sequenceChanged()
+{
+    bool someText = !ui->sequenceTextEdit->toPlainText().isEmpty();
+    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(someText);
+}
diff --git a/ui/enteroneblastquerydialog.h b/ui/enteroneblastquerydialog.h
new file mode 100644
index 0000000..5c05025
--- /dev/null
+++ b/ui/enteroneblastquerydialog.h
@@ -0,0 +1,47 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef ENTERONEBLASTQUERYDIALOG_H
+#define ENTERONEBLASTQUERYDIALOG_H
+
+#include <QDialog>
+#include <QString>
+
+namespace Ui {
+class EnterOneBlastQueryDialog;
+}
+
+class EnterOneBlastQueryDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit EnterOneBlastQueryDialog(QWidget *parent = 0);
+    ~EnterOneBlastQueryDialog();
+
+    QString getName();
+    QString getSequence();
+
+private:
+    Ui::EnterOneBlastQueryDialog *ui;
+
+private slots:
+    void sequenceChanged();
+};
+
+#endif // ENTERONEBLASTQUERYDIALOG_H
diff --git a/ui/enteroneblastquerydialog.ui b/ui/enteroneblastquerydialog.ui
new file mode 100644
index 0000000..0e2386e
--- /dev/null
+++ b/ui/enteroneblastquerydialog.ui
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EnterOneBlastQueryDialog</class>
+ <widget class="QDialog" name="EnterOneBlastQueryDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Enter BLAST query</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Name (optional):</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLineEdit" name="nameLineEdit"/>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>Sequence:</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QPlainTextEdit" name="sequenceTextEdit"/>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>nameLineEdit</tabstop>
+  <tabstop>sequenceTextEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>EnterOneBlastQueryDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>EnterOneBlastQueryDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/graphicsviewzoom.cpp b/ui/graphicsviewzoom.cpp
new file mode 100644
index 0000000..a905b86
--- /dev/null
+++ b/ui/graphicsviewzoom.cpp
@@ -0,0 +1,117 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "graphicsviewzoom.h"
+#include <QMouseEvent>
+#include <QApplication>
+#include <QScrollBar>
+#include <qmath.h>
+#include "../program/settings.h"
+#include "mygraphicsview.h"
+
+GraphicsViewZoom::GraphicsViewZoom(MyGraphicsView * view) :
+    QObject(view), m_view(view)
+{
+    g_absoluteZoom = 1.0;
+    m_view->viewport()->installEventFilter(this);
+    m_view->setMouseTracking(true);
+    m_modifiers = Qt::ControlModifier;
+    m_zoomFactorBase = g_settings->zoomFactor;
+}
+
+void GraphicsViewZoom::gentleZoom(double factor, ZoomSource zoomSource)
+{
+
+    if (g_absoluteZoom * factor >= g_settings->maxZoom)
+        factor = g_settings->maxZoom / g_absoluteZoom;
+    if (g_absoluteZoom * factor <= g_settings->minZoom)
+        factor = g_settings->minZoom / g_absoluteZoom;
+
+    g_absoluteZoom *= factor;
+    m_view->scale(factor, factor);
+
+    if (zoomSource == MOUSE_WHEEL)
+    {
+        m_view->centerOn(targetScenePos);
+
+
+        QPointF deltaViewportPos = targetViewportPos - QPointF(m_view->viewport()->width() / 2.0,
+                                                                   m_view->viewport()->height() / 2.0);
+        QPointF viewport_center = m_view->mapFromScene(targetScenePos) - deltaViewportPos;
+        m_view->centerOn(m_view->mapToScene(viewport_center.toPoint()));
+    }
+
+    if (zoomSource != SPIN_BOX)
+        emit zoomed();
+}
+
+void GraphicsViewZoom::setModifiers(Qt::KeyboardModifiers modifiers)
+{
+    m_modifiers = modifiers;
+}
+
+void GraphicsViewZoom::setZoomFactorBase(double value)
+{
+    m_zoomFactorBase = value;
+}
+
+bool GraphicsViewZoom::eventFilter(QObject *object, QEvent *event)
+{
+    if (event->type() == QEvent::MouseMove)
+    {
+        QMouseEvent * mouseEvent = static_cast<QMouseEvent*>(event);
+        QPointF delta = targetViewportPos - mouseEvent->pos();
+        if (qAbs(delta.x()) > 5 || qAbs(delta.y()) > 5)
+        {
+            targetViewportPos = mouseEvent->pos();
+            targetScenePos = m_view->mapToScene(mouseEvent->pos());
+        }
+    }
+    else if (event->type() == QEvent::Wheel)
+    {
+        QWheelEvent * wheelEvent = static_cast<QWheelEvent*>(event);
+        if (QApplication::keyboardModifiers() == m_modifiers)
+        {
+            if (wheelEvent->orientation() == Qt::Vertical)
+            {
+                double angle = wheelEvent->angleDelta().y();
+                double factor = qPow(m_zoomFactorBase, angle);
+                gentleZoom(factor, MOUSE_WHEEL);
+                return true;
+            }
+        }
+    }
+    else if (event->type() == QEvent::NativeGesture)
+    {
+        QNativeGestureEvent * gestureEvent = static_cast<QNativeGestureEvent *>(event);
+        if (gestureEvent->gestureType() == Qt::ZoomNativeGesture)
+        {
+            double factor = 1.0 + gestureEvent->value();
+            gentleZoom(factor, GESTURE);
+            return true;
+        }
+        else if (gestureEvent->gestureType() == Qt::RotateNativeGesture)
+        {
+            double angle = gestureEvent->value();
+            m_view->changeRotation(angle);
+        }
+    }
+
+    Q_UNUSED(object)
+    return false;
+}
diff --git a/ui/graphicsviewzoom.h b/ui/graphicsviewzoom.h
new file mode 100644
index 0000000..f5f9ed2
--- /dev/null
+++ b/ui/graphicsviewzoom.h
@@ -0,0 +1,82 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef GRAPHICS_VIEW_ZOOM_H
+#define GRAPHICS_VIEW_ZOOM_H
+
+#include <QObject>
+#include <QGraphicsView>
+#include "../program/globals.h"
+
+// This class is a modified version of:
+// http://stackoverflow.com/questions/19113532/qgraphicsview-zooming-in-and-out-under-mouse-position-using-mouse-wheel
+
+/*!
+ * This class adds ability to zoom QGraphicsView using mouse wheel. The point under cursor
+ * remains motionless while it's possible.
+ *
+ * Note that it becomes not possible when the scene's
+ * size is not large enough comparing to the viewport size. QGraphicsView centers the picture
+ * when it's smaller than the view. And QGraphicsView's scrolls boundaries don't allow to
+ * put any picture point at any viewport position.
+ *
+ * When the user starts scrolling, this class remembers original scene position and
+ * keeps it until scrolling is completed. It's better than getting original scene position at
+ * each scrolling step because that approach leads to position errors due to before-mentioned
+ * positioning restrictions.
+ *
+ * When zoomed using scroll, this class emits zoomed() signal.
+ *
+ * Usage:
+ *
+ *   new GraphicsViewZoom(view);
+ *
+ * The object will be deleted automatically when the view is deleted.
+ *
+ * You can set keyboard modifiers used for zooming using set_modified(). Zooming will be
+ * performed only on exact match of modifiers combination. The default modifier is Ctrl.
+ *
+ * You can change zoom velocity by calling setZoomFactorBase().
+ * Zoom coefficient is calculated as zoom_factor_base^angle_delta
+ * (see QWheelEvent::angleDelta).
+ * The default zoom factor base is 1.0015.
+ */
+
+class MyGraphicsView;
+
+class GraphicsViewZoom : public QObject
+{
+    Q_OBJECT
+public:
+    GraphicsViewZoom(MyGraphicsView * view);
+    void gentleZoom(double factor, ZoomSource zoomSource);
+    void setModifiers(Qt::KeyboardModifiers modifiers);
+    void setZoomFactorBase(double value);
+    double m_zoomFactorBase;
+
+private:
+    MyGraphicsView * m_view;
+    Qt::KeyboardModifiers m_modifiers;
+    QPointF targetScenePos, targetViewportPos;
+    bool eventFilter(QObject * object, QEvent * event);
+
+signals:
+    void zoomed();
+};
+
+#endif // GRAPHICS_VIEW_ZOOM_H
diff --git a/ui/graphinfodialog.cpp b/ui/graphinfodialog.cpp
new file mode 100644
index 0000000..a33e075
--- /dev/null
+++ b/ui/graphinfodialog.cpp
@@ -0,0 +1,182 @@
+#include "graphinfodialog.h"
+#include "ui_graphinfodialog.h"
+
+#include "../program/globals.h"
+#include "../graph/assemblygraph.h"
+#include <QPair>
+
+GraphInfoDialog::GraphInfoDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::GraphInfoDialog)
+{
+    ui->setupUi(this);
+
+    setLabels();
+    setInfoTexts();
+}
+
+
+GraphInfoDialog::~GraphInfoDialog()
+{
+    delete ui;
+}
+
+
+
+void GraphInfoDialog::setLabels()
+{
+    ui->filenameLabel->setText(g_assemblyGraph->m_filename);
+
+    int nodeCount = g_assemblyGraph->m_nodeCount;
+
+    ui->nodeCountLabel->setText(formatIntForDisplay(nodeCount));
+    ui->edgeCountLabel->setText(formatIntForDisplay(g_assemblyGraph->m_edgeCount));
+
+    if (g_assemblyGraph->m_edgeCount == 0)
+        ui->edgeOverlapRangeLabel->setText("n/a");
+    else
+    {
+        QPair<int, int> overlapRange = g_assemblyGraph->getOverlapRange();
+        int smallestOverlap = overlapRange.first;
+        int largestOverlap = overlapRange.second;
+        if (smallestOverlap == largestOverlap)
+            ui->edgeOverlapRangeLabel->setText(formatIntForDisplay(smallestOverlap) + " bp");
+        else
+            ui->edgeOverlapRangeLabel->setText(formatIntForDisplay(smallestOverlap) + " to " + formatIntForDisplay(largestOverlap) + " bp");
+    }
+
+    ui->totalLengthLabel->setText(formatIntForDisplay(g_assemblyGraph->m_totalLength) + " bp");
+    ui->totalLengthNoOverlapsLabel->setText(formatIntForDisplay(g_assemblyGraph->getTotalLengthMinusEdgeOverlaps()) + " bp");
+
+    int deadEnds = g_assemblyGraph->getDeadEndCount();
+    double percentageDeadEnds = 100.0 * double(deadEnds) / (2 * nodeCount);
+
+    ui->deadEndsLabel->setText(formatIntForDisplay(deadEnds));
+    ui->percentageDeadEndsLabel->setText(formatDoubleForDisplay(percentageDeadEnds, 2) + "%");
+
+
+    int componentCount = 0;
+    int largestComponentLength = 0;
+    g_assemblyGraph->getGraphComponentCountAndLargestComponentSize(&componentCount, &largestComponentLength);
+    QString percentageLargestComponent;
+    if (g_assemblyGraph->m_totalLength > 0)
+        percentageLargestComponent = formatDoubleForDisplay(100.0 * double(largestComponentLength) / g_assemblyGraph->m_totalLength, 2);
+    else
+        percentageLargestComponent = "n/a";
+
+    long long totalLengthOrphanedNodes = g_assemblyGraph->getTotalLengthOrphanedNodes();
+    QString percentageOrphaned;
+    if (g_assemblyGraph->m_totalLength > 0)
+        percentageOrphaned = formatDoubleForDisplay(100.0 * double(totalLengthOrphanedNodes) / g_assemblyGraph->m_totalLength, 2);
+    else
+        percentageOrphaned = "n/a";
+
+    ui->connectedComponentsLabel->setText(formatIntForDisplay(componentCount));
+    ui->largestComponentLabel->setText(formatIntForDisplay(largestComponentLength) + " bp (" + percentageLargestComponent + "%)");
+    ui->orphanedLengthLabel->setText(formatIntForDisplay(totalLengthOrphanedNodes) + " bp (" + percentageOrphaned + "%)");
+
+    int n50 = 0;
+    int shortestNode = 0;
+    int firstQuartile = 0;
+    int median = 0;
+    int thirdQuartile = 0;
+    int longestNode = 0;
+    g_assemblyGraph->getNodeStats(&n50, &shortestNode, &firstQuartile, &median, &thirdQuartile, &longestNode);
+
+    ui->n50Label->setText(formatIntForDisplay(n50) + " bp");
+    ui->shortestNodeLabel->setText(formatIntForDisplay(shortestNode) + " bp");
+    ui->lowerQuartileNodeLabel->setText(formatIntForDisplay(firstQuartile) + " bp");
+    ui->medianNodeLabel->setText(formatIntForDisplay(median) + " bp");
+    ui->upperQuartileNodeLabel->setText(formatIntForDisplay(thirdQuartile) + " bp");
+    ui->longestNodeLabel->setText(formatIntForDisplay(longestNode) + " bp");
+
+    double medianDepthByBase = g_assemblyGraph->getMedianDepthByBase();
+    long long estimatedSequenceLength = g_assemblyGraph->getEstimatedSequenceLength(medianDepthByBase);
+
+    ui->medianDepthLabel->setText(formatDepthForDisplay(medianDepthByBase));
+    if (medianDepthByBase == 0.0)
+        ui->estimatedSequenceLengthLabel->setText("unavailable");
+    else
+        ui->estimatedSequenceLengthLabel->setText(formatIntForDisplay(estimatedSequenceLength) + " bp");
+}
+
+
+
+
+
+void GraphInfoDialog::setInfoTexts()
+{
+    ui->nodeCountInfoText->setInfoText("The number of positive nodes in the graph.<br><br>"
+                                       "Since only positive nodes are counted, each complementary node pair counts "
+                                       "as one.");
+    ui->edgeCountInfoText->setInfoText("The number of positive edges in the graph.<br><br>"
+                                       "Since only positive edges are counted, each complementary edge pair counts "
+                                       "as one.");
+    ui->edgeOverlapRangeInfoText->setInfoText("The sequence overlap size for edges in the graph<br><br>"
+                                              "For most graphs, this will either be zero or a single value, but it is "
+                                              "also possible for a graph to have edges with different overlaps, "
+                                              "in which case this will show the range.");
+    ui->totalLengthInfoText->setInfoText("The total length of all sequences in positive nodes.<br><br>"
+                                         "This value is a simple sum of node sequence lengths and does not take "
+                                         "node overlaps into account.");
+    ui->totalLengthNoOverlapsInfoText->setInfoText("The total length of all sequences in positive nodes, with the edge "
+                                                   "overlaps removed.<br><br>"
+                                                   "This value is the above 'Total length' minus the total overlaps in "
+                                                   "positive edges. If the edges in the graph do not contain "
+                                                   "overlaps, then this value will be the same as 'Total length'.");
+    ui->deadEndsInfoText->setInfoText("The number of dead ends (node ends without any connected edges) in all positive "
+                                      "nodes.<br><br>"
+                                      "This value will range from 0 (in a graph where all nodes have connected edges "
+                                      "on both ends) to two times the node count (in a graph without any edges).");
+    ui->percentageDeadEndsInfoText->setInfoText("The fraction of possible dead ends in the graph.<br><br>"
+                                                "This value is equal to 'Dead ends' divided by twice the node count. "
+                                                "It ranges from 0% (in a graph where all nodes have connected edges "
+                                                "on both ends) to 100% (in a graph without any edges).");
+    ui->connectedComponentsInfoText->setInfoText("The number of separate connected components in the graph. A "
+                                                 "connected component is a subgraph which is connected by edges to "
+                                                 "other nodes in the subgraph but disconnected from the rest of the "
+                                                 "graph.");
+    ui->largestComponentInfoText->setInfoText("The total length of nodes in the largest connected component in the "
+                                              "graph (and the proportion of the total length in this component).");
+    ui->orphanedLengthInfoText->setInfoText("The total length of all nodes which have no edges, i.e. a dead end on "
+                                            "both sides (and the proportion of the total length in orphaned nodes).");
+    ui->n50InfoText->setInfoText("The N50 node length.<br><br>"
+                                 "The sum of lengths for nodes this size and larger is at least 50% of the total "
+                                 "length.");
+    ui->shortestNodeInfoText->setInfoText("The length of the shortest node in the graph.");
+    ui->lowerQuartileNodeInfoText->setInfoText("The first quartile node length in the graph.<br><br>"
+                                               "One quarter of the nodes are shorter than this length and three quarters "
+                                               "are longer.");
+    ui->medianNodeInfoText->setInfoText("The median node length in the graph.<br><br>"
+                                        "Half of the nodes are shorter than this length and half are longer.");
+    ui->upperQuartileNodeInfoText->setInfoText("The third quartile node length in the graph.<br><br>"
+                                               "Three quarters of the nodes are shorter than this length and one quarter "
+                                               "are longer.");
+    ui->longestNodeInfoText->setInfoText("The length of the longest node in the graph.");
+    ui->medianDepthInfoText->setInfoText("The median depth of the graph nodes, by base.<br><br>"
+                                             "For most assemblies (assuming the majority of sequences are not repeats) "
+                                             "this value will indicate the approximate depth of nodes for "
+                                             "sequences that occur once.<br><br>"
+                                             "E.g. if this value is 14.5x, then:<ul>"
+                                             "<li>a node with depth 14.2x probably represents a sequence which "
+                                             "occurs once</li>"
+                                             "<li>a node with depth 29.3x probably represents a sequence which "
+                                             "occurs twice</li>"
+                                             "<li>a node with depth 43.4x probably represents a sequence which "
+                                             "occurs twice</li>"
+                                             "<li>etc.</li></ul>");
+    ui->estimatedSequenceLengthInfoText->setInfoText("An estimate of the underlying sequence length, accounting for "
+                                                     "repeated sequences.<br><br>"
+                                                     "Repeated sequences can result in the graph's total length being "
+                                                     "less than the total length of the underlying sequence. This is "
+                                                     "because a sequence which occurs multiple times may assemble into "
+                                                     "a single node.<br><br>"
+                                                     "To account for this, Bandage estimates sequence length by using "
+                                                     "median depth to assign a copy number count to each node. "
+                                                     "The node lengths are then multipled by this copy number and "
+                                                     "totalled (with any overlap sequences removed).<br><br>"
+                                                     "Note that this value represents an estimate of the number of "
+                                                     "base pairs per cell. So if a bacterial cell contained 20 copies "
+                                                     "of a 10 kb plasmid, then that plasmid would contribute 200 kb to "
+                                                     "this value.");
+}
diff --git a/ui/graphinfodialog.h b/ui/graphinfodialog.h
new file mode 100644
index 0000000..f70fbcf
--- /dev/null
+++ b/ui/graphinfodialog.h
@@ -0,0 +1,25 @@
+#ifndef GRAPHINFODIALOG_H
+#define GRAPHINFODIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class GraphInfoDialog;
+}
+
+class GraphInfoDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit GraphInfoDialog(QWidget *parent = 0);
+    ~GraphInfoDialog();
+
+private:
+    Ui::GraphInfoDialog *ui;
+
+    void setLabels();
+    void setInfoTexts();
+};
+
+#endif // GRAPHINFODIALOG_H
diff --git a/ui/graphinfodialog.ui b/ui/graphinfodialog.ui
new file mode 100644
index 0000000..d418be9
--- /dev/null
+++ b/ui/graphinfodialog.ui
@@ -0,0 +1,1002 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>GraphInfoDialog</class>
+ <widget class="QDialog" name="GraphInfoDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>527</width>
+    <height>468</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Graph information</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item row="0" column="0" colspan="2">
+    <widget class="QWidget" name="widget_3" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label_20">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>File name:</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="filenameLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>filename</string>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QWidget" name="widget" native="true">
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="3" column="2">
+       <widget class="QLabel" name="edgeCountLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" colspan="3">
+       <widget class="QLabel" name="label_13">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>Graph size</string>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="2">
+       <widget class="QLabel" name="totalLengthNoOverlapsLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="1">
+       <widget class="QLabel" name="label_10">
+        <property name="text">
+         <string>Largest component:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2">
+       <widget class="QLabel" name="nodeCountLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Node count:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="0">
+       <widget class="InfoTextWidget" name="connectedComponentsInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="2">
+       <widget class="QLabel" name="percentageDeadEndsLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="15" column="1" colspan="2">
+       <spacer name="verticalSpacer_5">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="5" column="0">
+       <widget class="InfoTextWidget" name="totalLengthInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="10" column="2">
+       <widget class="QLabel" name="deadEndsLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Edge count:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1">
+       <widget class="QLabel" name="label_3">
+        <property name="text">
+         <string>Total length:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="2">
+       <widget class="QLabel" name="largestComponentLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="0">
+       <widget class="InfoTextWidget" name="largestComponentInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="9" column="0" colspan="3">
+       <widget class="Line" name="line_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="10" column="1">
+       <widget class="QLabel" name="label_7">
+        <property name="text">
+         <string>Dead ends:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="1">
+       <widget class="QLabel" name="label_9">
+        <property name="text">
+         <string>Connected components:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="InfoTextWidget" name="edgeCountInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="0">
+       <widget class="InfoTextWidget" name="percentageDeadEndsInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="2">
+       <widget class="QLabel" name="connectedComponentsLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="1">
+       <widget class="QLabel" name="label_30">
+        <property name="text">
+         <string>Total length (no overlaps):</string>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="1" colspan="2">
+       <spacer name="verticalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="10" column="0">
+       <widget class="InfoTextWidget" name="deadEndsInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="0">
+       <widget class="InfoTextWidget" name="totalLengthNoOverlapsInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="2">
+       <widget class="QLabel" name="totalLengthLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="8" column="0" colspan="3">
+       <widget class="QLabel" name="label_14">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>Graph connectivity</string>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="1">
+       <widget class="QLabel" name="label_8">
+        <property name="text">
+         <string>Percentage dead ends:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" colspan="3">
+       <widget class="Line" name="line">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <widget class="InfoTextWidget" name="nodeCountInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="2">
+       <widget class="QLabel" name="edgeOverlapRangeLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="InfoTextWidget" name="edgeOverlapRangeInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="QLabel" name="label_4">
+        <property name="text">
+         <string>Edge overlaps:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="14" column="1">
+       <widget class="QLabel" name="label_21">
+        <property name="text">
+         <string>Total length orphaned nodes:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="14" column="2">
+       <widget class="QLabel" name="orphanedLengthLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="14" column="0">
+       <widget class="InfoTextWidget" name="orphanedLengthInfoText" native="true">
+        <property name="enabled">
+         <bool>true</bool>
+        </property>
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QWidget" name="widget_2" native="true">
+     <layout class="QGridLayout" name="gridLayout_3">
+      <item row="6" column="3">
+       <widget class="QLabel" name="upperQuartileNodeLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2">
+       <widget class="QLabel" name="label_11">
+        <property name="text">
+         <string>N50:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="8" column="2" colspan="2">
+       <spacer name="verticalSpacer_3">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="11" column="3">
+       <widget class="QLabel" name="medianDepthLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="2">
+       <widget class="QLabel" name="label_18">
+        <property name="text">
+         <string>Upper quartile node:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="3">
+       <widget class="QLabel" name="medianNodeLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="2">
+       <widget class="QLabel" name="label_16">
+        <property name="text">
+         <string>Lower quartile node:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="3">
+       <widget class="QLabel" name="n50Label">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="13" column="2">
+       <spacer name="verticalSpacer_6">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>40</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="2" column="1">
+       <widget class="InfoTextWidget" name="n50InfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="InfoTextWidget" name="shortestNodeInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="InfoTextWidget" name="lowerQuartileNodeInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1">
+       <widget class="InfoTextWidget" name="medianNodeInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="1">
+       <widget class="InfoTextWidget" name="upperQuartileNodeInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="1">
+       <widget class="InfoTextWidget" name="longestNodeInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="10" column="1" colspan="3">
+       <widget class="Line" name="line_4">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="1">
+       <widget class="InfoTextWidget" name="medianDepthInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="1">
+       <widget class="InfoTextWidget" name="estimatedSequenceLengthInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" colspan="3">
+       <widget class="Line" name="line_3">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="9" column="1" colspan="2">
+       <widget class="QLabel" name="label_32">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>Depth</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" colspan="2">
+       <widget class="QLabel" name="label_15">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>Node sizes</string>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="3">
+       <widget class="QLabel" name="estimatedSequenceLengthLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="12" column="2">
+       <widget class="QLabel" name="label_34">
+        <property name="text">
+         <string>Estimated sequence length:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="3">
+       <widget class="QLabel" name="lowerQuartileNodeLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="3">
+       <widget class="QLabel" name="longestNodeLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="2">
+       <widget class="QLabel" name="label_17">
+        <property name="text">
+         <string>Median node:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="3">
+       <widget class="QLabel" name="shortestNodeLabel">
+        <property name="text">
+         <string>0</string>
+        </property>
+        <property name="textInteractionFlags">
+         <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="2">
+       <widget class="QLabel" name="label_19">
+        <property name="text">
+         <string>Longest node:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="11" column="2">
+       <widget class="QLabel" name="label_33">
+        <property name="text">
+         <string>Median depth:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="2">
+       <widget class="QLabel" name="label_12">
+        <property name="text">
+         <string>Shortest node:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="9" column="0">
+       <spacer name="horizontalSpacer_5">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>30</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>GraphInfoDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>GraphInfoDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/infotextwidget.cpp b/ui/infotextwidget.cpp
new file mode 100644
index 0000000..b497471
--- /dev/null
+++ b/ui/infotextwidget.cpp
@@ -0,0 +1,76 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Grovolve.
+
+//Grovolve 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 3 of the License, or
+//(at your option) any later version.
+
+//Grovolve 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 Grovolve.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "infotextwidget.h"
+#include <QPainter>
+#include <QToolTip>
+#include <QMouseEvent>
+
+
+InfoTextWidget::InfoTextWidget(QWidget * parent) :
+    QWidget(parent)
+{
+    setFixedSize(16, 16);
+    setMouseTracking(true);
+}
+
+InfoTextWidget::InfoTextWidget(QWidget * parent, QString infoText) :
+    QWidget(parent)
+{
+    setFixedSize(16, 16);
+    setMouseTracking(true);
+    setInfoText(infoText);
+}
+
+void InfoTextWidget::setInfoText(QString infoText)
+{
+    //Convert text to a rich text format, which will let QToolTip wrap the text.
+    m_infoText = "<html>" + infoText + "</html>";
+}
+
+
+void InfoTextWidget::paintEvent(QPaintEvent * /*event*/)
+{
+    QPainter painter(this);
+
+    QPixmap infoIcon;
+    if (isEnabled())
+        infoIcon = QPixmap(":/icons/information-256.png");
+    else
+        infoIcon = QPixmap(":/icons/information-256-inactive.png");
+
+    //This scaling using the device pixel ratio was necessary to make the labels look right on a MacBook retina display.
+    double scaledWidth = width() * devicePixelRatio();
+    double scaledHeight = height() * devicePixelRatio();
+    double scaledSize = std::min(scaledWidth, scaledHeight);
+
+    QPixmap scaledInfoIcon = infoIcon.scaled(scaledSize, scaledSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+
+    scaledInfoIcon.setDevicePixelRatio(devicePixelRatio());
+
+    double topLeftX = scaledWidth / 2.0 - scaledSize / 2.0;
+    double topLeftY = scaledHeight / 2.0 - scaledSize / 2.0;
+
+    painter.drawPixmap(topLeftX, topLeftY, scaledInfoIcon);
+}
+
+
+void InfoTextWidget::mousePressEvent(QMouseEvent * event)
+{
+    QToolTip::showText(event->globalPos(), m_infoText);
+}
diff --git a/ui/infotextwidget.h b/ui/infotextwidget.h
new file mode 100644
index 0000000..ad44884
--- /dev/null
+++ b/ui/infotextwidget.h
@@ -0,0 +1,42 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef INFOTEXTWIDGET_H
+#define INFOTEXTWIDGET_H
+
+#include <QWidget>
+#include <QString>
+
+class InfoTextWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit InfoTextWidget(QWidget * parent);
+    explicit InfoTextWidget(QWidget * parent, QString infoText);
+
+    void setInfoText(QString infoText);
+
+protected:
+    void paintEvent(QPaintEvent *);
+    void mousePressEvent(QMouseEvent * event);
+    
+private:
+    QString m_infoText;
+};
+
+#endif // INFOTEXTWIDGET_H
diff --git a/ui/mainwindow.cpp b/ui/mainwindow.cpp
new file mode 100644
index 0000000..28a603b
--- /dev/null
+++ b/ui/mainwindow.cpp
@@ -0,0 +1,2502 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+#include <QFileDialog>
+#include <QLatin1String>
+#include <QTextStream>
+#include <QLocale>
+#include <QRegExp>
+#include "../ogdf/energybased/FMMMLayout.h"
+#include <math.h>
+#include "../program/settings.h"
+#include <QClipboard>
+#include <QTransform>
+#include <QFontDialog>
+#include <QColorDialog>
+#include <algorithm>
+#include <QFile>
+#include <QTextStream>
+#include <QScrollBar>
+#include "settingsdialog.h"
+#include <stdlib.h>
+#include <time.h>
+#include <QProgressDialog>
+#include <QThread>
+#include "../program/graphlayoutworker.h"
+#include <QRegExp>
+#include <QMessageBox>
+#include <QInputDialog>
+#include <QShortcut>
+#include "aboutdialog.h"
+#include <QMainWindow>
+#include "blastsearchdialog.h"
+#include "../graph/assemblygraph.h"
+#include "mygraphicsview.h"
+#include "graphicsviewzoom.h"
+#include "mygraphicsscene.h"
+#include "../blast/blastsearch.h"
+#include "../graph/debruijnnode.h"
+#include "../graph/debruijnedge.h"
+#include "../graph/graphicsitemnode.h"
+#include "../graph/graphicsitemedge.h"
+#include "myprogressdialog.h"
+#include <limits>
+#include <QDesktopServices>
+#include <QSvgGenerator>
+#include "../graph/path.h"
+#include "pathspecifydialog.h"
+#include "../program/memory.h"
+#include "changenodenamedialog.h"
+#include "changenodedepthdialog.h"
+#include <limits>
+#include "graphinfodialog.h"
+
+MainWindow::MainWindow(QString fileToLoadOnStartup, bool drawGraphAfterLoad) :
+    QMainWindow(0),
+    ui(new Ui::MainWindow), m_layoutThread(0), m_imageFilter("PNG (*.png)"),
+    m_fileToLoadOnStartup(fileToLoadOnStartup), m_drawGraphAfterLoad(drawGraphAfterLoad),
+    m_uiState(NO_GRAPH_LOADED), m_blastSearchDialog(0), m_alreadyShown(false)
+{
+    ui->setupUi(this);
+
+    QApplication::setWindowIcon(QIcon(QPixmap(":/icons/icon.png")));
+    ui->graphicsViewWidget->layout()->addWidget(g_graphicsView);
+
+    srand(time(NULL));
+
+    //Make a temp directory to hold the BLAST files.
+    //Since Bandage is running in GUI mode, we make it in the system's
+    //temp area - out of the way for the user.
+    g_blastSearch->m_tempDirectory = QDir::tempPath() + "/bandage_temp-" + QString::number(QApplication::applicationPid()) + "/";
+    if (!QDir().mkdir(g_blastSearch->m_tempDirectory))
+    {
+        QMessageBox::warning(this, "Error", "A temporary directory could not be created.  BLAST search functionality will not be available");
+        return;
+    }
+    else
+        g_blastSearch->m_blastQueries.createTempQueryFiles();
+
+    m_previousZoomSpinBoxValue = ui->zoomSpinBox->value();
+    ui->zoomSpinBox->setMinimum(g_settings->minZoom * 100.0);
+    ui->zoomSpinBox->setMaximum(g_settings->maxZoom * 100.0);
+
+    //The normal height of the QPlainTextEdit objects is a bit much,
+    //so fix them at a smaller height.
+    ui->selectedNodesTextEdit->setFixedHeight(ui->selectedNodesTextEdit->sizeHint().height() / 2.5);
+    ui->selectedEdgesTextEdit->setFixedHeight(ui->selectedEdgesTextEdit->sizeHint().height() / 2.5);
+
+    setUiState(NO_GRAPH_LOADED);
+
+    m_graphicsViewZoom = new GraphicsViewZoom(g_graphicsView);
+    g_graphicsView->m_zoom = m_graphicsViewZoom;
+
+    m_scene = new MyGraphicsScene(this);
+    g_graphicsView->setScene(m_scene);
+
+    setInfoTexts();
+
+    //Nothing is selected yet, so this will hide the appropriate labels.
+    selectionChanged();
+
+    //The user may have specified settings on the command line, so it is now
+    //necessary to update the UI to match these settings.
+    setWidgetsFromSettings();
+    setTextDisplaySettings();
+
+    graphScopeChanged();
+    switchColourScheme();
+
+    //If this is a Mac, change the 'Delete' shortcuts to 'Backspace' instead.
+#ifdef Q_OS_MAC
+    ui->actionHide_selected_nodes->setShortcut(Qt::Key_Backspace);
+    ui->actionRemove_selection_from_graph->setShortcut(Qt::SHIFT + Qt::Key_Backspace);
+#endif
+
+    connect(ui->drawGraphButton, SIGNAL(clicked()), this, SLOT(drawGraph()));
+    connect(ui->actionLoad_graph, SIGNAL(triggered()), this, SLOT(loadGraph()));
+    connect(ui->actionLoad_CSV, SIGNAL(triggered(bool)), this, SLOT(loadCSV()));
+    connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(close()));
+    connect(ui->graphScopeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(graphScopeChanged()));
+    connect(ui->zoomSpinBox, SIGNAL(valueChanged(double)), this, SLOT(zoomSpinBoxChanged()));
+    connect(m_graphicsViewZoom, SIGNAL(zoomed()), this, SLOT(zoomedWithMouseWheel()));
+    connect(ui->actionCopy_selected_node_sequences_to_clipboard, SIGNAL(triggered()), this, SLOT(copySelectedSequencesToClipboardActionTriggered()));
+    connect(ui->actionSave_selected_node_sequences_to_FASTA, SIGNAL(triggered()), this, SLOT(saveSelectedSequencesToFileActionTriggered()));
+    connect(ui->actionCopy_selected_node_path_to_clipboard, SIGNAL(triggered(bool)), this, SLOT(copySelectedPathToClipboard()));
+    connect(ui->actionSave_selected_node_path_to_FASTA, SIGNAL(triggered(bool)), this, SLOT(saveSelectedPathToFile()));
+    connect(ui->coloursComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(switchColourScheme()));
+    connect(ui->actionSave_image_current_view, SIGNAL(triggered()), this, SLOT(saveImageCurrentView()));
+    connect(ui->actionSave_image_entire_scene, SIGNAL(triggered()), this, SLOT(saveImageEntireScene()));
+    connect(ui->nodeCustomLabelsCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->nodeNamesCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->nodeLengthsCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->nodeDepthCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->csvCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->csvComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->blastHitsCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->textOutlineCheckBox, SIGNAL(toggled(bool)), this, SLOT(setTextDisplaySettings()));
+    connect(ui->fontButton, SIGNAL(clicked()), this, SLOT(fontButtonPressed()));
+    connect(ui->setNodeCustomColourButton, SIGNAL(clicked()), this, SLOT(setNodeCustomColour()));
+    connect(ui->setNodeCustomLabelButton, SIGNAL(clicked()), this, SLOT(setNodeCustomLabel()));
+    connect(ui->actionSettings, SIGNAL(triggered()), this, SLOT(openSettingsDialog()));
+    connect(ui->selectNodesButton, SIGNAL(clicked()), this, SLOT(selectUserSpecifiedNodes()));
+    connect(ui->selectionSearchNodesLineEdit, SIGNAL(returnPressed()), this, SLOT(selectUserSpecifiedNodes()));
+    connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(openAboutDialog()));
+    connect(ui->blastSearchButton, SIGNAL(clicked()), this, SLOT(openBlastSearchDialog()));
+    connect(ui->blastQueryComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(blastQueryChanged()));
+    connect(ui->actionControls_panel, SIGNAL(toggled(bool)), this, SLOT(showHidePanels()));
+    connect(ui->actionSelection_panel, SIGNAL(toggled(bool)), this, SLOT(showHidePanels()));
+    connect(ui->contiguityButton, SIGNAL(clicked()), this, SLOT(determineContiguityFromSelectedNode()));
+    connect(ui->actionBring_selected_nodes_to_front, SIGNAL(triggered()), this, SLOT(bringSelectedNodesToFront()));
+    connect(ui->actionSelect_nodes_with_BLAST_hits, SIGNAL(triggered()), this, SLOT(selectNodesWithBlastHits()));
+    connect(ui->actionSelect_all, SIGNAL(triggered()), this, SLOT(selectAll()));
+    connect(ui->actionSelect_none, SIGNAL(triggered()), this, SLOT(selectNone()));
+    connect(ui->actionInvert_selection, SIGNAL(triggered()), this, SLOT(invertSelection()));
+    connect(ui->actionZoom_to_selection, SIGNAL(triggered()), this, SLOT(zoomToSelection()));
+    connect(ui->actionSelect_contiguous_nodes, SIGNAL(triggered()), this, SLOT(selectContiguous()));
+    connect(ui->actionSelect_possibly_contiguous_nodes, SIGNAL(triggered()), this, SLOT(selectMaybeContiguous()));
+    connect(ui->actionSelect_not_contiguous_nodes, SIGNAL(triggered()), this, SLOT(selectNotContiguous()));
+    connect(ui->actionBandage_online_help, SIGNAL(triggered()), this, SLOT(openBandageUrl()));
+    connect(ui->nodeDistanceSpinBox, SIGNAL(valueChanged(int)), this, SLOT(nodeDistanceChanged()));
+    connect(ui->minDepthSpinBox, SIGNAL(valueChanged(double)), this, SLOT(depthRangeChanged()));
+    connect(ui->maxDepthSpinBox, SIGNAL(valueChanged(double)), this, SLOT(depthRangeChanged()));
+    connect(ui->startingNodesExactMatchRadioButton, SIGNAL(toggled(bool)), this, SLOT(startingNodesExactMatchChanged()));
+    connect(ui->actionSpecify_exact_path_for_copy_save, SIGNAL(triggered()), this, SLOT(openPathSpecifyDialog()));
+    connect(ui->nodeWidthSpinBox, SIGNAL(valueChanged(double)), this, SLOT(nodeWidthChanged()));
+    connect(g_graphicsView, SIGNAL(copySelectedSequencesToClipboard()), this, SLOT(copySelectedSequencesToClipboard()));
+    connect(g_graphicsView, SIGNAL(saveSelectedSequencesToFile()), this, SLOT(saveSelectedSequencesToFile()));
+    connect(ui->actionSave_entire_graph_to_FASTA, SIGNAL(triggered(bool)), this, SLOT(saveEntireGraphToFasta()));
+    connect(ui->actionSave_entire_graph_to_FASTA_only_positive_nodes, SIGNAL(triggered(bool)), this, SLOT(saveEntireGraphToFastaOnlyPositiveNodes()));
+    connect(ui->actionSave_entire_graph_to_GFA, SIGNAL(triggered(bool)), this, SLOT(saveEntireGraphToGfa()));
+    connect(ui->actionSave_visible_graph_to_GFA, SIGNAL(triggered(bool)), this, SLOT(saveVisibleGraphToGfa()));
+    connect(ui->actionWeb_BLAST_selected_nodes, SIGNAL(triggered(bool)), this, SLOT(webBlastSelectedNodes()));
+    connect(ui->actionHide_selected_nodes, SIGNAL(triggered(bool)), this, SLOT(hideNodes()));
+    connect(ui->actionRemove_selection_from_graph, SIGNAL(triggered(bool)), this, SLOT(removeSelection()));
+    connect(ui->actionDuplicate_selected_nodes, SIGNAL(triggered(bool)), this, SLOT(duplicateSelectedNodes()));
+    connect(ui->actionMerge_selected_nodes, SIGNAL(triggered(bool)), this, SLOT(mergeSelectedNodes()));
+    connect(ui->actionMerge_all_possible_nodes, SIGNAL(triggered(bool)), this, SLOT(mergeAllPossible()));
+    connect(ui->actionChange_node_name, SIGNAL(triggered(bool)), this, SLOT(changeNodeName()));
+    connect(ui->actionChange_node_depth, SIGNAL(triggered(bool)), this, SLOT(changeNodeDepth()));
+    connect(ui->moreInfoButton, SIGNAL(clicked(bool)), this, SLOT(openGraphInfoDialog()));
+
+    connect(this, SIGNAL(windowLoaded()), this, SLOT(afterMainWindowShow()), Qt::ConnectionType(Qt::QueuedConnection | Qt::UniqueConnection));
+}
+
+
+//This function runs after the MainWindow has been shown.  This code is not
+//included in the contructor because it can perform a BLAST search, which
+//will fill the BLAST query combo box and screw up widget sizes.
+void MainWindow::afterMainWindowShow()
+{
+    if (m_alreadyShown)
+        return;
+
+    //If the user passed a filename as a command line argument, try to open it now.
+    if (m_fileToLoadOnStartup != "")
+        loadGraph(m_fileToLoadOnStartup);
+
+    //If a BLAST query filename is present, do the BLAST search now automatically.
+    if (g_settings->blastQueryFilename != "")
+    {
+        BlastSearchDialog blastSearchDialog(this, g_settings->blastQueryFilename);
+        setupBlastQueryComboBox();
+    }
+
+    //If the draw option was used and the graph appears to have loaded (i.e. there
+    //is at least one node), then draw the graph.
+    if (m_fileToLoadOnStartup != "" && m_drawGraphAfterLoad && g_assemblyGraph->m_deBruijnGraphNodes.size() > 0)
+        drawGraph();
+
+    m_alreadyShown = true;
+}
+
+MainWindow::~MainWindow()
+{
+    cleanUp();
+    delete m_graphicsViewZoom;
+    delete ui;
+
+    if (g_blastSearch->m_tempDirectory != "" &&
+            QDir(g_blastSearch->m_tempDirectory).exists() &&
+            QDir(g_blastSearch->m_tempDirectory).dirName().contains("bandage_temp"))
+        QDir(g_blastSearch->m_tempDirectory).removeRecursively();
+}
+
+
+
+void MainWindow::cleanUp()
+{
+    ui->blastQueryComboBox->clear();
+    ui->blastQueryComboBox->addItem("none");
+
+    g_blastSearch->cleanUp();
+    g_assemblyGraph->cleanUp();
+    setWindowTitle("Bandage");
+
+    g_memory->userSpecifiedPath = Path();
+    g_memory->userSpecifiedPathString = "";
+    g_memory->userSpecifiedPathCircular = false;
+
+    if (m_blastSearchDialog != 0)
+    {
+        delete m_blastSearchDialog;
+        m_blastSearchDialog = 0;
+    }
+
+    ui->csvComboBox->clear();
+    ui->csvComboBox->setEnabled(false);
+    g_settings->displayNodeCsvDataCol = 0;
+}
+
+void MainWindow::loadCSV(QString fullFileName)
+{
+    QString selectedFilter = "Comma separated value (*.csv)";
+    if (fullFileName == "")
+    {
+        fullFileName = QFileDialog::getOpenFileName(this, "Load CSV", g_memory->rememberedPath,
+                                                    "Comma separated value (*.csv)",
+                                                    &selectedFilter);
+    }
+
+    if (fullFileName == "")
+        return; // user clicked on cancel
+
+    QString errormsg;
+    QStringList columns;
+
+    try
+    {
+        MyProgressDialog progress(this, "Loading CSV...", false);
+        progress.setWindowModality(Qt::WindowModal);
+        progress.show();
+
+        bool coloursLoaded = false;
+        bool success = g_assemblyGraph->loadCSV(fullFileName, &columns, &errormsg, &coloursLoaded);
+
+        if (success)
+        {
+            ui->csvCheckBox->setChecked(true);
+            ui->csvComboBox->setEnabled(true);
+            ui->csvComboBox->clear();
+            ui->csvComboBox->addItems(columns);
+            g_settings->displayNodeCsvDataCol = 0;
+            if (coloursLoaded)
+            {
+                if (ui->coloursComboBox->currentIndex() != 6)
+                    ui->coloursComboBox->setCurrentIndex(6);
+                else
+                    switchColourScheme();
+            }
+        }
+    }
+
+    catch (...)
+    {
+        QString errorTitle = "Error loading CSV";
+        QString errorMessage = "There was an error when attempting to load:\n"
+                               + fullFileName + "\n\n"
+                               "Please verify that this file has the correct format.";
+        QMessageBox::warning(this, errorTitle, errorMessage);
+    }
+}
+
+
+void MainWindow::loadGraph(QString fullFileName)
+{
+    QString selectedFilter = "Any supported graph (*)";
+    if (fullFileName == "")
+        fullFileName = QFileDialog::getOpenFileName(this, "Load graph", g_memory->rememberedPath,
+                                                    "Any supported graph (*);;LastGraph (*LastGraph*);;FASTG (*.fastg);;GFA (*.gfa);;Trinity.fasta (*.fasta);;ASQG (*.asqg);;Plain FASTA (*.fasta)",
+                                                    &selectedFilter);
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        GraphFileType detectedFileType = g_assemblyGraph->getGraphFileTypeFromFile(fullFileName);
+
+        GraphFileType selectedFileType = ANY_FILE_TYPE;
+        if (selectedFilter == "LastGraph (*LastGraph*)")
+            selectedFileType = LAST_GRAPH;
+        else if (selectedFilter == "FASTG (*.fastg)")
+            selectedFileType = FASTG;
+        else if (selectedFilter == "GFA (*.gfa)")
+            selectedFileType = GFA;
+        else if (selectedFilter == "Trinity.fasta (*.fasta)")
+            selectedFileType = TRINITY;
+        else if (selectedFilter == "ASQG (*.asqg)")
+            selectedFileType = ASQG;
+        else if (selectedFilter == "Plain FASTA (*.fasta)")
+            selectedFileType = PLAIN_FASTA;
+
+        if (selectedFileType == ANY_FILE_TYPE)
+        {
+            //If the user chose any file type but it can't be determined, show an error and quit.
+            if (detectedFileType == UNKNOWN_FILE_TYPE)
+            {
+                QMessageBox::warning(this, "Graph format not recognised", "Cannot load file. The selected file's format was not recognised as any supported graph type.");
+                return;
+            }
+
+            //If the user chose any file type and it can be determined, then use that type.
+            else
+                selectedFileType = detectedFileType;
+        }
+
+        //If there is a discrepancy between the selected and detected file types, make sure the
+        //user wants to continue.
+        if (selectedFileType != detectedFileType)
+        {
+            QString graphFileTypeString = convertGraphFileTypeToString(selectedFileType);
+            QMessageBox::StandardButton reply;
+            reply = QMessageBox::question(this, graphFileTypeString + " file?",
+                                          "This file does not appear to be a " + graphFileTypeString + " file."
+                                          "\nDo you want to load it as a " + graphFileTypeString + " file anyway?",
+                                          QMessageBox::Yes|QMessageBox::No);
+            if (reply == QMessageBox::No)
+                return;
+        }
+
+        loadGraph2(selectedFileType, fullFileName);
+    }
+}
+
+
+void MainWindow::loadGraph2(GraphFileType graphFileType, QString fullFileName)
+{
+    resetScene();
+    cleanUp();
+    ui->selectionSearchNodesLineEdit->clear();
+
+    bool customColours = false, customLabels = false;
+
+    try
+    {
+        MyProgressDialog progress(this, "Loading " + convertGraphFileTypeToString(graphFileType) + " file...", false);
+        progress.setWindowModality(Qt::WindowModal);
+        progress.show();
+
+        if (graphFileType == LAST_GRAPH)
+            g_assemblyGraph->buildDeBruijnGraphFromLastGraph(fullFileName);
+        else if (graphFileType == FASTG)
+            g_assemblyGraph->buildDeBruijnGraphFromFastg(fullFileName);
+        else if (graphFileType == GFA)
+        {
+            bool unsupportedCigar = false;
+            QString bandageOptionsError;
+            g_assemblyGraph->buildDeBruijnGraphFromGfa(fullFileName, &unsupportedCigar, &customLabels, &customColours,
+                                                       &bandageOptionsError);
+            if (unsupportedCigar)
+                QMessageBox::warning(this, "Unsupported CIGAR", "This GFA file contains "
+                                     "links with complex CIGAR strings (containing "
+                                     "operators other than M).\n\n"
+                                     "Bandage does not support edge overlaps that are not "
+                                     "perfect, so the behaviour of such edges in this graph "
+                                     "is undefined.");
+            if (bandageOptionsError.length() > 0)
+                QMessageBox::warning(this, "Bad Bandage options", "This GFA file contains Bandage options but they "
+                                     "were not used because of this error:\n\n" + bandageOptionsError);
+
+        }
+        else if (graphFileType == TRINITY)
+            g_assemblyGraph->buildDeBruijnGraphFromTrinityFasta(fullFileName);
+        else if (graphFileType == ASQG)
+        {
+            int badEdgeCount = g_assemblyGraph->buildDeBruijnGraphFromAsqg(fullFileName);
+            if (badEdgeCount > 0)
+                QMessageBox::warning(this, "Edges not loaded", "Bandage could not load " +
+                                     QString::number(badEdgeCount) + " edges in this file "
+                                     "because they have an abnormal overlap.\n\nBandage can "
+                                     "only handle edges with an exact overlap at the "
+                                     "start/end of node sequences.");
+        }
+        else if (graphFileType == PLAIN_FASTA)
+            g_assemblyGraph->buildDeBruijnGraphFromPlainFasta(fullFileName);
+
+        setUiState(GRAPH_LOADED);
+        setWindowTitle("Bandage - " + fullFileName);
+
+        g_assemblyGraph->determineGraphInfo();
+        displayGraphDetails();
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+        g_memory->clearGraphSpecificMemory();
+
+        // If the graph has custom colours, automatically switch the colour scheme to custom colours.
+        if (customColours) {
+            if (ui->coloursComboBox->currentIndex() != 6)
+                ui->coloursComboBox->setCurrentIndex(6);
+            else
+                switchColourScheme();
+        }
+
+        // If the graph doesn't have custom colours, but the colour scheme is on 'Custom', automatically switch it back
+        // to the default of 'Random colours'.
+        if (!customColours && ui->coloursComboBox->currentIndex() == 6)
+            ui->coloursComboBox->setCurrentIndex(0);
+    }
+
+    catch (...)
+    {
+        QString errorTitle = "Error loading " + convertGraphFileTypeToString(graphFileType);
+        QString errorMessage = "There was an error when attempting to load:\n"
+                               + fullFileName + "\n\n"
+                               "Please verify that this file has the correct format.";
+        QMessageBox::warning(this, errorTitle, errorMessage);
+        resetScene();
+        cleanUp();
+        clearGraphDetails();
+        setUiState(NO_GRAPH_LOADED);
+    }
+}
+
+
+
+void MainWindow::displayGraphDetails()
+{
+    ui->nodeCountLabel->setText(formatIntForDisplay(g_assemblyGraph->m_nodeCount));
+    ui->edgeCountLabel->setText(formatIntForDisplay(g_assemblyGraph->m_edgeCount));
+    ui->totalLengthLabel->setText(formatIntForDisplay(g_assemblyGraph->m_totalLength));
+}
+void MainWindow::clearGraphDetails()
+{
+    ui->nodeCountLabel->setText("0");
+    ui->edgeCountLabel->setText("0");
+    ui->totalLengthLabel->setText("0");
+}
+
+
+void MainWindow::selectionChanged()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    std::vector<DeBruijnEdge *> selectedEdges = m_scene->getSelectedEdges();
+
+    if (selectedNodes.size() == 0)
+    {
+        ui->selectedNodesTextEdit->setPlainText("");
+        setSelectedNodesWidgetsVisibility(false);
+    }
+
+    else //One or more nodes selected
+    {
+        setSelectedNodesWidgetsVisibility(true);
+
+        int selectedNodeCount;
+        QString selectedNodeCountText;
+        QString selectedNodeListText;
+        QString selectedNodeLengthText;
+        QString selectedNodeDepthText;
+
+        getSelectedNodeInfo(selectedNodeCount, selectedNodeCountText, selectedNodeListText, selectedNodeLengthText, selectedNodeDepthText);
+
+        if (selectedNodeCount == 1)
+        {
+            ui->selectedNodesTitleLabel->setText("Selected node");
+            ui->selectedNodesLengthLabel->setText("Length: " + selectedNodeLengthText);
+            ui->selectedNodesDepthLabel->setText("Depth: " + selectedNodeDepthText);
+        }
+        else
+        {
+            ui->selectedNodesTitleLabel->setText("Selected nodes (" + selectedNodeCountText + ")");
+            ui->selectedNodesLengthLabel->setText("Total length: " + selectedNodeLengthText);
+            ui->selectedNodesDepthLabel->setText("Mean depth: " + selectedNodeDepthText);
+        }
+
+        ui->selectedNodesTextEdit->setPlainText(selectedNodeListText);
+    }
+
+
+    if (selectedEdges.size() == 0)
+    {
+        ui->selectedEdgesTextEdit->setPlainText("");
+        setSelectedEdgesWidgetsVisibility(false);
+    }
+
+    else //One or more edges selected
+    {
+        setSelectedEdgesWidgetsVisibility(true);
+        if (selectedEdges.size() == 1)
+            ui->selectedEdgesTitleLabel->setText("Selected edge");
+        else
+            ui->selectedEdgesTitleLabel->setText("Selected edges (" + formatIntForDisplay(int(selectedEdges.size())) + ")");
+
+        ui->selectedEdgesTextEdit->setPlainText(getSelectedEdgeListText());
+    }
+}
+
+
+void MainWindow::getSelectedNodeInfo(int & selectedNodeCount, QString & selectedNodeCountText, QString & selectedNodeListText, QString & selectedNodeLengthText, QString & selectedNodeDepthText)
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+
+    selectedNodeCount = int(selectedNodes.size());
+    selectedNodeCountText = formatIntForDisplay(selectedNodeCount);
+
+    long long totalLength = 0;
+
+    for (int i = 0; i < selectedNodeCount; ++i)
+    {
+        QString nodeName = selectedNodes[i]->getName();
+
+        //If we are in single mode, don't include +/i in the node name
+        if (!g_settings->doubleMode)
+            nodeName.chop(1);
+
+        selectedNodeListText += nodeName;
+        if (i != int(selectedNodes.size()) - 1)
+            selectedNodeListText += ", ";
+
+        totalLength += selectedNodes[i]->getLength();
+    }
+
+    selectedNodeLengthText = formatIntForDisplay(totalLength) + " bp";
+    selectedNodeDepthText = formatDepthForDisplay(g_assemblyGraph->getMeanDepth(selectedNodes));
+}
+
+
+
+
+QString MainWindow::getSelectedEdgeListText()
+{
+    std::vector<DeBruijnEdge *> selectedEdges = m_scene->getSelectedEdges();
+
+    std::sort(selectedEdges.begin(), selectedEdges.end(), DeBruijnEdge::compareEdgePointers);
+
+    QString edgeText;
+    for (size_t i = 0; i < selectedEdges.size(); ++i)
+    {
+        edgeText += selectedEdges[i]->getStartingNode()->getName();
+        edgeText += " to ";
+        edgeText += selectedEdges[i]->getEndingNode()->getName();
+        if (i != selectedEdges.size() - 1)
+            edgeText += ", ";
+    }
+
+    return edgeText;
+}
+
+
+
+//This function shows/hides UI elements depending on which
+//graph scope is currently selected.  It also reorganises
+//the widgets in the layout to prevent gaps when widgets
+//are hidden.
+void MainWindow::graphScopeChanged()
+{
+    switch (ui->graphScopeComboBox->currentIndex())
+    {
+    case 0:
+        g_settings->graphScope = WHOLE_GRAPH;
+
+        setStartingNodesWidgetVisibility(false);
+        setNodeDistanceWidgetVisibility(false);
+        setDepthRangeWidgetVisibility(false);
+
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleInfoText, 1, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleLabel, 1, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleWidget, 1, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphInfoText, 2, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphButton, 2, 1, 1, 2);
+
+        break;
+
+    case 1:
+        g_settings->graphScope = AROUND_NODE;
+
+        setStartingNodesWidgetVisibility(true);
+        setNodeDistanceWidgetVisibility(true);
+        setDepthRangeWidgetVisibility(false);
+
+        ui->nodeDistanceInfoText->setInfoText("Nodes will be drawn if they are specified in the above list or are "
+                                              "within this many steps of those nodes.<br><br>"
+                                              "A value of 0 will result in only the specified nodes being drawn. "
+                                              "A large value will result in large sections of the graph around "
+                                              "the specified nodes being drawn.");
+
+        ui->graphDrawingGridLayout->addWidget(ui->startingNodesInfoText, 1, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->startingNodesLabel, 1, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->startingNodesLineEdit, 1, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->startingNodesMatchTypeInfoText, 2, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->startingNodesMatchTypeLabel, 2, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->startingNodesMatchTypeWidget, 2, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeDistanceInfoText, 3, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeDistanceLabel, 3, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeDistanceSpinBox, 3, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleInfoText, 4, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleLabel, 4, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleWidget, 4, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphInfoText, 5, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphButton, 5, 1, 1, 2);
+
+        break;
+
+    case 2:
+        g_settings->graphScope = AROUND_BLAST_HITS;
+
+        setStartingNodesWidgetVisibility(false);
+        setNodeDistanceWidgetVisibility(true);
+        setDepthRangeWidgetVisibility(false);
+
+        ui->nodeDistanceInfoText->setInfoText("Nodes will be drawn if they contain a BLAST hit or are within this "
+                                              "many steps of nodes with a BLAST hit.<br><br>"
+                                              "A value of 0 will result in only nodes with BLAST hits being drawn. "
+                                              "A large value will result in large sections of the graph around "
+                                              "nodes with BLAST hits being drawn.");
+
+        ui->graphDrawingGridLayout->addWidget(ui->nodeDistanceInfoText, 1, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeDistanceLabel, 1, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeDistanceSpinBox, 1, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleInfoText, 2, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleLabel, 2, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleWidget, 2, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphInfoText, 3, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphButton, 3, 1, 1, 2);
+
+        break;
+
+    case 3:
+        g_settings->graphScope = DEPTH_RANGE;
+
+        setStartingNodesWidgetVisibility(false);
+        setNodeDistanceWidgetVisibility(false);
+        setDepthRangeWidgetVisibility(true);
+
+        ui->graphDrawingGridLayout->addWidget(ui->minDepthInfoText, 1, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->minDepthLabel, 1, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->minDepthSpinBox, 1, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->maxDepthInfoText, 2, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->maxDepthLabel, 2, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->maxDepthSpinBox, 2, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleInfoText, 3, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleLabel, 3, 1, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->nodeStyleWidget, 3, 2, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphInfoText, 4, 0, 1, 1);
+        ui->graphDrawingGridLayout->addWidget(ui->drawGraphButton, 4, 1, 1, 2);
+
+        break;
+    }
+}
+
+
+void MainWindow::setStartingNodesWidgetVisibility(bool visible)
+{
+    ui->startingNodesInfoText->setVisible(visible);
+    ui->startingNodesLabel->setVisible(visible);
+    ui->startingNodesLineEdit->setVisible(visible);
+    ui->startingNodesMatchTypeInfoText->setVisible(visible);
+    ui->startingNodesMatchTypeLabel->setVisible(visible);
+    ui->startingNodesExactMatchRadioButton->setVisible(visible);
+    ui->startingNodesPartialMatchRadioButton->setVisible(visible);
+}
+void MainWindow::setNodeDistanceWidgetVisibility(bool visible)
+{
+    ui->nodeDistanceInfoText->setVisible(visible);
+    ui->nodeDistanceLabel->setVisible(visible);
+    ui->nodeDistanceSpinBox->setVisible(visible);
+}
+void MainWindow::setDepthRangeWidgetVisibility(bool visible)
+{
+    ui->minDepthInfoText->setVisible(visible);
+    ui->minDepthLabel->setVisible(visible);
+    ui->minDepthSpinBox->setVisible(visible);
+    ui->maxDepthInfoText->setVisible(visible);
+    ui->maxDepthLabel->setVisible(visible);
+    ui->maxDepthSpinBox->setVisible(visible);
+}
+
+
+void MainWindow::drawGraph()
+{
+    QString errorTitle;
+    QString errorMessage;
+    std::vector<DeBruijnNode *> startingNodes = g_assemblyGraph->getStartingNodes(&errorTitle, &errorMessage,
+                                                                                  ui->doubleNodesRadioButton->isChecked(),
+                                                                                  ui->startingNodesLineEdit->text(),
+                                                                                  ui->blastQueryComboBox->currentText());
+
+    if (errorMessage != "")
+    {
+        QMessageBox::information(this, errorTitle, errorMessage);
+        return;
+    }
+
+    resetScene();
+    g_assemblyGraph->buildOgdfGraphFromNodesAndEdges(startingNodes, g_settings->nodeDistance);
+    layoutGraph();
+}
+
+
+void MainWindow::graphLayoutFinished()
+{
+    delete m_fmmm;
+    m_layoutThread = 0;
+    g_assemblyGraph->addGraphicsItemsToScene(m_scene);
+    m_scene->setSceneRectangle();
+    zoomToFitScene();
+    selectionChanged();
+
+    setUiState(GRAPH_DRAWN);
+
+    //Move the focus to the view so the user can use keyboard controls to navigate.
+    g_graphicsView->setFocus();
+}
+
+
+void MainWindow::graphLayoutCancelled()
+{
+    m_fmmm->fixedIterations(0);
+    m_fmmm->fineTuningIterations(0);
+    m_fmmm->threshold(std::numeric_limits<double>::max());
+}
+
+
+void MainWindow::resetScene()
+{
+    m_scene->blockSignals(true);
+
+    g_assemblyGraph->resetEdges();
+    g_assemblyGraph->m_contiguitySearchDone = false;
+
+    g_graphicsView->setScene(0);
+    delete m_scene;
+    m_scene = new MyGraphicsScene(this);
+
+    g_graphicsView->setScene(m_scene);
+    connect(m_scene, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
+    selectionChanged();
+
+    g_graphicsView->undoRotation();
+}
+
+
+std::vector<DeBruijnNode *> MainWindow::getNodesFromLineEdit(QLineEdit * lineEdit, bool exactMatch, std::vector<QString> * nodesNotInGraph)
+{
+    return g_assemblyGraph->getNodesFromString(lineEdit->text(), exactMatch, nodesNotInGraph);
+}
+
+
+
+
+void MainWindow::layoutGraph()
+{
+    //The actual layout is done in a different thread so the UI will stay responsive.
+    MyProgressDialog * progress = new MyProgressDialog(this, "Laying out graph...", true, "Cancel layout", "Cancelling layout...",
+                                                       "Clicking this button will halt the graph layout and display "
+                                                       "the graph in its current, incomplete state.<br><br>"
+                                                       "Layout can take a long time for very large graphs.  There are "
+                                                       "three strategies to reduce the amount of time required:<ul>"
+                                                       "<li>Change the scope of the graph from 'Entire graph' to either "
+                                                       "'Around nodes' or 'Around BLAST hits'.  This will reduce the "
+                                                       "number of nodes that are drawn to the screen.</li>"
+                                                       "<li>Increase the 'Base pairs per segment' setting.  This will "
+                                                       "result in shorter contigs which take less time to lay out.</li>"
+                                                       "<li>Reduce the 'Graph layout iterations' setting.</li></ul>");
+    progress->setWindowModality(Qt::WindowModal);
+    progress->show();
+
+    m_fmmm = new ogdf::FMMMLayout();
+
+    m_layoutThread = new QThread;
+    double aspectRatio = double(g_graphicsView->width()) / g_graphicsView->height();
+    GraphLayoutWorker * graphLayoutWorker = new GraphLayoutWorker(m_fmmm, g_assemblyGraph->m_graphAttributes,
+                                                                  g_assemblyGraph->m_edgeArray,
+                                                                  g_settings->graphLayoutQuality,
+                                                                  g_assemblyGraph->useLinearLayout(),
+                                                                  g_settings->componentSeparation, aspectRatio);
+    graphLayoutWorker->moveToThread(m_layoutThread);
+
+    connect(progress, SIGNAL(halt()), this, SLOT(graphLayoutCancelled()));
+    connect(m_layoutThread, SIGNAL(started()), graphLayoutWorker, SLOT(layoutGraph()));
+    connect(graphLayoutWorker, SIGNAL(finishedLayout()), m_layoutThread, SLOT(quit()));
+    connect(graphLayoutWorker, SIGNAL(finishedLayout()), graphLayoutWorker, SLOT(deleteLater()));
+    connect(graphLayoutWorker, SIGNAL(finishedLayout()), this, SLOT(graphLayoutFinished()));
+    connect(m_layoutThread, SIGNAL(finished()), m_layoutThread, SLOT(deleteLater()));
+    connect(m_layoutThread, SIGNAL(finished()), progress, SLOT(deleteLater()));
+    m_layoutThread->start();
+}
+
+
+
+
+void MainWindow::zoomSpinBoxChanged()
+{
+    double newValue = ui->zoomSpinBox->value();
+    double zoomFactor = newValue / m_previousZoomSpinBoxValue;
+    setZoomSpinBoxStep();
+
+    m_graphicsViewZoom->gentleZoom(zoomFactor, SPIN_BOX);
+
+    m_previousZoomSpinBoxValue = newValue;
+}
+
+void MainWindow::setZoomSpinBoxStep()
+{
+    double newSingleStep = ui->zoomSpinBox->value() * (g_settings->zoomFactor - 1.0) * 100.0;
+
+    //Round up to nearest 0.1
+    newSingleStep = int((newSingleStep + 0.1) * 10.0) / 10.0;
+
+    ui->zoomSpinBox->setSingleStep(newSingleStep);
+}
+
+
+void MainWindow::zoomedWithMouseWheel()
+{
+    ui->zoomSpinBox->blockSignals(true);
+    double newSpinBoxValue = g_absoluteZoom * 100.0;
+    ui->zoomSpinBox->setValue(newSpinBoxValue);
+    setZoomSpinBoxStep();
+    m_previousZoomSpinBoxValue = newSpinBoxValue;
+    ui->zoomSpinBox->blockSignals(false);
+}
+
+
+
+void MainWindow::zoomToFitScene()
+{
+    zoomToFitRect(m_scene->sceneRect());
+}
+
+
+void MainWindow::zoomToFitRect(QRectF rect)
+{
+    double startingZoom = g_graphicsView->transform().m11();
+    g_graphicsView->fitInView(rect, Qt::KeepAspectRatio);
+    double endingZoom = g_graphicsView->transform().m11();
+    double zoomFactor = endingZoom / startingZoom;
+    g_absoluteZoom *= zoomFactor;
+    double newSpinBoxValue = ui->zoomSpinBox->value() * zoomFactor;
+
+    double minZoom = std::max(g_settings->minZoom, g_settings->minZoomOnGraphDraw);
+
+    //Limit the zoom to the minimum and maximum
+    if (g_absoluteZoom < minZoom)
+    {
+        double newZoomFactor = minZoom / g_absoluteZoom;
+        m_graphicsViewZoom->gentleZoom(newZoomFactor, SPIN_BOX);
+        g_absoluteZoom *= newZoomFactor;
+        g_absoluteZoom = minZoom;
+        newSpinBoxValue = minZoom * 100.0;
+    }
+    if (g_absoluteZoom > g_settings->maxAutomaticZoom)
+    {
+        double newZoomFactor = g_settings->maxAutomaticZoom / g_absoluteZoom;
+        m_graphicsViewZoom->gentleZoom(newZoomFactor, SPIN_BOX);
+        g_absoluteZoom *= newZoomFactor;
+        g_absoluteZoom = g_settings->maxAutomaticZoom;
+        newSpinBoxValue = g_settings->maxAutomaticZoom * 100.0;
+    }
+
+    ui->zoomSpinBox->blockSignals(true);
+    ui->zoomSpinBox->setValue(newSpinBoxValue);
+    m_previousZoomSpinBoxValue = newSpinBoxValue;
+    ui->zoomSpinBox->blockSignals(false);
+}
+
+
+
+//This function copies selected sequences to clipboard, if any sequences are
+//selected.  If there aren't, then it will prompt the user.
+void MainWindow::copySelectedSequencesToClipboardActionTriggered()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        QMessageBox::information(this, "Copy sequences to clipboard", "No nodes are selected.\n\n"
+                                                                      "You must first select nodes in the graph before you can copy their sequences to the clipboard.");
+    else
+        copySelectedSequencesToClipboard();
+}
+
+
+//This function copies selected sequences to clipboard, if any sequences are
+//selected.
+void MainWindow::copySelectedSequencesToClipboard()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        return;
+
+    QClipboard * clipboard = QApplication::clipboard();
+    QString clipboardText;
+
+    for (size_t i = 0; i < selectedNodes.size(); ++i)
+    {
+        clipboardText += selectedNodes[i]->getSequence();
+        if (i != selectedNodes.size() - 1)
+            clipboardText += "\n";
+    }
+
+    clipboard->setText(clipboardText);
+}
+
+
+//This function saves selected sequences to file, with a save file prompt, if
+//any sequences are selected.  If there aren't, then it will prompt the user.
+void MainWindow::saveSelectedSequencesToFileActionTriggered()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        QMessageBox::information(this, "Save sequences to FASTA", "No nodes are selected.\n\n"
+                                                                  "You must first select nodes in the graph before you can save their sequences to a FASTA file.");
+    else
+        saveSelectedSequencesToFile();
+}
+
+
+//This function saves selected sequences to file, with a save file prompt, if
+//any sequences are selected.
+void MainWindow::saveSelectedSequencesToFile()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        return;
+
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/selected_sequences.fasta";
+
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save node sequences", defaultFileNameAndPath, "FASTA (*.fasta)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        QFile file(fullFileName);
+        file.open(QIODevice::WriteOnly | QIODevice::Text);
+        QTextStream out(&file);
+
+        for (size_t i = 0; i < selectedNodes.size(); ++i)
+            out << selectedNodes[i]->getFasta(true);
+
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+    }
+}
+
+void MainWindow::copySelectedPathToClipboard()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+    {
+        QMessageBox::information(this, "Copy path sequence to clipboard", "No nodes are selected.\n\n"
+                                                                          "You must first select nodes in the graph which define a unambiguous "
+                                                                          "path before you can copy their path sequence to the clipboard.");
+        return;
+    }
+
+    Path nodePath = Path::makeFromUnorderedNodes(selectedNodes, g_settings->doubleMode);
+    if (nodePath.isEmpty())
+    {
+        QMessageBox::information(this, "Copy path sequence to clipboard", "Invalid path.\n\n"
+                                                                          "To use copy a path sequence to the clipboard, the nodes must follow "
+                                                                          "an unambiguous path through the graph.\n\n"
+                                                                          "Complex paths can be defined using the '" + ui->actionSpecify_exact_path_for_copy_save->text() +
+                                                                          "' tool.");
+        return;
+    }
+
+    QClipboard * clipboard = QApplication::clipboard();
+    clipboard->setText(nodePath.getPathSequence());
+}
+
+
+
+void MainWindow::saveSelectedPathToFile()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+    {
+        QMessageBox::information(this, "Save path sequence to FASTA", "No nodes are selected.\n\n"
+                                                                      "You must first select nodes in the graph which define a unambiguous "
+                                                                      "path before you can save their path sequence to a FASTA file.");
+        return;
+    }
+    Path nodePath = Path::makeFromUnorderedNodes(selectedNodes, g_settings->doubleMode);
+    if (nodePath.isEmpty())
+    {
+        QMessageBox::information(this, "Save path sequence to FASTA", "Invalid path.\n\n"
+                                                                      "To use copy a path sequence to the clipboard, the nodes must follow "
+                                                                      "an unambiguous path through the graph.\n\n"
+                                                                      "Complex paths can be defined using the '" + ui->actionSpecify_exact_path_for_copy_save->text() +
+                                                                      "' tool.");
+        return;
+    }
+
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/path_sequence.fasta";
+
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save path sequence", defaultFileNameAndPath, "FASTA (*.fasta)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        QFile file(fullFileName);
+        file.open(QIODevice::WriteOnly | QIODevice::Text);
+        QTextStream out(&file);
+        out << nodePath.getFasta();
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+    }
+}
+
+
+
+
+void MainWindow::switchColourScheme()
+{
+    switch (ui->coloursComboBox->currentIndex())
+    {
+    case 0:
+        g_settings->nodeColourScheme = RANDOM_COLOURS;
+        ui->contiguityButton->setVisible(false);
+        ui->contiguityInfoText->setVisible(false);
+        break;
+    case 1:
+        g_settings->nodeColourScheme = UNIFORM_COLOURS;
+        ui->contiguityButton->setVisible(false);
+        ui->contiguityInfoText->setVisible(false);
+        break;
+    case 2:
+        g_settings->nodeColourScheme = DEPTH_COLOUR;
+        ui->contiguityButton->setVisible(false);
+        ui->contiguityInfoText->setVisible(false);
+        break;
+    case 3:
+        g_settings->nodeColourScheme = BLAST_HITS_SOLID_COLOUR;
+        ui->contiguityButton->setVisible(false);
+        ui->contiguityInfoText->setVisible(false);
+        break;
+    case 4:
+        g_settings->nodeColourScheme = BLAST_HITS_RAINBOW_COLOUR;
+        ui->contiguityButton->setVisible(false);
+        ui->contiguityInfoText->setVisible(false);
+        break;
+    case 5:
+        g_settings->nodeColourScheme = CONTIGUITY_COLOUR;
+        ui->contiguityButton->setVisible(true);
+        ui->contiguityInfoText->setVisible(true);
+        break;
+    case 6:
+        g_settings->nodeColourScheme = CUSTOM_COLOURS;
+        ui->contiguityButton->setVisible(false);
+        ui->contiguityInfoText->setVisible(false);
+        break;
+    }
+
+    g_assemblyGraph->resetAllNodeColours();
+    g_graphicsView->viewport()->update();
+}
+
+
+
+void MainWindow::determineContiguityFromSelectedNode()
+{
+    g_assemblyGraph->resetNodeContiguityStatus();
+
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() > 0)
+    {
+        MyProgressDialog progress(this, "Determining contiguity...", false);
+        progress.setWindowModality(Qt::WindowModal);
+        progress.show();
+
+        for (size_t i = 0; i < selectedNodes.size(); ++i)
+            (selectedNodes[i])->determineContiguity();
+
+        g_assemblyGraph->m_contiguitySearchDone = true;
+        g_assemblyGraph->resetAllNodeColours();
+        g_graphicsView->viewport()->update();
+    }
+    else
+        QMessageBox::information(this, "No nodes selected", "Please select one or more nodes for which "
+                                                            "contiguity is to be determined.");
+}
+
+
+QString MainWindow::getDefaultImageFileName()
+{
+    QString fileNameAndPath = g_memory->rememberedPath + "/graph";
+
+    if (m_imageFilter == "PNG (*.png)")
+        fileNameAndPath += ".png";
+    else if (m_imageFilter == "JPEG (*.jpg)")
+        fileNameAndPath += ".jpg";
+    else if (m_imageFilter == "SVG (*.svg)")
+        fileNameAndPath += ".svg";
+    else
+        fileNameAndPath += ".png";
+
+    return fileNameAndPath;
+}
+
+
+void MainWindow::saveImageCurrentView()
+{
+    if (!checkForImageSave())
+        return;
+
+    QString defaultFileNameAndPath = getDefaultImageFileName();
+
+    QString selectedFilter = m_imageFilter;
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save graph image (current view)",
+                                                        defaultFileNameAndPath,
+                                                        "PNG (*.png);;JPEG (*.jpg);;SVG (*.svg)",
+                                                        &selectedFilter);
+
+    bool pixelImage = true;
+    if (selectedFilter == "PNG (*.png)" || selectedFilter == "JPEG (*.jpg)")
+        pixelImage = true;
+    else if (selectedFilter == "SVG (*.svg)")
+        pixelImage = false;
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        m_imageFilter = selectedFilter;
+
+        QPainter painter;
+        if (pixelImage)
+        {
+            QImage image(g_graphicsView->viewport()->rect().size(), QImage::Format_ARGB32);
+            image.fill(Qt::white);
+            painter.begin(&image);
+            painter.setRenderHint(QPainter::Antialiasing);
+            painter.setRenderHint(QPainter::TextAntialiasing);
+            g_graphicsView->render(&painter);
+            image.save(fullFileName);
+            g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+            painter.end();
+        }
+        else //SVG
+        {
+            QSvgGenerator generator;
+            generator.setFileName(fullFileName);
+            QSize size = g_graphicsView->viewport()->rect().size();
+            generator.setSize(size);
+            generator.setViewBox(QRect(0, 0, size.width(), size.height()));
+            painter.begin(&generator);
+            painter.fillRect(0, 0, size.width(), size.height(), Qt::white);
+            painter.setRenderHint(QPainter::Antialiasing);
+            painter.setRenderHint(QPainter::TextAntialiasing);
+            g_graphicsView->render(&painter);
+            painter.end();
+        }
+    }
+}
+
+void MainWindow::saveImageEntireScene()
+{
+    if (!checkForImageSave())
+        return;
+
+    QString defaultFileNameAndPath = getDefaultImageFileName();
+
+    QString selectedFilter = m_imageFilter;
+    QString fullFileName = QFileDialog::getSaveFileName(this,
+                                                        "Save graph image (entire scene)",
+                                                        defaultFileNameAndPath,
+                                                        "PNG (*.png);;JPEG (*.jpg);;SVG (*.svg)",
+                                                        &selectedFilter);
+
+    bool pixelImage = true;
+    if (selectedFilter == "PNG (*.png)" || selectedFilter == "JPEG (*.jpg)")
+        pixelImage = true;
+    else if (selectedFilter == "SVG (*.svg)")
+        pixelImage = false;
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        //The positionTextNodeCentre setting must be used for the entire scene
+        //or else only the labels in the current viewport will be shown.
+        bool positionTextNodeCentreSettingBefore = g_settings->positionTextNodeCentre;
+        g_settings->positionTextNodeCentre = true;
+
+        //Temporarily undo any rotation so labels appear upright.
+        double rotationBefore = g_graphicsView->getRotation();
+        g_graphicsView->undoRotation();
+
+        m_imageFilter = selectedFilter;
+
+        QPainter painter;
+        if (pixelImage)
+        {
+            QSize imageSize = g_absoluteZoom * m_scene->sceneRect().size().toSize();
+
+            if (imageSize.width() > 32767 || imageSize.height() > 32767)
+            {
+                QString error = "Images can not be taller or wider than 32767 pixels, but at the "
+                                "current zoom level, the image to be saved would be ";
+                error += QString::number(imageSize.width()) + "x" + QString::number(imageSize.height()) + " pixels.\n\n";
+                error += "Please reduce the zoom level before saving the entire scene to image or use the SVG format.";
+
+                QMessageBox::information(this, "Image too large", error);
+                return;
+            }
+
+            if (imageSize.width() * imageSize.height() > 50000000) //50 megapixels is used as an arbitrary large image cutoff
+            {
+                QString warning = "At the current zoom level, the image will be ";
+                warning += QString::number(imageSize.width()) + "x" + QString::number(imageSize.height()) + " pixels. ";
+                warning += "An image of this large size may take significant time and space to save.\n\n"
+                           "The image size can be reduced by decreasing the zoom level or using the SVG format.\n\n"
+                           "Do you want to continue saving the image?";
+                QMessageBox::StandardButton response = QMessageBox::question(this, "Large image", warning);
+                if (response == QMessageBox::No || response == QMessageBox::Cancel)
+                    return;
+            }
+
+            QImage image(imageSize, QImage::Format_ARGB32);
+            image.fill(Qt::white);
+            painter.begin(&image);
+            painter.setRenderHint(QPainter::Antialiasing);
+            painter.setRenderHint(QPainter::TextAntialiasing);
+            m_scene->setSceneRectangle();
+            m_scene->render(&painter);
+            image.save(fullFileName);
+            g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+            painter.end();
+        }
+        else //SVG
+        {
+            QSvgGenerator generator;
+            generator.setFileName(fullFileName);
+            QSize size = g_absoluteZoom * m_scene->sceneRect().size().toSize();
+            generator.setSize(size);
+            generator.setViewBox(QRect(0, 0, size.width(), size.height()));
+            painter.begin(&generator);
+            painter.fillRect(0, 0, size.width(), size.height(), Qt::white);
+            painter.setRenderHint(QPainter::Antialiasing);
+            painter.setRenderHint(QPainter::TextAntialiasing);
+            m_scene->setSceneRectangle();
+            m_scene->render(&painter);
+            painter.end();
+        }
+
+        g_settings->positionTextNodeCentre = positionTextNodeCentreSettingBefore;
+        g_graphicsView->setRotation(rotationBefore);
+    }
+}
+
+
+
+//This function makes sure that a graph is loaded and drawn so that an image can be saved.
+//It returns true if everything is fine.  If things aren't ready, it displays a message
+//to the user and returns false.
+bool MainWindow::checkForImageSave()
+{
+    if (m_uiState == NO_GRAPH_LOADED)
+    {
+        QMessageBox::information(this, "No image to save", "You must first load and then draw a graph before you can save an image to file.");
+        return false;
+    }
+    if (m_uiState == GRAPH_LOADED)
+    {
+        QMessageBox::information(this, "No image to save", "You must first draw the graph before you can save an image to file.");
+        return false;
+    }
+    return true;
+}
+
+
+void MainWindow::setTextDisplaySettings()
+{
+    g_settings->displayNodeCustomLabels = ui->nodeCustomLabelsCheckBox->isChecked();
+    g_settings->displayNodeNames = ui->nodeNamesCheckBox->isChecked();
+    g_settings->displayNodeLengths = ui->nodeLengthsCheckBox->isChecked();
+    g_settings->displayNodeDepth = ui->nodeDepthCheckBox->isChecked();
+    g_settings->displayBlastHits = ui->blastHitsCheckBox->isChecked();
+    g_settings->displayNodeCsvData = ui->csvCheckBox->isChecked();
+    g_settings->displayNodeCsvDataCol = ui->csvComboBox->currentIndex();
+    g_settings->textOutline = ui->textOutlineCheckBox->isChecked();
+
+    g_graphicsView->viewport()->update();
+}
+
+
+void MainWindow::fontButtonPressed()
+{
+    bool ok;
+    g_settings->labelFont = QFontDialog::getFont(&ok, g_settings->labelFont, this);
+    if (ok)
+        g_graphicsView->viewport()->update();
+}
+
+
+
+void MainWindow::setNodeCustomColour()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        return;
+
+    QString dialogTitle = "Select custom colour for selected node";
+    if (selectedNodes.size() > 1)
+        dialogTitle += "s";
+
+    QColor newColour = QColorDialog::getColor(selectedNodes[0]->getCustomColourForDisplay(), this, dialogTitle);
+    if (newColour.isValid())
+    {
+        //If we are in single mode, apply the custom colour to both nodes in
+        //each complementary pair.
+        if (!g_settings->doubleMode)
+            selectedNodes = addComplementaryNodes(selectedNodes);
+
+        //If the colouring scheme is not currently custom, change it to custom now
+        if (g_settings->nodeColourScheme != CUSTOM_COLOURS)
+            setNodeColourSchemeComboBox(CUSTOM_COLOURS);
+
+        for (size_t i = 0; i < selectedNodes.size(); ++i)
+        {
+            selectedNodes[i]->setCustomColour(newColour);
+            if (selectedNodes[i]->getGraphicsItemNode() != 0)
+                selectedNodes[i]->getGraphicsItemNode()->setNodeColour();
+
+        }
+        g_graphicsView->viewport()->update();
+    }
+}
+
+void MainWindow::setNodeCustomLabel()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        return;
+
+    QString dialogMessage = "Type a custom label for selected node";
+    if (selectedNodes.size() > 1)
+        dialogMessage += "s";
+    dialogMessage += ":";
+
+    bool ok;
+    QString newLabel = QInputDialog::getText(this, "Custom label", dialogMessage, QLineEdit::Normal,
+                                             selectedNodes[0]->getCustomLabel(), &ok);
+
+    if (ok)
+    {
+        //If the custom label option isn't currently on, turn it on now.
+        ui->nodeCustomLabelsCheckBox->setChecked(true);
+
+        for (size_t i = 0; i < selectedNodes.size(); ++i)
+            selectedNodes[i]->setCustomLabel(newLabel);
+    }
+}
+
+
+//Takes a vector of nodes and returns a vector of the same nodes, along with
+//their complements.  Does not check for duplicates.
+std::vector<DeBruijnNode *> MainWindow::addComplementaryNodes(std::vector<DeBruijnNode *> nodes)
+{
+    std::vector<DeBruijnNode *> complementaryNodes;
+    for (size_t i = 0; i < nodes.size(); ++i)
+        complementaryNodes.push_back(nodes[i]->getReverseComplement());
+    nodes.insert(nodes.end(), complementaryNodes.begin(), complementaryNodes.end());
+    return nodes;
+}
+
+
+void MainWindow::openSettingsDialog()
+{
+    SettingsDialog settingsDialog(this);
+    settingsDialog.setWidgetsFromSettings();
+
+    if (settingsDialog.exec()) //The user clicked OK
+    {
+        Settings settingsBefore = *g_settings;
+
+        settingsDialog.setSettingsFromWidgets();
+
+        //If the settings affecting node width was changed, reset the width on
+        //each GraphicsItemNode.
+        if (settingsBefore.depthEffectOnWidth != g_settings->depthEffectOnWidth ||
+                settingsBefore.depthPower != g_settings->depthPower)
+            g_assemblyGraph->recalculateAllNodeWidths();
+
+        //If any of the colours changed, reset the node colours now.
+        if (settingsBefore.uniformPositiveNodeColour != g_settings->uniformPositiveNodeColour ||
+                settingsBefore.uniformNegativeNodeColour != g_settings->uniformNegativeNodeColour ||
+                settingsBefore.uniformNodeSpecialColour != g_settings->uniformNodeSpecialColour ||
+                settingsBefore.autoDepthValue != g_settings->autoDepthValue ||
+                settingsBefore.lowDepthColour != g_settings->lowDepthColour ||
+                settingsBefore.highDepthColour != g_settings->highDepthColour ||
+                settingsBefore.lowDepthValue != g_settings->lowDepthValue ||
+                settingsBefore.highDepthValue != g_settings->highDepthValue ||
+                settingsBefore.noBlastHitsColour != g_settings->noBlastHitsColour ||
+                settingsBefore.contiguousStrandSpecificColour != g_settings->contiguousStrandSpecificColour ||
+                settingsBefore.contiguousEitherStrandColour != g_settings->contiguousEitherStrandColour ||
+                settingsBefore.notContiguousColour != g_settings->notContiguousColour ||
+                settingsBefore.maybeContiguousColour != g_settings->maybeContiguousColour ||
+                settingsBefore.contiguityStartingColour != g_settings->contiguityStartingColour ||
+                settingsBefore.randomColourPositiveOpacity != g_settings->randomColourPositiveOpacity ||
+                settingsBefore.randomColourNegativeOpacity != g_settings->randomColourNegativeOpacity ||
+                settingsBefore.randomColourPositiveSaturation != g_settings->randomColourPositiveSaturation ||
+                settingsBefore.randomColourNegativeSaturation != g_settings->randomColourNegativeSaturation ||
+                settingsBefore.randomColourPositiveLightness != g_settings->randomColourPositiveLightness ||
+                settingsBefore.randomColourNegativeLightness != g_settings->randomColourNegativeLightness)
+        {
+            g_assemblyGraph->resetAllNodeColours();
+        }
+
+        g_graphicsView->setAntialiasing(g_settings->antialiasing);
+        g_graphicsView->viewport()->update();
+    }
+}
+
+void MainWindow::selectUserSpecifiedNodes()
+{
+    if (g_assemblyGraph->checkIfStringHasNodes(ui->selectionSearchNodesLineEdit->text()))
+    {
+        QMessageBox::information(this, "No starting nodes",
+                                 "Please enter at least one node when drawing the graph using the 'Around node(s)' scope. "
+                                 "Separate multiple nodes with commas.");
+        return;
+    }
+
+    if (ui->selectionSearchNodesLineEdit->text().length() == 0)
+    {
+        QMessageBox::information(this, "No nodes given", "Please enter the numbers of the nodes to find, separated by commas.");
+        return;
+    }
+
+    m_scene->blockSignals(true);
+    m_scene->clearSelection();
+    std::vector<QString> nodesNotInGraph;
+    std::vector<DeBruijnNode *> nodesToSelect = getNodesFromLineEdit(ui->selectionSearchNodesLineEdit,
+                                                                     ui->selectionSearchNodesExactMatchRadioButton->isChecked(),
+                                                                     &nodesNotInGraph);
+
+    //Select each node that actually has a GraphicsItemNode, and build a bounding
+    //rectangle so the viewport can focus on the selected node.
+    std::vector<QString> nodesNotFound;
+    int foundNodes = 0;
+    for (size_t i = 0; i < nodesToSelect.size(); ++i)
+    {
+        GraphicsItemNode * graphicsItemNode = nodesToSelect[i]->getGraphicsItemNode();
+
+        //If the GraphicsItemNode isn't found, try the reverse complement.  This
+        //is only done for single node mode.
+        if (graphicsItemNode == 0 && !g_settings->doubleMode)
+            graphicsItemNode = nodesToSelect[i]->getReverseComplement()->getGraphicsItemNode();
+
+        if (graphicsItemNode != 0)
+        {
+            graphicsItemNode->setSelected(true);
+            ++foundNodes;
+        }
+        else
+            nodesNotFound.push_back(nodesToSelect[i]->getName());
+    }
+
+    if (foundNodes > 0)
+        zoomToSelection();
+
+    if (nodesNotInGraph.size() > 0 || nodesNotFound.size() > 0)
+    {
+        QString errorMessage;
+        if (nodesNotInGraph.size() > 0)
+        {
+            errorMessage += g_assemblyGraph->generateNodesNotFoundErrorMessage(nodesNotInGraph,
+                                                                               ui->selectionSearchNodesExactMatchRadioButton->isChecked());
+        }
+        if (nodesNotFound.size() > 0)
+        {
+            if (errorMessage.length() > 0)
+                errorMessage += "\n";
+            errorMessage += "The following nodes are in the graph but not currently displayed:\n";
+            for (size_t i = 0; i < nodesNotFound.size(); ++i)
+            {
+                errorMessage += nodesNotFound[i];
+                if (i != nodesNotFound.size() - 1)
+                    errorMessage += ", ";
+            }
+            errorMessage += "\n\nRedraw the graph with an increased scope to see these nodes.\n";
+        }
+        QMessageBox::information(this, "Nodes not found", errorMessage);
+    }
+
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+    selectionChanged();
+}
+
+
+void MainWindow::openAboutDialog()
+{
+    AboutDialog aboutDialog(this);
+    aboutDialog.exec();
+}
+
+
+void MainWindow::openBlastSearchDialog()
+{
+    //If a BLAST search dialog does not current exist, make it.
+    if (m_blastSearchDialog == 0)
+    {
+        m_blastSearchDialog = new BlastSearchDialog(this);
+        connect(m_blastSearchDialog, SIGNAL(blastChanged()), this, SLOT(blastChanged()));
+        connect(m_blastSearchDialog, SIGNAL(queryPathSelectionChanged()), g_graphicsView->viewport(), SLOT(update()));
+    }
+
+    m_blastSearchDialog->show();
+}
+
+
+//This function is called whenever the user does something in the
+//BlastSearchDialog that should be reflected here in MainWindow.
+void MainWindow::blastChanged()
+{
+    QString blastQueryText = ui->blastQueryComboBox->currentText();
+    BlastQuery * queryBefore = g_blastSearch->m_blastQueries.getQueryFromName(blastQueryText);
+
+    //If we didn't find a currently selected query but it isn't "none" or "all",
+    //then maybe the user changed the name of the currently selected query, and
+    //that's why we didn't find it.  In that case, try to find it using the
+    //index.
+    if (queryBefore == 0 && blastQueryText != "none" && blastQueryText != "all")
+    {
+        int blastQueryIndex = ui->blastQueryComboBox->currentIndex();
+        if (ui->blastQueryComboBox->count() > 1)
+            --blastQueryIndex;
+        if (blastQueryIndex < g_blastSearch->m_blastQueries.getQueryCount())
+            queryBefore = g_blastSearch->m_blastQueries.m_queries[blastQueryIndex];
+    }
+
+    //Rebuild the query combo box, in case the user changed the queries or
+    //their names.
+    setupBlastQueryComboBox();
+
+    //Look to see if the query selected before is still present.  If so,
+    //set the combo box to have that query selected.  If not (or if no
+    //query was previously selected), leave the combo box a index 0.
+    if (queryBefore != 0 && g_blastSearch->m_blastQueries.isQueryPresent(queryBefore))
+    {
+        int indexOfQuery = ui->blastQueryComboBox->findText(queryBefore->getName());
+        if (indexOfQuery != -1)
+            ui->blastQueryComboBox->setCurrentIndex(indexOfQuery);
+    }
+
+    if (g_blastSearch->m_blastQueries.getQueryCount() > 0)
+    {
+        //If the colouring scheme is not currently BLAST hits, change it to BLAST hits now
+        if (g_settings->nodeColourScheme != BLAST_HITS_RAINBOW_COLOUR &&
+                g_settings->nodeColourScheme != BLAST_HITS_SOLID_COLOUR)
+        {
+            //If there is only one query, use BLAST rainbow.  Otherwise, use
+            //BLAST solid.
+            if (g_blastSearch->m_blastQueries.getQueryCount() == 1)
+                setNodeColourSchemeComboBox(BLAST_HITS_RAINBOW_COLOUR);
+            else
+                setNodeColourSchemeComboBox(BLAST_HITS_SOLID_COLOUR);
+        }
+    }
+
+    g_blastSearch->blastQueryChanged(ui->blastQueryComboBox->currentText());
+    g_graphicsView->viewport()->update();
+}
+
+
+void MainWindow::setupBlastQueryComboBox()
+{
+    ui->blastQueryComboBox->clear();
+    QStringList comboBoxItems;
+    for (size_t i = 0; i < g_blastSearch->m_blastQueries.m_queries.size(); ++i)
+    {
+        if (g_blastSearch->m_blastQueries.m_queries[i]->hasHits())
+            comboBoxItems.push_back(g_blastSearch->m_blastQueries.m_queries[i]->getName());
+    }
+
+    if (comboBoxItems.size() > 1)
+        comboBoxItems.push_front("all");
+
+    if (comboBoxItems.size() > 0)
+    {
+        ui->blastQueryComboBox->addItems(comboBoxItems);
+        ui->blastQueryComboBox->setEnabled(true);
+    }
+    else
+    {
+        ui->blastQueryComboBox->addItem("none");
+        ui->blastQueryComboBox->setEnabled(false);
+    }
+}
+
+
+void MainWindow::blastQueryChanged()
+{
+    g_blastSearch->blastQueryChanged(ui->blastQueryComboBox->currentText());
+    g_graphicsView->viewport()->update();
+}
+
+
+void MainWindow::setInfoTexts()
+{
+    QString control = "Ctrl";
+    QString settingsDialogTitle = "settings";
+#ifdef Q_OS_MAC
+    QString command(QChar(0x2318));
+    control = command;
+    settingsDialogTitle = "preferences";
+#endif
+
+    ui->graphInformationInfoText->setInfoText("Node codes, edge count and total length are calculated using single "
+                                              "nodes, not double nodes.<br><br>"
+                                              "For example, node 5+ and node 5- would only be counted once.");
+    ui->graphScopeInfoText->setInfoText("This controls how much of the assembly graph will be drawn:<ul>"
+                                        "<li>'Entire graph': all nodes in the graph will be drawn. This is "
+                                        "appropriate for smaller graphs, but large graphs may take "
+                                        "longer and use large amounts of memory to draw in their entirety.</li>"
+                                        "<li>'Around nodes': you can specify nodes and a distance to "
+                                        "limit the drawing to a smaller region of the graph.</li>"
+                                        "<li>'Around BLAST hits': if you have conducted a BLAST search "
+                                        "on this graph, this option will draw the region(s) of the graph "
+                                        "around nodes that contain hits.</li></ul>");
+    ui->startingNodesInfoText->setInfoText("Enter a comma-delimited list of node names here. This will "
+                                           "define which regions of the graph will be drawn.<br><br>"
+                                           "When in double mode, you can include '+' or '-' at the end "
+                                           "of the node name to specify which strand to draw. If you do "
+                                           "not include '+' or '-', then nodes for both strands will be drawn.");
+    ui->startingNodesMatchTypeInfoText->setInfoText("When 'Exact' match is used, the graph will only be drawn around nodes "
+                                                    "that exactly match your above input.<br><br>"
+                                                    "When 'Partial' match is used, the graph will be drawn around "
+                                                    "nodes where any part of their name matches your above input.");
+    ui->selectionSearchNodesMatchTypeInfoText->setInfoText("When 'Exact' match is used, nodes will only be selected if "
+                                                           "their name exactly matches your input above.<br><br>"
+                                                           "When 'Partial' match is used, nodes will be selected if any "
+                                                           "part of their name matches your input above.");
+    ui->nodeStyleInfoText->setInfoText("'Single' mode will only one node for each positive/negative pair. "
+                                       "This produces a simpler graph visualisation, but "
+                                       "strand-specific sequences and directionality will be less clear.<br><br>"
+                                       "'Double' mode will draw both nodes and their complement nodes. The nodes "
+                                       "will show directionality with an arrow head. They will initially be "
+                                       "drawn on top of each other, but can be manually moved to separate them.");
+    ui->drawGraphInfoText->setInfoText("Clicking this button will conduct the graph layout and draw the graph to "
+                                       "the screen. This process is fast for small graphs but can be "
+                                       "resource-intensive for large graphs.<br><br>"
+                                       "The layout algorithm uses a random seed, so each time this button is "
+                                       "clicked you will give different layouts of the same graph.");
+    ui->zoomInfoText->setInfoText("This value controls how large the graph appears in Bandage. The zoom level "
+                                  "can also be changed by:<ul>"
+                                  "<li>Holding the " + control + " key and using the mouse wheel over the graph.</li>"
+                                  "<li>Clicking on the graph display and then using the '+' and '-' keys.</li></ul>");
+    ui->nodeWidthInfoText->setInfoText("This is the average width for each node. The exact width for each node is "
+                                       "also influenced by the node's depth. The effect of depth on width "
+                                       "can be adjusted in Bandage " + settingsDialogTitle + ".");
+    ui->nodeColourInfoText->setInfoText("This controls the colour of the nodes in the graph:<ul>"
+                                        "<li>'Random colours': Nodes will be coloured randomly. Each time this is "
+                                        "selected, new random colours will be chosen. Negative nodes (visible "
+                                        "in 'Double' mode) will be a darker shade of their complement positive "
+                                        "nodes.</li>"
+                                        "<li>'Uniform colour': For graphs drawn with the 'Entire graph' scope, all "
+                                        "nodes will be the same colour. For graphs drawn with the 'Around nodes' "
+                                        "scope, your specified nodes will be drawn in a separate colour. For "
+                                        "graphs drawn with the 'Around BLAST hits' scope, nodes with BLAST hits "
+                                        "will be drawn in a separate colour.</li>"
+                                        "<li>'Colour by depth': Node colours will be defined by their "
+                                        "depth. The details of this relationship are configurable in "
+                                        "Bandage " + settingsDialogTitle + ".</li>"
+                                        "<li>'BLAST hits (rainbow)': Nodes will be drawn in a light grey colour "
+                                        "and BLAST hits for the currently selected query will be drawn using a "
+                                        "rainbow. Red indicates the start of the query sequence and violet "
+                                        "indicates the end.</li>"
+                                        "<li>'BLAST hits (solid)': Nodes will be drawn in a light grey colour "
+                                        "and BLAST hits for the currently selected query will be drawn using "
+                                        "the query's colour. Query colours can be specified in the 'Create/view"
+                                        "BLAST search' window.</li>"
+                                        "<li>'Colour by contiguity': This option will display a 'Determine "
+                                        "contiguity button. When pressed, the nodes will be coloured based "
+                                        "on their contiguity with the selected node(s).</li>"
+                                        "<li>'Custom colours': Nodes will be coloured using colours of your "
+                                        "choice. Select one or more nodes and then click the 'Set colour' button "
+                                        "to define their colour.</li></ul>"
+                                        "See the 'Colours' section of the Bandage " + settingsDialogTitle + " "
+                                        "to control various colouring options.");
+    ui->contiguityInfoText->setInfoText("Select one or more nodes and then click this button. Bandage will "
+                                        "then colour which other nodes in the graph are likely to be contiguous "
+                                        "with your selected node(s).");
+    ui->nodeLabelsInfoText->setInfoText("Tick any of the node labelling options to display those labels over "
+                                        "nodes in the graph.<br><br>"
+                                        "'Name', 'Length' and 'Depth' labels are created automatically. "
+                                        "'Custom' labels must be assigned by clicking the 'Set "
+                                        "label' button when one or more nodes are selected.<br><br>"
+                                        "When 'BLAST hits' labels are shown, they are displayed over any "
+                                        "BLAST hits present in the node.<br><br>"
+                                        "The 'CSV data' option allows you to import custom labels. To use this, "
+                                        "you must first load a CSV file (using the 'Load CSV label data' item in "
+                                        "the 'File' menu) which contains the node names in the first column and "
+                                        "custom labels in subsequent columns. The CSV file must also contain a "
+                                        "header row.");
+    ui->nodeFontInfoText->setInfoText("Click the 'Font' button to choose the font used for node labels. The "
+                                      "colour of the font is configurable in Bandage's " + settingsDialogTitle + ".<br><br>"
+                                      "Ticking 'Text outline' will surround the text with a white outline. "
+                                      "This can help to make text more readable, but will obscure more of the "
+                                      "underlying graph. The thickness of the text outline is configurable in "
+                                      "Bandage's " + settingsDialogTitle + ".");
+    ui->blastSearchInfoText->setInfoText("Click this button to open a dialog where a BLAST search for one "
+                                         "or more queries can be carried out on the graph's nodes.<br><br>"
+                                         "After a BLAST search is complete, it will be possible to use the "
+                                         "'Around BLAST hits' graph scope and the 'BLAST "
+                                         "hits' colour modes.");
+    ui->blastQueryInfoText->setInfoText("After a BLAST search is completed, you can select a query here for use "
+                                        "with the 'Around BLAST hits' graph scope and the 'BLAST "
+                                        "hits' colour modes.");
+    ui->selectionSearchInfoText->setInfoText("Type a comma-delimited list of one or mode node numbers and then click "
+                                             "the 'Find node(s)' button to search for nodes in the graph. "
+                                             "If the search is successful, the view will zoom to the found nodes "
+                                             "and they will be selected.");
+    ui->setColourAndLabelInfoText->setInfoText("Custom colours and labels can be applied to selected nodes using "
+                                               "these buttons. They will only be visible when the colouring "
+                                               "mode is set to 'Custom colours' and the 'Custom' label option "
+                                               "is ticked.");
+    ui->minDepthInfoText->setInfoText("This is the lower bound for the depth range. Nodes with a read "
+                                          "depth less than this value will not be drawn.");
+    ui->maxDepthInfoText->setInfoText("This is the uper bound for the depth range. Nodes with a read "
+                                          "depth greater than this value will not be drawn.");
+}
+
+
+
+void MainWindow::setUiState(UiState uiState)
+{
+    m_uiState = uiState;
+
+    switch (uiState)
+    {
+    case NO_GRAPH_LOADED:
+        ui->graphDetailsWidget->setEnabled(false);
+        ui->graphDrawingWidget->setEnabled(false);
+        ui->graphDisplayWidget->setEnabled(false);
+        ui->nodeLabelsWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(false);
+        ui->selectionScrollAreaWidgetContents->setEnabled(false);
+        ui->actionLoad_CSV->setEnabled(false);
+        break;
+    case GRAPH_LOADED:
+        ui->graphDetailsWidget->setEnabled(true);
+        ui->graphDrawingWidget->setEnabled(true);
+        ui->graphDisplayWidget->setEnabled(false);
+        ui->nodeLabelsWidget->setEnabled(false);
+        ui->blastSearchWidget->setEnabled(true);
+        ui->selectionScrollAreaWidgetContents->setEnabled(false);
+        ui->actionLoad_CSV->setEnabled(true);
+        break;
+    case GRAPH_DRAWN:
+        ui->graphDetailsWidget->setEnabled(true);
+        ui->graphDrawingWidget->setEnabled(true);
+        ui->graphDisplayWidget->setEnabled(true);
+        ui->nodeLabelsWidget->setEnabled(true);
+        ui->blastSearchWidget->setEnabled(true);
+        ui->selectionScrollAreaWidgetContents->setEnabled(true);
+        ui->actionZoom_to_selection->setEnabled(true);
+        ui->actionLoad_CSV->setEnabled(true);
+        break;
+    }
+}
+
+
+void MainWindow::showHidePanels()
+{
+    ui->controlsScrollArea->setVisible(ui->actionControls_panel->isChecked());
+    ui->selectionScrollArea->setVisible(ui->actionSelection_panel->isChecked());
+}
+
+
+void MainWindow::bringSelectedNodesToFront()
+{
+    m_scene->blockSignals(true);
+
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+    {
+        QMessageBox::information(this, "No nodes selected", "You must first select nodes in the graph before using "
+                                                            "the 'Bring selected nodes to front' function.");
+        return;
+    }
+
+    double topZ = m_scene->getTopZValue();
+    double newZ = topZ + 1.0;
+
+    for (size_t i = 0; i < selectedNodes.size(); ++i)
+    {
+        GraphicsItemNode * graphicsItemNode = selectedNodes[i]->getGraphicsItemNode();
+
+        if (graphicsItemNode == 0)
+            continue;
+
+        graphicsItemNode->setZValue(newZ);
+    }
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+}
+
+
+void MainWindow::selectNodesWithBlastHits()
+{
+    if (ui->blastQueryComboBox->currentText() == "none")
+    {
+        QMessageBox::information(this, "No BLAST hits",
+                                       "To select nodes with BLAST hits, you must first conduct a BLAST search.");
+        return;
+    }
+
+    m_scene->blockSignals(true);
+    m_scene->clearSelection();
+
+    bool atLeastOneNodeHasBlastHits = false;
+    bool atLeastOneNodeSelected = false;
+
+    QMapIterator<QString, DeBruijnNode*> i(g_assemblyGraph->m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+
+        bool nodeHasBlastHits;
+
+        //If we're in double mode, only select a node if it has a BLAST hit itself.
+        if (g_settings->doubleMode)
+            nodeHasBlastHits = node->thisNodeHasBlastHits();
+
+        //In single mode, select a node if it or its reverse complement has a BLAST hit.
+        else
+            nodeHasBlastHits = node->thisNodeOrReverseComplementHasBlastHits();
+
+        if (nodeHasBlastHits)
+            atLeastOneNodeHasBlastHits = true;
+
+        GraphicsItemNode * graphicsItemNode = node->getGraphicsItemNode();
+
+        if (graphicsItemNode == 0)
+            continue;
+
+        if (nodeHasBlastHits)
+        {
+            graphicsItemNode->setSelected(true);
+            atLeastOneNodeSelected = true;
+        }
+    }
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+    selectionChanged();
+
+    if (!atLeastOneNodeHasBlastHits)
+    {
+        QMessageBox::information(this, "No BLAST hits",
+                                       "To select nodes with BLAST hits, you must first conduct a BLAST search.");
+        return;
+    }
+
+    if (!atLeastOneNodeSelected)
+        QMessageBox::information(this, "No BLAST hits in visible nodes",
+                                       "No nodes with BLAST hits are currently visible, so there is nothing to select. "
+                                       "Adjust the graph scope to make the nodes with BLAST hits visible.");
+    else
+        zoomToSelection();
+}
+
+
+void MainWindow::selectAll()
+{
+    m_scene->blockSignals(true);
+    QList<QGraphicsItem *> allItems = m_scene->items();
+    for (int i = 0; i < allItems.size(); ++i)
+    {
+        QGraphicsItem * item = allItems[i];
+        item->setSelected(true);
+    }
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+    selectionChanged();
+}
+
+
+void MainWindow::selectNone()
+{
+    m_scene->blockSignals(true);
+    QList<QGraphicsItem *> allItems = m_scene->items();
+    for (int i = 0; i < allItems.size(); ++i)
+    {
+        QGraphicsItem * item = allItems[i];
+        item->setSelected(false);
+    }
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+    selectionChanged();
+}
+
+void MainWindow::invertSelection()
+{
+    m_scene->blockSignals(true);
+    QList<QGraphicsItem *> allItems = m_scene->items();
+    for (int i = 0; i < allItems.size(); ++i)
+    {
+        QGraphicsItem * item = allItems[i];
+        item->setSelected(!item->isSelected());
+    }
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+    selectionChanged();
+}
+
+
+
+void MainWindow::zoomToSelection()
+{
+    QList<QGraphicsItem *> selection = m_scene->selectedItems();
+    if (selection.size() == 0)
+    {
+        QMessageBox::information(this, "No nodes selected", "You must first select nodes in the graph before using "
+                                                            "the 'Zoom to fit selection' function.");
+        return;
+    }
+
+    QRectF boundingBox;
+    for (int i = 0; i < selection.size(); ++i)
+    {
+        QGraphicsItem * selectedItem = selection[i];
+        boundingBox = boundingBox | selectedItem->boundingRect();
+    }
+
+    zoomToFitRect(boundingBox);
+}
+
+
+
+void MainWindow::selectContiguous()
+{
+    selectBasedOnContiguity(CONTIGUOUS_EITHER_STRAND);
+}
+
+void MainWindow::selectMaybeContiguous()
+{
+    selectBasedOnContiguity(MAYBE_CONTIGUOUS);
+}
+
+void MainWindow::selectNotContiguous()
+{
+    selectBasedOnContiguity(NOT_CONTIGUOUS);
+}
+
+
+
+void MainWindow::selectBasedOnContiguity(ContiguityStatus targetContiguityStatus)
+{
+    if (!g_assemblyGraph->m_contiguitySearchDone)
+    {
+        QMessageBox::information(this, "Contiguity determination not done",
+                                       "To select nodes by their contiguity status, while in 'Colour "
+                                       "by contiguity' mode, you must select a node and then click "
+                                       "'Determine contiguity'.");
+        return;
+    }
+
+    m_scene->blockSignals(true);
+    m_scene->clearSelection();
+
+    QMapIterator<QString, DeBruijnNode*> i(g_assemblyGraph->m_deBruijnGraphNodes);
+    while (i.hasNext())
+    {
+        i.next();
+        DeBruijnNode * node = i.value();
+        GraphicsItemNode * graphicsItemNode = node->getGraphicsItemNode();
+
+        if (graphicsItemNode == 0)
+            continue;
+
+        //For single nodes, choose the greatest contiguity status of this
+        //node and its complement.
+        ContiguityStatus nodeContiguityStatus = node->getContiguityStatus();
+        if (!g_settings->doubleMode)
+        {
+            ContiguityStatus twinContiguityStatus = node->getReverseComplement()->getContiguityStatus();
+            if (twinContiguityStatus < nodeContiguityStatus)
+                nodeContiguityStatus = twinContiguityStatus;
+        }
+
+        if (targetContiguityStatus == CONTIGUOUS_EITHER_STRAND &&
+                (nodeContiguityStatus == CONTIGUOUS_STRAND_SPECIFIC || nodeContiguityStatus == CONTIGUOUS_EITHER_STRAND))
+            graphicsItemNode->setSelected(true);
+        else if (targetContiguityStatus == MAYBE_CONTIGUOUS &&
+                 nodeContiguityStatus == MAYBE_CONTIGUOUS)
+            graphicsItemNode->setSelected(true);
+        else if (targetContiguityStatus == NOT_CONTIGUOUS &&
+                 nodeContiguityStatus == NOT_CONTIGUOUS)
+            graphicsItemNode->setSelected(true);
+    }
+
+    m_scene->blockSignals(false);
+    g_graphicsView->viewport()->update();
+    selectionChanged();
+    zoomToSelection();
+}
+
+
+
+void MainWindow::openBandageUrl()
+{
+    QDesktopServices::openUrl(QUrl("https://github.com/rrwick/Bandage/wiki"));
+}
+
+
+
+
+
+
+
+void MainWindow::setWidgetsFromSettings()
+{
+    ui->singleNodesRadioButton->setChecked(!g_settings->doubleMode);
+    ui->doubleNodesRadioButton->setChecked(g_settings->doubleMode);
+
+    ui->nodeWidthSpinBox->setValue(g_settings->averageNodeWidth);
+
+    ui->nodeNamesCheckBox->setChecked(g_settings->displayNodeNames);
+    ui->nodeLengthsCheckBox->setChecked(g_settings->displayNodeLengths);
+    ui->nodeDepthCheckBox->setChecked(g_settings->displayNodeDepth);
+    ui->blastHitsCheckBox->setChecked(g_settings->displayBlastHits);
+    ui->textOutlineCheckBox->setChecked(g_settings->textOutline);
+
+    ui->startingNodesExactMatchRadioButton->setChecked(g_settings->startingNodesExactMatch);
+    ui->startingNodesPartialMatchRadioButton->setChecked(!g_settings->startingNodesExactMatch);
+
+    setNodeColourSchemeComboBox(g_settings->nodeColourScheme);
+
+    setGraphScopeComboBox(g_settings->graphScope);
+    ui->nodeDistanceSpinBox->setValue(g_settings->nodeDistance);
+    ui->startingNodesLineEdit->setText(g_settings->startingNodes);
+
+    ui->minDepthSpinBox->setValue(g_settings->minDepthRange);
+    ui->maxDepthSpinBox->setValue(g_settings->maxDepthRange);
+}
+
+
+
+void MainWindow::setNodeColourSchemeComboBox(NodeColourScheme nodeColourScheme)
+{
+    switch (nodeColourScheme)
+    {
+    case RANDOM_COLOURS: ui->coloursComboBox->setCurrentIndex(0); break;
+    case UNIFORM_COLOURS: ui->coloursComboBox->setCurrentIndex(1); break;
+    case DEPTH_COLOUR: ui->coloursComboBox->setCurrentIndex(2); break;
+    case BLAST_HITS_SOLID_COLOUR: ui->coloursComboBox->setCurrentIndex(3); break;
+    case BLAST_HITS_RAINBOW_COLOUR: ui->coloursComboBox->setCurrentIndex(4); break;
+    case CONTIGUITY_COLOUR: ui->coloursComboBox->setCurrentIndex(5); break;
+    case CUSTOM_COLOURS: ui->coloursComboBox->setCurrentIndex(6); break;
+    }
+}
+
+void MainWindow::setGraphScopeComboBox(GraphScope graphScope)
+{
+    switch (graphScope)
+    {
+    case WHOLE_GRAPH: ui->graphScopeComboBox->setCurrentIndex(0); break;
+    case AROUND_NODE: ui->graphScopeComboBox->setCurrentIndex(1); break;
+    case AROUND_BLAST_HITS: ui->graphScopeComboBox->setCurrentIndex(2); break;
+    case DEPTH_RANGE: ui->graphScopeComboBox->setCurrentIndex(3); break;
+    }
+}
+
+void MainWindow::nodeDistanceChanged()
+{
+    g_settings->nodeDistance = ui->nodeDistanceSpinBox->value();
+}
+
+void MainWindow::depthRangeChanged()
+{
+    g_settings->minDepthRange = ui->minDepthSpinBox->value();
+    g_settings->maxDepthRange = ui->maxDepthSpinBox->value();
+}
+
+void MainWindow::showEvent(QShowEvent *ev)
+{
+    QMainWindow::showEvent(ev);
+    emit windowLoaded();
+}
+
+
+void MainWindow::startingNodesExactMatchChanged()
+{
+    g_settings->startingNodesExactMatch = ui->startingNodesExactMatchRadioButton->isChecked();
+}
+
+
+void MainWindow::openPathSpecifyDialog()
+{
+    //Don't open a second dialog if one's already up.
+    if (g_memory->pathDialogIsVisible)
+        return;
+
+    PathSpecifyDialog * pathSpecifyDialog = new PathSpecifyDialog(this);
+    connect(g_graphicsView, SIGNAL(doubleClickedNode(DeBruijnNode*)), pathSpecifyDialog, SLOT(addNodeName(DeBruijnNode*)));
+    pathSpecifyDialog->show();
+}
+
+
+QString MainWindow::convertGraphFileTypeToString(GraphFileType graphFileType)
+{
+    QString graphFileTypeString;
+    switch (graphFileType)
+    {
+    case LAST_GRAPH: graphFileTypeString = "LastGraph"; break;
+    case FASTG: graphFileTypeString = "FASTG"; break;
+    case GFA: graphFileTypeString = "GFA"; break;
+    case TRINITY: graphFileTypeString = "Trinity.fasta"; break;
+    case ASQG: graphFileTypeString = "ASQG"; break;
+    case PLAIN_FASTA: graphFileTypeString = "FASTA"; break;
+    case ANY_FILE_TYPE: graphFileTypeString = "any"; break;
+    case UNKNOWN_FILE_TYPE: graphFileTypeString = "unknown"; break;
+    }
+    return graphFileTypeString;
+}
+
+
+void MainWindow::setSelectedNodesWidgetsVisibility(bool visible)
+{
+    ui->selectedNodesTitleLabel->setVisible(visible);
+    ui->selectedNodesLine1->setVisible(visible);
+    ui->selectedNodesLine2->setVisible(visible);
+    ui->selectedNodesTextEdit->setVisible(visible);
+    ui->selectedNodesModificationWidget->setVisible(visible);
+    ui->selectedNodesLengthLabel->setVisible(visible);
+    ui->selectedNodesDepthLabel->setVisible(visible);
+    ui->selectedNodesSpacerWidget->setVisible(visible);
+}
+
+void MainWindow::setSelectedEdgesWidgetsVisibility(bool visible)
+{
+    ui->selectedEdgesTitleLabel->setVisible(visible);
+    ui->selectedEdgesTextEdit->setVisible(visible);
+    ui->selectedEdgesLine->setVisible(visible);
+    ui->selectedEdgesSpacerWidget->setVisible(visible);
+}
+
+
+void MainWindow::nodeWidthChanged()
+{
+    g_settings->averageNodeWidth = ui->nodeWidthSpinBox->value();
+    g_assemblyGraph->recalculateAllNodeWidths();
+    g_graphicsView->viewport()->update();
+}
+
+
+void MainWindow::saveEntireGraphToFasta()
+{
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/all_graph_nodes.fasta";
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save entire graph", defaultFileNameAndPath, "FASTA (*.fasta)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+        g_assemblyGraph->saveEntireGraphToFasta(fullFileName);
+    }
+}
+
+void MainWindow::saveEntireGraphToFastaOnlyPositiveNodes()
+{
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/all_positive_graph_nodes.fasta";
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save entire graph (only positive nodes)", defaultFileNameAndPath, "FASTA (*.fasta)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+        g_assemblyGraph->saveEntireGraphToFastaOnlyPositiveNodes(fullFileName);
+    }
+}
+
+
+void MainWindow::saveEntireGraphToGfa()
+{
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/graph.gfa";
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save entire graph", defaultFileNameAndPath, "GFA (*.gfa)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+        bool success = g_assemblyGraph->saveEntireGraphToGfa(fullFileName);
+        if (!success)
+            QMessageBox::warning(this, "Error saving file", "Bandage was unable to save the graph file.");
+    }
+}
+
+void MainWindow::saveVisibleGraphToGfa()
+{
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/graph.gfa";
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save visible graph", defaultFileNameAndPath, "GFA (*.gfa)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+        bool success = g_assemblyGraph->saveVisibleGraphToGfa(fullFileName);
+        if (!success)
+            QMessageBox::warning(this, "Error saving file", "Bandage was unable to save the graph file.");
+    }
+}
+
+
+void MainWindow::webBlastSelectedNodes()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+    {
+        QMessageBox::information(this, "Web BLAST selected nodes", "No nodes are selected.\n\n"
+                                                                   "You must first select nodes in the graph before you can can use web BLAST.");
+        return;
+    }
+
+    QByteArray selectedNodesFasta;
+    for (size_t i = 0; i < selectedNodes.size(); ++i)
+        selectedNodesFasta += selectedNodes[i]->getFasta(true, false);
+    selectedNodesFasta.chop(1); //remove last newline
+
+    QByteArray urlSafeFasta = makeStringUrlSafe(selectedNodesFasta);
+    QByteArray url = "http://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastn&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome&QUERY=" + urlSafeFasta;
+    
+    if (url.length() < 8190)
+        QDesktopServices::openUrl(QUrl(url));
+
+    else
+    {
+        QMessageBox::information(this, "Long sequences", "The selected node sequences are too long to pass to the BLAST web "
+                                                         "interface via the URL.  Bandage has put them in your clipboard so "
+                                                         "you can paste them in.");
+        QClipboard * clipboard = QApplication::clipboard();
+        clipboard->setText(selectedNodesFasta);
+
+        QByteArray url = "http://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastn&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome";
+        QDesktopServices::openUrl(QUrl(url));
+    }
+}
+
+//http://www.ncbi.nlm.nih.gov/staff/tao/URLAPI/new/node101.html#sub:Escape-of-Unsafe
+QByteArray MainWindow::makeStringUrlSafe(QByteArray s)
+{
+    s.replace("%", "%25");
+    s.replace(">", "%3E");
+    s.replace("[", "%5B");
+    s.replace("]", "%5D");
+    s.replace("\n", "%0D%0A");
+    s.replace("|", "%7C");
+    s.replace("@", "%40");
+    s.replace("#", "%23");
+    s.replace("+", "%2B");
+    s.replace(" ", "+");
+    s.replace("\t", "+");
+
+    return s;
+}
+
+
+//This function removes nodes from the visualisation, but leaves them in the
+//actual graph.
+void MainWindow::hideNodes()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    g_assemblyGraph->removeGraphicsItemNodes(&selectedNodes, !g_settings->doubleMode, m_scene);
+}
+
+
+//This function removes selected nodes/edges from the graph.
+void MainWindow::removeSelection()
+{
+    std::vector<DeBruijnEdge *> selectedEdges = m_scene->getSelectedEdges();
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+
+    g_assemblyGraph->removeGraphicsItemEdges(&selectedEdges, true, m_scene);
+    g_assemblyGraph->removeGraphicsItemNodes(&selectedNodes, true, m_scene);
+
+    g_assemblyGraph->deleteEdges(&selectedEdges);
+    g_assemblyGraph->deleteNodes(&selectedNodes);
+
+    g_assemblyGraph->determineGraphInfo();
+    displayGraphDetails();
+
+    //Now that the graph has changed, we have to reset BLAST and contiguity
+    //stuff, as they may no longer apply.
+    cleanUpAllBlast();
+    g_assemblyGraph->resetNodeContiguityStatus();
+}
+
+
+
+void MainWindow::duplicateSelectedNodes()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() == 0)
+    {
+        QMessageBox::information(this, "No nodes selected", "You must first select one or more nodes before using the 'Duplicate selected nodes' function.");
+        return;
+    }
+
+    //Nodes are always duplicated in pairs (both positive and negative), so we
+    //want to compile a list of only positive nodes.
+    QList<DeBruijnNode *> nodesToDuplicate;
+    for (size_t i = 0; i < selectedNodes.size(); ++i)
+    {
+        DeBruijnNode * node = selectedNodes[i];
+        if (node->isNegativeNode())
+            node = node->getReverseComplement();
+        if (!nodesToDuplicate.contains(node))
+            nodesToDuplicate.push_back(node);
+    }
+
+    for (int i = 0; i < nodesToDuplicate.size(); ++i)
+        g_assemblyGraph->duplicateNodePair(nodesToDuplicate[i], m_scene);
+
+    g_assemblyGraph->determineGraphInfo();
+    displayGraphDetails();
+
+    //Now that the graph has changed, we have to reset BLAST and contiguity
+    //stuff, as they may no longer apply.
+    cleanUpAllBlast();
+    g_assemblyGraph->resetNodeContiguityStatus();
+}
+
+void MainWindow::mergeSelectedNodes()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedNodes();
+    if (selectedNodes.size() < 2)
+    {
+        QMessageBox::information(this, "Not enough nodes selected", "You must first select two or more nodes before using the 'Merge selected nodes' function.");
+        return;
+    }
+
+    //Nodes are always merged in pairs (both positive and negative), so we
+    //want to compile a list of only positive nodes.
+    QList<DeBruijnNode *> nodesToMerge;
+    for (size_t i = 0; i < selectedNodes.size(); ++i)
+    {
+        DeBruijnNode * node = selectedNodes[i];
+        if (node->isNegativeNode())
+            node = node->getReverseComplement();
+        if (!nodesToMerge.contains(node))
+            nodesToMerge.push_back(node);
+    }
+
+    if (nodesToMerge.size() < 2)
+    {
+        QMessageBox::information(this, "Not enough nodes selected", "You must first select two or more nodes before using the 'Merge selected nodes' function. "
+                                                                    "Note that two complementary nodes only count as a single node regarding a merge.");
+        return;
+    }
+
+    bool success = g_assemblyGraph->mergeNodes(nodesToMerge, m_scene, true);
+
+    if (!success)
+    {
+        QMessageBox::information(this, "Nodes cannot be merged", "You can only merge nodes that are in a single, unbranching path with no extra edges.");
+        return;
+    }
+
+    g_assemblyGraph->determineGraphInfo();
+    displayGraphDetails();
+
+    //Now that the graph has changed, we have to reset BLAST and contiguity
+    //stuff, as they may no longer apply.
+    cleanUpAllBlast();
+    g_assemblyGraph->resetNodeContiguityStatus();
+}
+
+void MainWindow::mergeAllPossible()
+{
+    int merges;
+    {
+        MyProgressDialog progress(this, "Merging nodes", true, "Cancel merge", "Cancelling merge...",
+                                  "Clicking this button will stop the merging process. Merges that have already completed will remain "
+                                  "merged but no further merging will take place.");
+
+        progress.setWindowModality(Qt::WindowModal);
+        progress.setMaxValue(100);
+        progress.show();
+
+        connect(g_assemblyGraph.data(), SIGNAL(setMergeTotalCount(int)), &progress, SLOT(setMaxValue(int)));
+        connect(g_assemblyGraph.data(), SIGNAL(setMergeCompletedCount(int)), &progress, SLOT(setValue(int)));
+
+
+        g_graphicsView->viewport()->setUpdatesEnabled(false);
+        merges = g_assemblyGraph->mergeAllPossible(m_scene, &progress);
+        g_graphicsView->viewport()->setUpdatesEnabled(true);
+    }
+
+    if (merges > 0)
+    {
+        g_assemblyGraph->determineGraphInfo();
+        displayGraphDetails();
+
+        //Now that the graph has changed, we have to reset BLAST and contiguity
+        //stuff, as they may no longer apply.
+        cleanUpAllBlast();
+        g_assemblyGraph->resetNodeContiguityStatus();
+    }
+    else
+        QMessageBox::information(this, "No possible merges", "The graph contains no nodes that can be merged.");
+}
+
+
+void MainWindow::cleanUpAllBlast()
+{
+    g_blastSearch->cleanUp();
+    g_assemblyGraph->clearAllBlastHitPointers();
+    ui->blastQueryComboBox->clear();
+
+    if (m_blastSearchDialog != 0)
+    {
+        delete m_blastSearchDialog;
+        m_blastSearchDialog = 0;
+    }
+}
+
+
+
+void MainWindow::changeNodeName()
+{
+    DeBruijnNode * selectedNode = m_scene->getOnePositiveSelectedNode();
+    if (selectedNode == 0)
+    {
+        QMessageBox::information(this, "Improper selection", "You must select exactly one node in the graph before using this function.");
+        return;
+    }
+
+    QString oldName = selectedNode->getNameWithoutSign();
+    ChangeNodeNameDialog changeNodeNameDialog(this, oldName);
+
+    if (changeNodeNameDialog.exec()) //The user clicked OK
+    {
+        g_assemblyGraph->changeNodeName(oldName, changeNodeNameDialog.getNewName());
+        selectionChanged();
+        cleanUpAllBlast();
+    }
+}
+
+void MainWindow::changeNodeDepth()
+{
+    std::vector<DeBruijnNode *> selectedNodes = m_scene->getSelectedPositiveNodes();
+    if (selectedNodes.size() == 0)
+    {
+        QMessageBox::information(this, "Improper selection", "You must select at least one node in the graph before using this function.");
+        return;
+    }
+
+    double oldDepth = g_assemblyGraph->getMeanDepth(selectedNodes);
+    ChangeNodeDepthDialog changeNodeDepthDialog(this, &selectedNodes,
+                                                oldDepth);
+
+    if (changeNodeDepthDialog.exec()) //The user clicked OK
+    {
+        g_assemblyGraph->changeNodeDepth(&selectedNodes,
+                                             changeNodeDepthDialog.getNewDepth());
+        selectionChanged();
+        g_assemblyGraph->recalculateAllDepthsRelativeToDrawnMean();
+        g_assemblyGraph->recalculateAllNodeWidths();
+        g_graphicsView->viewport()->update();
+    }
+}
+
+
+
+void MainWindow::openGraphInfoDialog()
+{
+    GraphInfoDialog graphInfoDialog(this);
+    graphInfoDialog.exec();
+}
diff --git a/ui/mainwindow.h b/ui/mainwindow.h
new file mode 100644
index 0000000..627e456
--- /dev/null
+++ b/ui/mainwindow.h
@@ -0,0 +1,171 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QGraphicsScene>
+#include <QMap>
+#include <QString>
+#include <vector>
+#include <QLineEdit>
+#include <QRectF>
+#include "../program/globals.h"
+#include <QThread>
+#include "../ogdf/energybased/FMMMLayout.h"
+
+class GraphicsViewZoom;
+class MyGraphicsScene;
+class DeBruijnNode;
+class DeBruijnEdge;
+class BlastSearchDialog;
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit MainWindow(QString fileToLoadOnStartup = "", bool drawGraphAfterLoad = false);
+    ~MainWindow();
+
+private:
+    Ui::MainWindow *ui;
+    MyGraphicsScene * m_scene;
+
+    GraphicsViewZoom * m_graphicsViewZoom;
+    double m_previousZoomSpinBoxValue;
+    QThread * m_layoutThread;
+    ogdf::FMMMLayout * m_fmmm;
+    QString m_imageFilter;
+    QString m_fileToLoadOnStartup;
+    bool m_drawGraphAfterLoad;
+    UiState m_uiState;
+    BlastSearchDialog * m_blastSearchDialog;
+    bool m_alreadyShown;
+
+    void cleanUp();
+    void displayGraphDetails();
+    void clearGraphDetails();
+    void resetScene();
+    void layoutGraph();
+    void addGraphicsItemsToScene();
+    void zoomToFitRect(QRectF rect);
+    void zoomToFitScene();
+    void setZoomSpinBoxStep();
+    void getSelectedNodeInfo(int & selectedNodeCount, QString & selectedNodeCountText, QString & selectedNodeListText, QString & selectedNodeLengthText, QString &selectedNodeDepthText);
+    QString getSelectedEdgeListText();
+    std::vector<DeBruijnNode *> getNodesFromLineEdit(QLineEdit * lineEdit, bool exactMatch, std::vector<QString> * nodesNotInGraph = 0);
+    void setSceneRectangle();
+    void loadGraph2(GraphFileType graphFileType, QString filename);
+    void setInfoTexts();
+    void setUiState(UiState uiState);
+    void selectBasedOnContiguity(ContiguityStatus contiguityStatus);
+    void setWidgetsFromSettings();
+    QString getDefaultImageFileName();
+    void setNodeColourSchemeComboBox(NodeColourScheme nodeColourScheme);
+    void setGraphScopeComboBox(GraphScope graphScope);
+    void setupBlastQueryComboBox();
+    bool checkForImageSave();
+    QString convertGraphFileTypeToString(GraphFileType graphFileType);
+    void setSelectedNodesWidgetsVisibility(bool visible);
+    void setSelectedEdgesWidgetsVisibility(bool visible);
+    void setStartingNodesWidgetVisibility(bool visible);
+    void setNodeDistanceWidgetVisibility(bool visible);
+    void setDepthRangeWidgetVisibility(bool visible);
+    static QByteArray makeStringUrlSafe(QByteArray s);
+    void removeGraphicsItemNodes(const std::vector<DeBruijnNode *> * nodes, bool reverseComplement);
+    void removeGraphicsItemEdges(const std::vector<DeBruijnEdge *> * edges, bool reverseComplement);
+    void removeAllGraphicsEdgesFromNode(DeBruijnNode * node, bool reverseComplement);
+    std::vector<DeBruijnNode *> addComplementaryNodes(std::vector<DeBruijnNode *> nodes);
+
+private slots:
+    void loadGraph(QString fullFileName = "");
+    void loadCSV(QString fullFileNAme = "");
+    void selectionChanged();
+    void graphScopeChanged();
+    void drawGraph();
+    void zoomSpinBoxChanged();
+    void zoomedWithMouseWheel();
+    void copySelectedSequencesToClipboardActionTriggered();
+    void copySelectedSequencesToClipboard();
+    void saveSelectedSequencesToFileActionTriggered();
+    void saveSelectedSequencesToFile();
+    void copySelectedPathToClipboard();
+    void saveSelectedPathToFile();
+    void switchColourScheme();
+    void determineContiguityFromSelectedNode();
+    void saveImageCurrentView();
+    void saveImageEntireScene();
+    void setTextDisplaySettings();
+    void fontButtonPressed();
+    void setNodeCustomColour();
+    void setNodeCustomLabel();
+    void hideNodes();
+    void openSettingsDialog();
+    void openAboutDialog();
+    void selectUserSpecifiedNodes();
+    void graphLayoutFinished();
+    void openBlastSearchDialog();
+    void blastChanged();
+    void blastQueryChanged();
+    void showHidePanels();
+    void graphLayoutCancelled();
+    void bringSelectedNodesToFront();
+    void selectNodesWithBlastHits();
+    void selectAll();
+    void selectNone();
+    void invertSelection();
+    void zoomToSelection();
+    void selectContiguous();
+    void selectMaybeContiguous();
+    void selectNotContiguous();
+    void openBandageUrl();
+    void nodeDistanceChanged();
+    void depthRangeChanged();
+    void afterMainWindowShow();
+    void startingNodesExactMatchChanged();
+    void openPathSpecifyDialog();
+    void nodeWidthChanged();
+    void saveEntireGraphToFasta();
+    void saveEntireGraphToFastaOnlyPositiveNodes();
+    void saveEntireGraphToGfa();
+    void saveVisibleGraphToGfa();
+    void webBlastSelectedNodes();
+    void removeSelection();
+    void duplicateSelectedNodes();
+    void mergeSelectedNodes();
+    void mergeAllPossible();
+    void cleanUpAllBlast();
+    void changeNodeName();
+    void changeNodeDepth();
+    void openGraphInfoDialog();
+
+protected:
+      void showEvent(QShowEvent *ev);
+
+signals:
+      void windowLoaded();
+
+};
+
+#endif // MAINWINDOW_H
diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui
new file mode 100644
index 0000000..7ac8182
--- /dev/null
+++ b/ui/mainwindow.ui
@@ -0,0 +1,2282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1465</width>
+    <height>924</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Bandage</string>
+  </property>
+  <property name="windowIcon">
+   <iconset resource="../images/images.qrc">
+    <normaloff>:/icons/icon.png</normaloff>:/icons/icon.png</iconset>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <layout class="QHBoxLayout" name="horizontalLayout">
+    <property name="spacing">
+     <number>0</number>
+    </property>
+    <property name="leftMargin">
+     <number>0</number>
+    </property>
+    <property name="topMargin">
+     <number>0</number>
+    </property>
+    <property name="rightMargin">
+     <number>0</number>
+    </property>
+    <property name="bottomMargin">
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="VerticalScrollArea" name="controlsScrollArea">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="minimumSize">
+       <size>
+        <width>0</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="verticalScrollBarPolicy">
+       <enum>Qt::ScrollBarAsNeeded</enum>
+      </property>
+      <property name="widgetResizable">
+       <bool>true</bool>
+      </property>
+      <widget class="QWidget" name="controlsScrollAreaWidgetContents">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>0</y>
+         <width>289</width>
+         <height>1058</height>
+        </rect>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <item>
+         <widget class="QWidget" name="graphDetailsWidget" native="true">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <layout class="QGridLayout" name="gridLayout_6">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <item row="2" column="1">
+            <widget class="QWidget" name="widget_14" native="true">
+             <layout class="QGridLayout" name="gridLayout_4">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <property name="bottomMargin">
+               <number>0</number>
+              </property>
+              <property name="verticalSpacing">
+               <number>0</number>
+              </property>
+              <item row="1" column="0">
+               <widget class="QLabel" name="label_6">
+                <property name="text">
+                 <string>Edges:</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1">
+               <widget class="QLabel" name="edgeCountLabel">
+                <property name="text">
+                 <string>0</string>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="0">
+               <widget class="QLabel" name="label_8">
+                <property name="text">
+                 <string>Total length:</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="1">
+               <widget class="QLabel" name="totalLengthLabel">
+                <property name="text">
+                 <string>0</string>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="1">
+               <widget class="QLabel" name="nodeCountLabel">
+                <property name="text">
+                 <string>0</string>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="0">
+               <widget class="QLabel" name="label_2">
+                <property name="text">
+                 <string>Nodes:</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+           <item row="1" column="0" colspan="2">
+            <widget class="Line" name="line_2">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item row="2" column="0">
+            <widget class="InfoTextWidget" name="graphInformationInfoText" native="true">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>16</width>
+               <height>16</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="0" colspan="2">
+            <widget class="QLabel" name="label_7">
+             <property name="font">
+              <font>
+               <weight>75</weight>
+               <bold>true</bold>
+              </font>
+             </property>
+             <property name="text">
+              <string>Graph information</string>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="1">
+            <widget class="QPushButton" name="moreInfoButton">
+             <property name="text">
+              <string>More info</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Fixed</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>15</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QWidget" name="graphDrawingWidget" native="true">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_2">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="label_5">
+             <property name="font">
+              <font>
+               <weight>75</weight>
+               <bold>true</bold>
+              </font>
+             </property>
+             <property name="text">
+              <string>Graph drawing</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="Line" name="line">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QWidget" name="graphDrawingWidget_2" native="true">
+             <layout class="QGridLayout" name="graphDrawingGridLayout">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item row="2" column="0">
+               <widget class="InfoTextWidget" name="startingNodesMatchTypeInfoText" native="true">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0">
+               <widget class="InfoTextWidget" name="startingNodesInfoText" native="true">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="0">
+               <widget class="InfoTextWidget" name="graphScopeInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="2">
+               <widget class="QWidget" name="startingNodesMatchTypeWidget" native="true">
+                <layout class="QHBoxLayout" name="horizontalLayout_5">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                 <property name="leftMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QRadioButton" name="startingNodesExactMatchRadioButton">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Exact</string>
+                   </property>
+                   <property name="checked">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QRadioButton" name="startingNodesPartialMatchRadioButton">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Partial</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item row="3" column="0">
+               <widget class="InfoTextWidget" name="nodeDistanceInfoText" native="true">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="6" column="0">
+               <widget class="InfoTextWidget" name="nodeStyleInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="6" column="2">
+               <widget class="QWidget" name="nodeStyleWidget" native="true">
+                <layout class="QHBoxLayout" name="horizontalLayout_6">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                 <property name="leftMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QRadioButton" name="singleNodesRadioButton">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Single</string>
+                   </property>
+                   <property name="checked">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QRadioButton" name="doubleNodesRadioButton">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="text">
+                    <string>Double</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item row="9" column="1" colspan="2">
+               <widget class="QPushButton" name="drawGraphButton">
+                <property name="text">
+                 <string>Draw graph</string>
+                </property>
+               </widget>
+              </item>
+              <item row="6" column="1">
+               <widget class="QLabel" name="nodeStyleLabel">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text">
+                 <string>Style:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="2">
+               <widget class="QSpinBox" name="nodeDistanceSpinBox">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+                <property name="maximum">
+                 <number>10000</number>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1">
+               <widget class="QLabel" name="startingNodesLabel">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text">
+                 <string>Node(s):</string>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="2">
+               <widget class="QLineEdit" name="startingNodesLineEdit">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="2">
+               <widget class="QComboBox" name="graphScopeComboBox">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <item>
+                 <property name="text">
+                  <string>Entire graph</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Around nodes</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Around BLAST hits</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Depth range</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+              <item row="0" column="1">
+               <widget class="QLabel" name="graphScopeLabel">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text">
+                 <string>Scope:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="1">
+               <widget class="QLabel" name="nodeDistanceLabel">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="text">
+                 <string>Distance:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="1">
+               <widget class="QLabel" name="startingNodesMatchTypeLabel">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text">
+                 <string>Match:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="4" column="2">
+               <widget class="QDoubleSpinBox" name="minDepthSpinBox">
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+                <property name="decimals">
+                 <number>1</number>
+                </property>
+                <property name="maximum">
+                 <double>1000000.000000000000000</double>
+                </property>
+               </widget>
+              </item>
+              <item row="4" column="0">
+               <widget class="InfoTextWidget" name="minDepthInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="9" column="0">
+               <widget class="InfoTextWidget" name="drawGraphInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="4" column="1">
+               <widget class="QLabel" name="minDepthLabel">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text">
+                 <string>Min:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="5" column="0">
+               <widget class="InfoTextWidget" name="maxDepthInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="5" column="1">
+               <widget class="QLabel" name="maxDepthLabel">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text">
+                 <string>Max:</string>
+                </property>
+               </widget>
+              </item>
+              <item row="5" column="2">
+               <widget class="QDoubleSpinBox" name="maxDepthSpinBox">
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+                <property name="decimals">
+                 <number>1</number>
+                </property>
+                <property name="maximum">
+                 <double>1000000.000000000000000</double>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_3">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Fixed</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>229</width>
+            <height>15</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QWidget" name="graphDisplayWidget" native="true">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="label_10">
+             <property name="font">
+              <font>
+               <weight>75</weight>
+               <bold>true</bold>
+              </font>
+             </property>
+             <property name="text">
+              <string>Graph display</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="Line" name="line_5">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QWidget" name="widget_2" native="true">
+             <layout class="QGridLayout" name="gridLayout_8">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item row="2" column="0">
+               <widget class="InfoTextWidget" name="nodeColourInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="0">
+               <widget class="InfoTextWidget" name="zoomInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="0">
+               <widget class="InfoTextWidget" name="contiguityInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="2">
+               <widget class="QDoubleSpinBox" name="zoomSpinBox">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+                <property name="suffix">
+                 <string>%</string>
+                </property>
+                <property name="decimals">
+                 <number>1</number>
+                </property>
+                <property name="minimum">
+                 <double>5.000000000000000</double>
+                </property>
+                <property name="maximum">
+                 <double>500.000000000000000</double>
+                </property>
+                <property name="singleStep">
+                 <double>5.000000000000000</double>
+                </property>
+                <property name="value">
+                 <double>100.000000000000000</double>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="1" colspan="2">
+               <widget class="QPushButton" name="contiguityButton">
+                <property name="text">
+                 <string>Determine contiguity</string>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="1" colspan="2">
+               <widget class="QComboBox" name="coloursComboBox">
+                <item>
+                 <property name="text">
+                  <string>Random colours</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Uniform colour</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Colour by depth</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>BLAST hits (solid)</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>BLAST hits (rainbow)</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Colour by contiguity</string>
+                 </property>
+                </item>
+                <item>
+                 <property name="text">
+                  <string>Custom colours</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+              <item row="0" column="1">
+               <widget class="QLabel" name="label_13">
+                <property name="text">
+                 <string>Zoom:</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0">
+               <widget class="InfoTextWidget" name="nodeWidthInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1">
+               <widget class="QLabel" name="label_15">
+                <property name="text">
+                 <string>Node width:</string>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="2">
+               <widget class="QDoubleSpinBox" name="nodeWidthSpinBox">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="alignment">
+                 <set>Qt::AlignCenter</set>
+                </property>
+                <property name="suffix">
+                 <string/>
+                </property>
+                <property name="decimals">
+                 <number>1</number>
+                </property>
+                <property name="minimum">
+                 <double>0.500000000000000</double>
+                </property>
+                <property name="maximum">
+                 <double>1000.000000000000000</double>
+                </property>
+                <property name="singleStep">
+                 <double>0.500000000000000</double>
+                </property>
+                <property name="value">
+                 <double>5.000000000000000</double>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_4">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Fixed</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>15</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QWidget" name="nodeLabelsWidget" native="true">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_7">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="nodeLabelsG">
+             <property name="font">
+              <font>
+               <weight>75</weight>
+               <bold>true</bold>
+              </font>
+             </property>
+             <property name="text">
+              <string>Node labels</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="Line" name="line_6">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QWidget" name="widget_8" native="true">
+             <layout class="QGridLayout" name="gridLayout_7">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item row="0" column="0">
+               <widget class="InfoTextWidget" name="nodeLabelsInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0">
+               <widget class="InfoTextWidget" name="nodeFontInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1">
+               <widget class="QPushButton" name="fontButton">
+                <property name="text">
+                 <string>Font</string>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="2">
+               <widget class="QCheckBox" name="textOutlineCheckBox">
+                <property name="text">
+                 <string>Text outline</string>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="1" colspan="2">
+               <widget class="QWidget" name="widget_13" native="true">
+                <layout class="QGridLayout" name="gridLayout_3">
+                 <property name="leftMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="topMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="rightMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="bottomMargin">
+                  <number>0</number>
+                 </property>
+                 <property name="verticalSpacing">
+                  <number>0</number>
+                 </property>
+                 <item row="0" column="0">
+                  <widget class="QCheckBox" name="nodeCustomLabelsCheckBox">
+                   <property name="text">
+                    <string>Custom</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="0" column="1">
+                  <widget class="QCheckBox" name="nodeNamesCheckBox">
+                   <property name="text">
+                    <string>Name</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="0">
+                  <widget class="QCheckBox" name="nodeLengthsCheckBox">
+                   <property name="text">
+                    <string>Length</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="1" column="1">
+                  <widget class="QCheckBox" name="nodeDepthCheckBox">
+                   <property name="text">
+                    <string>Depth</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="0">
+                  <widget class="QCheckBox" name="blastHitsCheckBox">
+                   <property name="text">
+                    <string>BLAST hits</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="4" column="1">
+                  <widget class="QComboBox" name="csvComboBox">
+                   <property name="enabled">
+                    <bool>false</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item row="3" column="1">
+                  <widget class="QCheckBox" name="csvCheckBox">
+                   <property name="text">
+                    <string>CSV data:</string>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_6">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Fixed</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>229</width>
+            <height>15</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QWidget" name="blastSearchWidget" native="true">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <layout class="QVBoxLayout" name="verticalLayout_10">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="nodeLabelsG_2">
+             <property name="font">
+              <font>
+               <weight>75</weight>
+               <bold>true</bold>
+              </font>
+             </property>
+             <property name="text">
+              <string>BLAST</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="Line" name="line_7">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QWidget" name="widget_4" native="true">
+             <layout class="QGridLayout" name="gridLayout_5">
+              <property name="leftMargin">
+               <number>0</number>
+              </property>
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <property name="rightMargin">
+               <number>0</number>
+              </property>
+              <item row="1" column="0">
+               <widget class="InfoTextWidget" name="blastQueryInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1">
+               <widget class="QLabel" name="label_4">
+                <property name="text">
+                 <string>Query:</string>
+                </property>
+                <property name="wordWrap">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="0">
+               <widget class="InfoTextWidget" name="blastSearchInfoText" native="true">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>16</width>
+                  <height>16</height>
+                 </size>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="2">
+               <widget class="QComboBox" name="blastQueryComboBox">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <item>
+                 <property name="text">
+                  <string>none</string>
+                 </property>
+                </item>
+               </widget>
+              </item>
+              <item row="0" column="1" colspan="2">
+               <widget class="QPushButton" name="blastSearchButton">
+                <property name="text">
+                 <string>Create/view BLAST search</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>0</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+    <item>
+     <widget class="QWidget" name="graphicsViewWidget" native="true">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_9">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QWidget" name="widget_15" native="true"/>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <widget class="VerticalScrollArea" name="selectionScrollArea">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="widgetResizable">
+       <bool>true</bool>
+      </property>
+      <widget class="QWidget" name="selectionScrollAreaWidgetContents">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>0</y>
+         <width>249</width>
+         <height>899</height>
+        </rect>
+       </property>
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_4">
+        <item>
+         <widget class="QLabel" name="label_14">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <weight>75</weight>
+            <bold>true</bold>
+           </font>
+          </property>
+          <property name="text">
+           <string>Find nodes</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="Line" name="line_10">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QWidget" name="nodeSelectionWidget" native="true">
+          <property name="enabled">
+           <bool>true</bool>
+          </property>
+          <layout class="QGridLayout" name="gridLayout_2">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item row="1" column="0">
+            <widget class="InfoTextWidget" name="selectionSearchNodesMatchTypeInfoText" native="true">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>16</width>
+               <height>16</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="2">
+            <widget class="QRadioButton" name="selectionSearchNodesExactMatchRadioButton">
+             <property name="text">
+              <string>Exact</string>
+             </property>
+             <property name="checked">
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1">
+            <widget class="QLabel" name="label_12">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="text">
+              <string>Node(s):</string>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="0">
+            <widget class="InfoTextWidget" name="selectionSearchInfoText" native="true">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>16</width>
+               <height>16</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="1">
+            <widget class="QLabel" name="label_16">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="text">
+              <string>Match:</string>
+             </property>
+            </widget>
+           </item>
+           <item row="1" column="3">
+            <widget class="QRadioButton" name="selectionSearchNodesPartialMatchRadioButton">
+             <property name="text">
+              <string>Partial</string>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="2" colspan="2">
+            <widget class="QLineEdit" name="selectionSearchNodesLineEdit">
+             <property name="enabled">
+              <bool>true</bool>
+             </property>
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="selectNodesButton">
+          <property name="text">
+           <string>Find node(s)</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QWidget" name="selectedNodesSpacerWidget" native="true">
+          <layout class="QVBoxLayout" name="verticalLayout_5">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <spacer name="selectedNodesSpacer">
+             <property name="orientation">
+              <enum>Qt::Vertical</enum>
+             </property>
+             <property name="sizeType">
+              <enum>QSizePolicy::Fixed</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>20</width>
+               <height>60</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="selectedNodesTitleLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <weight>75</weight>
+            <bold>true</bold>
+           </font>
+          </property>
+          <property name="text">
+           <string>Selected nodes</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="Line" name="selectedNodesLine1">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPlainTextEdit" name="selectedNodesTextEdit">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Ignored" vsizetype="Minimum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="readOnly">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="selectedNodesLengthLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string>Total length:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="selectedNodesDepthLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string>Mean depth:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="Line" name="selectedNodesLine2">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QWidget" name="selectedNodesModificationWidget" native="true">
+          <layout class="QGridLayout" name="gridLayout">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item row="0" column="0">
+            <widget class="InfoTextWidget" name="setColourAndLabelInfoText" native="true">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>16</width>
+               <height>16</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="2">
+            <widget class="QPushButton" name="setNodeCustomLabelButton">
+             <property name="toolTip">
+              <string>Ctrl+L</string>
+             </property>
+             <property name="text">
+              <string>Set label</string>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1">
+            <widget class="QPushButton" name="setNodeCustomColourButton">
+             <property name="toolTip">
+              <string>Ctrl+O</string>
+             </property>
+             <property name="text">
+              <string>Set colour</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QWidget" name="selectedEdgesSpacerWidget" native="true">
+          <layout class="QVBoxLayout" name="verticalLayout_6">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <spacer name="selectedEdgesSpacer">
+             <property name="orientation">
+              <enum>Qt::Vertical</enum>
+             </property>
+             <property name="sizeType">
+              <enum>QSizePolicy::Fixed</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>20</width>
+               <height>60</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="selectedEdgesTitleLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <weight>75</weight>
+            <bold>true</bold>
+           </font>
+          </property>
+          <property name="text">
+           <string>Selected edges</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="Line" name="selectedEdgesLine">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPlainTextEdit" name="selectedEdgesTextEdit">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Ignored" vsizetype="Minimum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="readOnly">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_5">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>1465</width>
+     <height>22</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionLoad_graph"/>
+    <addaction name="actionLoad_CSV"/>
+    <addaction name="separator"/>
+    <addaction name="actionSave_image_current_view"/>
+    <addaction name="actionSave_image_entire_scene"/>
+    <addaction name="separator"/>
+    <addaction name="actionExit"/>
+   </widget>
+   <widget class="QMenu" name="menuTools">
+    <property name="title">
+     <string>Tools</string>
+    </property>
+    <addaction name="actionSettings"/>
+   </widget>
+   <widget class="QMenu" name="menuView">
+    <property name="title">
+     <string>View</string>
+    </property>
+    <addaction name="actionControls_panel"/>
+    <addaction name="actionSelection_panel"/>
+   </widget>
+   <widget class="QMenu" name="menuSelection">
+    <property name="title">
+     <string>Select</string>
+    </property>
+    <widget class="QMenu" name="menuSelect_nodes_based_on_contiguity">
+     <property name="title">
+      <string>Select nodes based on contiguity</string>
+     </property>
+     <property name="icon">
+      <iconset resource="../images/images.qrc">
+       <normaloff>:/icons/contiguity.png</normaloff>:/icons/contiguity.png</iconset>
+     </property>
+     <addaction name="actionSelect_contiguous_nodes"/>
+     <addaction name="actionSelect_possibly_contiguous_nodes"/>
+     <addaction name="actionSelect_not_contiguous_nodes"/>
+    </widget>
+    <addaction name="actionSelect_all"/>
+    <addaction name="actionSelect_none"/>
+    <addaction name="actionInvert_selection"/>
+    <addaction name="separator"/>
+    <addaction name="actionBring_selected_nodes_to_front"/>
+    <addaction name="actionZoom_to_selection"/>
+    <addaction name="separator"/>
+    <addaction name="actionSelect_nodes_with_BLAST_hits"/>
+    <addaction name="menuSelect_nodes_based_on_contiguity"/>
+   </widget>
+   <widget class="QMenu" name="menuHelp">
+    <property name="title">
+     <string>Help</string>
+    </property>
+    <addaction name="actionAbout"/>
+    <addaction name="actionBandage_online_help"/>
+   </widget>
+   <widget class="QMenu" name="menuOutput">
+    <property name="title">
+     <string>Output</string>
+    </property>
+    <addaction name="actionCopy_selected_node_sequences_to_clipboard"/>
+    <addaction name="actionSave_selected_node_sequences_to_FASTA"/>
+    <addaction name="separator"/>
+    <addaction name="actionCopy_selected_node_path_to_clipboard"/>
+    <addaction name="actionSave_selected_node_path_to_FASTA"/>
+    <addaction name="actionSpecify_exact_path_for_copy_save"/>
+    <addaction name="separator"/>
+    <addaction name="actionSave_entire_graph_to_GFA"/>
+    <addaction name="actionSave_visible_graph_to_GFA"/>
+    <addaction name="separator"/>
+    <addaction name="actionSave_entire_graph_to_FASTA"/>
+    <addaction name="actionSave_entire_graph_to_FASTA_only_positive_nodes"/>
+    <addaction name="separator"/>
+    <addaction name="actionWeb_BLAST_selected_nodes"/>
+   </widget>
+   <widget class="QMenu" name="menuManipulate">
+    <property name="title">
+     <string>Edit</string>
+    </property>
+    <addaction name="actionHide_selected_nodes"/>
+    <addaction name="separator"/>
+    <addaction name="actionRemove_selection_from_graph"/>
+    <addaction name="actionDuplicate_selected_nodes"/>
+    <addaction name="actionMerge_selected_nodes"/>
+    <addaction name="actionMerge_all_possible_nodes"/>
+    <addaction name="separator"/>
+    <addaction name="actionChange_node_name"/>
+    <addaction name="actionChange_node_depth"/>
+   </widget>
+   <addaction name="menuFile"/>
+   <addaction name="menuManipulate"/>
+   <addaction name="menuTools"/>
+   <addaction name="menuView"/>
+   <addaction name="menuSelection"/>
+   <addaction name="menuOutput"/>
+   <addaction name="menuHelp"/>
+  </widget>
+  <widget class="QStatusBar" name="statusBar"/>
+  <action name="actionLoad_graph">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/load-256.png</normaloff>:/icons/load-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Load graph</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+O</string>
+   </property>
+  </action>
+  <action name="actionSave_image_current_view">
+   <property name="enabled">
+    <bool>true</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save image (current view)</string>
+   </property>
+  </action>
+  <action name="actionExit">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/exit-256.png</normaloff>:/icons/exit-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Exit</string>
+   </property>
+  </action>
+  <action name="actionSettings">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/settings-256.png</normaloff>:/icons/settings-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Settings</string>
+   </property>
+  </action>
+  <action name="actionAbout">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/information-256.png</normaloff>:/icons/information-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>About</string>
+   </property>
+  </action>
+  <action name="actionSave_image_entire_scene">
+   <property name="enabled">
+    <bool>true</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save image (entire scene)</string>
+   </property>
+  </action>
+  <action name="actionControls_panel">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Controls panel</string>
+   </property>
+  </action>
+  <action name="actionSelection_panel">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Selection panel</string>
+   </property>
+  </action>
+  <action name="actionBring_selected_nodes_to_front">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/bring-to-front.png</normaloff>:/icons/bring-to-front.png</iconset>
+   </property>
+   <property name="text">
+    <string>Bring selected nodes to front</string>
+   </property>
+   <property name="toolTip">
+    <string>Bring selected nodes to front</string>
+   </property>
+  </action>
+  <action name="actionSelect_nodes_with_BLAST_hits">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/BLAST.png</normaloff>:/icons/BLAST.png</iconset>
+   </property>
+   <property name="text">
+    <string>Select nodes with BLAST hits</string>
+   </property>
+   <property name="toolTip">
+    <string>Select nodes with BLAST hits</string>
+   </property>
+  </action>
+  <action name="actionSelect_all">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/select-all.png</normaloff>:/icons/select-all.png</iconset>
+   </property>
+   <property name="text">
+    <string>Select all</string>
+   </property>
+  </action>
+  <action name="actionInvert_selection">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/invert-selection.png</normaloff>:/icons/invert-selection.png</iconset>
+   </property>
+   <property name="text">
+    <string>Invert selection</string>
+   </property>
+  </action>
+  <action name="actionCopy_selected_node_sequences_to_clipboard">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/copy.png</normaloff>:/icons/copy.png</iconset>
+   </property>
+   <property name="text">
+    <string>Copy selected node sequences to clipboard</string>
+   </property>
+   <property name="toolTip">
+    <string>Copy selected node sequences to clipboard</string>
+   </property>
+  </action>
+  <action name="actionSave_selected_node_sequences_to_FASTA">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save selected node sequences to FASTA</string>
+   </property>
+   <property name="toolTip">
+    <string>Save selected node sequences to FASTA</string>
+   </property>
+  </action>
+  <action name="actionSelect_none">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/select-none.png</normaloff>:/icons/select-none.png</iconset>
+   </property>
+   <property name="text">
+    <string>Select none</string>
+   </property>
+  </action>
+  <action name="actionZoom_to_selection">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/zoom.png</normaloff>:/icons/zoom.png</iconset>
+   </property>
+   <property name="text">
+    <string>Zoom to fit selection</string>
+   </property>
+  </action>
+  <action name="actionSelect_possibly_contiguous_nodes">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/contiguity-maybe_contiguous.png</normaloff>:/icons/contiguity-maybe_contiguous.png</iconset>
+   </property>
+   <property name="text">
+    <string>Select possibly contiguous nodes</string>
+   </property>
+  </action>
+  <action name="actionSelect_contiguous_nodes">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/contiguity-contiguous.png</normaloff>:/icons/contiguity-contiguous.png</iconset>
+   </property>
+   <property name="text">
+    <string>Select contiguous nodes</string>
+   </property>
+  </action>
+  <action name="actionSelect_not_contiguous_nodes">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/contiguity-not_contiguous.png</normaloff>:/icons/contiguity-not_contiguous.png</iconset>
+   </property>
+   <property name="text">
+    <string>Select not contiguous nodes</string>
+   </property>
+  </action>
+  <action name="actionBandage_online_help">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/icon.png</normaloff>:/icons/icon.png</iconset>
+   </property>
+   <property name="text">
+    <string>Bandage online help</string>
+   </property>
+   <property name="toolTip">
+    <string>Bandage online help</string>
+   </property>
+  </action>
+  <action name="actionCopy_selected_node_path_to_clipboard">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/copy.png</normaloff>:/icons/copy.png</iconset>
+   </property>
+   <property name="text">
+    <string>Copy selected path sequence to clipboard</string>
+   </property>
+   <property name="toolTip">
+    <string>Copy selected path sequence to clipboard</string>
+   </property>
+  </action>
+  <action name="actionSave_selected_node_path_to_FASTA">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save selected path sequence to FASTA</string>
+   </property>
+   <property name="toolTip">
+    <string>Save selected path sequence to FASTA</string>
+   </property>
+  </action>
+  <action name="actionSpecify_exact_path_for_copy_save">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/specify-path.png</normaloff>:/icons/specify-path.png</iconset>
+   </property>
+   <property name="text">
+    <string>Specify exact path for copy/save</string>
+   </property>
+  </action>
+  <action name="actionLoad_CSV">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/load-256.png</normaloff>:/icons/load-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Load CSV data</string>
+   </property>
+   <property name="toolTip">
+    <string>Load CSV label data</string>
+   </property>
+  </action>
+  <action name="actionSave_entire_graph_to_FASTA">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save entire graph to FASTA (both positive and negative nodes)</string>
+   </property>
+  </action>
+  <action name="actionSave_entire_graph_to_FASTA_only_positive_nodes">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save entire graph to FASTA (only positive nodes)</string>
+   </property>
+  </action>
+  <action name="actionWeb_BLAST_selected_nodes">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/ncbi-256.png</normaloff>:/icons/ncbi-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Web BLAST selected nodes</string>
+   </property>
+  </action>
+  <action name="actionHide_selected_nodes">
+   <property name="text">
+    <string>Hide selected nodes</string>
+   </property>
+   <property name="shortcut">
+    <string>Del</string>
+   </property>
+  </action>
+  <action name="actionRemove_selection_from_graph">
+   <property name="text">
+    <string>Remove selection from graph</string>
+   </property>
+   <property name="shortcut">
+    <string>Shift+Del</string>
+   </property>
+  </action>
+  <action name="actionDuplicate_selected_nodes">
+   <property name="text">
+    <string>Duplicate selected nodes</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+D</string>
+   </property>
+  </action>
+  <action name="actionMerge_selected_nodes">
+   <property name="text">
+    <string>Merge selected nodes</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+M</string>
+   </property>
+  </action>
+  <action name="actionMerge_all_possible_nodes">
+   <property name="text">
+    <string>Merge all possible nodes</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+Shift+M</string>
+   </property>
+  </action>
+  <action name="actionSave_entire_graph_to_GFA">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save entire graph to GFA</string>
+   </property>
+  </action>
+  <action name="actionSave_visible_graph_to_GFA">
+   <property name="icon">
+    <iconset resource="../images/images.qrc">
+     <normaloff>:/icons/save-256.png</normaloff>:/icons/save-256.png</iconset>
+   </property>
+   <property name="text">
+    <string>Save visible graph to GFA</string>
+   </property>
+  </action>
+  <action name="actionChange_node_name">
+   <property name="text">
+    <string>Change node name</string>
+   </property>
+  </action>
+  <action name="actionChange_node_depth">
+   <property name="text">
+    <string>Change node depth</string>
+   </property>
+  </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>VerticalScrollArea</class>
+   <extends>QScrollArea</extends>
+   <header>verticalscrollarea.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>controlsScrollArea</tabstop>
+  <tabstop>graphScopeComboBox</tabstop>
+  <tabstop>startingNodesLineEdit</tabstop>
+  <tabstop>startingNodesExactMatchRadioButton</tabstop>
+  <tabstop>startingNodesPartialMatchRadioButton</tabstop>
+  <tabstop>nodeDistanceSpinBox</tabstop>
+  <tabstop>singleNodesRadioButton</tabstop>
+  <tabstop>doubleNodesRadioButton</tabstop>
+  <tabstop>drawGraphButton</tabstop>
+  <tabstop>zoomSpinBox</tabstop>
+  <tabstop>nodeWidthSpinBox</tabstop>
+  <tabstop>coloursComboBox</tabstop>
+  <tabstop>contiguityButton</tabstop>
+  <tabstop>nodeCustomLabelsCheckBox</tabstop>
+  <tabstop>nodeNamesCheckBox</tabstop>
+  <tabstop>nodeLengthsCheckBox</tabstop>
+  <tabstop>nodeDepthCheckBox</tabstop>
+  <tabstop>blastHitsCheckBox</tabstop>
+  <tabstop>fontButton</tabstop>
+  <tabstop>textOutlineCheckBox</tabstop>
+  <tabstop>blastSearchButton</tabstop>
+  <tabstop>blastQueryComboBox</tabstop>
+  <tabstop>selectionScrollArea</tabstop>
+  <tabstop>selectionSearchNodesLineEdit</tabstop>
+  <tabstop>selectionSearchNodesExactMatchRadioButton</tabstop>
+  <tabstop>selectionSearchNodesPartialMatchRadioButton</tabstop>
+  <tabstop>selectNodesButton</tabstop>
+  <tabstop>selectedNodesTextEdit</tabstop>
+  <tabstop>setNodeCustomColourButton</tabstop>
+  <tabstop>setNodeCustomLabelButton</tabstop>
+  <tabstop>selectedEdgesTextEdit</tabstop>
+ </tabstops>
+ <resources>
+  <include location="../images/images.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/ui/mygraphicsscene.cpp b/ui/mygraphicsscene.cpp
new file mode 100644
index 0000000..bee56d7
--- /dev/null
+++ b/ui/mygraphicsscene.cpp
@@ -0,0 +1,253 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "mygraphicsscene.h"
+#include "../graph/debruijnnode.h"
+#include "../graph/debruijnedge.h"
+#include "../graph/graphicsitemnode.h"
+#include "../graph/graphicsitemedge.h"
+#include "../graph/debruijnnode.h"
+
+MyGraphicsScene::MyGraphicsScene(QObject *parent) :
+    QGraphicsScene(parent)
+{
+}
+
+
+bool compareNodePointers(DeBruijnNode * a, DeBruijnNode * b)
+{
+    QString aName = a->getName();
+    QString bName = b->getName();
+
+    QString aName2 = aName;
+    aName2.chop(1);
+    QString bName2 = bName;
+    bName2.chop(1);
+
+    bool ok1, ok2;
+    long long aNum = aName2.toLongLong(&ok1);
+    long long bNum = bName2.toLongLong(&ok2);
+
+    //If the node names are essentially numbers, then sort them as numbers
+    if (ok1 && ok2 && aNum != bNum)
+        return aNum < bNum;
+
+    return aName < bName;
+}
+
+
+//This function returns all of the selected nodes, sorted by their node number.
+std::vector<DeBruijnNode *> MyGraphicsScene::getSelectedNodes()
+{
+    std::vector<DeBruijnNode *> returnVector;
+
+    QList<QGraphicsItem *> selection = selectedItems();
+    for (int i = 0; i < selection.size(); ++i)
+    {
+        QGraphicsItem * selectedItem = selection[i];
+        GraphicsItemNode * selectedNodeItem = dynamic_cast<GraphicsItemNode *>(selectedItem);
+        if (selectedNodeItem != 0)
+            returnVector.push_back(selectedNodeItem->m_deBruijnNode);
+    }
+
+    std::sort(returnVector.begin(), returnVector.end(), compareNodePointers);
+
+    return returnVector;
+}
+
+
+//This function works like getSelectedNodes, but only positive nodes are
+//returned.  If a negative node is selected, its positive complement is in the
+//results.  If both nodes in a pair are selected, then only the positive node
+//of the pair is in the results.
+std::vector<DeBruijnNode *> MyGraphicsScene::getSelectedPositiveNodes()
+{
+    std::vector<DeBruijnNode *> selectedNodes = getSelectedNodes();
+
+    //First turn all of the nodes to positive nodes.
+    std::vector<DeBruijnNode *> allPositive;
+    for (size_t i = 0; i < selectedNodes.size(); ++i)
+    {
+        DeBruijnNode * node = selectedNodes[i];
+        if (node->isNegativeNode())
+            node = node->getReverseComplement();
+        allPositive.push_back(node);
+    }
+
+    //Now remove duplicates.  Since the nodes are sorted, all duplicates should
+    //be adjacent to each other.
+    std::vector<DeBruijnNode *> uniquePositive;
+    for (size_t i = 0; i < allPositive.size(); ++i)
+    {
+        DeBruijnNode * node = allPositive[i];
+        DeBruijnNode * previousNode = 0;
+        if (i > 0)
+            previousNode = allPositive[i-1];
+        if (node != previousNode)
+            uniquePositive.push_back(node);
+    }
+
+    return uniquePositive;
+}
+
+//This function returns all of the selected graphics item nodes, unsorted.
+std::vector<GraphicsItemNode *> MyGraphicsScene::getSelectedGraphicsItemNodes()
+{
+    std::vector<GraphicsItemNode *> returnVector;
+
+    QList<QGraphicsItem *> selection = selectedItems();
+    for (int i = 0; i < selection.size(); ++i)
+    {
+        QGraphicsItem * selectedItem = selection[i];
+        GraphicsItemNode * selectedNodeItem = dynamic_cast<GraphicsItemNode *>(selectedItem);
+        if (selectedNodeItem != 0)
+            returnVector.push_back(selectedNodeItem);
+    }
+
+    return returnVector;
+}
+
+
+std::vector<DeBruijnEdge *> MyGraphicsScene::getSelectedEdges()
+{
+    std::vector<DeBruijnEdge *> returnVector;
+
+    QList<QGraphicsItem *> selection = selectedItems();
+    for (int i = 0; i < selection.size(); ++i)
+    {
+        QGraphicsItem * selectedItem = selection[i];
+        GraphicsItemEdge * selectedEdgeItem = dynamic_cast<GraphicsItemEdge *>(selectedItem);
+        if (selectedEdgeItem != 0)
+            returnVector.push_back(selectedEdgeItem->m_deBruijnEdge);
+    }
+
+    return returnVector;
+}
+
+
+
+DeBruijnNode * MyGraphicsScene::getOneSelectedNode()
+{
+    std::vector<DeBruijnNode *> selectedNodes = getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        return 0;
+    else
+        return selectedNodes[0];
+}
+
+DeBruijnEdge * MyGraphicsScene::getOneSelectedEdge()
+{
+    std::vector<DeBruijnEdge *> selectedEdges = getSelectedEdges();
+    if (selectedEdges.size() == 0)
+        return 0;
+    else
+        return selectedEdges[0];
+}
+
+//This function, like getOneSelectedNode, returns a single selected node from
+//graph and a 0 if it can't be done.  However, it will always return the
+//positive node in the pair, and if two complementary nodes are selected, it
+//will still work.
+DeBruijnNode * MyGraphicsScene::getOnePositiveSelectedNode()
+{
+    std::vector<DeBruijnNode *> selectedNodes = getSelectedNodes();
+    if (selectedNodes.size() == 0)
+        return 0;
+
+    else if (selectedNodes.size() == 1)
+    {
+        DeBruijnNode * selectedNode = selectedNodes[0];
+        if (selectedNode->isPositiveNode())
+            return selectedNode;
+        else
+            return selectedNode->getReverseComplement();
+    }
+
+    else if (selectedNodes.size() == 2)
+    {
+        DeBruijnNode * selectedNode1 = selectedNodes[0];
+        DeBruijnNode * selectedNode2 = selectedNodes[1];
+        if (selectedNode1->getReverseComplement() == selectedNode2)
+        {
+            if (selectedNode1->isPositiveNode())
+                return selectedNode1;
+            else
+                return selectedNode2;
+        }
+        else
+            return 0;
+    }
+
+    return 0;
+}
+
+double MyGraphicsScene::getTopZValue()
+{
+    double topZ = 0.0;
+
+    QList<QGraphicsItem *> allItems = items();
+    for (int i = 0; i < allItems.size(); ++i)
+    {
+        QGraphicsItem * item = allItems[i];
+        if (i == 0)
+            topZ = item->zValue();
+        else
+        {
+            double z = item->zValue();
+            if (z > topZ)
+                topZ = z;
+        }
+    }
+
+    return topZ;
+}
+
+
+//Expands the scene rectangle a bit beyond the items so they aren't drawn right to the edge.
+void MyGraphicsScene::setSceneRectangle()
+{
+    QRectF boundingRect = itemsBoundingRect();
+    double width = boundingRect.width();
+    double height = boundingRect.height();
+    double margin = std::max(width, height);
+    margin *= 0.05; //5% margin
+
+    setSceneRect(boundingRect.left() - margin, boundingRect.top() - margin,
+                 width + 2 * margin, height + 2 * margin);
+}
+
+
+
+//After the user drags nodes, it may be necessary to expand the scene rectangle
+//if the nodes were moved out of the existing rectangle.
+void MyGraphicsScene::possiblyExpandSceneRectangle(std::vector<GraphicsItemNode *> * movedNodes)
+{
+    QRectF currentSceneRect = sceneRect();
+    QRectF newSceneRect = currentSceneRect;
+
+    for (size_t i = 0; i < movedNodes->size(); ++i)
+    {
+        GraphicsItemNode * node = (*movedNodes)[i];
+        QRectF nodeRect = node->boundingRect();
+        newSceneRect = newSceneRect.united(nodeRect);
+    }
+
+    if (newSceneRect != currentSceneRect)
+        setSceneRect(newSceneRect);
+}
+
diff --git a/ui/mygraphicsscene.h b/ui/mygraphicsscene.h
new file mode 100644
index 0000000..44de624
--- /dev/null
+++ b/ui/mygraphicsscene.h
@@ -0,0 +1,47 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef MYGRAPHICSSCENE_H
+#define MYGRAPHICSSCENE_H
+
+#include <QGraphicsScene>
+#include <vector>
+
+class DeBruijnNode;
+class DeBruijnEdge;
+class GraphicsItemNode;
+
+class MyGraphicsScene : public QGraphicsScene
+{
+    Q_OBJECT
+public:
+    explicit MyGraphicsScene(QObject *parent = 0);
+    std::vector<DeBruijnNode *> getSelectedNodes();
+    std::vector<DeBruijnNode *> getSelectedPositiveNodes();
+    std::vector<GraphicsItemNode *> getSelectedGraphicsItemNodes();
+    std::vector<DeBruijnEdge *> getSelectedEdges();
+    DeBruijnNode * getOneSelectedNode();
+    DeBruijnEdge * getOneSelectedEdge();
+    DeBruijnNode * getOnePositiveSelectedNode();
+    double getTopZValue();
+    void setSceneRectangle();
+    void possiblyExpandSceneRectangle(std::vector<GraphicsItemNode *> * movedNodes);
+
+};
+
+#endif // MYGRAPHICSSCENE_H
diff --git a/ui/mygraphicsview.cpp b/ui/mygraphicsview.cpp
new file mode 100644
index 0000000..3cea4e7
--- /dev/null
+++ b/ui/mygraphicsview.cpp
@@ -0,0 +1,325 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "mygraphicsview.h"
+#include <QMouseEvent>
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include <QFont>
+#include "graphicsviewzoom.h"
+#include <qmath.h>
+#include <QMessageBox>
+#include <math.h>
+#include "../graph/graphicsitemnode.h"
+
+MyGraphicsView::MyGraphicsView(QObject * /*parent*/) :
+    QGraphicsView(), m_rotation(0.0)
+{
+    setDragMode(QGraphicsView::RubberBandDrag);
+    setAntialiasing(g_settings->antialiasing);
+    setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
+}
+
+
+
+void MyGraphicsView::mousePressEvent(QMouseEvent * event)
+{
+    if (event->modifiers() == Qt::CTRL)
+        setDragMode(QGraphicsView::ScrollHandDrag);
+    else if (event->button() == Qt::RightButton)
+        g_settings->nodeDragging = ONE_PIECE;
+
+    m_previousPos = event->pos();
+
+    QGraphicsView::mousePressEvent(event);
+}
+
+void MyGraphicsView::mouseReleaseEvent(QMouseEvent * event)
+{
+    QGraphicsView::mouseReleaseEvent(event);
+    setDragMode(QGraphicsView::RubberBandDrag);
+    g_settings->nodeDragging = NEARBY_PIECES;
+}
+
+void MyGraphicsView::mouseMoveEvent(QMouseEvent * event)
+{
+    //If the user drags the right mouse button while holding control,
+    //the view rotates.
+    bool rightButtonDown = event->buttons() & Qt::RightButton;
+    if (event->modifiers() == Qt::CTRL && rightButtonDown)
+    {
+        QPointF viewCentre(width() / 2.0, height() / 2.0);
+        double angle = angleBetweenTwoLines(viewCentre, m_previousPos, viewCentre, event->pos());
+        angle *= 57.295779513; //convert to degrees
+
+        rotate(angle);
+        m_rotation += angle;
+
+        m_previousPos = event->pos();
+
+        g_settings->nodeDragging = NO_DRAGGING;
+    }
+    else
+    {
+        QGraphicsView::mouseMoveEvent(event);
+    }
+}
+
+
+void MyGraphicsView::mouseDoubleClickEvent(QMouseEvent * event)
+{
+    //Find the node beneath the cursor.
+    QGraphicsItem * item = itemAt(event->pos());
+
+    GraphicsItemNode * graphicsItemNode = dynamic_cast<GraphicsItemNode *>(item);
+    if (graphicsItemNode != 0)
+        emit doubleClickedNode(graphicsItemNode->m_deBruijnNode);
+}
+
+//Adapted from:
+//http://stackoverflow.com/questions/2663570/how-to-calculate-both-positive-and-negative-angle-between-two-lines
+double MyGraphicsView::angleBetweenTwoLines(QPointF line1Start, QPointF line1End, QPointF line2Start, QPointF line2End)
+{
+    double a = line1End.x() - line1Start.x();
+    double b = line1End.y() - line1Start.y();
+    double c = line2End.x() - line2Start.x();
+    double d = line2End.y() - line2Start.y();
+
+    double atanA = atan2(a, b);
+    double atanB = atan2(c, d);
+
+    return atanA - atanB;
+}
+
+double MyGraphicsView::distance(double x1, double y1, double x2, double y2)
+{
+    double xDiff = x1 - x2;
+    double yDiff = y1 - y2;
+    return sqrt(xDiff * xDiff + yDiff * yDiff);
+}
+
+void MyGraphicsView::keyPressEvent(QKeyEvent * event)
+{
+    //This function uses angle in the same way that the mouse wheel code
+    //in GraphicsViewZoom does.  This keeps the zoom steps consistent
+    //between keyboard and mouse wheel.
+    int angle = 0;
+
+
+    bool shiftPressed = event->modifiers().testFlag(Qt::ShiftModifier);
+
+    //Ctrl+C (Command+C on Mac) copies the selected sequences to the clipboard.
+    if (event->key() == Qt::Key_C && (event->modifiers() & Qt::ControlModifier))
+        emit copySelectedSequencesToClipboard();
+
+    //Ctrl+S (Command+S on Mac) saves the selected sequences to a FASTA file.
+    else if (event->key() == Qt::Key_S && (event->modifiers() & Qt::ControlModifier))
+        emit saveSelectedSequencesToFile();
+
+    //Ctrl+plus (Command+plus on Mac) zooms the view in.  If shift is pressed
+    //as well, then it rotates clockwise.
+    else if (event->matches(QKeySequence::ZoomIn) ||
+            event->key() == Qt::Key_Equal ||
+            event->key() == Qt::Key_Plus)
+    {
+        if (shiftPressed)
+            changeRotation(1.0);
+        else
+            angle = 120;
+    }
+
+    //Ctrl+minus (Command+mins on Mac) zooms the view out.  If shift is pressed
+    //as well, then it rotates anticlockwise.
+    else if (event->matches(QKeySequence::ZoomOut) ||
+             event->key() == Qt::Key_Minus ||
+             event->key() == Qt::Key_Underscore)
+    {
+        if (shiftPressed)
+            changeRotation(-1.0);
+        else
+            angle = -120;
+    }
+
+    //Actually change the zoom now, if appropriate.
+    if (angle != 0)
+    {
+        double factor = qPow(m_zoom->m_zoomFactorBase, angle);
+        m_zoom->gentleZoom(factor, KEYBOARD);
+    }
+
+    //The event press event handling of QGraphicsView will take care of using
+    //the arrow keys to adjust scroll bars.
+    QGraphicsView::keyPressEvent(event);
+}
+
+void MyGraphicsView::setAntialiasing(bool antialiasingOn)
+{
+    if (antialiasingOn)
+    {
+        setRenderHint(QPainter::Antialiasing, true);
+        setRenderHint(QPainter::TextAntialiasing, true);
+        g_settings->labelFont.setStyleStrategy(QFont::PreferDefault);
+    }
+    else
+    {
+        setRenderHint(QPainter::Antialiasing, false);
+        setRenderHint(QPainter::TextAntialiasing, false);
+        g_settings->labelFont.setStyleStrategy(QFont::NoAntialias);
+    }
+}
+
+bool MyGraphicsView::isPointVisible(QPointF p)
+{
+    QPointF corner1, corner2, corner3, corner4;
+    getFourViewportCornersInSceneCoordinates(&corner1, &corner2, &corner3, &corner4);
+    QLineF boundary1(corner1, corner2);
+    QLineF boundary2(corner2, corner3);
+    QLineF boundary3(corner3, corner4);
+    QLineF boundary4(corner4, corner1);
+
+    return !(differentSidesOfLine(p, corner3, boundary1) || differentSidesOfLine(p, corner4, boundary2) ||
+             differentSidesOfLine(p, corner1, boundary3) || differentSidesOfLine(p, corner2, boundary4));
+}
+
+
+//This function tests to see if two given points, p1 and p2, are on different sides of a line.
+bool MyGraphicsView::differentSidesOfLine(QPointF p1, QPointF p2, QLineF line)
+{
+    bool p1Side = sideOfLine(p1, line);
+    bool p2Side = sideOfLine(p2, line);
+    return (p1Side != p2Side);
+}
+//This function tests to see if all four points are the same side of a line (returns false) or
+//some are on different sides (returns true).
+bool MyGraphicsView::differentSidesOfLine(QPointF p1, QPointF p2, QPointF p3, QPointF p4, QLineF line)
+{
+    bool p1Side = sideOfLine(p1, line);
+    bool p2Side = sideOfLine(p2, line);
+    if (p1Side != p2Side)
+        return true;
+
+    bool p3Side = sideOfLine(p3, line);
+    if (p1Side != p3Side)
+        return true;
+
+    bool p4Side = sideOfLine(p4, line);
+    return (p1Side != p4Side);
+}
+
+bool MyGraphicsView::sideOfLine(QPointF p, QLineF line)
+{
+    return ((p.y() - line.p1().y() - (p.x() - line.p1().x())*(line.p2().y() - line.p1().y())/(line.p2().x() - line.p1().x())) > 0);
+}
+
+
+//This function assumes that the line does intersect with the viewport
+//boundary - i.e. one end of the line is in the viewport and one is not.
+QPointF MyGraphicsView::findIntersectionWithViewportBoundary(QLineF line)
+{
+    QPointF c1, c2, c3, c4;
+    getFourViewportCornersInSceneCoordinates(&c1, &c2, &c3, &c4);
+    QLineF boundary1(c1, c2);
+    QLineF boundary2(c2, c3);
+    QLineF boundary3(c3, c4);
+    QLineF boundary4(c4, c1);
+
+    QPointF intersection;
+
+    if (line.intersect(boundary1, &intersection) == QLineF::BoundedIntersection)
+        return intersection;
+    if (line.intersect(boundary2, &intersection) == QLineF::BoundedIntersection)
+        return intersection;
+    if (line.intersect(boundary3, &intersection) == QLineF::BoundedIntersection)
+        return intersection;
+    if (line.intersect(boundary4, &intersection) == QLineF::BoundedIntersection)
+        return intersection;
+
+    //The code should not get here, as the line should intersect with one of
+    //the boundaries.
+    return intersection;
+}
+
+
+//If a line intersections the scene rectangle but both of its end points are
+//outside the scene rectangle, then this function will return the part of the
+//line which is in the scene rectangle.
+QLineF MyGraphicsView::findVisiblePartOfLine(QLineF line, bool * success)
+{
+    QPointF c1, c2, c3, c4;
+    getFourViewportCornersInSceneCoordinates(&c1, &c2, &c3, &c4);
+    QLineF boundary1(c1, c2);
+    QLineF boundary2(c2, c3);
+    QLineF boundary3(c3, c4);
+    QLineF boundary4(c4, c1);
+
+    QPointF intersection1;
+    QPointF intersection2;
+    QPointF intersection3;
+    QPointF intersection4;
+
+    *success = true;
+
+    bool b1Intersects = (line.intersect(boundary1, &intersection1) == QLineF::BoundedIntersection);
+    bool b2Intersects = (line.intersect(boundary2, &intersection2) == QLineF::BoundedIntersection);
+    if (b1Intersects && b2Intersects)
+        return QLineF(intersection1, intersection2);
+
+    bool b3Intersects = (line.intersect(boundary3, &intersection3) == QLineF::BoundedIntersection);
+    if (b1Intersects && b3Intersects)
+        return QLineF(intersection1, intersection3);
+    if (b2Intersects && b3Intersects)
+        return QLineF(intersection2, intersection3);
+
+    bool b4Intersects = (line.intersect(boundary4, &intersection4) == QLineF::BoundedIntersection);
+    if (b1Intersects && b4Intersects)
+        return QLineF(intersection1, intersection4);
+    if (b2Intersects && b4Intersects)
+        return QLineF(intersection2, intersection4);
+    if (b3Intersects && b4Intersects)
+        return QLineF(intersection3, intersection4);
+
+    *success = false;
+    return QLineF();
+}
+
+
+void MyGraphicsView::getFourViewportCornersInSceneCoordinates(QPointF * c1, QPointF * c2, QPointF * c3, QPointF * c4)
+{
+    *c1 = mapToScene(QPoint(0, 0));
+    *c2 = mapToScene(QPoint(viewport()->width(), 0));
+    *c3 = mapToScene(QPoint(viewport()->width(), viewport()->height()));
+    *c4 = mapToScene(QPoint(0, viewport()->height()));
+}
+
+void MyGraphicsView::setRotation(double newRotation)
+{
+    undoRotation();
+    changeRotation(newRotation);
+}
+
+void MyGraphicsView::changeRotation(double rotationChange)
+{
+    rotate(rotationChange);
+    m_rotation += rotationChange;
+}
+
+void MyGraphicsView::undoRotation()
+{
+    rotate(-g_graphicsView->m_rotation);
+    m_rotation = 0.0;
+}
diff --git a/ui/mygraphicsview.h b/ui/mygraphicsview.h
new file mode 100644
index 0000000..11c50b1
--- /dev/null
+++ b/ui/mygraphicsview.h
@@ -0,0 +1,76 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef MYGRAPHICSVIEW_H
+#define MYGRAPHICSVIEW_H
+
+#include <QGraphicsView>
+#include <QPoint>
+#include <QLineF>
+
+class GraphicsViewZoom;
+class DeBruijnNode;
+
+class MyGraphicsView : public QGraphicsView
+{
+    Q_OBJECT
+public:
+    // CREATORS
+    explicit MyGraphicsView(QObject *parent = 0);
+
+    //ACCESSORS
+    double getRotation() const {return m_rotation;}
+
+    //MODIFERS
+    void setRotation(double newRotation);
+    void changeRotation(double rotationChange);
+    void undoRotation();
+
+
+    GraphicsViewZoom * m_zoom;
+    QPoint m_previousPos;
+
+    void setAntialiasing(bool antialiasingOn);
+    bool isPointVisible(QPointF p);
+    QPointF findIntersectionWithViewportBoundary(QLineF line);
+    QLineF findVisiblePartOfLine(QLineF line, bool * success);
+
+protected:
+    void mousePressEvent(QMouseEvent * event);
+    void mouseReleaseEvent(QMouseEvent * event);
+    void mouseMoveEvent(QMouseEvent * event);
+    void keyPressEvent(QKeyEvent * event);
+    void mouseDoubleClickEvent(QMouseEvent * event);
+
+private:
+    double m_rotation;
+
+    double distance(double x1, double y1, double x2, double y2);
+    double angleBetweenTwoLines(QPointF line1Start, QPointF line1End, QPointF line2Start, QPointF line2End);
+    void getFourViewportCornersInSceneCoordinates(QPointF * c1, QPointF * c2, QPointF * c3, QPointF * c4);
+    bool differentSidesOfLine(QPointF p1, QPointF p2, QLineF line);
+    bool differentSidesOfLine(QPointF p1, QPointF p2, QPointF p3, QPointF p4, QLineF line);
+    bool sideOfLine(QPointF p, QLineF line);
+
+signals:
+    void doubleClickedNode(DeBruijnNode * node);
+    void copySelectedSequencesToClipboard();
+    void saveSelectedSequencesToFile();
+};
+
+#endif // MYGRAPHICSVIEW_H
diff --git a/ui/myprogressdialog.cpp b/ui/myprogressdialog.cpp
new file mode 100644
index 0000000..1084cd9
--- /dev/null
+++ b/ui/myprogressdialog.cpp
@@ -0,0 +1,73 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "myprogressdialog.h"
+#include "ui_myprogressdialog.h"
+#include "../program/globals.h"
+
+MyProgressDialog::MyProgressDialog(QWidget * parent, QString message, bool showCancelButton,
+                                   QString cancelButtonText, QString cancelMessage, QString cancelInfoText) :
+    QDialog(parent),
+    ui(new Ui::MyProgressDialog),
+    m_cancelMessage(cancelMessage),
+    m_cancelled(false)
+{
+    setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
+
+    ui->setupUi(this);
+    QFont font;
+    QFont largeFont;
+    largeFont.setPointSize(font.pointSize() * 2);
+    ui->messageLabel->setText(message);
+    ui->messageLabel->setFont(largeFont);
+
+    ui->cancelWidget->setVisible(showCancelButton);
+    ui->cancelButton->setText(cancelButtonText);
+
+    setFixedHeight(sizeHint().height());
+    setFixedWidth(sizeHint().width() * 1.2);
+
+    ui->cancelInfoText->setInfoText(cancelInfoText);
+
+    connect(ui->cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
+}
+
+MyProgressDialog::~MyProgressDialog()
+{
+    delete ui;
+}
+
+
+void MyProgressDialog::cancel()
+{
+    ui->messageLabel->setText(m_cancelMessage);
+    ui->cancelButton->setEnabled(false);
+    m_cancelled = true;
+    emit halt();
+}
+
+
+void MyProgressDialog::setMaxValue(int max)
+{
+    ui->progressBar->setMaximum(max);
+}
+
+void MyProgressDialog::setValue(int value)
+{
+    ui->progressBar->setValue(value);
+}
diff --git a/ui/myprogressdialog.h b/ui/myprogressdialog.h
new file mode 100644
index 0000000..bb91a54
--- /dev/null
+++ b/ui/myprogressdialog.h
@@ -0,0 +1,58 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef MYPROGRESSDIALOG_H
+#define MYPROGRESSDIALOG_H
+
+#include <QDialog>
+#include <QString>
+
+namespace Ui {
+class MyProgressDialog;
+}
+
+class MyProgressDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    //CREATORS
+    explicit MyProgressDialog(QWidget * parent, QString message, bool showCancelButton,
+                              QString cancelButtonText = "", QString cancelMessage = "", QString cancelInfoText = "");
+    ~MyProgressDialog();
+
+    //ACCESSORS
+    bool wasCancelled() const {return m_cancelled;}
+
+public slots:
+    void setMaxValue(int max);
+    void setValue(int value);
+
+private:
+    Ui::MyProgressDialog *ui;
+    QString m_cancelMessage;
+    bool m_cancelled;
+
+private slots:
+    void cancel();
+
+signals:
+    void halt();
+};
+
+#endif // MYPROGRESSDIALOG_H
diff --git a/ui/myprogressdialog.ui b/ui/myprogressdialog.ui
new file mode 100644
index 0000000..a6e7fa8
--- /dev/null
+++ b/ui/myprogressdialog.ui
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MyProgressDialog</class>
+ <widget class="QDialog" name="MyProgressDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>269</width>
+    <height>129</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string/>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="messageLabel">
+     <property name="text">
+      <string>Progress message...</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QProgressBar" name="progressBar">
+     <property name="maximum">
+      <number>0</number>
+     </property>
+     <property name="value">
+      <number>0</number>
+     </property>
+     <property name="textVisible">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="cancelWidget" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>51</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="InfoTextWidget" name="cancelInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="cancelButton">
+        <property name="text">
+         <string>Cancel</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>50</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/ui/mytablewidget.cpp b/ui/mytablewidget.cpp
new file mode 100644
index 0000000..9daa58f
--- /dev/null
+++ b/ui/mytablewidget.cpp
@@ -0,0 +1,128 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "mytablewidget.h"
+
+#include <vector>
+#include <QHeaderView>
+#include <QScrollBar>
+#include <QKeyEvent>
+#include <QApplication>
+#include <QClipboard>
+
+MyTableWidget::MyTableWidget(QWidget * parent) :
+    QTableWidget(parent), m_smallFirstColumn(false), m_smallSecondColumn(false)
+{
+    verticalHeader()->hide();
+    horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
+    horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
+}
+
+
+void MyTableWidget::resizeColumns()
+{
+    //If sorting is enabled, the columns are given way too much space.
+    setSortingEnabled(false);
+    resizeColumnsToContents();
+    setSortingEnabled(true);
+
+    //For some table widgets, we set the first column to a minimum size, as it
+    //will hold the colour for both queries and hits.
+    int minColumnWidth = horizontalHeader()->minimumSectionSize();
+    if (m_smallFirstColumn)
+        horizontalHeader()->resizeSection(0, minColumnWidth);
+
+    std::vector<int> columnWidths;
+    int oldTotalColumnWidth = 0;
+    for (int i = 0; i < columnCount(); ++i)
+    {
+        int columnWidth = horizontalHeader()->sectionSize(i);
+        columnWidths.push_back(columnWidth);
+        oldTotalColumnWidth += columnWidth;
+    }
+
+    //If the total column width exceeds the size of the table, just leave things alone.
+    int tableWidth = viewport()->width();
+    if (oldTotalColumnWidth > tableWidth)
+        return;
+
+    //If the code got here, then there is width to spare in the table.  Resize each column
+    //(except for the first) to take up the whole width, keeping their relative size.
+
+    int newTotalColumnWidth = 0.0;
+    int startingColumn = 0;
+    if (m_smallFirstColumn)
+    {
+        startingColumn = 1;
+        newTotalColumnWidth += horizontalHeader()->sectionSize(0);
+    }
+    if (m_smallSecondColumn)
+    {
+        startingColumn = 2;
+        newTotalColumnWidth += horizontalHeader()->sectionSize(1);
+    }
+
+    for (int i = startingColumn; i < columnCount() - 1; ++i)
+    {
+        int oldColumnWidth = columnWidths[i];
+        double fraction = double(oldColumnWidth) / oldTotalColumnWidth;
+        int newColumnWidth = fraction * tableWidth;
+        newTotalColumnWidth += newColumnWidth;
+        horizontalHeader()->resizeSection(i, newColumnWidth);
+    }
+    int lastColumnWidth = tableWidth - newTotalColumnWidth;
+    horizontalHeader()->resizeSection(columnCount() - 1, lastColumnWidth);
+}
+
+
+void MyTableWidget::showEvent(QShowEvent * event)
+{
+    QTableWidget::showEvent(event);
+    resizeColumns();
+}
+
+
+
+//http://stackoverflow.com/questions/3135737/copying-part-of-qtableview
+void MyTableWidget::keyPressEvent(QKeyEvent* event)
+{
+    //If Ctrl-C typed (Command-C on Mac)
+    if (event->key() == Qt::Key_C && (event->modifiers() & Qt::ControlModifier))
+    {
+        QModelIndexList cells = selectedIndexes();
+        qSort(cells); // Necessary, otherwise they are in column order
+
+        QString text;
+        int currentRow = 0; // To determine when to insert newlines
+        foreach (const QModelIndex& cell, cells) {
+            if (text.length() == 0) {
+                // First item
+            } else if (cell.row() != currentRow) {
+                // New row
+                text += '\n';
+            } else {
+                // Next cell
+                text += '\t';
+            }
+            currentRow = cell.row();
+            text += cell.data().toString();
+        }
+
+        QApplication::clipboard()->setText(text);
+    }
+}
diff --git a/ui/mytablewidget.h b/ui/mytablewidget.h
new file mode 100644
index 0000000..ec52f12
--- /dev/null
+++ b/ui/mytablewidget.h
@@ -0,0 +1,41 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef MYTABLEWIDGET_H
+#define MYTABLEWIDGET_H
+
+#include <QTableWidget>
+
+
+class MyTableWidget : public QTableWidget
+{
+    Q_OBJECT
+public:
+    explicit MyTableWidget(QWidget *parent = 0);
+
+    void resizeColumns();
+    bool m_smallFirstColumn;
+    bool m_smallSecondColumn;
+
+protected:
+    void showEvent(QShowEvent * event);
+    void keyPressEvent(QKeyEvent* event);
+
+};
+
+#endif // MYTABLEWIDGET_H
diff --git a/ui/nodewidthvisualaid.cpp b/ui/nodewidthvisualaid.cpp
new file mode 100644
index 0000000..3de11f4
--- /dev/null
+++ b/ui/nodewidthvisualaid.cpp
@@ -0,0 +1,82 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "nodewidthvisualaid.h"
+#include <QPainter>
+#include <QSizePolicy>
+#include "../graph/graphicsitemnode.h"
+
+NodeWidthVisualAid::NodeWidthVisualAid(QWidget *parent) : QWidget(parent)
+{
+    QSizePolicy policy = sizePolicy();
+    policy.setHeightForWidth(true);
+    setSizePolicy(policy);
+}
+
+NodeWidthVisualAid::~NodeWidthVisualAid()
+{
+
+}
+
+void NodeWidthVisualAid::paintEvent(QPaintEvent * /*event*/)
+{
+    QPainter painter(this);
+    painter.fillRect(0, 0, width(), height(), QBrush(Qt::white));
+
+    QPen gridLinePen(QBrush(QColor(50,50,50)), 0.5);
+    painter.setPen(gridLinePen);
+
+
+    painter.drawLine(0, height() * 0.5, width(), height() * 0.5);
+    painter.drawLine(0, height() - 1, width(), height() - 1);
+    painter.drawLine(width() * 0.0, 0, width() * 0.0, height());
+    painter.drawLine(width() * 0.5, 0, width() * 0.5, height());
+
+    gridLinePen = QPen(QBrush(Qt::gray), 0.5);
+    painter.setPen(gridLinePen);
+
+    painter.drawLine(0, height() * 0.125, width(), height() * 0.125);
+    painter.drawLine(0, height() * 0.25, width(), height() * 0.25);
+    painter.drawLine(0, height() * 0.375, width(), height() * 0.375);
+    painter.drawLine(0, height() * 0.625, width(), height() * 0.625);
+    painter.drawLine(0, height() * 0.75, width(), height() * 0.75);
+    painter.drawLine(0, height() * 0.875, width(), height() * 0.875);
+    painter.drawLine(width() * 0.125, 0, width() * 0.125, height());
+    painter.drawLine(width() * 0.25, 0, width() * 0.25, height());
+    painter.drawLine(width() * 0.375, 0, width() * 0.375, height());
+    painter.drawLine(width() * 0.625, 0, width() * 0.625, height());
+    painter.drawLine(width() * 0.75, 0, width() * 0.75, height());
+    painter.drawLine(width() * 0.875, 0, width() * 0.875, height());
+
+    painter.setRenderHint(QPainter::Antialiasing, true);
+
+    QPainterPath graphLine;
+    graphLine.moveTo(0.0, height() - GraphicsItemNode::getNodeWidth(0.0, m_depthPower, m_depthEffectOnWidth, width() / 2.0));
+
+    for (int i = 0; i < width(); ++i)
+    {
+        double x = double(i);
+        double depthRelativeToMeanDrawnDepth = 2.0 * x / width();
+        double y = height() -GraphicsItemNode::getNodeWidth(depthRelativeToMeanDrawnDepth, m_depthPower, m_depthEffectOnWidth, width() / 2.0);
+        graphLine.lineTo(x, y);
+    }
+
+    QPen waterLinePen(QBrush(Qt::blue), 2.0);
+    painter.setPen(waterLinePen);
+    painter.drawPath(graphLine);
+}
diff --git a/ui/nodewidthvisualaid.h b/ui/nodewidthvisualaid.h
new file mode 100644
index 0000000..9a99648
--- /dev/null
+++ b/ui/nodewidthvisualaid.h
@@ -0,0 +1,44 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef NODEWIDTHVISUALAID_H
+#define NODEWIDTHVISUALAID_H
+
+#include <QWidget>
+
+class NodeWidthVisualAid : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit NodeWidthVisualAid(QWidget *parent = 0);
+    ~NodeWidthVisualAid();
+
+    int heightForWidth(int w ) const {return w;}
+
+    double m_depthPower;
+    double m_depthEffectOnWidth;
+
+protected:
+    void paintEvent(QPaintEvent *);
+
+signals:
+
+public slots:
+};
+
+#endif // NODEWIDTHVISUALAID_H
diff --git a/ui/pathspecifydialog.cpp b/ui/pathspecifydialog.cpp
new file mode 100644
index 0000000..c67f51e
--- /dev/null
+++ b/ui/pathspecifydialog.cpp
@@ -0,0 +1,178 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "pathspecifydialog.h"
+#include "ui_pathspecifydialog.h"
+#include "../program/globals.h"
+#include "../program/settings.h"
+#include "../graph/assemblygraph.h"
+#include <QClipboard>
+#include <QTextStream>
+#include <QFileDialog>
+#include <QFileInfo>
+#include "mygraphicsview.h"
+#include "../program/memory.h"
+
+PathSpecifyDialog::PathSpecifyDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::PathSpecifyDialog)
+{
+    ui->setupUi(this);
+    setWindowFlags(windowFlags() | Qt::Tool);
+
+    ui->pathTextEdit->setPlainText(g_memory->userSpecifiedPathString);
+    ui->circularPathCheckBox->setChecked(g_memory->userSpecifiedPathCircular);
+    g_memory->pathDialogIsVisible = true;
+    checkPathValidity();
+
+    ui->circularPathInfoText->setInfoText("Tick this box to indicate that the path is circular, i.e. there is an edge connecting the "
+                                          "last node in the list to the first.<br><br>"
+                                          "Circular paths must contain the entirety of their nodes and therefore cannot contain "
+                                          "start/end positions.");
+
+    connect(ui->pathTextEdit, SIGNAL(textChanged()), this, SLOT(checkPathValidity()));
+    connect(ui->pathTextEdit, SIGNAL(textChanged()), g_graphicsView->viewport(), SLOT(update()));
+    connect(ui->circularPathCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkPathValidity()));
+    connect(ui->circularPathCheckBox, SIGNAL(toggled(bool)), g_graphicsView->viewport(), SLOT(update()));
+    connect(ui->copyButton, SIGNAL(clicked(bool)), this, SLOT(copyPathToClipboard()));
+    connect(ui->saveButton, SIGNAL(clicked(bool)), this, SLOT(savePathToFile()));
+    connect(this, SIGNAL(rejected()), this, SLOT(deleteLater()));
+}
+
+
+PathSpecifyDialog::~PathSpecifyDialog()
+{
+    g_memory->pathDialogIsVisible = false;
+    delete ui;
+}
+
+
+
+void PathSpecifyDialog::checkPathValidity()
+{
+    g_memory->userSpecifiedPathString = ui->pathTextEdit->toPlainText();
+    g_memory->userSpecifiedPathCircular = ui->circularPathCheckBox->isChecked();
+    g_memory->userSpecifiedPath = Path();
+
+    //Clear out the Path object.  If the string makes a valid path,
+    //it will be rebuilt.
+    g_memory->userSpecifiedPath = Path();
+
+    //If there is no graph loaded, then no path can be valid.
+    if (g_assemblyGraph->m_deBruijnGraphNodes.size() == 0)
+    {
+        ui->validPathLabel->setText("Invalid path: no graph is currently loaded");
+        setPathValidityUiElements(false);
+        return;
+    }
+
+    //Create a path from the user-supplied string.
+    QString pathStringFailure;
+    QString pathText = ui->pathTextEdit->toPlainText().simplified();
+    g_memory->userSpecifiedPath = Path::makeFromString(pathText,
+                                                         ui->circularPathCheckBox->isChecked(),
+                                                         &pathStringFailure);
+
+    //If the Path turned out to be empty, that means that makeFromString failed.
+    if (g_memory->userSpecifiedPath.isEmpty())
+    {
+        if (pathText == "")
+            ui->validPathLabel->setText("No path specified");
+        else
+            ui->validPathLabel->setText("Invalid path: " + pathStringFailure);
+
+        setPathValidityUiElements(false);
+    }
+
+    //If the Path isn't empty, then we have succeeded!
+    else
+    {
+        int pathLength = g_memory->userSpecifiedPath.getLength();
+        ui->validPathLabel->setText("Valid path: " + formatIntForDisplay(pathLength) + " bp");
+        setPathValidityUiElements(true);
+    }
+}
+
+
+void PathSpecifyDialog::setPathValidityUiElements(bool pathValid)
+{
+    QPixmap tickCross;
+    if (pathValid)
+        tickCross = QPixmap(":/icons/tick-128.png");
+    else
+        tickCross = QPixmap(":/icons/cross-128.png");
+    tickCross.setDevicePixelRatio(devicePixelRatio()); //This is a workaround for a Qt bug.  Can possibly remove in the future.  https://bugreports.qt.io/browse/QTBUG-46846
+    ui->tickCrossLabel->setPixmap(tickCross);
+
+    ui->copyButton->setEnabled(pathValid);
+    ui->saveButton->setEnabled(pathValid);
+}
+
+
+void PathSpecifyDialog::copyPathToClipboard()
+{
+    QClipboard * clipboard = QApplication::clipboard();
+    clipboard->setText(g_memory->userSpecifiedPath.getPathSequence());
+}
+
+
+
+void PathSpecifyDialog::savePathToFile()
+{
+    QString defaultFileNameAndPath = g_memory->rememberedPath + "/path_sequence.fasta";
+    QString fullFileName = QFileDialog::getSaveFileName(this, "Save path sequence", defaultFileNameAndPath, "FASTA (*.fasta)");
+
+    if (fullFileName != "") //User did not hit cancel
+    {
+        QFile file(fullFileName);
+        file.open(QIODevice::WriteOnly | QIODevice::Text);
+        QTextStream out(&file);
+        out << g_memory->userSpecifiedPath.getFasta();
+        g_memory->rememberedPath = QFileInfo(fullFileName).absolutePath();
+    }
+}
+
+
+void PathSpecifyDialog::addNodeName(DeBruijnNode * node)
+{
+    QString pathText = ui->pathTextEdit->toPlainText();
+
+    //If the node fits on the end of the path add it there.
+    Path extendedPath = g_memory->userSpecifiedPath;
+    if (g_memory->userSpecifiedPath.canNodeFitOnEnd(node, &extendedPath))
+        pathText = extendedPath.getString(true);
+
+    //If not, try the front of the path.
+    else if (g_memory->userSpecifiedPath.canNodeFitAtStart(node, &extendedPath))
+        pathText = extendedPath.getString(true);
+
+    //If neither of these work, try the reverse complement, first
+    //at the end and then at the front.
+    //But only do this if we are in single mode.
+    else if (!g_settings->doubleMode &&
+             g_memory->userSpecifiedPath.canNodeFitOnEnd(node->getReverseComplement(), &extendedPath))
+        pathText = extendedPath.getString(true);
+    else if (!g_settings->doubleMode &&
+             g_memory->userSpecifiedPath.canNodeFitAtStart(node->getReverseComplement(), &extendedPath))
+        pathText = extendedPath.getString(true);
+
+    //If all of the above failed, we do nothing.  I.e. if the node cannot be
+    //added to the path, it isn't added to the text.
+
+    ui->pathTextEdit->setPlainText(pathText);
+}
diff --git a/ui/pathspecifydialog.h b/ui/pathspecifydialog.h
new file mode 100644
index 0000000..3c6598e
--- /dev/null
+++ b/ui/pathspecifydialog.h
@@ -0,0 +1,51 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef PATHSPECIFYDIALOG_H
+#define PATHSPECIFYDIALOG_H
+
+#include <QDialog>
+#include "../graph/path.h"
+#include "../graph/debruijnnode.h"
+
+namespace Ui {
+class PathSpecifyDialog;
+}
+
+class PathSpecifyDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit PathSpecifyDialog(QWidget *parent = 0);
+    ~PathSpecifyDialog();
+
+public slots:
+    void addNodeName(DeBruijnNode * node);
+
+private:
+    Ui::PathSpecifyDialog *ui;
+    void setPathValidityUiElements(bool pathValid);
+
+private slots:
+    void checkPathValidity();
+    void copyPathToClipboard();
+    void savePathToFile();
+};
+
+#endif // PATHSPECIFYDIALOG_H
diff --git a/ui/pathspecifydialog.ui b/ui/pathspecifydialog.ui
new file mode 100644
index 0000000..9b9f8f5
--- /dev/null
+++ b/ui/pathspecifydialog.ui
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PathSpecifyDialog</class>
+ <widget class="QDialog" name="PathSpecifyDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>464</width>
+    <height>476</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Specify exact path</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0" colspan="2">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Define a path by providing an ordered list of exact nodes, with their directionality, separated by commas.  You can optionally specify a start position for the first node and/or an end position for the last node by enclosing a number in parentheses at the beginning and/or end.
+
+Example without start/end positions: 5+, 6-, 41+
+Example with start/end positions: (3039) 5+, 6-, 41+ (1023)
+
+Double clicking on a node in the graph will add it to the path, if possible. As directionality is important, it may be helpful to do this when the graph is drawn in double mode.</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QPlainTextEdit" name="pathTextEdit"/>
+   </item>
+   <item row="5" column="0">
+    <widget class="QPushButton" name="copyButton">
+     <property name="text">
+      <string>Copy to clipboard</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+   <item row="5" column="1">
+    <widget class="QPushButton" name="saveButton">
+     <property name="text">
+      <string>Save to file</string>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="0" colspan="2">
+    <widget class="QWidget" name="widget" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QLabel" name="tickCrossLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>32</width>
+          <height>32</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>32</width>
+          <height>32</height>
+         </size>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+        <property name="pixmap">
+         <pixmap resource="../images/images.qrc">:/icons/cross-128.png</pixmap>
+        </property>
+        <property name="scaledContents">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="validPathLabel">
+        <property name="text">
+         <string>Path is invalid</string>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2">
+    <widget class="QWidget" name="circularPathWidget" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="InfoTextWidget" name="circularPathInfoText" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="circularPathCheckBox">
+        <property name="text">
+         <string>Circular path</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>circularPathCheckBox</tabstop>
+  <tabstop>pathTextEdit</tabstop>
+  <tabstop>copyButton</tabstop>
+  <tabstop>saveButton</tabstop>
+ </tabstops>
+ <resources>
+  <include location="../images/images.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>PathSpecifyDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>PathSpecifyDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/querypathsdialog.cpp b/ui/querypathsdialog.cpp
new file mode 100644
index 0000000..5f704c8
--- /dev/null
+++ b/ui/querypathsdialog.cpp
@@ -0,0 +1,232 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "querypathsdialog.h"
+#include "ui_querypathsdialog.h"
+
+#include "../blast/blastquery.h"
+#include "../blast/blastquerypath.h"
+#include "tablewidgetitemint.h"
+#include "tablewidgetitemdouble.h"
+#include "../program/globals.h"
+#include "../program/memory.h"
+#include <QTableWidgetItem>
+#include "querypathsequencecopybutton.h"
+
+QueryPathsDialog::QueryPathsDialog(QWidget * parent, BlastQuery * query) :
+    QDialog(parent),
+    ui(new Ui::QueryPathsDialog)
+{
+    ui->setupUi(this);
+    setWindowFlags(windowFlags() | Qt::Tool);
+
+    connect(this, SIGNAL(rejected()), this, SLOT(hidden()));
+    connect(ui->tableWidget, SIGNAL(itemSelectionChanged()), this, SLOT(tableSelectionChanged()));
+
+    g_memory->queryPathDialogIsVisible = true;
+    g_memory->queryPaths.clear();
+
+    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "Path" << "Length\n(bp)" << "Query\ncovered\nby path" <<
+                                               "Query\ncovered\nby hits" << "Mean hit\nidentity"  << "Total\nhit mis-\nmatches" <<
+                                               "Total\nhit gap\nopens" << "Relative\nlength" << "Length\ndiscre-\npancy" <<
+                                               "E-value\nproduct" << "Copy sequence\nto clipboard");
+
+    QString queryDescription = "Query name: " + query->getName();
+    queryDescription += "      type: " + query->getTypeString();
+    queryDescription += "      length: " + formatIntForDisplay(query->getLength());
+    if (query->getSequenceType() == PROTEIN)
+        queryDescription += " (" + formatIntForDisplay(3 * query->getLength()) + " bp)";
+    else
+        queryDescription += " bp";
+    ui->queryLabel->setText(queryDescription);
+
+    ui->tableWidget->clearContents();
+    ui->tableWidget->setSortingEnabled(false);
+
+    int pathCount = query->getPathCount();
+    ui->tableWidget->setRowCount(pathCount);
+
+    if (pathCount == 0)
+        return;
+
+    QList<BlastQueryPath> paths = query->getPaths();
+
+    for (int i = 0; i < pathCount; ++i)
+    {
+        BlastQueryPath * queryPath = &paths[i];
+
+        QTableWidgetItem * pathString = new QTableWidgetItem(queryPath->getPath().getString(true));
+        pathString->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        int length = queryPath->getPath().getLength();
+        TableWidgetItemInt * pathLength = new TableWidgetItemInt(formatIntForDisplay(length), length);
+        pathLength->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        double queryCoveragePath = queryPath->getPathQueryCoverage();
+        TableWidgetItemDouble * pathQueryCoveragePath = new TableWidgetItemDouble(formatDoubleForDisplay(100.0 * queryCoveragePath, 2) + "%", queryCoveragePath);
+        pathQueryCoveragePath->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        pathLength->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        double queryCoverageHits = queryPath->getHitsQueryCoverage();
+        TableWidgetItemDouble * pathQueryCoverageHits = new TableWidgetItemDouble(formatDoubleForDisplay(100.0 * queryCoverageHits, 2) + "%", queryCoverageHits);
+        pathQueryCoverageHits->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        double percIdentity = queryPath->getMeanHitPercIdentity();
+        TableWidgetItemDouble * pathPercIdentity = new TableWidgetItemDouble(formatDoubleForDisplay(percIdentity, 2) + "%", percIdentity);
+        pathPercIdentity->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        int mismatches = queryPath->getTotalHitMismatches();
+        TableWidgetItemInt * pathMismatches = new TableWidgetItemInt(formatIntForDisplay(mismatches), mismatches);
+        pathMismatches->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        int gapOpens = queryPath->getTotalHitGapOpens();
+        TableWidgetItemInt * pathGapOpens = new TableWidgetItemInt(formatIntForDisplay(gapOpens), gapOpens);
+        pathGapOpens->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        double relativeLength = queryPath->getRelativePathLength();
+        TableWidgetItemDouble * pathRelativeLength = new TableWidgetItemDouble(formatDoubleForDisplay(100.0 * relativeLength, 2) + "%", relativeLength);
+        pathRelativeLength->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        int lengthDisc = queryPath->getAbsolutePathLengthDifference();
+        QString lengthDiscString = queryPath->getAbsolutePathLengthDifferenceString(true);
+        TableWidgetItemInt * pathLengthDisc = new TableWidgetItemInt(lengthDiscString, lengthDisc);
+        pathLengthDisc->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        SciNot evalueProduct = queryPath->getEvalueProduct();
+        TableWidgetItemDouble * pathEvalueProduct = new TableWidgetItemDouble(evalueProduct.asString(false), evalueProduct.toDouble());
+        pathEvalueProduct->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+
+        QByteArray pathSequence = queryPath->getPath().getPathSequence();
+        QString pathStart;
+        if (pathSequence.length() <= 8)
+            pathStart = pathSequence;
+        else
+            pathStart = pathSequence.left(8) + "...";
+
+        QTableWidgetItem * sequenceCopy = new QTableWidgetItem(pathStart);
+        QueryPathSequenceCopyButton * sequenceCopyButton = new QueryPathSequenceCopyButton(pathSequence, pathStart);
+
+        ui->tableWidget->setItem(i, 0, pathString);
+        ui->tableWidget->setItem(i, 1, pathLength);
+        ui->tableWidget->setItem(i, 2, pathQueryCoveragePath);
+        ui->tableWidget->setItem(i, 3, pathQueryCoverageHits);
+        ui->tableWidget->setItem(i, 4, pathPercIdentity);
+        ui->tableWidget->setItem(i, 5, pathMismatches);
+        ui->tableWidget->setItem(i, 6, pathGapOpens);
+        ui->tableWidget->setItem(i, 7, pathRelativeLength);
+        ui->tableWidget->setItem(i, 8, pathLengthDisc);
+        ui->tableWidget->setItem(i, 9, pathEvalueProduct);
+        ui->tableWidget->setItem(i, 10, sequenceCopy);
+        ui->tableWidget->setCellWidget(i, 10, sequenceCopyButton);
+    }
+
+    ui->tableWidget->resizeColumns();
+    ui->tableWidget->setSortingEnabled(true);
+
+    ui->queryPathsInfoText->setInfoText("This table shows information about the possible paths through the graph which "
+                                        "represent the query. These paths can be either simple (residing within a single "
+                                        "node) or complex (spanning multiple nodes). The columns in the table are as "
+                                        "follows:"
+                                        "<br><br>"
+                                        "<b>Path</b>: This is the query path through the graph, as written in Bandage's "
+                                        "path notation. The nodes in the path are separated by commas. The start position "
+                                        "in the first node is shown in parentheses at the beginning of the path. The end "
+                                        "position in the last node is shown in parentheses at the end of the path."
+                                        "<br><br>"
+                                        "<b>Length</b>: This is the path length. It is shown in base pairs, whether the "
+                                        "query is a nucleotide query or a protein query."
+                                        "<br><br>"
+                                        "<b>Query covered by path</b>: This is the fraction of the query which is covered "
+                                        "by the path. It is calculated by taking 100% and subtracting the fraction of the "
+                                        "query which is not captured by the start and the fraction of the query which is "
+                                        "not captured by the end."
+                                        "<br><br>"
+                                        "<b>Query covered by hits</b>: This is the fraction of the query which is covered "
+                                        "by the BLAST hits in this path. Since a path may contain nodes or parts of nodes which "
+                                        "are not covered by BLAST hits, this value will be less than or equal to the 'Query "
+                                        "covered by path' value."
+                                        "<br><br>"
+                                        "<b>Mean hit identity</b>: This is the mean of the percent identity for the BLAST "
+                                        "hits in this path, weighted by the hits' lengths."
+                                        "<br><br>"
+                                        "<b>Total hit mismatches</b>: This is the sum of the mismatches for the BLAST hits "
+                                        "in this path."
+                                        "<br><br>"
+                                        "<b>Total hit gap opens</b>: This is the sum of the gap opens for the BLAST hits "
+                                        "in this path."
+                                        "<br><br>"
+                                        "<b>Relative length</b>: This is the length of the path compared to the length for "
+                                        "the relevant fraction of the query. A value over 100% indicates that the path is "
+                                        "too long; a value under 100% value indicates that the path is too short."
+                                        "<br><br>"
+                                        "<b>Length discrepancy</b>: This is the difference in the path length and "
+                                        "the length for the relevant fraction of the query. A positive value "
+                                        "indicates that the path is too long; a negative value indicates that the path is "
+                                        "too short."
+                                        "<br><br>"
+                                        "<b>E-value product</b>: This is the product of the e-values for the BLAST hits "
+                                        "in this path.");
+}
+
+QueryPathsDialog::~QueryPathsDialog()
+{
+    delete ui;
+    g_memory->queryPathDialogIsVisible = false;
+}
+
+
+void QueryPathsDialog::hidden()
+{
+    g_memory->queryPathDialogIsVisible = false;
+    emit selectionChanged();
+}
+
+
+void QueryPathsDialog::tableSelectionChanged()
+{
+    QList<QTableWidgetSelectionRange> selection = ui->tableWidget->selectedRanges();
+    int totalSelectedRows = 0;
+    for (int i = 0; i < selection.size(); ++i)
+        totalSelectedRows += selection[i].rowCount();
+
+    g_memory->queryPaths.clear();
+
+    QList<int> selectedRows;
+    for (int i = 0; i < selection.size(); ++i)
+    {
+        QTableWidgetSelectionRange * selectionRange = &(selection[i]);
+        int top = selectionRange->topRow();
+        int bottom = selectionRange->bottomRow();
+
+        for (int row = top; row <= bottom; ++row)
+        {
+            if (!selectedRows.contains(row))
+                selectedRows.push_back(row);
+        }
+    }
+
+    for (int i = 0; i < selectedRows.size(); ++i)
+    {
+        int row = selectedRows[i];
+        QString pathString = ui->tableWidget->item(row, 0)->text();
+        QString pathStringFailure;
+        g_memory->queryPaths.push_back(Path::makeFromString(pathString, false, &pathStringFailure));
+    }
+
+    emit selectionChanged();
+}
diff --git a/ui/querypathsdialog.h b/ui/querypathsdialog.h
new file mode 100644
index 0000000..66417e1
--- /dev/null
+++ b/ui/querypathsdialog.h
@@ -0,0 +1,49 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef QUERYPATHSDIALOG_H
+#define QUERYPATHSDIALOG_H
+
+#include <QDialog>
+
+class BlastQuery;
+
+namespace Ui {
+class QueryPathsDialog;
+}
+
+class QueryPathsDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit QueryPathsDialog(QWidget *parent, BlastQuery * query);
+    ~QueryPathsDialog();
+
+private:
+    Ui::QueryPathsDialog *ui;
+
+private slots:
+    void hidden();
+    void tableSelectionChanged();
+
+signals:
+    void selectionChanged();
+};
+
+#endif // QUERYPATHSDIALOG_H
diff --git a/ui/querypathsdialog.ui b/ui/querypathsdialog.ui
new file mode 100644
index 0000000..bc7c92b
--- /dev/null
+++ b/ui/querypathsdialog.ui
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>QueryPathsDialog</class>
+ <widget class="QDialog" name="QueryPathsDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1069</width>
+    <height>417</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Query paths</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="1">
+    <widget class="QLabel" name="queryLabel">
+     <property name="text">
+      <string>Query description</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="InfoTextWidget" name="queryPathsInfoText" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2">
+    <widget class="MyTableWidget" name="tableWidget">
+     <column>
+      <property name="text">
+       <string>Path</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Length (bp)</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Query covered by path</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Query covered by hits</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Identity</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Mismatches</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Gap opens</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Relative length</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Length discrepancy</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>E-value product</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Copy sequence to clipboard</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>MyTableWidget</class>
+   <extends>QTableWidget</extends>
+   <header>mytablewidget.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>QueryPathsDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>QueryPathsDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/querypathsequencecopybutton.cpp b/ui/querypathsequencecopybutton.cpp
new file mode 100644
index 0000000..4882024
--- /dev/null
+++ b/ui/querypathsequencecopybutton.cpp
@@ -0,0 +1,18 @@
+#include "querypathsequencecopybutton.h"
+
+#include <QApplication>
+#include <QClipboard>
+
+QueryPathSequenceCopyButton::QueryPathSequenceCopyButton(QByteArray pathSequence, QString pathStart) :
+    m_pathSequence(pathSequence)
+{
+    setText(pathStart);
+    connect(this, SIGNAL(clicked(bool)), this, SLOT(copySequenceToClipboard()));
+}
+
+
+void QueryPathSequenceCopyButton::copySequenceToClipboard()
+{
+    QClipboard * clipboard = QApplication::clipboard();
+    clipboard->setText(m_pathSequence);
+}
diff --git a/ui/querypathsequencecopybutton.h b/ui/querypathsequencecopybutton.h
new file mode 100644
index 0000000..b358b0c
--- /dev/null
+++ b/ui/querypathsequencecopybutton.h
@@ -0,0 +1,39 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef QUERYPATHSEQUENCECOPYBUTTON_H
+#define QUERYPATHSEQUENCECOPYBUTTON_H
+
+#include <QPushButton>
+
+class QueryPathSequenceCopyButton : public QPushButton
+{
+    Q_OBJECT
+
+public:
+    QueryPathSequenceCopyButton(QByteArray pathSequence, QString pathStart);
+
+private:
+    QByteArray m_pathSequence;
+
+private slots:
+    void copySequenceToClipboard();
+
+};
+
+#endif // QUERYPATHSEQUENCECOPYBUTTON_H
diff --git a/ui/querypathspushbutton.cpp b/ui/querypathspushbutton.cpp
new file mode 100644
index 0000000..5789d82
--- /dev/null
+++ b/ui/querypathspushbutton.cpp
@@ -0,0 +1,40 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "querypathspushbutton.h"
+
+#include "../program/globals.h"
+
+QueryPathsPushButton::QueryPathsPushButton(int pathCount, BlastQuery * query) :
+    m_pathCount(pathCount), m_query(query)
+{
+    setText(formatIntForDisplay(pathCount));
+    if (pathCount == 0)
+        setEnabled(false);
+
+    connect(this, SIGNAL(clicked(bool)), this, SLOT(clickedSlot()));
+}
+
+
+
+
+
+void QueryPathsPushButton::clickedSlot()
+{
+    emit showPathsDialog(m_query);
+}
diff --git a/ui/querypathspushbutton.h b/ui/querypathspushbutton.h
new file mode 100644
index 0000000..31502e7
--- /dev/null
+++ b/ui/querypathspushbutton.h
@@ -0,0 +1,46 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage.
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef QUERYPATHSPUSHBUTTON_H
+#define QUERYPATHSPUSHBUTTON_H
+
+#include <QPushButton>
+
+class BlastQuery;
+
+class QueryPathsPushButton : public QPushButton
+{
+    Q_OBJECT
+
+public:
+    QueryPathsPushButton(int pathCount, BlastQuery * query);
+
+private:
+    int m_pathCount;
+    BlastQuery * m_query;
+
+private slots:
+    void clickedSlot();
+
+signals:
+    void showPathsDialog(BlastQuery *);
+
+
+};
+
+#endif // QUERYPATHSPUSHBUTTON_H
diff --git a/ui/settingsdialog.cpp b/ui/settingsdialog.cpp
new file mode 100644
index 0000000..ed49c47
--- /dev/null
+++ b/ui/settingsdialog.cpp
@@ -0,0 +1,486 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "settingsdialog.h"
+#include "ui_settingsdialog.h"
+#include <QColorDialog>
+#include <QMessageBox>
+#include "../program/settings.h"
+#include "colourbutton.h"
+#include "../graph/assemblygraph.h"
+#include "../program/scinot.h"
+
+SettingsDialog::SettingsDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::SettingsDialog)
+{
+    ui->setupUi(this);
+    setInfoTexts();
+
+    //On a PC and Linux, this window is called 'Settings', but on the Mac it is
+    //called 'Preferences'.
+    QString windowTitle = "Settings";
+#ifdef Q_OS_MAC
+    windowTitle = "Preferences";
+#endif
+    setWindowTitle(windowTitle);
+
+    ui->edgeColourButton->m_name = "Edge colour";
+    ui->outlineColourButton->m_name = "Outline colour";
+    ui->selectionColourButton->m_name = "Selection colour";
+    ui->textColourButton->m_name = "Text colour";
+    ui->textOutlineColourButton->m_name = "Text outline colour";
+    ui->uniformPositiveNodeColourButton->m_name = "Uniform positive node colour";
+    ui->uniformNegativeNodeColourButton->m_name = "Uniform negative node colour";
+    ui->uniformNodeSpecialColourButton->m_name = "Uniform special node colour";
+    ui->lowDepthColourButton->m_name = "Low depth colour";
+    ui->highDepthColourButton->m_name = "High depth colour";
+    ui->noBlastHitsColourButton->m_name = "No BLAST hits colour";
+    ui->contiguousStrandSpecificColourButton->m_name = "Contiguous (strand-specific) colour";
+    ui->contiguousEitherStrandColourButton->m_name = "Contiguous (either strand) colour";
+    ui->maybeContiguousColourButton->m_name = "Maybe contiguous colour";
+    ui->notContiguousColourButton->m_name = "Not contiguous colour";
+    ui->contiguityStartingColourButton->m_name = "Contiguity starting colour";
+
+    connect(ui->restoreDefaultsButton, SIGNAL(clicked()), this, SLOT(restoreDefaults()));
+    connect(ui->depthValueManualRadioButton, SIGNAL(toggled(bool)), this, SLOT(enableDisableDepthWidgets()));
+    connect(ui->nodeLengthPerMegabaseManualRadioButton, SIGNAL(toggled(bool)), this, SLOT(nodeLengthPerMegabaseManualChanged()));
+    connect(ui->depthPowerSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updateNodeWidthVisualAid()));
+    connect(ui->depthEffectOnWidthSpinBox, SIGNAL(valueChanged(double)), this, SLOT(updateNodeWidthVisualAid()));
+    connect(ui->randomColourPositiveOpacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(colourSpinBoxChanged()));
+    connect(ui->randomColourNegativeOpacitySpinBox, SIGNAL(valueChanged(int)), this, SLOT(colourSpinBoxChanged()));
+    connect(ui->randomColourPositiveSaturationSpinBox, SIGNAL(valueChanged(int)), this, SLOT(colourSpinBoxChanged()));
+    connect(ui->randomColourNegativeSaturationSpinBox, SIGNAL(valueChanged(int)), this, SLOT(colourSpinBoxChanged()));
+    connect(ui->randomColourPositiveLightnessSpinBox, SIGNAL(valueChanged(int)), this, SLOT(colourSpinBoxChanged()));
+    connect(ui->randomColourNegativeLightnessSpinBox, SIGNAL(valueChanged(int)), this, SLOT(colourSpinBoxChanged()));
+    connect(ui->randomColourPositiveOpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(colourSliderChanged()));
+    connect(ui->randomColourNegativeOpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(colourSliderChanged()));
+    connect(ui->randomColourPositiveSaturationSlider, SIGNAL(valueChanged(int)), this, SLOT(colourSliderChanged()));
+    connect(ui->randomColourNegativeSaturationSlider, SIGNAL(valueChanged(int)), this, SLOT(colourSliderChanged()));
+    connect(ui->randomColourPositiveLightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(colourSliderChanged()));
+    connect(ui->randomColourNegativeLightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(colourSliderChanged()));
+    connect(ui->minQueryCoveredByHitsCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->minMeanHitIdentityCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->maxEValueProductCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->minLengthPercentageCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->maxLengthPercentageCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->minLengthBaseDiscrepancyCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->maxLengthBaseDiscrepancyCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxesChanged()));
+    connect(ui->minLengthBaseDiscrepancySpinBox, SIGNAL(valueChanged(int)), this, SLOT(lengthDiscrepancySpinBoxChanged()));
+    connect(ui->maxLengthBaseDiscrepancySpinBox, SIGNAL(valueChanged(int)), this, SLOT(lengthDiscrepancySpinBoxChanged()));
+}
+
+SettingsDialog::~SettingsDialog()
+{
+    delete ui;
+}
+
+
+//These functions either set a widget to a value or set the value to the widget.  Pointers to
+//these functions will be passed to loadOrSaveSettingsToOrFromWidgets, so that one function can
+//take care of both save and load functionality.
+void setOneSettingFromWidget(FloatSetting * setting, QDoubleSpinBox * spinBox, bool percentage) {setting->val = spinBox->value() / (percentage ? 100.0 : 1.0);}
+void setOneSettingFromWidget(IntSetting * setting, QSpinBox * spinBox) {setting->val = spinBox->value();}
+void setOneSettingFromWidget(QColor * setting, ColourButton * button) {*setting = button->m_colour;}
+void setOneSettingFromWidget(SciNotSetting * setting, QDoubleSpinBox * coefficientSpinBox, QSpinBox * exponentSpinBox) {setting->val = SciNot(coefficientSpinBox->value(), exponentSpinBox->value());}
+void setOneSettingFromWidget(bool * setting, QCheckBox * checkBox) {*setting = checkBox->isChecked();}
+void setOneWidgetFromSetting(QColor * setting, ColourButton * button) {button->setColour(*setting);}
+void setOneWidgetFromSetting(bool * setting, QCheckBox * checkBox) {checkBox->setChecked(*setting);}
+void setOneWidgetFromSetting(FloatSetting * setting, QDoubleSpinBox * spinBox, bool percentage)
+{
+    spinBox->setMinimum(setting->min * (percentage ? 100.0 : 1.0));
+    spinBox->setMaximum(setting->max * (percentage ? 100.0 : 1.0));
+    spinBox->setValue(setting->val * (percentage ? 100.0 : 1.0));
+}
+void setOneWidgetFromSetting(IntSetting * setting, QSpinBox * spinBox)
+{
+    spinBox->setMinimum(setting->min);
+    spinBox->setMaximum(setting->max);
+    spinBox->setValue(setting->val);
+}
+void setOneWidgetFromSetting(SciNotSetting * setting, QDoubleSpinBox * coefficientSpinBox, QSpinBox * exponentSpinBox)
+{
+    coefficientSpinBox->setMinimum(setting->min.getCoefficient());
+    coefficientSpinBox->setMaximum(setting->max.getCoefficient());
+    coefficientSpinBox->setValue(setting->val.getCoefficient());
+    exponentSpinBox->setMinimum(setting->min.getExponent());
+    exponentSpinBox->setMaximum(setting->max.getExponent());
+    exponentSpinBox->setValue(setting->val.getExponent());
+}
+
+
+void SettingsDialog::setWidgetsFromSettings()
+{
+    loadOrSaveSettingsToOrFromWidgets(true, g_settings.data());
+
+    enableDisableDepthWidgets();
+    checkBoxesChanged();
+    lengthDiscrepancySpinBoxChanged();
+}
+
+
+void SettingsDialog::setSettingsFromWidgets()
+{
+    loadOrSaveSettingsToOrFromWidgets(false, g_settings.data());
+
+    //The highlighted outline thickness should always be a bit
+    //bigger than the outlineThickness.
+    g_settings->selectionThickness = g_settings->outlineThickness + 1.0;
+}
+
+
+
+void SettingsDialog::loadOrSaveSettingsToOrFromWidgets(bool setWidgets, Settings * settings)
+{
+    void (*doubleFunctionPointer)(FloatSetting *, QDoubleSpinBox *, bool);
+    void (*intFunctionPointer)(IntSetting *, QSpinBox *);
+    void (*colourFunctionPointer)(QColor *, ColourButton *);
+    void (*sciNotFunctionPointer)(SciNotSetting *, QDoubleSpinBox *, QSpinBox *);
+    void (*checkBoxFunctionPointer)(bool *, QCheckBox *);
+
+    if (setWidgets)
+    {
+        doubleFunctionPointer = setOneWidgetFromSetting;
+        intFunctionPointer = setOneWidgetFromSetting;
+        colourFunctionPointer = setOneWidgetFromSetting;
+        sciNotFunctionPointer = setOneWidgetFromSetting;
+        checkBoxFunctionPointer = setOneWidgetFromSetting;
+    }
+    else
+    {
+        doubleFunctionPointer = setOneSettingFromWidget;
+        intFunctionPointer = setOneSettingFromWidget;
+        colourFunctionPointer = setOneSettingFromWidget;
+        sciNotFunctionPointer = setOneSettingFromWidget;
+        checkBoxFunctionPointer = setOneSettingFromWidget;
+    }
+
+    doubleFunctionPointer(&settings->manualNodeLengthPerMegabase, ui->nodeLengthPerMegabaseManualSpinBox, false);
+    doubleFunctionPointer(&settings->minimumNodeLength, ui->minimumNodeLengthSpinBox, false);
+    doubleFunctionPointer(&settings->edgeLength, ui->edgeLengthSpinBox, false);
+    doubleFunctionPointer(&settings->doubleModeNodeSeparation, ui->doubleModeNodeSeparationSpinBox, false);
+    doubleFunctionPointer(&settings->nodeSegmentLength, ui->nodeSegmentLengthSpinBox, false);
+    doubleFunctionPointer(&settings->componentSeparation, ui->componentSeparationSpinBox, false);
+    doubleFunctionPointer(&settings->depthEffectOnWidth, ui->depthEffectOnWidthSpinBox, true);
+    doubleFunctionPointer(&settings->depthPower, ui->depthPowerSpinBox, false);
+    doubleFunctionPointer(&settings->edgeWidth, ui->edgeWidthSpinBox, false);
+    doubleFunctionPointer(&settings->outlineThickness, ui->outlineThicknessSpinBox, false);
+    doubleFunctionPointer(&settings->textOutlineThickness, ui->textOutlineThicknessSpinBox, false);
+    colourFunctionPointer(&settings->edgeColour, ui->edgeColourButton);
+    colourFunctionPointer(&settings->outlineColour, ui->outlineColourButton);
+    colourFunctionPointer(&settings->selectionColour, ui->selectionColourButton);
+    colourFunctionPointer(&settings->textColour, ui->textColourButton);
+    colourFunctionPointer(&settings->textOutlineColour, ui->textOutlineColourButton);
+    intFunctionPointer(&settings->randomColourPositiveSaturation, ui->randomColourPositiveSaturationSpinBox);
+    intFunctionPointer(&settings->randomColourNegativeSaturation, ui->randomColourNegativeSaturationSpinBox);
+    intFunctionPointer(&settings->randomColourPositiveLightness, ui->randomColourPositiveLightnessSpinBox);
+    intFunctionPointer(&settings->randomColourNegativeLightness, ui->randomColourNegativeLightnessSpinBox);
+    intFunctionPointer(&settings->randomColourPositiveOpacity, ui->randomColourPositiveOpacitySpinBox);
+    intFunctionPointer(&settings->randomColourNegativeOpacity, ui->randomColourNegativeOpacitySpinBox);
+    colourFunctionPointer(&settings->uniformPositiveNodeColour, ui->uniformPositiveNodeColourButton);
+    colourFunctionPointer(&settings->uniformNegativeNodeColour, ui->uniformNegativeNodeColourButton);
+    colourFunctionPointer(&settings->uniformNodeSpecialColour, ui->uniformNodeSpecialColourButton);
+    colourFunctionPointer(&settings->lowDepthColour, ui->lowDepthColourButton);
+    colourFunctionPointer(&settings->highDepthColour, ui->highDepthColourButton);
+    doubleFunctionPointer(&settings->lowDepthValue, ui->lowDepthValueSpinBox, false);
+    doubleFunctionPointer(&settings->highDepthValue, ui->highDepthValueSpinBox, false);
+    colourFunctionPointer(&settings->noBlastHitsColour, ui->noBlastHitsColourButton);
+    intFunctionPointer(&settings->contiguitySearchSteps, ui->contiguitySearchDepthSpinBox);
+    colourFunctionPointer(&settings->contiguousStrandSpecificColour, ui->contiguousStrandSpecificColourButton);
+    colourFunctionPointer(&settings->contiguousEitherStrandColour, ui->contiguousEitherStrandColourButton);
+    colourFunctionPointer(&settings->maybeContiguousColour, ui->maybeContiguousColourButton);
+    colourFunctionPointer(&settings->notContiguousColour, ui->notContiguousColourButton);
+    colourFunctionPointer(&settings->contiguityStartingColour, ui->contiguityStartingColourButton);
+    intFunctionPointer(&settings->maxHitsForQueryPath, ui->maxHitsForQueryPathSpinBox);
+    intFunctionPointer(&settings->maxQueryPathNodes, ui->maxPathNodesSpinBox);
+    doubleFunctionPointer(&settings->minQueryCoveredByPath, ui->minQueryCoveredByPathSpinBox, true);
+    checkBoxFunctionPointer(&settings->minQueryCoveredByHits.on, ui->minQueryCoveredByHitsCheckBox);
+    doubleFunctionPointer(&settings->minQueryCoveredByHits, ui->minQueryCoveredByHitsSpinBox, true);
+    checkBoxFunctionPointer(&settings->minMeanHitIdentity.on, ui->minMeanHitIdentityCheckBox);
+    doubleFunctionPointer(&settings->minMeanHitIdentity, ui->minMeanHitIdentitySpinBox, true);
+    checkBoxFunctionPointer(&settings->maxEValueProduct.on, ui->maxEValueProductCheckBox);
+    sciNotFunctionPointer(&settings->maxEValueProduct, ui->maxEValueCoefficientSpinBox, ui->maxEValueExponentSpinBox);
+    checkBoxFunctionPointer(&settings->minLengthPercentage.on, ui->minLengthPercentageCheckBox);
+    doubleFunctionPointer(&settings->minLengthPercentage, ui->minLengthPercentageSpinBox, true);
+    checkBoxFunctionPointer(&settings->maxLengthPercentage.on, ui->maxLengthPercentageCheckBox);
+    doubleFunctionPointer(&settings->maxLengthPercentage, ui->maxLengthPercentageSpinBox, true);
+    checkBoxFunctionPointer(&settings->minLengthBaseDiscrepancy.on, ui->minLengthBaseDiscrepancyCheckBox);
+    intFunctionPointer(&settings->minLengthBaseDiscrepancy, ui->minLengthBaseDiscrepancySpinBox);
+    checkBoxFunctionPointer(&settings->maxLengthBaseDiscrepancy.on, ui->maxLengthBaseDiscrepancyCheckBox);
+    intFunctionPointer(&settings->maxLengthBaseDiscrepancy, ui->maxLengthBaseDiscrepancySpinBox);
+
+    //A couple of settings are not in a spin box, check box or colour button, so
+    //they have to be done manually, not with those function pointers.
+    if (setWidgets)
+    {
+        ui->graphLayoutQualitySlider->setValue(settings->graphLayoutQuality);
+        ui->linearLayoutOffRadioButton->setChecked(!settings->linearLayout);
+        ui->linearLayoutOnRadioButton->setChecked(settings->linearLayout);
+        ui->antialiasingOffRadioButton->setChecked(!settings->antialiasing);
+        ui->antialiasingOnRadioButton->setChecked(settings->antialiasing);
+        ui->antialiasingOffRadioButton->setChecked(!settings->antialiasing);
+        ui->singleNodeArrowHeadsOnRadioButton ->setChecked(settings->arrowheadsInSingleMode);
+        ui->singleNodeArrowHeadsOffRadioButton ->setChecked(!settings->arrowheadsInSingleMode);
+        ui->depthValueAutoRadioButton->setChecked(settings->autoDepthValue);
+        ui->depthValueManualRadioButton->setChecked(!settings->autoDepthValue);
+        nodeLengthPerMegabaseManualChanged();
+        ui->nodeLengthPerMegabaseAutoLabel->setText(formatDoubleForDisplay(settings->autoNodeLengthPerMegabase, 1));
+        ui->lowDepthAutoValueLabel2->setText(formatDoubleForDisplay(g_assemblyGraph->m_firstQuartileDepth, 2));
+        ui->highDepthAutoValueLabel2->setText(formatDoubleForDisplay(g_assemblyGraph->m_thirdQuartileDepth, 2));
+        ui->nodeLengthPerMegabaseAutoRadioButton->setChecked(settings->nodeLengthMode == AUTO_NODE_LENGTH);
+        ui->nodeLengthPerMegabaseManualRadioButton->setChecked(settings->nodeLengthMode != AUTO_NODE_LENGTH);
+        ui->positionVisibleRadioButton->setChecked(!settings->positionTextNodeCentre);
+        ui->positionCentreRadioButton->setChecked(settings->positionTextNodeCentre);
+    }
+    else
+    {
+        settings->graphLayoutQuality = ui->graphLayoutQualitySlider->value();
+        settings->linearLayout = ui->linearLayoutOnRadioButton->isChecked();
+        settings->antialiasing = ui->antialiasingOnRadioButton->isChecked();
+        settings->arrowheadsInSingleMode = ui->singleNodeArrowHeadsOnRadioButton->isChecked();
+        settings->autoDepthValue = ui->depthValueAutoRadioButton->isChecked();
+        if (ui->nodeLengthPerMegabaseAutoRadioButton->isChecked())
+            settings->nodeLengthMode = AUTO_NODE_LENGTH;
+        else
+            settings->nodeLengthMode = MANUAL_NODE_LENGTH;
+        settings->positionTextNodeCentre = ui->positionCentreRadioButton->isChecked();
+    }
+}
+
+
+void SettingsDialog::restoreDefaults()
+{
+    Settings defaultSettings;
+
+    //The auto base pairs per segment is the only setting we don't want to
+    //restore, as it is calculated from the graph.
+    defaultSettings.autoNodeLengthPerMegabase = g_settings->autoNodeLengthPerMegabase;
+
+    loadOrSaveSettingsToOrFromWidgets(true, &defaultSettings);
+}
+
+
+void SettingsDialog::setInfoTexts()
+{
+    ui->nodeLengthPerMegabaseInfoText->setInfoText("This controls the length of the drawn nodes relative to the nodes' sequence lengths.<br><br>"
+                                                   "Set to a larger number for longer nodes and set to a smaller number for shorter nodes.<br><br>"
+                                                   "Specifically, a node's length is determined by multiplying its sequence length (in Megabases) by this number. If the resulting value is less than the 'Minimum node length' setting, the node's length will be increased to that value.<br><br>"
+                                                   "Note that node lengths are not exact, but are rather used as targets for the graph layout algorithm.<br><br>"
+                                                   "The graph must be redrawn to see the effect of changing this setting.");
+    ui->minimumNodeLengthInfoText->setInfoText("This controls the minimum node length, regardless of the length of a node's sequence.<br><br>"
+                                               "Setting this to a smaller value will give a tighter correlation between sequence lengths and node lengths. Setting this to a larger will make smaller nodes easier to see and work with.<br><br>"
+                                               "The graph must be redrawn to see the effect of changing this setting.");
+    ui->edgeLengthInfoText->setInfoText("This controls the length of the edges that connect nodes.<br><br>"
+                                        "Set to a larger value for more separate nodes. Set to a smaller value for more tightly packed nodes.<br><br>"
+                                        "The graph must be redrawn to see the effect of changing this setting.");
+    ui->edgeWidthInfoText->setInfoText("This controls the width of the edges that connect nodes.<br><br>"
+                                       "The graph does not need to be redrawn to see the effect of changing this setting.");
+    ui->doubleModeNodeSeparationInfoText->setInfoText("This controls how far apart complementary nodes are drawn from each "
+                                                      "other when the graph is drawn in double mode.<br><br>"
+                                                      "The graph must be redrawn to see the effect of changing this setting.");
+
+    ui->nodeSegmentLengthInfoText->setInfoText("This controls the length of the line segments which make up a drawn node.<br><br>"
+                                               "Setting this to a smaller value will produce higher quality nodes with smoother curves, but graph layout will take longer and graphical performance will be slower. Setting this to a larger value will produce nodes with more obvious angles, but graph layout and graphical performance will be faster.<br><br>"
+                                               "The graph must be redrawn to see the effect of changing this setting.");
+    ui->componentSeparationInfoText->setInfoText("When the graph contains separate connected components, this will be the distance between the components.<br><br>"
+                                                 "A low value will give a dense, more tightly packed layout. A high value will give a more spaced-out layout.<br><br>"
+                                                 "The graph must be redrawn to see the effect of changing this setting.");
+    ui->graphLayoutQualityInfoText->setInfoText("This controls how much time the graph layout algorithm spends on positioning the graph components.<br><br>"
+                                                "Low values are faster and recommended for big assembly graphs. Higher values may result in smoother, more pleasing layouts.<br><br>"
+                                                "The graph must be redrawn to see the effect of changing this setting.");
+    ui->linearLayoutInfoText->setInfoText("Enable this option if the graph is ordered in a linear fashion, e.g. for a MSA graph.<br><br>"
+                                          "When on, Bandage will sort the nodes by name (numerically or alphabetically) and initialise the graph layout left-to-right, resulting in a more linear layout.<br><br>"
+                                          "This type of layout is automatically used when viewing plain FASTA files in Bandage.");
+
+    ui->depthPowerInfoText->setInfoText("This is the power used in the function for determining node widths.");
+    ui->depthEffectOnWidthInfoText->setInfoText("This controls the degree to which a node's depth affects its width.<br><br>"
+                                                   "If set to 0%, all nodes will have the same width (equal to the average node width).");
+    ui->outlineThicknessInfoText->setInfoText("This is the thickness of the outline drawn around each node.<br><br>"
+                                              "Drawing outlines is somewhat CPU-intensive, so set this to zero to improve performance.");
+    ui->textOutlineThicknessInfoText->setInfoText("This is the thickness of the outline drawn around node labels when the 'Text outline' option is ticked.<br><br>"
+                                                  "Large values can make text easier to read, but may obscure more of the graph.");
+    ui->positionTextInfoText->setInfoText("When 'Over visible regions' is selected, node labels will move based on the position of the view to stay visible.<br><br>"
+                                          "When 'On node centre' is selected, node labels will always be displayed at the centre of each node, regardless of the view's position.");
+
+    ui->antialiasingInfoText->setInfoText("Antialiasing makes the display smoother and more pleasing. Disable antialiasing if you are experiencing slow performance when viewing large graphs.");
+    ui->singleNodeArrowHeadsInfoText->setInfoText("When on, this will draw nodes with arrowheads, even when Bandage is in single node style.<br><br>"
+                                                  "This makes sense for graphs where the positive-negative distinction is meaningful, e.g. a MSA graph of gene sequences where the positive nodes are the coding strands. It does not make sense for graphs where the positive-negative distinction is arbitrary, e.g. a SPAdes assembly graph.");
+
+    ui->uniformPositiveNodeColourInfoText->setInfoText("This is the colour of all positive nodes when Bandage is set to the 'Uniform colour' option.");
+    ui->uniformNegativeNodeColourInfoText->setInfoText("This is the colour of all negative nodes when Bandage is set to the 'Uniform colour' option. Negative nodes are only displayed when the graph is drawn in 'Double' mode.");
+    ui->uniformNodeSpecialColourInfoText->setInfoText("When Bandage is set to the 'Uniform colour' option, this colour is used for limited graph scopes:<ul>"
+                                                      "<li>When the graph scope is set to 'Around node(s)', this colour is used for the user-specified nodes.</li>"
+                                                      "<li>When the graph scope is set to 'Around BLAST hit(s)', this colour is used for nodes that contain at least one BLAST hit.</li></ul>");
+    ui->edgeColourInfoText->setInfoText("This colour is used for all edges connecting nodes.");
+    ui->outlineColourInfoText->setInfoText("This colour is used to outline nodes that are not currently selected by the user.");
+    ui->selectionColourInfoText->setInfoText("This colour is used to outline nodes that are currently selected by the user. Selected edges will also be displayed in this colour.");
+    ui->textColourInfoText->setInfoText("This colour is used for the text of node labels.");
+    ui->textOutlineColourInfoText->setInfoText("If the text outline thickness setting has a nonzero value, then a text outline will be displayed with this colour.");
+
+    ui->randomColourPositiveSaturationInfoText->setInfoText("This controls the colour saturation of the positive nodes when the 'Random colours' option is used.<br><br>"
+                                                            "The minimum value will result in colourless (grey) nodes while high values will result in brightly coloured nodes.");
+    ui->randomColourNegativeSaturationInfoText->setInfoText("This controls the colour saturation of the negative nodes when the 'Random colours' option is used.<br><br>"
+                                                            "The minimum value will result in colourless (grey) nodes while high values will result in brightly coloured nodes.<br><br>"
+                                                            "Note that negative nodes are only visible when the graph is drawn in double mode.");
+    ui->randomColourPositiveLightnessInfoText->setInfoText("This controls the colour lightness of the positive nodes when the 'Random colours' option is used.<br><br>"
+                                                           "Low values will result in dark nodes while high values result in light nodes");
+    ui->randomColourNegativeLightnessInfoText->setInfoText("This controls the colour lightness of the negative nodes when the 'Random colours' option is used.<br><br>"
+                                                           "Low values will result in dark nodes while high values result in light nodes.<br><br>"
+                                                           "Note that negative nodes are only visible when the graph is drawn in double mode.");
+    ui->randomColourPositiveOpacityInfoText->setInfoText("This controls how opaque the positive nodes are when the 'Random colours' option is used.<br><br>"
+                                                         "Set to the minimum value for fully transparent nodes. Set to the maximum value for completely opaque nodes.");
+    ui->randomColourNegativeOpacityInfoText->setInfoText("This controls how opaque the negative nodes are when the 'Random colours' option is used.<br><br>"
+                                                         "Set to the minimum value for fully transparent nodes. Set to the maximum value for completely opaque nodes.<br><br>"
+                                                         "Note that negative nodes are only visible when the graph is drawn in double mode.");
+
+    ui->lowDepthColourInfoText->setInfoText("When Bandage is set to the 'Colour by depth' option, this colour is used for nodes with depth at or below the low depth value.<br><br>"
+                                            "Nodes with depth between the low and high depth values will get an intermediate colour.");
+    ui->highDepthColourInfoText->setInfoText("When Bandage is set to the 'Colour by depth' option, this colour is used for nodes with depth above the high depth value.<br><br>"
+                                             "Nodes with depth between the low and high depth values will get an intermediate colour.");
+    ui->depthAutoValuesInfoText->setInfoText("When set to 'Auto', the low depth value is set to the first quartile and the high depth value is set to the third quartile.");
+    ui->depthManualValuesInfoText->setInfoText("When set to 'Manual', you can specify the values used for depth colouring.");
+    ui->noBlastHitsColourInfoText->setInfoText("When Bandage is set to the 'Colour using BLAST hits' option, this colour is used for nodes that do not have any BLAST hits. It is also used for any region of a node without BLAST hits, even if there are BLAST hits in other regions of that node.");
+    ui->contiguitySearchDepthInfoText->setInfoText("This is the number of steps the contiguity search will take. Larger values will find more distant contiguous nodes, at a performance cost.<br><br>"
+                                                   "The time taken to complete the search can grow rapidly as values increase, so use values above 20 with caution.");
+    ui->contiguousStrandSpecificColourInfoText->setInfoText("When a contiguity search is conducted, this is the colour given to nodes that are determined to be contiguous with the starting node(s).<br><br>"
+                                                            "This colour is used for strand-specific matches. It is only used for nodes that are determined to be on the same strand as the starting node");
+    ui->contiguousEitherStrandColourInfoText->setInfoText("When a contiguity search is conducted, this is the colour given to nodes that are determined to be contiguous with the starting node(s).<br><br>"
+                                                          "This colour is used for nodes where either the node or its reverse complement are contiguous with the starting node, but it cannot be determined which.");
+    ui->maybeContiguousColourInfoText->setInfoText("When a contiguity search is conducted, this is the colour given to nodes that are determined to be possibly contiguous with the starting node(s).");
+    ui->notContiguousColourInfoText->setInfoText("When a contiguity search is conducted, this is the colour given to nodes that are not determined to be contiguous with the starting node(s).");
+    ui->contiguityStartingColourInfoText->setInfoText("When a contiguity search is conducted, this is the colour given to the starting node(s).");
+    ui->maxHitsForQueryPathInfoText->setInfoText("Bandage will not attempt to find query paths for BLAST queries with more hits than this setting. BLAST query path searches can be very slow when there are too many hits, so this setting prevents performance problems.<br><br>"
+                                                 "Set to 0 to turn off all BLAST query path finding.<br><br>"
+                                                 "Set to a larger value to enable query path searches for BLAST queries with many hits (can be slow).");
+    ui->maxPathNodesInfoText->setInfoText("This controls the maximum number of nodes in BLAST query paths.<br><br>"
+                                          "A higher value will allow for paths containing more nodes, at a performance cost.");
+    ui->minQueryCoveredByPathInfoText->setInfoText("This is a minimum value for the fraction of a BLAST query which is covered by a BLAST query path. Paths that cover less of the query than this setting will not be included in the query's paths.<br><br>"
+                                                   "Set to a higher value to make BLAST query paths more stringent.");
+    ui->minQueryCoveredByHitsInfoText->setInfoText("This is a minimum value for the fraction of a BLAST query which is covered by the hits in a BLAST query path. Paths with hits that cover less of the query than this setting will not be included in the query's paths.<br><br>"
+                                                   "Set to a higher value to make BLAST query paths more stringent.");
+    ui->minMeanHitIdentityInfoText->setInfoText("This is a minimum value for the mean of the percent identity for the hits in a BLAST query path, weighted by the hits' lengths. Paths with a mean hit percent identity less than this setting will not be included in the query's paths.<br><br>"
+                                                "Set to a higher value to make BLAST query paths more stringent.");
+    ui->maxEvalueProductInfoText->setInfoText("This is a maximum value for the product of the e-values of all the hits in a BLAST query path. Paths with an e-value product greater than this setting will not be included in the query's paths.<br><br>"
+                                              "Set to a lower value to make BLAST query paths more stringent.");
+    ui->minLengthPercentageInfoText->setInfoText("This is a minimum value for the relative length between a BLAST query and its path in the graph. Paths with a relative length less than this setting will not be included in the query's paths.<br><br>"
+                                                 "Set to a value closer to 100% to make BLAST query paths more stringent.");
+    ui->maxLengthPercentageInfoText->setInfoText("This is a maximum value for the relative length between a BLAST query and its path in the graph. Paths with a relative length greater than this setting will not be included in the query's paths.<br><br>"
+                                                 "Set to a value closer to 100% to make BLAST query paths more stringent.");
+    ui->minLengthBaseDiscrepancyInfoText->setInfoText("This is the minimum length difference (in bases) between a BLAST query and its path in the graph.  Paths with a length difference less than this setting will not be included in the query's paths.<br><br>"
+                                                      "Set to a value closer to 0 to make BLAST query paths more stringent.");
+    ui->minLengthBaseDiscrepancyInfoText->setInfoText("This is the maximum length difference (in bases) between a BLAST query and its path in the graph.  Paths with a length difference greater than this setting will not be included in the query's paths.<br><br>"
+                                                      "Set to a value closer to 0 to make BLAST query paths more stringent.");
+}
+
+
+void SettingsDialog::enableDisableDepthWidgets()
+{
+    bool manual = ui->depthValueManualRadioButton->isChecked();
+
+    ui->depthManualWidget->setEnabled(manual);
+    ui->depthAutoWidget->setEnabled(!manual);
+}
+
+
+void SettingsDialog::accept()
+{
+    if (ui->lowDepthValueSpinBox->value() > ui->highDepthValueSpinBox->value())
+        QMessageBox::warning(this, "Depth value error", "The low depth value cannot be greater than the high depth value.");
+
+    else if (ui->minLengthPercentageCheckBox->isChecked() &&
+             ui->maxLengthPercentageCheckBox->isChecked() &&
+             ui->minLengthPercentageSpinBox->value() > ui->maxLengthPercentageSpinBox->value())
+        QMessageBox::warning(this, "BLAST query path length value error", "In the 'BLAST query paths' section, the minimum "
+                                                                          "path length value cannot be larger than "
+                                                                           "the maximum path length value.");
+
+    else if (ui->minLengthBaseDiscrepancyCheckBox->isChecked() &&
+             ui->maxLengthBaseDiscrepancyCheckBox->isChecked() &&
+             ui->minLengthBaseDiscrepancySpinBox->value() > ui->maxLengthBaseDiscrepancySpinBox->value())
+        QMessageBox::warning(this, "BLAST query length discrepancy value error", "In the 'BLAST query paths' section, the minimum "
+                                                                                 "length discrepancy value cannot be larger than "
+                                                                                 "the maximum length discrepancy value.");
+
+    else
+        QDialog::accept();
+}
+
+
+void SettingsDialog::nodeLengthPerMegabaseManualChanged()
+{
+    bool manual = ui->nodeLengthPerMegabaseManualRadioButton->isChecked();
+    ui->nodeLengthPerMegabaseManualSpinBox->setEnabled(manual);
+    ui->nodeLengthPerMegabaseAutoLabel->setEnabled(!manual);
+}
+
+
+void SettingsDialog::updateNodeWidthVisualAid()
+{
+    ui->nodeWidthVisualAid->m_depthEffectOnWidth = ui->depthEffectOnWidthSpinBox->value() / 100.0;
+    ui->nodeWidthVisualAid->m_depthPower = ui->depthPowerSpinBox->value();
+
+    ui->nodeWidthVisualAid->update();
+}
+
+
+void SettingsDialog::colourSliderChanged()
+{
+    ui->randomColourPositiveOpacitySpinBox->setValue(ui->randomColourPositiveOpacitySlider->value());
+    ui->randomColourNegativeOpacitySpinBox->setValue(ui->randomColourNegativeOpacitySlider->value());
+    ui->randomColourPositiveSaturationSpinBox->setValue(ui->randomColourPositiveSaturationSlider->value());
+    ui->randomColourNegativeSaturationSpinBox->setValue(ui->randomColourNegativeSaturationSlider->value());
+    ui->randomColourPositiveLightnessSpinBox->setValue(ui->randomColourPositiveLightnessSlider->value());
+    ui->randomColourNegativeLightnessSpinBox->setValue(ui->randomColourNegativeLightnessSlider->value());
+}
+
+void SettingsDialog::colourSpinBoxChanged()
+{
+    ui->randomColourPositiveOpacitySlider->setValue(ui->randomColourPositiveOpacitySpinBox->value());
+    ui->randomColourNegativeOpacitySlider->setValue(ui->randomColourNegativeOpacitySpinBox->value());
+    ui->randomColourPositiveSaturationSlider->setValue(ui->randomColourPositiveSaturationSpinBox->value());
+    ui->randomColourNegativeSaturationSlider->setValue(ui->randomColourNegativeSaturationSpinBox->value());
+    ui->randomColourPositiveLightnessSlider->setValue(ui->randomColourPositiveLightnessSpinBox->value());
+    ui->randomColourNegativeLightnessSlider->setValue(ui->randomColourNegativeLightnessSpinBox->value());
+}
+
+void SettingsDialog::checkBoxesChanged()
+{
+    ui->minQueryCoveredByHitsSpinBox->setEnabled(ui->minQueryCoveredByHitsCheckBox->isChecked());
+    ui->minMeanHitIdentitySpinBox->setEnabled(ui->minMeanHitIdentityCheckBox->isChecked());
+    ui->maxEValueCoefficientSpinBox->setEnabled(ui->maxEValueProductCheckBox->isChecked());
+    ui->maxEValueExponentSpinBox->setEnabled(ui->maxEValueProductCheckBox->isChecked());
+    ui->minLengthPercentageSpinBox->setEnabled(ui->minLengthPercentageCheckBox->isChecked());
+    ui->maxLengthPercentageSpinBox->setEnabled(ui->maxLengthPercentageCheckBox->isChecked());
+    ui->minLengthBaseDiscrepancySpinBox->setEnabled(ui->minLengthBaseDiscrepancyCheckBox->isChecked());
+    ui->maxLengthBaseDiscrepancySpinBox->setEnabled(ui->maxLengthBaseDiscrepancyCheckBox->isChecked());
+}
+
+//This function adds or removes the '+' prefix from the length discrepancy
+//spin boxes, based on whether or not they hold a positive value.
+void SettingsDialog::lengthDiscrepancySpinBoxChanged()
+{
+    if (ui->minLengthBaseDiscrepancySpinBox->value() > 0)
+        ui->minLengthBaseDiscrepancySpinBox->setPrefix("+");
+    else
+        ui->minLengthBaseDiscrepancySpinBox->setPrefix("");
+
+    if (ui->maxLengthBaseDiscrepancySpinBox->value() > 0)
+        ui->maxLengthBaseDiscrepancySpinBox->setPrefix("+");
+    else
+        ui->maxLengthBaseDiscrepancySpinBox->setPrefix("");
+}
diff --git a/ui/settingsdialog.h b/ui/settingsdialog.h
new file mode 100644
index 0000000..5bae9db
--- /dev/null
+++ b/ui/settingsdialog.h
@@ -0,0 +1,62 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include <QDialog>
+#include <QCloseEvent>
+
+class Settings;
+
+namespace Ui {
+class SettingsDialog;
+}
+
+class SettingsDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit SettingsDialog(QWidget *parent = 0);
+    ~SettingsDialog();
+
+    void setWidgetsFromSettings();
+    void setSettingsFromWidgets();
+
+private:
+    Ui::SettingsDialog *ui;
+
+    void loadOrSaveSettingsToOrFromWidgets(bool setWidgets, Settings * settings);
+    void setInfoTexts();
+
+private slots:
+    void restoreDefaults();
+    void enableDisableDepthWidgets();
+    void nodeLengthPerMegabaseManualChanged();
+    void updateNodeWidthVisualAid();
+    void colourSliderChanged();
+    void colourSpinBoxChanged();
+    void checkBoxesChanged();
+    void lengthDiscrepancySpinBoxChanged();
+
+public slots:
+    void accept();
+};
+
+#endif // SETTINGSDIALOG_H
diff --git a/ui/settingsdialog.ui b/ui/settingsdialog.ui
new file mode 100644
index 0000000..2c27a31
--- /dev/null
+++ b/ui/settingsdialog.ui
@@ -0,0 +1,4169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SettingsDialog</class>
+ <widget class="QDialog" name="SettingsDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>378</width>
+    <height>673</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Settings</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="VerticalScrollArea" name="scrollArea">
+     <property name="widgetResizable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>-62</y>
+        <width>400</width>
+        <height>3466</height>
+       </rect>
+      </property>
+      <layout class="QVBoxLayout" name="verticalLayout_3">
+       <item>
+        <widget class="QLabel" name="graphSizeHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Graph size</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="graphLayoutDescriptionLabel_2">
+         <property name="text">
+          <string><html><head/><body><p>These settings control the length and width of nodes and edges in the graph. Note that the node width control is in the main window, not here in the settings.  It is necessary to redraw the graph to see the effect of changing some of these settings.</p></body></html></string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_12">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_24" native="true">
+         <layout class="QHBoxLayout" name="horizontalLayout_7">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item>
+           <spacer name="horizontalSpacer_28">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="InfoTextWidget" name="nodeLengthPerMegabaseInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_12">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Node length
+per megabase:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QWidget" name="widget_10" native="true">
+            <layout class="QGridLayout" name="gridLayout_17">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item row="0" column="0">
+              <widget class="QRadioButton" name="nodeLengthPerMegabaseAutoRadioButton">
+               <property name="text">
+                <string>Auto</string>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="0">
+              <widget class="QRadioButton" name="nodeLengthPerMegabaseManualRadioButton">
+               <property name="text">
+                <string>Manual</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QLabel" name="nodeLengthPerMegabaseAutoLabel">
+               <property name="text">
+                <string>100</string>
+               </property>
+               <property name="alignment">
+                <set>Qt::AlignCenter</set>
+               </property>
+              </widget>
+             </item>
+             <item row="1" column="1">
+              <widget class="QDoubleSpinBox" name="nodeLengthPerMegabaseManualSpinBox">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="alignment">
+                <set>Qt::AlignCenter</set>
+               </property>
+               <property name="decimals">
+                <number>0</number>
+               </property>
+               <property name="minimum">
+                <double>0.000000000000000</double>
+               </property>
+               <property name="maximum">
+                <double>1000000.000000000000000</double>
+               </property>
+               <property name="singleStep">
+                <double>100.000000000000000</double>
+               </property>
+               <property name="value">
+                <double>1000.000000000000000</double>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_27">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_25" native="true">
+         <layout class="QGridLayout" name="gridLayout_18">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="3" column="6">
+           <widget class="QDoubleSpinBox" name="doubleModeNodeSeparationSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <double>100.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>0.500000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <widget class="InfoTextWidget" name="minimumNodeLengthInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="5">
+           <widget class="QLabel" name="label_25">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Minimum node length:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="6">
+           <widget class="QDoubleSpinBox" name="minimumNodeLengthSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>1.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>1000.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>1.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="6">
+           <widget class="QDoubleSpinBox" name="edgeLengthSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>0.100000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>100.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>1.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="5">
+           <widget class="QLabel" name="label_33">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Double mode separation:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="7">
+           <spacer name="horizontalSpacer_29">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="3">
+           <spacer name="horizontalSpacer_30">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="5">
+           <widget class="QLabel" name="label_31">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Edge length:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4">
+           <widget class="InfoTextWidget" name="doubleModeNodeSeparationInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4">
+           <widget class="InfoTextWidget" name="edgeLengthInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="4">
+           <widget class="InfoTextWidget" name="edgeWidthInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="5">
+           <widget class="QLabel" name="label_5">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Edge width:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="6">
+           <widget class="QDoubleSpinBox" name="edgeWidthSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>0.100000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>100.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>0.500000000000000</double>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_13">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="graphLayoutQualityHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Graph layout</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="graphLayoutDescriptionLabel">
+         <property name="text">
+          <string>These settings control how the graph nodes are positioned on the screen. It is necessary to redraw the graph to see the effect of changing these settings.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_16" native="true">
+         <layout class="QGridLayout" name="gridLayout_10">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="2" column="3">
+           <widget class="QLabel" name="label_8">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Linear graph layout:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="4">
+           <widget class="QWidget" name="widget_6" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_8">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QRadioButton" name="linearLayoutOnRadioButton">
+               <property name="text">
+                <string>On</string>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QRadioButton" name="linearLayoutOffRadioButton">
+               <property name="text">
+                <string>Off</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="InfoTextWidget" name="linearLayoutInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="QLabel" name="label_9">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Node segment length:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <widget class="QDoubleSpinBox" name="nodeSegmentLengthSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>1.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>1000.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>1.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="QLabel" name="label_3">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Graph layout iterations:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="InfoTextWidget" name="nodeSegmentLengthInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="InfoTextWidget" name="graphLayoutQualityInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4">
+           <widget class="QSlider" name="graphLayoutQualitySlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>4</number>
+            </property>
+            <property name="pageStep">
+             <number>1</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="tickPosition">
+             <enum>QSlider::TicksBelow</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <spacer name="horizontalSpacer_3">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="5">
+           <spacer name="horizontalSpacer_2">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="3" column="3">
+           <widget class="QLabel" name="label_10">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Component separation:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4">
+           <widget class="QDoubleSpinBox" name="componentSeparationSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>1.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>1000.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>1.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="2">
+           <widget class="InfoTextWidget" name="componentSeparationInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_10">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="graphAppearanceHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Graph appearance</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="graphAppearanceDescriptionLabel">
+         <property name="text">
+          <string>These settings control other cosmetic details of the nodes and edges in the graph.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_8" native="true">
+         <layout class="QGridLayout" name="gridLayout_9">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="4" column="3">
+           <widget class="QLabel" name="label_6">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Outline thickness:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="edgeColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="QLabel" name="label_28">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Edge colour:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4">
+           <widget class="ColourButton" name="outlineColourButton">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="3">
+           <widget class="QLabel" name="label_18">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Selection colour:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="InfoTextWidget" name="outlineColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="horizontalSpacer_4">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="5">
+           <spacer name="horizontalSpacer">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="4">
+           <widget class="ColourButton" name="edgeColourButton">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="3">
+           <widget class="QLabel" name="label_27">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Outline colour:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1">
+           <widget class="InfoTextWidget" name="outlineThicknessInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="1">
+           <widget class="InfoTextWidget" name="selectionColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="4">
+           <widget class="ColourButton" name="selectionColourButton">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="4">
+           <widget class="QDoubleSpinBox" name="outlineThicknessSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <double>1000.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>0.050000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="4">
+           <widget class="QWidget" name="widget_11" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_9">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QRadioButton" name="singleNodeArrowHeadsOnRadioButton">
+               <property name="text">
+                <string>On</string>
+               </property>
+               <property name="checked">
+                <bool>false</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QRadioButton" name="singleNodeArrowHeadsOffRadioButton">
+               <property name="text">
+                <string>Off</string>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="6" column="4">
+           <widget class="QWidget" name="widget_3" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_2">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QRadioButton" name="antialiasingOnRadioButton">
+               <property name="text">
+                <string>On</string>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QRadioButton" name="antialiasingOffRadioButton">
+               <property name="text">
+                <string>Off</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item row="6" column="3">
+           <widget class="QLabel" name="label_11">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Antialiasing:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="1">
+           <widget class="InfoTextWidget" name="antialiasingInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="3">
+           <widget class="QLabel" name="label_23">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Arrowheads in
+single node style:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="1">
+           <widget class="InfoTextWidget" name="singleNodeArrowHeadsInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="textAppearanceHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Text appearance</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="textAppearanceDescriptionLabel">
+         <property name="text">
+          <string>These settings control the appearance of text labels that can be displayed on the graph. The effect of these settings is only seen when one of the node label types is selected in the main window.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_4">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_17" native="true">
+         <layout class="QGridLayout" name="gridLayout_3">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="textOutlineThicknessInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="textColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_26">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Text colour:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4">
+           <spacer name="horizontalSpacer_8">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="2" column="2">
+           <widget class="QLabel" name="label_47">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Text outline colour:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="label_7">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Text outline thickness:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3">
+           <widget class="ColourButton" name="textOutlineColourButton">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="InfoTextWidget" name="textOutlineColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="QDoubleSpinBox" name="textOutlineThicknessSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <double>2.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>0.100000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="ColourButton" name="textColourButton">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>100</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="horizontalSpacer_10">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_9" native="true">
+         <layout class="QHBoxLayout" name="horizontalLayout_6">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item>
+           <spacer name="horizontalSpacer_25">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="InfoTextWidget" name="positionTextInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_48">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Position text:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QWidget" name="widget_15" native="true">
+            <layout class="QVBoxLayout" name="verticalLayout_2">
+             <property name="spacing">
+              <number>-1</number>
+             </property>
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QRadioButton" name="positionVisibleRadioButton">
+               <property name="text">
+                <string>Over visible regions</string>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QRadioButton" name="positionCentreRadioButton">
+               <property name="text">
+                <string>On node centre</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_26">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="nodeWidthHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Depth and node width</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="nodeWidthDescriptionLabel">
+         <property name="text">
+          <string><html><head/><body><p>These settings control how the depth of a node affects its width. The average node width is controlled in the main Bandage window.</p></body></html></string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_7">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_4" native="true">
+         <layout class="QGridLayout" name="gridLayout_6">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="0" column="2">
+           <widget class="InfoTextWidget" name="depthEffectOnWidthInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="InfoTextWidget" name="depthPowerInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="QLabel" name="label_4">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Depth effect on width:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <widget class="QDoubleSpinBox" name="depthEffectOnWidthSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="suffix">
+             <string>%</string>
+            </property>
+            <property name="decimals">
+             <number>0</number>
+            </property>
+            <property name="minimum">
+             <double>0.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>100.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>5.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4">
+           <widget class="QDoubleSpinBox" name="depthPowerSpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="minimum">
+             <double>0.100000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>1.000000000000000</double>
+            </property>
+            <property name="singleStep">
+             <double>0.050000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="QLabel" name="label_36">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Depth effect power:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="horizontalSpacer_9">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="6">
+           <spacer name="horizontalSpacer_5">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="2" column="3" colspan="2">
+           <widget class="QWidget" name="widget_7" native="true">
+            <layout class="QHBoxLayout" name="horizontalLayout_3">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <spacer name="horizontalSpacer_7">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeType">
+                <enum>QSizePolicy::Expanding</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>0</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+             <item>
+              <widget class="QFrame" name="frame">
+               <property name="frameShape">
+                <enum>QFrame::Panel</enum>
+               </property>
+               <property name="frameShadow">
+                <enum>QFrame::Raised</enum>
+               </property>
+               <layout class="QGridLayout" name="gridLayout_5">
+                <property name="leftMargin">
+                 <number>0</number>
+                </property>
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <property name="rightMargin">
+                 <number>0</number>
+                </property>
+                <property name="bottomMargin">
+                 <number>0</number>
+                </property>
+                <property name="spacing">
+                 <number>0</number>
+                </property>
+                <item row="0" column="3">
+                 <widget class="NodeWidthVisualAid" name="nodeWidthVisualAid" native="true">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>80</width>
+                    <height>80</height>
+                   </size>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="2">
+                 <widget class="QLabel" name="label_38">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>5</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="styleSheet">
+                   <string notr="true">background-color: rgb(255, 255, 255)</string>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="VerticalLabel" name="label_37">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="styleSheet">
+                   <string notr="true">background-color: rgb(255, 255, 255)</string>
+                  </property>
+                  <property name="text">
+                   <string>Node width</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1" colspan="2">
+                 <widget class="QLabel" name="label_40">
+                  <property name="styleSheet">
+                   <string notr="true">background-color: rgb(255, 255, 255)</string>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="3">
+                 <widget class="QLabel" name="label_39">
+                  <property name="styleSheet">
+                   <string notr="true">background-color: rgb(255, 255, 255)</string>
+                  </property>
+                  <property name="text">
+                   <string>Depth</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <spacer name="horizontalSpacer_6">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeType">
+                <enum>QSizePolicy::Expanding</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>0</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_4">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="randomColourSchemeHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Random colour scheme</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_6">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="randomColourSchemeDescriptionLabel">
+         <property name="text">
+          <string>These settings control the properties of the node colours when the 'Random colours' colour scheme is used.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_18" native="true">
+         <layout class="QGridLayout" name="gridLayout_11">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="randomColourPositiveSaturationInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="InfoTextWidget" name="randomColourPositiveLightnessInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="randomColourNegativeSaturationInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3">
+           <widget class="QSlider" name="randomColourPositiveLightnessSlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="QSlider" name="randomColourPositiveSaturationSlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="5">
+           <spacer name="horizontalSpacer_12">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="4" column="2">
+           <widget class="QLabel" name="label_34">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Positive node opacity:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="QLabel" name="label_44">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Positive node lightness:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_42">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Positive node saturation:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="3">
+           <widget class="QSlider" name="randomColourPositiveOpacitySlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="4">
+           <widget class="QSpinBox" name="randomColourPositiveLightnessSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="2">
+           <widget class="QLabel" name="label_45">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Negative node lightness:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="QSlider" name="randomColourNegativeSaturationSlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="label_43">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Negative node saturation:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="InfoTextWidget" name="randomColourNegativeLightnessInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1">
+           <widget class="InfoTextWidget" name="randomColourPositiveOpacityInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="4">
+           <widget class="QSpinBox" name="randomColourNegativeSaturationSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <widget class="QSpinBox" name="randomColourPositiveSaturationSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <spacer name="horizontalSpacer_11">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="3" column="3">
+           <widget class="QSlider" name="randomColourNegativeLightnessSlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="4">
+           <widget class="QSpinBox" name="randomColourPositiveOpacitySpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="4">
+           <widget class="QSpinBox" name="randomColourNegativeLightnessSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="1">
+           <widget class="InfoTextWidget" name="randomColourNegativeOpacityInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="2">
+           <widget class="QLabel" name="label_46">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Negative node opacity:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="3">
+           <widget class="QSlider" name="randomColourNegativeOpacitySlider">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="4">
+           <widget class="QSpinBox" name="randomColourNegativeOpacitySpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_8">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="uniformColourSchemeHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Uniform colour scheme</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_5">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="uniformColourSchemeDescriptionLabel">
+         <property name="text">
+          <string>These settings control the node colours when the 'Uniform colours' colour scheme is used.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_19" native="true">
+         <layout class="QGridLayout" name="gridLayout_12">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="2" column="1">
+           <widget class="InfoTextWidget" name="uniformNodeSpecialColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="uniformNegativeNodeColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3">
+           <widget class="ColourButton" name="uniformNodeSpecialColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="label_17">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Negative nodes:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="uniformPositiveNodeColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="ColourButton" name="uniformNegativeNodeColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <spacer name="horizontalSpacer_13">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="3">
+           <widget class="ColourButton" name="uniformPositiveNodeColourButton">
+            <property name="minimumSize">
+             <size>
+              <width>100</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_13">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Positive nodes:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="QLabel" name="label_14">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Special nodes:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <spacer name="horizontalSpacer_14">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_5">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="depthColourSchemeHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Depth colour scheme</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_8">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="depthColourSchemeDescriptionLabel">
+         <property name="text">
+          <string>These settings control the node colours when the 'Colour by depth' colour scheme is used.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_5" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <layout class="QHBoxLayout" name="horizontalLayout_5">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget" native="true">
+         <layout class="QGridLayout" name="gridLayout_2">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="lowDepthColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <spacer name="horizontalSpacer_23">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_15">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Low depth:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="ColourButton" name="lowDepthColourButton">
+            <property name="minimumSize">
+             <size>
+              <width>100</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <spacer name="horizontalSpacer_24">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="highDepthColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="label_16">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>High depth:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="ColourButton" name="highDepthColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_20" native="true">
+         <layout class="QHBoxLayout" name="horizontalLayout_4">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item>
+           <spacer name="horizontalSpacer_15">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QWidget" name="depthAutoManualWidget" native="true">
+            <layout class="QGridLayout" name="gridLayout_4">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item row="0" column="2">
+              <widget class="QWidget" name="depthAutoWidget" native="true">
+               <layout class="QGridLayout" name="gridLayout_7">
+                <property name="leftMargin">
+                 <number>0</number>
+                </property>
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <property name="rightMargin">
+                 <number>0</number>
+                </property>
+                <property name="bottomMargin">
+                 <number>0</number>
+                </property>
+                <property name="verticalSpacing">
+                 <number>0</number>
+                </property>
+                <item row="1" column="1">
+                 <widget class="QLabel" name="highDepthAutoValueLabel2">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="text">
+                   <string>0.0</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="QLabel" name="lowDepthAutoValueLabel2">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="text">
+                   <string>0.0</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="highDepthAutoValueLabel1">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="text">
+                   <string>High:</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="lowDepthAutoValueLabel1">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="text">
+                   <string>Low:</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item row="2" column="2">
+              <widget class="QWidget" name="depthManualWidget" native="true">
+               <layout class="QGridLayout" name="gridLayout_8">
+                <property name="leftMargin">
+                 <number>0</number>
+                </property>
+                <property name="topMargin">
+                 <number>0</number>
+                </property>
+                <property name="rightMargin">
+                 <number>0</number>
+                </property>
+                <property name="bottomMargin">
+                 <number>0</number>
+                </property>
+                <property name="verticalSpacing">
+                 <number>0</number>
+                </property>
+                <item row="0" column="1">
+                 <widget class="QDoubleSpinBox" name="lowDepthValueSpinBox">
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                  <property name="maximum">
+                   <double>1000000.000000000000000</double>
+                  </property>
+                  <property name="singleStep">
+                   <double>1.000000000000000</double>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QDoubleSpinBox" name="highDepthValueSpinBox">
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                  <property name="maximum">
+                   <double>1000000.000000000000000</double>
+                  </property>
+                  <property name="singleStep">
+                   <double>1.000000000000000</double>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="0">
+                 <widget class="QLabel" name="highDepthValueLabel">
+                  <property name="text">
+                   <string>High:</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="lowDepthValueLabel">
+                  <property name="text">
+                   <string>Low:</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item row="0" column="1">
+              <widget class="QRadioButton" name="depthValueAutoRadioButton">
+               <property name="text">
+                <string>Auto</string>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="1">
+              <widget class="QRadioButton" name="depthValueManualRadioButton">
+               <property name="text">
+                <string>Manual</string>
+               </property>
+              </widget>
+             </item>
+             <item row="0" column="0">
+              <widget class="InfoTextWidget" name="depthAutoValuesInfoText" native="true">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="minimumSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+             <item row="2" column="0">
+              <widget class="InfoTextWidget" name="depthManualValuesInfoText" native="true">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="minimumSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_16">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_6">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="blastColourSchemeHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>BLAST colour scheme</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_10">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="blastColourSchemeDescriptionLabel">
+         <property name="text">
+          <string>These settings control the node colours when either of the 'BLAST hits' colour schemes are used.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_21" native="true">
+         <layout class="QGridLayout" name="gridLayout_14">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="noBlastHitsColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="ColourButton" name="noBlastHitsColourButton">
+            <property name="minimumSize">
+             <size>
+              <width>100</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <spacer name="horizontalSpacer_17">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_32">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>No BLAST hits:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <spacer name="horizontalSpacer_18">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_7">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="contiguityColourSchemeHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Contiguity colour scheme</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_9">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="contiguityColourSchemeDescriptionLabel">
+         <property name="text">
+          <string>These settings control the node colours when the 'Colour by contiguity' colour scheme is used.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_22" native="true">
+         <layout class="QGridLayout" name="gridLayout_15">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="5" column="1">
+           <widget class="InfoTextWidget" name="contiguityStartingColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="InfoTextWidget" name="contiguousEitherStrandColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1">
+           <widget class="InfoTextWidget" name="notContiguousColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="InfoTextWidget" name="maybeContiguousColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3">
+           <widget class="ColourButton" name="contiguousStrandSpecificColourButton">
+            <property name="minimumSize">
+             <size>
+              <width>100</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="QLabel" name="label_29">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Contiguous (either strand):</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <spacer name="horizontalSpacer_19">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="contiguitySearchDepthInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="contiguousStrandSpecificColourInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="3">
+           <widget class="ColourButton" name="contiguityStartingColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="2">
+           <widget class="QLabel" name="label_21">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Not contiguous:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="label_22">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Contiguous (strand-specific):</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_30">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Search depth:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="3">
+           <widget class="ColourButton" name="maybeContiguousColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="2">
+           <widget class="QLabel" name="label_19">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Possibly contiguous:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="3">
+           <widget class="ColourButton" name="notContiguousColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="2">
+           <widget class="QLabel" name="label_20">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Starting:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3">
+           <widget class="ColourButton" name="contiguousEitherStrandColourButton">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3">
+           <widget class="QSpinBox" name="contiguitySearchDepthSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <number>50</number>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="4">
+           <spacer name="horizontalSpacer_20">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_11">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="blastQueryPathsHeadingLabel">
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>BLAST query paths</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="Line" name="line_11">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="blastQueryPathsDescriptionLabel">
+         <property name="text">
+          <string>These settings control how Bandage searches for query paths after conducting a BLAST search. Query paths that fail to meet these criteria will be excluded. It is necessary to rerun a BLAST search to see the effect of changing these settings.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="widget_23" native="true">
+         <layout class="QGridLayout" name="gridLayout_16">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
+          <item row="2" column="3" colspan="2">
+           <widget class="QDoubleSpinBox" name="minQueryCoveredByPathSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="suffix">
+             <string>%</string>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>30.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="1">
+           <widget class="InfoTextWidget" name="minQueryCoveredByHitsInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="3" colspan="2">
+           <widget class="QDoubleSpinBox" name="minQueryCoveredByHitsSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="suffix">
+             <string>%</string>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>30.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>100.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="3" colspan="2">
+           <widget class="QSpinBox" name="maxPathNodesSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <number>50</number>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="2">
+           <widget class="QCheckBox" name="minMeanHitIdentityCheckBox">
+            <property name="text">
+             <string>Min mean hit identity:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="2">
+           <widget class="QCheckBox" name="minQueryCoveredByHitsCheckBox">
+            <property name="text">
+             <string>Min query path hit coverage:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="10" column="2">
+           <widget class="QCheckBox" name="maxLengthBaseDiscrepancyCheckBox">
+            <property name="text">
+             <string>Maximum length
+discrepancy (bases):</string>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="2">
+           <widget class="QCheckBox" name="maxEValueProductCheckBox">
+            <property name="text">
+             <string>Max e-value product:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="8" column="2">
+           <widget class="QCheckBox" name="maxLengthPercentageCheckBox">
+            <property name="text">
+             <string>Maximum path length:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="2">
+           <widget class="QLabel" name="minQueryCoveredByPathLabel">
+            <property name="text">
+             <string>Min query path coverage:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="2">
+           <widget class="QCheckBox" name="minLengthPercentageCheckBox">
+            <property name="text">
+             <string>Minimum path length:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="9" column="2">
+           <widget class="QCheckBox" name="minLengthBaseDiscrepancyCheckBox">
+            <property name="text">
+             <string>Minimum length
+discrepancy (bases):</string>
+            </property>
+           </widget>
+          </item>
+          <item row="9" column="3" colspan="2">
+           <widget class="QSpinBox" name="minLengthBaseDiscrepancySpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="minimum">
+             <number>-1000000</number>
+            </property>
+            <property name="maximum">
+             <number>1000000</number>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="3" colspan="2">
+           <widget class="QDoubleSpinBox" name="minLengthPercentageSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="suffix">
+             <string>%</string>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="minimum">
+             <double>0.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>1000000.000000000000000</double>
+            </property>
+            <property name="value">
+             <double>95.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="10" column="3" colspan="2">
+           <widget class="QSpinBox" name="maxLengthBaseDiscrepancySpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="minimum">
+             <number>-1000000</number>
+            </property>
+            <property name="maximum">
+             <number>1000000</number>
+            </property>
+           </widget>
+          </item>
+          <item row="8" column="3" colspan="2">
+           <widget class="QDoubleSpinBox" name="maxLengthPercentageSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="suffix">
+             <string>%</string>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <double>1000000.000000000000000</double>
+            </property>
+            <property name="value">
+             <double>105.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="7" column="1">
+           <widget class="InfoTextWidget" name="minLengthPercentageInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="8" column="1">
+           <widget class="InfoTextWidget" name="maxLengthPercentageInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="9" column="1">
+           <widget class="InfoTextWidget" name="minLengthBaseDiscrepancyInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="10" column="1">
+           <widget class="InfoTextWidget" name="maxLengthBaseDiscrepancyInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="1">
+           <widget class="InfoTextWidget" name="minMeanHitIdentityInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="InfoTextWidget" name="maxPathNodesInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="6" column="1">
+           <widget class="InfoTextWidget" name="maxEvalueProductInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="1">
+           <widget class="InfoTextWidget" name="minQueryCoveredByPathInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="2">
+           <widget class="QLabel" name="label_35">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Max path nodes:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="5">
+           <spacer name="horizontalSpacer_22">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="6" column="4">
+           <widget class="QSpinBox" name="maxEValueExponentSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="prefix">
+             <string>e</string>
+            </property>
+            <property name="minimum">
+             <number>-999</number>
+            </property>
+            <property name="maximum">
+             <number>1</number>
+            </property>
+            <property name="value">
+             <number>-10</number>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <spacer name="horizontalSpacer_21">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Expanding</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>0</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="6" column="3">
+           <widget class="QDoubleSpinBox" name="maxEValueCoefficientSpinBox">
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <double>9.900000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="3" colspan="2">
+           <widget class="QDoubleSpinBox" name="minMeanHitIdentitySpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="suffix">
+             <string>%</string>
+            </property>
+            <property name="decimals">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <double>100.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2">
+           <widget class="QLabel" name="label_41">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Max hits for path search:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3" colspan="2">
+           <widget class="QSpinBox" name="maxHitsForQueryPathSpinBox">
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <number>50</number>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="InfoTextWidget" name="maxHitsForQueryPathInfoText" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>16</width>
+              <height>16</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_12">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>30</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="widget_2" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QPushButton" name="restoreDefaultsButton">
+        <property name="text">
+         <string>Restore defaults</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QDialogButtonBox" name="buttonBox">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="standardButtons">
+         <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>InfoTextWidget</class>
+   <extends>QWidget</extends>
+   <header>infotextwidget.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>VerticalScrollArea</class>
+   <extends>QScrollArea</extends>
+   <header>verticalscrollarea.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>VerticalLabel</class>
+   <extends>QLabel</extends>
+   <header>verticallabel.h</header>
+  </customwidget>
+  <customwidget>
+   <class>NodeWidthVisualAid</class>
+   <extends>QWidget</extends>
+   <header>nodewidthvisualaid.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>ColourButton</class>
+   <extends>QPushButton</extends>
+   <header>colourbutton.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>scrollArea</tabstop>
+  <tabstop>antialiasingOnRadioButton</tabstop>
+  <tabstop>antialiasingOffRadioButton</tabstop>
+  <tabstop>positionVisibleRadioButton</tabstop>
+  <tabstop>positionCentreRadioButton</tabstop>
+  <tabstop>depthValueAutoRadioButton</tabstop>
+  <tabstop>restoreDefaultsButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>SettingsDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>SettingsDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/tablewidgetitemdouble.cpp b/ui/tablewidgetitemdouble.cpp
new file mode 100644
index 0000000..faf09e8
--- /dev/null
+++ b/ui/tablewidgetitemdouble.cpp
@@ -0,0 +1,35 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "tablewidgetitemdouble.h"
+
+TableWidgetItemDouble::TableWidgetItemDouble(QString text, double value) :
+    QTableWidgetItem(text), m_double(value)
+{
+}
+
+
+
+bool TableWidgetItemDouble::operator<(QTableWidgetItem const &other) const
+{
+    TableWidgetItemDouble const *item = dynamic_cast<TableWidgetItemDouble const*>(&other);
+    if(item)
+        return m_double < item->m_double;
+    else
+        return QTableWidgetItem::operator<(other);
+}
diff --git a/ui/tablewidgetitemdouble.h b/ui/tablewidgetitemdouble.h
new file mode 100644
index 0000000..15514eb
--- /dev/null
+++ b/ui/tablewidgetitemdouble.h
@@ -0,0 +1,34 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef TABLEWIDGETITEMDOUBLE_H
+#define TABLEWIDGETITEMDOUBLE_H
+
+#include <QTableWidgetItem>
+
+class TableWidgetItemDouble : public QTableWidgetItem
+{
+public:
+    TableWidgetItemDouble(QString text, double value);
+
+    double m_double;
+
+    virtual bool operator<(QTableWidgetItem const &other) const;
+};
+
+#endif // TABLEWIDGETITEMDOUBLE_H
diff --git a/ui/tablewidgetitemint.cpp b/ui/tablewidgetitemint.cpp
new file mode 100644
index 0000000..b25eb27
--- /dev/null
+++ b/ui/tablewidgetitemint.cpp
@@ -0,0 +1,35 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "tablewidgetitemint.h"
+
+TableWidgetItemInt::TableWidgetItemInt(QString text, int value) :
+    QTableWidgetItem(text), m_int(value)
+{
+}
+
+
+
+bool TableWidgetItemInt::operator<(QTableWidgetItem const &other) const
+{
+    TableWidgetItemInt const *item = dynamic_cast<TableWidgetItemInt const*>(&other);
+    if(item)
+        return m_int < item->m_int;
+    else
+        return QTableWidgetItem::operator<(other);
+}
diff --git a/ui/tablewidgetitemint.h b/ui/tablewidgetitemint.h
new file mode 100644
index 0000000..3b3ea2a
--- /dev/null
+++ b/ui/tablewidgetitemint.h
@@ -0,0 +1,34 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef TABLEWIDGETITEMINT_H
+#define TABLEWIDGETITEMINT_H
+
+#include <QTableWidgetItem>
+
+class TableWidgetItemInt : public QTableWidgetItem
+{
+public:
+    TableWidgetItemInt(QString text, int value);
+
+    int m_int;
+
+    virtual bool operator<(QTableWidgetItem const &other) const;
+};
+
+#endif // TABLEWIDGETITEMINT_H
diff --git a/ui/tablewidgetitemname.cpp b/ui/tablewidgetitemname.cpp
new file mode 100644
index 0000000..91e8754
--- /dev/null
+++ b/ui/tablewidgetitemname.cpp
@@ -0,0 +1,25 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "tablewidgetitemname.h"
+#include "../blast/blastquery.h"
+
+TableWidgetItemName::TableWidgetItemName(BlastQuery * query) :
+    QTableWidgetItem(query->getName()), m_query(query)
+{
+}
diff --git a/ui/tablewidgetitemname.h b/ui/tablewidgetitemname.h
new file mode 100644
index 0000000..8cea35c
--- /dev/null
+++ b/ui/tablewidgetitemname.h
@@ -0,0 +1,36 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef TABLEWIDGETITEMNAME_H
+#define TABLEWIDGETITEMNAME_H
+
+#include <QTableWidgetItem>
+
+class BlastQuery;
+
+class TableWidgetItemName : public QTableWidgetItem
+{
+public:
+    TableWidgetItemName(BlastQuery * query);
+    BlastQuery * getQuery() const {return m_query;}
+
+private:
+    BlastQuery * m_query;
+};
+
+#endif // TABLEWIDGETITEMNAME_H
diff --git a/ui/tablewidgetitemshown.cpp b/ui/tablewidgetitemshown.cpp
new file mode 100644
index 0000000..4de1029
--- /dev/null
+++ b/ui/tablewidgetitemshown.cpp
@@ -0,0 +1,35 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#include "tablewidgetitemshown.h"
+
+TableWidgetItemShown::TableWidgetItemShown(bool shown) :
+    QTableWidgetItem(), m_shown(shown)
+{
+}
+
+
+
+bool TableWidgetItemShown::operator<(QTableWidgetItem const &other) const
+{
+    TableWidgetItemShown const *item = dynamic_cast<TableWidgetItemShown const*>(&other);
+    if (item)
+        return !m_shown && item->m_shown;
+    else
+        return QTableWidgetItem::operator<(other);
+}
diff --git a/ui/tablewidgetitemshown.h b/ui/tablewidgetitemshown.h
new file mode 100644
index 0000000..ec7837c
--- /dev/null
+++ b/ui/tablewidgetitemshown.h
@@ -0,0 +1,34 @@
+//Copyright 2016 Ryan Wick
+
+//This file is part of Bandage
+
+//Bandage 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 3 of the License, or
+//(at your option) any later version.
+
+//Bandage 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 Bandage.  If not, see <http://www.gnu.org/licenses/>.
+
+
+#ifndef TABLEWIDGETITEMSHOWN_H
+#define TABLEWIDGETITEMSHOWN_H
+
+#include <QTableWidgetItem>
+
+class TableWidgetItemShown : public QTableWidgetItem
+{
+public:
+    TableWidgetItemShown(bool shown);
+
+    bool m_shown;
+
+    virtual bool operator<(QTableWidgetItem const &other) const;
+};
+
+#endif // TABLEWIDGETITEMSHOWN_H
diff --git a/ui/verticallabel.cpp b/ui/verticallabel.cpp
new file mode 100644
index 0000000..24dd5ed
--- /dev/null
+++ b/ui/verticallabel.cpp
@@ -0,0 +1,39 @@
+// http://stackoverflow.com/questions/9183050/vertical-qlabel-or-the-equivalent
+
+#include "verticallabel.h"
+#include <QPainter>
+
+VerticalLabel::VerticalLabel(QWidget *parent)
+    : QLabel(parent)
+{
+}
+
+VerticalLabel::VerticalLabel(const QString &text, QWidget *parent)
+: QLabel(text, parent)
+{
+}
+
+void VerticalLabel::paintEvent(QPaintEvent*)
+{
+    QPainter painter(this);
+    painter.setPen(Qt::black);
+    painter.setBrush(Qt::Dense1Pattern);
+
+    double shiftForCentering = (height() - sizeHint().height()) / 2.0;
+    painter.translate(sizeHint().width(), sizeHint().height() + shiftForCentering);
+    painter.rotate(270);
+
+    painter.drawText(0,0, text());
+}
+
+QSize VerticalLabel::minimumSizeHint() const
+{
+    QSize s = QLabel::minimumSizeHint();
+    return QSize(s.height(), s.width());
+}
+
+QSize VerticalLabel::sizeHint() const
+{
+    QSize s = QLabel::sizeHint();
+    return QSize(s.height(), s.width());
+}
diff --git a/ui/verticallabel.h b/ui/verticallabel.h
new file mode 100644
index 0000000..e238c95
--- /dev/null
+++ b/ui/verticallabel.h
@@ -0,0 +1,22 @@
+// http://stackoverflow.com/questions/9183050/vertical-qlabel-or-the-equivalent
+
+#ifndef VERTICALLABEL_H
+#define VERTICALLABEL_H
+
+#include <QLabel>
+
+class VerticalLabel : public QLabel
+{
+    Q_OBJECT
+
+public:
+    explicit VerticalLabel(QWidget *parent=0);
+    explicit VerticalLabel(const QString &text, QWidget *parent=0);
+
+protected:
+    void paintEvent(QPaintEvent*);
+    QSize sizeHint() const ;
+    QSize minimumSizeHint() const;
+};
+
+#endif // VERTICALLABEL_H
diff --git a/ui/verticalscrollarea.cpp b/ui/verticalscrollarea.cpp
new file mode 100644
index 0000000..bfbfde3
--- /dev/null
+++ b/ui/verticalscrollarea.cpp
@@ -0,0 +1,26 @@
+//This class was written by Jason Dolan and acquired here:
+//http://qt-project.org/forums/viewthread/13728
+
+
+#include "verticalscrollarea.h"
+
+#include <QEvent>
+#include <QScrollBar>
+
+
+VerticalScrollArea::VerticalScrollArea(QWidget *parent) :
+    QScrollArea(parent)
+{
+    setWidgetResizable(true);
+    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
+}
+
+bool VerticalScrollArea::eventFilter(QObject *o, QEvent *e)
+{
+    // This works because QScrollArea::setWidget installs an eventFilter on the widget
+    if(o && o == widget() && e->type() == QEvent::Resize)
+        setMinimumWidth(widget()->minimumSizeHint().width() + verticalScrollBar()->width());
+
+    return QScrollArea::eventFilter(o, e);
+}
diff --git a/ui/verticalscrollarea.h b/ui/verticalscrollarea.h
new file mode 100644
index 0000000..7aa0266
--- /dev/null
+++ b/ui/verticalscrollarea.h
@@ -0,0 +1,21 @@
+//This class was written by Jason Dolan and acquired here:
+//http://qt-project.org/forums/viewthread/13728
+
+
+#ifndef VERTICALSCROLLAREA_H
+#define VERTICALSCROLLAREA_H
+
+#include <QObject>
+#include <QWidget>
+#include <QEvent>
+#include <QScrollArea>
+
+class VerticalScrollArea : public QScrollArea
+{
+    Q_OBJECT
+public:
+    explicit VerticalScrollArea(QWidget *parent = 0);
+    virtual bool eventFilter(QObject *o, QEvent *e);
+};
+
+#endif // VERTICALSCROLLAREA_H

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/bandage.git



More information about the debian-med-commit mailing list