summaryrefslogtreecommitdiff
path: root/src/main/java/org/linaro/benchmarks/benchmarksgame
diff options
context:
space:
mode:
authorNingsheng Jian <ningsheng.jian@linaro.org>2017-11-07 18:38:01 +0800
committerNingsheng Jian <ningsheng.jian@linaro.org>2017-11-16 09:46:55 +0800
commite715fe64e96acb6131af937d0c8bba2537ea13f4 (patch)
tree702384eb404c3fd6acbbc3321261847e9fc27398 /src/main/java/org/linaro/benchmarks/benchmarksgame
parent3811e9930ddb1d2b3a1463ad6c876af324331335 (diff)
Port and add more cases.HEADmaster
1. Port benchmark cases from art-testing. 2. Add some more benchmarks for basic OPs. 3. Fix some jmh result variance. Signed-off-by: Zhongwei Yao <zhongwei.yao@linaro.org> Signed-off-by: Yang Zhang <yang.zhang@linaro.org> Signed-off-by: Ningsheng Jian <ningsheng.jian@linaro.org> Change-Id: I514658696b63e468158325be3b84494553773705
Diffstat (limited to 'src/main/java/org/linaro/benchmarks/benchmarksgame')
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/LICENSE34
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/binarytrees.java102
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/chameneosredux.java253
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/fannkuchredux.java94
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/fasta.java173
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/fastaredux.java204
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/knucleotide.java1312
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/mandelbrot.java104
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/meteor.java479
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/nbody.java204
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/pidigits.java156
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/regexdna.java1160
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/revcomp.java1103
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/spectralnorm.java112
-rw-r--r--src/main/java/org/linaro/benchmarks/benchmarksgame/threadring.java120
15 files changed, 5610 insertions, 0 deletions
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/LICENSE b/src/main/java/org/linaro/benchmarks/benchmarksgame/LICENSE
new file mode 100644
index 0000000..330d9e7
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/LICENSE
@@ -0,0 +1,34 @@
+Revised BSD license
+
+This is a specific instance of the Open Source Initiative (OSI) BSD license
+template http://www.opensource.org/licenses/bsd-license.php
+
+
+Copyright © 2004-2008 Brent Fulgham, 2005-2015 Isaac Gouy
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ Neither the name of "The Computer Language Benchmarks Game" nor the name of
+ of "The Computer Language Shootout Benchmarks" nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/binarytrees.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/binarytrees.java
new file mode 100644
index 0000000..8ce6f1c
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/binarytrees.java
@@ -0,0 +1,102 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `binarytrees/binarytrees.java-2.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Jarkko Miettinen
+ */
+
+/*
+ * Description: Allocate and deallocate many many binary trees.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class binarytrees {
+
+ private static final int PREDEFINED_DEPTH = 10;
+ private final static int minDepth = 4;
+
+ public int old_main(){
+ int n = 0;
+ int maxDepth = (minDepth + 2 > PREDEFINED_DEPTH) ? minDepth + 2 : PREDEFINED_DEPTH;
+ int stretchDepth = maxDepth + 1;
+
+ int check = (TreeNode.bottomUpTree(0,stretchDepth)).itemCheck();
+
+ TreeNode longLivedTree = TreeNode.bottomUpTree(0,maxDepth);
+
+ for (int depth=minDepth; depth<=maxDepth; depth+=2){
+ int iterations = 1 << (maxDepth - depth + minDepth);
+ check = 0;
+
+ for (int i=1; i<=iterations; i++){
+ check += (TreeNode.bottomUpTree(i,depth)).itemCheck();
+ check += (TreeNode.bottomUpTree(-i,depth)).itemCheck();
+ }
+ }
+ return check;
+ }
+
+
+ private static class TreeNode
+ {
+ private TreeNode left, right;
+ private int item;
+
+ TreeNode(int item){
+ this.item = item;
+ }
+
+ private static TreeNode bottomUpTree(int item, int depth){
+ if (depth>0){
+ return new TreeNode(
+ bottomUpTree(2*item-1, depth-1)
+ , bottomUpTree(2*item, depth-1)
+ , item
+ );
+ }
+ else {
+ return new TreeNode(item);
+ }
+ }
+
+ TreeNode(TreeNode left, TreeNode right, int item){
+ this.left = left;
+ this.right = right;
+ this.item = item;
+ }
+
+ private int itemCheck(){
+ // if necessary deallocate here
+ if (left==null) return item;
+ else return item + left.itemCheck() - right.itemCheck();
+ }
+ }
+ // CHECKSTYLE.ON: .*
+ @Benchmark
+ public void jmhTimeBinaryTrees() {
+ old_main();
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/chameneosredux.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/chameneosredux.java
new file mode 100644
index 0000000..6733d6b
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/chameneosredux.java
@@ -0,0 +1,253 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `chameneosredux/chameneosredux.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Michael Barker
+ */
+
+/*
+ * Description: Symmetrical thread rendezvous requests.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+
+/**
+ * This implementation uses the java.util.concurrent.atomic library
+ * i.e. (compare and set) to avoid locking. Real threads are used, but
+ * are set up as a thread pool and meeting requests are pushed onto a
+ * queue that feeds the thread pool.
+ */
+// CHECKSTYLE.OFF: .*
+public class chameneosredux {
+
+ enum Colour {
+ blue,
+ red,
+ yellow
+ }
+
+ private static Colour doCompliment(final Colour c1, final Colour c2) {
+ switch (c1) {
+ case blue:
+ switch (c2) {
+ case blue:
+ return Colour.blue;
+ case red:
+ return Colour.yellow;
+ case yellow:
+ return Colour.red;
+ }
+ case red:
+ switch (c2) {
+ case blue:
+ return Colour.yellow;
+ case red:
+ return Colour.red;
+ case yellow:
+ return Colour.blue;
+ }
+ case yellow:
+ switch (c2) {
+ case blue:
+ return Colour.red;
+ case red:
+ return Colour.blue;
+ case yellow:
+ return Colour.yellow;
+ }
+ }
+
+ throw new RuntimeException("Error");
+ }
+
+ static final class MeetingPlace {
+
+ private final AtomicInteger meetingsLeft;
+ private final AtomicReference<Creature> creatureRef = new AtomicReference<Creature>();
+
+ public MeetingPlace(final int meetings) {
+ meetingsLeft = new AtomicInteger(meetings);
+ }
+
+ public void meet(final Creature incoming) {
+ Colour newColour = null;
+ Creature first = null;
+ Creature next = null;
+ do {
+ first = creatureRef.get();
+ next = incoming;
+ if (first != null) {
+ newColour = doCompliment(incoming.colour, first.colour);
+ next = null;
+ }
+ } while (!creatureRef.compareAndSet(first, next));
+
+ if (first != null) {
+ final int meetings = meetingsLeft.decrementAndGet();
+ if (meetings >= 0) {
+ first.setColour(incoming.id, newColour);
+ incoming.setColour(first.id, newColour);
+ } else {
+ first.complete();
+ incoming.complete();
+ }
+ }
+ }
+ }
+
+ static final class Dispatcher implements Runnable {
+ private final BlockingQueue<Creature> q;
+
+ public Dispatcher(final BlockingQueue<Creature> q) {
+ this.q = q;
+ }
+
+ public void run() {
+ try {
+ while (true) {
+ q.take().run();
+ }
+ } catch (final InterruptedException e) {
+ }
+ }
+ }
+
+ static final class Creature {
+
+ private final int id;
+ private final MeetingPlace place;
+ private final BlockingQueue<Creature> q;
+ private final CountDownLatch latch;
+ private int count = 0;
+ private int sameCount = 0;
+ private Colour colour;
+
+ public Creature(final MeetingPlace place, final Colour colour,
+ final BlockingQueue<Creature> q, final CountDownLatch latch) {
+ this.id = System.identityHashCode(this);
+ this.place = place;
+ this.latch = latch;
+ this.colour = colour;
+ this.q = q;
+ }
+
+ public void complete() {
+ latch.countDown();
+ }
+
+ public void setColour(final int id, final Colour newColour) {
+ this.colour = newColour;
+ count++;
+ sameCount += 1 ^ Integer.signum(abs(this.id - id));
+ q.add(this);
+ }
+
+ private int abs(final int x) {
+ final int y = x >> 31;
+ return (x ^ y) - y;
+ }
+
+ public void run() {
+ place.meet(this);
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(count) + getNumber(sameCount);
+ }
+ }
+
+ private int run(final int n, final Colour...colours) {
+ final int len = colours.length;
+ final MeetingPlace place = new MeetingPlace(n);
+ final Creature[] creatures = new Creature[len];
+ final BlockingQueue<Creature> q = new ArrayBlockingQueue<Creature>(len);
+ final CountDownLatch latch = new CountDownLatch(len - 1);
+
+ for (int i = 0; i < len; i++) {
+ creatures[i] = new Creature(place, colours[i], q, latch);
+ }
+
+ final Thread[] ts = new Thread[len];
+ for (int i = 0, h = ts.length; i < h; i++) {
+ ts[i] = new Thread(new Dispatcher(q));
+ ts[i].setDaemon(true);
+ ts[i].start();
+ }
+
+ for (final Creature creature : creatures) {
+ q.add(creature);
+ }
+
+ try {
+ latch.await();
+ for (final Thread t : ts) {
+ t.interrupt();
+ }
+ for (final Thread t : ts) {
+ t.join();
+ }
+ } catch (final InterruptedException e1) {
+ System.err.println("Existing with error: " + e1);
+ }
+
+ int total = 0;
+ for (final Creature creature : creatures) {
+ total += creature.getCount();
+ }
+ return total;
+ }
+
+ private static final String[] NUMBERS = {
+ "zero", "one", "two", "three", "four", "five",
+ "six", "seven", "eight", "nine"
+ };
+
+ private static String getNumber(final int n) {
+ final StringBuilder sb = new StringBuilder();
+ final String nStr = String.valueOf(n);
+ for (int i = 0; i < nStr.length(); i++) {
+ sb.append(" ");
+ sb.append(NUMBERS[Character.getNumericValue(nStr.charAt(i))]);
+ }
+
+ return sb.toString();
+ }
+ // CHECKSTYLE.ON: .*
+
+ private static final int PREDEFINED_N = 600;
+
+ @Benchmark
+ public void jmhTimeChameneosRedux() {
+ run(PREDEFINED_N, Colour.blue, Colour.red, Colour.yellow);
+ run(PREDEFINED_N, Colour.blue, Colour.red, Colour.yellow, Colour.red, Colour.yellow,
+ Colour.blue, Colour.red, Colour.yellow, Colour.red, Colour.blue);
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/fannkuchredux.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/fannkuchredux.java
new file mode 100644
index 0000000..6a644c1
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/fannkuchredux.java
@@ -0,0 +1,94 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `fannkuchredux/fannkuchredux.java-2.java` from the
+ * archive available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause).
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Isaac Gouy
+ * converted to Java by Oleg Mazurov
+ */
+
+/*
+ * Description: Indexed-access to tiny integer-sequence.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+ // CHECKSTYLE.OFF: .*
+public class fannkuchredux
+{
+ public int fannkuch(int n) {
+ int[] perm = new int[n];
+ int[] perm1 = new int[n];
+ int[] count = new int[n];
+ int maxFlipsCount = 0;
+ int permCount = 0;
+ int checksum = 0;
+
+ for(int i=0; i<n; i++) perm1[i] = i;
+ int r = n;
+
+ while (true) {
+
+ while (r != 1){ count[r-1] = r; r--; }
+
+ for(int i=0; i<n; i++) perm[i] = perm1[i];
+ int flipsCount = 0;
+ int k;
+
+ while ( !((k=perm[0]) == 0) ) {
+ int k2 = (k+1) >> 1;
+ for(int i=0; i<k2; i++) {
+ int temp = perm[i]; perm[i] = perm[k-i]; perm[k-i] = temp;
+ }
+ flipsCount++;
+ }
+
+ maxFlipsCount = Math.max(maxFlipsCount, flipsCount);
+ checksum += permCount%2 == 0 ? flipsCount : -flipsCount;
+
+ // Use incremental change to generate another permutation
+ while (true) {
+ if (r == n) {
+ return maxFlipsCount;
+ }
+ int perm0 = perm1[0];
+ int i = 0;
+ while (i < r) {
+ int j = i + 1;
+ perm1[i] = perm1[j];
+ i = j;
+ }
+ perm1[r] = perm0;
+
+ count[r] = count[r] - 1;
+ if (count[r] > 0) break;
+ r++;
+ }
+
+ permCount++;
+ }
+ }
+ // CHECKSTYLE.ON: .*
+
+ private static final int PREDEFINED_N_PANCAKES = 7;
+
+ @Benchmark
+ public void jmhTimeFannkuchRedux() {
+ fannkuch(PREDEFINED_N_PANCAKES);
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/fasta.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/fasta.java
new file mode 100644
index 0000000..f662bd3
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/fasta.java
@@ -0,0 +1,173 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and modified
+ * to fit the benchmarking framework.
+ * The original benchmarks printed long strings to the stdout. This print was removed to fit the
+ * framework. These action can cause difference in behaviour of the original and changed benchmarks;
+ * it hasn't been estimated yet.
+ *
+ * The original file is `fasta/fasta.java-2.java` from the archive available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause).
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * modified by Mehmet D. AKIN
+ *
+ */
+
+/*
+ * Description: Generate and write random DNA sequences.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class fasta {
+ public static final int IM = 139968;
+ public static final int IA = 3877;
+ public static final int IC = 29573;
+ public static int last = 42;
+
+ public static final int LINE_LENGTH = 60;
+
+ // pseudo-random number generator
+ public static final double random(double max) {
+ last = (last * IA + IC) % IM;
+ return max * last / IM;
+ }
+
+ // Weighted selection from alphabet
+ public static String ALU =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"
+ + "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"
+ + "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"
+ + "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"
+ + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"
+ + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"
+ + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
+ public static byte[] ALUB = ALU.getBytes();
+
+ public static final frequency[] IUB = new frequency[] {
+ new frequency('a', 0.27),
+ new frequency('c', 0.12),
+ new frequency('g', 0.12),
+ new frequency('t', 0.27),
+
+ new frequency('B', 0.02),
+ new frequency('D', 0.02),
+ new frequency('H', 0.02),
+ new frequency('K', 0.02),
+ new frequency('M', 0.02),
+ new frequency('N', 0.02),
+ new frequency('R', 0.02),
+ new frequency('S', 0.02),
+ new frequency('V', 0.02),
+ new frequency('W', 0.02),
+ new frequency('Y', 0.02) };
+
+ public static final frequency[] HomoSapiens = new frequency[] {
+ new frequency('a', 0.3029549426680d),
+ new frequency('c', 0.1979883004921d),
+ new frequency('g', 0.1975473066391d),
+ new frequency('t', 0.3015094502008d)};
+
+ public static void makeCumulative(frequency[] a) {
+ double cp = 0.0;
+ for (int i = 0; i < a.length; i++) {
+ cp += a[i].p;
+ a[i].p = cp;
+ }
+ }
+
+ // naive
+ public final static byte selectRandom(frequency[] a) {
+ int len = a.length;
+ double r = random(1.0);
+ for (int i = 0; i < len; i++)
+ if (r < a[i].p)
+ return a[i].c;
+ return a[len - 1].c;
+ }
+
+ static int BUFFER_SIZE = 1024;
+ static int index = 0;
+ static byte[] bbuffer = new byte[BUFFER_SIZE];
+ final void makeRandomFasta(String id, String desc,frequency[] a, int n)
+ {
+ index = 0;
+ int m = 0;
+ String descStr = ">" + id + " " + desc + '\n';
+ while (n > 0) {
+ if (n < LINE_LENGTH) m = n; else m = LINE_LENGTH;
+ if(BUFFER_SIZE - index < m){
+ index = 0;
+ }
+ for (int i = 0; i < m; i++) {
+ bbuffer[index++] = selectRandom(a);
+ }
+ bbuffer[index++] = '\n';
+ n -= LINE_LENGTH;
+ }
+ }
+
+ final void makeRepeatFasta(String id, String desc, String alu, int n)
+ {
+ index = 0;
+ int m = 0;
+ int k = 0;
+ int kn = ALUB.length;
+ String descStr = ">" + id + " " + desc + '\n';
+ while (n > 0) {
+ if (n < LINE_LENGTH) m = n; else m = LINE_LENGTH;
+ if(BUFFER_SIZE - index < m){
+ index = 0;
+ }
+ for (int i = 0; i < m; i++) {
+ if (k == kn) k = 0;
+ bbuffer[index++] = ALUB[k];
+ k++;
+ }
+ bbuffer[index++] = '\n';
+ n -= LINE_LENGTH;
+ }
+ }
+
+ public static class frequency {
+ public byte c;
+ public double p;
+
+ public frequency(char c, double p) {
+ this.c = (byte)c;
+ this.p = p;
+ }
+ }
+
+ public void old_main() {
+ int n = 1000;
+
+ makeRepeatFasta("ONE", "Homo sapiens alu", ALU, n * 2);
+ makeRandomFasta("TWO", "IUB ambiguity codes", IUB, n * 3);
+ makeRandomFasta("THREE", "Homo sapiens frequency", HomoSapiens, n * 5);
+ }
+ // CHECKSTYLE.ON: .*
+
+ @Setup
+ public void setup() {
+ makeCumulative(HomoSapiens);
+ makeCumulative(IUB);
+ }
+
+ @Benchmark
+ public void jmhTimeFasta() {
+ old_main();
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/fastaredux.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/fastaredux.java
new file mode 100644
index 0000000..a0a86dd
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/fastaredux.java
@@ -0,0 +1,204 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and modified
+ * to fit the benchmarking framework.
+ * The original benchmarks printed long strings to the stdout. This print was overrided to do
+ * nothing to fit the framework. These action can cause difference in behaviour of the original and
+ * changed benchmarks; it hasn't been estimated yet.
+ *
+ * The original file is `fastaredux/fastaredux.java-3.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause).
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * modified by Enotus
+ *
+ */
+
+/*
+ * Description: Generate and write random DNA sequences.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.io.*;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class fastaredux {
+
+ static final int LINE_LENGTH = 60;
+ static final int OUT_BUFFER_SIZE = 256*1024;
+ static final int LOOKUP_SIZE = 4*1024;
+ static final double LOOKUP_SCALE = LOOKUP_SIZE - 1;
+
+ static final class Freq {
+ byte c;
+ double p;
+ Freq(char cc, double pp) {c = (byte) cc;p = pp;}
+ }
+
+ static final String ALU =
+ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"
+ + "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"
+ + "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"
+ + "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"
+ + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"
+ + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"
+ + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
+ static final Freq[] IUB = {
+ new Freq('a', 0.27),
+ new Freq('c', 0.12),
+ new Freq('g', 0.12),
+ new Freq('t', 0.27),
+ new Freq('B', 0.02),
+ new Freq('D', 0.02),
+ new Freq('H', 0.02),
+ new Freq('K', 0.02),
+ new Freq('M', 0.02),
+ new Freq('N', 0.02),
+ new Freq('R', 0.02),
+ new Freq('S', 0.02),
+ new Freq('V', 0.02),
+ new Freq('W', 0.02),
+ new Freq('Y', 0.02)};
+ static final Freq[] HomoSapiens = {
+ new Freq('a', 0.3029549426680),
+ new Freq('c', 0.1979883004921),
+ new Freq('g', 0.1975473066391),
+ new Freq('t', 0.3015094502008)};
+
+ static void sumAndScale(Freq[] a) {
+ double p = 0;
+ for (int i = 0; i < a.length; i++)
+ a[i].p = (p += a[i].p) * LOOKUP_SCALE;
+ a[a.length - 1].p = LOOKUP_SCALE;
+ }
+
+ static final class Random {
+
+ static final int IM = 139968;
+ static final int IA = 3877;
+ static final int IC = 29573;
+ static final double SCALE = LOOKUP_SCALE / IM;
+ static int last = 42;
+
+ static double next() {
+ return SCALE * (last = (last * IA + IC) % IM);
+ }
+ }
+
+ static final class Out {
+
+ static byte buf[] = new byte[OUT_BUFFER_SIZE];
+ static final int lim = OUT_BUFFER_SIZE - 2*LINE_LENGTH - 1;
+ static int ct = 0;
+ static OutputStream stream;
+
+ static void checkFlush() throws IOException {
+ if (ct >= lim) { stream.write(buf, 0, ct); ct = 0;}
+ }
+
+ static void close() throws IOException {
+ stream.write(buf, 0, ct);ct = 0;
+ stream.close();
+ }
+ }
+
+ static final class RandomFasta {
+
+ static final Freq[] lookup=new Freq[LOOKUP_SIZE];
+
+ static void makeLookup(Freq[] a) {
+ for (int i = 0, j = 0; i < LOOKUP_SIZE; i++) {
+ while (a[j].p < i) j++;
+ lookup[i] = a[j];
+ }
+ }
+
+ static void addLine(int bytes) throws IOException{
+ Out.checkFlush();
+ int lct=Out.ct;
+ while(lct<Out.ct+bytes){
+ double r = Random.next(); // Problematic for AOT! See fastaredux_revised.java.
+ int ai = (int) r; while (lookup[ai].p < r) ai++;
+ Out.buf[lct++] = lookup[ai].c;
+ }
+ Out.buf[lct++] = (byte)'\n';
+ Out.ct=lct;
+ }
+
+ static void make(String desc, Freq[] a, int n) throws IOException {
+ makeLookup(a);
+
+ System.arraycopy(desc.getBytes(), 0, Out.buf, Out.ct, desc.length());
+ Out.ct+=desc.length();
+
+ while (n > 0) {
+ int bytes = Math.min(LINE_LENGTH, n);
+ addLine(bytes);
+ n -= bytes;
+ }
+ }
+ }
+
+ static final class RepeatFasta {
+
+ static void make(String desc, byte[] alu, int n) throws IOException {
+ System.arraycopy(desc.getBytes(), 0, Out.buf, Out.ct, desc.length());
+ Out.ct+=desc.length();
+
+ byte buf[] = new byte[alu.length + LINE_LENGTH];
+ for (int i = 0; i < buf.length; i += alu.length)
+ System.arraycopy(alu, 0, buf, i, Math.min(alu.length, buf.length - i));
+
+ int pos = 0;
+ while (n > 0) {
+ int bytes = Math.min(LINE_LENGTH, n);
+ Out.checkFlush();
+ System.arraycopy(buf, pos, Out.buf, Out.ct, bytes); Out.ct+=bytes;
+ Out.buf[Out.ct++] = (byte)'\n';
+ pos = (pos + bytes) % alu.length;
+ n -= bytes;
+ }
+ }
+ }
+
+ private void old_main() throws IOException {
+ int n = 1000;
+
+ RepeatFasta.make(">ONE Homo sapiens alu\n", ALU.getBytes(), n * 2);
+ RandomFasta.make(">TWO IUB ambiguity codes\n", IUB, n * 3);
+ RandomFasta.make(">THREE Homo sapiens frequency\n", HomoSapiens, n * 5);
+ }
+ // CHECKSTYLE.ON: .*
+
+ /** Writes to nowhere */
+ public class NullOutputStream extends OutputStream {
+ @Override
+ public void write(int b) throws IOException {
+ }
+ }
+
+ @Setup
+ public void setup() {
+ sumAndScale(IUB);
+ sumAndScale(HomoSapiens);
+
+ Out.stream = new NullOutputStream();
+ }
+
+ @Benchmark
+ public void jmhTimeFastaRedux() throws IOException {
+ old_main();
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/knucleotide.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/knucleotide.java
new file mode 100644
index 0000000..b14ef8a
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/knucleotide.java
@@ -0,0 +1,1312 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `knucleotide/knucleotide.java-4.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause).
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Daryl Griffith
+ */
+
+/*
+ * Description: Hashtable update and k-nucleotide strings.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.io.ByteArrayInputStream;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class knucleotide {
+
+ private byte[] temp = null;
+ private byte[] buffer = null;
+ private byte[] species = null;
+ private ByteArrayInputStream stream = null;
+ private LineInputStream in;
+
+ static Map<Key, Value> MAP;
+ static final int[] SEQUENCES1 = {2, 1};
+ static final int[] SEQUENCES2 = {18, 12, 6, 4, 3};
+ static final String[] SPICIFIC_SEQUENCES = new String[]{"GGT", "GGTA", "GGTATT", "GGTATTTTAATT", "GGTATTTTAATTTATAGT"};
+ static final int LINE_LENGTH = 60;
+ static final int EOF = -1;
+ static byte[] nucleotides;
+
+ public void old_main() {
+ {
+ int n;
+ int i;
+
+ try {
+outer:
+ for (;;) {
+ n = in.readLine(temp);
+ if (n == EOF) {
+ return;
+ }
+ if (n != LINE_LENGTH) {
+ for (i = 0; i < species.length; i++) {
+ if (temp[i] != species[i]) {
+ continue outer;
+ }
+ }
+ break;
+ }
+ }
+ i = 0;
+ for (;;) {
+ n = in.readLine(temp);
+ if (n == EOF) {
+ break;
+ }
+ for (int j = 0; j < n; i++, j++) {
+ buffer[i] = translate(temp[j]);
+ }
+ }
+ if (i == buffer.length) {
+ nucleotides = buffer;
+ } else {
+ nucleotides = new byte[i];
+ System.arraycopy(buffer, 0, nucleotides, 0, i);
+ }
+ } catch (IOException e) {
+
+ }
+ }
+ countSequences(SEQUENCES1);
+ {
+ List<Entry<Key, Value>> sequence1 = new ArrayList<Entry<Key, Value>>();
+ List<Entry<Key, Value>> sequence2 = new ArrayList<Entry<Key, Value>>();
+
+ for (Entry<Key, Value> entry : MAP.entrySet()) {
+ switch (Long.numberOfLeadingZeros(entry.getKey().key)) {
+ case 61:
+ sequence1.add(entry);
+ break;
+ case 59:
+ sequence2.add(entry);
+ }
+ }
+ printSequence(sequence1);
+ printSequence(sequence2);
+ }
+ countSequences(SEQUENCES2);
+ {
+ Key key = new Key();
+ }
+ }
+
+ static byte translate(byte b) {
+ return (byte) ((b >> 1) & 3);
+ }
+
+ static void countSequences(int[] sequences) {
+ for (int sequence : sequences) {
+ updateHashtable(sequence);
+ }
+ }
+
+ static void updateHashtable(int sequence) {
+ int sequenceTop = nucleotides.length - sequence + 1;
+ Key key = new Key();
+ Value value;
+
+ for (int i = 0; i < sequenceTop; i++) {
+ key.setHash(i, sequence);
+ value = MAP.get(key);
+ if (value == null) {
+ value = new Value();
+ value.count = 1;
+ MAP.put(key, value);
+ key = new Key();
+ } else {
+ value.count++;
+ }
+ }
+ }
+
+ static void printSequence(List<Entry<Key, Value>> sequence) {
+ int sum = 0;
+
+ Collections.sort(sequence, new Comparator<Entry<Key, Value>>() {
+
+ @Override
+ public int compare(Entry<Key, Value> entry1, Entry<Key, Value> entry2) {
+ if (entry2.getValue().count != entry1.getValue().count) {
+ return entry2.getValue().count - entry1.getValue().count;
+ }
+ return entry1.getKey().toString().compareTo(entry2.getKey().toString());
+ }
+ });
+ for (Entry<Key, Value> entry : sequence) {
+ sum += entry.getValue().count;
+ }
+ }
+
+ static class LineInputStream implements Closeable {
+
+ private static final int LF = 10;
+ private final ByteBuffer buffer = ByteBuffer.allocate(8192);
+ private final InputStream in;
+
+ public LineInputStream(InputStream in) {
+ this.in = in;
+ buffer.limit(buffer.position());
+ }
+
+ public int readLine(byte[] b) throws IOException {
+ for (int end = buffer.position(); end < buffer.limit(); end++) {
+ if (buffer.get(end) == LF) {
+ if (end - buffer.position() == LINE_LENGTH) {
+ buffer.get(b);
+ buffer.position(buffer.position() + 1);
+ return LINE_LENGTH;
+ } else {
+ int size = end - buffer.position();
+
+ buffer.get(b, 0, size);
+ buffer.position(buffer.position() + 1);
+ return size;
+ }
+ }
+ }
+ buffer.compact();
+ int n = in.read(buffer.array(), buffer.position(), buffer.remaining());
+
+ if (n == EOF) {
+ buffer.flip();
+ if (buffer.hasRemaining()) {
+ int size = buffer.remaining();
+
+ buffer.get(b, 0, size);
+ return size;
+ } else {
+ return EOF;
+ }
+ } else {
+ buffer.position(buffer.position() + n);
+ buffer.flip();
+ }
+ for (int end = buffer.position(); end < buffer.limit(); end++) {
+ if (buffer.get(end) == LF) {
+ if (end - buffer.position() == LINE_LENGTH) {
+ buffer.get(b);
+ buffer.position(buffer.position() + 1);
+ return LINE_LENGTH;
+ } else {
+ int size = end - buffer.position();
+
+ buffer.get(b, 0, size);
+ buffer.position(buffer.position() + 1);
+ return size;
+ }
+ }
+ }
+ return EOF;
+ }
+
+ @Override
+ public void close() throws IOException {
+ in.close();
+ }
+ }
+
+ static class Key {
+
+ long key;
+
+ void setHash(int offset, int length) {
+ key = 1;
+ for (int i = offset + length - 1; i >= offset; i--) {
+ key = (key << 2) | nucleotides[i];
+ }
+ }
+
+ void setHash(String species) {
+ key = 1;
+ for (int i = species.length() - 1; i >= 0; i--) {
+ key = (key << 2) | translate((byte) species.charAt(i));
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return (int) key;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ final Key other = (Key) obj;
+
+ return key == other.key;
+ }
+
+ @Override
+ public String toString() {
+ char[] name = new char[(63 - Long.numberOfLeadingZeros(key)) / 2];
+ long temp = key;
+
+ for (int i = 0; temp > 1; temp >>= 2, i++) {
+ name[i] = (char) (((temp & 3) << 1) | 'A');
+ if (name[i] == 'E') {
+ name[i] = 'T';
+ }
+ }
+ return new String(name);
+ }
+ }
+
+ static class Value {
+
+ int count;
+ }
+ // CHECKSTYLE.ON: .*
+
+ public void reinitBuffers() {
+ MAP = new HashMap<Key, Value>();
+ species = ">TH".getBytes();
+ }
+
+ public knucleotide() {
+ temp = new byte[LINE_LENGTH];
+ buffer = new byte[125000000];
+ stream = new ByteArrayInputStream(fastaStr.getBytes());
+ in = new LineInputStream(stream);
+ }
+
+ @Benchmark
+ public void jmhTimeKnucleotide() {
+ reinitBuffers();
+ old_main();
+ stream.reset();
+ }
+
+ private static final String fastaStr = ">ONE Homo sapiens alu\n"
+ + "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n"
+ + "TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n"
+ + "AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n"
+ + "GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n"
+ + "CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n"
+ + "GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n"
+ + "GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n"
+ + "TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n"
+ + "AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n"
+ + "GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n"
+ + "AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n"
+ + "AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n"
+ + "GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n"
+ + "CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n"
+ + "AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n"
+ + "TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n"
+ + "TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n"
+ + "GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n"
+ + "TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n"
+ + "CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n"
+ + "CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n"
+ + "TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n"
+ + "CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n"
+ + "AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n"
+ + "GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n"
+ + "TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n"
+ + "TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n"
+ + "GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n"
+ + "GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n"
+ + "ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n"
+ + "TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n"
+ + "CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n"
+ + "CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n"
+ + "GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n"
+ + "CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n"
+ + "GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n"
+ + "GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n"
+ + "GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n"
+ + "GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n"
+ + "GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n"
+ + "AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n"
+ + "CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n"
+ + "GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n"
+ + "AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n"
+ + "GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n"
+ + "ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n"
+ + "GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n"
+ + "GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n"
+ + "GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n"
+ + "TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n"
+ + "AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n"
+ + "GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n"
+ + "CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n"
+ + "TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n"
+ + "ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n"
+ + "GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n"
+ + "ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n"
+ + "CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n"
+ + "CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n"
+ + "ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n"
+ + "CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n"
+ + "AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n"
+ + "CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n"
+ + "AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n"
+ + "CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n"
+ + "CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n"
+ + "CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n"
+ + "CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n"
+ + "ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n"
+ + "AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n"
+ + "TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n"
+ + "ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n"
+ + "CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n"
+ + "AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n"
+ + "AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n"
+ + "TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n"
+ + "CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n"
+ + "TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n"
+ + "CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n"
+ + "GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n"
+ + "GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n"
+ + "CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n"
+ + "GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n"
+ + "GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n"
+ + "AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n"
+ + "GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n"
+ + "CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n"
+ + "GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n"
+ + "TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n"
+ + "CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n"
+ + "ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n"
+ + "CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n"
+ + "AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n"
+ + "CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n"
+ + "CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n"
+ + "ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n"
+ + "GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n"
+ + "GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n"
+ + "GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n"
+ + "TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n"
+ + "CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n"
+ + "GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n"
+ + "CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n"
+ + "GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n"
+ + "CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n"
+ + "CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n"
+ + "CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n"
+ + "ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n"
+ + "CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n"
+ + "GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n"
+ + "AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n"
+ + "ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n"
+ + "TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n"
+ + "GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n"
+ + "GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n"
+ + "TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n"
+ + "AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n"
+ + "ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n"
+ + "GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n"
+ + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n"
+ + "TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n"
+ + "CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n"
+ + "GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n"
+ + "CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n"
+ + "GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n"
+ + "TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n"
+ + "ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n"
+ + "TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n"
+ + "GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n"
+ + "TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n"
+ + "GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n"
+ + "GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n"
+ + "ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n"
+ + "GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n"
+ + "GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n"
+ + "CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n"
+ + "ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n"
+ + "AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n"
+ + "TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n"
+ + "CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n"
+ + "TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n"
+ + "CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n"
+ + "GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n"
+ + "GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n"
+ + "CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n"
+ + "TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n"
+ + "CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n"
+ + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n"
+ + "AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n"
+ + "AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n"
+ + "GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n"
+ + "TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n"
+ + "AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n"
+ + "AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n"
+ + "CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n"
+ + "TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n"
+ + "GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n"
+ + "CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n"
+ + "CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n"
+ + "GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n"
+ + "AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n"
+ + "GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n"
+ + "TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n"
+ + "CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n"
+ + "GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n"
+ + "CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n"
+ + "AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n"
+ + "ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n"
+ + "ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n"
+ + "AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n"
+ + "GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n"
+ + "GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n"
+ + "CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n"
+ + "GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n"
+ + "CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n"
+ + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n"
+ + "GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n"
+ + "GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n"
+ + "CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n"
+ + "AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n"
+ + "CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n"
+ + "CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n"
+ + "GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n"
+ + "GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n"
+ + "TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n"
+ + "ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n"
+ + "CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n"
+ + "ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n"
+ + "GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n"
+ + "TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n"
+ + "GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n"
+ + "GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n"
+ + "GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n"
+ + "GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n"
+ + "TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n"
+ + "TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n"
+ + "TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n"
+ + "GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n"
+ + "CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n"
+ + "TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n"
+ + ">TWO IUB ambiguity codes\n"
+ + "cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n"
+ + "tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n"
+ + "NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n"
+ + "cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n"
+ + "gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n"
+ + "HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n"
+ + "tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n"
+ + "tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n"
+ + "acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n"
+ + "tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n"
+ + "gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n"
+ + "accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n"
+ + "RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n"
+ + "tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n"
+ + "cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n"
+ + "ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n"
+ + "actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n"
+ + "YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n"
+ + "KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n"
+ + "aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n"
+ + "aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n"
+ + "gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n"
+ + "tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n"
+ + "tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n"
+ + "ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n"
+ + "ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n"
+ + "BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n"
+ + "aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n"
+ + "tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n"
+ + "cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n"
+ + "aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n"
+ + "tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n"
+ + "aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n"
+ + "gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n"
+ + "ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n"
+ + "taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n"
+ + "ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n"
+ + "gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n"
+ + "gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n"
+ + "tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n"
+ + "tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n"
+ + "taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n"
+ + "cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n"
+ + "aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n"
+ + "cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n"
+ + "ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n"
+ + "attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n"
+ + "ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n"
+ + "attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n"
+ + "tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n"
+ + "aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n"
+ + "cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n"
+ + "gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n"
+ + "attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n"
+ + "BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n"
+ + "DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n"
+ + "tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n"
+ + "tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n"
+ + "tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n"
+ + "taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n"
+ + "aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n"
+ + "DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n"
+ + "VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n"
+ + "agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n"
+ + "gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n"
+ + "tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n"
+ + "catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n"
+ + "tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n"
+ + "aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n"
+ + "aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n"
+ + "acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n"
+ + "tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n"
+ + "aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n"
+ + "acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n"
+ + "RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n"
+ + "RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n"
+ + "tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n"
+ + "gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n"
+ + "YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n"
+ + "ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n"
+ + "ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n"
+ + "gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n"
+ + "KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n"
+ + "aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n"
+ + "gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n"
+ + "taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n"
+ + "VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n"
+ + "NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n"
+ + "MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n"
+ + "cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n"
+ + "ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n"
+ + "tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n"
+ + "aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n"
+ + "actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n"
+ + "tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n"
+ + "gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n"
+ + "BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n"
+ + "aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n"
+ + "aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n"
+ + "YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n"
+ + "aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n"
+ + "cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n"
+ + "tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n"
+ + "tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n"
+ + "MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n"
+ + "taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n"
+ + "tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n"
+ + "RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n"
+ + "agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n"
+ + "NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n"
+ + "gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n"
+ + "aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n"
+ + "ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n"
+ + "cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n"
+ + "tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n"
+ + "RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n"
+ + "tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n"
+ + "gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n"
+ + "tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n"
+ + "ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n"
+ + "tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n"
+ + "ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n"
+ + "BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n"
+ + "gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n"
+ + "acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n"
+ + "gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n"
+ + "taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n"
+ + "acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n"
+ + "tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n"
+ + "catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n"
+ + "tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n"
+ + "atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n"
+ + "ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n"
+ + "ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n"
+ + "cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n"
+ + "SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n"
+ + "VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n"
+ + "BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n"
+ + "NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n"
+ + "tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n"
+ + "ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n"
+ + "cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n"
+ + "VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n"
+ + "atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n"
+ + "aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n"
+ + "tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n"
+ + "RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n"
+ + "gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n"
+ + "tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n"
+ + "attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n"
+ + "atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n"
+ + "cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n"
+ + "NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n"
+ + "ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n"
+ + "cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n"
+ + "aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n"
+ + "agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n"
+ + "tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n"
+ + "ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n"
+ + "ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n"
+ + "tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n"
+ + "taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n"
+ + "tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n"
+ + "YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n"
+ + "ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n"
+ + "tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n"
+ + "ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n"
+ + "attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n"
+ + "atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n"
+ + "YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n"
+ + "gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n"
+ + "MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n"
+ + "tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n"
+ + "ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n"
+ + "aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n"
+ + "BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n"
+ + "tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n"
+ + "StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n"
+ + "cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n"
+ + "atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n"
+ + "atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n"
+ + "ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n"
+ + "gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n"
+ + "tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n"
+ + "BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n"
+ + "agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n"
+ + "HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n"
+ + "tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n"
+ + "aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n"
+ + "catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n"
+ + "aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n"
+ + "tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n"
+ + "cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n"
+ + "DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n"
+ + "gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n"
+ + "tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n"
+ + "atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n"
+ + "KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n"
+ + "tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n"
+ + "tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n"
+ + "taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n"
+ + "NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n"
+ + "HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n"
+ + "ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n"
+ + "tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n"
+ + "cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n"
+ + "ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n"
+ + "HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n"
+ + "gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n"
+ + "BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n"
+ + "gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n"
+ + "KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n"
+ + "cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n"
+ + "tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n"
+ + "taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n"
+ + "gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n"
+ + "aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n"
+ + "acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n"
+ + "RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n"
+ + "attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n"
+ + "KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n"
+ + "KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n"
+ + "gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n"
+ + "aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n"
+ + "aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n"
+ + "ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n"
+ + "tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n"
+ + "aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n"
+ + "tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n"
+ + "MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n"
+ + "cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n"
+ + "caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n"
+ + "ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n"
+ + "acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n"
+ + "tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n"
+ + "gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n"
+ + "atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n"
+ + "aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n"
+ + "NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n"
+ + "taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n"
+ + "aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n"
+ + "ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n"
+ + "DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n"
+ + "tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n"
+ + "aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n"
+ + "ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n"
+ + "ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n"
+ + "RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n"
+ + "aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n"
+ + "aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n"
+ + "aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n"
+ + "tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n"
+ + "atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n"
+ + "BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n"
+ + "gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n"
+ + "cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n"
+ + "RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n"
+ + "taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n"
+ + "aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n"
+ + "gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n"
+ + "gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n"
+ + "aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n"
+ + "gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n"
+ + "ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n"
+ + "MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n"
+ + "SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n"
+ + "aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n"
+ + "VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n"
+ + "HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n"
+ + "agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n"
+ + "gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n"
+ + "agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n"
+ + "tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n"
+ + "gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n"
+ + "VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n"
+ + "tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n"
+ + "MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n"
+ + "actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n"
+ + "WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n"
+ + "tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n"
+ + "KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n"
+ + "BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n"
+ + "attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n"
+ + "VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n"
+ + "aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n"
+ + "tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n"
+ + "tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n"
+ + "tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n"
+ + "VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n"
+ + "tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n"
+ + "ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n"
+ + "tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n"
+ + "WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n"
+ + "tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n"
+ + "tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n"
+ + "MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n"
+ + "tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n"
+ + "atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n"
+ + "aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n"
+ + "aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n"
+ + ">THREE Homo sapiens frequency\n"
+ + "aagtccgatgagtttcaatcatgactgcgaggagatccatgcggtgtacctaaacctaca\n"
+ + "tcgtatgtatttgctgacgttcattcttgatacataaagatccgatatcggtccactttg\n"
+ + "tttaccaaaagccctaccttcgtaacgatggaaatgtgaatgagagtgaaatacacgatg\n"
+ + "gggatattgccggtgagtacaagttagaccacacattagaactgacctatattcgtcatc\n"
+ + "atagagatggagtatgaattgattctgcgaagtacactggctttacgagtatctagacgc\n"
+ + "cgcggtatatctcccgtcaatactatgaaggtatatatatagaggctgaaaattcatgtt\n"
+ + "caatcctctttctaagagtgagtgggagccccttctgttgtcggagtaaaaaggcattat\n"
+ + "tcctcaaattgtcagaagcaaagtatacgtgatgtttgcttagaacaaaagagttacctt\n"
+ + "agggtaggtaaatctcgattcaccgagagaagtgattttggcggtgtgcgattaattctt\n"
+ + "ttgatgacagatctcattattttatatagctccctctttgtatttagagtttgcgtaggt\n"
+ + "aacctggcaaaaccatatcccggggggagagtgcgctgaacattttatacgatgtgatta\n"
+ + "ctcaaaggataaggttcgaggcctctatactcatggaactatcttataattataatggat\n"
+ + "cgtggctcattccacctatccaaacttctttgtgatctgatgctacgagtgtgaacaaac\n"
+ + "gtacatcttctaaggaatttgggacgtttcatagctcgcatttcattcctgaaaacttaa\n"
+ + "atatttttaaaaattgattctactgcgaggaactaaggtgtagacaagcccttagtaacc\n"
+ + "ggtggatgtcgcttcagttttatagcaaacattattcaatttcagtcttgactgaaatta\n"
+ + "gtttgttagtgttagaggtccatatgtcacatgcatatggtctagatgccattgtacagt\n"
+ + "aataccttagattagtattagcggcatgcgtacttggatttcacttgtaagaatgagctt\n"
+ + "aggacggtcgcctgtagggctgcaaataggaatacttacaatttttgatgacttgttagc\n"
+ + "atatcgctatcacccataaaaaacctgatacttgatgagcgggtgattgagactatgtac\n"
+ + "tgatataattcaatagctccaatagatgaaacagctatgcgcctatttatgtcaaataat\n"
+ + "cgatgtgatacaagcttagagctgaacgagcgcgagtggaattagcggtgatctctatcc\n"
+ + "taaaaagccacgaaatcgatcccagaagctaatacccgaggtgtcaagcttgagttcagt\n"
+ + "taaatttgcatctcatgccccacgaagaatgggtagagagtttgaaggtgcttctggatt\n"
+ + "ttcctaagtacgtggtaaaaatttgatgtaaatgaacacctcctaatggttgtgttaacc\n"
+ + "acaaacccctgggtgaatctgattagccaacccagtgatctgatttcagttgtcaaatct\n"
+ + "cttttttataactaccttttgtttccataatttaaccggatctcataatgaacaaacggg\n"
+ + "tagaataatggtagcacatagcgagcttgtctattcagaaatatggcctactcagaatgt\n"
+ + "attctccaaatcagtgttatgcgaaacgtaattttacgtgtaataatgatgatttcttat\n"
+ + "cggttccttgtactacaatactcttgcccaacaaatactaagcataacagcaaaattcga\n"
+ + "atccccctccttttaataaatggtttttcaatatagccgattcgtattcgttagtctttc\n"
+ + "accaactattaacctggcatctaattaataaaatcaccaaaggactctataatatgacag\n"
+ + "tcacttcggcctcttttaagacagttgattattgcaggtccgcaattgatggtgacatgc\n"
+ + "acaattagttagaatccgactatggagacaattaacaattgtagtgcccatttggtccag\n"
+ + "ttgacttcaaccacgagttataaaggtattttaatttatagtcgatagtaccaacaacaa\n"
+ + "gcacaatcataattatgttagaaaacccagggggtaatgctctaaatccagctttaaggc\n"
+ + "cagagtgcactatgaaatcgccattgatcattgtgtcattcgctgaacttggtgtctagg\n"
+ + "aggtgccgagtgagaatatcagataccttatgaagcaacgattatatctggactagatca\n"
+ + "tgatgatcggaataaaacattgaaataagtccttatcaaggagcataaacattttattta\n"
+ + "atttatacttcgtaaataaattcagaattttttttcaagacattaatctgagtaaatgac\n"
+ + "ggctagaaagggttcctactcgaatcgtagcctacgcatgtgggcagtaacctggcttgc\n"
+ + "gtttttactgaaacaaaggttcaccggaaagaaggctgccacttttagcttcttgacgat\n"
+ + "ctttagcgtcatatttttagattagtcgaaaaacggaaaacaaacttaacgaagctggtt\n"
+ + "gcacggggtaccgagaaaccaaagagcaggacaactccttgatcgggaagaactgaaata\n"
+ + "gacagctgtcattttcattggtcaacttatcaatataacgaccaccgtagtgacgcttgc\n"
+ + "atgaaaatactgaggatgtaaactatagccagtcaggcccgcgtgttgactaattgatga\n"
+ + "agcaaacaaaatagccggtattcgttaaaaggaacgggttgccagctacagatatactct\n"
+ + "aggtatatcccaaacaagagacgtcctttggctgttgtaatcggtcataatacttgtcac\n"
+ + "ataaacaagatcgctgaattaaacattaaacagttagtgatacacaatcgtggttggggc\n"
+ + "tgggatgtgcaataaaaagtcatctatcgtctatcacagagcgacgtaaatttagacaaa\n"
+ + "cattattatttcttgacaatggaatcgataagcgttcctctaacttggtatatatatctc\n"
+ + "gaccccgggattccagccattcttgtatgaagatttaaccatttaactatgcatagttga\n"
+ + "atggtaaggaaaatgatattgactgcaacagattttggatgcaaaaatatttgtgaatta\n"
+ + "ttggttatatactggttgtatagcacaatcattaggtcctagaaggcatactcaacctca\n"
+ + "gcgagagagctagcatgcataattgtaccgcccatattaatattcctgaaatgatttctt\n"
+ + "acattacgcccaatttcagtcatcgaacacccccatcaatttacccgatagagaacgtga\n"
+ + "tcatacgcaataccctatgcgaacgtccactctatagcgtctgtatacaatgattattcg\n"
+ + "ttccatttacaacgttaagtaatttaaacttacataaggacaaggaaatccgcgaacctc\n"
+ + "ctggaatgtatgagttatttatgcagttaacttcgtctcgaccggaactaaaggcgtcgt\n"
+ + "acgaatgaaaggccacttttagaagagacctttgtatccattgtggagaatatcataaat\n"
+ + "tcaagatggggtgtcatgctattcggtcctaaacattcttaatggctgttctattgttag\n"
+ + "tctgatttaaaatggaaccatagcacgaatagttagatagggctcatacccctgtaacga\n"
+ + "tctacaaatccttccccgggtgtgtgcgttagcgacggaaagttttacggtttgtgatca\n"
+ + "aagaacactcacacgtcagattattacactgatacgaattatttcagtcgacagtaattg\n"
+ + "aatagaaacttattaacgccagcacctgacacggtaagtaaggcaggtctgaactgtttg\n"
+ + "actgtaaaaaaatggtaatatttttaaaaatcttgatttctatatcaaatgatgtgtagt\n"
+ + "tttttctctgttattaaaatcccagtgcgcgaaatttagatcgttacgactcacgtacaa\n"
+ + "gatcacacatcacacgcgttagcgaaagcggaatggctaatacagccctacgcaacgtag\n"
+ + "tgggatcaacatatggacgaatttatgctcaatgagccaacctcccccgcattgcggttc\n"
+ + "attttaaggcctgggtaacatctatcgtttagataatcaaaggaatccgactatgcaatt\n"
+ + "gtctgacttcatccgctctcaagtccaatgcaggcgctacgtgtttctttaatcaatacc\n"
+ + "atattgaaatcgtaatacgataattgttgctattgactacaggttatgaaaaaacttact\n"
+ + "ttgcgggtacatgcatatttttgtaccacattattacgcgatatctctcagtgtactcta\n"
+ + "aattaaaccctcttcgaacattttagttcctattcgtaaacacgtgctacgcggcaattt\n"
+ + "gccggtcgtagaatggacaactccagttcaactgcatgtaactcatagctcgcgttagta\n"
+ + "taaattgactagtagccatgggacaaagtaactagtcagcggaaaagatccctttaaaga\n"
+ + "tatatgcaggttgcaagcataaagctcattgctcgaggtgcaccgtggtattccaaaagc\n"
+ + "gtctctatcgtatcttctaattttgggccgtgagaatcgaaactactctgatttgctgca\n"
+ + "cacgttaggtaatatcgcccattttcccgtataagctccgtacttatacgaactacacga\n"
+ + "ccttttaagcattagccgctcatatcgtgattcgtgtacagatgagtctattaaaattac\n"
+ + "agacatactccatatctcgctccttgaactttgaataatgcgctaacttgtactatgaat\n"
+ + "aggcagaacccaactttcccgtttgcgtcaagcggggaaacgatacatgttgtcagattt\n"
+ + "atgattatctagttttagatcacgtttaccgataatcggctgtggtctgagcagtcctac\n"
+ + "actgagtatttacttcagcttcatatcggtccgaaaaaaggttgtgaccgaatgtcaaaa\n"
+ + "tacggagtacgatgggcatcttttttcgagtcgcggttgcagggcagcaaaaggcttaaa\n"
+ + "ccatttttacgatttttactatagcggtcatgaagtgcgaaactgcttgcaaattttcta\n"
+ + "cacacattgtggctcttgtccttgaagcttatggcgaaaatttgaaacatagtataccag\n"
+ + "ggaaagcgcgaattatttggtgactaatagtccgtgggtttgagccatatacctaacgcc\n"
+ + "ataaactacgtggtgctttagatgcaatctaaacagaacagaaagcgtagcgctcatcag\n"
+ + "cacagactaactttttcagtttgagtcgccggagggacttcgagacaagaacgcgtcaag\n"
+ + "tcgcttgcgcggcacggattcgattgggcggctcaatcttgcctaatttctactattgtc\n"
+ + "agctgtacgactgtactaagtgtatagccccaaataaaagaagtatcgatgcgtctttat\n"
+ + "gaccaaaggtcttataattgaagcgcacttccgttcatcaaattaaatcctggcttaccc\n"
+ + "gattctccggaagtctgacctagagattgacgacggccgcgtattattgagacctcttca\n"
+ + "ggattaatcaataacgaagtagttgatctgtttggcgacgtaccttaagccgactccgct\n"
+ + "acacgagtttctactaaaccaatgtagccttatgcttagatgaataccgtcctaattaga\n"
+ + "tattccggcataacagcagtaaattatctgttcaatggacgaacattgaattgttagtat\n"
+ + "tctacacaagtcaggcctcgtaaatattaggtaaggccgtgggataacctacgtgatatg\n"
+ + "cttgagcttgcgttgcaagctctcgttaatcattaatttaggtgcgtgagggttaaacac\n"
+ + "cagcatattctatatgctagacgtcttccttaaaggatcgtagtattataattaataata\n"
+ + "agaaatatggttgacgtctagtcagcgggcatacgctgctctatatactggcattattca\n"
+ + "aaacttgacggtaaaaaaacgaattttaaggcgctcacgtcgaatgagccgaactcatgg\n"
+ + "gaaccaaaatgtcacagaaaacacctctttattgccaagcatgcaataaaaaaaatgtta\n"
+ + "atagtacgtttacgacattttattttataataaagagaaactattacacctattgatatg\n"
+ + "ataggacgtaaattaacgagtagcctgcatagaggcaaatgaggtttctacatggtatag\n"
+ + "acctgatgctgaaacatcgatgagttttggtcccctcgctcgttgaaatctagtcattta\n"
+ + "ctactgtctttcgagctattataccacttcactatgtggtgtttctttgctatgtatggg\n"
+ + "gctagtcaaacatgatgactatagctacaactcagagagcgggcgtgttaagagtatctc\n"
+ + "atgctagaactgcacgacgaacttgatacaaagtaacaacatttacgattccacaaggtg\n"
+ + "actttgaagaaacatagtttaattctctgcttcgatcatttctataaaccggtaccatcg\n"
+ + "cagcggatagatgcataacatttctactactccaggcatcttaaaacacacgtagtactt\n"
+ + "cactagattaagacacgataagtgtataacttggcagtgggaagcaaggagattggcgaa\n"
+ + "ctcctggcatctgttacgttttgttcaggctcggttgttgataatgtccgactcctgcca\n"
+ + "tattgaagactcgctcgagggagatcgggattcgttgattataagtacacgtgttccgta\n"
+ + "atactatgaggcagtgattcaaaatggcacttctgacttacatgactaggtattattacc\n"
+ + "acggaagcgttaaaggcacactcttatggacttaagattgcaagtgccttcttctagcct\n"
+ + "gaattcgcgggttcaacacaaactctctttagacatccgttgcctaaaggctgagacgta\n"
+ + "ggggcaaccctttaactatgtactaaaaaactagttggtaatttaacaacgtgtccaatc\n"
+ + "aagacgatgcaccaacgcggtgcgaaaatcgggttaagcaaacacaaataggaattgtga\n"
+ + "taaaccccaccttgagaggtcgcaagaccaacctcgggaacaacggctctaagagaataa\n"
+ + "cctaaatccggatgagtagactgtgtaactctctaaagggaagtgaaaaaaagctaagca\n"
+ + "tacatttaggtctcctgcattgcattcaattgaatcgtttgtattatgagctgtacagta\n"
+ + "gctatatcagctatagttatcccagaggaacaggtaaactagctctgagcgtgaaatccg\n"
+ + "gatattagaacccctagatgggattgattctagctaatacaggcttatctggttttacag\n"
+ + "ttatctagatgattggtaaggtgaaacgcttggtgccttccaccacttaaacaaaagtat\n"
+ + "tgcccgggaagctattttctaggtattataaagtcgagcattaatatcaatttgacagta\n"
+ + "aaggtctttcaccagcttcatatgccatagggcccatactcgatttaaattgaacggttt\n"
+ + "aacgagtattggaactctcacttataactgagtagctatacgaaaaatctggtccatttc\n"
+ + "cagaaatttattatcgatttgctgcttagtacccaggaagtgataacccttgaaggcaca\n"
+ + "acactgtaataagttttcctgtcacatctgtaatattcggtcactacgcattcacgacta\n"
+ + "aagataattactatactaattaaaagttcaatgttagggccgaatcatagtagaaattct\n"
+ + "cgtctagcctaatcggacttacctatgggctgtgaggatttatcagtatgtggacaaaaa\n"
+ + "tgctagagataggtatagttaaagtcaccatggtacatctatgtgaggaagtttgtagtt\n"
+ + "cgcttctttagtccgggcgtttgggatgacaactactatacgtagagccgtactcaggat\n"
+ + "tagatagtgtgaaagagtcaaataaaagggttaatattaatttaacgttgcaaatgtgtt\n"
+ + "taggccaaacattaaccgttgtagggatattctaatacaggccttcaccgaaccctaatg\n"
+ + "ataatctgtcttaataacattaaatgattgtctccgctacgagctcttagggcctcattt\n"
+ + "taaatgactaatgtccaaagaagagactttcccaatttcaatctgtcacgtatagacggc\n"
+ + "accttagtgagtcatatcattaagatagaagattatcaggagggaagtttctattatcaa\n"
+ + "ccgttacgcaaccataaacttttaaatctcataatggcattgagatcaagagctttcatg\n"
+ + "atggtaaagttcgtatgtgatgctggggagctagatatcggtataccacttcggttgtgg\n"
+ + "taagcccgagtgggccgttagtaatattaatagacgattatccgacaatgcattcgctga\n"
+ + "aataatcttacttaggagaaattaatgctatgagccaaaactatttatgtctgtcacatt\n"
+ + "attgactaaagtatctatcgacaaaactgatgtccataagttgtagcagatagtcggtgt\n"
+ + "atggtgtcaccaatgaaaacctcgagcgaaaaatgaattatagttatccaatttgagtaa\n"
+ + "attgcctattatacagataggcttgtttagtcagataaggttccgcttgaggtgctctaa\n"
+ + "cttagcgagagttagaaagcctagtgagaggcattttggtgccaaactccggctcgcatg\n"
+ + "agtaggccagagagtcactttctttcgtcgaagaagttggtgaacagccttttgattagt\n"
+ + "tgtttgtcttgtggctatgtgctactatataagttagaacgcaaactaatctaatcagca\n"
+ + "aagtaaaataggaccttgaacgagacggggtacgccgttgaggctcgagatagtagataa\n"
+ + "actagaggaatgtagataaaacattagctagggggtttagttactggattacataggaag\n"
+ + "tgcaccatcacggtgtgggggttcgtacgtaaagtcgcatcaatattgtcagtggactta\n"
+ + "acaagttcgtgcataatgaaatcctatacggactttgcatatctctaccgactcatctgg\n"
+ + "tcgtctatgcgggtaattgtattgctccaagtggatgactattttggcgtcccagcacat\n"
+ + "agtaaatgtaaatccttataatagcataagcaattattagactgcgtgaagtcttagtag\n"
+ + "ttctcaagctttacgttgtatgtaaataactcacgtaatcagccgtccccaaatcaccat\n"
+ + "tgaggtcattgaatgtacggagcactattatcaatgcggtatgcgattttctgagcgatt\n"
+ + "attgttaaagacttagcgttgagccccggaacacttgattacagattctttaaggagtta\n"
+ + "tccaaatatcattttaaataatagtagtatcgtgctttggacaataaaaaaagacccgtt\n"
+ + "ctcttatgttgttttgcgacgtacttctctgatatatacttcaactatgaagattctatt\n"
+ + "catcgataacccaggtatatttatatgcccgttcactgcgcagggcaaattatctacgga\n"
+ + "caataatgacgtagttggacccggtaagaactaacgcttaatatgattaaggatgtatgc\n"
+ + "cagtattatcttattatgtcagagtagaagtttctctgagattttccgtcgttgtggtac\n"
+ + "accggatttggctctctttttagaactgagaactcggagtgtgtagtcttgtttccttca\n"
+ + "atttatcaatatgcttttataccgccctcatcaactataacaggacgacaagttccgtct\n"
+ + "tgctccatcatatactaccgatacaccaatcgtatcaagtttagtatacttgctttctct\n"
+ + "cttctacagcttactcgcttgtccgagaagcggttggtgctcataaagttagtagtaaat\n"
+ + "gtacaactagtagccagtccttacctgtttttacgactactacggacaccatgagataca\n"
+ + "gaagttagtgctacaattataccattacatgctcaatatcgttgtcggccataagatcga\n"
+ + "agagtgcatcacgcgtgtgaatacgtaaaatctaccatcccgtcaatgcacaaaaacaca\n"
+ + "ctccccttgttgactaacatcttttacaagaggctaaatcattgtccaggatcgaatacc\n"
+ + "ttgtgtacaatcgtcacccatcggaagaataccacttttccgatgtagtatgatttacaa\n"
+ + "aaaacatctatgtgagtaggccaattgtagtagaatatattcatttgaccgtcattagcc\n"
+ + "ttcttcttaggttgtgtacggatagtaggtacataaaccgtcgtgtggcatacgctgcga\n"
+ + "tttcatacagctgccaacaccttttttaccaggctagagtcagaaaagttggagccatgt\n"
+ + "taaatagttaccatcataaaccactgttgtctactagtctgatcagctttcatgcctgtg\n"
+ + "caagcaatatggattctcacgtaatggtaacaactgttgcgttacttaggctggttaatt\n"
+ + "tgtcagagtaataaatacatgtcttgttgtgtttcctaatcctcggaaagtacacaagcc\n"
+ + "taggaataggaaaagtaaagctcttttattctgatagtgactaactcaggatctaaatac\n"
+ + "gcgattatactaaccttcaccaaagctcaaaaatcatctgctggtgaccagttatagaca\n"
+ + "gggtaattcaatatttaatgtctcccttaacatttcaccagcatggattgaagatagtat\n"
+ + "aaagttttacatggcagtcattgtgtcacggttctatacaaattctgatagttagacggt\n"
+ + "atttgaaatgtgcttctagcatggtatcttacacaactgaatgaacgactggagccgttc\n"
+ + "gtatactatttgcgagcctcgagaccccgtttcctaatgttaacgaatatagtataatat\n"
+ + "aaattgtgatatgaataacacaagtaactacagtttggacaattaattgttctaaactaa\n"
+ + "aaatcattcacttcagatggcatagagttatggctactacacatataaagcggtatgtga\n"
+ + "aacacccgttttagccggaaaccctctactgctcgggacaatgaatgatttccaaaatat\n"
+ + "ggatgtgcagaattgttagtgtgactcaggtccaaatagacactttagtttcgtcaagtc\n"
+ + "gttgcaaagtttaaaaccatcgcagcattctttatttggtctacattgagaaatgaaaaa\n"
+ + "acgtgacagaaagtctagaagaactgtgaataatgtctattactgattaactagtaagac\n"
+ + "attagtgcatctggtccactgaagcacccgcttggcgttaggcaatctctgtgaactgtc\n"
+ + "gtggctgttccggtaatgtacgaaagcaagcctataggttgatcgagtcgcttcattaag\n"
+ + "gtcaatttcacaatatccgatcacattgtgctaggttcgtcctttaccttgcttagtgct\n"
+ + "gcatgtacggggtgtcatgacttgttatcggcagactctttatcccaagaatggataata\n"
+ + "tgtacatggaaagtgtccataattaagtcccttcactgtaaagaatgactgccacgtgat\n"
+ + "ccatgaggtctacagaaaccgacttacttgctttttgatcaacttaattatggattcata\n"
+ + "aagttcagatatcggtacaattggtgtacaatatgaaattaatgaggaaacatggaaatc\n"
+ + "tgaatgacagtgatagaaaagatccccatttgcccggtcagttcatgttacaccactcat\n"
+ + "tagtactgtaagtgtttcgtcagcattgagatccacgatcatgtgtttatgccttcgaaa\n"
+ + "ctggatgtacgacgatcgagacgaagaggtatatataacctaaatactaggtacgttgtt\n"
+ + "agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n"
+ + "cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n"
+ + "tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n"
+ + "tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n"
+ + "gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n"
+ + "tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n"
+ + "tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n"
+ + "atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n"
+ + "cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n"
+ + "ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n"
+ + "ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n"
+ + "atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n"
+ + "gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n"
+ + "tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n"
+ + "gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n"
+ + "atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n"
+ + "tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n"
+ + "ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n"
+ + "tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n"
+ + "aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n"
+ + "gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n"
+ + "ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n"
+ + "agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n"
+ + "agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n"
+ + "acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n"
+ + "cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n"
+ + "cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n"
+ + "cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n"
+ + "aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n"
+ + "tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n"
+ + "atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n"
+ + "cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n"
+ + "tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n"
+ + "catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n"
+ + "tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n"
+ + "caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n"
+ + "tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n"
+ + "aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n"
+ + "aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n"
+ + "ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n"
+ + "gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n"
+ + "ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n"
+ + "cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n"
+ + "gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n"
+ + "ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n"
+ + "cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n"
+ + "taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n"
+ + "gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n"
+ + "taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n"
+ + "ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n"
+ + "aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n"
+ + "gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n"
+ + "acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n"
+ + "ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n"
+ + "tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n"
+ + "tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n"
+ + "tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n"
+ + "ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n"
+ + "aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n"
+ + "tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n"
+ + "gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n"
+ + "gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n"
+ + "cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n"
+ + "actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n"
+ + "tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n"
+ + "ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n"
+ + "ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n"
+ + "agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n"
+ + "gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n"
+ + "tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n"
+ + "atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n"
+ + "cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n"
+ + "tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n"
+ + "gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n"
+ + "gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n"
+ + "aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n"
+ + "gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n"
+ + "cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n"
+ + "taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n"
+ + "tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n"
+ + "ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n"
+ + "aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n"
+ + "gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n"
+ + "aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n"
+ + "tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n"
+ + "tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n"
+ + "aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n"
+ + "ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n"
+ + "ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n"
+ + "caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n"
+ + "gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n"
+ + "cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n"
+ + "ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n"
+ + "tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n"
+ + "atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n"
+ + "ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n"
+ + "acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n"
+ + "taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n"
+ + "ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n"
+ + "aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n"
+ + "cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n"
+ + "tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n"
+ + "gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n"
+ + "aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n"
+ + "cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n"
+ + "cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n"
+ + "gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n"
+ + "cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n"
+ + "gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n"
+ + "agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n"
+ + "aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n"
+ + "aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n"
+ + "cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n"
+ + "agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n"
+ + "cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n"
+ + "agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n"
+ + "gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n"
+ + "aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n"
+ + "agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n"
+ + "cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n"
+ + "agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n"
+ + "ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n"
+ + "tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n"
+ + "gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n"
+ + "gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n"
+ + "ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n"
+ + "gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n"
+ + "atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n"
+ + "tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n"
+ + "ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n"
+ + "tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n"
+ + "cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n"
+ + "ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n"
+ + "aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n"
+ + "gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n"
+ + "ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n"
+ + "atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n"
+ + "aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n"
+ + "gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n"
+ + "atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n"
+ + "aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n"
+ + "tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n"
+ + "ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n"
+ + "gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n"
+ + "cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n"
+ + "ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n"
+ + "ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n"
+ + "ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n"
+ + "cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n"
+ + "tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n"
+ + "tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n"
+ + "cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n"
+ + "gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n"
+ + "ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n"
+ + "ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n"
+ + "tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n"
+ + "agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n"
+ + "ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n"
+ + "cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n"
+ + "agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n"
+ + "tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n"
+ + "gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n"
+ + "ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n"
+ + "ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n"
+ + "agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n"
+ + "attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n"
+ + "ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n"
+ + "agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n"
+ + "aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n"
+ + "gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n"
+ + "gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n"
+ + "ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n"
+ + "gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n"
+ + "ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n"
+ + "taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n"
+ + "aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n"
+ + "tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n"
+ + "ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n"
+ + "agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n"
+ + "ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n"
+ + "agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n"
+ + "gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n"
+ + "tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n"
+ + "gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n"
+ + "cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n"
+ + "ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n"
+ + "cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n"
+ + "gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n"
+ + "gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n"
+ + "tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n"
+ + "cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n"
+ + "aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n"
+ + "ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n"
+ + "gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n"
+ + "aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n"
+ + "gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n"
+ + "aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n"
+ + "gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n"
+ + "agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n"
+ + "caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n"
+ + "gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n"
+ + "aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n"
+ + "tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n"
+ + "tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n"
+ + "ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n"
+ + "ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n"
+ + "gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n"
+ + "ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n"
+ + "aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n"
+ + "tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n"
+ + "acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n"
+ + "atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n"
+ + "gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n"
+ + "tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n"
+ + "cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n"
+ + "gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n"
+ + "acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n"
+ + "acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n"
+ + "attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n"
+ + "tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n"
+ + "cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n"
+ + "aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n"
+ + "ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n"
+ + "tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n"
+ + "gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n"
+ + "gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n"
+ + "acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n"
+ + "gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n"
+ + "gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n"
+ + "ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n"
+ + "taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n"
+ + "agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n"
+ + "gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n"
+ + "ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n"
+ + "accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n"
+ + "tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n"
+ + "taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n"
+ + "catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n"
+ + "tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n"
+ + "ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n"
+ + "aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n"
+ + "atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n"
+ + "tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n"
+ + "ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n"
+ + "tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n"
+ + "aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n"
+ + "agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n"
+ + "acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n"
+ + "aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n"
+ + "ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n"
+ + "gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n"
+ + "taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n"
+ + "taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n"
+ + "tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n"
+ + "gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n"
+ + "ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n"
+ + "atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n"
+ + "tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n"
+ + "cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n"
+ + "aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n"
+ + "taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n"
+ + "caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n"
+ + "ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n"
+ + "tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n"
+ + "tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n"
+ + "gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n"
+ + "gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n"
+ + "gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n"
+ + "ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n"
+ + "tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n"
+ + "taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n"
+ + "gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n"
+ + "ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n"
+ + "gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n"
+ + "tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n"
+ + "ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n"
+ + "tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n"
+ + "cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n"
+ + "ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n"
+ + "caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n"
+ + "cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n"
+ + "gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n"
+ + "cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n"
+ + "taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n"
+ + "tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n"
+ + "taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n"
+ + "tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n"
+ + "tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n"
+ + "tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n"
+ + "ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n"
+ + "aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n"
+ + "atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n"
+ + "actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n"
+ + "gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n"
+ + "ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n"
+ + "gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n"
+ + "tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n"
+ + "aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n"
+ + "atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n"
+ + "catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc";
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/mandelbrot.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/mandelbrot.java
new file mode 100644
index 0000000..df979d8
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/mandelbrot.java
@@ -0,0 +1,104 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `mandelbrot/mandelbrot.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Stefan Krause
+ * slightly modified by Chad Whipkey
+ */
+
+/*
+ * Description: Generate Mandelbrot set portable bitmap file.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.io.IOException;
+import java.io.PrintStream;
+import java.lang.System;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class mandelbrot {
+ private static final int PREDEFINED_SIZE = 200;
+
+ private static final int BUFFER_SIZE = 8192;
+
+ public mandelbrot() {
+ this.size = PREDEFINED_SIZE;
+ fac = 2.0 / size;
+ shift = size % 8 == 0 ? 0 : (8- size % 8);
+ }
+ final int size;
+ final byte [] buf = new byte[BUFFER_SIZE];
+ int bufLen = 0;
+ final double fac;
+ final int shift;
+
+ public void compute()
+ {
+ for (int y = 0; y<size; y++)
+ computeRow(y);
+ }
+
+ private void computeRow(int y)
+ {
+ int bits = 0;
+
+ final double Ci = (y*fac - 1.0);
+ final byte[] bufLocal = buf;
+ for (int x = 0; x<size;x++) {
+ double Zr = 0.0;
+ double Zi = 0.0;
+ double Cr = (x*fac - 1.5);
+ int i = 50;
+ double ZrN = 0;
+ double ZiN = 0;
+ do {
+ Zi = 2.0 * Zr * Zi + Ci;
+ Zr = ZrN - ZiN + Cr;
+ ZiN = Zi * Zi;
+ ZrN = Zr * Zr;
+ } while (!(ZiN + ZrN > 4.0) && --i > 0);
+
+ bits = bits << 1;
+ if (i == 0) bits++;
+
+ if (x%8 == 7) {
+ bufLocal[bufLen++] = (byte) bits;
+ if ( bufLen == BUFFER_SIZE) {
+ bufLen = 0;
+ }
+ bits = 0;
+ }
+ }
+ if (shift!=0) {
+ bits = bits << shift;
+ bufLocal[bufLen++] = (byte) bits;
+ if ( bufLen == BUFFER_SIZE) {
+ bufLen = 0;
+ }
+ }
+ }
+
+ // CHECKSTYLE.OFF: .*
+ @Benchmark
+ public void jmhTimeMandelbrot() {
+ bufLen = 0;
+ compute();
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/meteor.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/meteor.java
new file mode 100644
index 0000000..6671bb2
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/meteor.java
@@ -0,0 +1,479 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `meteor/meteor.java` from the archive available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Tony Seebregts
+ * modified by
+ */
+
+/*
+ * Description: Search for solutions to shape packing puzzle
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+//package benchmarks.benchmarksgame;
+
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+/** First hack at a Java solver for the meteor puzzle - just the IBM
+ * developerWorks article algorithm optimized with precalculated shapes
+ * and bitmasks. Should be possible to optimize it some more to take
+ * advantage of reflections but its turning out to be less obvious
+ * than expected :-).
+ * <p>
+ * Notes:
+ * <ul>
+ * <li>Seems to run faster without the -server switch.
+ * <li>Testing for islands seems to be slower than just fitting pieces.
+ * </ul>
+ *
+ * @author Tony Seebregts
+ *
+ */
+
+// CHECKSTYLE.OFF: .*
+public class meteor
+ { // CONSTANTS
+
+ private static final int[] SHIFT = { 0,6,11,17,22,28,33,39,44,50 };
+ private static final long[][] MASK = { { 0x01L, 0x02L, 0x04L, 0x08L, 0x10L },
+ { 0x01L << 6, 0x02L << 6, 0x04L << 6, 0x08L << 6,0x10L << 6 },
+ { 0x01L << 11,0x02L << 11,0x04L << 11,0x08L << 11,0x10L << 11 },
+ { 0x01L << 17,0x02L << 17,0x04L << 17,0x08L << 17,0x10L << 17 },
+ { 0x01L << 22,0x02L << 22,0x04L << 22,0x08L << 22,0x10L << 22 },
+ { 0x01L << 28,0x02L << 28,0x04L << 28,0x08L << 28,0x10L << 28 },
+ { 0x01L << 33,0x02L << 33,0x04L << 33,0x08L << 33,0x10L << 33 },
+ { 0x01L << 39,0x02L << 39,0x04L << 39,0x08L << 39,0x10L << 39 },
+ { 0x01L << 44,0x02L << 44,0x04L << 44,0x08L << 44,0x10L << 44 },
+ { 0x01L << 50,0x02L << 50,0x04L << 50,0x08L << 50,0x10L << 50 }
+ };
+
+ private static final boolean DEBUG = false;
+
+ // CLASS VARIABLES
+
+ // INSTANCE VARIABLES
+
+ private SortedSet<String> solutions = new TreeSet<String>();
+ private Entry[] solution = new Entry[10];
+ private int depth = 0;
+ private Piece[] pieces = { new Piece(PIECE0),
+ new Piece(PIECE1),
+ new Piece(PIECE2),
+ new Piece(PIECE3),
+ new Piece(PIECE4),
+ new Piece(PIECE5),
+ new Piece(PIECE6),
+ new Piece(PIECE7),
+ new Piece(PIECE8),
+ new Piece(PIECE9)
+ };
+
+ // CLASS METHODS
+
+ /** Prints out the puzzle.
+ *
+ *
+ */
+
+ private static void print (String solution)
+ { System.out.print(solution.replaceAll("(\\d{5})(\\d{5})","$1 $2")
+ .replaceAll("(\\d{5})","$1\n")
+ .replaceAll("(\\d)","$1 "));
+ }
+
+ // CONSTRUCTORS
+
+ /** Initialises the puzzle.
+ *
+ */
+
+ public meteor ()
+ { for (int i=0; i<10; i++)
+ solution[i] = new Entry();
+ }
+
+ // INSTANCE METHODS
+
+ /** Initialises the puzzle and solution set at [0,0]
+ *
+ * @return Sorted list of solution strings.
+ */
+
+ private SortedSet<String> solve()
+ { solve(0x0002004008010020L,0,0);
+
+ return solutions;
+ }
+
+ /** Recursively solves the puzzle by fitting pieces into the
+ * next available hexagon.
+ *
+ * @param puzzle Current puzzle bitmask.
+ * @param row Row of next available hexagon.
+ * @param col Column next available hexagon.
+ *
+ */
+
+ private void solve (long puzzle,int row,int col)
+ { for (int ix=0; ix<pieces.length; ix++)
+ { Piece piece;
+ Shape[] list;
+
+ // ... find shapes that fit
+
+ if ((piece = pieces[ix]) == null)
+ continue;
+ else
+ list = pieces[ix].shapes(row,col);
+
+ for (Shape shape: list)
+ { // ... fits badly ?
+
+ if ((shape.bitmap & puzzle) != 0)
+ continue;
+
+ // ... try piece in puzzle
+
+ long clone = puzzle | shape.bitmap;
+
+ // ... find next position
+
+ int irow = row;
+ int icol = col/2 + 1;
+
+ next:
+ while (irow < 10)
+ { while (icol < 5)
+ { if ((clone & MASK[irow][icol]) == 0)
+ break next;
+
+ icol++;
+ }
+
+ irow++;
+ icol = 0;
+ }
+
+ // ... solve next
+
+ Entry entry;
+
+ pieces[ix] = null;
+ entry = solution[depth++];
+ entry.row = row;
+ entry.col = col;
+ entry.shape = shape;
+
+ if (depth == 10)
+ solutions.add(serialize(solution));
+ else
+ solve (clone,irow,2*icol + (irow % 2));
+
+ depth--;
+ pieces[ix] = piece;
+ }
+ }
+ }
+
+ /** Serializes the current solution to a string.
+ *
+ */
+
+ private String serialize (Entry[] solution)
+ { char[] puzzle = new char[50];
+ Shape shape;
+ int row;
+ int col;
+
+ for (Entry entry: solution)
+ { shape = entry.shape;
+ row = entry.row;
+ col = entry.col;
+
+ for (int[] xy: shape.vector)
+ puzzle[5 * (row + xy[0]) + (col + xy[1])/2] = shape.symbol;
+ }
+
+ return new String(puzzle);
+ }
+
+ // INNER CLASSES
+
+ /** Container class for a solution set entry.
+ *
+ */
+
+ private static class Entry
+ { public int row;
+ public int col;
+ public Shape shape;
+ }
+
+ /** Container class for the shapes for a single puzzle piece.
+ *
+ *
+ */
+
+ private static class Piece
+ { private Shape[][][] shapes = new Shape[10][10][];
+
+ @SuppressWarnings("unchecked")
+ private Piece (Shape[] list)
+ { // ... initialise
+
+ ArrayList[][] array = new ArrayList[10][10];
+
+ for (int i=0; i<10; i++)
+ for (int j=0; j<10; j++)
+ array[i][j] = new ArrayList<Shape>();
+
+ // ... generate list
+
+ for (Shape mutant: list)
+ for (int row=0; row<=mutant.maxRow; row++)
+ for (int col=mutant.minCol; col<=mutant.maxCol; col++)
+ { if (!mutant.islet)
+ array[row][col].add(new Shape(mutant,row,col));
+ else if ((row != 0) || (col != 0))
+ array[row][col].add(new Shape(mutant,row,col));
+ }
+
+ for (int row=0; row<10; row++)
+ for (int col=0; col<10; col++)
+ shapes[row][col] = (Shape[]) array[row][col].toArray(new Shape[0]);
+ }
+
+ @SuppressWarnings("unchecked")
+ private Shape[] shapes(int row,int col)
+ { return shapes[row][col];
+ }
+
+ }
+
+ /** Container class for the shape vector and bitmap single puzzle piece mutation.
+ *
+ *
+ */
+
+ private static class Shape
+ { private char symbol;
+ private int[][] vector;
+ private long bitmap;
+ private int shift;
+
+ private boolean islet;
+ private int maxRow;
+ private int minCol;
+ private int maxCol;
+
+ private Shape (char symbol,
+ int[][] vector,
+ long bitmap,
+ int shift,
+ boolean islet,
+ int maxRow,
+ int minCol,
+ int maxCol)
+ { this.symbol = symbol;
+ this.vector = vector;
+ this.bitmap = bitmap;
+ this.shift = shift;
+
+ this.islet = islet;
+ this.maxRow = maxRow;
+ this.minCol = minCol;
+ this.maxCol = maxCol;
+ }
+
+ private Shape (Shape shape,
+ int row,
+ int col)
+ { this.symbol = shape.symbol;
+ this.vector = shape.vector;
+ this.bitmap = shape.bitmap << ((SHIFT[row] + (col - (row % 2))/2) - shape.shift);
+
+ this.islet = shape.islet;
+ this.maxRow = shape.maxRow;
+ this.minCol = shape.minCol;
+ this.maxCol = shape.maxCol;
+ }
+ }
+
+ // PIECES
+
+ private static final Shape[] PIECE0 = { new Shape ('0',new int[][] {{3, 5},{2, 4},{1, 3},{0, 2},{0, 0}},0x0000000000082083L,0,false,6,0,4),
+ new Shape ('0',new int[][] {{4,-2},{3,-1},{2, 0},{1, 1},{0, 0}},0x0000000000421082L,1,false,5,2,8),
+ new Shape ('0',new int[][] {{1,-7},{1,-5},{1,-3},{1,-1},{0, 0}},0x00000000000003D0L,4,false,8,7,9),
+ new Shape ('0',new int[][] {{0, 0},{1, 1},{2, 2},{3, 3},{3, 5}},0x00000000000C1041L,0,false,6,0,4),
+ new Shape ('0',new int[][] {{0, 0},{1,-1},{2,-2},{3,-3},{4,-2}},0x0000000000821084L,2,false,5,3,9),
+ new Shape ('0',new int[][] {{0, 6},{0, 4},{0, 2},{0, 0},{1,-1}},0x000000000000005EL,1,false,8,1,3),
+ new Shape ('0',new int[][] {{0, 0},{1, 1},{2, 2},{3, 3},{4, 2}},0x0000000000841041L,0,false,5,0,6),
+ new Shape ('0',new int[][] {{0, 0},{1,-1},{2,-2},{3,-3},{3,-5}},0x0000000000062108L,3,false,6,5,9),
+ new Shape ('0',new int[][] {{1, 7},{1, 5},{1, 3},{1, 1},{0, 0}},0x00000000000003C1L,0,false,8,0,2),
+ new Shape ('0',new int[][] {{4, 2},{3, 1},{2, 0},{1,-1},{0, 0}},0x0000000001041042L,1,false,5,1,7),
+ new Shape ('0',new int[][] {{3,-3},{2,-2},{1,-1},{0, 0},{0, 2}},0x000000000002108CL,2,false,6,3,7),
+ new Shape ('0',new int[][] {{0, 0},{0, 2},{0, 4},{0, 6},{1, 7}},0x000000000000020FL,0,false,8,0,2)
+ };
+
+ private static final Shape[] PIECE1 = { new Shape ('1',new int[][] {{0, 2},{0, 0},{1,-1},{2, 0},{3,-1}},0x0000000000021046L,1,false,6,1,7),
+ new Shape ('1',new int[][] {{1, 3},{0, 2},{0, 0},{1,-1},{1,-3}},0x00000000000002CCL,2,false,8,3,6),
+ new Shape ('1',new int[][] {{3, 3},{2, 4},{1, 3},{1, 1},{0, 0}},0x00000000000420C1L,0,false,6,0,5),
+ new Shape ('1',new int[][] {{3,-3},{3,-1},{2, 0},{1,-1},{0, 0}},0x0000000000062084L,2,false,6,3,9),
+ new Shape ('1',new int[][] {{0, 0},{1, 1},{1, 3},{0, 4},{0, 6}},0x00000000000000CDL,0,true, 8,0,3),
+ new Shape ('1',new int[][] {{0, 0},{1,-1},{2, 0},{2, 2},{3, 3}},0x0000000000083042L,1,false,6,1,6),
+ new Shape ('1',new int[][] {{0, 6},{1, 5},{1, 3},{0, 2},{0, 0}},0x000000000000018BL,0,true, 8,0,3),
+ new Shape ('1',new int[][] {{3, 3},{3, 1},{2, 0},{1, 1},{0, 0}},0x0000000000060841L,0,false,6,0,6),
+ new Shape ('1',new int[][] {{3,-3},{2,-4},{1,-3},{1,-1},{0, 0}},0x00000000000208C4L,2,false,6,4,9),
+ new Shape ('1',new int[][] {{1,-1},{0, 0},{0, 2},{1, 3},{1, 5}},0x0000000000000346L,1,false,8,1,4),
+ new Shape ('1',new int[][] {{0, 0},{0, 2},{1, 3},{2, 2},{3, 3}},0x0000000000041083L,0,false,6,0,6),
+ new Shape ('1',new int[][] {{0, 0},{1, 1},{2, 0},{2,-2},{3,-3}},0x0000000000023104L,2,false,6,3,8)
+ };
+
+ private static final Shape[] PIECE2 = { new Shape ('2',new int[][] {{1, 1},{0, 0},{2, 0},{2,-2},{2,-4}},0x0000000000003904L,2,false,7,4,8),
+ new Shape ('2',new int[][] {{2, 4},{1, 5},{2, 2},{1, 1},{0, 0}},0x0000000000003141L,0,false,7,0,4),
+ new Shape ('2',new int[][] {{3,-1},{3, 1},{2,-2},{1,-1},{0, 0}},0x0000000000060842L,1,false,6,2,8),
+ new Shape ('2',new int[][] {{1,-1},{2, 0},{0, 0},{0, 2},{0, 4}},0x000000000000104EL,1,false,7,1,5),
+ new Shape ('2',new int[][] {{0, 0},{1,-1},{0, 2},{1, 3},{2, 4}},0x0000000000004146L,1,false,7,1,5),
+ new Shape ('2',new int[][] {{0, 2},{0, 0},{1, 3},{2, 2},{3, 1}},0x0000000000021083L,0,true, 6,0,6),
+ new Shape ('2',new int[][] {{0, 2},{1, 3},{0, 0},{1,-1},{2,-2}},0x0000000000000946L,1,false,7,2,6),
+ new Shape ('2',new int[][] {{1, 5},{2, 4},{0, 4},{0, 2},{0, 0}},0x0000000000002107L,0,false,7,0,4),
+ new Shape ('2',new int[][] {{3, 1},{3,-1},{2, 2},{1, 1},{0, 0}},0x0000000000062082L,1,false,6,1,7),
+ new Shape ('2',new int[][] {{2,-4},{1,-5},{2,-2},{1,-1},{0, 0}},0x0000000000003148L,3,false,7,5,9),
+ new Shape ('2',new int[][] {{1,-1},{0, 0},{2, 0},{2, 2},{2, 4}},0x0000000000007042L,1,false,7,1,5),
+ new Shape ('2',new int[][] {{0, 0},{0, 2},{1,-1},{2, 0},{3, 1}},0x0000000000041046L,1,false,6,1,7)
+ };
+
+ private static final Shape[] PIECE3 = { new Shape ('3',new int[][] {{0, 0},{2, 0},{1,-1},{2,-2},{2,-4}},0x0000000000003884L,2,false,7,4,9),
+ new Shape ('3',new int[][] {{1, 5},{2, 2},{1, 3},{1, 1},{0, 0}},0x00000000000011C1L,0,false,7,0,4),
+ new Shape ('3',new int[][] {{3, 1},{2,-2},{2, 0},{1,-1},{0, 0}},0x0000000000041842L,1,false,6,2,8),
+ new Shape ('3',new int[][] {{2, 0},{0, 0},{1, 1},{0, 2},{0, 4}},0x0000000000000847L,0,false,7,0,5),
+ new Shape ('3',new int[][] {{1,-3},{0, 0},{1,-1},{1, 1},{2, 2}},0x00000000000041C4L,2,false,7,3,7),
+ new Shape ('3',new int[][] {{0, 0},{1, 3},{1, 1},{2, 2},{3, 1}},0x00000000000210C1L,0,true, 6,0,6),
+ new Shape ('3',new int[][] {{1, 3},{0, 0},{1, 1},{1,-1},{2,-2}},0x00000000000009C2L,1,false,7,2,6),
+ new Shape ('3',new int[][] {{2, 4},{0, 4},{1, 3},{0, 2},{0, 0}},0x0000000000002087L,0,false,7,0,5),
+ new Shape ('3',new int[][] {{3,-1},{2, 2},{2, 0},{1, 1},{0, 0}},0x0000000000023082L,1,false,6,1,7),
+ new Shape ('3',new int[][] {{1,-5},{2,-2},{1,-3},{1,-1},{0, 0}},0x00000000000021C8L,3,false,7,5,9),
+ new Shape ('3',new int[][] {{0, 0},{2, 0},{1, 1},{2, 2},{2, 4}},0x0000000000003841L,0,false,7,0,5),
+ new Shape ('3',new int[][] {{0, 0},{1,-3},{1,-1},{2,-2},{3,-1}},0x00000000000410C4L,2,false,6,3,9)
+ };
+
+ private static final Shape[] PIECE4 = { new Shape ('4',new int[][] {{1, 5},{2, 2},{1, 3},{0, 2},{0, 0}},0x0000000000001183L,0,false,7,0,4),
+ new Shape ('4',new int[][] {{3, 1},{2,-2},{2, 0},{1, 1},{0, 0}},0x0000000000041882L,1,false,6,2,8),
+ new Shape ('4',new int[][] {{2, 0},{0, 0},{1, 1},{1, 3},{0, 4}},0x00000000000008C5L,0,true, 7,0,5),
+ new Shape ('4',new int[][] {{1,-3},{0, 0},{1,-1},{2, 0},{2, 2}},0x00000000000060C4L,2,false,7,3,7),
+ new Shape ('4',new int[][] {{0, 0},{1, 3},{1, 1},{2, 0},{3, 1}},0x00000000000208C1L,0,false,6,0,6),
+ new Shape ('4',new int[][] {{0, 0},{2, 0},{1,-1},{1,-3},{2,-4}},0x00000000000028C4L,2,false,7,4,9),
+ new Shape ('4',new int[][] {{0, 0},{1,-3},{1,-1},{2, 0},{3,-1}},0x00000000000420C4L,2,false,6,3,9),
+ new Shape ('4',new int[][] {{1, 3},{0, 0},{1, 1},{2, 0},{2,-2}},0x0000000000001982L,1,false,7,2,6),
+ new Shape ('4',new int[][] {{2, 4},{0, 4},{1, 3},{1, 1},{0, 0}},0x00000000000020C5L,0,true, 7,0,5),
+ new Shape ('4',new int[][] {{3,-1},{2, 2},{2, 0},{1,-1},{0, 0}},0x0000000000023042L,1,false,6,1,7),
+ new Shape ('4',new int[][] {{1,-3},{2, 0},{1,-1},{0, 0},{0, 2}},0x00000000000020CCL,2,false,7,3,7),
+ new Shape ('4',new int[][] {{0, 0},{2, 0},{1, 1},{1, 3},{2, 4}},0x00000000000028C1L,0,false,7,0,5)
+ };
+
+ private static final Shape[] PIECE5 = { new Shape ('5',new int[][] {{0, 2},{1, 1},{0, 0},{1,-1},{2,-2}},0x00000000000008C6L,1,false,7,2,7),
+ new Shape ('5',new int[][] {{1, 5},{1, 3},{0, 4},{0, 2},{0, 0}},0x0000000000000187L,0,false,8,0,4),
+ new Shape ('5',new int[][] {{3, 1},{2, 0},{2, 2},{1, 1},{0, 0}},0x0000000000021841L,0,false,6,0,7),
+ new Shape ('5',new int[][] {{2,-4},{1,-3},{2,-2},{1,-1},{0, 0}},0x00000000000018C4L,2,false,7,4,9),
+ new Shape ('5',new int[][] {{0, 0},{0, 2},{1, 1},{1, 3},{1, 5}},0x00000000000001C3L,0,false,8,0,4),
+ new Shape ('5',new int[][] {{0, 0},{1, 1},{1,-1},{2, 0},{3, 1}},0x00000000000410C2L,1,false,6,1,8),
+ new Shape ('5',new int[][] {{0, 2},{0, 0},{1, 1},{1,-1},{1,-3}},0x00000000000001CCL,2,false,8,3,7),
+ new Shape ('5',new int[][] {{2, 4},{1, 3},{2, 2},{1, 1},{0, 0}},0x00000000000030C1L,0,false,7,0,5),
+ new Shape ('5',new int[][] {{3,-1},{2, 0},{2,-2},{1,-1},{0, 0}},0x0000000000021842L,1,false,6,2,9),
+ new Shape ('5',new int[][] {{1,-1},{1, 1},{0, 0},{0, 2},{0, 4}},0x00000000000000CEL,1,false,8,1,5),
+ new Shape ('5',new int[][] {{0, 0},{1, 1},{0, 2},{1, 3},{2, 4}},0x00000000000020C3L,0,false,7,0,5),
+ new Shape ('5',new int[][] {{0, 0},{1,-1},{1, 1},{2, 0},{3,-1}},0x00000000000210C2L,1,false,6,1,8)
+ };
+
+ private static final Shape[] PIECE6 = { new Shape ('6',new int[][] {{1, 1},{0, 0},{1,-1},{1,-3},{2,-4}},0x00000000000009C4L,2,false,7,4,8),
+ new Shape ('6',new int[][] {{2, 4},{1, 5},{1, 3},{0, 2},{0, 0}},0x0000000000002183L,0,false,7,0,4),
+ new Shape ('6',new int[][] {{3,-1},{3, 1},{2, 0},{1, 1},{0, 0}},0x0000000000061082L,1,false,6,1,8),
+ new Shape ('6',new int[][] {{1,-5},{2,-4},{1,-3},{1,-1},{0, 0}},0x00000000000011C8L,3,false,7,5,9),
+ new Shape ('6',new int[][] {{0, 0},{1,-1},{1, 1},{2, 2},{2, 4}},0x00000000000060C2L,1,false,7,1,5),
+ new Shape ('6',new int[][] {{0, 2},{0, 0},{1, 1},{2, 0},{3, 1}},0x0000000000020843L,0,false,6,0,7),
+ new Shape ('6',new int[][] {{0, 0},{1, 1},{1,-1},{2,-2},{2,-4}},0x0000000000001984L,2,false,7,4,8),
+ new Shape ('6',new int[][] {{1, 5},{2, 4},{1, 3},{1, 1},{0, 0}},0x00000000000021C1L,0,false,7,0,4),
+ new Shape ('6',new int[][] {{3, 1},{3,-1},{2, 0},{1,-1},{0, 0}},0x0000000000061042L,1,false,6,1,8),
+ new Shape ('6',new int[][] {{2,-2},{1,-3},{1,-1},{0, 0},{0, 2}},0x00000000000010CCL,2,false,7,3,7),
+ new Shape ('6',new int[][] {{1,-1},{0, 0},{1, 1},{1, 3},{2, 4}},0x00000000000041C2L,1,false,7,1,5),
+ new Shape ('6',new int[][] {{0, 0},{0, 2},{1, 1},{2, 2},{3, 1}},0x0000000000021043L,0,false,6,0,7)
+ };
+
+ private static final Shape[] PIECE7 = { new Shape ('7',new int[][] {{0, 2},{1, 1},{0, 0},{2, 0},{2,-2}},0x0000000000001886L,1,false,7,2,7),
+ new Shape ('7',new int[][] {{1, 5},{1, 3},{0, 4},{1, 1},{0, 0}},0x00000000000001C5L,0,true, 8,0,4),
+ new Shape ('7',new int[][] {{3, 1},{2, 0},{2, 2},{1,-1},{0, 0}},0x0000000000043042L,1,false,6,1,7),
+ new Shape ('7',new int[][] {{2,-2},{1,-1},{2, 0},{0, 0},{0, 2}},0x0000000000001846L,1,false,7,2,7),
+ new Shape ('7',new int[][] {{0, 0},{0, 2},{1, 1},{0, 4},{1, 5}},0x0000000000000147L,0,false,8,0,4),
+ new Shape ('7',new int[][] {{0, 0},{1, 1},{1,-1},{2, 2},{3, 1}},0x00000000000420C2L,1,false,6,1,7),
+ new Shape ('7',new int[][] {{0, 4},{0, 2},{1, 3},{0, 0},{1,-1}},0x000000000000014EL,1,false,8,1,5),
+ new Shape ('7',new int[][] {{2, 4},{1, 3},{2, 2},{0, 2},{0, 0}},0x0000000000003083L,0,false,7,0,5),
+ new Shape ('7',new int[][] {{3,-1},{2, 0},{2,-2},{1, 1},{0, 0}},0x0000000000021882L,1,false,6,2,8),
+ new Shape ('7',new int[][] {{1,-1},{1, 1},{0, 0},{1, 3},{0, 4}},0x00000000000001CAL,1,false,8,1,5),
+ new Shape ('7',new int[][] {{0, 0},{1, 1},{0, 2},{2, 2},{2, 4}},0x0000000000003043L,0,false,7,0,5),
+ new Shape ('7',new int[][] {{0, 0},{1,-1},{1, 1},{2,-2},{3,-1}},0x00000000000208C2L,1,false,6,2,8)
+ };
+
+ private static final Shape[] PIECE8 = { new Shape ('8',new int[][] {{4, 2},{3, 1},{2, 0},{1, 1},{0, 0}},0x0000000000820841L,0,false,5,0,7),
+ new Shape ('8',new int[][] {{3,-5},{2,-4},{1,-3},{1,-1},{0, 0}},0x0000000000021188L,3,false,6,5,9),
+ new Shape ('8',new int[][] {{0, 0},{0, 2},{0, 4},{1, 5},{1, 7}},0x0000000000000307L,0,false,8,0,2),
+ new Shape ('8',new int[][] {{0, 0},{1, 1},{2, 2},{3, 1},{4, 2}},0x0000000000821041L,0,true, 5,0,7),
+ new Shape ('8',new int[][] {{0, 0},{1,-1},{2,-2},{2,-4},{3,-5}},0x0000000000023108L,3,false,6,5,9),
+ new Shape ('8',new int[][] {{1, 7},{1, 5},{1, 3},{0, 2},{0, 0}},0x0000000000000383L,0,false,8,0,2),
+ new Shape ('8',new int[][] {{0, 0},{1, 1},{2, 2},{2, 4},{3, 5}},0x0000000000083041L,0,false,6,0,4),
+ new Shape ('8',new int[][] {{0, 0},{1,-1},{2,-2},{3,-1},{4,-2}},0x0000000000420842L,1,false,5,2,9),
+ new Shape ('8',new int[][] {{0, 4},{0, 2},{0, 0},{1,-1},{1,-3}},0x00000000000000DCL,2,false,8,3,5),
+ new Shape ('8',new int[][] {{3, 5},{2, 4},{1, 3},{1, 1},{0, 0}},0x00000000000820C1L,0,false,6,0,4),
+ new Shape ('8',new int[][] {{4,-2},{3,-1},{2, 0},{1,-1},{0, 0}},0x0000000000421042L,1,false,5,2,9),
+ new Shape ('8',new int[][] {{1,-5},{1,-3},{1,-1},{0, 0},{0, 2}},0x00000000000001D8L,3,false,8,5,7)
+ };
+
+ private static final Shape[] PIECE9 = { new Shape ('9',new int[][] {{3, 3},{2, 2},{1, 1},{0, 0},{0, 2}},0x0000000000041043L,0,false,6,0,6),
+ new Shape ('9',new int[][] {{3,-3},{2,-2},{1,-1},{0, 0},{1, 1}},0x0000000000021184L,2,false,6,3,8),
+ new Shape ('9',new int[][] {{0, 0},{0, 2},{0, 4},{0, 6},{1, 5}},0x000000000000010FL,0,false,8,0,3),
+ new Shape ('9',new int[][] {{0, 0},{1, 1},{2, 2},{3, 3},{3, 1}},0x0000000000061041L,0,true, 6,0,6),
+ new Shape ('9',new int[][] {{0, 0},{1,-1},{2,-2},{3,-3},{2,-4}},0x0000000000021884L,2,false,6,4,9),
+ new Shape ('9',new int[][] {{1, 5},{1, 3},{1, 1},{1,-1},{0, 0}},0x00000000000003C2L,1,false,8,1,4),
+ new Shape ('9',new int[][] {{0, 0},{1, 1},{2, 2},{3, 3},{2, 4}},0x0000000000043041L,0,false,6,0,5),
+ new Shape ('9',new int[][] {{0, 0},{1,-1},{2,-2},{3,-3},{3,-1}},0x0000000000061084L,2,false,6,3,9),
+ new Shape ('9',new int[][] {{0, 6},{0, 4},{0, 2},{0, 0},{1, 1}},0x000000000000004FL,0,false,8,0,3),
+ new Shape ('9',new int[][] {{3, 3},{2, 2},{1, 1},{0, 0},{1,-1}},0x00000000000820C2L,1,false,6,1,6),
+ new Shape ('9',new int[][] {{3,-1},{2, 0},{1, 1},{0, 2},{0, 0}},0x0000000000021086L,1,false,6,1,7),
+ new Shape ('9',new int[][] {{1,-5},{1,-3},{1,-1},{1, 1},{0, 0}},0x00000000000003C8L,3,false,8,5,8)
+ };
+
+ // CHECKSTYLE.ON: .*
+
+ public void resetMeteor() {
+ for (int i = 0; i < 10; ++i) {
+ solution[i] = new Entry();
+ }
+ }
+
+ @Benchmark
+ public void jmhTimeMeteor() {
+ solve();
+ resetMeteor();
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/nbody.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/nbody.java
new file mode 100644
index 0000000..ab5ebf3
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/nbody.java
@@ -0,0 +1,204 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `nbody/nbody.java` from the archive available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Mark C. Lewis
+ * modified slightly by Chad Whipkey
+ *
+ * Same program, different command-line:
+ * -XX:MaxMetaspaceSize=3m -XX:InitialCodeCacheSize=2048K -XX:ReservedCodeCacheSize=2048K
+ */
+
+/*
+ * Description: Double-precision N-body simulation.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+// CHECKSTYLE.OFF: .*
+final class NBodySystem {
+ private Body[] bodies;
+
+ public NBodySystem(){
+ bodies = new Body[]{
+ Body.sun(),
+ Body.jupiter(),
+ Body.saturn(),
+ Body.uranus(),
+ Body.neptune()
+ };
+
+ double px = 0.0;
+ double py = 0.0;
+ double pz = 0.0;
+ for(int i=0; i < bodies.length; ++i) {
+ px += bodies[i].vx * bodies[i].mass;
+ py += bodies[i].vy * bodies[i].mass;
+ pz += bodies[i].vz * bodies[i].mass;
+ }
+ bodies[0].offsetMomentum(px,py,pz);
+ }
+
+ public void advance(double dt) {
+
+ for(int i=0; i < bodies.length; ++i) {
+ Body iBody = bodies[i];
+ for(int j=i+1; j < bodies.length; ++j) {
+ double dx = iBody.x - bodies[j].x;
+ double dy = iBody.y - bodies[j].y;
+ double dz = iBody.z - bodies[j].z;
+
+ double dSquared = dx * dx + dy * dy + dz * dz;
+ double distance = Math.sqrt(dSquared);
+ double mag = dt / (dSquared * distance);
+
+ iBody.vx -= dx * bodies[j].mass * mag;
+ iBody.vy -= dy * bodies[j].mass * mag;
+ iBody.vz -= dz * bodies[j].mass * mag;
+
+ bodies[j].vx += dx * iBody.mass * mag;
+ bodies[j].vy += dy * iBody.mass * mag;
+ bodies[j].vz += dz * iBody.mass * mag;
+ }
+ }
+
+ for ( Body body : bodies) {
+ body.x += dt * body.vx;
+ body.y += dt * body.vy;
+ body.z += dt * body.vz;
+ }
+ }
+
+ public double energy(){
+ double dx, dy, dz, distance;
+ double e = 0.0;
+
+ for (int i=0; i < bodies.length; ++i) {
+ Body iBody = bodies[i];
+ e += 0.5 * iBody.mass *
+ ( iBody.vx * iBody.vx
+ + iBody.vy * iBody.vy
+ + iBody.vz * iBody.vz );
+
+ for (int j=i+1; j < bodies.length; ++j) {
+ Body jBody = bodies[j];
+ dx = iBody.x - jBody.x;
+ dy = iBody.y - jBody.y;
+ dz = iBody.z - jBody.z;
+
+ distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
+ e -= (iBody.mass * jBody.mass) / distance;
+ }
+ }
+ return e;
+ }
+}
+
+
+final class Body {
+ static final double PI = 3.141592653589793;
+ static final double SOLAR_MASS = 4 * PI * PI;
+ static final double DAYS_PER_YEAR = 365.24;
+
+ public double x, y, z, vx, vy, vz, mass;
+
+ public Body(){}
+
+ static Body jupiter(){
+ Body p = new Body();
+ p.x = 4.84143144246472090e+00;
+ p.y = -1.16032004402742839e+00;
+ p.z = -1.03622044471123109e-01;
+ p.vx = 1.66007664274403694e-03 * DAYS_PER_YEAR;
+ p.vy = 7.69901118419740425e-03 * DAYS_PER_YEAR;
+ p.vz = -6.90460016972063023e-05 * DAYS_PER_YEAR;
+ p.mass = 9.54791938424326609e-04 * SOLAR_MASS;
+ return p;
+ }
+
+ static Body saturn(){
+ Body p = new Body();
+ p.x = 8.34336671824457987e+00;
+ p.y = 4.12479856412430479e+00;
+ p.z = -4.03523417114321381e-01;
+ p.vx = -2.76742510726862411e-03 * DAYS_PER_YEAR;
+ p.vy = 4.99852801234917238e-03 * DAYS_PER_YEAR;
+ p.vz = 2.30417297573763929e-05 * DAYS_PER_YEAR;
+ p.mass = 2.85885980666130812e-04 * SOLAR_MASS;
+ return p;
+ }
+
+ static Body uranus(){
+ Body p = new Body();
+ p.x = 1.28943695621391310e+01;
+ p.y = -1.51111514016986312e+01;
+ p.z = -2.23307578892655734e-01;
+ p.vx = 2.96460137564761618e-03 * DAYS_PER_YEAR;
+ p.vy = 2.37847173959480950e-03 * DAYS_PER_YEAR;
+ p.vz = -2.96589568540237556e-05 * DAYS_PER_YEAR;
+ p.mass = 4.36624404335156298e-05 * SOLAR_MASS;
+ return p;
+ }
+
+ static Body neptune(){
+ Body p = new Body();
+ p.x = 1.53796971148509165e+01;
+ p.y = -2.59193146099879641e+01;
+ p.z = 1.79258772950371181e-01;
+ p.vx = 2.68067772490389322e-03 * DAYS_PER_YEAR;
+ p.vy = 1.62824170038242295e-03 * DAYS_PER_YEAR;
+ p.vz = -9.51592254519715870e-05 * DAYS_PER_YEAR;
+ p.mass = 5.15138902046611451e-05 * SOLAR_MASS;
+ return p;
+ }
+
+ static Body sun(){
+ Body p = new Body();
+ p.mass = SOLAR_MASS;
+ return p;
+ }
+
+ Body offsetMomentum(double px, double py, double pz){
+ vx = -px / SOLAR_MASS;
+ vy = -py / SOLAR_MASS;
+ vz = -pz / SOLAR_MASS;
+ return this;
+ }
+}
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+public class nbody {
+ // CHECKSTYLE.ON: .*
+ private NBodySystem bodies;
+
+ public nbody() {
+ bodies = new NBodySystem();
+ }
+
+ private static final int PREDEFINED_N_STEPS = 1000;
+
+ public void solve() {
+ for (int i = 0; i < PREDEFINED_N_STEPS; ++i) {
+ bodies.advance(0.01);
+ }
+ }
+ @Benchmark
+ public void jmhTimeNBody() {
+ solve();
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/pidigits.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/pidigits.java
new file mode 100644
index 0000000..fffb7d1
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/pidigits.java
@@ -0,0 +1,156 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `pidigits/pidigits.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Isaac Gouy
+ */
+
+/*
+ * Description: Streaming arbitrary-precision arithmetic.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+import java.math.BigInteger;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class pidigits {
+ static final int L = 10;
+ private static final int PREDEFINED_N_DIGITS = 27;
+
+ public static void old_main() {
+ int n = PREDEFINED_N_DIGITS;
+ int j = 0;
+
+ PiDigitSpigot digits = new PiDigitSpigot();
+
+ while (n > 0){
+ if (n >= L){
+ for (int i=0; i<L; i++) digits.next();
+ j += L;
+ } else {
+ for (int i=0; i<n; i++) digits.next();
+ j += n;
+ }
+ n -= L;
+ }
+ }
+ // CHECKSTYLE.ON: .*
+ @Benchmark
+ public void jmhTimePidigits() {
+ old_main();
+ }
+}
+
+
+// CHECKSTYLE.OFF: .*
+class PiDigitSpigot {
+ Transformation z, x, inverse;
+
+ public PiDigitSpigot(){
+ z = new Transformation(1,0,0,1);
+ x = new Transformation(0,0,0,0);
+ inverse = new Transformation(0,0,0,0);
+ }
+
+ public int next(){
+ int y = digit();
+ if (isSafe(y)){
+ z = produce(y); return y;
+ } else {
+ z = consume( x.next() ); return next();
+ }
+ }
+
+ public int digit(){
+ return z.extract(3);
+ }
+
+ public boolean isSafe(int digit){
+ return digit == z.extract(4);
+ }
+
+ public Transformation produce(int i){
+ return ( inverse.qrst(10,-10*i,0,1) ).compose(z);
+ }
+
+ public Transformation consume(Transformation a){
+ return z.compose(a);
+ }
+}
+
+
+class Transformation {
+ BigInteger q, r, s, t;
+ int k;
+
+ public Transformation(int q, int r, int s, int t){
+ this.q = BigInteger.valueOf(q);
+ this.r = BigInteger.valueOf(r);
+ this.s = BigInteger.valueOf(s);
+ this.t = BigInteger.valueOf(t);
+ k = 0;
+ }
+
+ public Transformation(BigInteger q, BigInteger r, BigInteger s, BigInteger t){
+ this.q = q;
+ this.r = r;
+ this.s = s;
+ this.t = t;
+ k = 0;
+ }
+
+ public Transformation next(){
+ k++;
+ q = BigInteger.valueOf(k);
+ r = BigInteger.valueOf(4 * k + 2);
+ s = BigInteger.valueOf(0);
+ t = BigInteger.valueOf(2 * k + 1);
+ return this;
+ }
+
+ public int extract(int j){
+ BigInteger bigj = BigInteger.valueOf(j);
+ BigInteger numerator = (q.multiply(bigj)).add(r);
+ BigInteger denominator = (s.multiply(bigj)).add(t);
+ return ( numerator.divide(denominator) ).intValue();
+ }
+
+ public Transformation qrst(int q, int r, int s, int t){
+ this.q = BigInteger.valueOf(q);
+ this.r = BigInteger.valueOf(r);
+ this.s = BigInteger.valueOf(s);
+ this.t = BigInteger.valueOf(t);
+ k = 0;
+ return this;
+ }
+
+ public Transformation compose(Transformation a){
+ return new Transformation(
+ q.multiply(a.q)
+ ,(q.multiply(a.r)).add( (r.multiply(a.t)) )
+ ,(s.multiply(a.q)).add( (t.multiply(a.s)) )
+ ,(s.multiply(a.r)).add( (t.multiply(a.t)) )
+ );
+ }
+}
+// CHECKSTYLE.ON: .*
+
+
+
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/regexdna.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/regexdna.java
new file mode 100644
index 0000000..63a214c
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/regexdna.java
@@ -0,0 +1,1160 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `regexdna/regexdna.java-4.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ * contributed by Razii, idea taken from Elliott Hughes and Roger Millington
+ */
+
+/*
+ * Description: Match DNA 8-mers and substitute nucleotides for IUB codes.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+// CHECKSTYLE.OFF: .*
+import java.io.*;
+import java.util.regex.*;
+import java.util.*;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+public class regexdna {
+
+ private static final Map<String, String> replacements = new HashMap<String, String>();
+ private InputStream stream;
+ private char[] cbuf;
+ private Reader r;
+ private StringBuilder sb;
+ static String[] variants = { "agggtaaa|tttaccct" ,
+ "[cgt]gggtaaa|tttaccc[acg]",
+ "a[act]ggtaaa|tttacc[agt]t",
+ "ag[act]gtaaa|tttac[agt]ct",
+ "agg[act]taaa|ttta[agt]cct",
+ "aggg[acg]aaa|ttt[cgt]ccct",
+ "agggt[cgt]aa|tt[acg]accct",
+ "agggta[cgt]a|t[acg]taccct",
+ "agggtaa[cgt]|[acg]ttaccct"
+ };
+
+ public regexdna() {
+ stream = new ByteArrayInputStream(fastaStr.getBytes());
+ cbuf = new char[16384];
+ //TODO (jmh) Catch IOException in JMH instead of catched here.
+ // Because class regexdna in art-testing throws IOException not catched here.
+ try {
+ r = new InputStreamReader(stream, "ISO-8859-1");
+ // Move code block below from main loop to here to reduce noise.
+ stream.reset();
+ sb = new StringBuilder(5100000);
+ int charsRead;
+ while ((charsRead = r.read(cbuf)) != -1)
+ sb.append(cbuf, 0, charsRead);
+ // int initialLength = sb.length();
+ } catch (IOException e){
+ e.printStackTrace();
+ }
+ }
+
+ static {
+
+ replacements.put("W", "(a|t)");
+ replacements.put("Y", "(c|t)");
+ replacements.put("K", "(g|t)");
+ replacements.put("M", "(a|c)");
+ replacements.put("S", "(c|g)");
+ replacements.put("R", "(a|g)");
+ replacements.put("B", "(c|g|t)");
+ replacements.put("D", "(a|g|t)");
+ replacements.put("V", "(a|c|g)");
+ replacements.put("H", "(a|c|t)");
+ replacements.put("N", "(a|c|g|t)");
+ }
+
+ static abstract class Rewriter {
+ private Pattern pattern;
+ private Matcher matcher;
+
+ public Rewriter(String regularExpression) {
+
+ this.pattern = Pattern.compile(regularExpression);
+ }
+
+ public String group(int i) {
+ return matcher.group(i);
+ }
+
+ public abstract String replacement();
+
+ public String rewrite(CharSequence original) {
+ return rewrite(original, new StringBuffer(original.length())).toString();
+ }
+
+ public StringBuffer rewrite(CharSequence original, StringBuffer destination) {
+ this.matcher = pattern.matcher(original);
+ while (matcher.find()) {
+ matcher.appendReplacement(destination, "");
+ destination.append(replacement());
+ }
+ matcher.appendTail(destination);
+ return destination;
+ }
+ }
+
+ public static void main(String [] args) throws Exception {
+ regexdna rd = new regexdna();
+ for (int i = 0; i < 100; i++)
+ rd.old_main();
+ }
+
+ public int old_main() throws IOException {
+
+ String sequence = new Rewriter(">.*\n|\n") {
+
+ public String replacement() {
+ return "";
+ }
+ }.rewrite(sb);
+
+ // int codeLength = sequence.length();
+
+ int count = 0;
+ for (String variant : variants) {
+
+ Matcher m = Pattern.compile(variant).matcher(sequence);
+ while (m.find())
+ count++;
+ }
+
+ sequence = new Rewriter("[WYKMSRBDVHN]") {
+
+ public String replacement() {
+ return replacements.get(group(0));
+ }
+ }.rewrite(sequence);
+
+ return count;
+ }
+ // CHECKSTYLE.ON: .*
+
+ @Benchmark
+ public void jmhTimeRegexDna() throws IOException {
+ old_main();
+ }
+
+ private static final String fastaStr = ">ONE Homo sapiens alu\n"
+ + "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n"
+ + "TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n"
+ + "AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n"
+ + "GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n"
+ + "CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n"
+ + "GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n"
+ + "GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n"
+ + "TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n"
+ + "AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n"
+ + "GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n"
+ + "AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n"
+ + "AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n"
+ + "GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n"
+ + "CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n"
+ + "AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n"
+ + "TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n"
+ + "TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n"
+ + "GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n"
+ + "TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n"
+ + "CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n"
+ + "CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n"
+ + "TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n"
+ + "CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n"
+ + "AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n"
+ + "GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n"
+ + "TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n"
+ + "TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n"
+ + "GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n"
+ + "GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n"
+ + "ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n"
+ + "TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n"
+ + "CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n"
+ + "CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n"
+ + "GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n"
+ + "CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n"
+ + "GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n"
+ + "GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n"
+ + "GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n"
+ + "GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n"
+ + "GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n"
+ + "AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n"
+ + "CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n"
+ + "GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n"
+ + "AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n"
+ + "GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n"
+ + "ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n"
+ + "GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n"
+ + "GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n"
+ + "GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n"
+ + "TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n"
+ + "AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n"
+ + "GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n"
+ + "CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n"
+ + "TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n"
+ + "ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n"
+ + "GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n"
+ + "ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n"
+ + "CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n"
+ + "CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n"
+ + "ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n"
+ + "CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n"
+ + "AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n"
+ + "CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n"
+ + "AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n"
+ + "CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n"
+ + "CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n"
+ + "CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n"
+ + "CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n"
+ + "ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n"
+ + "AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n"
+ + "TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n"
+ + "ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n"
+ + "CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n"
+ + "AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n"
+ + "AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n"
+ + "TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n"
+ + "CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n"
+ + "TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n"
+ + "CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n"
+ + "GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n"
+ + "GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n"
+ + "CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n"
+ + "GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n"
+ + "GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n"
+ + "AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n"
+ + "GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n"
+ + "CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n"
+ + "GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n"
+ + "TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n"
+ + "CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n"
+ + "ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n"
+ + "CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n"
+ + "AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n"
+ + "CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n"
+ + "CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n"
+ + "ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n"
+ + "GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n"
+ + "GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n"
+ + "GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n"
+ + "TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n"
+ + "CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n"
+ + "GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n"
+ + "CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n"
+ + "GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n"
+ + "CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n"
+ + "CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n"
+ + "CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n"
+ + "ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n"
+ + "CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n"
+ + "GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n"
+ + "AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n"
+ + "ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n"
+ + "TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n"
+ + "GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n"
+ + "GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n"
+ + "TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n"
+ + "AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n"
+ + "ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n"
+ + "GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n"
+ + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n"
+ + "TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n"
+ + "CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n"
+ + "GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n"
+ + "CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n"
+ + "GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n"
+ + "TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n"
+ + "ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n"
+ + "TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n"
+ + "GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n"
+ + "TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n"
+ + "GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n"
+ + "GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n"
+ + "ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n"
+ + "GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n"
+ + "GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n"
+ + "CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n"
+ + "ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n"
+ + "AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n"
+ + "TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n"
+ + "CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n"
+ + "TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n"
+ + "CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n"
+ + "GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n"
+ + "GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n"
+ + "CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n"
+ + "TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n"
+ + "CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n"
+ + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n"
+ + "AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n"
+ + "AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n"
+ + "GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n"
+ + "TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n"
+ + "AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n"
+ + "AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n"
+ + "CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n"
+ + "TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n"
+ + "GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n"
+ + "CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n"
+ + "CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n"
+ + "GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n"
+ + "AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n"
+ + "GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n"
+ + "TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n"
+ + "CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n"
+ + "GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n"
+ + "CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n"
+ + "AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n"
+ + "ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n"
+ + "ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n"
+ + "AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n"
+ + "GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n"
+ + "GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n"
+ + "CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n"
+ + "GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n"
+ + "CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n"
+ + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n"
+ + "GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n"
+ + "GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n"
+ + "CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n"
+ + "AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n"
+ + "CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n"
+ + "CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n"
+ + "GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n"
+ + "GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n"
+ + "TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n"
+ + "ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n"
+ + "CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n"
+ + "ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n"
+ + "GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n"
+ + "TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n"
+ + "GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n"
+ + "GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n"
+ + "GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n"
+ + "GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n"
+ + "TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n"
+ + "TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n"
+ + "TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n"
+ + "GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n"
+ + "CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n"
+ + "TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n"
+ + ">TWO IUB ambiguity codes\n"
+ + "cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n"
+ + "tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n"
+ + "NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n"
+ + "cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n"
+ + "gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n"
+ + "HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n"
+ + "tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n"
+ + "tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n"
+ + "acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n"
+ + "tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n"
+ + "gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n"
+ + "accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n"
+ + "RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n"
+ + "tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n"
+ + "cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n"
+ + "ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n"
+ + "actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n"
+ + "YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n"
+ + "KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n"
+ + "aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n"
+ + "aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n"
+ + "gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n"
+ + "tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n"
+ + "tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n"
+ + "ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n"
+ + "ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n"
+ + "BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n"
+ + "aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n"
+ + "tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n"
+ + "cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n"
+ + "aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n"
+ + "tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n"
+ + "aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n"
+ + "gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n"
+ + "ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n"
+ + "taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n"
+ + "ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n"
+ + "gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n"
+ + "gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n"
+ + "tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n"
+ + "tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n"
+ + "taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n"
+ + "cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n"
+ + "aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n"
+ + "cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n"
+ + "ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n"
+ + "attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n"
+ + "ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n"
+ + "attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n"
+ + "tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n"
+ + "aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n"
+ + "cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n"
+ + "gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n"
+ + "attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n"
+ + "BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n"
+ + "DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n"
+ + "tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n"
+ + "tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n"
+ + "tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n"
+ + "taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n"
+ + "aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n"
+ + "DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n"
+ + "VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n"
+ + "agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n"
+ + "gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n"
+ + "tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n"
+ + "catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n"
+ + "tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n"
+ + "aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n"
+ + "aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n"
+ + "acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n"
+ + "tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n"
+ + "aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n"
+ + "acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n"
+ + "RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n"
+ + "RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n"
+ + "tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n"
+ + "gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n"
+ + "YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n"
+ + "ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n"
+ + "ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n"
+ + "gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n"
+ + "KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n"
+ + "aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n"
+ + "gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n"
+ + "taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n"
+ + "VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n"
+ + "NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n"
+ + "MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n"
+ + "cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n"
+ + "ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n"
+ + "tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n"
+ + "aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n"
+ + "actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n"
+ + "tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n"
+ + "gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n"
+ + "BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n"
+ + "aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n"
+ + "aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n"
+ + "YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n"
+ + "aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n"
+ + "cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n"
+ + "tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n"
+ + "tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n"
+ + "MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n"
+ + "taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n"
+ + "tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n"
+ + "RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n"
+ + "agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n"
+ + "NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n"
+ + "gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n"
+ + "aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n"
+ + "ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n"
+ + "cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n"
+ + "tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n"
+ + "RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n"
+ + "tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n"
+ + "gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n"
+ + "tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n"
+ + "ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n"
+ + "tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n"
+ + "ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n"
+ + "BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n"
+ + "gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n"
+ + "acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n"
+ + "gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n"
+ + "taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n"
+ + "acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n"
+ + "tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n"
+ + "catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n"
+ + "tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n"
+ + "atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n"
+ + "ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n"
+ + "ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n"
+ + "cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n"
+ + "SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n"
+ + "VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n"
+ + "BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n"
+ + "NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n"
+ + "tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n"
+ + "ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n"
+ + "cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n"
+ + "VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n"
+ + "atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n"
+ + "aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n"
+ + "tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n"
+ + "RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n"
+ + "gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n"
+ + "tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n"
+ + "attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n"
+ + "atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n"
+ + "cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n"
+ + "NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n"
+ + "ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n"
+ + "cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n"
+ + "aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n"
+ + "agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n"
+ + "tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n"
+ + "ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n"
+ + "ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n"
+ + "tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n"
+ + "taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n"
+ + "tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n"
+ + "YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n"
+ + "ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n"
+ + "tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n"
+ + "ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n"
+ + "attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n"
+ + "atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n"
+ + "YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n"
+ + "gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n"
+ + "MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n"
+ + "tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n"
+ + "ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n"
+ + "aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n"
+ + "BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n"
+ + "tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n"
+ + "StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n"
+ + "cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n"
+ + "atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n"
+ + "atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n"
+ + "ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n"
+ + "gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n"
+ + "tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n"
+ + "BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n"
+ + "agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n"
+ + "HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n"
+ + "tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n"
+ + "aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n"
+ + "catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n"
+ + "aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n"
+ + "tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n"
+ + "cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n"
+ + "DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n"
+ + "gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n"
+ + "tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n"
+ + "atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n"
+ + "KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n"
+ + "tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n"
+ + "tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n"
+ + "taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n"
+ + "NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n"
+ + "HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n"
+ + "ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n"
+ + "tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n"
+ + "cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n"
+ + "ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n"
+ + "HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n"
+ + "gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n"
+ + "BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n"
+ + "gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n"
+ + "KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n"
+ + "cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n"
+ + "tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n"
+ + "taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n"
+ + "gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n"
+ + "aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n"
+ + "acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n"
+ + "RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n"
+ + "attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n"
+ + "KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n"
+ + "KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n"
+ + "gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n"
+ + "aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n"
+ + "aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n"
+ + "ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n"
+ + "tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n"
+ + "aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n"
+ + "tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n"
+ + "MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n"
+ + "cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n"
+ + "caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n"
+ + "ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n"
+ + "acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n"
+ + "tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n"
+ + "gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n"
+ + "atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n"
+ + "aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n"
+ + "NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n"
+ + "taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n"
+ + "aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n"
+ + "ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n"
+ + "DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n"
+ + "tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n"
+ + "aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n"
+ + "ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n"
+ + "ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n"
+ + "RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n"
+ + "aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n"
+ + "aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n"
+ + "aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n"
+ + "tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n"
+ + "atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n"
+ + "BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n"
+ + "gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n"
+ + "cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n"
+ + "RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n"
+ + "taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n"
+ + "aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n"
+ + "gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n"
+ + "gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n"
+ + "aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n"
+ + "gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n"
+ + "ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n"
+ + "MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n"
+ + "SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n"
+ + "aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n"
+ + "VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n"
+ + "HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n"
+ + "agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n"
+ + "gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n"
+ + "agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n"
+ + "tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n"
+ + "gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n"
+ + "VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n"
+ + "tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n"
+ + "MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n"
+ + "actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n"
+ + "WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n"
+ + "tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n"
+ + "KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n"
+ + "BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n"
+ + "attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n"
+ + "VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n"
+ + "aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n"
+ + "tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n"
+ + "tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n"
+ + "tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n"
+ + "VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n"
+ + "tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n"
+ + "ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n"
+ + "tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n"
+ + "WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n"
+ + "tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n"
+ + "tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n"
+ + "MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n"
+ + "tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n"
+ + "atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n"
+ + "aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n"
+ + "aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n"
+ + ">THREE Homo sapiens frequency\n"
+ + "aagtccgatgagtttcaatcatgactgcgaggagatccatgcggtgtacctaaacctaca\n"
+ + "tcgtatgtatttgctgacgttcattcttgatacataaagatccgatatcggtccactttg\n"
+ + "tttaccaaaagccctaccttcgtaacgatggaaatgtgaatgagagtgaaatacacgatg\n"
+ + "gggatattgccggtgagtacaagttagaccacacattagaactgacctatattcgtcatc\n"
+ + "atagagatggagtatgaattgattctgcgaagtacactggctttacgagtatctagacgc\n"
+ + "cgcggtatatctcccgtcaatactatgaaggtatatatatagaggctgaaaattcatgtt\n"
+ + "caatcctctttctaagagtgagtgggagccccttctgttgtcggagtaaaaaggcattat\n"
+ + "tcctcaaattgtcagaagcaaagtatacgtgatgtttgcttagaacaaaagagttacctt\n"
+ + "agggtaggtaaatctcgattcaccgagagaagtgattttggcggtgtgcgattaattctt\n"
+ + "ttgatgacagatctcattattttatatagctccctctttgtatttagagtttgcgtaggt\n"
+ + "aacctggcaaaaccatatcccggggggagagtgcgctgaacattttatacgatgtgatta\n"
+ + "ctcaaaggataaggttcgaggcctctatactcatggaactatcttataattataatggat\n"
+ + "cgtggctcattccacctatccaaacttctttgtgatctgatgctacgagtgtgaacaaac\n"
+ + "gtacatcttctaaggaatttgggacgtttcatagctcgcatttcattcctgaaaacttaa\n"
+ + "atatttttaaaaattgattctactgcgaggaactaaggtgtagacaagcccttagtaacc\n"
+ + "ggtggatgtcgcttcagttttatagcaaacattattcaatttcagtcttgactgaaatta\n"
+ + "gtttgttagtgttagaggtccatatgtcacatgcatatggtctagatgccattgtacagt\n"
+ + "aataccttagattagtattagcggcatgcgtacttggatttcacttgtaagaatgagctt\n"
+ + "aggacggtcgcctgtagggctgcaaataggaatacttacaatttttgatgacttgttagc\n"
+ + "atatcgctatcacccataaaaaacctgatacttgatgagcgggtgattgagactatgtac\n"
+ + "tgatataattcaatagctccaatagatgaaacagctatgcgcctatttatgtcaaataat\n"
+ + "cgatgtgatacaagcttagagctgaacgagcgcgagtggaattagcggtgatctctatcc\n"
+ + "taaaaagccacgaaatcgatcccagaagctaatacccgaggtgtcaagcttgagttcagt\n"
+ + "taaatttgcatctcatgccccacgaagaatgggtagagagtttgaaggtgcttctggatt\n"
+ + "ttcctaagtacgtggtaaaaatttgatgtaaatgaacacctcctaatggttgtgttaacc\n"
+ + "acaaacccctgggtgaatctgattagccaacccagtgatctgatttcagttgtcaaatct\n"
+ + "cttttttataactaccttttgtttccataatttaaccggatctcataatgaacaaacggg\n"
+ + "tagaataatggtagcacatagcgagcttgtctattcagaaatatggcctactcagaatgt\n"
+ + "attctccaaatcagtgttatgcgaaacgtaattttacgtgtaataatgatgatttcttat\n"
+ + "cggttccttgtactacaatactcttgcccaacaaatactaagcataacagcaaaattcga\n"
+ + "atccccctccttttaataaatggtttttcaatatagccgattcgtattcgttagtctttc\n"
+ + "accaactattaacctggcatctaattaataaaatcaccaaaggactctataatatgacag\n"
+ + "tcacttcggcctcttttaagacagttgattattgcaggtccgcaattgatggtgacatgc\n"
+ + "acaattagttagaatccgactatggagacaattaacaattgtagtgcccatttggtccag\n"
+ + "ttgacttcaaccacgagttataaaggtattttaatttatagtcgatagtaccaacaacaa\n"
+ + "gcacaatcataattatgttagaaaacccagggggtaatgctctaaatccagctttaaggc\n"
+ + "cagagtgcactatgaaatcgccattgatcattgtgtcattcgctgaacttggtgtctagg\n"
+ + "aggtgccgagtgagaatatcagataccttatgaagcaacgattatatctggactagatca\n"
+ + "tgatgatcggaataaaacattgaaataagtccttatcaaggagcataaacattttattta\n"
+ + "atttatacttcgtaaataaattcagaattttttttcaagacattaatctgagtaaatgac\n"
+ + "ggctagaaagggttcctactcgaatcgtagcctacgcatgtgggcagtaacctggcttgc\n"
+ + "gtttttactgaaacaaaggttcaccggaaagaaggctgccacttttagcttcttgacgat\n"
+ + "ctttagcgtcatatttttagattagtcgaaaaacggaaaacaaacttaacgaagctggtt\n"
+ + "gcacggggtaccgagaaaccaaagagcaggacaactccttgatcgggaagaactgaaata\n"
+ + "gacagctgtcattttcattggtcaacttatcaatataacgaccaccgtagtgacgcttgc\n"
+ + "atgaaaatactgaggatgtaaactatagccagtcaggcccgcgtgttgactaattgatga\n"
+ + "agcaaacaaaatagccggtattcgttaaaaggaacgggttgccagctacagatatactct\n"
+ + "aggtatatcccaaacaagagacgtcctttggctgttgtaatcggtcataatacttgtcac\n"
+ + "ataaacaagatcgctgaattaaacattaaacagttagtgatacacaatcgtggttggggc\n"
+ + "tgggatgtgcaataaaaagtcatctatcgtctatcacagagcgacgtaaatttagacaaa\n"
+ + "cattattatttcttgacaatggaatcgataagcgttcctctaacttggtatatatatctc\n"
+ + "gaccccgggattccagccattcttgtatgaagatttaaccatttaactatgcatagttga\n"
+ + "atggtaaggaaaatgatattgactgcaacagattttggatgcaaaaatatttgtgaatta\n"
+ + "ttggttatatactggttgtatagcacaatcattaggtcctagaaggcatactcaacctca\n"
+ + "gcgagagagctagcatgcataattgtaccgcccatattaatattcctgaaatgatttctt\n"
+ + "acattacgcccaatttcagtcatcgaacacccccatcaatttacccgatagagaacgtga\n"
+ + "tcatacgcaataccctatgcgaacgtccactctatagcgtctgtatacaatgattattcg\n"
+ + "ttccatttacaacgttaagtaatttaaacttacataaggacaaggaaatccgcgaacctc\n"
+ + "ctggaatgtatgagttatttatgcagttaacttcgtctcgaccggaactaaaggcgtcgt\n"
+ + "acgaatgaaaggccacttttagaagagacctttgtatccattgtggagaatatcataaat\n"
+ + "tcaagatggggtgtcatgctattcggtcctaaacattcttaatggctgttctattgttag\n"
+ + "tctgatttaaaatggaaccatagcacgaatagttagatagggctcatacccctgtaacga\n"
+ + "tctacaaatccttccccgggtgtgtgcgttagcgacggaaagttttacggtttgtgatca\n"
+ + "aagaacactcacacgtcagattattacactgatacgaattatttcagtcgacagtaattg\n"
+ + "aatagaaacttattaacgccagcacctgacacggtaagtaaggcaggtctgaactgtttg\n"
+ + "actgtaaaaaaatggtaatatttttaaaaatcttgatttctatatcaaatgatgtgtagt\n"
+ + "tttttctctgttattaaaatcccagtgcgcgaaatttagatcgttacgactcacgtacaa\n"
+ + "gatcacacatcacacgcgttagcgaaagcggaatggctaatacagccctacgcaacgtag\n"
+ + "tgggatcaacatatggacgaatttatgctcaatgagccaacctcccccgcattgcggttc\n"
+ + "attttaaggcctgggtaacatctatcgtttagataatcaaaggaatccgactatgcaatt\n"
+ + "gtctgacttcatccgctctcaagtccaatgcaggcgctacgtgtttctttaatcaatacc\n"
+ + "atattgaaatcgtaatacgataattgttgctattgactacaggttatgaaaaaacttact\n"
+ + "ttgcgggtacatgcatatttttgtaccacattattacgcgatatctctcagtgtactcta\n"
+ + "aattaaaccctcttcgaacattttagttcctattcgtaaacacgtgctacgcggcaattt\n"
+ + "gccggtcgtagaatggacaactccagttcaactgcatgtaactcatagctcgcgttagta\n"
+ + "taaattgactagtagccatgggacaaagtaactagtcagcggaaaagatccctttaaaga\n"
+ + "tatatgcaggttgcaagcataaagctcattgctcgaggtgcaccgtggtattccaaaagc\n"
+ + "gtctctatcgtatcttctaattttgggccgtgagaatcgaaactactctgatttgctgca\n"
+ + "cacgttaggtaatatcgcccattttcccgtataagctccgtacttatacgaactacacga\n"
+ + "ccttttaagcattagccgctcatatcgtgattcgtgtacagatgagtctattaaaattac\n"
+ + "agacatactccatatctcgctccttgaactttgaataatgcgctaacttgtactatgaat\n"
+ + "aggcagaacccaactttcccgtttgcgtcaagcggggaaacgatacatgttgtcagattt\n"
+ + "atgattatctagttttagatcacgtttaccgataatcggctgtggtctgagcagtcctac\n"
+ + "actgagtatttacttcagcttcatatcggtccgaaaaaaggttgtgaccgaatgtcaaaa\n"
+ + "tacggagtacgatgggcatcttttttcgagtcgcggttgcagggcagcaaaaggcttaaa\n"
+ + "ccatttttacgatttttactatagcggtcatgaagtgcgaaactgcttgcaaattttcta\n"
+ + "cacacattgtggctcttgtccttgaagcttatggcgaaaatttgaaacatagtataccag\n"
+ + "ggaaagcgcgaattatttggtgactaatagtccgtgggtttgagccatatacctaacgcc\n"
+ + "ataaactacgtggtgctttagatgcaatctaaacagaacagaaagcgtagcgctcatcag\n"
+ + "cacagactaactttttcagtttgagtcgccggagggacttcgagacaagaacgcgtcaag\n"
+ + "tcgcttgcgcggcacggattcgattgggcggctcaatcttgcctaatttctactattgtc\n"
+ + "agctgtacgactgtactaagtgtatagccccaaataaaagaagtatcgatgcgtctttat\n"
+ + "gaccaaaggtcttataattgaagcgcacttccgttcatcaaattaaatcctggcttaccc\n"
+ + "gattctccggaagtctgacctagagattgacgacggccgcgtattattgagacctcttca\n"
+ + "ggattaatcaataacgaagtagttgatctgtttggcgacgtaccttaagccgactccgct\n"
+ + "acacgagtttctactaaaccaatgtagccttatgcttagatgaataccgtcctaattaga\n"
+ + "tattccggcataacagcagtaaattatctgttcaatggacgaacattgaattgttagtat\n"
+ + "tctacacaagtcaggcctcgtaaatattaggtaaggccgtgggataacctacgtgatatg\n"
+ + "cttgagcttgcgttgcaagctctcgttaatcattaatttaggtgcgtgagggttaaacac\n"
+ + "cagcatattctatatgctagacgtcttccttaaaggatcgtagtattataattaataata\n"
+ + "agaaatatggttgacgtctagtcagcgggcatacgctgctctatatactggcattattca\n"
+ + "aaacttgacggtaaaaaaacgaattttaaggcgctcacgtcgaatgagccgaactcatgg\n"
+ + "gaaccaaaatgtcacagaaaacacctctttattgccaagcatgcaataaaaaaaatgtta\n"
+ + "atagtacgtttacgacattttattttataataaagagaaactattacacctattgatatg\n"
+ + "ataggacgtaaattaacgagtagcctgcatagaggcaaatgaggtttctacatggtatag\n"
+ + "acctgatgctgaaacatcgatgagttttggtcccctcgctcgttgaaatctagtcattta\n"
+ + "ctactgtctttcgagctattataccacttcactatgtggtgtttctttgctatgtatggg\n"
+ + "gctagtcaaacatgatgactatagctacaactcagagagcgggcgtgttaagagtatctc\n"
+ + "atgctagaactgcacgacgaacttgatacaaagtaacaacatttacgattccacaaggtg\n"
+ + "actttgaagaaacatagtttaattctctgcttcgatcatttctataaaccggtaccatcg\n"
+ + "cagcggatagatgcataacatttctactactccaggcatcttaaaacacacgtagtactt\n"
+ + "cactagattaagacacgataagtgtataacttggcagtgggaagcaaggagattggcgaa\n"
+ + "ctcctggcatctgttacgttttgttcaggctcggttgttgataatgtccgactcctgcca\n"
+ + "tattgaagactcgctcgagggagatcgggattcgttgattataagtacacgtgttccgta\n"
+ + "atactatgaggcagtgattcaaaatggcacttctgacttacatgactaggtattattacc\n"
+ + "acggaagcgttaaaggcacactcttatggacttaagattgcaagtgccttcttctagcct\n"
+ + "gaattcgcgggttcaacacaaactctctttagacatccgttgcctaaaggctgagacgta\n"
+ + "ggggcaaccctttaactatgtactaaaaaactagttggtaatttaacaacgtgtccaatc\n"
+ + "aagacgatgcaccaacgcggtgcgaaaatcgggttaagcaaacacaaataggaattgtga\n"
+ + "taaaccccaccttgagaggtcgcaagaccaacctcgggaacaacggctctaagagaataa\n"
+ + "cctaaatccggatgagtagactgtgtaactctctaaagggaagtgaaaaaaagctaagca\n"
+ + "tacatttaggtctcctgcattgcattcaattgaatcgtttgtattatgagctgtacagta\n"
+ + "gctatatcagctatagttatcccagaggaacaggtaaactagctctgagcgtgaaatccg\n"
+ + "gatattagaacccctagatgggattgattctagctaatacaggcttatctggttttacag\n"
+ + "ttatctagatgattggtaaggtgaaacgcttggtgccttccaccacttaaacaaaagtat\n"
+ + "tgcccgggaagctattttctaggtattataaagtcgagcattaatatcaatttgacagta\n"
+ + "aaggtctttcaccagcttcatatgccatagggcccatactcgatttaaattgaacggttt\n"
+ + "aacgagtattggaactctcacttataactgagtagctatacgaaaaatctggtccatttc\n"
+ + "cagaaatttattatcgatttgctgcttagtacccaggaagtgataacccttgaaggcaca\n"
+ + "acactgtaataagttttcctgtcacatctgtaatattcggtcactacgcattcacgacta\n"
+ + "aagataattactatactaattaaaagttcaatgttagggccgaatcatagtagaaattct\n"
+ + "cgtctagcctaatcggacttacctatgggctgtgaggatttatcagtatgtggacaaaaa\n"
+ + "tgctagagataggtatagttaaagtcaccatggtacatctatgtgaggaagtttgtagtt\n"
+ + "cgcttctttagtccgggcgtttgggatgacaactactatacgtagagccgtactcaggat\n"
+ + "tagatagtgtgaaagagtcaaataaaagggttaatattaatttaacgttgcaaatgtgtt\n"
+ + "taggccaaacattaaccgttgtagggatattctaatacaggccttcaccgaaccctaatg\n"
+ + "ataatctgtcttaataacattaaatgattgtctccgctacgagctcttagggcctcattt\n"
+ + "taaatgactaatgtccaaagaagagactttcccaatttcaatctgtcacgtatagacggc\n"
+ + "accttagtgagtcatatcattaagatagaagattatcaggagggaagtttctattatcaa\n"
+ + "ccgttacgcaaccataaacttttaaatctcataatggcattgagatcaagagctttcatg\n"
+ + "atggtaaagttcgtatgtgatgctggggagctagatatcggtataccacttcggttgtgg\n"
+ + "taagcccgagtgggccgttagtaatattaatagacgattatccgacaatgcattcgctga\n"
+ + "aataatcttacttaggagaaattaatgctatgagccaaaactatttatgtctgtcacatt\n"
+ + "attgactaaagtatctatcgacaaaactgatgtccataagttgtagcagatagtcggtgt\n"
+ + "atggtgtcaccaatgaaaacctcgagcgaaaaatgaattatagttatccaatttgagtaa\n"
+ + "attgcctattatacagataggcttgtttagtcagataaggttccgcttgaggtgctctaa\n"
+ + "cttagcgagagttagaaagcctagtgagaggcattttggtgccaaactccggctcgcatg\n"
+ + "agtaggccagagagtcactttctttcgtcgaagaagttggtgaacagccttttgattagt\n"
+ + "tgtttgtcttgtggctatgtgctactatataagttagaacgcaaactaatctaatcagca\n"
+ + "aagtaaaataggaccttgaacgagacggggtacgccgttgaggctcgagatagtagataa\n"
+ + "actagaggaatgtagataaaacattagctagggggtttagttactggattacataggaag\n"
+ + "tgcaccatcacggtgtgggggttcgtacgtaaagtcgcatcaatattgtcagtggactta\n"
+ + "acaagttcgtgcataatgaaatcctatacggactttgcatatctctaccgactcatctgg\n"
+ + "tcgtctatgcgggtaattgtattgctccaagtggatgactattttggcgtcccagcacat\n"
+ + "agtaaatgtaaatccttataatagcataagcaattattagactgcgtgaagtcttagtag\n"
+ + "ttctcaagctttacgttgtatgtaaataactcacgtaatcagccgtccccaaatcaccat\n"
+ + "tgaggtcattgaatgtacggagcactattatcaatgcggtatgcgattttctgagcgatt\n"
+ + "attgttaaagacttagcgttgagccccggaacacttgattacagattctttaaggagtta\n"
+ + "tccaaatatcattttaaataatagtagtatcgtgctttggacaataaaaaaagacccgtt\n"
+ + "ctcttatgttgttttgcgacgtacttctctgatatatacttcaactatgaagattctatt\n"
+ + "catcgataacccaggtatatttatatgcccgttcactgcgcagggcaaattatctacgga\n"
+ + "caataatgacgtagttggacccggtaagaactaacgcttaatatgattaaggatgtatgc\n"
+ + "cagtattatcttattatgtcagagtagaagtttctctgagattttccgtcgttgtggtac\n"
+ + "accggatttggctctctttttagaactgagaactcggagtgtgtagtcttgtttccttca\n"
+ + "atttatcaatatgcttttataccgccctcatcaactataacaggacgacaagttccgtct\n"
+ + "tgctccatcatatactaccgatacaccaatcgtatcaagtttagtatacttgctttctct\n"
+ + "cttctacagcttactcgcttgtccgagaagcggttggtgctcataaagttagtagtaaat\n"
+ + "gtacaactagtagccagtccttacctgtttttacgactactacggacaccatgagataca\n"
+ + "gaagttagtgctacaattataccattacatgctcaatatcgttgtcggccataagatcga\n"
+ + "agagtgcatcacgcgtgtgaatacgtaaaatctaccatcccgtcaatgcacaaaaacaca\n"
+ + "ctccccttgttgactaacatcttttacaagaggctaaatcattgtccaggatcgaatacc\n"
+ + "ttgtgtacaatcgtcacccatcggaagaataccacttttccgatgtagtatgatttacaa\n"
+ + "aaaacatctatgtgagtaggccaattgtagtagaatatattcatttgaccgtcattagcc\n"
+ + "ttcttcttaggttgtgtacggatagtaggtacataaaccgtcgtgtggcatacgctgcga\n"
+ + "tttcatacagctgccaacaccttttttaccaggctagagtcagaaaagttggagccatgt\n"
+ + "taaatagttaccatcataaaccactgttgtctactagtctgatcagctttcatgcctgtg\n"
+ + "caagcaatatggattctcacgtaatggtaacaactgttgcgttacttaggctggttaatt\n"
+ + "tgtcagagtaataaatacatgtcttgttgtgtttcctaatcctcggaaagtacacaagcc\n"
+ + "taggaataggaaaagtaaagctcttttattctgatagtgactaactcaggatctaaatac\n"
+ + "gcgattatactaaccttcaccaaagctcaaaaatcatctgctggtgaccagttatagaca\n"
+ + "gggtaattcaatatttaatgtctcccttaacatttcaccagcatggattgaagatagtat\n"
+ + "aaagttttacatggcagtcattgtgtcacggttctatacaaattctgatagttagacggt\n"
+ + "atttgaaatgtgcttctagcatggtatcttacacaactgaatgaacgactggagccgttc\n"
+ + "gtatactatttgcgagcctcgagaccccgtttcctaatgttaacgaatatagtataatat\n"
+ + "aaattgtgatatgaataacacaagtaactacagtttggacaattaattgttctaaactaa\n"
+ + "aaatcattcacttcagatggcatagagttatggctactacacatataaagcggtatgtga\n"
+ + "aacacccgttttagccggaaaccctctactgctcgggacaatgaatgatttccaaaatat\n"
+ + "ggatgtgcagaattgttagtgtgactcaggtccaaatagacactttagtttcgtcaagtc\n"
+ + "gttgcaaagtttaaaaccatcgcagcattctttatttggtctacattgagaaatgaaaaa\n"
+ + "acgtgacagaaagtctagaagaactgtgaataatgtctattactgattaactagtaagac\n"
+ + "attagtgcatctggtccactgaagcacccgcttggcgttaggcaatctctgtgaactgtc\n"
+ + "gtggctgttccggtaatgtacgaaagcaagcctataggttgatcgagtcgcttcattaag\n"
+ + "gtcaatttcacaatatccgatcacattgtgctaggttcgtcctttaccttgcttagtgct\n"
+ + "gcatgtacggggtgtcatgacttgttatcggcagactctttatcccaagaatggataata\n"
+ + "tgtacatggaaagtgtccataattaagtcccttcactgtaaagaatgactgccacgtgat\n"
+ + "ccatgaggtctacagaaaccgacttacttgctttttgatcaacttaattatggattcata\n"
+ + "aagttcagatatcggtacaattggtgtacaatatgaaattaatgaggaaacatggaaatc\n"
+ + "tgaatgacagtgatagaaaagatccccatttgcccggtcagttcatgttacaccactcat\n"
+ + "tagtactgtaagtgtttcgtcagcattgagatccacgatcatgtgtttatgccttcgaaa\n"
+ + "ctggatgtacgacgatcgagacgaagaggtatatataacctaaatactaggtacgttgtt\n"
+ + "agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n"
+ + "cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n"
+ + "tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n"
+ + "tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n"
+ + "gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n"
+ + "tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n"
+ + "tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n"
+ + "atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n"
+ + "cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n"
+ + "ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n"
+ + "ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n"
+ + "atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n"
+ + "gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n"
+ + "tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n"
+ + "gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n"
+ + "atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n"
+ + "tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n"
+ + "ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n"
+ + "tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n"
+ + "aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n"
+ + "gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n"
+ + "ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n"
+ + "agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n"
+ + "agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n"
+ + "acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n"
+ + "cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n"
+ + "cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n"
+ + "cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n"
+ + "aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n"
+ + "tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n"
+ + "atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n"
+ + "cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n"
+ + "tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n"
+ + "catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n"
+ + "tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n"
+ + "caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n"
+ + "tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n"
+ + "aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n"
+ + "aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n"
+ + "ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n"
+ + "gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n"
+ + "ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n"
+ + "cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n"
+ + "gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n"
+ + "ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n"
+ + "cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n"
+ + "taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n"
+ + "gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n"
+ + "taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n"
+ + "ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n"
+ + "aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n"
+ + "gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n"
+ + "acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n"
+ + "ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n"
+ + "tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n"
+ + "tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n"
+ + "tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n"
+ + "ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n"
+ + "aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n"
+ + "tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n"
+ + "gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n"
+ + "gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n"
+ + "cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n"
+ + "actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n"
+ + "tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n"
+ + "ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n"
+ + "ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n"
+ + "agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n"
+ + "gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n"
+ + "tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n"
+ + "atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n"
+ + "cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n"
+ + "tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n"
+ + "gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n"
+ + "gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n"
+ + "aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n"
+ + "gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n"
+ + "cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n"
+ + "taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n"
+ + "tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n"
+ + "ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n"
+ + "aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n"
+ + "gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n"
+ + "aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n"
+ + "tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n"
+ + "tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n"
+ + "aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n"
+ + "ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n"
+ + "ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n"
+ + "caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n"
+ + "gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n"
+ + "cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n"
+ + "ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n"
+ + "tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n"
+ + "atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n"
+ + "ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n"
+ + "acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n"
+ + "taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n"
+ + "ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n"
+ + "aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n"
+ + "cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n"
+ + "tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n"
+ + "gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n"
+ + "aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n"
+ + "cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n"
+ + "cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n"
+ + "gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n"
+ + "cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n"
+ + "gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n"
+ + "agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n"
+ + "aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n"
+ + "aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n"
+ + "cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n"
+ + "agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n"
+ + "cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n"
+ + "agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n"
+ + "gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n"
+ + "aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n"
+ + "agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n"
+ + "cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n"
+ + "agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n"
+ + "ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n"
+ + "tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n"
+ + "gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n"
+ + "gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n"
+ + "ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n"
+ + "gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n"
+ + "atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n"
+ + "tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n"
+ + "ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n"
+ + "tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n"
+ + "cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n"
+ + "ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n"
+ + "aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n"
+ + "gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n"
+ + "ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n"
+ + "atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n"
+ + "aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n"
+ + "gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n"
+ + "atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n"
+ + "aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n"
+ + "tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n"
+ + "ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n"
+ + "gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n"
+ + "cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n"
+ + "ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n"
+ + "ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n"
+ + "ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n"
+ + "cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n"
+ + "tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n"
+ + "tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n"
+ + "cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n"
+ + "gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n"
+ + "ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n"
+ + "ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n"
+ + "tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n"
+ + "agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n"
+ + "ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n"
+ + "cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n"
+ + "agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n"
+ + "tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n"
+ + "gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n"
+ + "ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n"
+ + "ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n"
+ + "agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n"
+ + "attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n"
+ + "ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n"
+ + "agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n"
+ + "aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n"
+ + "gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n"
+ + "gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n"
+ + "ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n"
+ + "gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n"
+ + "ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n"
+ + "taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n"
+ + "aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n"
+ + "tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n"
+ + "ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n"
+ + "agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n"
+ + "ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n"
+ + "agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n"
+ + "gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n"
+ + "tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n"
+ + "gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n"
+ + "cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n"
+ + "ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n"
+ + "cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n"
+ + "gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n"
+ + "gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n"
+ + "tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n"
+ + "cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n"
+ + "aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n"
+ + "ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n"
+ + "gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n"
+ + "aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n"
+ + "gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n"
+ + "aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n"
+ + "gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n"
+ + "agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n"
+ + "caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n"
+ + "gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n"
+ + "aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n"
+ + "tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n"
+ + "tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n"
+ + "ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n"
+ + "ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n"
+ + "gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n"
+ + "ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n"
+ + "aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n"
+ + "tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n"
+ + "acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n"
+ + "atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n"
+ + "gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n"
+ + "tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n"
+ + "cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n"
+ + "gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n"
+ + "acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n"
+ + "acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n"
+ + "attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n"
+ + "tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n"
+ + "cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n"
+ + "aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n"
+ + "ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n"
+ + "tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n"
+ + "gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n"
+ + "gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n"
+ + "acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n"
+ + "gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n"
+ + "gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n"
+ + "ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n"
+ + "taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n"
+ + "agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n"
+ + "gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n"
+ + "ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n"
+ + "accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n"
+ + "tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n"
+ + "taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n"
+ + "catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n"
+ + "tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n"
+ + "ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n"
+ + "aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n"
+ + "atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n"
+ + "tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n"
+ + "ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n"
+ + "tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n"
+ + "aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n"
+ + "agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n"
+ + "acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n"
+ + "aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n"
+ + "ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n"
+ + "gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n"
+ + "taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n"
+ + "taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n"
+ + "tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n"
+ + "gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n"
+ + "ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n"
+ + "atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n"
+ + "tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n"
+ + "cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n"
+ + "aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n"
+ + "taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n"
+ + "caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n"
+ + "ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n"
+ + "tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n"
+ + "tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n"
+ + "gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n"
+ + "gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n"
+ + "gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n"
+ + "ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n"
+ + "tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n"
+ + "taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n"
+ + "gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n"
+ + "ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n"
+ + "gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n"
+ + "tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n"
+ + "ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n"
+ + "tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n"
+ + "cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n"
+ + "ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n"
+ + "caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n"
+ + "cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n"
+ + "gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n"
+ + "cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n"
+ + "taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n"
+ + "tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n"
+ + "taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n"
+ + "tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n"
+ + "tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n"
+ + "tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n"
+ + "ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n"
+ + "aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n"
+ + "atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n"
+ + "actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n"
+ + "gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n"
+ + "ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n"
+ + "gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n"
+ + "tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n"
+ + "aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n"
+ + "atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n"
+ + "catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc";
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/revcomp.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/revcomp.java
new file mode 100644
index 0000000..0c2f88d
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/revcomp.java
@@ -0,0 +1,1103 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `revcomp/revcomp.java-4.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ * contributed by Anthony Donnefort
+ * slightly modified to read 82 bytes at a time by Razii
+ */
+
+/*
+ * Description: Read DNA sequences - write their reverse-complement.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.io.*;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class revcomp {
+ private ReversibleByteArray buf = new ReversibleByteArray();
+ InputStream stream = new ByteArrayInputStream(fastaStr.getBytes());
+ static final byte[] cmp = new byte[128];
+ static {
+ for (int i = 0; i < cmp.length; i++) cmp[i] = (byte) i;
+ cmp['t'] = cmp['T'] = 'A';
+ cmp['a'] = cmp['A'] = 'T';
+ cmp['g'] = cmp['G'] = 'C';
+ cmp['c'] = cmp['C'] = 'G';
+ cmp['v'] = cmp['V'] = 'B';
+ cmp['h'] = cmp['H'] = 'D';
+ cmp['r'] = cmp['R'] = 'Y';
+ cmp['m'] = cmp['M'] = 'K';
+ cmp['y'] = cmp['Y'] = 'R';
+ cmp['k'] = cmp['K'] = 'M';
+ cmp['b'] = cmp['B'] = 'V';
+ cmp['d'] = cmp['D'] = 'H';
+ cmp['u'] = cmp['U'] = 'A';
+ }
+
+ static class ReversibleByteArray extends java.io.ByteArrayOutputStream {
+ void reverse() throws Exception {
+ if (count > 0) {
+ int begin = 0, end = count - 1;
+ while (buf[begin++] != '\n');
+ while (begin <= end) {
+ if (buf[begin] == '\n') begin++;
+ if (buf[end] == '\n') end--;
+ if (begin <= end) {
+ byte tmp = buf[begin];
+ buf[begin++] = cmp[buf[end]];
+ buf[end--] = cmp[tmp];
+ }
+ }
+ }
+ }
+ }
+
+ public void old_main() throws Exception {
+ byte[] line = new byte[82];
+ int read;
+ buf.reset();
+ stream.reset();
+
+ while ((read = stream.read(line)) != -1) {
+ int i = 0, last = 0;
+ while (i < read) {
+ if (line[i] == '>') {
+ buf.write(line, last, i - last);
+ buf.reverse();
+ buf.reset();
+ last = i;
+ }
+ i++;
+ }
+ buf.write(line, last, read - last);
+ }
+ buf.reverse();
+ stream.reset();
+ }
+ // CHECKSTYLE.ON: .*
+ @Benchmark
+ public void jmhTimeRevComp() throws Exception {
+ old_main();
+ }
+
+ private static final String fastaStr = ">ONE Homo sapiens alu\n"
+ + "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n"
+ + "TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n"
+ + "AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n"
+ + "GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n"
+ + "CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n"
+ + "GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n"
+ + "GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n"
+ + "TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n"
+ + "AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n"
+ + "GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n"
+ + "AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n"
+ + "AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n"
+ + "GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n"
+ + "CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n"
+ + "AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n"
+ + "TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n"
+ + "TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n"
+ + "GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n"
+ + "TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n"
+ + "CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n"
+ + "CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n"
+ + "TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n"
+ + "CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n"
+ + "AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n"
+ + "GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n"
+ + "TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n"
+ + "TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n"
+ + "GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n"
+ + "GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n"
+ + "ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n"
+ + "TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n"
+ + "CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n"
+ + "CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n"
+ + "GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n"
+ + "CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n"
+ + "GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n"
+ + "GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n"
+ + "GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n"
+ + "GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n"
+ + "GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n"
+ + "AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n"
+ + "CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n"
+ + "GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n"
+ + "AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n"
+ + "GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n"
+ + "ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n"
+ + "GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n"
+ + "GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n"
+ + "GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n"
+ + "TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n"
+ + "AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n"
+ + "GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n"
+ + "CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n"
+ + "TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n"
+ + "ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n"
+ + "GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n"
+ + "ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n"
+ + "CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n"
+ + "CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n"
+ + "ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n"
+ + "CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n"
+ + "AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n"
+ + "CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n"
+ + "AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n"
+ + "CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n"
+ + "CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n"
+ + "CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n"
+ + "CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n"
+ + "ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n"
+ + "AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n"
+ + "TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n"
+ + "ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n"
+ + "CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n"
+ + "AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n"
+ + "AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n"
+ + "TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n"
+ + "CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n"
+ + "TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n"
+ + "CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n"
+ + "GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n"
+ + "GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n"
+ + "CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n"
+ + "GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n"
+ + "GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n"
+ + "AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n"
+ + "GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n"
+ + "CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n"
+ + "GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n"
+ + "TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n"
+ + "CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n"
+ + "ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n"
+ + "CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n"
+ + "AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n"
+ + "CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n"
+ + "CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n"
+ + "ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n"
+ + "GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n"
+ + "GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n"
+ + "GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n"
+ + "TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n"
+ + "CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n"
+ + "GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n"
+ + "CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n"
+ + "GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n"
+ + "CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n"
+ + "CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n"
+ + "CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n"
+ + "ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n"
+ + "CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n"
+ + "GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n"
+ + "AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n"
+ + "ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n"
+ + "TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n"
+ + "GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n"
+ + "GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n"
+ + "TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n"
+ + "AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n"
+ + "ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n"
+ + "GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n"
+ + "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n"
+ + "TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n"
+ + "CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n"
+ + "GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n"
+ + "CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n"
+ + "GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n"
+ + "TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n"
+ + "ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n"
+ + "TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n"
+ + "GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n"
+ + "TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n"
+ + "GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n"
+ + "GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n"
+ + "ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n"
+ + "GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n"
+ + "GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n"
+ + "CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n"
+ + "ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n"
+ + "AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n"
+ + "TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n"
+ + "CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n"
+ + "TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n"
+ + "CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n"
+ + "GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n"
+ + "GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n"
+ + "CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n"
+ + "TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n"
+ + "CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n"
+ + "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n"
+ + "AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n"
+ + "AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n"
+ + "GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n"
+ + "TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n"
+ + "AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n"
+ + "AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n"
+ + "CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n"
+ + "TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n"
+ + "GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n"
+ + "CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n"
+ + "CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n"
+ + "GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n"
+ + "AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n"
+ + "GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n"
+ + "TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n"
+ + "CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n"
+ + "GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n"
+ + "CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n"
+ + "AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n"
+ + "ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n"
+ + "ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n"
+ + "AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n"
+ + "GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n"
+ + "GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n"
+ + "CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n"
+ + "GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n"
+ + "CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n"
+ + "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n"
+ + "GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n"
+ + "GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n"
+ + "CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n"
+ + "AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n"
+ + "CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n"
+ + "CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n"
+ + "GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n"
+ + "GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n"
+ + "TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n"
+ + "ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n"
+ + "CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n"
+ + "ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n"
+ + "GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n"
+ + "TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n"
+ + "GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n"
+ + "GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n"
+ + "GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n"
+ + "GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n"
+ + "TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n"
+ + "TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n"
+ + "TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n"
+ + "GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n"
+ + "CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n"
+ + "TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n"
+ + ">TWO IUB ambiguity codes\n"
+ + "cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n"
+ + "tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n"
+ + "NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n"
+ + "cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n"
+ + "gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n"
+ + "HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n"
+ + "tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n"
+ + "tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n"
+ + "acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n"
+ + "tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n"
+ + "gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n"
+ + "accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n"
+ + "RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n"
+ + "tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n"
+ + "cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n"
+ + "ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n"
+ + "actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n"
+ + "YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n"
+ + "KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n"
+ + "aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n"
+ + "aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n"
+ + "gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n"
+ + "tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n"
+ + "tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n"
+ + "ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n"
+ + "ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n"
+ + "BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n"
+ + "aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n"
+ + "tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n"
+ + "cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n"
+ + "aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n"
+ + "tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n"
+ + "aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n"
+ + "gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n"
+ + "ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n"
+ + "taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n"
+ + "ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n"
+ + "gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n"
+ + "gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n"
+ + "tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n"
+ + "tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n"
+ + "taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n"
+ + "cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n"
+ + "aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n"
+ + "cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n"
+ + "ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n"
+ + "attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n"
+ + "ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n"
+ + "attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n"
+ + "tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n"
+ + "aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n"
+ + "cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n"
+ + "gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n"
+ + "attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n"
+ + "BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n"
+ + "DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n"
+ + "tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n"
+ + "tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n"
+ + "tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n"
+ + "taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n"
+ + "aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n"
+ + "DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n"
+ + "VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n"
+ + "agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n"
+ + "gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n"
+ + "tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n"
+ + "catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n"
+ + "tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n"
+ + "aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n"
+ + "aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n"
+ + "acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n"
+ + "tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n"
+ + "aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n"
+ + "acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n"
+ + "RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n"
+ + "RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n"
+ + "tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n"
+ + "gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n"
+ + "YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n"
+ + "ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n"
+ + "ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n"
+ + "gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n"
+ + "KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n"
+ + "aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n"
+ + "gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n"
+ + "taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n"
+ + "VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n"
+ + "NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n"
+ + "MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n"
+ + "cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n"
+ + "ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n"
+ + "tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n"
+ + "aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n"
+ + "actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n"
+ + "tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n"
+ + "gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n"
+ + "BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n"
+ + "aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n"
+ + "aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n"
+ + "YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n"
+ + "aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n"
+ + "cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n"
+ + "tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n"
+ + "tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n"
+ + "MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n"
+ + "taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n"
+ + "tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n"
+ + "RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n"
+ + "agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n"
+ + "NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n"
+ + "gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n"
+ + "aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n"
+ + "ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n"
+ + "cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n"
+ + "tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n"
+ + "RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n"
+ + "tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n"
+ + "gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n"
+ + "tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n"
+ + "ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n"
+ + "tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n"
+ + "ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n"
+ + "BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n"
+ + "gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n"
+ + "acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n"
+ + "gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n"
+ + "taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n"
+ + "acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n"
+ + "tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n"
+ + "catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n"
+ + "tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n"
+ + "atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n"
+ + "ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n"
+ + "ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n"
+ + "cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n"
+ + "SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n"
+ + "VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n"
+ + "BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n"
+ + "NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n"
+ + "tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n"
+ + "ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n"
+ + "cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n"
+ + "VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n"
+ + "atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n"
+ + "aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n"
+ + "tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n"
+ + "RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n"
+ + "gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n"
+ + "tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n"
+ + "attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n"
+ + "atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n"
+ + "cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n"
+ + "NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n"
+ + "ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n"
+ + "cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n"
+ + "aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n"
+ + "agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n"
+ + "tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n"
+ + "ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n"
+ + "ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n"
+ + "tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n"
+ + "taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n"
+ + "tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n"
+ + "YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n"
+ + "ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n"
+ + "tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n"
+ + "ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n"
+ + "attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n"
+ + "atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n"
+ + "YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n"
+ + "gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n"
+ + "MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n"
+ + "tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n"
+ + "ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n"
+ + "aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n"
+ + "BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n"
+ + "tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n"
+ + "StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n"
+ + "cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n"
+ + "atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n"
+ + "atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n"
+ + "ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n"
+ + "gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n"
+ + "tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n"
+ + "BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n"
+ + "agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n"
+ + "HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n"
+ + "tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n"
+ + "aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n"
+ + "catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n"
+ + "aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n"
+ + "tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n"
+ + "cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n"
+ + "DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n"
+ + "gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n"
+ + "tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n"
+ + "atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n"
+ + "KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n"
+ + "tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n"
+ + "tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n"
+ + "taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n"
+ + "NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n"
+ + "HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n"
+ + "ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n"
+ + "tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n"
+ + "cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n"
+ + "ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n"
+ + "HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n"
+ + "gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n"
+ + "BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n"
+ + "gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n"
+ + "KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n"
+ + "cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n"
+ + "tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n"
+ + "taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n"
+ + "gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n"
+ + "aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n"
+ + "acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n"
+ + "RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n"
+ + "attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n"
+ + "KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n"
+ + "KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n"
+ + "gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n"
+ + "aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n"
+ + "aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n"
+ + "ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n"
+ + "tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n"
+ + "aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n"
+ + "tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n"
+ + "MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n"
+ + "cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n"
+ + "caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n"
+ + "ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n"
+ + "acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n"
+ + "tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n"
+ + "gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n"
+ + "atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n"
+ + "aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n"
+ + "NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n"
+ + "taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n"
+ + "aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n"
+ + "ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n"
+ + "DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n"
+ + "tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n"
+ + "aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n"
+ + "ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n"
+ + "ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n"
+ + "RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n"
+ + "aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n"
+ + "aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n"
+ + "aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n"
+ + "tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n"
+ + "atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n"
+ + "BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n"
+ + "gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n"
+ + "cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n"
+ + "RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n"
+ + "taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n"
+ + "aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n"
+ + "gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n"
+ + "gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n"
+ + "aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n"
+ + "gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n"
+ + "ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n"
+ + "MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n"
+ + "SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n"
+ + "aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n"
+ + "VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n"
+ + "HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n"
+ + "agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n"
+ + "gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n"
+ + "agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n"
+ + "tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n"
+ + "gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n"
+ + "VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n"
+ + "tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n"
+ + "MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n"
+ + "actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n"
+ + "WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n"
+ + "tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n"
+ + "KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n"
+ + "BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n"
+ + "attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n"
+ + "VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n"
+ + "aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n"
+ + "tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n"
+ + "tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n"
+ + "tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n"
+ + "VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n"
+ + "tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n"
+ + "ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n"
+ + "tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n"
+ + "WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n"
+ + "tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n"
+ + "tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n"
+ + "MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n"
+ + "tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n"
+ + "atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n"
+ + "aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n"
+ + "aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n"
+ + ">THREE Homo sapiens frequency\n"
+ + "aagtccgatgagtttcaatcatgactgcgaggagatccatgcggtgtacctaaacctaca\n"
+ + "tcgtatgtatttgctgacgttcattcttgatacataaagatccgatatcggtccactttg\n"
+ + "tttaccaaaagccctaccttcgtaacgatggaaatgtgaatgagagtgaaatacacgatg\n"
+ + "gggatattgccggtgagtacaagttagaccacacattagaactgacctatattcgtcatc\n"
+ + "atagagatggagtatgaattgattctgcgaagtacactggctttacgagtatctagacgc\n"
+ + "cgcggtatatctcccgtcaatactatgaaggtatatatatagaggctgaaaattcatgtt\n"
+ + "caatcctctttctaagagtgagtgggagccccttctgttgtcggagtaaaaaggcattat\n"
+ + "tcctcaaattgtcagaagcaaagtatacgtgatgtttgcttagaacaaaagagttacctt\n"
+ + "agggtaggtaaatctcgattcaccgagagaagtgattttggcggtgtgcgattaattctt\n"
+ + "ttgatgacagatctcattattttatatagctccctctttgtatttagagtttgcgtaggt\n"
+ + "aacctggcaaaaccatatcccggggggagagtgcgctgaacattttatacgatgtgatta\n"
+ + "ctcaaaggataaggttcgaggcctctatactcatggaactatcttataattataatggat\n"
+ + "cgtggctcattccacctatccaaacttctttgtgatctgatgctacgagtgtgaacaaac\n"
+ + "gtacatcttctaaggaatttgggacgtttcatagctcgcatttcattcctgaaaacttaa\n"
+ + "atatttttaaaaattgattctactgcgaggaactaaggtgtagacaagcccttagtaacc\n"
+ + "ggtggatgtcgcttcagttttatagcaaacattattcaatttcagtcttgactgaaatta\n"
+ + "gtttgttagtgttagaggtccatatgtcacatgcatatggtctagatgccattgtacagt\n"
+ + "aataccttagattagtattagcggcatgcgtacttggatttcacttgtaagaatgagctt\n"
+ + "aggacggtcgcctgtagggctgcaaataggaatacttacaatttttgatgacttgttagc\n"
+ + "atatcgctatcacccataaaaaacctgatacttgatgagcgggtgattgagactatgtac\n"
+ + "tgatataattcaatagctccaatagatgaaacagctatgcgcctatttatgtcaaataat\n"
+ + "cgatgtgatacaagcttagagctgaacgagcgcgagtggaattagcggtgatctctatcc\n"
+ + "taaaaagccacgaaatcgatcccagaagctaatacccgaggtgtcaagcttgagttcagt\n"
+ + "taaatttgcatctcatgccccacgaagaatgggtagagagtttgaaggtgcttctggatt\n"
+ + "ttcctaagtacgtggtaaaaatttgatgtaaatgaacacctcctaatggttgtgttaacc\n"
+ + "acaaacccctgggtgaatctgattagccaacccagtgatctgatttcagttgtcaaatct\n"
+ + "cttttttataactaccttttgtttccataatttaaccggatctcataatgaacaaacggg\n"
+ + "tagaataatggtagcacatagcgagcttgtctattcagaaatatggcctactcagaatgt\n"
+ + "attctccaaatcagtgttatgcgaaacgtaattttacgtgtaataatgatgatttcttat\n"
+ + "cggttccttgtactacaatactcttgcccaacaaatactaagcataacagcaaaattcga\n"
+ + "atccccctccttttaataaatggtttttcaatatagccgattcgtattcgttagtctttc\n"
+ + "accaactattaacctggcatctaattaataaaatcaccaaaggactctataatatgacag\n"
+ + "tcacttcggcctcttttaagacagttgattattgcaggtccgcaattgatggtgacatgc\n"
+ + "acaattagttagaatccgactatggagacaattaacaattgtagtgcccatttggtccag\n"
+ + "ttgacttcaaccacgagttataaaggtattttaatttatagtcgatagtaccaacaacaa\n"
+ + "gcacaatcataattatgttagaaaacccagggggtaatgctctaaatccagctttaaggc\n"
+ + "cagagtgcactatgaaatcgccattgatcattgtgtcattcgctgaacttggtgtctagg\n"
+ + "aggtgccgagtgagaatatcagataccttatgaagcaacgattatatctggactagatca\n"
+ + "tgatgatcggaataaaacattgaaataagtccttatcaaggagcataaacattttattta\n"
+ + "atttatacttcgtaaataaattcagaattttttttcaagacattaatctgagtaaatgac\n"
+ + "ggctagaaagggttcctactcgaatcgtagcctacgcatgtgggcagtaacctggcttgc\n"
+ + "gtttttactgaaacaaaggttcaccggaaagaaggctgccacttttagcttcttgacgat\n"
+ + "ctttagcgtcatatttttagattagtcgaaaaacggaaaacaaacttaacgaagctggtt\n"
+ + "gcacggggtaccgagaaaccaaagagcaggacaactccttgatcgggaagaactgaaata\n"
+ + "gacagctgtcattttcattggtcaacttatcaatataacgaccaccgtagtgacgcttgc\n"
+ + "atgaaaatactgaggatgtaaactatagccagtcaggcccgcgtgttgactaattgatga\n"
+ + "agcaaacaaaatagccggtattcgttaaaaggaacgggttgccagctacagatatactct\n"
+ + "aggtatatcccaaacaagagacgtcctttggctgttgtaatcggtcataatacttgtcac\n"
+ + "ataaacaagatcgctgaattaaacattaaacagttagtgatacacaatcgtggttggggc\n"
+ + "tgggatgtgcaataaaaagtcatctatcgtctatcacagagcgacgtaaatttagacaaa\n"
+ + "cattattatttcttgacaatggaatcgataagcgttcctctaacttggtatatatatctc\n"
+ + "gaccccgggattccagccattcttgtatgaagatttaaccatttaactatgcatagttga\n"
+ + "atggtaaggaaaatgatattgactgcaacagattttggatgcaaaaatatttgtgaatta\n"
+ + "ttggttatatactggttgtatagcacaatcattaggtcctagaaggcatactcaacctca\n"
+ + "gcgagagagctagcatgcataattgtaccgcccatattaatattcctgaaatgatttctt\n"
+ + "acattacgcccaatttcagtcatcgaacacccccatcaatttacccgatagagaacgtga\n"
+ + "tcatacgcaataccctatgcgaacgtccactctatagcgtctgtatacaatgattattcg\n"
+ + "ttccatttacaacgttaagtaatttaaacttacataaggacaaggaaatccgcgaacctc\n"
+ + "ctggaatgtatgagttatttatgcagttaacttcgtctcgaccggaactaaaggcgtcgt\n"
+ + "acgaatgaaaggccacttttagaagagacctttgtatccattgtggagaatatcataaat\n"
+ + "tcaagatggggtgtcatgctattcggtcctaaacattcttaatggctgttctattgttag\n"
+ + "tctgatttaaaatggaaccatagcacgaatagttagatagggctcatacccctgtaacga\n"
+ + "tctacaaatccttccccgggtgtgtgcgttagcgacggaaagttttacggtttgtgatca\n"
+ + "aagaacactcacacgtcagattattacactgatacgaattatttcagtcgacagtaattg\n"
+ + "aatagaaacttattaacgccagcacctgacacggtaagtaaggcaggtctgaactgtttg\n"
+ + "actgtaaaaaaatggtaatatttttaaaaatcttgatttctatatcaaatgatgtgtagt\n"
+ + "tttttctctgttattaaaatcccagtgcgcgaaatttagatcgttacgactcacgtacaa\n"
+ + "gatcacacatcacacgcgttagcgaaagcggaatggctaatacagccctacgcaacgtag\n"
+ + "tgggatcaacatatggacgaatttatgctcaatgagccaacctcccccgcattgcggttc\n"
+ + "attttaaggcctgggtaacatctatcgtttagataatcaaaggaatccgactatgcaatt\n"
+ + "gtctgacttcatccgctctcaagtccaatgcaggcgctacgtgtttctttaatcaatacc\n"
+ + "atattgaaatcgtaatacgataattgttgctattgactacaggttatgaaaaaacttact\n"
+ + "ttgcgggtacatgcatatttttgtaccacattattacgcgatatctctcagtgtactcta\n"
+ + "aattaaaccctcttcgaacattttagttcctattcgtaaacacgtgctacgcggcaattt\n"
+ + "gccggtcgtagaatggacaactccagttcaactgcatgtaactcatagctcgcgttagta\n"
+ + "taaattgactagtagccatgggacaaagtaactagtcagcggaaaagatccctttaaaga\n"
+ + "tatatgcaggttgcaagcataaagctcattgctcgaggtgcaccgtggtattccaaaagc\n"
+ + "gtctctatcgtatcttctaattttgggccgtgagaatcgaaactactctgatttgctgca\n"
+ + "cacgttaggtaatatcgcccattttcccgtataagctccgtacttatacgaactacacga\n"
+ + "ccttttaagcattagccgctcatatcgtgattcgtgtacagatgagtctattaaaattac\n"
+ + "agacatactccatatctcgctccttgaactttgaataatgcgctaacttgtactatgaat\n"
+ + "aggcagaacccaactttcccgtttgcgtcaagcggggaaacgatacatgttgtcagattt\n"
+ + "atgattatctagttttagatcacgtttaccgataatcggctgtggtctgagcagtcctac\n"
+ + "actgagtatttacttcagcttcatatcggtccgaaaaaaggttgtgaccgaatgtcaaaa\n"
+ + "tacggagtacgatgggcatcttttttcgagtcgcggttgcagggcagcaaaaggcttaaa\n"
+ + "ccatttttacgatttttactatagcggtcatgaagtgcgaaactgcttgcaaattttcta\n"
+ + "cacacattgtggctcttgtccttgaagcttatggcgaaaatttgaaacatagtataccag\n"
+ + "ggaaagcgcgaattatttggtgactaatagtccgtgggtttgagccatatacctaacgcc\n"
+ + "ataaactacgtggtgctttagatgcaatctaaacagaacagaaagcgtagcgctcatcag\n"
+ + "cacagactaactttttcagtttgagtcgccggagggacttcgagacaagaacgcgtcaag\n"
+ + "tcgcttgcgcggcacggattcgattgggcggctcaatcttgcctaatttctactattgtc\n"
+ + "agctgtacgactgtactaagtgtatagccccaaataaaagaagtatcgatgcgtctttat\n"
+ + "gaccaaaggtcttataattgaagcgcacttccgttcatcaaattaaatcctggcttaccc\n"
+ + "gattctccggaagtctgacctagagattgacgacggccgcgtattattgagacctcttca\n"
+ + "ggattaatcaataacgaagtagttgatctgtttggcgacgtaccttaagccgactccgct\n"
+ + "acacgagtttctactaaaccaatgtagccttatgcttagatgaataccgtcctaattaga\n"
+ + "tattccggcataacagcagtaaattatctgttcaatggacgaacattgaattgttagtat\n"
+ + "tctacacaagtcaggcctcgtaaatattaggtaaggccgtgggataacctacgtgatatg\n"
+ + "cttgagcttgcgttgcaagctctcgttaatcattaatttaggtgcgtgagggttaaacac\n"
+ + "cagcatattctatatgctagacgtcttccttaaaggatcgtagtattataattaataata\n"
+ + "agaaatatggttgacgtctagtcagcgggcatacgctgctctatatactggcattattca\n"
+ + "aaacttgacggtaaaaaaacgaattttaaggcgctcacgtcgaatgagccgaactcatgg\n"
+ + "gaaccaaaatgtcacagaaaacacctctttattgccaagcatgcaataaaaaaaatgtta\n"
+ + "atagtacgtttacgacattttattttataataaagagaaactattacacctattgatatg\n"
+ + "ataggacgtaaattaacgagtagcctgcatagaggcaaatgaggtttctacatggtatag\n"
+ + "acctgatgctgaaacatcgatgagttttggtcccctcgctcgttgaaatctagtcattta\n"
+ + "ctactgtctttcgagctattataccacttcactatgtggtgtttctttgctatgtatggg\n"
+ + "gctagtcaaacatgatgactatagctacaactcagagagcgggcgtgttaagagtatctc\n"
+ + "atgctagaactgcacgacgaacttgatacaaagtaacaacatttacgattccacaaggtg\n"
+ + "actttgaagaaacatagtttaattctctgcttcgatcatttctataaaccggtaccatcg\n"
+ + "cagcggatagatgcataacatttctactactccaggcatcttaaaacacacgtagtactt\n"
+ + "cactagattaagacacgataagtgtataacttggcagtgggaagcaaggagattggcgaa\n"
+ + "ctcctggcatctgttacgttttgttcaggctcggttgttgataatgtccgactcctgcca\n"
+ + "tattgaagactcgctcgagggagatcgggattcgttgattataagtacacgtgttccgta\n"
+ + "atactatgaggcagtgattcaaaatggcacttctgacttacatgactaggtattattacc\n"
+ + "acggaagcgttaaaggcacactcttatggacttaagattgcaagtgccttcttctagcct\n"
+ + "gaattcgcgggttcaacacaaactctctttagacatccgttgcctaaaggctgagacgta\n"
+ + "ggggcaaccctttaactatgtactaaaaaactagttggtaatttaacaacgtgtccaatc\n"
+ + "aagacgatgcaccaacgcggtgcgaaaatcgggttaagcaaacacaaataggaattgtga\n"
+ + "taaaccccaccttgagaggtcgcaagaccaacctcgggaacaacggctctaagagaataa\n"
+ + "cctaaatccggatgagtagactgtgtaactctctaaagggaagtgaaaaaaagctaagca\n"
+ + "tacatttaggtctcctgcattgcattcaattgaatcgtttgtattatgagctgtacagta\n"
+ + "gctatatcagctatagttatcccagaggaacaggtaaactagctctgagcgtgaaatccg\n"
+ + "gatattagaacccctagatgggattgattctagctaatacaggcttatctggttttacag\n"
+ + "ttatctagatgattggtaaggtgaaacgcttggtgccttccaccacttaaacaaaagtat\n"
+ + "tgcccgggaagctattttctaggtattataaagtcgagcattaatatcaatttgacagta\n"
+ + "aaggtctttcaccagcttcatatgccatagggcccatactcgatttaaattgaacggttt\n"
+ + "aacgagtattggaactctcacttataactgagtagctatacgaaaaatctggtccatttc\n"
+ + "cagaaatttattatcgatttgctgcttagtacccaggaagtgataacccttgaaggcaca\n"
+ + "acactgtaataagttttcctgtcacatctgtaatattcggtcactacgcattcacgacta\n"
+ + "aagataattactatactaattaaaagttcaatgttagggccgaatcatagtagaaattct\n"
+ + "cgtctagcctaatcggacttacctatgggctgtgaggatttatcagtatgtggacaaaaa\n"
+ + "tgctagagataggtatagttaaagtcaccatggtacatctatgtgaggaagtttgtagtt\n"
+ + "cgcttctttagtccgggcgtttgggatgacaactactatacgtagagccgtactcaggat\n"
+ + "tagatagtgtgaaagagtcaaataaaagggttaatattaatttaacgttgcaaatgtgtt\n"
+ + "taggccaaacattaaccgttgtagggatattctaatacaggccttcaccgaaccctaatg\n"
+ + "ataatctgtcttaataacattaaatgattgtctccgctacgagctcttagggcctcattt\n"
+ + "taaatgactaatgtccaaagaagagactttcccaatttcaatctgtcacgtatagacggc\n"
+ + "accttagtgagtcatatcattaagatagaagattatcaggagggaagtttctattatcaa\n"
+ + "ccgttacgcaaccataaacttttaaatctcataatggcattgagatcaagagctttcatg\n"
+ + "atggtaaagttcgtatgtgatgctggggagctagatatcggtataccacttcggttgtgg\n"
+ + "taagcccgagtgggccgttagtaatattaatagacgattatccgacaatgcattcgctga\n"
+ + "aataatcttacttaggagaaattaatgctatgagccaaaactatttatgtctgtcacatt\n"
+ + "attgactaaagtatctatcgacaaaactgatgtccataagttgtagcagatagtcggtgt\n"
+ + "atggtgtcaccaatgaaaacctcgagcgaaaaatgaattatagttatccaatttgagtaa\n"
+ + "attgcctattatacagataggcttgtttagtcagataaggttccgcttgaggtgctctaa\n"
+ + "cttagcgagagttagaaagcctagtgagaggcattttggtgccaaactccggctcgcatg\n"
+ + "agtaggccagagagtcactttctttcgtcgaagaagttggtgaacagccttttgattagt\n"
+ + "tgtttgtcttgtggctatgtgctactatataagttagaacgcaaactaatctaatcagca\n"
+ + "aagtaaaataggaccttgaacgagacggggtacgccgttgaggctcgagatagtagataa\n"
+ + "actagaggaatgtagataaaacattagctagggggtttagttactggattacataggaag\n"
+ + "tgcaccatcacggtgtgggggttcgtacgtaaagtcgcatcaatattgtcagtggactta\n"
+ + "acaagttcgtgcataatgaaatcctatacggactttgcatatctctaccgactcatctgg\n"
+ + "tcgtctatgcgggtaattgtattgctccaagtggatgactattttggcgtcccagcacat\n"
+ + "agtaaatgtaaatccttataatagcataagcaattattagactgcgtgaagtcttagtag\n"
+ + "ttctcaagctttacgttgtatgtaaataactcacgtaatcagccgtccccaaatcaccat\n"
+ + "tgaggtcattgaatgtacggagcactattatcaatgcggtatgcgattttctgagcgatt\n"
+ + "attgttaaagacttagcgttgagccccggaacacttgattacagattctttaaggagtta\n"
+ + "tccaaatatcattttaaataatagtagtatcgtgctttggacaataaaaaaagacccgtt\n"
+ + "ctcttatgttgttttgcgacgtacttctctgatatatacttcaactatgaagattctatt\n"
+ + "catcgataacccaggtatatttatatgcccgttcactgcgcagggcaaattatctacgga\n"
+ + "caataatgacgtagttggacccggtaagaactaacgcttaatatgattaaggatgtatgc\n"
+ + "cagtattatcttattatgtcagagtagaagtttctctgagattttccgtcgttgtggtac\n"
+ + "accggatttggctctctttttagaactgagaactcggagtgtgtagtcttgtttccttca\n"
+ + "atttatcaatatgcttttataccgccctcatcaactataacaggacgacaagttccgtct\n"
+ + "tgctccatcatatactaccgatacaccaatcgtatcaagtttagtatacttgctttctct\n"
+ + "cttctacagcttactcgcttgtccgagaagcggttggtgctcataaagttagtagtaaat\n"
+ + "gtacaactagtagccagtccttacctgtttttacgactactacggacaccatgagataca\n"
+ + "gaagttagtgctacaattataccattacatgctcaatatcgttgtcggccataagatcga\n"
+ + "agagtgcatcacgcgtgtgaatacgtaaaatctaccatcccgtcaatgcacaaaaacaca\n"
+ + "ctccccttgttgactaacatcttttacaagaggctaaatcattgtccaggatcgaatacc\n"
+ + "ttgtgtacaatcgtcacccatcggaagaataccacttttccgatgtagtatgatttacaa\n"
+ + "aaaacatctatgtgagtaggccaattgtagtagaatatattcatttgaccgtcattagcc\n"
+ + "ttcttcttaggttgtgtacggatagtaggtacataaaccgtcgtgtggcatacgctgcga\n"
+ + "tttcatacagctgccaacaccttttttaccaggctagagtcagaaaagttggagccatgt\n"
+ + "taaatagttaccatcataaaccactgttgtctactagtctgatcagctttcatgcctgtg\n"
+ + "caagcaatatggattctcacgtaatggtaacaactgttgcgttacttaggctggttaatt\n"
+ + "tgtcagagtaataaatacatgtcttgttgtgtttcctaatcctcggaaagtacacaagcc\n"
+ + "taggaataggaaaagtaaagctcttttattctgatagtgactaactcaggatctaaatac\n"
+ + "gcgattatactaaccttcaccaaagctcaaaaatcatctgctggtgaccagttatagaca\n"
+ + "gggtaattcaatatttaatgtctcccttaacatttcaccagcatggattgaagatagtat\n"
+ + "aaagttttacatggcagtcattgtgtcacggttctatacaaattctgatagttagacggt\n"
+ + "atttgaaatgtgcttctagcatggtatcttacacaactgaatgaacgactggagccgttc\n"
+ + "gtatactatttgcgagcctcgagaccccgtttcctaatgttaacgaatatagtataatat\n"
+ + "aaattgtgatatgaataacacaagtaactacagtttggacaattaattgttctaaactaa\n"
+ + "aaatcattcacttcagatggcatagagttatggctactacacatataaagcggtatgtga\n"
+ + "aacacccgttttagccggaaaccctctactgctcgggacaatgaatgatttccaaaatat\n"
+ + "ggatgtgcagaattgttagtgtgactcaggtccaaatagacactttagtttcgtcaagtc\n"
+ + "gttgcaaagtttaaaaccatcgcagcattctttatttggtctacattgagaaatgaaaaa\n"
+ + "acgtgacagaaagtctagaagaactgtgaataatgtctattactgattaactagtaagac\n"
+ + "attagtgcatctggtccactgaagcacccgcttggcgttaggcaatctctgtgaactgtc\n"
+ + "gtggctgttccggtaatgtacgaaagcaagcctataggttgatcgagtcgcttcattaag\n"
+ + "gtcaatttcacaatatccgatcacattgtgctaggttcgtcctttaccttgcttagtgct\n"
+ + "gcatgtacggggtgtcatgacttgttatcggcagactctttatcccaagaatggataata\n"
+ + "tgtacatggaaagtgtccataattaagtcccttcactgtaaagaatgactgccacgtgat\n"
+ + "ccatgaggtctacagaaaccgacttacttgctttttgatcaacttaattatggattcata\n"
+ + "aagttcagatatcggtacaattggtgtacaatatgaaattaatgaggaaacatggaaatc\n"
+ + "tgaatgacagtgatagaaaagatccccatttgcccggtcagttcatgttacaccactcat\n"
+ + "tagtactgtaagtgtttcgtcagcattgagatccacgatcatgtgtttatgccttcgaaa\n"
+ + "ctggatgtacgacgatcgagacgaagaggtatatataacctaaatactaggtacgttgtt\n"
+ + "agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n"
+ + "cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n"
+ + "tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n"
+ + "tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n"
+ + "gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n"
+ + "tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n"
+ + "tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n"
+ + "atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n"
+ + "cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n"
+ + "ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n"
+ + "ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n"
+ + "atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n"
+ + "gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n"
+ + "tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n"
+ + "gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n"
+ + "atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n"
+ + "tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n"
+ + "ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n"
+ + "tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n"
+ + "aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n"
+ + "gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n"
+ + "ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n"
+ + "agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n"
+ + "agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n"
+ + "acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n"
+ + "cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n"
+ + "cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n"
+ + "cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n"
+ + "aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n"
+ + "tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n"
+ + "atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n"
+ + "cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n"
+ + "tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n"
+ + "catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n"
+ + "tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n"
+ + "caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n"
+ + "tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n"
+ + "aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n"
+ + "aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n"
+ + "ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n"
+ + "gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n"
+ + "ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n"
+ + "cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n"
+ + "gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n"
+ + "ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n"
+ + "cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n"
+ + "taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n"
+ + "gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n"
+ + "taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n"
+ + "ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n"
+ + "aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n"
+ + "gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n"
+ + "acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n"
+ + "ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n"
+ + "tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n"
+ + "tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n"
+ + "tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n"
+ + "ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n"
+ + "aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n"
+ + "tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n"
+ + "gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n"
+ + "gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n"
+ + "cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n"
+ + "actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n"
+ + "tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n"
+ + "ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n"
+ + "ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n"
+ + "agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n"
+ + "gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n"
+ + "tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n"
+ + "atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n"
+ + "cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n"
+ + "tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n"
+ + "gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n"
+ + "gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n"
+ + "aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n"
+ + "gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n"
+ + "cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n"
+ + "taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n"
+ + "tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n"
+ + "ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n"
+ + "aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n"
+ + "gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n"
+ + "aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n"
+ + "tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n"
+ + "tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n"
+ + "aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n"
+ + "ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n"
+ + "ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n"
+ + "caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n"
+ + "gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n"
+ + "cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n"
+ + "ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n"
+ + "tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n"
+ + "atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n"
+ + "ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n"
+ + "acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n"
+ + "taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n"
+ + "ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n"
+ + "aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n"
+ + "cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n"
+ + "tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n"
+ + "gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n"
+ + "aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n"
+ + "cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n"
+ + "cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n"
+ + "gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n"
+ + "cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n"
+ + "gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n"
+ + "agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n"
+ + "aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n"
+ + "aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n"
+ + "cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n"
+ + "agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n"
+ + "cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n"
+ + "agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n"
+ + "gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n"
+ + "aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n"
+ + "agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n"
+ + "cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n"
+ + "agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n"
+ + "ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n"
+ + "tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n"
+ + "gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n"
+ + "gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n"
+ + "ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n"
+ + "gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n"
+ + "atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n"
+ + "tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n"
+ + "ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n"
+ + "tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n"
+ + "cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n"
+ + "ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n"
+ + "aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n"
+ + "gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n"
+ + "ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n"
+ + "atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n"
+ + "aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n"
+ + "gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n"
+ + "atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n"
+ + "aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n"
+ + "tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n"
+ + "ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n"
+ + "gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n"
+ + "cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n"
+ + "ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n"
+ + "ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n"
+ + "ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n"
+ + "cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n"
+ + "tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n"
+ + "tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n"
+ + "cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n"
+ + "gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n"
+ + "ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n"
+ + "ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n"
+ + "tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n"
+ + "agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n"
+ + "ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n"
+ + "cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n"
+ + "agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n"
+ + "tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n"
+ + "gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n"
+ + "ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n"
+ + "ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n"
+ + "agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n"
+ + "attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n"
+ + "ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n"
+ + "agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n"
+ + "aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n"
+ + "gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n"
+ + "gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n"
+ + "ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n"
+ + "gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n"
+ + "ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n"
+ + "taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n"
+ + "aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n"
+ + "tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n"
+ + "ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n"
+ + "agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n"
+ + "ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n"
+ + "agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n"
+ + "gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n"
+ + "tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n"
+ + "gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n"
+ + "cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n"
+ + "ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n"
+ + "cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n"
+ + "gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n"
+ + "gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n"
+ + "tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n"
+ + "cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n"
+ + "aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n"
+ + "ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n"
+ + "gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n"
+ + "aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n"
+ + "gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n"
+ + "aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n"
+ + "gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n"
+ + "agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n"
+ + "caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n"
+ + "gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n"
+ + "aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n"
+ + "tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n"
+ + "tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n"
+ + "ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n"
+ + "ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n"
+ + "gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n"
+ + "ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n"
+ + "aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n"
+ + "tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n"
+ + "acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n"
+ + "atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n"
+ + "gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n"
+ + "tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n"
+ + "cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n"
+ + "gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n"
+ + "acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n"
+ + "acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n"
+ + "attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n"
+ + "tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n"
+ + "cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n"
+ + "aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n"
+ + "ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n"
+ + "tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n"
+ + "gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n"
+ + "gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n"
+ + "acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n"
+ + "gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n"
+ + "gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n"
+ + "ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n"
+ + "taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n"
+ + "agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n"
+ + "gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n"
+ + "ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n"
+ + "accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n"
+ + "tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n"
+ + "taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n"
+ + "catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n"
+ + "tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n"
+ + "ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n"
+ + "aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n"
+ + "atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n"
+ + "tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n"
+ + "ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n"
+ + "tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n"
+ + "aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n"
+ + "agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n"
+ + "acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n"
+ + "aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n"
+ + "ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n"
+ + "gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n"
+ + "taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n"
+ + "taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n"
+ + "tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n"
+ + "gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n"
+ + "ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n"
+ + "atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n"
+ + "tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n"
+ + "cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n"
+ + "aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n"
+ + "taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n"
+ + "caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n"
+ + "ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n"
+ + "tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n"
+ + "tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n"
+ + "gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n"
+ + "gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n"
+ + "gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n"
+ + "ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n"
+ + "tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n"
+ + "taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n"
+ + "gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n"
+ + "ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n"
+ + "gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n"
+ + "tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n"
+ + "ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n"
+ + "tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n"
+ + "cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n"
+ + "ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n"
+ + "caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n"
+ + "cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n"
+ + "gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n"
+ + "cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n"
+ + "taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n"
+ + "tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n"
+ + "taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n"
+ + "tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n"
+ + "tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n"
+ + "tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n"
+ + "ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n"
+ + "aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n"
+ + "atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n"
+ + "actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n"
+ + "gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n"
+ + "ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n"
+ + "gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n"
+ + "tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n"
+ + "aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n"
+ + "atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n"
+ + "catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc";
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/spectralnorm.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/spectralnorm.java
new file mode 100644
index 0000000..dc6d3c6
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/spectralnorm.java
@@ -0,0 +1,112 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and slightly
+ * modified to fit the benchmarking framework.
+ *
+ * The original file is `spectralnorm/spectralnorm.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ *
+ * contributed by Java novice Jarkko Miettinen
+ * modified ~3 lines of the original C#-version
+ * by Isaac Gouy
+ */
+
+ /*
+ * Description: Eigenvalue using the power method.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class spectralnorm
+{
+
+ private static final NumberFormat formatter = new DecimalFormat("#.000000000");
+
+ private final double Approximate(int n) {
+ // create unit vector
+ double[] u = new double[n];
+ for (int i=0; i<n; i++) u[i] = 1;
+
+ // 20 steps of the power method
+ double[] v = new double[n];
+ for (int i=0; i<n; i++) v[i] = 0;
+
+ for (int i=0; i<10; i++) {
+ MultiplyAtAv(n,u,v);
+ MultiplyAtAv(n,v,u);
+ }
+
+ // B=AtA A multiplied by A transposed
+ // v.Bv /(v.v) eigenvalue of v
+ double vBv = 0, vv = 0;
+ for (int i=0; i<n; i++) {
+ vBv += u[i]*v[i];
+ vv += v[i]*v[i];
+ }
+
+ return Math.sqrt(vBv/vv);
+ }
+
+
+ /* return element i,j of infinite matrix A */
+ private final double A(int i, int j){
+ return 1.0/((i+j)*(i+j+1)/2 +i+1);
+ }
+
+ /* multiply vector v by matrix A */
+ private final void MultiplyAv(int n, double[] v, double[] Av){
+ for (int i=0; i<n; i++){
+ Av[i] = 0;
+ for (int j=0; j<n; j++) Av[i] += A(i,j)*v[j];
+ }
+ }
+
+ /* multiply vector v by matrix A transposed */
+ private final void MultiplyAtv(int n, double[] v, double[] Atv){
+ for (int i=0;i<n;i++){
+ Atv[i] = 0;
+ for (int j=0; j<n; j++) Atv[i] += A(j,i)*v[j];
+ }
+ }
+
+ /* multiply vector v by matrix A and then by matrix A transposed */
+ private final void MultiplyAtAv(int n, double[] v, double[] AtAv){
+ double[] u = new double[n];
+ MultiplyAv(n,v,u);
+ MultiplyAtv(n,u,AtAv);
+ }
+ // CHECKSTYLE.ON: .*
+
+ private static final int APPROXIMATE_N = 100;
+
+ public boolean verifySpectralNorm() {
+ double expected = 1.2742199912349306;
+ double found = Approximate(APPROXIMATE_N);
+
+ if (Math.abs(expected - found) > 0.000000001) {
+ System.out.println("ERROR: Expected " + expected + " but found " + found);
+ return false;
+ }
+ return true;
+ }
+ @Benchmark
+ public void jmhTimeSpectralNorm() {
+ Approximate(APPROXIMATE_N);
+ }
+}
diff --git a/src/main/java/org/linaro/benchmarks/benchmarksgame/threadring.java b/src/main/java/org/linaro/benchmarks/benchmarksgame/threadring.java
new file mode 100644
index 0000000..c30713a
--- /dev/null
+++ b/src/main/java/org/linaro/benchmarks/benchmarksgame/threadring.java
@@ -0,0 +1,120 @@
+/*
+ * This benchmark has been ported from "The Computer Language Benchmarks Game" suite and
+ * significantly modified to fit the benchmarking framework.
+ *
+ * Originally the benchmark finished with 'System.exit(0)'. A new state of message "-1" was
+ * introduced to avoid this.
+ *
+ * The original file is `threadring/threadring.java-3.java` from the archive
+ * available at
+ * http://benchmarksgame.alioth.debian.org/download/benchmarksgame-sourcecode.zip.
+ * See LICENSE file in the same folder (BSD 3-clause)
+ *
+ * The Computer Language Benchmarks Game
+ * http://benchmarksgame.alioth.debian.org/
+ * contributed by Klaus Friedel
+ */
+
+/*
+ * Description: Switch from thread to thread passing one token.
+ * Main Focus: TODO
+ *
+ */
+
+package org.linaro.benchmarks.benchmarksgame;
+
+import java.util.concurrent.locks.LockSupport;
+import org.openjdk.jmh.annotations.*;
+import java.util.concurrent.TimeUnit;
+
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.MICROSECONDS)
+@State(Scope.Benchmark)
+
+// CHECKSTYLE.OFF: .*
+public class threadring {
+// CHECKSTYLE.ON: .*
+ static final int THREAD_COUNT = 503;
+
+ private static String lastActedThreadName;
+
+ public static class MessageThread extends Thread {
+ MessageThread nextThread;
+ volatile Integer message;
+
+ public MessageThread(MessageThread nextThread, int name) {
+ super("" + name);
+ this.nextThread = nextThread;
+ }
+
+ public void run() {
+ Integer msg = dequeue();
+ while (nextThread.enqueue(msg)) {
+ msg = dequeue();
+ if (msg == -1) {
+ break;
+ }
+ }
+ }
+
+ public boolean enqueue(Integer hopsRemaining) {
+ if (hopsRemaining == 0) {
+ message = -1;
+ lastActedThreadName = this.getName();
+
+ // notify all the threads that transmission is over
+ LockSupport.unpark(this);
+ MessageThread current = nextThread;
+ while (current != this) {
+ current.message = -1;
+ LockSupport.unpark(current);
+ current = current.nextThread;
+ }
+
+ return false;
+ }
+
+ message = hopsRemaining - 1;
+ LockSupport.unpark(this);
+ return true;
+ }
+
+ private Integer dequeue() {
+ while (message == null) {
+ LockSupport.park();
+ }
+
+ Integer msg = message;
+ if (msg != -1) {
+ message = null;
+ }
+ return msg;
+ }
+ }
+ @Benchmark
+ public void jmhTimeThreadRing() throws Exception {
+
+ int hopCount = 1000;
+
+ MessageThread first = null;
+ MessageThread last = null;
+ for (int i = THREAD_COUNT; i >= 1; i--) {
+ first = new MessageThread(first, i);
+ if (i == THREAD_COUNT) {
+ last = first;
+ }
+ }
+ // close the ring:
+ last.nextThread = first;
+
+ // start all Threads
+ MessageThread t = first;
+ do {
+ t.start();
+ t = t.nextThread;
+ } while (t != first);
+
+ first.enqueue(hopCount);
+ first.join(); // wait for System.exit
+ }
+}